blob: 0199195b2bb16530ecd221c1530a18083df43030 [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 Lobodzinski3289d762017-04-03 08:22:04 -060045static_assert( VK_HEADER_VERSION == 46 , "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 Lobodzinski3289d762017-04-03 08:22:04 -06004791 struct RectLayerKHR
4792 {
4793 RectLayerKHR( Offset2D offset_ = Offset2D(), Extent2D extent_ = Extent2D(), uint32_t layer_ = 0 )
4794 : offset( offset_ )
4795 , extent( extent_ )
4796 , layer( layer_ )
4797 {
4798 }
4799
4800 RectLayerKHR( VkRectLayerKHR const & rhs )
4801 {
4802 memcpy( this, &rhs, sizeof(RectLayerKHR) );
4803 }
4804
4805 RectLayerKHR& operator=( VkRectLayerKHR const & rhs )
4806 {
4807 memcpy( this, &rhs, sizeof(RectLayerKHR) );
4808 return *this;
4809 }
4810
4811 RectLayerKHR& setOffset( Offset2D offset_ )
4812 {
4813 offset = offset_;
4814 return *this;
4815 }
4816
4817 RectLayerKHR& setExtent( Extent2D extent_ )
4818 {
4819 extent = extent_;
4820 return *this;
4821 }
4822
4823 RectLayerKHR& setLayer( uint32_t layer_ )
4824 {
4825 layer = layer_;
4826 return *this;
4827 }
4828
4829 operator const VkRectLayerKHR&() const
4830 {
4831 return *reinterpret_cast<const VkRectLayerKHR*>(this);
4832 }
4833
4834 bool operator==( RectLayerKHR const& rhs ) const
4835 {
4836 return ( offset == rhs.offset )
4837 && ( extent == rhs.extent )
4838 && ( layer == rhs.layer );
4839 }
4840
4841 bool operator!=( RectLayerKHR const& rhs ) const
4842 {
4843 return !operator==( rhs );
4844 }
4845
4846 Offset2D offset;
4847 Extent2D extent;
4848 uint32_t layer;
4849 };
4850 static_assert( sizeof( RectLayerKHR ) == sizeof( VkRectLayerKHR ), "struct and wrapper have different size!" );
4851
4852 struct PresentRegionKHR
4853 {
4854 PresentRegionKHR( uint32_t rectangleCount_ = 0, const RectLayerKHR* pRectangles_ = nullptr )
4855 : rectangleCount( rectangleCount_ )
4856 , pRectangles( pRectangles_ )
4857 {
4858 }
4859
4860 PresentRegionKHR( VkPresentRegionKHR const & rhs )
4861 {
4862 memcpy( this, &rhs, sizeof(PresentRegionKHR) );
4863 }
4864
4865 PresentRegionKHR& operator=( VkPresentRegionKHR const & rhs )
4866 {
4867 memcpy( this, &rhs, sizeof(PresentRegionKHR) );
4868 return *this;
4869 }
4870
4871 PresentRegionKHR& setRectangleCount( uint32_t rectangleCount_ )
4872 {
4873 rectangleCount = rectangleCount_;
4874 return *this;
4875 }
4876
4877 PresentRegionKHR& setPRectangles( const RectLayerKHR* pRectangles_ )
4878 {
4879 pRectangles = pRectangles_;
4880 return *this;
4881 }
4882
4883 operator const VkPresentRegionKHR&() const
4884 {
4885 return *reinterpret_cast<const VkPresentRegionKHR*>(this);
4886 }
4887
4888 bool operator==( PresentRegionKHR const& rhs ) const
4889 {
4890 return ( rectangleCount == rhs.rectangleCount )
4891 && ( pRectangles == rhs.pRectangles );
4892 }
4893
4894 bool operator!=( PresentRegionKHR const& rhs ) const
4895 {
4896 return !operator==( rhs );
4897 }
4898
4899 uint32_t rectangleCount;
4900 const RectLayerKHR* pRectangles;
4901 };
4902 static_assert( sizeof( PresentRegionKHR ) == sizeof( VkPresentRegionKHR ), "struct and wrapper have different size!" );
4903
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06004904 struct XYColorEXT
4905 {
4906 XYColorEXT( float x_ = 0, float y_ = 0 )
4907 : x( x_ )
4908 , y( y_ )
4909 {
4910 }
4911
4912 XYColorEXT( VkXYColorEXT const & rhs )
4913 {
4914 memcpy( this, &rhs, sizeof(XYColorEXT) );
4915 }
4916
4917 XYColorEXT& operator=( VkXYColorEXT const & rhs )
4918 {
4919 memcpy( this, &rhs, sizeof(XYColorEXT) );
4920 return *this;
4921 }
4922
4923 XYColorEXT& setX( float x_ )
4924 {
4925 x = x_;
4926 return *this;
4927 }
4928
4929 XYColorEXT& setY( float y_ )
4930 {
4931 y = y_;
4932 return *this;
4933 }
4934
4935 operator const VkXYColorEXT&() const
4936 {
4937 return *reinterpret_cast<const VkXYColorEXT*>(this);
4938 }
4939
4940 bool operator==( XYColorEXT const& rhs ) const
4941 {
4942 return ( x == rhs.x )
4943 && ( y == rhs.y );
4944 }
4945
4946 bool operator!=( XYColorEXT const& rhs ) const
4947 {
4948 return !operator==( rhs );
4949 }
4950
4951 float x;
4952 float y;
4953 };
4954 static_assert( sizeof( XYColorEXT ) == sizeof( VkXYColorEXT ), "struct and wrapper have different size!" );
4955
4956 struct RefreshCycleDurationGOOGLE
4957 {
4958 RefreshCycleDurationGOOGLE( uint64_t refreshDuration_ = 0 )
4959 : refreshDuration( refreshDuration_ )
4960 {
4961 }
4962
4963 RefreshCycleDurationGOOGLE( VkRefreshCycleDurationGOOGLE const & rhs )
4964 {
4965 memcpy( this, &rhs, sizeof(RefreshCycleDurationGOOGLE) );
4966 }
4967
4968 RefreshCycleDurationGOOGLE& operator=( VkRefreshCycleDurationGOOGLE const & rhs )
4969 {
4970 memcpy( this, &rhs, sizeof(RefreshCycleDurationGOOGLE) );
4971 return *this;
4972 }
4973
4974 RefreshCycleDurationGOOGLE& setRefreshDuration( uint64_t refreshDuration_ )
4975 {
4976 refreshDuration = refreshDuration_;
4977 return *this;
4978 }
4979
4980 operator const VkRefreshCycleDurationGOOGLE&() const
4981 {
4982 return *reinterpret_cast<const VkRefreshCycleDurationGOOGLE*>(this);
4983 }
4984
4985 bool operator==( RefreshCycleDurationGOOGLE const& rhs ) const
4986 {
4987 return ( refreshDuration == rhs.refreshDuration );
4988 }
4989
4990 bool operator!=( RefreshCycleDurationGOOGLE const& rhs ) const
4991 {
4992 return !operator==( rhs );
4993 }
4994
4995 uint64_t refreshDuration;
4996 };
4997 static_assert( sizeof( RefreshCycleDurationGOOGLE ) == sizeof( VkRefreshCycleDurationGOOGLE ), "struct and wrapper have different size!" );
4998
4999 struct PastPresentationTimingGOOGLE
5000 {
5001 PastPresentationTimingGOOGLE( uint32_t presentID_ = 0, uint64_t desiredPresentTime_ = 0, uint64_t actualPresentTime_ = 0, uint64_t earliestPresentTime_ = 0, uint64_t presentMargin_ = 0 )
5002 : presentID( presentID_ )
5003 , desiredPresentTime( desiredPresentTime_ )
5004 , actualPresentTime( actualPresentTime_ )
5005 , earliestPresentTime( earliestPresentTime_ )
5006 , presentMargin( presentMargin_ )
5007 {
5008 }
5009
5010 PastPresentationTimingGOOGLE( VkPastPresentationTimingGOOGLE const & rhs )
5011 {
5012 memcpy( this, &rhs, sizeof(PastPresentationTimingGOOGLE) );
5013 }
5014
5015 PastPresentationTimingGOOGLE& operator=( VkPastPresentationTimingGOOGLE const & rhs )
5016 {
5017 memcpy( this, &rhs, sizeof(PastPresentationTimingGOOGLE) );
5018 return *this;
5019 }
5020
5021 PastPresentationTimingGOOGLE& setPresentID( uint32_t presentID_ )
5022 {
5023 presentID = presentID_;
5024 return *this;
5025 }
5026
5027 PastPresentationTimingGOOGLE& setDesiredPresentTime( uint64_t desiredPresentTime_ )
5028 {
5029 desiredPresentTime = desiredPresentTime_;
5030 return *this;
5031 }
5032
5033 PastPresentationTimingGOOGLE& setActualPresentTime( uint64_t actualPresentTime_ )
5034 {
5035 actualPresentTime = actualPresentTime_;
5036 return *this;
5037 }
5038
5039 PastPresentationTimingGOOGLE& setEarliestPresentTime( uint64_t earliestPresentTime_ )
5040 {
5041 earliestPresentTime = earliestPresentTime_;
5042 return *this;
5043 }
5044
5045 PastPresentationTimingGOOGLE& setPresentMargin( uint64_t presentMargin_ )
5046 {
5047 presentMargin = presentMargin_;
5048 return *this;
5049 }
5050
5051 operator const VkPastPresentationTimingGOOGLE&() const
5052 {
5053 return *reinterpret_cast<const VkPastPresentationTimingGOOGLE*>(this);
5054 }
5055
5056 bool operator==( PastPresentationTimingGOOGLE const& rhs ) const
5057 {
5058 return ( presentID == rhs.presentID )
5059 && ( desiredPresentTime == rhs.desiredPresentTime )
5060 && ( actualPresentTime == rhs.actualPresentTime )
5061 && ( earliestPresentTime == rhs.earliestPresentTime )
5062 && ( presentMargin == rhs.presentMargin );
5063 }
5064
5065 bool operator!=( PastPresentationTimingGOOGLE const& rhs ) const
5066 {
5067 return !operator==( rhs );
5068 }
5069
5070 uint32_t presentID;
5071 uint64_t desiredPresentTime;
5072 uint64_t actualPresentTime;
5073 uint64_t earliestPresentTime;
5074 uint64_t presentMargin;
5075 };
5076 static_assert( sizeof( PastPresentationTimingGOOGLE ) == sizeof( VkPastPresentationTimingGOOGLE ), "struct and wrapper have different size!" );
5077
5078 struct PresentTimeGOOGLE
5079 {
5080 PresentTimeGOOGLE( uint32_t presentID_ = 0, uint64_t desiredPresentTime_ = 0 )
5081 : presentID( presentID_ )
5082 , desiredPresentTime( desiredPresentTime_ )
5083 {
5084 }
5085
5086 PresentTimeGOOGLE( VkPresentTimeGOOGLE const & rhs )
5087 {
5088 memcpy( this, &rhs, sizeof(PresentTimeGOOGLE) );
5089 }
5090
5091 PresentTimeGOOGLE& operator=( VkPresentTimeGOOGLE const & rhs )
5092 {
5093 memcpy( this, &rhs, sizeof(PresentTimeGOOGLE) );
5094 return *this;
5095 }
5096
5097 PresentTimeGOOGLE& setPresentID( uint32_t presentID_ )
5098 {
5099 presentID = presentID_;
5100 return *this;
5101 }
5102
5103 PresentTimeGOOGLE& setDesiredPresentTime( uint64_t desiredPresentTime_ )
5104 {
5105 desiredPresentTime = desiredPresentTime_;
5106 return *this;
5107 }
5108
5109 operator const VkPresentTimeGOOGLE&() const
5110 {
5111 return *reinterpret_cast<const VkPresentTimeGOOGLE*>(this);
5112 }
5113
5114 bool operator==( PresentTimeGOOGLE const& rhs ) const
5115 {
5116 return ( presentID == rhs.presentID )
5117 && ( desiredPresentTime == rhs.desiredPresentTime );
5118 }
5119
5120 bool operator!=( PresentTimeGOOGLE const& rhs ) const
5121 {
5122 return !operator==( rhs );
5123 }
5124
5125 uint32_t presentID;
5126 uint64_t desiredPresentTime;
5127 };
5128 static_assert( sizeof( PresentTimeGOOGLE ) == sizeof( VkPresentTimeGOOGLE ), "struct and wrapper have different size!" );
5129
Mark Young0f183a82017-02-28 09:58:04 -07005130 struct ViewportWScalingNV
5131 {
5132 ViewportWScalingNV( float xcoeff_ = 0, float ycoeff_ = 0 )
5133 : xcoeff( xcoeff_ )
5134 , ycoeff( ycoeff_ )
5135 {
5136 }
5137
5138 ViewportWScalingNV( VkViewportWScalingNV const & rhs )
5139 {
5140 memcpy( this, &rhs, sizeof(ViewportWScalingNV) );
5141 }
5142
5143 ViewportWScalingNV& operator=( VkViewportWScalingNV const & rhs )
5144 {
5145 memcpy( this, &rhs, sizeof(ViewportWScalingNV) );
5146 return *this;
5147 }
5148
5149 ViewportWScalingNV& setXcoeff( float xcoeff_ )
5150 {
5151 xcoeff = xcoeff_;
5152 return *this;
5153 }
5154
5155 ViewportWScalingNV& setYcoeff( float ycoeff_ )
5156 {
5157 ycoeff = ycoeff_;
5158 return *this;
5159 }
5160
5161 operator const VkViewportWScalingNV&() const
5162 {
5163 return *reinterpret_cast<const VkViewportWScalingNV*>(this);
5164 }
5165
5166 bool operator==( ViewportWScalingNV const& rhs ) const
5167 {
5168 return ( xcoeff == rhs.xcoeff )
5169 && ( ycoeff == rhs.ycoeff );
5170 }
5171
5172 bool operator!=( ViewportWScalingNV const& rhs ) const
5173 {
5174 return !operator==( rhs );
5175 }
5176
5177 float xcoeff;
5178 float ycoeff;
5179 };
5180 static_assert( sizeof( ViewportWScalingNV ) == sizeof( VkViewportWScalingNV ), "struct and wrapper have different size!" );
5181
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005182 enum class ImageLayout
5183 {
5184 eUndefined = VK_IMAGE_LAYOUT_UNDEFINED,
5185 eGeneral = VK_IMAGE_LAYOUT_GENERAL,
5186 eColorAttachmentOptimal = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
5187 eDepthStencilAttachmentOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
5188 eDepthStencilReadOnlyOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,
5189 eShaderReadOnlyOptimal = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
5190 eTransferSrcOptimal = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
5191 eTransferDstOptimal = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
5192 ePreinitialized = VK_IMAGE_LAYOUT_PREINITIALIZED,
5193 ePresentSrcKHR = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR
5194 };
5195
5196 struct DescriptorImageInfo
5197 {
5198 DescriptorImageInfo( Sampler sampler_ = Sampler(), ImageView imageView_ = ImageView(), ImageLayout imageLayout_ = ImageLayout::eUndefined )
5199 : sampler( sampler_ )
5200 , imageView( imageView_ )
5201 , imageLayout( imageLayout_ )
5202 {
5203 }
5204
5205 DescriptorImageInfo( VkDescriptorImageInfo const & rhs )
5206 {
5207 memcpy( this, &rhs, sizeof(DescriptorImageInfo) );
5208 }
5209
5210 DescriptorImageInfo& operator=( VkDescriptorImageInfo const & rhs )
5211 {
5212 memcpy( this, &rhs, sizeof(DescriptorImageInfo) );
5213 return *this;
5214 }
5215
5216 DescriptorImageInfo& setSampler( Sampler sampler_ )
5217 {
5218 sampler = sampler_;
5219 return *this;
5220 }
5221
5222 DescriptorImageInfo& setImageView( ImageView imageView_ )
5223 {
5224 imageView = imageView_;
5225 return *this;
5226 }
5227
5228 DescriptorImageInfo& setImageLayout( ImageLayout imageLayout_ )
5229 {
5230 imageLayout = imageLayout_;
5231 return *this;
5232 }
5233
5234 operator const VkDescriptorImageInfo&() const
5235 {
5236 return *reinterpret_cast<const VkDescriptorImageInfo*>(this);
5237 }
5238
5239 bool operator==( DescriptorImageInfo const& rhs ) const
5240 {
5241 return ( sampler == rhs.sampler )
5242 && ( imageView == rhs.imageView )
5243 && ( imageLayout == rhs.imageLayout );
5244 }
5245
5246 bool operator!=( DescriptorImageInfo const& rhs ) const
5247 {
5248 return !operator==( rhs );
5249 }
5250
5251 Sampler sampler;
5252 ImageView imageView;
5253 ImageLayout imageLayout;
5254 };
5255 static_assert( sizeof( DescriptorImageInfo ) == sizeof( VkDescriptorImageInfo ), "struct and wrapper have different size!" );
5256
5257 struct AttachmentReference
5258 {
5259 AttachmentReference( uint32_t attachment_ = 0, ImageLayout layout_ = ImageLayout::eUndefined )
5260 : attachment( attachment_ )
5261 , layout( layout_ )
5262 {
5263 }
5264
5265 AttachmentReference( VkAttachmentReference const & rhs )
5266 {
5267 memcpy( this, &rhs, sizeof(AttachmentReference) );
5268 }
5269
5270 AttachmentReference& operator=( VkAttachmentReference const & rhs )
5271 {
5272 memcpy( this, &rhs, sizeof(AttachmentReference) );
5273 return *this;
5274 }
5275
5276 AttachmentReference& setAttachment( uint32_t attachment_ )
5277 {
5278 attachment = attachment_;
5279 return *this;
5280 }
5281
5282 AttachmentReference& setLayout( ImageLayout layout_ )
5283 {
5284 layout = layout_;
5285 return *this;
5286 }
5287
5288 operator const VkAttachmentReference&() const
5289 {
5290 return *reinterpret_cast<const VkAttachmentReference*>(this);
5291 }
5292
5293 bool operator==( AttachmentReference const& rhs ) const
5294 {
5295 return ( attachment == rhs.attachment )
5296 && ( layout == rhs.layout );
5297 }
5298
5299 bool operator!=( AttachmentReference const& rhs ) const
5300 {
5301 return !operator==( rhs );
5302 }
5303
5304 uint32_t attachment;
5305 ImageLayout layout;
5306 };
5307 static_assert( sizeof( AttachmentReference ) == sizeof( VkAttachmentReference ), "struct and wrapper have different size!" );
5308
5309 enum class AttachmentLoadOp
5310 {
5311 eLoad = VK_ATTACHMENT_LOAD_OP_LOAD,
5312 eClear = VK_ATTACHMENT_LOAD_OP_CLEAR,
5313 eDontCare = VK_ATTACHMENT_LOAD_OP_DONT_CARE
5314 };
5315
5316 enum class AttachmentStoreOp
5317 {
5318 eStore = VK_ATTACHMENT_STORE_OP_STORE,
5319 eDontCare = VK_ATTACHMENT_STORE_OP_DONT_CARE
5320 };
5321
5322 enum class ImageType
5323 {
5324 e1D = VK_IMAGE_TYPE_1D,
5325 e2D = VK_IMAGE_TYPE_2D,
5326 e3D = VK_IMAGE_TYPE_3D
5327 };
5328
5329 enum class ImageTiling
5330 {
5331 eOptimal = VK_IMAGE_TILING_OPTIMAL,
5332 eLinear = VK_IMAGE_TILING_LINEAR
5333 };
5334
5335 enum class ImageViewType
5336 {
5337 e1D = VK_IMAGE_VIEW_TYPE_1D,
5338 e2D = VK_IMAGE_VIEW_TYPE_2D,
5339 e3D = VK_IMAGE_VIEW_TYPE_3D,
5340 eCube = VK_IMAGE_VIEW_TYPE_CUBE,
5341 e1DArray = VK_IMAGE_VIEW_TYPE_1D_ARRAY,
5342 e2DArray = VK_IMAGE_VIEW_TYPE_2D_ARRAY,
5343 eCubeArray = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
5344 };
5345
5346 enum class CommandBufferLevel
5347 {
5348 ePrimary = VK_COMMAND_BUFFER_LEVEL_PRIMARY,
5349 eSecondary = VK_COMMAND_BUFFER_LEVEL_SECONDARY
5350 };
5351
5352 enum class ComponentSwizzle
5353 {
5354 eIdentity = VK_COMPONENT_SWIZZLE_IDENTITY,
5355 eZero = VK_COMPONENT_SWIZZLE_ZERO,
5356 eOne = VK_COMPONENT_SWIZZLE_ONE,
5357 eR = VK_COMPONENT_SWIZZLE_R,
5358 eG = VK_COMPONENT_SWIZZLE_G,
5359 eB = VK_COMPONENT_SWIZZLE_B,
5360 eA = VK_COMPONENT_SWIZZLE_A
5361 };
5362
5363 struct ComponentMapping
5364 {
5365 ComponentMapping( ComponentSwizzle r_ = ComponentSwizzle::eIdentity, ComponentSwizzle g_ = ComponentSwizzle::eIdentity, ComponentSwizzle b_ = ComponentSwizzle::eIdentity, ComponentSwizzle a_ = ComponentSwizzle::eIdentity )
5366 : r( r_ )
5367 , g( g_ )
5368 , b( b_ )
5369 , a( a_ )
5370 {
5371 }
5372
5373 ComponentMapping( VkComponentMapping const & rhs )
5374 {
5375 memcpy( this, &rhs, sizeof(ComponentMapping) );
5376 }
5377
5378 ComponentMapping& operator=( VkComponentMapping const & rhs )
5379 {
5380 memcpy( this, &rhs, sizeof(ComponentMapping) );
5381 return *this;
5382 }
5383
5384 ComponentMapping& setR( ComponentSwizzle r_ )
5385 {
5386 r = r_;
5387 return *this;
5388 }
5389
5390 ComponentMapping& setG( ComponentSwizzle g_ )
5391 {
5392 g = g_;
5393 return *this;
5394 }
5395
5396 ComponentMapping& setB( ComponentSwizzle b_ )
5397 {
5398 b = b_;
5399 return *this;
5400 }
5401
5402 ComponentMapping& setA( ComponentSwizzle a_ )
5403 {
5404 a = a_;
5405 return *this;
5406 }
5407
5408 operator const VkComponentMapping&() const
5409 {
5410 return *reinterpret_cast<const VkComponentMapping*>(this);
5411 }
5412
5413 bool operator==( ComponentMapping const& rhs ) const
5414 {
5415 return ( r == rhs.r )
5416 && ( g == rhs.g )
5417 && ( b == rhs.b )
5418 && ( a == rhs.a );
5419 }
5420
5421 bool operator!=( ComponentMapping const& rhs ) const
5422 {
5423 return !operator==( rhs );
5424 }
5425
5426 ComponentSwizzle r;
5427 ComponentSwizzle g;
5428 ComponentSwizzle b;
5429 ComponentSwizzle a;
5430 };
5431 static_assert( sizeof( ComponentMapping ) == sizeof( VkComponentMapping ), "struct and wrapper have different size!" );
5432
5433 enum class DescriptorType
5434 {
5435 eSampler = VK_DESCRIPTOR_TYPE_SAMPLER,
5436 eCombinedImageSampler = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
5437 eSampledImage = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
5438 eStorageImage = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,
5439 eUniformTexelBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER,
5440 eStorageTexelBuffer = VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER,
5441 eUniformBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
5442 eStorageBuffer = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
5443 eUniformBufferDynamic = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
5444 eStorageBufferDynamic = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC,
5445 eInputAttachment = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
5446 };
5447
5448 struct DescriptorPoolSize
5449 {
5450 DescriptorPoolSize( DescriptorType type_ = DescriptorType::eSampler, uint32_t descriptorCount_ = 0 )
5451 : type( type_ )
5452 , descriptorCount( descriptorCount_ )
5453 {
5454 }
5455
5456 DescriptorPoolSize( VkDescriptorPoolSize const & rhs )
5457 {
5458 memcpy( this, &rhs, sizeof(DescriptorPoolSize) );
5459 }
5460
5461 DescriptorPoolSize& operator=( VkDescriptorPoolSize const & rhs )
5462 {
5463 memcpy( this, &rhs, sizeof(DescriptorPoolSize) );
5464 return *this;
5465 }
5466
5467 DescriptorPoolSize& setType( DescriptorType type_ )
5468 {
5469 type = type_;
5470 return *this;
5471 }
5472
5473 DescriptorPoolSize& setDescriptorCount( uint32_t descriptorCount_ )
5474 {
5475 descriptorCount = descriptorCount_;
5476 return *this;
5477 }
5478
5479 operator const VkDescriptorPoolSize&() const
5480 {
5481 return *reinterpret_cast<const VkDescriptorPoolSize*>(this);
5482 }
5483
5484 bool operator==( DescriptorPoolSize const& rhs ) const
5485 {
5486 return ( type == rhs.type )
5487 && ( descriptorCount == rhs.descriptorCount );
5488 }
5489
5490 bool operator!=( DescriptorPoolSize const& rhs ) const
5491 {
5492 return !operator==( rhs );
5493 }
5494
5495 DescriptorType type;
5496 uint32_t descriptorCount;
5497 };
5498 static_assert( sizeof( DescriptorPoolSize ) == sizeof( VkDescriptorPoolSize ), "struct and wrapper have different size!" );
5499
Mark Young0f183a82017-02-28 09:58:04 -07005500 struct DescriptorUpdateTemplateEntryKHR
5501 {
5502 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 )
5503 : dstBinding( dstBinding_ )
5504 , dstArrayElement( dstArrayElement_ )
5505 , descriptorCount( descriptorCount_ )
5506 , descriptorType( descriptorType_ )
5507 , offset( offset_ )
5508 , stride( stride_ )
5509 {
5510 }
5511
5512 DescriptorUpdateTemplateEntryKHR( VkDescriptorUpdateTemplateEntryKHR const & rhs )
5513 {
5514 memcpy( this, &rhs, sizeof(DescriptorUpdateTemplateEntryKHR) );
5515 }
5516
5517 DescriptorUpdateTemplateEntryKHR& operator=( VkDescriptorUpdateTemplateEntryKHR const & rhs )
5518 {
5519 memcpy( this, &rhs, sizeof(DescriptorUpdateTemplateEntryKHR) );
5520 return *this;
5521 }
5522
5523 DescriptorUpdateTemplateEntryKHR& setDstBinding( uint32_t dstBinding_ )
5524 {
5525 dstBinding = dstBinding_;
5526 return *this;
5527 }
5528
5529 DescriptorUpdateTemplateEntryKHR& setDstArrayElement( uint32_t dstArrayElement_ )
5530 {
5531 dstArrayElement = dstArrayElement_;
5532 return *this;
5533 }
5534
5535 DescriptorUpdateTemplateEntryKHR& setDescriptorCount( uint32_t descriptorCount_ )
5536 {
5537 descriptorCount = descriptorCount_;
5538 return *this;
5539 }
5540
5541 DescriptorUpdateTemplateEntryKHR& setDescriptorType( DescriptorType descriptorType_ )
5542 {
5543 descriptorType = descriptorType_;
5544 return *this;
5545 }
5546
5547 DescriptorUpdateTemplateEntryKHR& setOffset( size_t offset_ )
5548 {
5549 offset = offset_;
5550 return *this;
5551 }
5552
5553 DescriptorUpdateTemplateEntryKHR& setStride( size_t stride_ )
5554 {
5555 stride = stride_;
5556 return *this;
5557 }
5558
5559 operator const VkDescriptorUpdateTemplateEntryKHR&() const
5560 {
5561 return *reinterpret_cast<const VkDescriptorUpdateTemplateEntryKHR*>(this);
5562 }
5563
5564 bool operator==( DescriptorUpdateTemplateEntryKHR const& rhs ) const
5565 {
5566 return ( dstBinding == rhs.dstBinding )
5567 && ( dstArrayElement == rhs.dstArrayElement )
5568 && ( descriptorCount == rhs.descriptorCount )
5569 && ( descriptorType == rhs.descriptorType )
5570 && ( offset == rhs.offset )
5571 && ( stride == rhs.stride );
5572 }
5573
5574 bool operator!=( DescriptorUpdateTemplateEntryKHR const& rhs ) const
5575 {
5576 return !operator==( rhs );
5577 }
5578
5579 uint32_t dstBinding;
5580 uint32_t dstArrayElement;
5581 uint32_t descriptorCount;
5582 DescriptorType descriptorType;
5583 size_t offset;
5584 size_t stride;
5585 };
5586 static_assert( sizeof( DescriptorUpdateTemplateEntryKHR ) == sizeof( VkDescriptorUpdateTemplateEntryKHR ), "struct and wrapper have different size!" );
5587
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005588 enum class QueryType
5589 {
5590 eOcclusion = VK_QUERY_TYPE_OCCLUSION,
5591 ePipelineStatistics = VK_QUERY_TYPE_PIPELINE_STATISTICS,
5592 eTimestamp = VK_QUERY_TYPE_TIMESTAMP
5593 };
5594
5595 enum class BorderColor
5596 {
5597 eFloatTransparentBlack = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,
5598 eIntTransparentBlack = VK_BORDER_COLOR_INT_TRANSPARENT_BLACK,
5599 eFloatOpaqueBlack = VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK,
5600 eIntOpaqueBlack = VK_BORDER_COLOR_INT_OPAQUE_BLACK,
5601 eFloatOpaqueWhite = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE,
5602 eIntOpaqueWhite = VK_BORDER_COLOR_INT_OPAQUE_WHITE
5603 };
5604
5605 enum class PipelineBindPoint
5606 {
5607 eGraphics = VK_PIPELINE_BIND_POINT_GRAPHICS,
5608 eCompute = VK_PIPELINE_BIND_POINT_COMPUTE
5609 };
5610
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005611 enum class PipelineCacheHeaderVersion
5612 {
5613 eOne = VK_PIPELINE_CACHE_HEADER_VERSION_ONE
5614 };
5615
5616 enum class PrimitiveTopology
5617 {
5618 ePointList = VK_PRIMITIVE_TOPOLOGY_POINT_LIST,
5619 eLineList = VK_PRIMITIVE_TOPOLOGY_LINE_LIST,
5620 eLineStrip = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP,
5621 eTriangleList = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,
5622 eTriangleStrip = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP,
5623 eTriangleFan = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN,
5624 eLineListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY,
5625 eLineStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY,
5626 eTriangleListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY,
5627 eTriangleStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY,
5628 ePatchList = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
5629 };
5630
5631 enum class SharingMode
5632 {
5633 eExclusive = VK_SHARING_MODE_EXCLUSIVE,
5634 eConcurrent = VK_SHARING_MODE_CONCURRENT
5635 };
5636
5637 enum class IndexType
5638 {
5639 eUint16 = VK_INDEX_TYPE_UINT16,
5640 eUint32 = VK_INDEX_TYPE_UINT32
5641 };
5642
5643 enum class Filter
5644 {
5645 eNearest = VK_FILTER_NEAREST,
5646 eLinear = VK_FILTER_LINEAR,
5647 eCubicIMG = VK_FILTER_CUBIC_IMG
5648 };
5649
5650 enum class SamplerMipmapMode
5651 {
5652 eNearest = VK_SAMPLER_MIPMAP_MODE_NEAREST,
5653 eLinear = VK_SAMPLER_MIPMAP_MODE_LINEAR
5654 };
5655
5656 enum class SamplerAddressMode
5657 {
5658 eRepeat = VK_SAMPLER_ADDRESS_MODE_REPEAT,
5659 eMirroredRepeat = VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT,
5660 eClampToEdge = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
5661 eClampToBorder = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER,
5662 eMirrorClampToEdge = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE
5663 };
5664
5665 enum class CompareOp
5666 {
5667 eNever = VK_COMPARE_OP_NEVER,
5668 eLess = VK_COMPARE_OP_LESS,
5669 eEqual = VK_COMPARE_OP_EQUAL,
5670 eLessOrEqual = VK_COMPARE_OP_LESS_OR_EQUAL,
5671 eGreater = VK_COMPARE_OP_GREATER,
5672 eNotEqual = VK_COMPARE_OP_NOT_EQUAL,
5673 eGreaterOrEqual = VK_COMPARE_OP_GREATER_OR_EQUAL,
5674 eAlways = VK_COMPARE_OP_ALWAYS
5675 };
5676
5677 enum class PolygonMode
5678 {
5679 eFill = VK_POLYGON_MODE_FILL,
5680 eLine = VK_POLYGON_MODE_LINE,
5681 ePoint = VK_POLYGON_MODE_POINT
5682 };
5683
5684 enum class CullModeFlagBits
5685 {
5686 eNone = VK_CULL_MODE_NONE,
5687 eFront = VK_CULL_MODE_FRONT_BIT,
5688 eBack = VK_CULL_MODE_BACK_BIT,
5689 eFrontAndBack = VK_CULL_MODE_FRONT_AND_BACK
5690 };
5691
5692 using CullModeFlags = Flags<CullModeFlagBits, VkCullModeFlags>;
5693
Mark Lobodzinski2d589822016-12-12 09:44:34 -07005694 VULKAN_HPP_INLINE CullModeFlags operator|( CullModeFlagBits bit0, CullModeFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005695 {
5696 return CullModeFlags( bit0 ) | bit1;
5697 }
5698
Mark Lobodzinski2d589822016-12-12 09:44:34 -07005699 VULKAN_HPP_INLINE CullModeFlags operator~( CullModeFlagBits bits )
5700 {
5701 return ~( CullModeFlags( bits ) );
5702 }
5703
5704 template <> struct FlagTraits<CullModeFlagBits>
5705 {
5706 enum
5707 {
5708 allFlags = VkFlags(CullModeFlagBits::eNone) | VkFlags(CullModeFlagBits::eFront) | VkFlags(CullModeFlagBits::eBack) | VkFlags(CullModeFlagBits::eFrontAndBack)
5709 };
5710 };
5711
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005712 enum class FrontFace
5713 {
5714 eCounterClockwise = VK_FRONT_FACE_COUNTER_CLOCKWISE,
5715 eClockwise = VK_FRONT_FACE_CLOCKWISE
5716 };
5717
5718 enum class BlendFactor
5719 {
5720 eZero = VK_BLEND_FACTOR_ZERO,
5721 eOne = VK_BLEND_FACTOR_ONE,
5722 eSrcColor = VK_BLEND_FACTOR_SRC_COLOR,
5723 eOneMinusSrcColor = VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR,
5724 eDstColor = VK_BLEND_FACTOR_DST_COLOR,
5725 eOneMinusDstColor = VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR,
5726 eSrcAlpha = VK_BLEND_FACTOR_SRC_ALPHA,
5727 eOneMinusSrcAlpha = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA,
5728 eDstAlpha = VK_BLEND_FACTOR_DST_ALPHA,
5729 eOneMinusDstAlpha = VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA,
5730 eConstantColor = VK_BLEND_FACTOR_CONSTANT_COLOR,
5731 eOneMinusConstantColor = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR,
5732 eConstantAlpha = VK_BLEND_FACTOR_CONSTANT_ALPHA,
5733 eOneMinusConstantAlpha = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,
5734 eSrcAlphaSaturate = VK_BLEND_FACTOR_SRC_ALPHA_SATURATE,
5735 eSrc1Color = VK_BLEND_FACTOR_SRC1_COLOR,
5736 eOneMinusSrc1Color = VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,
5737 eSrc1Alpha = VK_BLEND_FACTOR_SRC1_ALPHA,
5738 eOneMinusSrc1Alpha = VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
5739 };
5740
5741 enum class BlendOp
5742 {
5743 eAdd = VK_BLEND_OP_ADD,
5744 eSubtract = VK_BLEND_OP_SUBTRACT,
5745 eReverseSubtract = VK_BLEND_OP_REVERSE_SUBTRACT,
5746 eMin = VK_BLEND_OP_MIN,
5747 eMax = VK_BLEND_OP_MAX
5748 };
5749
5750 enum class StencilOp
5751 {
5752 eKeep = VK_STENCIL_OP_KEEP,
5753 eZero = VK_STENCIL_OP_ZERO,
5754 eReplace = VK_STENCIL_OP_REPLACE,
5755 eIncrementAndClamp = VK_STENCIL_OP_INCREMENT_AND_CLAMP,
5756 eDecrementAndClamp = VK_STENCIL_OP_DECREMENT_AND_CLAMP,
5757 eInvert = VK_STENCIL_OP_INVERT,
5758 eIncrementAndWrap = VK_STENCIL_OP_INCREMENT_AND_WRAP,
5759 eDecrementAndWrap = VK_STENCIL_OP_DECREMENT_AND_WRAP
5760 };
5761
5762 struct StencilOpState
5763 {
5764 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 )
5765 : failOp( failOp_ )
5766 , passOp( passOp_ )
5767 , depthFailOp( depthFailOp_ )
5768 , compareOp( compareOp_ )
5769 , compareMask( compareMask_ )
5770 , writeMask( writeMask_ )
5771 , reference( reference_ )
5772 {
5773 }
5774
5775 StencilOpState( VkStencilOpState const & rhs )
5776 {
5777 memcpy( this, &rhs, sizeof(StencilOpState) );
5778 }
5779
5780 StencilOpState& operator=( VkStencilOpState const & rhs )
5781 {
5782 memcpy( this, &rhs, sizeof(StencilOpState) );
5783 return *this;
5784 }
5785
5786 StencilOpState& setFailOp( StencilOp failOp_ )
5787 {
5788 failOp = failOp_;
5789 return *this;
5790 }
5791
5792 StencilOpState& setPassOp( StencilOp passOp_ )
5793 {
5794 passOp = passOp_;
5795 return *this;
5796 }
5797
5798 StencilOpState& setDepthFailOp( StencilOp depthFailOp_ )
5799 {
5800 depthFailOp = depthFailOp_;
5801 return *this;
5802 }
5803
5804 StencilOpState& setCompareOp( CompareOp compareOp_ )
5805 {
5806 compareOp = compareOp_;
5807 return *this;
5808 }
5809
5810 StencilOpState& setCompareMask( uint32_t compareMask_ )
5811 {
5812 compareMask = compareMask_;
5813 return *this;
5814 }
5815
5816 StencilOpState& setWriteMask( uint32_t writeMask_ )
5817 {
5818 writeMask = writeMask_;
5819 return *this;
5820 }
5821
5822 StencilOpState& setReference( uint32_t reference_ )
5823 {
5824 reference = reference_;
5825 return *this;
5826 }
5827
5828 operator const VkStencilOpState&() const
5829 {
5830 return *reinterpret_cast<const VkStencilOpState*>(this);
5831 }
5832
5833 bool operator==( StencilOpState const& rhs ) const
5834 {
5835 return ( failOp == rhs.failOp )
5836 && ( passOp == rhs.passOp )
5837 && ( depthFailOp == rhs.depthFailOp )
5838 && ( compareOp == rhs.compareOp )
5839 && ( compareMask == rhs.compareMask )
5840 && ( writeMask == rhs.writeMask )
5841 && ( reference == rhs.reference );
5842 }
5843
5844 bool operator!=( StencilOpState const& rhs ) const
5845 {
5846 return !operator==( rhs );
5847 }
5848
5849 StencilOp failOp;
5850 StencilOp passOp;
5851 StencilOp depthFailOp;
5852 CompareOp compareOp;
5853 uint32_t compareMask;
5854 uint32_t writeMask;
5855 uint32_t reference;
5856 };
5857 static_assert( sizeof( StencilOpState ) == sizeof( VkStencilOpState ), "struct and wrapper have different size!" );
5858
5859 enum class LogicOp
5860 {
5861 eClear = VK_LOGIC_OP_CLEAR,
5862 eAnd = VK_LOGIC_OP_AND,
5863 eAndReverse = VK_LOGIC_OP_AND_REVERSE,
5864 eCopy = VK_LOGIC_OP_COPY,
5865 eAndInverted = VK_LOGIC_OP_AND_INVERTED,
5866 eNoOp = VK_LOGIC_OP_NO_OP,
5867 eXor = VK_LOGIC_OP_XOR,
5868 eOr = VK_LOGIC_OP_OR,
5869 eNor = VK_LOGIC_OP_NOR,
5870 eEquivalent = VK_LOGIC_OP_EQUIVALENT,
5871 eInvert = VK_LOGIC_OP_INVERT,
5872 eOrReverse = VK_LOGIC_OP_OR_REVERSE,
5873 eCopyInverted = VK_LOGIC_OP_COPY_INVERTED,
5874 eOrInverted = VK_LOGIC_OP_OR_INVERTED,
5875 eNand = VK_LOGIC_OP_NAND,
5876 eSet = VK_LOGIC_OP_SET
5877 };
5878
5879 enum class InternalAllocationType
5880 {
5881 eExecutable = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE
5882 };
5883
5884 enum class SystemAllocationScope
5885 {
5886 eCommand = VK_SYSTEM_ALLOCATION_SCOPE_COMMAND,
5887 eObject = VK_SYSTEM_ALLOCATION_SCOPE_OBJECT,
5888 eCache = VK_SYSTEM_ALLOCATION_SCOPE_CACHE,
5889 eDevice = VK_SYSTEM_ALLOCATION_SCOPE_DEVICE,
5890 eInstance = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE
5891 };
5892
5893 enum class PhysicalDeviceType
5894 {
5895 eOther = VK_PHYSICAL_DEVICE_TYPE_OTHER,
5896 eIntegratedGpu = VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU,
5897 eDiscreteGpu = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU,
5898 eVirtualGpu = VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU,
5899 eCpu = VK_PHYSICAL_DEVICE_TYPE_CPU
5900 };
5901
5902 enum class VertexInputRate
5903 {
5904 eVertex = VK_VERTEX_INPUT_RATE_VERTEX,
5905 eInstance = VK_VERTEX_INPUT_RATE_INSTANCE
5906 };
5907
5908 struct VertexInputBindingDescription
5909 {
5910 VertexInputBindingDescription( uint32_t binding_ = 0, uint32_t stride_ = 0, VertexInputRate inputRate_ = VertexInputRate::eVertex )
5911 : binding( binding_ )
5912 , stride( stride_ )
5913 , inputRate( inputRate_ )
5914 {
5915 }
5916
5917 VertexInputBindingDescription( VkVertexInputBindingDescription const & rhs )
5918 {
5919 memcpy( this, &rhs, sizeof(VertexInputBindingDescription) );
5920 }
5921
5922 VertexInputBindingDescription& operator=( VkVertexInputBindingDescription const & rhs )
5923 {
5924 memcpy( this, &rhs, sizeof(VertexInputBindingDescription) );
5925 return *this;
5926 }
5927
5928 VertexInputBindingDescription& setBinding( uint32_t binding_ )
5929 {
5930 binding = binding_;
5931 return *this;
5932 }
5933
5934 VertexInputBindingDescription& setStride( uint32_t stride_ )
5935 {
5936 stride = stride_;
5937 return *this;
5938 }
5939
5940 VertexInputBindingDescription& setInputRate( VertexInputRate inputRate_ )
5941 {
5942 inputRate = inputRate_;
5943 return *this;
5944 }
5945
5946 operator const VkVertexInputBindingDescription&() const
5947 {
5948 return *reinterpret_cast<const VkVertexInputBindingDescription*>(this);
5949 }
5950
5951 bool operator==( VertexInputBindingDescription const& rhs ) const
5952 {
5953 return ( binding == rhs.binding )
5954 && ( stride == rhs.stride )
5955 && ( inputRate == rhs.inputRate );
5956 }
5957
5958 bool operator!=( VertexInputBindingDescription const& rhs ) const
5959 {
5960 return !operator==( rhs );
5961 }
5962
5963 uint32_t binding;
5964 uint32_t stride;
5965 VertexInputRate inputRate;
5966 };
5967 static_assert( sizeof( VertexInputBindingDescription ) == sizeof( VkVertexInputBindingDescription ), "struct and wrapper have different size!" );
5968
5969 enum class Format
5970 {
5971 eUndefined = VK_FORMAT_UNDEFINED,
5972 eR4G4UnormPack8 = VK_FORMAT_R4G4_UNORM_PACK8,
5973 eR4G4B4A4UnormPack16 = VK_FORMAT_R4G4B4A4_UNORM_PACK16,
5974 eB4G4R4A4UnormPack16 = VK_FORMAT_B4G4R4A4_UNORM_PACK16,
5975 eR5G6B5UnormPack16 = VK_FORMAT_R5G6B5_UNORM_PACK16,
5976 eB5G6R5UnormPack16 = VK_FORMAT_B5G6R5_UNORM_PACK16,
5977 eR5G5B5A1UnormPack16 = VK_FORMAT_R5G5B5A1_UNORM_PACK16,
5978 eB5G5R5A1UnormPack16 = VK_FORMAT_B5G5R5A1_UNORM_PACK16,
5979 eA1R5G5B5UnormPack16 = VK_FORMAT_A1R5G5B5_UNORM_PACK16,
5980 eR8Unorm = VK_FORMAT_R8_UNORM,
5981 eR8Snorm = VK_FORMAT_R8_SNORM,
5982 eR8Uscaled = VK_FORMAT_R8_USCALED,
5983 eR8Sscaled = VK_FORMAT_R8_SSCALED,
5984 eR8Uint = VK_FORMAT_R8_UINT,
5985 eR8Sint = VK_FORMAT_R8_SINT,
5986 eR8Srgb = VK_FORMAT_R8_SRGB,
5987 eR8G8Unorm = VK_FORMAT_R8G8_UNORM,
5988 eR8G8Snorm = VK_FORMAT_R8G8_SNORM,
5989 eR8G8Uscaled = VK_FORMAT_R8G8_USCALED,
5990 eR8G8Sscaled = VK_FORMAT_R8G8_SSCALED,
5991 eR8G8Uint = VK_FORMAT_R8G8_UINT,
5992 eR8G8Sint = VK_FORMAT_R8G8_SINT,
5993 eR8G8Srgb = VK_FORMAT_R8G8_SRGB,
5994 eR8G8B8Unorm = VK_FORMAT_R8G8B8_UNORM,
5995 eR8G8B8Snorm = VK_FORMAT_R8G8B8_SNORM,
5996 eR8G8B8Uscaled = VK_FORMAT_R8G8B8_USCALED,
5997 eR8G8B8Sscaled = VK_FORMAT_R8G8B8_SSCALED,
5998 eR8G8B8Uint = VK_FORMAT_R8G8B8_UINT,
5999 eR8G8B8Sint = VK_FORMAT_R8G8B8_SINT,
6000 eR8G8B8Srgb = VK_FORMAT_R8G8B8_SRGB,
6001 eB8G8R8Unorm = VK_FORMAT_B8G8R8_UNORM,
6002 eB8G8R8Snorm = VK_FORMAT_B8G8R8_SNORM,
6003 eB8G8R8Uscaled = VK_FORMAT_B8G8R8_USCALED,
6004 eB8G8R8Sscaled = VK_FORMAT_B8G8R8_SSCALED,
6005 eB8G8R8Uint = VK_FORMAT_B8G8R8_UINT,
6006 eB8G8R8Sint = VK_FORMAT_B8G8R8_SINT,
6007 eB8G8R8Srgb = VK_FORMAT_B8G8R8_SRGB,
6008 eR8G8B8A8Unorm = VK_FORMAT_R8G8B8A8_UNORM,
6009 eR8G8B8A8Snorm = VK_FORMAT_R8G8B8A8_SNORM,
6010 eR8G8B8A8Uscaled = VK_FORMAT_R8G8B8A8_USCALED,
6011 eR8G8B8A8Sscaled = VK_FORMAT_R8G8B8A8_SSCALED,
6012 eR8G8B8A8Uint = VK_FORMAT_R8G8B8A8_UINT,
6013 eR8G8B8A8Sint = VK_FORMAT_R8G8B8A8_SINT,
6014 eR8G8B8A8Srgb = VK_FORMAT_R8G8B8A8_SRGB,
6015 eB8G8R8A8Unorm = VK_FORMAT_B8G8R8A8_UNORM,
6016 eB8G8R8A8Snorm = VK_FORMAT_B8G8R8A8_SNORM,
6017 eB8G8R8A8Uscaled = VK_FORMAT_B8G8R8A8_USCALED,
6018 eB8G8R8A8Sscaled = VK_FORMAT_B8G8R8A8_SSCALED,
6019 eB8G8R8A8Uint = VK_FORMAT_B8G8R8A8_UINT,
6020 eB8G8R8A8Sint = VK_FORMAT_B8G8R8A8_SINT,
6021 eB8G8R8A8Srgb = VK_FORMAT_B8G8R8A8_SRGB,
6022 eA8B8G8R8UnormPack32 = VK_FORMAT_A8B8G8R8_UNORM_PACK32,
6023 eA8B8G8R8SnormPack32 = VK_FORMAT_A8B8G8R8_SNORM_PACK32,
6024 eA8B8G8R8UscaledPack32 = VK_FORMAT_A8B8G8R8_USCALED_PACK32,
6025 eA8B8G8R8SscaledPack32 = VK_FORMAT_A8B8G8R8_SSCALED_PACK32,
6026 eA8B8G8R8UintPack32 = VK_FORMAT_A8B8G8R8_UINT_PACK32,
6027 eA8B8G8R8SintPack32 = VK_FORMAT_A8B8G8R8_SINT_PACK32,
6028 eA8B8G8R8SrgbPack32 = VK_FORMAT_A8B8G8R8_SRGB_PACK32,
6029 eA2R10G10B10UnormPack32 = VK_FORMAT_A2R10G10B10_UNORM_PACK32,
6030 eA2R10G10B10SnormPack32 = VK_FORMAT_A2R10G10B10_SNORM_PACK32,
6031 eA2R10G10B10UscaledPack32 = VK_FORMAT_A2R10G10B10_USCALED_PACK32,
6032 eA2R10G10B10SscaledPack32 = VK_FORMAT_A2R10G10B10_SSCALED_PACK32,
6033 eA2R10G10B10UintPack32 = VK_FORMAT_A2R10G10B10_UINT_PACK32,
6034 eA2R10G10B10SintPack32 = VK_FORMAT_A2R10G10B10_SINT_PACK32,
6035 eA2B10G10R10UnormPack32 = VK_FORMAT_A2B10G10R10_UNORM_PACK32,
6036 eA2B10G10R10SnormPack32 = VK_FORMAT_A2B10G10R10_SNORM_PACK32,
6037 eA2B10G10R10UscaledPack32 = VK_FORMAT_A2B10G10R10_USCALED_PACK32,
6038 eA2B10G10R10SscaledPack32 = VK_FORMAT_A2B10G10R10_SSCALED_PACK32,
6039 eA2B10G10R10UintPack32 = VK_FORMAT_A2B10G10R10_UINT_PACK32,
6040 eA2B10G10R10SintPack32 = VK_FORMAT_A2B10G10R10_SINT_PACK32,
6041 eR16Unorm = VK_FORMAT_R16_UNORM,
6042 eR16Snorm = VK_FORMAT_R16_SNORM,
6043 eR16Uscaled = VK_FORMAT_R16_USCALED,
6044 eR16Sscaled = VK_FORMAT_R16_SSCALED,
6045 eR16Uint = VK_FORMAT_R16_UINT,
6046 eR16Sint = VK_FORMAT_R16_SINT,
6047 eR16Sfloat = VK_FORMAT_R16_SFLOAT,
6048 eR16G16Unorm = VK_FORMAT_R16G16_UNORM,
6049 eR16G16Snorm = VK_FORMAT_R16G16_SNORM,
6050 eR16G16Uscaled = VK_FORMAT_R16G16_USCALED,
6051 eR16G16Sscaled = VK_FORMAT_R16G16_SSCALED,
6052 eR16G16Uint = VK_FORMAT_R16G16_UINT,
6053 eR16G16Sint = VK_FORMAT_R16G16_SINT,
6054 eR16G16Sfloat = VK_FORMAT_R16G16_SFLOAT,
6055 eR16G16B16Unorm = VK_FORMAT_R16G16B16_UNORM,
6056 eR16G16B16Snorm = VK_FORMAT_R16G16B16_SNORM,
6057 eR16G16B16Uscaled = VK_FORMAT_R16G16B16_USCALED,
6058 eR16G16B16Sscaled = VK_FORMAT_R16G16B16_SSCALED,
6059 eR16G16B16Uint = VK_FORMAT_R16G16B16_UINT,
6060 eR16G16B16Sint = VK_FORMAT_R16G16B16_SINT,
6061 eR16G16B16Sfloat = VK_FORMAT_R16G16B16_SFLOAT,
6062 eR16G16B16A16Unorm = VK_FORMAT_R16G16B16A16_UNORM,
6063 eR16G16B16A16Snorm = VK_FORMAT_R16G16B16A16_SNORM,
6064 eR16G16B16A16Uscaled = VK_FORMAT_R16G16B16A16_USCALED,
6065 eR16G16B16A16Sscaled = VK_FORMAT_R16G16B16A16_SSCALED,
6066 eR16G16B16A16Uint = VK_FORMAT_R16G16B16A16_UINT,
6067 eR16G16B16A16Sint = VK_FORMAT_R16G16B16A16_SINT,
6068 eR16G16B16A16Sfloat = VK_FORMAT_R16G16B16A16_SFLOAT,
6069 eR32Uint = VK_FORMAT_R32_UINT,
6070 eR32Sint = VK_FORMAT_R32_SINT,
6071 eR32Sfloat = VK_FORMAT_R32_SFLOAT,
6072 eR32G32Uint = VK_FORMAT_R32G32_UINT,
6073 eR32G32Sint = VK_FORMAT_R32G32_SINT,
6074 eR32G32Sfloat = VK_FORMAT_R32G32_SFLOAT,
6075 eR32G32B32Uint = VK_FORMAT_R32G32B32_UINT,
6076 eR32G32B32Sint = VK_FORMAT_R32G32B32_SINT,
6077 eR32G32B32Sfloat = VK_FORMAT_R32G32B32_SFLOAT,
6078 eR32G32B32A32Uint = VK_FORMAT_R32G32B32A32_UINT,
6079 eR32G32B32A32Sint = VK_FORMAT_R32G32B32A32_SINT,
6080 eR32G32B32A32Sfloat = VK_FORMAT_R32G32B32A32_SFLOAT,
6081 eR64Uint = VK_FORMAT_R64_UINT,
6082 eR64Sint = VK_FORMAT_R64_SINT,
6083 eR64Sfloat = VK_FORMAT_R64_SFLOAT,
6084 eR64G64Uint = VK_FORMAT_R64G64_UINT,
6085 eR64G64Sint = VK_FORMAT_R64G64_SINT,
6086 eR64G64Sfloat = VK_FORMAT_R64G64_SFLOAT,
6087 eR64G64B64Uint = VK_FORMAT_R64G64B64_UINT,
6088 eR64G64B64Sint = VK_FORMAT_R64G64B64_SINT,
6089 eR64G64B64Sfloat = VK_FORMAT_R64G64B64_SFLOAT,
6090 eR64G64B64A64Uint = VK_FORMAT_R64G64B64A64_UINT,
6091 eR64G64B64A64Sint = VK_FORMAT_R64G64B64A64_SINT,
6092 eR64G64B64A64Sfloat = VK_FORMAT_R64G64B64A64_SFLOAT,
6093 eB10G11R11UfloatPack32 = VK_FORMAT_B10G11R11_UFLOAT_PACK32,
6094 eE5B9G9R9UfloatPack32 = VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,
6095 eD16Unorm = VK_FORMAT_D16_UNORM,
6096 eX8D24UnormPack32 = VK_FORMAT_X8_D24_UNORM_PACK32,
6097 eD32Sfloat = VK_FORMAT_D32_SFLOAT,
6098 eS8Uint = VK_FORMAT_S8_UINT,
6099 eD16UnormS8Uint = VK_FORMAT_D16_UNORM_S8_UINT,
6100 eD24UnormS8Uint = VK_FORMAT_D24_UNORM_S8_UINT,
6101 eD32SfloatS8Uint = VK_FORMAT_D32_SFLOAT_S8_UINT,
6102 eBc1RgbUnormBlock = VK_FORMAT_BC1_RGB_UNORM_BLOCK,
6103 eBc1RgbSrgbBlock = VK_FORMAT_BC1_RGB_SRGB_BLOCK,
6104 eBc1RgbaUnormBlock = VK_FORMAT_BC1_RGBA_UNORM_BLOCK,
6105 eBc1RgbaSrgbBlock = VK_FORMAT_BC1_RGBA_SRGB_BLOCK,
6106 eBc2UnormBlock = VK_FORMAT_BC2_UNORM_BLOCK,
6107 eBc2SrgbBlock = VK_FORMAT_BC2_SRGB_BLOCK,
6108 eBc3UnormBlock = VK_FORMAT_BC3_UNORM_BLOCK,
6109 eBc3SrgbBlock = VK_FORMAT_BC3_SRGB_BLOCK,
6110 eBc4UnormBlock = VK_FORMAT_BC4_UNORM_BLOCK,
6111 eBc4SnormBlock = VK_FORMAT_BC4_SNORM_BLOCK,
6112 eBc5UnormBlock = VK_FORMAT_BC5_UNORM_BLOCK,
6113 eBc5SnormBlock = VK_FORMAT_BC5_SNORM_BLOCK,
6114 eBc6HUfloatBlock = VK_FORMAT_BC6H_UFLOAT_BLOCK,
6115 eBc6HSfloatBlock = VK_FORMAT_BC6H_SFLOAT_BLOCK,
6116 eBc7UnormBlock = VK_FORMAT_BC7_UNORM_BLOCK,
6117 eBc7SrgbBlock = VK_FORMAT_BC7_SRGB_BLOCK,
6118 eEtc2R8G8B8UnormBlock = VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK,
6119 eEtc2R8G8B8SrgbBlock = VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK,
6120 eEtc2R8G8B8A1UnormBlock = VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK,
6121 eEtc2R8G8B8A1SrgbBlock = VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK,
6122 eEtc2R8G8B8A8UnormBlock = VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK,
6123 eEtc2R8G8B8A8SrgbBlock = VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK,
6124 eEacR11UnormBlock = VK_FORMAT_EAC_R11_UNORM_BLOCK,
6125 eEacR11SnormBlock = VK_FORMAT_EAC_R11_SNORM_BLOCK,
6126 eEacR11G11UnormBlock = VK_FORMAT_EAC_R11G11_UNORM_BLOCK,
6127 eEacR11G11SnormBlock = VK_FORMAT_EAC_R11G11_SNORM_BLOCK,
6128 eAstc4x4UnormBlock = VK_FORMAT_ASTC_4x4_UNORM_BLOCK,
6129 eAstc4x4SrgbBlock = VK_FORMAT_ASTC_4x4_SRGB_BLOCK,
6130 eAstc5x4UnormBlock = VK_FORMAT_ASTC_5x4_UNORM_BLOCK,
6131 eAstc5x4SrgbBlock = VK_FORMAT_ASTC_5x4_SRGB_BLOCK,
6132 eAstc5x5UnormBlock = VK_FORMAT_ASTC_5x5_UNORM_BLOCK,
6133 eAstc5x5SrgbBlock = VK_FORMAT_ASTC_5x5_SRGB_BLOCK,
6134 eAstc6x5UnormBlock = VK_FORMAT_ASTC_6x5_UNORM_BLOCK,
6135 eAstc6x5SrgbBlock = VK_FORMAT_ASTC_6x5_SRGB_BLOCK,
6136 eAstc6x6UnormBlock = VK_FORMAT_ASTC_6x6_UNORM_BLOCK,
6137 eAstc6x6SrgbBlock = VK_FORMAT_ASTC_6x6_SRGB_BLOCK,
6138 eAstc8x5UnormBlock = VK_FORMAT_ASTC_8x5_UNORM_BLOCK,
6139 eAstc8x5SrgbBlock = VK_FORMAT_ASTC_8x5_SRGB_BLOCK,
6140 eAstc8x6UnormBlock = VK_FORMAT_ASTC_8x6_UNORM_BLOCK,
6141 eAstc8x6SrgbBlock = VK_FORMAT_ASTC_8x6_SRGB_BLOCK,
6142 eAstc8x8UnormBlock = VK_FORMAT_ASTC_8x8_UNORM_BLOCK,
6143 eAstc8x8SrgbBlock = VK_FORMAT_ASTC_8x8_SRGB_BLOCK,
6144 eAstc10x5UnormBlock = VK_FORMAT_ASTC_10x5_UNORM_BLOCK,
6145 eAstc10x5SrgbBlock = VK_FORMAT_ASTC_10x5_SRGB_BLOCK,
6146 eAstc10x6UnormBlock = VK_FORMAT_ASTC_10x6_UNORM_BLOCK,
6147 eAstc10x6SrgbBlock = VK_FORMAT_ASTC_10x6_SRGB_BLOCK,
6148 eAstc10x8UnormBlock = VK_FORMAT_ASTC_10x8_UNORM_BLOCK,
6149 eAstc10x8SrgbBlock = VK_FORMAT_ASTC_10x8_SRGB_BLOCK,
6150 eAstc10x10UnormBlock = VK_FORMAT_ASTC_10x10_UNORM_BLOCK,
6151 eAstc10x10SrgbBlock = VK_FORMAT_ASTC_10x10_SRGB_BLOCK,
6152 eAstc12x10UnormBlock = VK_FORMAT_ASTC_12x10_UNORM_BLOCK,
6153 eAstc12x10SrgbBlock = VK_FORMAT_ASTC_12x10_SRGB_BLOCK,
6154 eAstc12x12UnormBlock = VK_FORMAT_ASTC_12x12_UNORM_BLOCK,
Lenny Komowebf33162016-08-26 14:10:08 -06006155 eAstc12x12SrgbBlock = VK_FORMAT_ASTC_12x12_SRGB_BLOCK,
6156 ePvrtc12BppUnormBlockIMG = VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG,
6157 ePvrtc14BppUnormBlockIMG = VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG,
6158 ePvrtc22BppUnormBlockIMG = VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG,
6159 ePvrtc24BppUnormBlockIMG = VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG,
6160 ePvrtc12BppSrgbBlockIMG = VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG,
6161 ePvrtc14BppSrgbBlockIMG = VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG,
6162 ePvrtc22BppSrgbBlockIMG = VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG,
6163 ePvrtc24BppSrgbBlockIMG = VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006164 };
6165
6166 struct VertexInputAttributeDescription
6167 {
6168 VertexInputAttributeDescription( uint32_t location_ = 0, uint32_t binding_ = 0, Format format_ = Format::eUndefined, uint32_t offset_ = 0 )
6169 : location( location_ )
6170 , binding( binding_ )
6171 , format( format_ )
6172 , offset( offset_ )
6173 {
6174 }
6175
6176 VertexInputAttributeDescription( VkVertexInputAttributeDescription const & rhs )
6177 {
6178 memcpy( this, &rhs, sizeof(VertexInputAttributeDescription) );
6179 }
6180
6181 VertexInputAttributeDescription& operator=( VkVertexInputAttributeDescription const & rhs )
6182 {
6183 memcpy( this, &rhs, sizeof(VertexInputAttributeDescription) );
6184 return *this;
6185 }
6186
6187 VertexInputAttributeDescription& setLocation( uint32_t location_ )
6188 {
6189 location = location_;
6190 return *this;
6191 }
6192
6193 VertexInputAttributeDescription& setBinding( uint32_t binding_ )
6194 {
6195 binding = binding_;
6196 return *this;
6197 }
6198
6199 VertexInputAttributeDescription& setFormat( Format format_ )
6200 {
6201 format = format_;
6202 return *this;
6203 }
6204
6205 VertexInputAttributeDescription& setOffset( uint32_t offset_ )
6206 {
6207 offset = offset_;
6208 return *this;
6209 }
6210
6211 operator const VkVertexInputAttributeDescription&() const
6212 {
6213 return *reinterpret_cast<const VkVertexInputAttributeDescription*>(this);
6214 }
6215
6216 bool operator==( VertexInputAttributeDescription const& rhs ) const
6217 {
6218 return ( location == rhs.location )
6219 && ( binding == rhs.binding )
6220 && ( format == rhs.format )
6221 && ( offset == rhs.offset );
6222 }
6223
6224 bool operator!=( VertexInputAttributeDescription const& rhs ) const
6225 {
6226 return !operator==( rhs );
6227 }
6228
6229 uint32_t location;
6230 uint32_t binding;
6231 Format format;
6232 uint32_t offset;
6233 };
6234 static_assert( sizeof( VertexInputAttributeDescription ) == sizeof( VkVertexInputAttributeDescription ), "struct and wrapper have different size!" );
6235
6236 enum class StructureType
6237 {
6238 eApplicationInfo = VK_STRUCTURE_TYPE_APPLICATION_INFO,
6239 eInstanceCreateInfo = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
6240 eDeviceQueueCreateInfo = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO,
6241 eDeviceCreateInfo = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,
6242 eSubmitInfo = VK_STRUCTURE_TYPE_SUBMIT_INFO,
6243 eMemoryAllocateInfo = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
6244 eMappedMemoryRange = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE,
6245 eBindSparseInfo = VK_STRUCTURE_TYPE_BIND_SPARSE_INFO,
6246 eFenceCreateInfo = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO,
6247 eSemaphoreCreateInfo = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO,
6248 eEventCreateInfo = VK_STRUCTURE_TYPE_EVENT_CREATE_INFO,
6249 eQueryPoolCreateInfo = VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO,
6250 eBufferCreateInfo = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO,
6251 eBufferViewCreateInfo = VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO,
6252 eImageCreateInfo = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
6253 eImageViewCreateInfo = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
6254 eShaderModuleCreateInfo = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO,
6255 ePipelineCacheCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO,
6256 ePipelineShaderStageCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
6257 ePipelineVertexInputStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,
6258 ePipelineInputAssemblyStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,
6259 ePipelineTessellationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO,
6260 ePipelineViewportStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO,
6261 ePipelineRasterizationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO,
6262 ePipelineMultisampleStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,
6263 ePipelineDepthStencilStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO,
6264 ePipelineColorBlendStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,
6265 ePipelineDynamicStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO,
6266 eGraphicsPipelineCreateInfo = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO,
6267 eComputePipelineCreateInfo = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO,
6268 ePipelineLayoutCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO,
6269 eSamplerCreateInfo = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO,
6270 eDescriptorSetLayoutCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
6271 eDescriptorPoolCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO,
6272 eDescriptorSetAllocateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO,
6273 eWriteDescriptorSet = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET,
6274 eCopyDescriptorSet = VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET,
6275 eFramebufferCreateInfo = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO,
6276 eRenderPassCreateInfo = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
6277 eCommandPoolCreateInfo = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO,
6278 eCommandBufferAllocateInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO,
6279 eCommandBufferInheritanceInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO,
6280 eCommandBufferBeginInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
6281 eRenderPassBeginInfo = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,
6282 eBufferMemoryBarrier = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,
6283 eImageMemoryBarrier = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
6284 eMemoryBarrier = VK_STRUCTURE_TYPE_MEMORY_BARRIER,
6285 eLoaderInstanceCreateInfo = VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO,
6286 eLoaderDeviceCreateInfo = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
6287 eSwapchainCreateInfoKHR = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR,
6288 ePresentInfoKHR = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR,
6289 eDisplayModeCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR,
6290 eDisplaySurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR,
6291 eDisplayPresentInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR,
6292 eXlibSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR,
6293 eXcbSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR,
6294 eWaylandSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR,
6295 eMirSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR,
6296 eAndroidSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR,
6297 eWin32SurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR,
6298 eDebugReportCallbackCreateInfoEXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
6299 ePipelineRasterizationStateRasterizationOrderAMD = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD,
6300 eDebugMarkerObjectNameInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT,
6301 eDebugMarkerObjectTagInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT,
6302 eDebugMarkerMarkerInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT,
6303 eDedicatedAllocationImageCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,
6304 eDedicatedAllocationBufferCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV,
Lenny Komow6501c122016-08-31 15:03:49 -06006305 eDedicatedAllocationMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,
Mark Young0f183a82017-02-28 09:58:04 -07006306 eRenderPassMultiviewCreateInfoKHX = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX,
6307 ePhysicalDeviceMultiviewFeaturesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHX,
6308 ePhysicalDeviceMultiviewPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHX,
Lenny Komow6501c122016-08-31 15:03:49 -06006309 eExternalMemoryImageCreateInfoNV = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,
6310 eExportMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV,
6311 eImportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV,
6312 eExportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV,
Lenny Komow68432d72016-09-29 14:16:59 -06006313 eWin32KeyedMutexAcquireReleaseInfoNV = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV,
Mark Young39389872017-01-19 21:10:49 -07006314 ePhysicalDeviceFeatures2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR,
6315 ePhysicalDeviceProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR,
6316 eFormatProperties2KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR,
6317 eImageFormatProperties2KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR,
6318 ePhysicalDeviceImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR,
6319 eQueueFamilyProperties2KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR,
6320 ePhysicalDeviceMemoryProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR,
6321 eSparseImageFormatProperties2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR,
6322 ePhysicalDeviceSparseImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006323 eMemoryAllocateFlagsInfoKHX = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHX,
6324 eBindBufferMemoryInfoKHX = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHX,
6325 eBindImageMemoryInfoKHX = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHX,
6326 eDeviceGroupRenderPassBeginInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHX,
6327 eDeviceGroupCommandBufferBeginInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX,
6328 eDeviceGroupSubmitInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX,
6329 eDeviceGroupBindSparseInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX,
6330 eDeviceGroupPresentCapabilitiesKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX,
6331 eImageSwapchainCreateInfoKHX = VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX,
6332 eBindImageMemorySwapchainInfoKHX = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX,
6333 eAcquireNextImageInfoKHX = VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX,
6334 eDeviceGroupPresentInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX,
6335 eDeviceGroupSwapchainCreateInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX,
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006336 eValidationFlagsEXT = VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT,
Mark Young39389872017-01-19 21:10:49 -07006337 eViSurfaceCreateInfoNN = VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN,
Mark Young0f183a82017-02-28 09:58:04 -07006338 ePhysicalDeviceGroupPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHX,
6339 eDeviceGroupDeviceCreateInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHX,
6340 ePhysicalDeviceExternalImageFormatInfoKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHX,
6341 eExternalImageFormatPropertiesKHX = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHX,
6342 ePhysicalDeviceExternalBufferInfoKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHX,
6343 eExternalBufferPropertiesKHX = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHX,
6344 ePhysicalDeviceIdPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHX,
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -06006345 ePhysicalDeviceProperties2KHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHX,
6346 eImageFormatProperties2KHX = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHX,
6347 ePhysicalDeviceImageFormatInfo2KHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHX,
Mark Young0f183a82017-02-28 09:58:04 -07006348 eExternalMemoryBufferCreateInfoKHX = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHX,
6349 eExternalMemoryImageCreateInfoKHX = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHX,
6350 eExportMemoryAllocateInfoKHX = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHX,
6351 eImportMemoryWin32HandleInfoKHX = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHX,
6352 eExportMemoryWin32HandleInfoKHX = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHX,
6353 eMemoryWin32HandlePropertiesKHX = VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHX,
6354 eImportMemoryFdInfoKHX = VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHX,
6355 eMemoryFdPropertiesKHX = VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHX,
6356 eWin32KeyedMutexAcquireReleaseInfoKHX = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHX,
6357 ePhysicalDeviceExternalSemaphoreInfoKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHX,
6358 eExternalSemaphorePropertiesKHX = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHX,
6359 eExportSemaphoreCreateInfoKHX = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHX,
6360 eImportSemaphoreWin32HandleInfoKHX = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX,
6361 eExportSemaphoreWin32HandleInfoKHX = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX,
6362 eD3D12FenceSubmitInfoKHX = VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHX,
6363 eImportSemaphoreFdInfoKHX = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHX,
6364 ePhysicalDevicePushDescriptorPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR,
Mark Lobodzinski3289d762017-04-03 08:22:04 -06006365 ePresentRegionsKHR = VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006366 eDescriptorUpdateTemplateCreateInfoKHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR,
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006367 eObjectTableCreateInfoNVX = VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX,
6368 eIndirectCommandsLayoutCreateInfoNVX = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX,
6369 eCmdProcessCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX,
6370 eCmdReserveSpaceForCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX,
6371 eDeviceGeneratedCommandsLimitsNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX,
Mark Young39389872017-01-19 21:10:49 -07006372 eDeviceGeneratedCommandsFeaturesNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX,
Mark Young0f183a82017-02-28 09:58:04 -07006373 ePipelineViewportWScalingStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV,
Mark Young39389872017-01-19 21:10:49 -07006374 eSurfaceCapabilities2EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT,
6375 eDisplayPowerInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT,
6376 eDeviceEventInfoEXT = VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT,
6377 eDisplayEventInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT,
Mark Young0f183a82017-02-28 09:58:04 -07006378 eSwapchainCounterCreateInfoEXT = VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT,
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06006379 ePresentTimesInfoGOOGLE = VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE,
Mark Young0f183a82017-02-28 09:58:04 -07006380 ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX,
6381 ePipelineViewportSwizzleStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV,
6382 ePhysicalDeviceDiscardRectanglePropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT,
6383 ePipelineDiscardRectangleStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT,
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06006384 eHdrMetadataEXT = VK_STRUCTURE_TYPE_HDR_METADATA_EXT,
Mark Young0f183a82017-02-28 09:58:04 -07006385 eIosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK,
6386 eMacosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006387 };
6388
6389 struct ApplicationInfo
6390 {
6391 ApplicationInfo( const char* pApplicationName_ = nullptr, uint32_t applicationVersion_ = 0, const char* pEngineName_ = nullptr, uint32_t engineVersion_ = 0, uint32_t apiVersion_ = 0 )
6392 : sType( StructureType::eApplicationInfo )
6393 , pNext( nullptr )
6394 , pApplicationName( pApplicationName_ )
6395 , applicationVersion( applicationVersion_ )
6396 , pEngineName( pEngineName_ )
6397 , engineVersion( engineVersion_ )
6398 , apiVersion( apiVersion_ )
6399 {
6400 }
6401
6402 ApplicationInfo( VkApplicationInfo const & rhs )
6403 {
6404 memcpy( this, &rhs, sizeof(ApplicationInfo) );
6405 }
6406
6407 ApplicationInfo& operator=( VkApplicationInfo const & rhs )
6408 {
6409 memcpy( this, &rhs, sizeof(ApplicationInfo) );
6410 return *this;
6411 }
6412
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006413 ApplicationInfo& setPNext( const void* pNext_ )
6414 {
6415 pNext = pNext_;
6416 return *this;
6417 }
6418
6419 ApplicationInfo& setPApplicationName( const char* pApplicationName_ )
6420 {
6421 pApplicationName = pApplicationName_;
6422 return *this;
6423 }
6424
6425 ApplicationInfo& setApplicationVersion( uint32_t applicationVersion_ )
6426 {
6427 applicationVersion = applicationVersion_;
6428 return *this;
6429 }
6430
6431 ApplicationInfo& setPEngineName( const char* pEngineName_ )
6432 {
6433 pEngineName = pEngineName_;
6434 return *this;
6435 }
6436
6437 ApplicationInfo& setEngineVersion( uint32_t engineVersion_ )
6438 {
6439 engineVersion = engineVersion_;
6440 return *this;
6441 }
6442
6443 ApplicationInfo& setApiVersion( uint32_t apiVersion_ )
6444 {
6445 apiVersion = apiVersion_;
6446 return *this;
6447 }
6448
6449 operator const VkApplicationInfo&() const
6450 {
6451 return *reinterpret_cast<const VkApplicationInfo*>(this);
6452 }
6453
6454 bool operator==( ApplicationInfo const& rhs ) const
6455 {
6456 return ( sType == rhs.sType )
6457 && ( pNext == rhs.pNext )
6458 && ( pApplicationName == rhs.pApplicationName )
6459 && ( applicationVersion == rhs.applicationVersion )
6460 && ( pEngineName == rhs.pEngineName )
6461 && ( engineVersion == rhs.engineVersion )
6462 && ( apiVersion == rhs.apiVersion );
6463 }
6464
6465 bool operator!=( ApplicationInfo const& rhs ) const
6466 {
6467 return !operator==( rhs );
6468 }
6469
6470 private:
6471 StructureType sType;
6472
6473 public:
6474 const void* pNext;
6475 const char* pApplicationName;
6476 uint32_t applicationVersion;
6477 const char* pEngineName;
6478 uint32_t engineVersion;
6479 uint32_t apiVersion;
6480 };
6481 static_assert( sizeof( ApplicationInfo ) == sizeof( VkApplicationInfo ), "struct and wrapper have different size!" );
6482
6483 struct DeviceQueueCreateInfo
6484 {
6485 DeviceQueueCreateInfo( DeviceQueueCreateFlags flags_ = DeviceQueueCreateFlags(), uint32_t queueFamilyIndex_ = 0, uint32_t queueCount_ = 0, const float* pQueuePriorities_ = nullptr )
6486 : sType( StructureType::eDeviceQueueCreateInfo )
6487 , pNext( nullptr )
6488 , flags( flags_ )
6489 , queueFamilyIndex( queueFamilyIndex_ )
6490 , queueCount( queueCount_ )
6491 , pQueuePriorities( pQueuePriorities_ )
6492 {
6493 }
6494
6495 DeviceQueueCreateInfo( VkDeviceQueueCreateInfo const & rhs )
6496 {
6497 memcpy( this, &rhs, sizeof(DeviceQueueCreateInfo) );
6498 }
6499
6500 DeviceQueueCreateInfo& operator=( VkDeviceQueueCreateInfo const & rhs )
6501 {
6502 memcpy( this, &rhs, sizeof(DeviceQueueCreateInfo) );
6503 return *this;
6504 }
6505
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006506 DeviceQueueCreateInfo& setPNext( const void* pNext_ )
6507 {
6508 pNext = pNext_;
6509 return *this;
6510 }
6511
6512 DeviceQueueCreateInfo& setFlags( DeviceQueueCreateFlags flags_ )
6513 {
6514 flags = flags_;
6515 return *this;
6516 }
6517
6518 DeviceQueueCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
6519 {
6520 queueFamilyIndex = queueFamilyIndex_;
6521 return *this;
6522 }
6523
6524 DeviceQueueCreateInfo& setQueueCount( uint32_t queueCount_ )
6525 {
6526 queueCount = queueCount_;
6527 return *this;
6528 }
6529
6530 DeviceQueueCreateInfo& setPQueuePriorities( const float* pQueuePriorities_ )
6531 {
6532 pQueuePriorities = pQueuePriorities_;
6533 return *this;
6534 }
6535
6536 operator const VkDeviceQueueCreateInfo&() const
6537 {
6538 return *reinterpret_cast<const VkDeviceQueueCreateInfo*>(this);
6539 }
6540
6541 bool operator==( DeviceQueueCreateInfo const& rhs ) const
6542 {
6543 return ( sType == rhs.sType )
6544 && ( pNext == rhs.pNext )
6545 && ( flags == rhs.flags )
6546 && ( queueFamilyIndex == rhs.queueFamilyIndex )
6547 && ( queueCount == rhs.queueCount )
6548 && ( pQueuePriorities == rhs.pQueuePriorities );
6549 }
6550
6551 bool operator!=( DeviceQueueCreateInfo const& rhs ) const
6552 {
6553 return !operator==( rhs );
6554 }
6555
6556 private:
6557 StructureType sType;
6558
6559 public:
6560 const void* pNext;
6561 DeviceQueueCreateFlags flags;
6562 uint32_t queueFamilyIndex;
6563 uint32_t queueCount;
6564 const float* pQueuePriorities;
6565 };
6566 static_assert( sizeof( DeviceQueueCreateInfo ) == sizeof( VkDeviceQueueCreateInfo ), "struct and wrapper have different size!" );
6567
6568 struct DeviceCreateInfo
6569 {
6570 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 )
6571 : sType( StructureType::eDeviceCreateInfo )
6572 , pNext( nullptr )
6573 , flags( flags_ )
6574 , queueCreateInfoCount( queueCreateInfoCount_ )
6575 , pQueueCreateInfos( pQueueCreateInfos_ )
6576 , enabledLayerCount( enabledLayerCount_ )
6577 , ppEnabledLayerNames( ppEnabledLayerNames_ )
6578 , enabledExtensionCount( enabledExtensionCount_ )
6579 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
6580 , pEnabledFeatures( pEnabledFeatures_ )
6581 {
6582 }
6583
6584 DeviceCreateInfo( VkDeviceCreateInfo const & rhs )
6585 {
6586 memcpy( this, &rhs, sizeof(DeviceCreateInfo) );
6587 }
6588
6589 DeviceCreateInfo& operator=( VkDeviceCreateInfo const & rhs )
6590 {
6591 memcpy( this, &rhs, sizeof(DeviceCreateInfo) );
6592 return *this;
6593 }
6594
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006595 DeviceCreateInfo& setPNext( const void* pNext_ )
6596 {
6597 pNext = pNext_;
6598 return *this;
6599 }
6600
6601 DeviceCreateInfo& setFlags( DeviceCreateFlags flags_ )
6602 {
6603 flags = flags_;
6604 return *this;
6605 }
6606
6607 DeviceCreateInfo& setQueueCreateInfoCount( uint32_t queueCreateInfoCount_ )
6608 {
6609 queueCreateInfoCount = queueCreateInfoCount_;
6610 return *this;
6611 }
6612
6613 DeviceCreateInfo& setPQueueCreateInfos( const DeviceQueueCreateInfo* pQueueCreateInfos_ )
6614 {
6615 pQueueCreateInfos = pQueueCreateInfos_;
6616 return *this;
6617 }
6618
6619 DeviceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
6620 {
6621 enabledLayerCount = enabledLayerCount_;
6622 return *this;
6623 }
6624
6625 DeviceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
6626 {
6627 ppEnabledLayerNames = ppEnabledLayerNames_;
6628 return *this;
6629 }
6630
6631 DeviceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
6632 {
6633 enabledExtensionCount = enabledExtensionCount_;
6634 return *this;
6635 }
6636
6637 DeviceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
6638 {
6639 ppEnabledExtensionNames = ppEnabledExtensionNames_;
6640 return *this;
6641 }
6642
6643 DeviceCreateInfo& setPEnabledFeatures( const PhysicalDeviceFeatures* pEnabledFeatures_ )
6644 {
6645 pEnabledFeatures = pEnabledFeatures_;
6646 return *this;
6647 }
6648
6649 operator const VkDeviceCreateInfo&() const
6650 {
6651 return *reinterpret_cast<const VkDeviceCreateInfo*>(this);
6652 }
6653
6654 bool operator==( DeviceCreateInfo const& rhs ) const
6655 {
6656 return ( sType == rhs.sType )
6657 && ( pNext == rhs.pNext )
6658 && ( flags == rhs.flags )
6659 && ( queueCreateInfoCount == rhs.queueCreateInfoCount )
6660 && ( pQueueCreateInfos == rhs.pQueueCreateInfos )
6661 && ( enabledLayerCount == rhs.enabledLayerCount )
6662 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
6663 && ( enabledExtensionCount == rhs.enabledExtensionCount )
6664 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames )
6665 && ( pEnabledFeatures == rhs.pEnabledFeatures );
6666 }
6667
6668 bool operator!=( DeviceCreateInfo const& rhs ) const
6669 {
6670 return !operator==( rhs );
6671 }
6672
6673 private:
6674 StructureType sType;
6675
6676 public:
6677 const void* pNext;
6678 DeviceCreateFlags flags;
6679 uint32_t queueCreateInfoCount;
6680 const DeviceQueueCreateInfo* pQueueCreateInfos;
6681 uint32_t enabledLayerCount;
6682 const char* const* ppEnabledLayerNames;
6683 uint32_t enabledExtensionCount;
6684 const char* const* ppEnabledExtensionNames;
6685 const PhysicalDeviceFeatures* pEnabledFeatures;
6686 };
6687 static_assert( sizeof( DeviceCreateInfo ) == sizeof( VkDeviceCreateInfo ), "struct and wrapper have different size!" );
6688
6689 struct InstanceCreateInfo
6690 {
6691 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 )
6692 : sType( StructureType::eInstanceCreateInfo )
6693 , pNext( nullptr )
6694 , flags( flags_ )
6695 , pApplicationInfo( pApplicationInfo_ )
6696 , enabledLayerCount( enabledLayerCount_ )
6697 , ppEnabledLayerNames( ppEnabledLayerNames_ )
6698 , enabledExtensionCount( enabledExtensionCount_ )
6699 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
6700 {
6701 }
6702
6703 InstanceCreateInfo( VkInstanceCreateInfo const & rhs )
6704 {
6705 memcpy( this, &rhs, sizeof(InstanceCreateInfo) );
6706 }
6707
6708 InstanceCreateInfo& operator=( VkInstanceCreateInfo const & rhs )
6709 {
6710 memcpy( this, &rhs, sizeof(InstanceCreateInfo) );
6711 return *this;
6712 }
6713
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006714 InstanceCreateInfo& setPNext( const void* pNext_ )
6715 {
6716 pNext = pNext_;
6717 return *this;
6718 }
6719
6720 InstanceCreateInfo& setFlags( InstanceCreateFlags flags_ )
6721 {
6722 flags = flags_;
6723 return *this;
6724 }
6725
6726 InstanceCreateInfo& setPApplicationInfo( const ApplicationInfo* pApplicationInfo_ )
6727 {
6728 pApplicationInfo = pApplicationInfo_;
6729 return *this;
6730 }
6731
6732 InstanceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
6733 {
6734 enabledLayerCount = enabledLayerCount_;
6735 return *this;
6736 }
6737
6738 InstanceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
6739 {
6740 ppEnabledLayerNames = ppEnabledLayerNames_;
6741 return *this;
6742 }
6743
6744 InstanceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
6745 {
6746 enabledExtensionCount = enabledExtensionCount_;
6747 return *this;
6748 }
6749
6750 InstanceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
6751 {
6752 ppEnabledExtensionNames = ppEnabledExtensionNames_;
6753 return *this;
6754 }
6755
6756 operator const VkInstanceCreateInfo&() const
6757 {
6758 return *reinterpret_cast<const VkInstanceCreateInfo*>(this);
6759 }
6760
6761 bool operator==( InstanceCreateInfo const& rhs ) const
6762 {
6763 return ( sType == rhs.sType )
6764 && ( pNext == rhs.pNext )
6765 && ( flags == rhs.flags )
6766 && ( pApplicationInfo == rhs.pApplicationInfo )
6767 && ( enabledLayerCount == rhs.enabledLayerCount )
6768 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
6769 && ( enabledExtensionCount == rhs.enabledExtensionCount )
6770 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames );
6771 }
6772
6773 bool operator!=( InstanceCreateInfo const& rhs ) const
6774 {
6775 return !operator==( rhs );
6776 }
6777
6778 private:
6779 StructureType sType;
6780
6781 public:
6782 const void* pNext;
6783 InstanceCreateFlags flags;
6784 const ApplicationInfo* pApplicationInfo;
6785 uint32_t enabledLayerCount;
6786 const char* const* ppEnabledLayerNames;
6787 uint32_t enabledExtensionCount;
6788 const char* const* ppEnabledExtensionNames;
6789 };
6790 static_assert( sizeof( InstanceCreateInfo ) == sizeof( VkInstanceCreateInfo ), "struct and wrapper have different size!" );
6791
6792 struct MemoryAllocateInfo
6793 {
6794 MemoryAllocateInfo( DeviceSize allocationSize_ = 0, uint32_t memoryTypeIndex_ = 0 )
6795 : sType( StructureType::eMemoryAllocateInfo )
6796 , pNext( nullptr )
6797 , allocationSize( allocationSize_ )
6798 , memoryTypeIndex( memoryTypeIndex_ )
6799 {
6800 }
6801
6802 MemoryAllocateInfo( VkMemoryAllocateInfo const & rhs )
6803 {
6804 memcpy( this, &rhs, sizeof(MemoryAllocateInfo) );
6805 }
6806
6807 MemoryAllocateInfo& operator=( VkMemoryAllocateInfo const & rhs )
6808 {
6809 memcpy( this, &rhs, sizeof(MemoryAllocateInfo) );
6810 return *this;
6811 }
6812
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006813 MemoryAllocateInfo& setPNext( const void* pNext_ )
6814 {
6815 pNext = pNext_;
6816 return *this;
6817 }
6818
6819 MemoryAllocateInfo& setAllocationSize( DeviceSize allocationSize_ )
6820 {
6821 allocationSize = allocationSize_;
6822 return *this;
6823 }
6824
6825 MemoryAllocateInfo& setMemoryTypeIndex( uint32_t memoryTypeIndex_ )
6826 {
6827 memoryTypeIndex = memoryTypeIndex_;
6828 return *this;
6829 }
6830
6831 operator const VkMemoryAllocateInfo&() const
6832 {
6833 return *reinterpret_cast<const VkMemoryAllocateInfo*>(this);
6834 }
6835
6836 bool operator==( MemoryAllocateInfo const& rhs ) const
6837 {
6838 return ( sType == rhs.sType )
6839 && ( pNext == rhs.pNext )
6840 && ( allocationSize == rhs.allocationSize )
6841 && ( memoryTypeIndex == rhs.memoryTypeIndex );
6842 }
6843
6844 bool operator!=( MemoryAllocateInfo const& rhs ) const
6845 {
6846 return !operator==( rhs );
6847 }
6848
6849 private:
6850 StructureType sType;
6851
6852 public:
6853 const void* pNext;
6854 DeviceSize allocationSize;
6855 uint32_t memoryTypeIndex;
6856 };
6857 static_assert( sizeof( MemoryAllocateInfo ) == sizeof( VkMemoryAllocateInfo ), "struct and wrapper have different size!" );
6858
6859 struct MappedMemoryRange
6860 {
6861 MappedMemoryRange( DeviceMemory memory_ = DeviceMemory(), DeviceSize offset_ = 0, DeviceSize size_ = 0 )
6862 : sType( StructureType::eMappedMemoryRange )
6863 , pNext( nullptr )
6864 , memory( memory_ )
6865 , offset( offset_ )
6866 , size( size_ )
6867 {
6868 }
6869
6870 MappedMemoryRange( VkMappedMemoryRange const & rhs )
6871 {
6872 memcpy( this, &rhs, sizeof(MappedMemoryRange) );
6873 }
6874
6875 MappedMemoryRange& operator=( VkMappedMemoryRange const & rhs )
6876 {
6877 memcpy( this, &rhs, sizeof(MappedMemoryRange) );
6878 return *this;
6879 }
6880
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006881 MappedMemoryRange& setPNext( const void* pNext_ )
6882 {
6883 pNext = pNext_;
6884 return *this;
6885 }
6886
6887 MappedMemoryRange& setMemory( DeviceMemory memory_ )
6888 {
6889 memory = memory_;
6890 return *this;
6891 }
6892
6893 MappedMemoryRange& setOffset( DeviceSize offset_ )
6894 {
6895 offset = offset_;
6896 return *this;
6897 }
6898
6899 MappedMemoryRange& setSize( DeviceSize size_ )
6900 {
6901 size = size_;
6902 return *this;
6903 }
6904
6905 operator const VkMappedMemoryRange&() const
6906 {
6907 return *reinterpret_cast<const VkMappedMemoryRange*>(this);
6908 }
6909
6910 bool operator==( MappedMemoryRange const& rhs ) const
6911 {
6912 return ( sType == rhs.sType )
6913 && ( pNext == rhs.pNext )
6914 && ( memory == rhs.memory )
6915 && ( offset == rhs.offset )
6916 && ( size == rhs.size );
6917 }
6918
6919 bool operator!=( MappedMemoryRange const& rhs ) const
6920 {
6921 return !operator==( rhs );
6922 }
6923
6924 private:
6925 StructureType sType;
6926
6927 public:
6928 const void* pNext;
6929 DeviceMemory memory;
6930 DeviceSize offset;
6931 DeviceSize size;
6932 };
6933 static_assert( sizeof( MappedMemoryRange ) == sizeof( VkMappedMemoryRange ), "struct and wrapper have different size!" );
6934
6935 struct WriteDescriptorSet
6936 {
6937 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 )
6938 : sType( StructureType::eWriteDescriptorSet )
6939 , pNext( nullptr )
6940 , dstSet( dstSet_ )
6941 , dstBinding( dstBinding_ )
6942 , dstArrayElement( dstArrayElement_ )
6943 , descriptorCount( descriptorCount_ )
6944 , descriptorType( descriptorType_ )
6945 , pImageInfo( pImageInfo_ )
6946 , pBufferInfo( pBufferInfo_ )
6947 , pTexelBufferView( pTexelBufferView_ )
6948 {
6949 }
6950
6951 WriteDescriptorSet( VkWriteDescriptorSet const & rhs )
6952 {
6953 memcpy( this, &rhs, sizeof(WriteDescriptorSet) );
6954 }
6955
6956 WriteDescriptorSet& operator=( VkWriteDescriptorSet const & rhs )
6957 {
6958 memcpy( this, &rhs, sizeof(WriteDescriptorSet) );
6959 return *this;
6960 }
6961
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006962 WriteDescriptorSet& setPNext( const void* pNext_ )
6963 {
6964 pNext = pNext_;
6965 return *this;
6966 }
6967
6968 WriteDescriptorSet& setDstSet( DescriptorSet dstSet_ )
6969 {
6970 dstSet = dstSet_;
6971 return *this;
6972 }
6973
6974 WriteDescriptorSet& setDstBinding( uint32_t dstBinding_ )
6975 {
6976 dstBinding = dstBinding_;
6977 return *this;
6978 }
6979
6980 WriteDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
6981 {
6982 dstArrayElement = dstArrayElement_;
6983 return *this;
6984 }
6985
6986 WriteDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
6987 {
6988 descriptorCount = descriptorCount_;
6989 return *this;
6990 }
6991
6992 WriteDescriptorSet& setDescriptorType( DescriptorType descriptorType_ )
6993 {
6994 descriptorType = descriptorType_;
6995 return *this;
6996 }
6997
6998 WriteDescriptorSet& setPImageInfo( const DescriptorImageInfo* pImageInfo_ )
6999 {
7000 pImageInfo = pImageInfo_;
7001 return *this;
7002 }
7003
7004 WriteDescriptorSet& setPBufferInfo( const DescriptorBufferInfo* pBufferInfo_ )
7005 {
7006 pBufferInfo = pBufferInfo_;
7007 return *this;
7008 }
7009
7010 WriteDescriptorSet& setPTexelBufferView( const BufferView* pTexelBufferView_ )
7011 {
7012 pTexelBufferView = pTexelBufferView_;
7013 return *this;
7014 }
7015
7016 operator const VkWriteDescriptorSet&() const
7017 {
7018 return *reinterpret_cast<const VkWriteDescriptorSet*>(this);
7019 }
7020
7021 bool operator==( WriteDescriptorSet const& rhs ) const
7022 {
7023 return ( sType == rhs.sType )
7024 && ( pNext == rhs.pNext )
7025 && ( dstSet == rhs.dstSet )
7026 && ( dstBinding == rhs.dstBinding )
7027 && ( dstArrayElement == rhs.dstArrayElement )
7028 && ( descriptorCount == rhs.descriptorCount )
7029 && ( descriptorType == rhs.descriptorType )
7030 && ( pImageInfo == rhs.pImageInfo )
7031 && ( pBufferInfo == rhs.pBufferInfo )
7032 && ( pTexelBufferView == rhs.pTexelBufferView );
7033 }
7034
7035 bool operator!=( WriteDescriptorSet const& rhs ) const
7036 {
7037 return !operator==( rhs );
7038 }
7039
7040 private:
7041 StructureType sType;
7042
7043 public:
7044 const void* pNext;
7045 DescriptorSet dstSet;
7046 uint32_t dstBinding;
7047 uint32_t dstArrayElement;
7048 uint32_t descriptorCount;
7049 DescriptorType descriptorType;
7050 const DescriptorImageInfo* pImageInfo;
7051 const DescriptorBufferInfo* pBufferInfo;
7052 const BufferView* pTexelBufferView;
7053 };
7054 static_assert( sizeof( WriteDescriptorSet ) == sizeof( VkWriteDescriptorSet ), "struct and wrapper have different size!" );
7055
7056 struct CopyDescriptorSet
7057 {
7058 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 )
7059 : sType( StructureType::eCopyDescriptorSet )
7060 , pNext( nullptr )
7061 , srcSet( srcSet_ )
7062 , srcBinding( srcBinding_ )
7063 , srcArrayElement( srcArrayElement_ )
7064 , dstSet( dstSet_ )
7065 , dstBinding( dstBinding_ )
7066 , dstArrayElement( dstArrayElement_ )
7067 , descriptorCount( descriptorCount_ )
7068 {
7069 }
7070
7071 CopyDescriptorSet( VkCopyDescriptorSet const & rhs )
7072 {
7073 memcpy( this, &rhs, sizeof(CopyDescriptorSet) );
7074 }
7075
7076 CopyDescriptorSet& operator=( VkCopyDescriptorSet const & rhs )
7077 {
7078 memcpy( this, &rhs, sizeof(CopyDescriptorSet) );
7079 return *this;
7080 }
7081
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007082 CopyDescriptorSet& setPNext( const void* pNext_ )
7083 {
7084 pNext = pNext_;
7085 return *this;
7086 }
7087
7088 CopyDescriptorSet& setSrcSet( DescriptorSet srcSet_ )
7089 {
7090 srcSet = srcSet_;
7091 return *this;
7092 }
7093
7094 CopyDescriptorSet& setSrcBinding( uint32_t srcBinding_ )
7095 {
7096 srcBinding = srcBinding_;
7097 return *this;
7098 }
7099
7100 CopyDescriptorSet& setSrcArrayElement( uint32_t srcArrayElement_ )
7101 {
7102 srcArrayElement = srcArrayElement_;
7103 return *this;
7104 }
7105
7106 CopyDescriptorSet& setDstSet( DescriptorSet dstSet_ )
7107 {
7108 dstSet = dstSet_;
7109 return *this;
7110 }
7111
7112 CopyDescriptorSet& setDstBinding( uint32_t dstBinding_ )
7113 {
7114 dstBinding = dstBinding_;
7115 return *this;
7116 }
7117
7118 CopyDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
7119 {
7120 dstArrayElement = dstArrayElement_;
7121 return *this;
7122 }
7123
7124 CopyDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
7125 {
7126 descriptorCount = descriptorCount_;
7127 return *this;
7128 }
7129
7130 operator const VkCopyDescriptorSet&() const
7131 {
7132 return *reinterpret_cast<const VkCopyDescriptorSet*>(this);
7133 }
7134
7135 bool operator==( CopyDescriptorSet const& rhs ) const
7136 {
7137 return ( sType == rhs.sType )
7138 && ( pNext == rhs.pNext )
7139 && ( srcSet == rhs.srcSet )
7140 && ( srcBinding == rhs.srcBinding )
7141 && ( srcArrayElement == rhs.srcArrayElement )
7142 && ( dstSet == rhs.dstSet )
7143 && ( dstBinding == rhs.dstBinding )
7144 && ( dstArrayElement == rhs.dstArrayElement )
7145 && ( descriptorCount == rhs.descriptorCount );
7146 }
7147
7148 bool operator!=( CopyDescriptorSet const& rhs ) const
7149 {
7150 return !operator==( rhs );
7151 }
7152
7153 private:
7154 StructureType sType;
7155
7156 public:
7157 const void* pNext;
7158 DescriptorSet srcSet;
7159 uint32_t srcBinding;
7160 uint32_t srcArrayElement;
7161 DescriptorSet dstSet;
7162 uint32_t dstBinding;
7163 uint32_t dstArrayElement;
7164 uint32_t descriptorCount;
7165 };
7166 static_assert( sizeof( CopyDescriptorSet ) == sizeof( VkCopyDescriptorSet ), "struct and wrapper have different size!" );
7167
7168 struct BufferViewCreateInfo
7169 {
7170 BufferViewCreateInfo( BufferViewCreateFlags flags_ = BufferViewCreateFlags(), Buffer buffer_ = Buffer(), Format format_ = Format::eUndefined, DeviceSize offset_ = 0, DeviceSize range_ = 0 )
7171 : sType( StructureType::eBufferViewCreateInfo )
7172 , pNext( nullptr )
7173 , flags( flags_ )
7174 , buffer( buffer_ )
7175 , format( format_ )
7176 , offset( offset_ )
7177 , range( range_ )
7178 {
7179 }
7180
7181 BufferViewCreateInfo( VkBufferViewCreateInfo const & rhs )
7182 {
7183 memcpy( this, &rhs, sizeof(BufferViewCreateInfo) );
7184 }
7185
7186 BufferViewCreateInfo& operator=( VkBufferViewCreateInfo const & rhs )
7187 {
7188 memcpy( this, &rhs, sizeof(BufferViewCreateInfo) );
7189 return *this;
7190 }
7191
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007192 BufferViewCreateInfo& setPNext( const void* pNext_ )
7193 {
7194 pNext = pNext_;
7195 return *this;
7196 }
7197
7198 BufferViewCreateInfo& setFlags( BufferViewCreateFlags flags_ )
7199 {
7200 flags = flags_;
7201 return *this;
7202 }
7203
7204 BufferViewCreateInfo& setBuffer( Buffer buffer_ )
7205 {
7206 buffer = buffer_;
7207 return *this;
7208 }
7209
7210 BufferViewCreateInfo& setFormat( Format format_ )
7211 {
7212 format = format_;
7213 return *this;
7214 }
7215
7216 BufferViewCreateInfo& setOffset( DeviceSize offset_ )
7217 {
7218 offset = offset_;
7219 return *this;
7220 }
7221
7222 BufferViewCreateInfo& setRange( DeviceSize range_ )
7223 {
7224 range = range_;
7225 return *this;
7226 }
7227
7228 operator const VkBufferViewCreateInfo&() const
7229 {
7230 return *reinterpret_cast<const VkBufferViewCreateInfo*>(this);
7231 }
7232
7233 bool operator==( BufferViewCreateInfo const& rhs ) const
7234 {
7235 return ( sType == rhs.sType )
7236 && ( pNext == rhs.pNext )
7237 && ( flags == rhs.flags )
7238 && ( buffer == rhs.buffer )
7239 && ( format == rhs.format )
7240 && ( offset == rhs.offset )
7241 && ( range == rhs.range );
7242 }
7243
7244 bool operator!=( BufferViewCreateInfo const& rhs ) const
7245 {
7246 return !operator==( rhs );
7247 }
7248
7249 private:
7250 StructureType sType;
7251
7252 public:
7253 const void* pNext;
7254 BufferViewCreateFlags flags;
7255 Buffer buffer;
7256 Format format;
7257 DeviceSize offset;
7258 DeviceSize range;
7259 };
7260 static_assert( sizeof( BufferViewCreateInfo ) == sizeof( VkBufferViewCreateInfo ), "struct and wrapper have different size!" );
7261
7262 struct ShaderModuleCreateInfo
7263 {
7264 ShaderModuleCreateInfo( ShaderModuleCreateFlags flags_ = ShaderModuleCreateFlags(), size_t codeSize_ = 0, const uint32_t* pCode_ = nullptr )
7265 : sType( StructureType::eShaderModuleCreateInfo )
7266 , pNext( nullptr )
7267 , flags( flags_ )
7268 , codeSize( codeSize_ )
7269 , pCode( pCode_ )
7270 {
7271 }
7272
7273 ShaderModuleCreateInfo( VkShaderModuleCreateInfo const & rhs )
7274 {
7275 memcpy( this, &rhs, sizeof(ShaderModuleCreateInfo) );
7276 }
7277
7278 ShaderModuleCreateInfo& operator=( VkShaderModuleCreateInfo const & rhs )
7279 {
7280 memcpy( this, &rhs, sizeof(ShaderModuleCreateInfo) );
7281 return *this;
7282 }
7283
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007284 ShaderModuleCreateInfo& setPNext( const void* pNext_ )
7285 {
7286 pNext = pNext_;
7287 return *this;
7288 }
7289
7290 ShaderModuleCreateInfo& setFlags( ShaderModuleCreateFlags flags_ )
7291 {
7292 flags = flags_;
7293 return *this;
7294 }
7295
7296 ShaderModuleCreateInfo& setCodeSize( size_t codeSize_ )
7297 {
7298 codeSize = codeSize_;
7299 return *this;
7300 }
7301
7302 ShaderModuleCreateInfo& setPCode( const uint32_t* pCode_ )
7303 {
7304 pCode = pCode_;
7305 return *this;
7306 }
7307
7308 operator const VkShaderModuleCreateInfo&() const
7309 {
7310 return *reinterpret_cast<const VkShaderModuleCreateInfo*>(this);
7311 }
7312
7313 bool operator==( ShaderModuleCreateInfo const& rhs ) const
7314 {
7315 return ( sType == rhs.sType )
7316 && ( pNext == rhs.pNext )
7317 && ( flags == rhs.flags )
7318 && ( codeSize == rhs.codeSize )
7319 && ( pCode == rhs.pCode );
7320 }
7321
7322 bool operator!=( ShaderModuleCreateInfo const& rhs ) const
7323 {
7324 return !operator==( rhs );
7325 }
7326
7327 private:
7328 StructureType sType;
7329
7330 public:
7331 const void* pNext;
7332 ShaderModuleCreateFlags flags;
7333 size_t codeSize;
7334 const uint32_t* pCode;
7335 };
7336 static_assert( sizeof( ShaderModuleCreateInfo ) == sizeof( VkShaderModuleCreateInfo ), "struct and wrapper have different size!" );
7337
7338 struct DescriptorSetAllocateInfo
7339 {
7340 DescriptorSetAllocateInfo( DescriptorPool descriptorPool_ = DescriptorPool(), uint32_t descriptorSetCount_ = 0, const DescriptorSetLayout* pSetLayouts_ = nullptr )
7341 : sType( StructureType::eDescriptorSetAllocateInfo )
7342 , pNext( nullptr )
7343 , descriptorPool( descriptorPool_ )
7344 , descriptorSetCount( descriptorSetCount_ )
7345 , pSetLayouts( pSetLayouts_ )
7346 {
7347 }
7348
7349 DescriptorSetAllocateInfo( VkDescriptorSetAllocateInfo const & rhs )
7350 {
7351 memcpy( this, &rhs, sizeof(DescriptorSetAllocateInfo) );
7352 }
7353
7354 DescriptorSetAllocateInfo& operator=( VkDescriptorSetAllocateInfo const & rhs )
7355 {
7356 memcpy( this, &rhs, sizeof(DescriptorSetAllocateInfo) );
7357 return *this;
7358 }
7359
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007360 DescriptorSetAllocateInfo& setPNext( const void* pNext_ )
7361 {
7362 pNext = pNext_;
7363 return *this;
7364 }
7365
7366 DescriptorSetAllocateInfo& setDescriptorPool( DescriptorPool descriptorPool_ )
7367 {
7368 descriptorPool = descriptorPool_;
7369 return *this;
7370 }
7371
7372 DescriptorSetAllocateInfo& setDescriptorSetCount( uint32_t descriptorSetCount_ )
7373 {
7374 descriptorSetCount = descriptorSetCount_;
7375 return *this;
7376 }
7377
7378 DescriptorSetAllocateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
7379 {
7380 pSetLayouts = pSetLayouts_;
7381 return *this;
7382 }
7383
7384 operator const VkDescriptorSetAllocateInfo&() const
7385 {
7386 return *reinterpret_cast<const VkDescriptorSetAllocateInfo*>(this);
7387 }
7388
7389 bool operator==( DescriptorSetAllocateInfo const& rhs ) const
7390 {
7391 return ( sType == rhs.sType )
7392 && ( pNext == rhs.pNext )
7393 && ( descriptorPool == rhs.descriptorPool )
7394 && ( descriptorSetCount == rhs.descriptorSetCount )
7395 && ( pSetLayouts == rhs.pSetLayouts );
7396 }
7397
7398 bool operator!=( DescriptorSetAllocateInfo const& rhs ) const
7399 {
7400 return !operator==( rhs );
7401 }
7402
7403 private:
7404 StructureType sType;
7405
7406 public:
7407 const void* pNext;
7408 DescriptorPool descriptorPool;
7409 uint32_t descriptorSetCount;
7410 const DescriptorSetLayout* pSetLayouts;
7411 };
7412 static_assert( sizeof( DescriptorSetAllocateInfo ) == sizeof( VkDescriptorSetAllocateInfo ), "struct and wrapper have different size!" );
7413
7414 struct PipelineVertexInputStateCreateInfo
7415 {
7416 PipelineVertexInputStateCreateInfo( PipelineVertexInputStateCreateFlags flags_ = PipelineVertexInputStateCreateFlags(), uint32_t vertexBindingDescriptionCount_ = 0, const VertexInputBindingDescription* pVertexBindingDescriptions_ = nullptr, uint32_t vertexAttributeDescriptionCount_ = 0, const VertexInputAttributeDescription* pVertexAttributeDescriptions_ = nullptr )
7417 : sType( StructureType::ePipelineVertexInputStateCreateInfo )
7418 , pNext( nullptr )
7419 , flags( flags_ )
7420 , vertexBindingDescriptionCount( vertexBindingDescriptionCount_ )
7421 , pVertexBindingDescriptions( pVertexBindingDescriptions_ )
7422 , vertexAttributeDescriptionCount( vertexAttributeDescriptionCount_ )
7423 , pVertexAttributeDescriptions( pVertexAttributeDescriptions_ )
7424 {
7425 }
7426
7427 PipelineVertexInputStateCreateInfo( VkPipelineVertexInputStateCreateInfo const & rhs )
7428 {
7429 memcpy( this, &rhs, sizeof(PipelineVertexInputStateCreateInfo) );
7430 }
7431
7432 PipelineVertexInputStateCreateInfo& operator=( VkPipelineVertexInputStateCreateInfo const & rhs )
7433 {
7434 memcpy( this, &rhs, sizeof(PipelineVertexInputStateCreateInfo) );
7435 return *this;
7436 }
7437
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007438 PipelineVertexInputStateCreateInfo& setPNext( const void* pNext_ )
7439 {
7440 pNext = pNext_;
7441 return *this;
7442 }
7443
7444 PipelineVertexInputStateCreateInfo& setFlags( PipelineVertexInputStateCreateFlags flags_ )
7445 {
7446 flags = flags_;
7447 return *this;
7448 }
7449
7450 PipelineVertexInputStateCreateInfo& setVertexBindingDescriptionCount( uint32_t vertexBindingDescriptionCount_ )
7451 {
7452 vertexBindingDescriptionCount = vertexBindingDescriptionCount_;
7453 return *this;
7454 }
7455
7456 PipelineVertexInputStateCreateInfo& setPVertexBindingDescriptions( const VertexInputBindingDescription* pVertexBindingDescriptions_ )
7457 {
7458 pVertexBindingDescriptions = pVertexBindingDescriptions_;
7459 return *this;
7460 }
7461
7462 PipelineVertexInputStateCreateInfo& setVertexAttributeDescriptionCount( uint32_t vertexAttributeDescriptionCount_ )
7463 {
7464 vertexAttributeDescriptionCount = vertexAttributeDescriptionCount_;
7465 return *this;
7466 }
7467
7468 PipelineVertexInputStateCreateInfo& setPVertexAttributeDescriptions( const VertexInputAttributeDescription* pVertexAttributeDescriptions_ )
7469 {
7470 pVertexAttributeDescriptions = pVertexAttributeDescriptions_;
7471 return *this;
7472 }
7473
7474 operator const VkPipelineVertexInputStateCreateInfo&() const
7475 {
7476 return *reinterpret_cast<const VkPipelineVertexInputStateCreateInfo*>(this);
7477 }
7478
7479 bool operator==( PipelineVertexInputStateCreateInfo const& rhs ) const
7480 {
7481 return ( sType == rhs.sType )
7482 && ( pNext == rhs.pNext )
7483 && ( flags == rhs.flags )
7484 && ( vertexBindingDescriptionCount == rhs.vertexBindingDescriptionCount )
7485 && ( pVertexBindingDescriptions == rhs.pVertexBindingDescriptions )
7486 && ( vertexAttributeDescriptionCount == rhs.vertexAttributeDescriptionCount )
7487 && ( pVertexAttributeDescriptions == rhs.pVertexAttributeDescriptions );
7488 }
7489
7490 bool operator!=( PipelineVertexInputStateCreateInfo const& rhs ) const
7491 {
7492 return !operator==( rhs );
7493 }
7494
7495 private:
7496 StructureType sType;
7497
7498 public:
7499 const void* pNext;
7500 PipelineVertexInputStateCreateFlags flags;
7501 uint32_t vertexBindingDescriptionCount;
7502 const VertexInputBindingDescription* pVertexBindingDescriptions;
7503 uint32_t vertexAttributeDescriptionCount;
7504 const VertexInputAttributeDescription* pVertexAttributeDescriptions;
7505 };
7506 static_assert( sizeof( PipelineVertexInputStateCreateInfo ) == sizeof( VkPipelineVertexInputStateCreateInfo ), "struct and wrapper have different size!" );
7507
7508 struct PipelineInputAssemblyStateCreateInfo
7509 {
7510 PipelineInputAssemblyStateCreateInfo( PipelineInputAssemblyStateCreateFlags flags_ = PipelineInputAssemblyStateCreateFlags(), PrimitiveTopology topology_ = PrimitiveTopology::ePointList, Bool32 primitiveRestartEnable_ = 0 )
7511 : sType( StructureType::ePipelineInputAssemblyStateCreateInfo )
7512 , pNext( nullptr )
7513 , flags( flags_ )
7514 , topology( topology_ )
7515 , primitiveRestartEnable( primitiveRestartEnable_ )
7516 {
7517 }
7518
7519 PipelineInputAssemblyStateCreateInfo( VkPipelineInputAssemblyStateCreateInfo const & rhs )
7520 {
7521 memcpy( this, &rhs, sizeof(PipelineInputAssemblyStateCreateInfo) );
7522 }
7523
7524 PipelineInputAssemblyStateCreateInfo& operator=( VkPipelineInputAssemblyStateCreateInfo const & rhs )
7525 {
7526 memcpy( this, &rhs, sizeof(PipelineInputAssemblyStateCreateInfo) );
7527 return *this;
7528 }
7529
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007530 PipelineInputAssemblyStateCreateInfo& setPNext( const void* pNext_ )
7531 {
7532 pNext = pNext_;
7533 return *this;
7534 }
7535
7536 PipelineInputAssemblyStateCreateInfo& setFlags( PipelineInputAssemblyStateCreateFlags flags_ )
7537 {
7538 flags = flags_;
7539 return *this;
7540 }
7541
7542 PipelineInputAssemblyStateCreateInfo& setTopology( PrimitiveTopology topology_ )
7543 {
7544 topology = topology_;
7545 return *this;
7546 }
7547
7548 PipelineInputAssemblyStateCreateInfo& setPrimitiveRestartEnable( Bool32 primitiveRestartEnable_ )
7549 {
7550 primitiveRestartEnable = primitiveRestartEnable_;
7551 return *this;
7552 }
7553
7554 operator const VkPipelineInputAssemblyStateCreateInfo&() const
7555 {
7556 return *reinterpret_cast<const VkPipelineInputAssemblyStateCreateInfo*>(this);
7557 }
7558
7559 bool operator==( PipelineInputAssemblyStateCreateInfo const& rhs ) const
7560 {
7561 return ( sType == rhs.sType )
7562 && ( pNext == rhs.pNext )
7563 && ( flags == rhs.flags )
7564 && ( topology == rhs.topology )
7565 && ( primitiveRestartEnable == rhs.primitiveRestartEnable );
7566 }
7567
7568 bool operator!=( PipelineInputAssemblyStateCreateInfo const& rhs ) const
7569 {
7570 return !operator==( rhs );
7571 }
7572
7573 private:
7574 StructureType sType;
7575
7576 public:
7577 const void* pNext;
7578 PipelineInputAssemblyStateCreateFlags flags;
7579 PrimitiveTopology topology;
7580 Bool32 primitiveRestartEnable;
7581 };
7582 static_assert( sizeof( PipelineInputAssemblyStateCreateInfo ) == sizeof( VkPipelineInputAssemblyStateCreateInfo ), "struct and wrapper have different size!" );
7583
7584 struct PipelineTessellationStateCreateInfo
7585 {
7586 PipelineTessellationStateCreateInfo( PipelineTessellationStateCreateFlags flags_ = PipelineTessellationStateCreateFlags(), uint32_t patchControlPoints_ = 0 )
7587 : sType( StructureType::ePipelineTessellationStateCreateInfo )
7588 , pNext( nullptr )
7589 , flags( flags_ )
7590 , patchControlPoints( patchControlPoints_ )
7591 {
7592 }
7593
7594 PipelineTessellationStateCreateInfo( VkPipelineTessellationStateCreateInfo const & rhs )
7595 {
7596 memcpy( this, &rhs, sizeof(PipelineTessellationStateCreateInfo) );
7597 }
7598
7599 PipelineTessellationStateCreateInfo& operator=( VkPipelineTessellationStateCreateInfo const & rhs )
7600 {
7601 memcpy( this, &rhs, sizeof(PipelineTessellationStateCreateInfo) );
7602 return *this;
7603 }
7604
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007605 PipelineTessellationStateCreateInfo& setPNext( const void* pNext_ )
7606 {
7607 pNext = pNext_;
7608 return *this;
7609 }
7610
7611 PipelineTessellationStateCreateInfo& setFlags( PipelineTessellationStateCreateFlags flags_ )
7612 {
7613 flags = flags_;
7614 return *this;
7615 }
7616
7617 PipelineTessellationStateCreateInfo& setPatchControlPoints( uint32_t patchControlPoints_ )
7618 {
7619 patchControlPoints = patchControlPoints_;
7620 return *this;
7621 }
7622
7623 operator const VkPipelineTessellationStateCreateInfo&() const
7624 {
7625 return *reinterpret_cast<const VkPipelineTessellationStateCreateInfo*>(this);
7626 }
7627
7628 bool operator==( PipelineTessellationStateCreateInfo const& rhs ) const
7629 {
7630 return ( sType == rhs.sType )
7631 && ( pNext == rhs.pNext )
7632 && ( flags == rhs.flags )
7633 && ( patchControlPoints == rhs.patchControlPoints );
7634 }
7635
7636 bool operator!=( PipelineTessellationStateCreateInfo const& rhs ) const
7637 {
7638 return !operator==( rhs );
7639 }
7640
7641 private:
7642 StructureType sType;
7643
7644 public:
7645 const void* pNext;
7646 PipelineTessellationStateCreateFlags flags;
7647 uint32_t patchControlPoints;
7648 };
7649 static_assert( sizeof( PipelineTessellationStateCreateInfo ) == sizeof( VkPipelineTessellationStateCreateInfo ), "struct and wrapper have different size!" );
7650
7651 struct PipelineViewportStateCreateInfo
7652 {
7653 PipelineViewportStateCreateInfo( PipelineViewportStateCreateFlags flags_ = PipelineViewportStateCreateFlags(), uint32_t viewportCount_ = 0, const Viewport* pViewports_ = nullptr, uint32_t scissorCount_ = 0, const Rect2D* pScissors_ = nullptr )
7654 : sType( StructureType::ePipelineViewportStateCreateInfo )
7655 , pNext( nullptr )
7656 , flags( flags_ )
7657 , viewportCount( viewportCount_ )
7658 , pViewports( pViewports_ )
7659 , scissorCount( scissorCount_ )
7660 , pScissors( pScissors_ )
7661 {
7662 }
7663
7664 PipelineViewportStateCreateInfo( VkPipelineViewportStateCreateInfo const & rhs )
7665 {
7666 memcpy( this, &rhs, sizeof(PipelineViewportStateCreateInfo) );
7667 }
7668
7669 PipelineViewportStateCreateInfo& operator=( VkPipelineViewportStateCreateInfo const & rhs )
7670 {
7671 memcpy( this, &rhs, sizeof(PipelineViewportStateCreateInfo) );
7672 return *this;
7673 }
7674
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007675 PipelineViewportStateCreateInfo& setPNext( const void* pNext_ )
7676 {
7677 pNext = pNext_;
7678 return *this;
7679 }
7680
7681 PipelineViewportStateCreateInfo& setFlags( PipelineViewportStateCreateFlags flags_ )
7682 {
7683 flags = flags_;
7684 return *this;
7685 }
7686
7687 PipelineViewportStateCreateInfo& setViewportCount( uint32_t viewportCount_ )
7688 {
7689 viewportCount = viewportCount_;
7690 return *this;
7691 }
7692
7693 PipelineViewportStateCreateInfo& setPViewports( const Viewport* pViewports_ )
7694 {
7695 pViewports = pViewports_;
7696 return *this;
7697 }
7698
7699 PipelineViewportStateCreateInfo& setScissorCount( uint32_t scissorCount_ )
7700 {
7701 scissorCount = scissorCount_;
7702 return *this;
7703 }
7704
7705 PipelineViewportStateCreateInfo& setPScissors( const Rect2D* pScissors_ )
7706 {
7707 pScissors = pScissors_;
7708 return *this;
7709 }
7710
7711 operator const VkPipelineViewportStateCreateInfo&() const
7712 {
7713 return *reinterpret_cast<const VkPipelineViewportStateCreateInfo*>(this);
7714 }
7715
7716 bool operator==( PipelineViewportStateCreateInfo const& rhs ) const
7717 {
7718 return ( sType == rhs.sType )
7719 && ( pNext == rhs.pNext )
7720 && ( flags == rhs.flags )
7721 && ( viewportCount == rhs.viewportCount )
7722 && ( pViewports == rhs.pViewports )
7723 && ( scissorCount == rhs.scissorCount )
7724 && ( pScissors == rhs.pScissors );
7725 }
7726
7727 bool operator!=( PipelineViewportStateCreateInfo const& rhs ) const
7728 {
7729 return !operator==( rhs );
7730 }
7731
7732 private:
7733 StructureType sType;
7734
7735 public:
7736 const void* pNext;
7737 PipelineViewportStateCreateFlags flags;
7738 uint32_t viewportCount;
7739 const Viewport* pViewports;
7740 uint32_t scissorCount;
7741 const Rect2D* pScissors;
7742 };
7743 static_assert( sizeof( PipelineViewportStateCreateInfo ) == sizeof( VkPipelineViewportStateCreateInfo ), "struct and wrapper have different size!" );
7744
7745 struct PipelineRasterizationStateCreateInfo
7746 {
7747 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 )
7748 : sType( StructureType::ePipelineRasterizationStateCreateInfo )
7749 , pNext( nullptr )
7750 , flags( flags_ )
7751 , depthClampEnable( depthClampEnable_ )
7752 , rasterizerDiscardEnable( rasterizerDiscardEnable_ )
7753 , polygonMode( polygonMode_ )
7754 , cullMode( cullMode_ )
7755 , frontFace( frontFace_ )
7756 , depthBiasEnable( depthBiasEnable_ )
7757 , depthBiasConstantFactor( depthBiasConstantFactor_ )
7758 , depthBiasClamp( depthBiasClamp_ )
7759 , depthBiasSlopeFactor( depthBiasSlopeFactor_ )
7760 , lineWidth( lineWidth_ )
7761 {
7762 }
7763
7764 PipelineRasterizationStateCreateInfo( VkPipelineRasterizationStateCreateInfo const & rhs )
7765 {
7766 memcpy( this, &rhs, sizeof(PipelineRasterizationStateCreateInfo) );
7767 }
7768
7769 PipelineRasterizationStateCreateInfo& operator=( VkPipelineRasterizationStateCreateInfo const & rhs )
7770 {
7771 memcpy( this, &rhs, sizeof(PipelineRasterizationStateCreateInfo) );
7772 return *this;
7773 }
7774
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007775 PipelineRasterizationStateCreateInfo& setPNext( const void* pNext_ )
7776 {
7777 pNext = pNext_;
7778 return *this;
7779 }
7780
7781 PipelineRasterizationStateCreateInfo& setFlags( PipelineRasterizationStateCreateFlags flags_ )
7782 {
7783 flags = flags_;
7784 return *this;
7785 }
7786
7787 PipelineRasterizationStateCreateInfo& setDepthClampEnable( Bool32 depthClampEnable_ )
7788 {
7789 depthClampEnable = depthClampEnable_;
7790 return *this;
7791 }
7792
7793 PipelineRasterizationStateCreateInfo& setRasterizerDiscardEnable( Bool32 rasterizerDiscardEnable_ )
7794 {
7795 rasterizerDiscardEnable = rasterizerDiscardEnable_;
7796 return *this;
7797 }
7798
7799 PipelineRasterizationStateCreateInfo& setPolygonMode( PolygonMode polygonMode_ )
7800 {
7801 polygonMode = polygonMode_;
7802 return *this;
7803 }
7804
7805 PipelineRasterizationStateCreateInfo& setCullMode( CullModeFlags cullMode_ )
7806 {
7807 cullMode = cullMode_;
7808 return *this;
7809 }
7810
7811 PipelineRasterizationStateCreateInfo& setFrontFace( FrontFace frontFace_ )
7812 {
7813 frontFace = frontFace_;
7814 return *this;
7815 }
7816
7817 PipelineRasterizationStateCreateInfo& setDepthBiasEnable( Bool32 depthBiasEnable_ )
7818 {
7819 depthBiasEnable = depthBiasEnable_;
7820 return *this;
7821 }
7822
7823 PipelineRasterizationStateCreateInfo& setDepthBiasConstantFactor( float depthBiasConstantFactor_ )
7824 {
7825 depthBiasConstantFactor = depthBiasConstantFactor_;
7826 return *this;
7827 }
7828
7829 PipelineRasterizationStateCreateInfo& setDepthBiasClamp( float depthBiasClamp_ )
7830 {
7831 depthBiasClamp = depthBiasClamp_;
7832 return *this;
7833 }
7834
7835 PipelineRasterizationStateCreateInfo& setDepthBiasSlopeFactor( float depthBiasSlopeFactor_ )
7836 {
7837 depthBiasSlopeFactor = depthBiasSlopeFactor_;
7838 return *this;
7839 }
7840
7841 PipelineRasterizationStateCreateInfo& setLineWidth( float lineWidth_ )
7842 {
7843 lineWidth = lineWidth_;
7844 return *this;
7845 }
7846
7847 operator const VkPipelineRasterizationStateCreateInfo&() const
7848 {
7849 return *reinterpret_cast<const VkPipelineRasterizationStateCreateInfo*>(this);
7850 }
7851
7852 bool operator==( PipelineRasterizationStateCreateInfo const& rhs ) const
7853 {
7854 return ( sType == rhs.sType )
7855 && ( pNext == rhs.pNext )
7856 && ( flags == rhs.flags )
7857 && ( depthClampEnable == rhs.depthClampEnable )
7858 && ( rasterizerDiscardEnable == rhs.rasterizerDiscardEnable )
7859 && ( polygonMode == rhs.polygonMode )
7860 && ( cullMode == rhs.cullMode )
7861 && ( frontFace == rhs.frontFace )
7862 && ( depthBiasEnable == rhs.depthBiasEnable )
7863 && ( depthBiasConstantFactor == rhs.depthBiasConstantFactor )
7864 && ( depthBiasClamp == rhs.depthBiasClamp )
7865 && ( depthBiasSlopeFactor == rhs.depthBiasSlopeFactor )
7866 && ( lineWidth == rhs.lineWidth );
7867 }
7868
7869 bool operator!=( PipelineRasterizationStateCreateInfo const& rhs ) const
7870 {
7871 return !operator==( rhs );
7872 }
7873
7874 private:
7875 StructureType sType;
7876
7877 public:
7878 const void* pNext;
7879 PipelineRasterizationStateCreateFlags flags;
7880 Bool32 depthClampEnable;
7881 Bool32 rasterizerDiscardEnable;
7882 PolygonMode polygonMode;
7883 CullModeFlags cullMode;
7884 FrontFace frontFace;
7885 Bool32 depthBiasEnable;
7886 float depthBiasConstantFactor;
7887 float depthBiasClamp;
7888 float depthBiasSlopeFactor;
7889 float lineWidth;
7890 };
7891 static_assert( sizeof( PipelineRasterizationStateCreateInfo ) == sizeof( VkPipelineRasterizationStateCreateInfo ), "struct and wrapper have different size!" );
7892
7893 struct PipelineDepthStencilStateCreateInfo
7894 {
7895 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 )
7896 : sType( StructureType::ePipelineDepthStencilStateCreateInfo )
7897 , pNext( nullptr )
7898 , flags( flags_ )
7899 , depthTestEnable( depthTestEnable_ )
7900 , depthWriteEnable( depthWriteEnable_ )
7901 , depthCompareOp( depthCompareOp_ )
7902 , depthBoundsTestEnable( depthBoundsTestEnable_ )
7903 , stencilTestEnable( stencilTestEnable_ )
7904 , front( front_ )
7905 , back( back_ )
7906 , minDepthBounds( minDepthBounds_ )
7907 , maxDepthBounds( maxDepthBounds_ )
7908 {
7909 }
7910
7911 PipelineDepthStencilStateCreateInfo( VkPipelineDepthStencilStateCreateInfo const & rhs )
7912 {
7913 memcpy( this, &rhs, sizeof(PipelineDepthStencilStateCreateInfo) );
7914 }
7915
7916 PipelineDepthStencilStateCreateInfo& operator=( VkPipelineDepthStencilStateCreateInfo const & rhs )
7917 {
7918 memcpy( this, &rhs, sizeof(PipelineDepthStencilStateCreateInfo) );
7919 return *this;
7920 }
7921
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007922 PipelineDepthStencilStateCreateInfo& setPNext( const void* pNext_ )
7923 {
7924 pNext = pNext_;
7925 return *this;
7926 }
7927
7928 PipelineDepthStencilStateCreateInfo& setFlags( PipelineDepthStencilStateCreateFlags flags_ )
7929 {
7930 flags = flags_;
7931 return *this;
7932 }
7933
7934 PipelineDepthStencilStateCreateInfo& setDepthTestEnable( Bool32 depthTestEnable_ )
7935 {
7936 depthTestEnable = depthTestEnable_;
7937 return *this;
7938 }
7939
7940 PipelineDepthStencilStateCreateInfo& setDepthWriteEnable( Bool32 depthWriteEnable_ )
7941 {
7942 depthWriteEnable = depthWriteEnable_;
7943 return *this;
7944 }
7945
7946 PipelineDepthStencilStateCreateInfo& setDepthCompareOp( CompareOp depthCompareOp_ )
7947 {
7948 depthCompareOp = depthCompareOp_;
7949 return *this;
7950 }
7951
7952 PipelineDepthStencilStateCreateInfo& setDepthBoundsTestEnable( Bool32 depthBoundsTestEnable_ )
7953 {
7954 depthBoundsTestEnable = depthBoundsTestEnable_;
7955 return *this;
7956 }
7957
7958 PipelineDepthStencilStateCreateInfo& setStencilTestEnable( Bool32 stencilTestEnable_ )
7959 {
7960 stencilTestEnable = stencilTestEnable_;
7961 return *this;
7962 }
7963
7964 PipelineDepthStencilStateCreateInfo& setFront( StencilOpState front_ )
7965 {
7966 front = front_;
7967 return *this;
7968 }
7969
7970 PipelineDepthStencilStateCreateInfo& setBack( StencilOpState back_ )
7971 {
7972 back = back_;
7973 return *this;
7974 }
7975
7976 PipelineDepthStencilStateCreateInfo& setMinDepthBounds( float minDepthBounds_ )
7977 {
7978 minDepthBounds = minDepthBounds_;
7979 return *this;
7980 }
7981
7982 PipelineDepthStencilStateCreateInfo& setMaxDepthBounds( float maxDepthBounds_ )
7983 {
7984 maxDepthBounds = maxDepthBounds_;
7985 return *this;
7986 }
7987
7988 operator const VkPipelineDepthStencilStateCreateInfo&() const
7989 {
7990 return *reinterpret_cast<const VkPipelineDepthStencilStateCreateInfo*>(this);
7991 }
7992
7993 bool operator==( PipelineDepthStencilStateCreateInfo const& rhs ) const
7994 {
7995 return ( sType == rhs.sType )
7996 && ( pNext == rhs.pNext )
7997 && ( flags == rhs.flags )
7998 && ( depthTestEnable == rhs.depthTestEnable )
7999 && ( depthWriteEnable == rhs.depthWriteEnable )
8000 && ( depthCompareOp == rhs.depthCompareOp )
8001 && ( depthBoundsTestEnable == rhs.depthBoundsTestEnable )
8002 && ( stencilTestEnable == rhs.stencilTestEnable )
8003 && ( front == rhs.front )
8004 && ( back == rhs.back )
8005 && ( minDepthBounds == rhs.minDepthBounds )
8006 && ( maxDepthBounds == rhs.maxDepthBounds );
8007 }
8008
8009 bool operator!=( PipelineDepthStencilStateCreateInfo const& rhs ) const
8010 {
8011 return !operator==( rhs );
8012 }
8013
8014 private:
8015 StructureType sType;
8016
8017 public:
8018 const void* pNext;
8019 PipelineDepthStencilStateCreateFlags flags;
8020 Bool32 depthTestEnable;
8021 Bool32 depthWriteEnable;
8022 CompareOp depthCompareOp;
8023 Bool32 depthBoundsTestEnable;
8024 Bool32 stencilTestEnable;
8025 StencilOpState front;
8026 StencilOpState back;
8027 float minDepthBounds;
8028 float maxDepthBounds;
8029 };
8030 static_assert( sizeof( PipelineDepthStencilStateCreateInfo ) == sizeof( VkPipelineDepthStencilStateCreateInfo ), "struct and wrapper have different size!" );
8031
8032 struct PipelineCacheCreateInfo
8033 {
8034 PipelineCacheCreateInfo( PipelineCacheCreateFlags flags_ = PipelineCacheCreateFlags(), size_t initialDataSize_ = 0, const void* pInitialData_ = nullptr )
8035 : sType( StructureType::ePipelineCacheCreateInfo )
8036 , pNext( nullptr )
8037 , flags( flags_ )
8038 , initialDataSize( initialDataSize_ )
8039 , pInitialData( pInitialData_ )
8040 {
8041 }
8042
8043 PipelineCacheCreateInfo( VkPipelineCacheCreateInfo const & rhs )
8044 {
8045 memcpy( this, &rhs, sizeof(PipelineCacheCreateInfo) );
8046 }
8047
8048 PipelineCacheCreateInfo& operator=( VkPipelineCacheCreateInfo const & rhs )
8049 {
8050 memcpy( this, &rhs, sizeof(PipelineCacheCreateInfo) );
8051 return *this;
8052 }
8053
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008054 PipelineCacheCreateInfo& setPNext( const void* pNext_ )
8055 {
8056 pNext = pNext_;
8057 return *this;
8058 }
8059
8060 PipelineCacheCreateInfo& setFlags( PipelineCacheCreateFlags flags_ )
8061 {
8062 flags = flags_;
8063 return *this;
8064 }
8065
8066 PipelineCacheCreateInfo& setInitialDataSize( size_t initialDataSize_ )
8067 {
8068 initialDataSize = initialDataSize_;
8069 return *this;
8070 }
8071
8072 PipelineCacheCreateInfo& setPInitialData( const void* pInitialData_ )
8073 {
8074 pInitialData = pInitialData_;
8075 return *this;
8076 }
8077
8078 operator const VkPipelineCacheCreateInfo&() const
8079 {
8080 return *reinterpret_cast<const VkPipelineCacheCreateInfo*>(this);
8081 }
8082
8083 bool operator==( PipelineCacheCreateInfo const& rhs ) const
8084 {
8085 return ( sType == rhs.sType )
8086 && ( pNext == rhs.pNext )
8087 && ( flags == rhs.flags )
8088 && ( initialDataSize == rhs.initialDataSize )
8089 && ( pInitialData == rhs.pInitialData );
8090 }
8091
8092 bool operator!=( PipelineCacheCreateInfo const& rhs ) const
8093 {
8094 return !operator==( rhs );
8095 }
8096
8097 private:
8098 StructureType sType;
8099
8100 public:
8101 const void* pNext;
8102 PipelineCacheCreateFlags flags;
8103 size_t initialDataSize;
8104 const void* pInitialData;
8105 };
8106 static_assert( sizeof( PipelineCacheCreateInfo ) == sizeof( VkPipelineCacheCreateInfo ), "struct and wrapper have different size!" );
8107
8108 struct SamplerCreateInfo
8109 {
8110 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 )
8111 : sType( StructureType::eSamplerCreateInfo )
8112 , pNext( nullptr )
8113 , flags( flags_ )
8114 , magFilter( magFilter_ )
8115 , minFilter( minFilter_ )
8116 , mipmapMode( mipmapMode_ )
8117 , addressModeU( addressModeU_ )
8118 , addressModeV( addressModeV_ )
8119 , addressModeW( addressModeW_ )
8120 , mipLodBias( mipLodBias_ )
8121 , anisotropyEnable( anisotropyEnable_ )
8122 , maxAnisotropy( maxAnisotropy_ )
8123 , compareEnable( compareEnable_ )
8124 , compareOp( compareOp_ )
8125 , minLod( minLod_ )
8126 , maxLod( maxLod_ )
8127 , borderColor( borderColor_ )
8128 , unnormalizedCoordinates( unnormalizedCoordinates_ )
8129 {
8130 }
8131
8132 SamplerCreateInfo( VkSamplerCreateInfo const & rhs )
8133 {
8134 memcpy( this, &rhs, sizeof(SamplerCreateInfo) );
8135 }
8136
8137 SamplerCreateInfo& operator=( VkSamplerCreateInfo const & rhs )
8138 {
8139 memcpy( this, &rhs, sizeof(SamplerCreateInfo) );
8140 return *this;
8141 }
8142
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008143 SamplerCreateInfo& setPNext( const void* pNext_ )
8144 {
8145 pNext = pNext_;
8146 return *this;
8147 }
8148
8149 SamplerCreateInfo& setFlags( SamplerCreateFlags flags_ )
8150 {
8151 flags = flags_;
8152 return *this;
8153 }
8154
8155 SamplerCreateInfo& setMagFilter( Filter magFilter_ )
8156 {
8157 magFilter = magFilter_;
8158 return *this;
8159 }
8160
8161 SamplerCreateInfo& setMinFilter( Filter minFilter_ )
8162 {
8163 minFilter = minFilter_;
8164 return *this;
8165 }
8166
8167 SamplerCreateInfo& setMipmapMode( SamplerMipmapMode mipmapMode_ )
8168 {
8169 mipmapMode = mipmapMode_;
8170 return *this;
8171 }
8172
8173 SamplerCreateInfo& setAddressModeU( SamplerAddressMode addressModeU_ )
8174 {
8175 addressModeU = addressModeU_;
8176 return *this;
8177 }
8178
8179 SamplerCreateInfo& setAddressModeV( SamplerAddressMode addressModeV_ )
8180 {
8181 addressModeV = addressModeV_;
8182 return *this;
8183 }
8184
8185 SamplerCreateInfo& setAddressModeW( SamplerAddressMode addressModeW_ )
8186 {
8187 addressModeW = addressModeW_;
8188 return *this;
8189 }
8190
8191 SamplerCreateInfo& setMipLodBias( float mipLodBias_ )
8192 {
8193 mipLodBias = mipLodBias_;
8194 return *this;
8195 }
8196
8197 SamplerCreateInfo& setAnisotropyEnable( Bool32 anisotropyEnable_ )
8198 {
8199 anisotropyEnable = anisotropyEnable_;
8200 return *this;
8201 }
8202
8203 SamplerCreateInfo& setMaxAnisotropy( float maxAnisotropy_ )
8204 {
8205 maxAnisotropy = maxAnisotropy_;
8206 return *this;
8207 }
8208
8209 SamplerCreateInfo& setCompareEnable( Bool32 compareEnable_ )
8210 {
8211 compareEnable = compareEnable_;
8212 return *this;
8213 }
8214
8215 SamplerCreateInfo& setCompareOp( CompareOp compareOp_ )
8216 {
8217 compareOp = compareOp_;
8218 return *this;
8219 }
8220
8221 SamplerCreateInfo& setMinLod( float minLod_ )
8222 {
8223 minLod = minLod_;
8224 return *this;
8225 }
8226
8227 SamplerCreateInfo& setMaxLod( float maxLod_ )
8228 {
8229 maxLod = maxLod_;
8230 return *this;
8231 }
8232
8233 SamplerCreateInfo& setBorderColor( BorderColor borderColor_ )
8234 {
8235 borderColor = borderColor_;
8236 return *this;
8237 }
8238
8239 SamplerCreateInfo& setUnnormalizedCoordinates( Bool32 unnormalizedCoordinates_ )
8240 {
8241 unnormalizedCoordinates = unnormalizedCoordinates_;
8242 return *this;
8243 }
8244
8245 operator const VkSamplerCreateInfo&() const
8246 {
8247 return *reinterpret_cast<const VkSamplerCreateInfo*>(this);
8248 }
8249
8250 bool operator==( SamplerCreateInfo const& rhs ) const
8251 {
8252 return ( sType == rhs.sType )
8253 && ( pNext == rhs.pNext )
8254 && ( flags == rhs.flags )
8255 && ( magFilter == rhs.magFilter )
8256 && ( minFilter == rhs.minFilter )
8257 && ( mipmapMode == rhs.mipmapMode )
8258 && ( addressModeU == rhs.addressModeU )
8259 && ( addressModeV == rhs.addressModeV )
8260 && ( addressModeW == rhs.addressModeW )
8261 && ( mipLodBias == rhs.mipLodBias )
8262 && ( anisotropyEnable == rhs.anisotropyEnable )
8263 && ( maxAnisotropy == rhs.maxAnisotropy )
8264 && ( compareEnable == rhs.compareEnable )
8265 && ( compareOp == rhs.compareOp )
8266 && ( minLod == rhs.minLod )
8267 && ( maxLod == rhs.maxLod )
8268 && ( borderColor == rhs.borderColor )
8269 && ( unnormalizedCoordinates == rhs.unnormalizedCoordinates );
8270 }
8271
8272 bool operator!=( SamplerCreateInfo const& rhs ) const
8273 {
8274 return !operator==( rhs );
8275 }
8276
8277 private:
8278 StructureType sType;
8279
8280 public:
8281 const void* pNext;
8282 SamplerCreateFlags flags;
8283 Filter magFilter;
8284 Filter minFilter;
8285 SamplerMipmapMode mipmapMode;
8286 SamplerAddressMode addressModeU;
8287 SamplerAddressMode addressModeV;
8288 SamplerAddressMode addressModeW;
8289 float mipLodBias;
8290 Bool32 anisotropyEnable;
8291 float maxAnisotropy;
8292 Bool32 compareEnable;
8293 CompareOp compareOp;
8294 float minLod;
8295 float maxLod;
8296 BorderColor borderColor;
8297 Bool32 unnormalizedCoordinates;
8298 };
8299 static_assert( sizeof( SamplerCreateInfo ) == sizeof( VkSamplerCreateInfo ), "struct and wrapper have different size!" );
8300
8301 struct CommandBufferAllocateInfo
8302 {
8303 CommandBufferAllocateInfo( CommandPool commandPool_ = CommandPool(), CommandBufferLevel level_ = CommandBufferLevel::ePrimary, uint32_t commandBufferCount_ = 0 )
8304 : sType( StructureType::eCommandBufferAllocateInfo )
8305 , pNext( nullptr )
8306 , commandPool( commandPool_ )
8307 , level( level_ )
8308 , commandBufferCount( commandBufferCount_ )
8309 {
8310 }
8311
8312 CommandBufferAllocateInfo( VkCommandBufferAllocateInfo const & rhs )
8313 {
8314 memcpy( this, &rhs, sizeof(CommandBufferAllocateInfo) );
8315 }
8316
8317 CommandBufferAllocateInfo& operator=( VkCommandBufferAllocateInfo const & rhs )
8318 {
8319 memcpy( this, &rhs, sizeof(CommandBufferAllocateInfo) );
8320 return *this;
8321 }
8322
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008323 CommandBufferAllocateInfo& setPNext( const void* pNext_ )
8324 {
8325 pNext = pNext_;
8326 return *this;
8327 }
8328
8329 CommandBufferAllocateInfo& setCommandPool( CommandPool commandPool_ )
8330 {
8331 commandPool = commandPool_;
8332 return *this;
8333 }
8334
8335 CommandBufferAllocateInfo& setLevel( CommandBufferLevel level_ )
8336 {
8337 level = level_;
8338 return *this;
8339 }
8340
8341 CommandBufferAllocateInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
8342 {
8343 commandBufferCount = commandBufferCount_;
8344 return *this;
8345 }
8346
8347 operator const VkCommandBufferAllocateInfo&() const
8348 {
8349 return *reinterpret_cast<const VkCommandBufferAllocateInfo*>(this);
8350 }
8351
8352 bool operator==( CommandBufferAllocateInfo const& rhs ) const
8353 {
8354 return ( sType == rhs.sType )
8355 && ( pNext == rhs.pNext )
8356 && ( commandPool == rhs.commandPool )
8357 && ( level == rhs.level )
8358 && ( commandBufferCount == rhs.commandBufferCount );
8359 }
8360
8361 bool operator!=( CommandBufferAllocateInfo const& rhs ) const
8362 {
8363 return !operator==( rhs );
8364 }
8365
8366 private:
8367 StructureType sType;
8368
8369 public:
8370 const void* pNext;
8371 CommandPool commandPool;
8372 CommandBufferLevel level;
8373 uint32_t commandBufferCount;
8374 };
8375 static_assert( sizeof( CommandBufferAllocateInfo ) == sizeof( VkCommandBufferAllocateInfo ), "struct and wrapper have different size!" );
8376
8377 struct RenderPassBeginInfo
8378 {
8379 RenderPassBeginInfo( RenderPass renderPass_ = RenderPass(), Framebuffer framebuffer_ = Framebuffer(), Rect2D renderArea_ = Rect2D(), uint32_t clearValueCount_ = 0, const ClearValue* pClearValues_ = nullptr )
8380 : sType( StructureType::eRenderPassBeginInfo )
8381 , pNext( nullptr )
8382 , renderPass( renderPass_ )
8383 , framebuffer( framebuffer_ )
8384 , renderArea( renderArea_ )
8385 , clearValueCount( clearValueCount_ )
8386 , pClearValues( pClearValues_ )
8387 {
8388 }
8389
8390 RenderPassBeginInfo( VkRenderPassBeginInfo const & rhs )
8391 {
8392 memcpy( this, &rhs, sizeof(RenderPassBeginInfo) );
8393 }
8394
8395 RenderPassBeginInfo& operator=( VkRenderPassBeginInfo const & rhs )
8396 {
8397 memcpy( this, &rhs, sizeof(RenderPassBeginInfo) );
8398 return *this;
8399 }
8400
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008401 RenderPassBeginInfo& setPNext( const void* pNext_ )
8402 {
8403 pNext = pNext_;
8404 return *this;
8405 }
8406
8407 RenderPassBeginInfo& setRenderPass( RenderPass renderPass_ )
8408 {
8409 renderPass = renderPass_;
8410 return *this;
8411 }
8412
8413 RenderPassBeginInfo& setFramebuffer( Framebuffer framebuffer_ )
8414 {
8415 framebuffer = framebuffer_;
8416 return *this;
8417 }
8418
8419 RenderPassBeginInfo& setRenderArea( Rect2D renderArea_ )
8420 {
8421 renderArea = renderArea_;
8422 return *this;
8423 }
8424
8425 RenderPassBeginInfo& setClearValueCount( uint32_t clearValueCount_ )
8426 {
8427 clearValueCount = clearValueCount_;
8428 return *this;
8429 }
8430
8431 RenderPassBeginInfo& setPClearValues( const ClearValue* pClearValues_ )
8432 {
8433 pClearValues = pClearValues_;
8434 return *this;
8435 }
8436
8437 operator const VkRenderPassBeginInfo&() const
8438 {
8439 return *reinterpret_cast<const VkRenderPassBeginInfo*>(this);
8440 }
8441
8442 bool operator==( RenderPassBeginInfo const& rhs ) const
8443 {
8444 return ( sType == rhs.sType )
8445 && ( pNext == rhs.pNext )
8446 && ( renderPass == rhs.renderPass )
8447 && ( framebuffer == rhs.framebuffer )
8448 && ( renderArea == rhs.renderArea )
8449 && ( clearValueCount == rhs.clearValueCount )
8450 && ( pClearValues == rhs.pClearValues );
8451 }
8452
8453 bool operator!=( RenderPassBeginInfo const& rhs ) const
8454 {
8455 return !operator==( rhs );
8456 }
8457
8458 private:
8459 StructureType sType;
8460
8461 public:
8462 const void* pNext;
8463 RenderPass renderPass;
8464 Framebuffer framebuffer;
8465 Rect2D renderArea;
8466 uint32_t clearValueCount;
8467 const ClearValue* pClearValues;
8468 };
8469 static_assert( sizeof( RenderPassBeginInfo ) == sizeof( VkRenderPassBeginInfo ), "struct and wrapper have different size!" );
8470
8471 struct EventCreateInfo
8472 {
8473 EventCreateInfo( EventCreateFlags flags_ = EventCreateFlags() )
8474 : sType( StructureType::eEventCreateInfo )
8475 , pNext( nullptr )
8476 , flags( flags_ )
8477 {
8478 }
8479
8480 EventCreateInfo( VkEventCreateInfo const & rhs )
8481 {
8482 memcpy( this, &rhs, sizeof(EventCreateInfo) );
8483 }
8484
8485 EventCreateInfo& operator=( VkEventCreateInfo const & rhs )
8486 {
8487 memcpy( this, &rhs, sizeof(EventCreateInfo) );
8488 return *this;
8489 }
8490
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008491 EventCreateInfo& setPNext( const void* pNext_ )
8492 {
8493 pNext = pNext_;
8494 return *this;
8495 }
8496
8497 EventCreateInfo& setFlags( EventCreateFlags flags_ )
8498 {
8499 flags = flags_;
8500 return *this;
8501 }
8502
8503 operator const VkEventCreateInfo&() const
8504 {
8505 return *reinterpret_cast<const VkEventCreateInfo*>(this);
8506 }
8507
8508 bool operator==( EventCreateInfo const& rhs ) const
8509 {
8510 return ( sType == rhs.sType )
8511 && ( pNext == rhs.pNext )
8512 && ( flags == rhs.flags );
8513 }
8514
8515 bool operator!=( EventCreateInfo const& rhs ) const
8516 {
8517 return !operator==( rhs );
8518 }
8519
8520 private:
8521 StructureType sType;
8522
8523 public:
8524 const void* pNext;
8525 EventCreateFlags flags;
8526 };
8527 static_assert( sizeof( EventCreateInfo ) == sizeof( VkEventCreateInfo ), "struct and wrapper have different size!" );
8528
8529 struct SemaphoreCreateInfo
8530 {
8531 SemaphoreCreateInfo( SemaphoreCreateFlags flags_ = SemaphoreCreateFlags() )
8532 : sType( StructureType::eSemaphoreCreateInfo )
8533 , pNext( nullptr )
8534 , flags( flags_ )
8535 {
8536 }
8537
8538 SemaphoreCreateInfo( VkSemaphoreCreateInfo const & rhs )
8539 {
8540 memcpy( this, &rhs, sizeof(SemaphoreCreateInfo) );
8541 }
8542
8543 SemaphoreCreateInfo& operator=( VkSemaphoreCreateInfo const & rhs )
8544 {
8545 memcpy( this, &rhs, sizeof(SemaphoreCreateInfo) );
8546 return *this;
8547 }
8548
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008549 SemaphoreCreateInfo& setPNext( const void* pNext_ )
8550 {
8551 pNext = pNext_;
8552 return *this;
8553 }
8554
8555 SemaphoreCreateInfo& setFlags( SemaphoreCreateFlags flags_ )
8556 {
8557 flags = flags_;
8558 return *this;
8559 }
8560
8561 operator const VkSemaphoreCreateInfo&() const
8562 {
8563 return *reinterpret_cast<const VkSemaphoreCreateInfo*>(this);
8564 }
8565
8566 bool operator==( SemaphoreCreateInfo const& rhs ) const
8567 {
8568 return ( sType == rhs.sType )
8569 && ( pNext == rhs.pNext )
8570 && ( flags == rhs.flags );
8571 }
8572
8573 bool operator!=( SemaphoreCreateInfo const& rhs ) const
8574 {
8575 return !operator==( rhs );
8576 }
8577
8578 private:
8579 StructureType sType;
8580
8581 public:
8582 const void* pNext;
8583 SemaphoreCreateFlags flags;
8584 };
8585 static_assert( sizeof( SemaphoreCreateInfo ) == sizeof( VkSemaphoreCreateInfo ), "struct and wrapper have different size!" );
8586
8587 struct FramebufferCreateInfo
8588 {
8589 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 )
8590 : sType( StructureType::eFramebufferCreateInfo )
8591 , pNext( nullptr )
8592 , flags( flags_ )
8593 , renderPass( renderPass_ )
8594 , attachmentCount( attachmentCount_ )
8595 , pAttachments( pAttachments_ )
8596 , width( width_ )
8597 , height( height_ )
8598 , layers( layers_ )
8599 {
8600 }
8601
8602 FramebufferCreateInfo( VkFramebufferCreateInfo const & rhs )
8603 {
8604 memcpy( this, &rhs, sizeof(FramebufferCreateInfo) );
8605 }
8606
8607 FramebufferCreateInfo& operator=( VkFramebufferCreateInfo const & rhs )
8608 {
8609 memcpy( this, &rhs, sizeof(FramebufferCreateInfo) );
8610 return *this;
8611 }
8612
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008613 FramebufferCreateInfo& setPNext( const void* pNext_ )
8614 {
8615 pNext = pNext_;
8616 return *this;
8617 }
8618
8619 FramebufferCreateInfo& setFlags( FramebufferCreateFlags flags_ )
8620 {
8621 flags = flags_;
8622 return *this;
8623 }
8624
8625 FramebufferCreateInfo& setRenderPass( RenderPass renderPass_ )
8626 {
8627 renderPass = renderPass_;
8628 return *this;
8629 }
8630
8631 FramebufferCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
8632 {
8633 attachmentCount = attachmentCount_;
8634 return *this;
8635 }
8636
8637 FramebufferCreateInfo& setPAttachments( const ImageView* pAttachments_ )
8638 {
8639 pAttachments = pAttachments_;
8640 return *this;
8641 }
8642
8643 FramebufferCreateInfo& setWidth( uint32_t width_ )
8644 {
8645 width = width_;
8646 return *this;
8647 }
8648
8649 FramebufferCreateInfo& setHeight( uint32_t height_ )
8650 {
8651 height = height_;
8652 return *this;
8653 }
8654
8655 FramebufferCreateInfo& setLayers( uint32_t layers_ )
8656 {
8657 layers = layers_;
8658 return *this;
8659 }
8660
8661 operator const VkFramebufferCreateInfo&() const
8662 {
8663 return *reinterpret_cast<const VkFramebufferCreateInfo*>(this);
8664 }
8665
8666 bool operator==( FramebufferCreateInfo const& rhs ) const
8667 {
8668 return ( sType == rhs.sType )
8669 && ( pNext == rhs.pNext )
8670 && ( flags == rhs.flags )
8671 && ( renderPass == rhs.renderPass )
8672 && ( attachmentCount == rhs.attachmentCount )
8673 && ( pAttachments == rhs.pAttachments )
8674 && ( width == rhs.width )
8675 && ( height == rhs.height )
8676 && ( layers == rhs.layers );
8677 }
8678
8679 bool operator!=( FramebufferCreateInfo const& rhs ) const
8680 {
8681 return !operator==( rhs );
8682 }
8683
8684 private:
8685 StructureType sType;
8686
8687 public:
8688 const void* pNext;
8689 FramebufferCreateFlags flags;
8690 RenderPass renderPass;
8691 uint32_t attachmentCount;
8692 const ImageView* pAttachments;
8693 uint32_t width;
8694 uint32_t height;
8695 uint32_t layers;
8696 };
8697 static_assert( sizeof( FramebufferCreateInfo ) == sizeof( VkFramebufferCreateInfo ), "struct and wrapper have different size!" );
8698
8699 struct DisplayModeCreateInfoKHR
8700 {
8701 DisplayModeCreateInfoKHR( DisplayModeCreateFlagsKHR flags_ = DisplayModeCreateFlagsKHR(), DisplayModeParametersKHR parameters_ = DisplayModeParametersKHR() )
8702 : sType( StructureType::eDisplayModeCreateInfoKHR )
8703 , pNext( nullptr )
8704 , flags( flags_ )
8705 , parameters( parameters_ )
8706 {
8707 }
8708
8709 DisplayModeCreateInfoKHR( VkDisplayModeCreateInfoKHR const & rhs )
8710 {
8711 memcpy( this, &rhs, sizeof(DisplayModeCreateInfoKHR) );
8712 }
8713
8714 DisplayModeCreateInfoKHR& operator=( VkDisplayModeCreateInfoKHR const & rhs )
8715 {
8716 memcpy( this, &rhs, sizeof(DisplayModeCreateInfoKHR) );
8717 return *this;
8718 }
8719
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008720 DisplayModeCreateInfoKHR& setPNext( const void* pNext_ )
8721 {
8722 pNext = pNext_;
8723 return *this;
8724 }
8725
8726 DisplayModeCreateInfoKHR& setFlags( DisplayModeCreateFlagsKHR flags_ )
8727 {
8728 flags = flags_;
8729 return *this;
8730 }
8731
8732 DisplayModeCreateInfoKHR& setParameters( DisplayModeParametersKHR parameters_ )
8733 {
8734 parameters = parameters_;
8735 return *this;
8736 }
8737
8738 operator const VkDisplayModeCreateInfoKHR&() const
8739 {
8740 return *reinterpret_cast<const VkDisplayModeCreateInfoKHR*>(this);
8741 }
8742
8743 bool operator==( DisplayModeCreateInfoKHR const& rhs ) const
8744 {
8745 return ( sType == rhs.sType )
8746 && ( pNext == rhs.pNext )
8747 && ( flags == rhs.flags )
8748 && ( parameters == rhs.parameters );
8749 }
8750
8751 bool operator!=( DisplayModeCreateInfoKHR const& rhs ) const
8752 {
8753 return !operator==( rhs );
8754 }
8755
8756 private:
8757 StructureType sType;
8758
8759 public:
8760 const void* pNext;
8761 DisplayModeCreateFlagsKHR flags;
8762 DisplayModeParametersKHR parameters;
8763 };
8764 static_assert( sizeof( DisplayModeCreateInfoKHR ) == sizeof( VkDisplayModeCreateInfoKHR ), "struct and wrapper have different size!" );
8765
8766 struct DisplayPresentInfoKHR
8767 {
8768 DisplayPresentInfoKHR( Rect2D srcRect_ = Rect2D(), Rect2D dstRect_ = Rect2D(), Bool32 persistent_ = 0 )
8769 : sType( StructureType::eDisplayPresentInfoKHR )
8770 , pNext( nullptr )
8771 , srcRect( srcRect_ )
8772 , dstRect( dstRect_ )
8773 , persistent( persistent_ )
8774 {
8775 }
8776
8777 DisplayPresentInfoKHR( VkDisplayPresentInfoKHR const & rhs )
8778 {
8779 memcpy( this, &rhs, sizeof(DisplayPresentInfoKHR) );
8780 }
8781
8782 DisplayPresentInfoKHR& operator=( VkDisplayPresentInfoKHR const & rhs )
8783 {
8784 memcpy( this, &rhs, sizeof(DisplayPresentInfoKHR) );
8785 return *this;
8786 }
8787
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008788 DisplayPresentInfoKHR& setPNext( const void* pNext_ )
8789 {
8790 pNext = pNext_;
8791 return *this;
8792 }
8793
8794 DisplayPresentInfoKHR& setSrcRect( Rect2D srcRect_ )
8795 {
8796 srcRect = srcRect_;
8797 return *this;
8798 }
8799
8800 DisplayPresentInfoKHR& setDstRect( Rect2D dstRect_ )
8801 {
8802 dstRect = dstRect_;
8803 return *this;
8804 }
8805
8806 DisplayPresentInfoKHR& setPersistent( Bool32 persistent_ )
8807 {
8808 persistent = persistent_;
8809 return *this;
8810 }
8811
8812 operator const VkDisplayPresentInfoKHR&() const
8813 {
8814 return *reinterpret_cast<const VkDisplayPresentInfoKHR*>(this);
8815 }
8816
8817 bool operator==( DisplayPresentInfoKHR const& rhs ) const
8818 {
8819 return ( sType == rhs.sType )
8820 && ( pNext == rhs.pNext )
8821 && ( srcRect == rhs.srcRect )
8822 && ( dstRect == rhs.dstRect )
8823 && ( persistent == rhs.persistent );
8824 }
8825
8826 bool operator!=( DisplayPresentInfoKHR const& rhs ) const
8827 {
8828 return !operator==( rhs );
8829 }
8830
8831 private:
8832 StructureType sType;
8833
8834 public:
8835 const void* pNext;
8836 Rect2D srcRect;
8837 Rect2D dstRect;
8838 Bool32 persistent;
8839 };
8840 static_assert( sizeof( DisplayPresentInfoKHR ) == sizeof( VkDisplayPresentInfoKHR ), "struct and wrapper have different size!" );
8841
8842#ifdef VK_USE_PLATFORM_ANDROID_KHR
8843 struct AndroidSurfaceCreateInfoKHR
8844 {
8845 AndroidSurfaceCreateInfoKHR( AndroidSurfaceCreateFlagsKHR flags_ = AndroidSurfaceCreateFlagsKHR(), ANativeWindow* window_ = nullptr )
8846 : sType( StructureType::eAndroidSurfaceCreateInfoKHR )
8847 , pNext( nullptr )
8848 , flags( flags_ )
8849 , window( window_ )
8850 {
8851 }
8852
8853 AndroidSurfaceCreateInfoKHR( VkAndroidSurfaceCreateInfoKHR const & rhs )
8854 {
8855 memcpy( this, &rhs, sizeof(AndroidSurfaceCreateInfoKHR) );
8856 }
8857
8858 AndroidSurfaceCreateInfoKHR& operator=( VkAndroidSurfaceCreateInfoKHR const & rhs )
8859 {
8860 memcpy( this, &rhs, sizeof(AndroidSurfaceCreateInfoKHR) );
8861 return *this;
8862 }
8863
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008864 AndroidSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
8865 {
8866 pNext = pNext_;
8867 return *this;
8868 }
8869
8870 AndroidSurfaceCreateInfoKHR& setFlags( AndroidSurfaceCreateFlagsKHR flags_ )
8871 {
8872 flags = flags_;
8873 return *this;
8874 }
8875
8876 AndroidSurfaceCreateInfoKHR& setWindow( ANativeWindow* window_ )
8877 {
8878 window = window_;
8879 return *this;
8880 }
8881
8882 operator const VkAndroidSurfaceCreateInfoKHR&() const
8883 {
8884 return *reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>(this);
8885 }
8886
8887 bool operator==( AndroidSurfaceCreateInfoKHR const& rhs ) const
8888 {
8889 return ( sType == rhs.sType )
8890 && ( pNext == rhs.pNext )
8891 && ( flags == rhs.flags )
8892 && ( window == rhs.window );
8893 }
8894
8895 bool operator!=( AndroidSurfaceCreateInfoKHR const& rhs ) const
8896 {
8897 return !operator==( rhs );
8898 }
8899
8900 private:
8901 StructureType sType;
8902
8903 public:
8904 const void* pNext;
8905 AndroidSurfaceCreateFlagsKHR flags;
8906 ANativeWindow* window;
8907 };
8908 static_assert( sizeof( AndroidSurfaceCreateInfoKHR ) == sizeof( VkAndroidSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
8909#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
8910
8911#ifdef VK_USE_PLATFORM_MIR_KHR
8912 struct MirSurfaceCreateInfoKHR
8913 {
8914 MirSurfaceCreateInfoKHR( MirSurfaceCreateFlagsKHR flags_ = MirSurfaceCreateFlagsKHR(), MirConnection* connection_ = nullptr, MirSurface* mirSurface_ = nullptr )
8915 : sType( StructureType::eMirSurfaceCreateInfoKHR )
8916 , pNext( nullptr )
8917 , flags( flags_ )
8918 , connection( connection_ )
8919 , mirSurface( mirSurface_ )
8920 {
8921 }
8922
8923 MirSurfaceCreateInfoKHR( VkMirSurfaceCreateInfoKHR const & rhs )
8924 {
8925 memcpy( this, &rhs, sizeof(MirSurfaceCreateInfoKHR) );
8926 }
8927
8928 MirSurfaceCreateInfoKHR& operator=( VkMirSurfaceCreateInfoKHR const & rhs )
8929 {
8930 memcpy( this, &rhs, sizeof(MirSurfaceCreateInfoKHR) );
8931 return *this;
8932 }
8933
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008934 MirSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
8935 {
8936 pNext = pNext_;
8937 return *this;
8938 }
8939
8940 MirSurfaceCreateInfoKHR& setFlags( MirSurfaceCreateFlagsKHR flags_ )
8941 {
8942 flags = flags_;
8943 return *this;
8944 }
8945
8946 MirSurfaceCreateInfoKHR& setConnection( MirConnection* connection_ )
8947 {
8948 connection = connection_;
8949 return *this;
8950 }
8951
8952 MirSurfaceCreateInfoKHR& setMirSurface( MirSurface* mirSurface_ )
8953 {
8954 mirSurface = mirSurface_;
8955 return *this;
8956 }
8957
8958 operator const VkMirSurfaceCreateInfoKHR&() const
8959 {
8960 return *reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>(this);
8961 }
8962
8963 bool operator==( MirSurfaceCreateInfoKHR const& rhs ) const
8964 {
8965 return ( sType == rhs.sType )
8966 && ( pNext == rhs.pNext )
8967 && ( flags == rhs.flags )
8968 && ( connection == rhs.connection )
8969 && ( mirSurface == rhs.mirSurface );
8970 }
8971
8972 bool operator!=( MirSurfaceCreateInfoKHR const& rhs ) const
8973 {
8974 return !operator==( rhs );
8975 }
8976
8977 private:
8978 StructureType sType;
8979
8980 public:
8981 const void* pNext;
8982 MirSurfaceCreateFlagsKHR flags;
8983 MirConnection* connection;
8984 MirSurface* mirSurface;
8985 };
8986 static_assert( sizeof( MirSurfaceCreateInfoKHR ) == sizeof( VkMirSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
8987#endif /*VK_USE_PLATFORM_MIR_KHR*/
8988
Mark Young39389872017-01-19 21:10:49 -07008989#ifdef VK_USE_PLATFORM_VI_NN
8990 struct ViSurfaceCreateInfoNN
8991 {
8992 ViSurfaceCreateInfoNN( ViSurfaceCreateFlagsNN flags_ = ViSurfaceCreateFlagsNN(), void* window_ = nullptr )
8993 : sType( StructureType::eViSurfaceCreateInfoNN )
8994 , pNext( nullptr )
8995 , flags( flags_ )
8996 , window( window_ )
8997 {
8998 }
8999
9000 ViSurfaceCreateInfoNN( VkViSurfaceCreateInfoNN const & rhs )
9001 {
9002 memcpy( this, &rhs, sizeof(ViSurfaceCreateInfoNN) );
9003 }
9004
9005 ViSurfaceCreateInfoNN& operator=( VkViSurfaceCreateInfoNN const & rhs )
9006 {
9007 memcpy( this, &rhs, sizeof(ViSurfaceCreateInfoNN) );
9008 return *this;
9009 }
9010
Mark Young39389872017-01-19 21:10:49 -07009011 ViSurfaceCreateInfoNN& setPNext( const void* pNext_ )
9012 {
9013 pNext = pNext_;
9014 return *this;
9015 }
9016
9017 ViSurfaceCreateInfoNN& setFlags( ViSurfaceCreateFlagsNN flags_ )
9018 {
9019 flags = flags_;
9020 return *this;
9021 }
9022
9023 ViSurfaceCreateInfoNN& setWindow( void* window_ )
9024 {
9025 window = window_;
9026 return *this;
9027 }
9028
9029 operator const VkViSurfaceCreateInfoNN&() const
9030 {
9031 return *reinterpret_cast<const VkViSurfaceCreateInfoNN*>(this);
9032 }
9033
9034 bool operator==( ViSurfaceCreateInfoNN const& rhs ) const
9035 {
9036 return ( sType == rhs.sType )
9037 && ( pNext == rhs.pNext )
9038 && ( flags == rhs.flags )
9039 && ( window == rhs.window );
9040 }
9041
9042 bool operator!=( ViSurfaceCreateInfoNN const& rhs ) const
9043 {
9044 return !operator==( rhs );
9045 }
9046
9047 private:
9048 StructureType sType;
9049
9050 public:
9051 const void* pNext;
9052 ViSurfaceCreateFlagsNN flags;
9053 void* window;
9054 };
9055 static_assert( sizeof( ViSurfaceCreateInfoNN ) == sizeof( VkViSurfaceCreateInfoNN ), "struct and wrapper have different size!" );
9056#endif /*VK_USE_PLATFORM_VI_NN*/
9057
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009058#ifdef VK_USE_PLATFORM_WAYLAND_KHR
9059 struct WaylandSurfaceCreateInfoKHR
9060 {
9061 WaylandSurfaceCreateInfoKHR( WaylandSurfaceCreateFlagsKHR flags_ = WaylandSurfaceCreateFlagsKHR(), struct wl_display* display_ = nullptr, struct wl_surface* surface_ = nullptr )
9062 : sType( StructureType::eWaylandSurfaceCreateInfoKHR )
9063 , pNext( nullptr )
9064 , flags( flags_ )
9065 , display( display_ )
9066 , surface( surface_ )
9067 {
9068 }
9069
9070 WaylandSurfaceCreateInfoKHR( VkWaylandSurfaceCreateInfoKHR const & rhs )
9071 {
9072 memcpy( this, &rhs, sizeof(WaylandSurfaceCreateInfoKHR) );
9073 }
9074
9075 WaylandSurfaceCreateInfoKHR& operator=( VkWaylandSurfaceCreateInfoKHR const & rhs )
9076 {
9077 memcpy( this, &rhs, sizeof(WaylandSurfaceCreateInfoKHR) );
9078 return *this;
9079 }
9080
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009081 WaylandSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9082 {
9083 pNext = pNext_;
9084 return *this;
9085 }
9086
9087 WaylandSurfaceCreateInfoKHR& setFlags( WaylandSurfaceCreateFlagsKHR flags_ )
9088 {
9089 flags = flags_;
9090 return *this;
9091 }
9092
9093 WaylandSurfaceCreateInfoKHR& setDisplay( struct wl_display* display_ )
9094 {
9095 display = display_;
9096 return *this;
9097 }
9098
9099 WaylandSurfaceCreateInfoKHR& setSurface( struct wl_surface* surface_ )
9100 {
9101 surface = surface_;
9102 return *this;
9103 }
9104
9105 operator const VkWaylandSurfaceCreateInfoKHR&() const
9106 {
9107 return *reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>(this);
9108 }
9109
9110 bool operator==( WaylandSurfaceCreateInfoKHR const& rhs ) const
9111 {
9112 return ( sType == rhs.sType )
9113 && ( pNext == rhs.pNext )
9114 && ( flags == rhs.flags )
9115 && ( display == rhs.display )
9116 && ( surface == rhs.surface );
9117 }
9118
9119 bool operator!=( WaylandSurfaceCreateInfoKHR const& rhs ) const
9120 {
9121 return !operator==( rhs );
9122 }
9123
9124 private:
9125 StructureType sType;
9126
9127 public:
9128 const void* pNext;
9129 WaylandSurfaceCreateFlagsKHR flags;
9130 struct wl_display* display;
9131 struct wl_surface* surface;
9132 };
9133 static_assert( sizeof( WaylandSurfaceCreateInfoKHR ) == sizeof( VkWaylandSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9134#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
9135
9136#ifdef VK_USE_PLATFORM_WIN32_KHR
9137 struct Win32SurfaceCreateInfoKHR
9138 {
9139 Win32SurfaceCreateInfoKHR( Win32SurfaceCreateFlagsKHR flags_ = Win32SurfaceCreateFlagsKHR(), HINSTANCE hinstance_ = 0, HWND hwnd_ = 0 )
9140 : sType( StructureType::eWin32SurfaceCreateInfoKHR )
9141 , pNext( nullptr )
9142 , flags( flags_ )
9143 , hinstance( hinstance_ )
9144 , hwnd( hwnd_ )
9145 {
9146 }
9147
9148 Win32SurfaceCreateInfoKHR( VkWin32SurfaceCreateInfoKHR const & rhs )
9149 {
9150 memcpy( this, &rhs, sizeof(Win32SurfaceCreateInfoKHR) );
9151 }
9152
9153 Win32SurfaceCreateInfoKHR& operator=( VkWin32SurfaceCreateInfoKHR const & rhs )
9154 {
9155 memcpy( this, &rhs, sizeof(Win32SurfaceCreateInfoKHR) );
9156 return *this;
9157 }
9158
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009159 Win32SurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9160 {
9161 pNext = pNext_;
9162 return *this;
9163 }
9164
9165 Win32SurfaceCreateInfoKHR& setFlags( Win32SurfaceCreateFlagsKHR flags_ )
9166 {
9167 flags = flags_;
9168 return *this;
9169 }
9170
9171 Win32SurfaceCreateInfoKHR& setHinstance( HINSTANCE hinstance_ )
9172 {
9173 hinstance = hinstance_;
9174 return *this;
9175 }
9176
9177 Win32SurfaceCreateInfoKHR& setHwnd( HWND hwnd_ )
9178 {
9179 hwnd = hwnd_;
9180 return *this;
9181 }
9182
9183 operator const VkWin32SurfaceCreateInfoKHR&() const
9184 {
9185 return *reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>(this);
9186 }
9187
9188 bool operator==( Win32SurfaceCreateInfoKHR const& rhs ) const
9189 {
9190 return ( sType == rhs.sType )
9191 && ( pNext == rhs.pNext )
9192 && ( flags == rhs.flags )
9193 && ( hinstance == rhs.hinstance )
9194 && ( hwnd == rhs.hwnd );
9195 }
9196
9197 bool operator!=( Win32SurfaceCreateInfoKHR const& rhs ) const
9198 {
9199 return !operator==( rhs );
9200 }
9201
9202 private:
9203 StructureType sType;
9204
9205 public:
9206 const void* pNext;
9207 Win32SurfaceCreateFlagsKHR flags;
9208 HINSTANCE hinstance;
9209 HWND hwnd;
9210 };
9211 static_assert( sizeof( Win32SurfaceCreateInfoKHR ) == sizeof( VkWin32SurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9212#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9213
9214#ifdef VK_USE_PLATFORM_XLIB_KHR
9215 struct XlibSurfaceCreateInfoKHR
9216 {
9217 XlibSurfaceCreateInfoKHR( XlibSurfaceCreateFlagsKHR flags_ = XlibSurfaceCreateFlagsKHR(), Display* dpy_ = nullptr, Window window_ = 0 )
9218 : sType( StructureType::eXlibSurfaceCreateInfoKHR )
9219 , pNext( nullptr )
9220 , flags( flags_ )
9221 , dpy( dpy_ )
9222 , window( window_ )
9223 {
9224 }
9225
9226 XlibSurfaceCreateInfoKHR( VkXlibSurfaceCreateInfoKHR const & rhs )
9227 {
9228 memcpy( this, &rhs, sizeof(XlibSurfaceCreateInfoKHR) );
9229 }
9230
9231 XlibSurfaceCreateInfoKHR& operator=( VkXlibSurfaceCreateInfoKHR const & rhs )
9232 {
9233 memcpy( this, &rhs, sizeof(XlibSurfaceCreateInfoKHR) );
9234 return *this;
9235 }
9236
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009237 XlibSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9238 {
9239 pNext = pNext_;
9240 return *this;
9241 }
9242
9243 XlibSurfaceCreateInfoKHR& setFlags( XlibSurfaceCreateFlagsKHR flags_ )
9244 {
9245 flags = flags_;
9246 return *this;
9247 }
9248
9249 XlibSurfaceCreateInfoKHR& setDpy( Display* dpy_ )
9250 {
9251 dpy = dpy_;
9252 return *this;
9253 }
9254
9255 XlibSurfaceCreateInfoKHR& setWindow( Window window_ )
9256 {
9257 window = window_;
9258 return *this;
9259 }
9260
9261 operator const VkXlibSurfaceCreateInfoKHR&() const
9262 {
9263 return *reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>(this);
9264 }
9265
9266 bool operator==( XlibSurfaceCreateInfoKHR const& rhs ) const
9267 {
9268 return ( sType == rhs.sType )
9269 && ( pNext == rhs.pNext )
9270 && ( flags == rhs.flags )
9271 && ( dpy == rhs.dpy )
9272 && ( window == rhs.window );
9273 }
9274
9275 bool operator!=( XlibSurfaceCreateInfoKHR const& rhs ) const
9276 {
9277 return !operator==( rhs );
9278 }
9279
9280 private:
9281 StructureType sType;
9282
9283 public:
9284 const void* pNext;
9285 XlibSurfaceCreateFlagsKHR flags;
9286 Display* dpy;
9287 Window window;
9288 };
9289 static_assert( sizeof( XlibSurfaceCreateInfoKHR ) == sizeof( VkXlibSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9290#endif /*VK_USE_PLATFORM_XLIB_KHR*/
9291
9292#ifdef VK_USE_PLATFORM_XCB_KHR
9293 struct XcbSurfaceCreateInfoKHR
9294 {
9295 XcbSurfaceCreateInfoKHR( XcbSurfaceCreateFlagsKHR flags_ = XcbSurfaceCreateFlagsKHR(), xcb_connection_t* connection_ = nullptr, xcb_window_t window_ = 0 )
9296 : sType( StructureType::eXcbSurfaceCreateInfoKHR )
9297 , pNext( nullptr )
9298 , flags( flags_ )
9299 , connection( connection_ )
9300 , window( window_ )
9301 {
9302 }
9303
9304 XcbSurfaceCreateInfoKHR( VkXcbSurfaceCreateInfoKHR const & rhs )
9305 {
9306 memcpy( this, &rhs, sizeof(XcbSurfaceCreateInfoKHR) );
9307 }
9308
9309 XcbSurfaceCreateInfoKHR& operator=( VkXcbSurfaceCreateInfoKHR const & rhs )
9310 {
9311 memcpy( this, &rhs, sizeof(XcbSurfaceCreateInfoKHR) );
9312 return *this;
9313 }
9314
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009315 XcbSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9316 {
9317 pNext = pNext_;
9318 return *this;
9319 }
9320
9321 XcbSurfaceCreateInfoKHR& setFlags( XcbSurfaceCreateFlagsKHR flags_ )
9322 {
9323 flags = flags_;
9324 return *this;
9325 }
9326
9327 XcbSurfaceCreateInfoKHR& setConnection( xcb_connection_t* connection_ )
9328 {
9329 connection = connection_;
9330 return *this;
9331 }
9332
9333 XcbSurfaceCreateInfoKHR& setWindow( xcb_window_t window_ )
9334 {
9335 window = window_;
9336 return *this;
9337 }
9338
9339 operator const VkXcbSurfaceCreateInfoKHR&() const
9340 {
9341 return *reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>(this);
9342 }
9343
9344 bool operator==( XcbSurfaceCreateInfoKHR const& rhs ) const
9345 {
9346 return ( sType == rhs.sType )
9347 && ( pNext == rhs.pNext )
9348 && ( flags == rhs.flags )
9349 && ( connection == rhs.connection )
9350 && ( window == rhs.window );
9351 }
9352
9353 bool operator!=( XcbSurfaceCreateInfoKHR const& rhs ) const
9354 {
9355 return !operator==( rhs );
9356 }
9357
9358 private:
9359 StructureType sType;
9360
9361 public:
9362 const void* pNext;
9363 XcbSurfaceCreateFlagsKHR flags;
9364 xcb_connection_t* connection;
9365 xcb_window_t window;
9366 };
9367 static_assert( sizeof( XcbSurfaceCreateInfoKHR ) == sizeof( VkXcbSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9368#endif /*VK_USE_PLATFORM_XCB_KHR*/
9369
9370 struct DebugMarkerMarkerInfoEXT
9371 {
9372 DebugMarkerMarkerInfoEXT( const char* pMarkerName_ = nullptr, std::array<float,4> const& color_ = { { 0, 0, 0, 0 } } )
9373 : sType( StructureType::eDebugMarkerMarkerInfoEXT )
9374 , pNext( nullptr )
9375 , pMarkerName( pMarkerName_ )
9376 {
9377 memcpy( &color, color_.data(), 4 * sizeof( float ) );
9378 }
9379
9380 DebugMarkerMarkerInfoEXT( VkDebugMarkerMarkerInfoEXT const & rhs )
9381 {
9382 memcpy( this, &rhs, sizeof(DebugMarkerMarkerInfoEXT) );
9383 }
9384
9385 DebugMarkerMarkerInfoEXT& operator=( VkDebugMarkerMarkerInfoEXT const & rhs )
9386 {
9387 memcpy( this, &rhs, sizeof(DebugMarkerMarkerInfoEXT) );
9388 return *this;
9389 }
9390
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009391 DebugMarkerMarkerInfoEXT& setPNext( const void* pNext_ )
9392 {
9393 pNext = pNext_;
9394 return *this;
9395 }
9396
9397 DebugMarkerMarkerInfoEXT& setPMarkerName( const char* pMarkerName_ )
9398 {
9399 pMarkerName = pMarkerName_;
9400 return *this;
9401 }
9402
9403 DebugMarkerMarkerInfoEXT& setColor( std::array<float,4> color_ )
9404 {
9405 memcpy( &color, color_.data(), 4 * sizeof( float ) );
9406 return *this;
9407 }
9408
9409 operator const VkDebugMarkerMarkerInfoEXT&() const
9410 {
9411 return *reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>(this);
9412 }
9413
9414 bool operator==( DebugMarkerMarkerInfoEXT const& rhs ) const
9415 {
9416 return ( sType == rhs.sType )
9417 && ( pNext == rhs.pNext )
9418 && ( pMarkerName == rhs.pMarkerName )
9419 && ( memcmp( color, rhs.color, 4 * sizeof( float ) ) == 0 );
9420 }
9421
9422 bool operator!=( DebugMarkerMarkerInfoEXT const& rhs ) const
9423 {
9424 return !operator==( rhs );
9425 }
9426
9427 private:
9428 StructureType sType;
9429
9430 public:
9431 const void* pNext;
9432 const char* pMarkerName;
9433 float color[4];
9434 };
9435 static_assert( sizeof( DebugMarkerMarkerInfoEXT ) == sizeof( VkDebugMarkerMarkerInfoEXT ), "struct and wrapper have different size!" );
9436
9437 struct DedicatedAllocationImageCreateInfoNV
9438 {
9439 DedicatedAllocationImageCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
9440 : sType( StructureType::eDedicatedAllocationImageCreateInfoNV )
9441 , pNext( nullptr )
9442 , dedicatedAllocation( dedicatedAllocation_ )
9443 {
9444 }
9445
9446 DedicatedAllocationImageCreateInfoNV( VkDedicatedAllocationImageCreateInfoNV const & rhs )
9447 {
9448 memcpy( this, &rhs, sizeof(DedicatedAllocationImageCreateInfoNV) );
9449 }
9450
9451 DedicatedAllocationImageCreateInfoNV& operator=( VkDedicatedAllocationImageCreateInfoNV const & rhs )
9452 {
9453 memcpy( this, &rhs, sizeof(DedicatedAllocationImageCreateInfoNV) );
9454 return *this;
9455 }
9456
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009457 DedicatedAllocationImageCreateInfoNV& setPNext( const void* pNext_ )
9458 {
9459 pNext = pNext_;
9460 return *this;
9461 }
9462
9463 DedicatedAllocationImageCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
9464 {
9465 dedicatedAllocation = dedicatedAllocation_;
9466 return *this;
9467 }
9468
9469 operator const VkDedicatedAllocationImageCreateInfoNV&() const
9470 {
9471 return *reinterpret_cast<const VkDedicatedAllocationImageCreateInfoNV*>(this);
9472 }
9473
9474 bool operator==( DedicatedAllocationImageCreateInfoNV const& rhs ) const
9475 {
9476 return ( sType == rhs.sType )
9477 && ( pNext == rhs.pNext )
9478 && ( dedicatedAllocation == rhs.dedicatedAllocation );
9479 }
9480
9481 bool operator!=( DedicatedAllocationImageCreateInfoNV const& rhs ) const
9482 {
9483 return !operator==( rhs );
9484 }
9485
9486 private:
9487 StructureType sType;
9488
9489 public:
9490 const void* pNext;
9491 Bool32 dedicatedAllocation;
9492 };
9493 static_assert( sizeof( DedicatedAllocationImageCreateInfoNV ) == sizeof( VkDedicatedAllocationImageCreateInfoNV ), "struct and wrapper have different size!" );
9494
9495 struct DedicatedAllocationBufferCreateInfoNV
9496 {
9497 DedicatedAllocationBufferCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
9498 : sType( StructureType::eDedicatedAllocationBufferCreateInfoNV )
9499 , pNext( nullptr )
9500 , dedicatedAllocation( dedicatedAllocation_ )
9501 {
9502 }
9503
9504 DedicatedAllocationBufferCreateInfoNV( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
9505 {
9506 memcpy( this, &rhs, sizeof(DedicatedAllocationBufferCreateInfoNV) );
9507 }
9508
9509 DedicatedAllocationBufferCreateInfoNV& operator=( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
9510 {
9511 memcpy( this, &rhs, sizeof(DedicatedAllocationBufferCreateInfoNV) );
9512 return *this;
9513 }
9514
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009515 DedicatedAllocationBufferCreateInfoNV& setPNext( const void* pNext_ )
9516 {
9517 pNext = pNext_;
9518 return *this;
9519 }
9520
9521 DedicatedAllocationBufferCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
9522 {
9523 dedicatedAllocation = dedicatedAllocation_;
9524 return *this;
9525 }
9526
9527 operator const VkDedicatedAllocationBufferCreateInfoNV&() const
9528 {
9529 return *reinterpret_cast<const VkDedicatedAllocationBufferCreateInfoNV*>(this);
9530 }
9531
9532 bool operator==( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
9533 {
9534 return ( sType == rhs.sType )
9535 && ( pNext == rhs.pNext )
9536 && ( dedicatedAllocation == rhs.dedicatedAllocation );
9537 }
9538
9539 bool operator!=( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
9540 {
9541 return !operator==( rhs );
9542 }
9543
9544 private:
9545 StructureType sType;
9546
9547 public:
9548 const void* pNext;
9549 Bool32 dedicatedAllocation;
9550 };
9551 static_assert( sizeof( DedicatedAllocationBufferCreateInfoNV ) == sizeof( VkDedicatedAllocationBufferCreateInfoNV ), "struct and wrapper have different size!" );
9552
9553 struct DedicatedAllocationMemoryAllocateInfoNV
9554 {
9555 DedicatedAllocationMemoryAllocateInfoNV( Image image_ = Image(), Buffer buffer_ = Buffer() )
9556 : sType( StructureType::eDedicatedAllocationMemoryAllocateInfoNV )
9557 , pNext( nullptr )
9558 , image( image_ )
9559 , buffer( buffer_ )
9560 {
9561 }
9562
9563 DedicatedAllocationMemoryAllocateInfoNV( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
9564 {
9565 memcpy( this, &rhs, sizeof(DedicatedAllocationMemoryAllocateInfoNV) );
9566 }
9567
9568 DedicatedAllocationMemoryAllocateInfoNV& operator=( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
9569 {
9570 memcpy( this, &rhs, sizeof(DedicatedAllocationMemoryAllocateInfoNV) );
9571 return *this;
9572 }
9573
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009574 DedicatedAllocationMemoryAllocateInfoNV& setPNext( const void* pNext_ )
9575 {
9576 pNext = pNext_;
9577 return *this;
9578 }
9579
9580 DedicatedAllocationMemoryAllocateInfoNV& setImage( Image image_ )
9581 {
9582 image = image_;
9583 return *this;
9584 }
9585
9586 DedicatedAllocationMemoryAllocateInfoNV& setBuffer( Buffer buffer_ )
9587 {
9588 buffer = buffer_;
9589 return *this;
9590 }
9591
9592 operator const VkDedicatedAllocationMemoryAllocateInfoNV&() const
9593 {
9594 return *reinterpret_cast<const VkDedicatedAllocationMemoryAllocateInfoNV*>(this);
9595 }
9596
9597 bool operator==( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
9598 {
9599 return ( sType == rhs.sType )
9600 && ( pNext == rhs.pNext )
9601 && ( image == rhs.image )
9602 && ( buffer == rhs.buffer );
9603 }
9604
9605 bool operator!=( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
9606 {
9607 return !operator==( rhs );
9608 }
9609
9610 private:
9611 StructureType sType;
9612
9613 public:
9614 const void* pNext;
9615 Image image;
9616 Buffer buffer;
9617 };
9618 static_assert( sizeof( DedicatedAllocationMemoryAllocateInfoNV ) == sizeof( VkDedicatedAllocationMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
9619
Lenny Komow6501c122016-08-31 15:03:49 -06009620#ifdef VK_USE_PLATFORM_WIN32_KHR
9621 struct ExportMemoryWin32HandleInfoNV
9622 {
9623 ExportMemoryWin32HandleInfoNV( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0 )
9624 : sType( StructureType::eExportMemoryWin32HandleInfoNV )
9625 , pNext( nullptr )
9626 , pAttributes( pAttributes_ )
9627 , dwAccess( dwAccess_ )
9628 {
9629 }
9630
9631 ExportMemoryWin32HandleInfoNV( VkExportMemoryWin32HandleInfoNV const & rhs )
9632 {
9633 memcpy( this, &rhs, sizeof(ExportMemoryWin32HandleInfoNV) );
9634 }
9635
9636 ExportMemoryWin32HandleInfoNV& operator=( VkExportMemoryWin32HandleInfoNV const & rhs )
9637 {
9638 memcpy( this, &rhs, sizeof(ExportMemoryWin32HandleInfoNV) );
9639 return *this;
9640 }
9641
Lenny Komow6501c122016-08-31 15:03:49 -06009642 ExportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
9643 {
9644 pNext = pNext_;
9645 return *this;
9646 }
9647
9648 ExportMemoryWin32HandleInfoNV& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
9649 {
9650 pAttributes = pAttributes_;
9651 return *this;
9652 }
9653
9654 ExportMemoryWin32HandleInfoNV& setDwAccess( DWORD dwAccess_ )
9655 {
9656 dwAccess = dwAccess_;
9657 return *this;
9658 }
9659
9660 operator const VkExportMemoryWin32HandleInfoNV&() const
9661 {
9662 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoNV*>(this);
9663 }
9664
9665 bool operator==( ExportMemoryWin32HandleInfoNV const& rhs ) const
9666 {
9667 return ( sType == rhs.sType )
9668 && ( pNext == rhs.pNext )
9669 && ( pAttributes == rhs.pAttributes )
9670 && ( dwAccess == rhs.dwAccess );
9671 }
9672
9673 bool operator!=( ExportMemoryWin32HandleInfoNV const& rhs ) const
9674 {
9675 return !operator==( rhs );
9676 }
9677
9678 private:
9679 StructureType sType;
9680
9681 public:
9682 const void* pNext;
9683 const SECURITY_ATTRIBUTES* pAttributes;
9684 DWORD dwAccess;
9685 };
9686 static_assert( sizeof( ExportMemoryWin32HandleInfoNV ) == sizeof( VkExportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
9687#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9688
9689#ifdef VK_USE_PLATFORM_WIN32_KHR
9690 struct Win32KeyedMutexAcquireReleaseInfoNV
9691 {
9692 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 )
9693 : sType( StructureType::eWin32KeyedMutexAcquireReleaseInfoNV )
9694 , pNext( nullptr )
9695 , acquireCount( acquireCount_ )
9696 , pAcquireSyncs( pAcquireSyncs_ )
9697 , pAcquireKeys( pAcquireKeys_ )
9698 , pAcquireTimeoutMilliseconds( pAcquireTimeoutMilliseconds_ )
9699 , releaseCount( releaseCount_ )
9700 , pReleaseSyncs( pReleaseSyncs_ )
9701 , pReleaseKeys( pReleaseKeys_ )
9702 {
9703 }
9704
9705 Win32KeyedMutexAcquireReleaseInfoNV( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
9706 {
9707 memcpy( this, &rhs, sizeof(Win32KeyedMutexAcquireReleaseInfoNV) );
9708 }
9709
9710 Win32KeyedMutexAcquireReleaseInfoNV& operator=( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
9711 {
9712 memcpy( this, &rhs, sizeof(Win32KeyedMutexAcquireReleaseInfoNV) );
9713 return *this;
9714 }
9715
Lenny Komow6501c122016-08-31 15:03:49 -06009716 Win32KeyedMutexAcquireReleaseInfoNV& setPNext( const void* pNext_ )
9717 {
9718 pNext = pNext_;
9719 return *this;
9720 }
9721
9722 Win32KeyedMutexAcquireReleaseInfoNV& setAcquireCount( uint32_t acquireCount_ )
9723 {
9724 acquireCount = acquireCount_;
9725 return *this;
9726 }
9727
9728 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
9729 {
9730 pAcquireSyncs = pAcquireSyncs_;
9731 return *this;
9732 }
9733
9734 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
9735 {
9736 pAcquireKeys = pAcquireKeys_;
9737 return *this;
9738 }
9739
9740 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireTimeoutMilliseconds( const uint32_t* pAcquireTimeoutMilliseconds_ )
9741 {
9742 pAcquireTimeoutMilliseconds = pAcquireTimeoutMilliseconds_;
9743 return *this;
9744 }
9745
9746 Win32KeyedMutexAcquireReleaseInfoNV& setReleaseCount( uint32_t releaseCount_ )
9747 {
9748 releaseCount = releaseCount_;
9749 return *this;
9750 }
9751
9752 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
9753 {
9754 pReleaseSyncs = pReleaseSyncs_;
9755 return *this;
9756 }
9757
9758 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
9759 {
9760 pReleaseKeys = pReleaseKeys_;
9761 return *this;
9762 }
9763
9764 operator const VkWin32KeyedMutexAcquireReleaseInfoNV&() const
9765 {
9766 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoNV*>(this);
9767 }
9768
9769 bool operator==( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
9770 {
9771 return ( sType == rhs.sType )
9772 && ( pNext == rhs.pNext )
9773 && ( acquireCount == rhs.acquireCount )
9774 && ( pAcquireSyncs == rhs.pAcquireSyncs )
9775 && ( pAcquireKeys == rhs.pAcquireKeys )
9776 && ( pAcquireTimeoutMilliseconds == rhs.pAcquireTimeoutMilliseconds )
9777 && ( releaseCount == rhs.releaseCount )
9778 && ( pReleaseSyncs == rhs.pReleaseSyncs )
9779 && ( pReleaseKeys == rhs.pReleaseKeys );
9780 }
9781
9782 bool operator!=( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
9783 {
9784 return !operator==( rhs );
9785 }
9786
9787 private:
9788 StructureType sType;
9789
9790 public:
9791 const void* pNext;
9792 uint32_t acquireCount;
9793 const DeviceMemory* pAcquireSyncs;
9794 const uint64_t* pAcquireKeys;
9795 const uint32_t* pAcquireTimeoutMilliseconds;
9796 uint32_t releaseCount;
9797 const DeviceMemory* pReleaseSyncs;
9798 const uint64_t* pReleaseKeys;
9799 };
9800 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoNV ), "struct and wrapper have different size!" );
9801#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9802
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009803 struct DeviceGeneratedCommandsFeaturesNVX
9804 {
9805 DeviceGeneratedCommandsFeaturesNVX( Bool32 computeBindingPointSupport_ = 0 )
9806 : sType( StructureType::eDeviceGeneratedCommandsFeaturesNVX )
9807 , pNext( nullptr )
9808 , computeBindingPointSupport( computeBindingPointSupport_ )
9809 {
9810 }
9811
9812 DeviceGeneratedCommandsFeaturesNVX( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
9813 {
9814 memcpy( this, &rhs, sizeof(DeviceGeneratedCommandsFeaturesNVX) );
9815 }
9816
9817 DeviceGeneratedCommandsFeaturesNVX& operator=( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
9818 {
9819 memcpy( this, &rhs, sizeof(DeviceGeneratedCommandsFeaturesNVX) );
9820 return *this;
9821 }
9822
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009823 DeviceGeneratedCommandsFeaturesNVX& setPNext( const void* pNext_ )
9824 {
9825 pNext = pNext_;
9826 return *this;
9827 }
9828
9829 DeviceGeneratedCommandsFeaturesNVX& setComputeBindingPointSupport( Bool32 computeBindingPointSupport_ )
9830 {
9831 computeBindingPointSupport = computeBindingPointSupport_;
9832 return *this;
9833 }
9834
9835 operator const VkDeviceGeneratedCommandsFeaturesNVX&() const
9836 {
9837 return *reinterpret_cast<const VkDeviceGeneratedCommandsFeaturesNVX*>(this);
9838 }
9839
9840 bool operator==( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
9841 {
9842 return ( sType == rhs.sType )
9843 && ( pNext == rhs.pNext )
9844 && ( computeBindingPointSupport == rhs.computeBindingPointSupport );
9845 }
9846
9847 bool operator!=( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
9848 {
9849 return !operator==( rhs );
9850 }
9851
9852 private:
9853 StructureType sType;
9854
9855 public:
9856 const void* pNext;
9857 Bool32 computeBindingPointSupport;
9858 };
9859 static_assert( sizeof( DeviceGeneratedCommandsFeaturesNVX ) == sizeof( VkDeviceGeneratedCommandsFeaturesNVX ), "struct and wrapper have different size!" );
9860
9861 struct DeviceGeneratedCommandsLimitsNVX
9862 {
9863 DeviceGeneratedCommandsLimitsNVX( uint32_t maxIndirectCommandsLayoutTokenCount_ = 0, uint32_t maxObjectEntryCounts_ = 0, uint32_t minSequenceCountBufferOffsetAlignment_ = 0, uint32_t minSequenceIndexBufferOffsetAlignment_ = 0, uint32_t minCommandsTokenBufferOffsetAlignment_ = 0 )
9864 : sType( StructureType::eDeviceGeneratedCommandsLimitsNVX )
9865 , pNext( nullptr )
9866 , maxIndirectCommandsLayoutTokenCount( maxIndirectCommandsLayoutTokenCount_ )
9867 , maxObjectEntryCounts( maxObjectEntryCounts_ )
9868 , minSequenceCountBufferOffsetAlignment( minSequenceCountBufferOffsetAlignment_ )
9869 , minSequenceIndexBufferOffsetAlignment( minSequenceIndexBufferOffsetAlignment_ )
9870 , minCommandsTokenBufferOffsetAlignment( minCommandsTokenBufferOffsetAlignment_ )
9871 {
9872 }
9873
9874 DeviceGeneratedCommandsLimitsNVX( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
9875 {
9876 memcpy( this, &rhs, sizeof(DeviceGeneratedCommandsLimitsNVX) );
9877 }
9878
9879 DeviceGeneratedCommandsLimitsNVX& operator=( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
9880 {
9881 memcpy( this, &rhs, sizeof(DeviceGeneratedCommandsLimitsNVX) );
9882 return *this;
9883 }
9884
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009885 DeviceGeneratedCommandsLimitsNVX& setPNext( const void* pNext_ )
9886 {
9887 pNext = pNext_;
9888 return *this;
9889 }
9890
9891 DeviceGeneratedCommandsLimitsNVX& setMaxIndirectCommandsLayoutTokenCount( uint32_t maxIndirectCommandsLayoutTokenCount_ )
9892 {
9893 maxIndirectCommandsLayoutTokenCount = maxIndirectCommandsLayoutTokenCount_;
9894 return *this;
9895 }
9896
9897 DeviceGeneratedCommandsLimitsNVX& setMaxObjectEntryCounts( uint32_t maxObjectEntryCounts_ )
9898 {
9899 maxObjectEntryCounts = maxObjectEntryCounts_;
9900 return *this;
9901 }
9902
9903 DeviceGeneratedCommandsLimitsNVX& setMinSequenceCountBufferOffsetAlignment( uint32_t minSequenceCountBufferOffsetAlignment_ )
9904 {
9905 minSequenceCountBufferOffsetAlignment = minSequenceCountBufferOffsetAlignment_;
9906 return *this;
9907 }
9908
9909 DeviceGeneratedCommandsLimitsNVX& setMinSequenceIndexBufferOffsetAlignment( uint32_t minSequenceIndexBufferOffsetAlignment_ )
9910 {
9911 minSequenceIndexBufferOffsetAlignment = minSequenceIndexBufferOffsetAlignment_;
9912 return *this;
9913 }
9914
9915 DeviceGeneratedCommandsLimitsNVX& setMinCommandsTokenBufferOffsetAlignment( uint32_t minCommandsTokenBufferOffsetAlignment_ )
9916 {
9917 minCommandsTokenBufferOffsetAlignment = minCommandsTokenBufferOffsetAlignment_;
9918 return *this;
9919 }
9920
9921 operator const VkDeviceGeneratedCommandsLimitsNVX&() const
9922 {
9923 return *reinterpret_cast<const VkDeviceGeneratedCommandsLimitsNVX*>(this);
9924 }
9925
9926 bool operator==( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
9927 {
9928 return ( sType == rhs.sType )
9929 && ( pNext == rhs.pNext )
9930 && ( maxIndirectCommandsLayoutTokenCount == rhs.maxIndirectCommandsLayoutTokenCount )
9931 && ( maxObjectEntryCounts == rhs.maxObjectEntryCounts )
9932 && ( minSequenceCountBufferOffsetAlignment == rhs.minSequenceCountBufferOffsetAlignment )
9933 && ( minSequenceIndexBufferOffsetAlignment == rhs.minSequenceIndexBufferOffsetAlignment )
9934 && ( minCommandsTokenBufferOffsetAlignment == rhs.minCommandsTokenBufferOffsetAlignment );
9935 }
9936
9937 bool operator!=( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
9938 {
9939 return !operator==( rhs );
9940 }
9941
9942 private:
9943 StructureType sType;
9944
9945 public:
9946 const void* pNext;
9947 uint32_t maxIndirectCommandsLayoutTokenCount;
9948 uint32_t maxObjectEntryCounts;
9949 uint32_t minSequenceCountBufferOffsetAlignment;
9950 uint32_t minSequenceIndexBufferOffsetAlignment;
9951 uint32_t minCommandsTokenBufferOffsetAlignment;
9952 };
9953 static_assert( sizeof( DeviceGeneratedCommandsLimitsNVX ) == sizeof( VkDeviceGeneratedCommandsLimitsNVX ), "struct and wrapper have different size!" );
9954
9955 struct CmdReserveSpaceForCommandsInfoNVX
9956 {
9957 CmdReserveSpaceForCommandsInfoNVX( ObjectTableNVX objectTable_ = ObjectTableNVX(), IndirectCommandsLayoutNVX indirectCommandsLayout_ = IndirectCommandsLayoutNVX(), uint32_t maxSequencesCount_ = 0 )
9958 : sType( StructureType::eCmdReserveSpaceForCommandsInfoNVX )
9959 , pNext( nullptr )
9960 , objectTable( objectTable_ )
9961 , indirectCommandsLayout( indirectCommandsLayout_ )
9962 , maxSequencesCount( maxSequencesCount_ )
9963 {
9964 }
9965
9966 CmdReserveSpaceForCommandsInfoNVX( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
9967 {
9968 memcpy( this, &rhs, sizeof(CmdReserveSpaceForCommandsInfoNVX) );
9969 }
9970
9971 CmdReserveSpaceForCommandsInfoNVX& operator=( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
9972 {
9973 memcpy( this, &rhs, sizeof(CmdReserveSpaceForCommandsInfoNVX) );
9974 return *this;
9975 }
9976
Mark Lobodzinski2d589822016-12-12 09:44:34 -07009977 CmdReserveSpaceForCommandsInfoNVX& setPNext( const void* pNext_ )
9978 {
9979 pNext = pNext_;
9980 return *this;
9981 }
9982
9983 CmdReserveSpaceForCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
9984 {
9985 objectTable = objectTable_;
9986 return *this;
9987 }
9988
9989 CmdReserveSpaceForCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
9990 {
9991 indirectCommandsLayout = indirectCommandsLayout_;
9992 return *this;
9993 }
9994
9995 CmdReserveSpaceForCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
9996 {
9997 maxSequencesCount = maxSequencesCount_;
9998 return *this;
9999 }
10000
10001 operator const VkCmdReserveSpaceForCommandsInfoNVX&() const
10002 {
10003 return *reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>(this);
10004 }
10005
10006 bool operator==( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
10007 {
10008 return ( sType == rhs.sType )
10009 && ( pNext == rhs.pNext )
10010 && ( objectTable == rhs.objectTable )
10011 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
10012 && ( maxSequencesCount == rhs.maxSequencesCount );
10013 }
10014
10015 bool operator!=( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
10016 {
10017 return !operator==( rhs );
10018 }
10019
10020 private:
10021 StructureType sType;
10022
10023 public:
10024 const void* pNext;
10025 ObjectTableNVX objectTable;
10026 IndirectCommandsLayoutNVX indirectCommandsLayout;
10027 uint32_t maxSequencesCount;
10028 };
10029 static_assert( sizeof( CmdReserveSpaceForCommandsInfoNVX ) == sizeof( VkCmdReserveSpaceForCommandsInfoNVX ), "struct and wrapper have different size!" );
10030
Mark Young39389872017-01-19 21:10:49 -070010031 struct PhysicalDeviceFeatures2KHR
10032 {
10033 PhysicalDeviceFeatures2KHR( PhysicalDeviceFeatures features_ = PhysicalDeviceFeatures() )
10034 : sType( StructureType::ePhysicalDeviceFeatures2KHR )
10035 , pNext( nullptr )
10036 , features( features_ )
10037 {
10038 }
10039
10040 PhysicalDeviceFeatures2KHR( VkPhysicalDeviceFeatures2KHR const & rhs )
10041 {
10042 memcpy( this, &rhs, sizeof(PhysicalDeviceFeatures2KHR) );
10043 }
10044
10045 PhysicalDeviceFeatures2KHR& operator=( VkPhysicalDeviceFeatures2KHR const & rhs )
10046 {
10047 memcpy( this, &rhs, sizeof(PhysicalDeviceFeatures2KHR) );
10048 return *this;
10049 }
10050
Mark Young39389872017-01-19 21:10:49 -070010051 PhysicalDeviceFeatures2KHR& setPNext( void* pNext_ )
10052 {
10053 pNext = pNext_;
10054 return *this;
10055 }
10056
10057 PhysicalDeviceFeatures2KHR& setFeatures( PhysicalDeviceFeatures features_ )
10058 {
10059 features = features_;
10060 return *this;
10061 }
10062
10063 operator const VkPhysicalDeviceFeatures2KHR&() const
10064 {
10065 return *reinterpret_cast<const VkPhysicalDeviceFeatures2KHR*>(this);
10066 }
10067
10068 bool operator==( PhysicalDeviceFeatures2KHR const& rhs ) const
10069 {
10070 return ( sType == rhs.sType )
10071 && ( pNext == rhs.pNext )
10072 && ( features == rhs.features );
10073 }
10074
10075 bool operator!=( PhysicalDeviceFeatures2KHR const& rhs ) const
10076 {
10077 return !operator==( rhs );
10078 }
10079
10080 private:
10081 StructureType sType;
10082
10083 public:
10084 void* pNext;
10085 PhysicalDeviceFeatures features;
10086 };
10087 static_assert( sizeof( PhysicalDeviceFeatures2KHR ) == sizeof( VkPhysicalDeviceFeatures2KHR ), "struct and wrapper have different size!" );
10088
Mark Young0f183a82017-02-28 09:58:04 -070010089 struct PhysicalDevicePushDescriptorPropertiesKHR
10090 {
10091 PhysicalDevicePushDescriptorPropertiesKHR( uint32_t maxPushDescriptors_ = 0 )
10092 : sType( StructureType::ePhysicalDevicePushDescriptorPropertiesKHR )
10093 , pNext( nullptr )
10094 , maxPushDescriptors( maxPushDescriptors_ )
10095 {
10096 }
10097
10098 PhysicalDevicePushDescriptorPropertiesKHR( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
10099 {
10100 memcpy( this, &rhs, sizeof(PhysicalDevicePushDescriptorPropertiesKHR) );
10101 }
10102
10103 PhysicalDevicePushDescriptorPropertiesKHR& operator=( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
10104 {
10105 memcpy( this, &rhs, sizeof(PhysicalDevicePushDescriptorPropertiesKHR) );
10106 return *this;
10107 }
10108
10109 PhysicalDevicePushDescriptorPropertiesKHR& setPNext( void* pNext_ )
10110 {
10111 pNext = pNext_;
10112 return *this;
10113 }
10114
10115 PhysicalDevicePushDescriptorPropertiesKHR& setMaxPushDescriptors( uint32_t maxPushDescriptors_ )
10116 {
10117 maxPushDescriptors = maxPushDescriptors_;
10118 return *this;
10119 }
10120
10121 operator const VkPhysicalDevicePushDescriptorPropertiesKHR&() const
10122 {
10123 return *reinterpret_cast<const VkPhysicalDevicePushDescriptorPropertiesKHR*>(this);
10124 }
10125
10126 bool operator==( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
10127 {
10128 return ( sType == rhs.sType )
10129 && ( pNext == rhs.pNext )
10130 && ( maxPushDescriptors == rhs.maxPushDescriptors );
10131 }
10132
10133 bool operator!=( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
10134 {
10135 return !operator==( rhs );
10136 }
10137
10138 private:
10139 StructureType sType;
10140
10141 public:
10142 void* pNext;
10143 uint32_t maxPushDescriptors;
10144 };
10145 static_assert( sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) == sizeof( VkPhysicalDevicePushDescriptorPropertiesKHR ), "struct and wrapper have different size!" );
10146
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010147 struct PresentRegionsKHR
10148 {
10149 PresentRegionsKHR( uint32_t swapchainCount_ = 0, const PresentRegionKHR* pRegions_ = nullptr )
10150 : sType( StructureType::ePresentRegionsKHR )
10151 , pNext( nullptr )
10152 , swapchainCount( swapchainCount_ )
10153 , pRegions( pRegions_ )
10154 {
10155 }
10156
10157 PresentRegionsKHR( VkPresentRegionsKHR const & rhs )
10158 {
10159 memcpy( this, &rhs, sizeof(PresentRegionsKHR) );
10160 }
10161
10162 PresentRegionsKHR& operator=( VkPresentRegionsKHR const & rhs )
10163 {
10164 memcpy( this, &rhs, sizeof(PresentRegionsKHR) );
10165 return *this;
10166 }
10167
10168 PresentRegionsKHR& setPNext( const void* pNext_ )
10169 {
10170 pNext = pNext_;
10171 return *this;
10172 }
10173
10174 PresentRegionsKHR& setSwapchainCount( uint32_t swapchainCount_ )
10175 {
10176 swapchainCount = swapchainCount_;
10177 return *this;
10178 }
10179
10180 PresentRegionsKHR& setPRegions( const PresentRegionKHR* pRegions_ )
10181 {
10182 pRegions = pRegions_;
10183 return *this;
10184 }
10185
10186 operator const VkPresentRegionsKHR&() const
10187 {
10188 return *reinterpret_cast<const VkPresentRegionsKHR*>(this);
10189 }
10190
10191 bool operator==( PresentRegionsKHR const& rhs ) const
10192 {
10193 return ( sType == rhs.sType )
10194 && ( pNext == rhs.pNext )
10195 && ( swapchainCount == rhs.swapchainCount )
10196 && ( pRegions == rhs.pRegions );
10197 }
10198
10199 bool operator!=( PresentRegionsKHR const& rhs ) const
10200 {
10201 return !operator==( rhs );
10202 }
10203
10204 private:
10205 StructureType sType;
10206
10207 public:
10208 const void* pNext;
10209 uint32_t swapchainCount;
10210 const PresentRegionKHR* pRegions;
10211 };
10212 static_assert( sizeof( PresentRegionsKHR ) == sizeof( VkPresentRegionsKHR ), "struct and wrapper have different size!" );
10213
Mark Young0f183a82017-02-28 09:58:04 -070010214 struct PhysicalDeviceIDPropertiesKHX
10215 {
10216 operator const VkPhysicalDeviceIDPropertiesKHX&() const
10217 {
10218 return *reinterpret_cast<const VkPhysicalDeviceIDPropertiesKHX*>(this);
10219 }
10220
10221 bool operator==( PhysicalDeviceIDPropertiesKHX const& rhs ) const
10222 {
10223 return ( sType == rhs.sType )
10224 && ( pNext == rhs.pNext )
10225 && ( memcmp( deviceUUID, rhs.deviceUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
10226 && ( memcmp( driverUUID, rhs.driverUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
10227 && ( memcmp( deviceLUID, rhs.deviceLUID, VK_LUID_SIZE_KHX * sizeof( uint8_t ) ) == 0 )
10228 && ( deviceLUIDValid == rhs.deviceLUIDValid );
10229 }
10230
10231 bool operator!=( PhysicalDeviceIDPropertiesKHX const& rhs ) const
10232 {
10233 return !operator==( rhs );
10234 }
10235
10236 private:
10237 StructureType sType;
10238
10239 public:
10240 void* pNext;
10241 uint8_t deviceUUID[VK_UUID_SIZE];
10242 uint8_t driverUUID[VK_UUID_SIZE];
10243 uint8_t deviceLUID[VK_LUID_SIZE_KHX];
10244 Bool32 deviceLUIDValid;
10245 };
10246 static_assert( sizeof( PhysicalDeviceIDPropertiesKHX ) == sizeof( VkPhysicalDeviceIDPropertiesKHX ), "struct and wrapper have different size!" );
10247
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010248#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070010249 struct ExportMemoryWin32HandleInfoKHX
10250 {
10251 ExportMemoryWin32HandleInfoKHX( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
10252 : sType( StructureType::eExportMemoryWin32HandleInfoKHX )
10253 , pNext( nullptr )
10254 , pAttributes( pAttributes_ )
10255 , dwAccess( dwAccess_ )
10256 , name( name_ )
10257 {
10258 }
10259
10260 ExportMemoryWin32HandleInfoKHX( VkExportMemoryWin32HandleInfoKHX const & rhs )
10261 {
10262 memcpy( this, &rhs, sizeof(ExportMemoryWin32HandleInfoKHX) );
10263 }
10264
10265 ExportMemoryWin32HandleInfoKHX& operator=( VkExportMemoryWin32HandleInfoKHX const & rhs )
10266 {
10267 memcpy( this, &rhs, sizeof(ExportMemoryWin32HandleInfoKHX) );
10268 return *this;
10269 }
10270
10271 ExportMemoryWin32HandleInfoKHX& setPNext( const void* pNext_ )
10272 {
10273 pNext = pNext_;
10274 return *this;
10275 }
10276
10277 ExportMemoryWin32HandleInfoKHX& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
10278 {
10279 pAttributes = pAttributes_;
10280 return *this;
10281 }
10282
10283 ExportMemoryWin32HandleInfoKHX& setDwAccess( DWORD dwAccess_ )
10284 {
10285 dwAccess = dwAccess_;
10286 return *this;
10287 }
10288
10289 ExportMemoryWin32HandleInfoKHX& setName( LPCWSTR name_ )
10290 {
10291 name = name_;
10292 return *this;
10293 }
10294
10295 operator const VkExportMemoryWin32HandleInfoKHX&() const
10296 {
10297 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoKHX*>(this);
10298 }
10299
10300 bool operator==( ExportMemoryWin32HandleInfoKHX const& rhs ) const
10301 {
10302 return ( sType == rhs.sType )
10303 && ( pNext == rhs.pNext )
10304 && ( pAttributes == rhs.pAttributes )
10305 && ( dwAccess == rhs.dwAccess )
10306 && ( name == rhs.name );
10307 }
10308
10309 bool operator!=( ExportMemoryWin32HandleInfoKHX const& rhs ) const
10310 {
10311 return !operator==( rhs );
10312 }
10313
10314 private:
10315 StructureType sType;
10316
10317 public:
10318 const void* pNext;
10319 const SECURITY_ATTRIBUTES* pAttributes;
10320 DWORD dwAccess;
10321 LPCWSTR name;
10322 };
10323 static_assert( sizeof( ExportMemoryWin32HandleInfoKHX ) == sizeof( VkExportMemoryWin32HandleInfoKHX ), "struct and wrapper have different size!" );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010324#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070010325
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010326#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070010327 struct MemoryWin32HandlePropertiesKHX
10328 {
10329 operator const VkMemoryWin32HandlePropertiesKHX&() const
10330 {
10331 return *reinterpret_cast<const VkMemoryWin32HandlePropertiesKHX*>(this);
10332 }
10333
10334 bool operator==( MemoryWin32HandlePropertiesKHX const& rhs ) const
10335 {
10336 return ( sType == rhs.sType )
10337 && ( pNext == rhs.pNext )
10338 && ( memoryTypeBits == rhs.memoryTypeBits );
10339 }
10340
10341 bool operator!=( MemoryWin32HandlePropertiesKHX const& rhs ) const
10342 {
10343 return !operator==( rhs );
10344 }
10345
10346 private:
10347 StructureType sType;
10348
10349 public:
10350 void* pNext;
10351 uint32_t memoryTypeBits;
10352 };
10353 static_assert( sizeof( MemoryWin32HandlePropertiesKHX ) == sizeof( VkMemoryWin32HandlePropertiesKHX ), "struct and wrapper have different size!" );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010354#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070010355
10356 struct MemoryFdPropertiesKHX
10357 {
10358 operator const VkMemoryFdPropertiesKHX&() const
10359 {
10360 return *reinterpret_cast<const VkMemoryFdPropertiesKHX*>(this);
10361 }
10362
10363 bool operator==( MemoryFdPropertiesKHX const& rhs ) const
10364 {
10365 return ( sType == rhs.sType )
10366 && ( pNext == rhs.pNext )
10367 && ( memoryTypeBits == rhs.memoryTypeBits );
10368 }
10369
10370 bool operator!=( MemoryFdPropertiesKHX const& rhs ) const
10371 {
10372 return !operator==( rhs );
10373 }
10374
10375 private:
10376 StructureType sType;
10377
10378 public:
10379 void* pNext;
10380 uint32_t memoryTypeBits;
10381 };
10382 static_assert( sizeof( MemoryFdPropertiesKHX ) == sizeof( VkMemoryFdPropertiesKHX ), "struct and wrapper have different size!" );
10383
10384#ifdef VK_USE_PLATFORM_WIN32_KHR
10385 struct Win32KeyedMutexAcquireReleaseInfoKHX
10386 {
10387 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 )
10388 : sType( StructureType::eWin32KeyedMutexAcquireReleaseInfoKHX )
10389 , pNext( nullptr )
10390 , acquireCount( acquireCount_ )
10391 , pAcquireSyncs( pAcquireSyncs_ )
10392 , pAcquireKeys( pAcquireKeys_ )
10393 , pAcquireTimeouts( pAcquireTimeouts_ )
10394 , releaseCount( releaseCount_ )
10395 , pReleaseSyncs( pReleaseSyncs_ )
10396 , pReleaseKeys( pReleaseKeys_ )
10397 {
10398 }
10399
10400 Win32KeyedMutexAcquireReleaseInfoKHX( VkWin32KeyedMutexAcquireReleaseInfoKHX const & rhs )
10401 {
10402 memcpy( this, &rhs, sizeof(Win32KeyedMutexAcquireReleaseInfoKHX) );
10403 }
10404
10405 Win32KeyedMutexAcquireReleaseInfoKHX& operator=( VkWin32KeyedMutexAcquireReleaseInfoKHX const & rhs )
10406 {
10407 memcpy( this, &rhs, sizeof(Win32KeyedMutexAcquireReleaseInfoKHX) );
10408 return *this;
10409 }
10410
10411 Win32KeyedMutexAcquireReleaseInfoKHX& setPNext( const void* pNext_ )
10412 {
10413 pNext = pNext_;
10414 return *this;
10415 }
10416
10417 Win32KeyedMutexAcquireReleaseInfoKHX& setAcquireCount( uint32_t acquireCount_ )
10418 {
10419 acquireCount = acquireCount_;
10420 return *this;
10421 }
10422
10423 Win32KeyedMutexAcquireReleaseInfoKHX& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
10424 {
10425 pAcquireSyncs = pAcquireSyncs_;
10426 return *this;
10427 }
10428
10429 Win32KeyedMutexAcquireReleaseInfoKHX& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
10430 {
10431 pAcquireKeys = pAcquireKeys_;
10432 return *this;
10433 }
10434
10435 Win32KeyedMutexAcquireReleaseInfoKHX& setPAcquireTimeouts( const uint32_t* pAcquireTimeouts_ )
10436 {
10437 pAcquireTimeouts = pAcquireTimeouts_;
10438 return *this;
10439 }
10440
10441 Win32KeyedMutexAcquireReleaseInfoKHX& setReleaseCount( uint32_t releaseCount_ )
10442 {
10443 releaseCount = releaseCount_;
10444 return *this;
10445 }
10446
10447 Win32KeyedMutexAcquireReleaseInfoKHX& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
10448 {
10449 pReleaseSyncs = pReleaseSyncs_;
10450 return *this;
10451 }
10452
10453 Win32KeyedMutexAcquireReleaseInfoKHX& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
10454 {
10455 pReleaseKeys = pReleaseKeys_;
10456 return *this;
10457 }
10458
10459 operator const VkWin32KeyedMutexAcquireReleaseInfoKHX&() const
10460 {
10461 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoKHX*>(this);
10462 }
10463
10464 bool operator==( Win32KeyedMutexAcquireReleaseInfoKHX const& rhs ) const
10465 {
10466 return ( sType == rhs.sType )
10467 && ( pNext == rhs.pNext )
10468 && ( acquireCount == rhs.acquireCount )
10469 && ( pAcquireSyncs == rhs.pAcquireSyncs )
10470 && ( pAcquireKeys == rhs.pAcquireKeys )
10471 && ( pAcquireTimeouts == rhs.pAcquireTimeouts )
10472 && ( releaseCount == rhs.releaseCount )
10473 && ( pReleaseSyncs == rhs.pReleaseSyncs )
10474 && ( pReleaseKeys == rhs.pReleaseKeys );
10475 }
10476
10477 bool operator!=( Win32KeyedMutexAcquireReleaseInfoKHX const& rhs ) const
10478 {
10479 return !operator==( rhs );
10480 }
10481
10482 private:
10483 StructureType sType;
10484
10485 public:
10486 const void* pNext;
10487 uint32_t acquireCount;
10488 const DeviceMemory* pAcquireSyncs;
10489 const uint64_t* pAcquireKeys;
10490 const uint32_t* pAcquireTimeouts;
10491 uint32_t releaseCount;
10492 const DeviceMemory* pReleaseSyncs;
10493 const uint64_t* pReleaseKeys;
10494 };
10495 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoKHX ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoKHX ), "struct and wrapper have different size!" );
10496#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10497
10498#ifdef VK_USE_PLATFORM_WIN32_KHX
10499 struct ExportSemaphoreWin32HandleInfoKHX
10500 {
10501 ExportSemaphoreWin32HandleInfoKHX( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
10502 : sType( StructureType::eExportSemaphoreWin32HandleInfoKHX )
10503 , pNext( nullptr )
10504 , pAttributes( pAttributes_ )
10505 , dwAccess( dwAccess_ )
10506 , name( name_ )
10507 {
10508 }
10509
10510 ExportSemaphoreWin32HandleInfoKHX( VkExportSemaphoreWin32HandleInfoKHX const & rhs )
10511 {
10512 memcpy( this, &rhs, sizeof(ExportSemaphoreWin32HandleInfoKHX) );
10513 }
10514
10515 ExportSemaphoreWin32HandleInfoKHX& operator=( VkExportSemaphoreWin32HandleInfoKHX const & rhs )
10516 {
10517 memcpy( this, &rhs, sizeof(ExportSemaphoreWin32HandleInfoKHX) );
10518 return *this;
10519 }
10520
10521 ExportSemaphoreWin32HandleInfoKHX& setPNext( const void* pNext_ )
10522 {
10523 pNext = pNext_;
10524 return *this;
10525 }
10526
10527 ExportSemaphoreWin32HandleInfoKHX& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
10528 {
10529 pAttributes = pAttributes_;
10530 return *this;
10531 }
10532
10533 ExportSemaphoreWin32HandleInfoKHX& setDwAccess( DWORD dwAccess_ )
10534 {
10535 dwAccess = dwAccess_;
10536 return *this;
10537 }
10538
10539 ExportSemaphoreWin32HandleInfoKHX& setName( LPCWSTR name_ )
10540 {
10541 name = name_;
10542 return *this;
10543 }
10544
10545 operator const VkExportSemaphoreWin32HandleInfoKHX&() const
10546 {
10547 return *reinterpret_cast<const VkExportSemaphoreWin32HandleInfoKHX*>(this);
10548 }
10549
10550 bool operator==( ExportSemaphoreWin32HandleInfoKHX const& rhs ) const
10551 {
10552 return ( sType == rhs.sType )
10553 && ( pNext == rhs.pNext )
10554 && ( pAttributes == rhs.pAttributes )
10555 && ( dwAccess == rhs.dwAccess )
10556 && ( name == rhs.name );
10557 }
10558
10559 bool operator!=( ExportSemaphoreWin32HandleInfoKHX const& rhs ) const
10560 {
10561 return !operator==( rhs );
10562 }
10563
10564 private:
10565 StructureType sType;
10566
10567 public:
10568 const void* pNext;
10569 const SECURITY_ATTRIBUTES* pAttributes;
10570 DWORD dwAccess;
10571 LPCWSTR name;
10572 };
10573 static_assert( sizeof( ExportSemaphoreWin32HandleInfoKHX ) == sizeof( VkExportSemaphoreWin32HandleInfoKHX ), "struct and wrapper have different size!" );
10574#endif /*VK_USE_PLATFORM_WIN32_KHX*/
10575
10576#ifdef VK_USE_PLATFORM_WIN32_KHX
10577 struct D3D12FenceSubmitInfoKHX
10578 {
10579 D3D12FenceSubmitInfoKHX( uint32_t waitSemaphoreValuesCount_ = 0, const uint64_t* pWaitSemaphoreValues_ = nullptr, uint32_t signalSemaphoreValuesCount_ = 0, const uint64_t* pSignalSemaphoreValues_ = nullptr )
10580 : sType( StructureType::eD3D12FenceSubmitInfoKHX )
10581 , pNext( nullptr )
10582 , waitSemaphoreValuesCount( waitSemaphoreValuesCount_ )
10583 , pWaitSemaphoreValues( pWaitSemaphoreValues_ )
10584 , signalSemaphoreValuesCount( signalSemaphoreValuesCount_ )
10585 , pSignalSemaphoreValues( pSignalSemaphoreValues_ )
10586 {
10587 }
10588
10589 D3D12FenceSubmitInfoKHX( VkD3D12FenceSubmitInfoKHX const & rhs )
10590 {
10591 memcpy( this, &rhs, sizeof(D3D12FenceSubmitInfoKHX) );
10592 }
10593
10594 D3D12FenceSubmitInfoKHX& operator=( VkD3D12FenceSubmitInfoKHX const & rhs )
10595 {
10596 memcpy( this, &rhs, sizeof(D3D12FenceSubmitInfoKHX) );
10597 return *this;
10598 }
10599
10600 D3D12FenceSubmitInfoKHX& setPNext( const void* pNext_ )
10601 {
10602 pNext = pNext_;
10603 return *this;
10604 }
10605
10606 D3D12FenceSubmitInfoKHX& setWaitSemaphoreValuesCount( uint32_t waitSemaphoreValuesCount_ )
10607 {
10608 waitSemaphoreValuesCount = waitSemaphoreValuesCount_;
10609 return *this;
10610 }
10611
10612 D3D12FenceSubmitInfoKHX& setPWaitSemaphoreValues( const uint64_t* pWaitSemaphoreValues_ )
10613 {
10614 pWaitSemaphoreValues = pWaitSemaphoreValues_;
10615 return *this;
10616 }
10617
10618 D3D12FenceSubmitInfoKHX& setSignalSemaphoreValuesCount( uint32_t signalSemaphoreValuesCount_ )
10619 {
10620 signalSemaphoreValuesCount = signalSemaphoreValuesCount_;
10621 return *this;
10622 }
10623
10624 D3D12FenceSubmitInfoKHX& setPSignalSemaphoreValues( const uint64_t* pSignalSemaphoreValues_ )
10625 {
10626 pSignalSemaphoreValues = pSignalSemaphoreValues_;
10627 return *this;
10628 }
10629
10630 operator const VkD3D12FenceSubmitInfoKHX&() const
10631 {
10632 return *reinterpret_cast<const VkD3D12FenceSubmitInfoKHX*>(this);
10633 }
10634
10635 bool operator==( D3D12FenceSubmitInfoKHX const& rhs ) const
10636 {
10637 return ( sType == rhs.sType )
10638 && ( pNext == rhs.pNext )
10639 && ( waitSemaphoreValuesCount == rhs.waitSemaphoreValuesCount )
10640 && ( pWaitSemaphoreValues == rhs.pWaitSemaphoreValues )
10641 && ( signalSemaphoreValuesCount == rhs.signalSemaphoreValuesCount )
10642 && ( pSignalSemaphoreValues == rhs.pSignalSemaphoreValues );
10643 }
10644
10645 bool operator!=( D3D12FenceSubmitInfoKHX const& rhs ) const
10646 {
10647 return !operator==( rhs );
10648 }
10649
10650 private:
10651 StructureType sType;
10652
10653 public:
10654 const void* pNext;
10655 uint32_t waitSemaphoreValuesCount;
10656 const uint64_t* pWaitSemaphoreValues;
10657 uint32_t signalSemaphoreValuesCount;
10658 const uint64_t* pSignalSemaphoreValues;
10659 };
10660 static_assert( sizeof( D3D12FenceSubmitInfoKHX ) == sizeof( VkD3D12FenceSubmitInfoKHX ), "struct and wrapper have different size!" );
10661#endif /*VK_USE_PLATFORM_WIN32_KHX*/
10662
10663 struct PhysicalDeviceMultiviewFeaturesKHX
10664 {
10665 PhysicalDeviceMultiviewFeaturesKHX( Bool32 multiview_ = 0, Bool32 multiviewGeometryShader_ = 0, Bool32 multiviewTessellationShader_ = 0 )
10666 : sType( StructureType::ePhysicalDeviceMultiviewFeaturesKHX )
10667 , pNext( nullptr )
10668 , multiview( multiview_ )
10669 , multiviewGeometryShader( multiviewGeometryShader_ )
10670 , multiviewTessellationShader( multiviewTessellationShader_ )
10671 {
10672 }
10673
10674 PhysicalDeviceMultiviewFeaturesKHX( VkPhysicalDeviceMultiviewFeaturesKHX const & rhs )
10675 {
10676 memcpy( this, &rhs, sizeof(PhysicalDeviceMultiviewFeaturesKHX) );
10677 }
10678
10679 PhysicalDeviceMultiviewFeaturesKHX& operator=( VkPhysicalDeviceMultiviewFeaturesKHX const & rhs )
10680 {
10681 memcpy( this, &rhs, sizeof(PhysicalDeviceMultiviewFeaturesKHX) );
10682 return *this;
10683 }
10684
10685 PhysicalDeviceMultiviewFeaturesKHX& setPNext( void* pNext_ )
10686 {
10687 pNext = pNext_;
10688 return *this;
10689 }
10690
10691 PhysicalDeviceMultiviewFeaturesKHX& setMultiview( Bool32 multiview_ )
10692 {
10693 multiview = multiview_;
10694 return *this;
10695 }
10696
10697 PhysicalDeviceMultiviewFeaturesKHX& setMultiviewGeometryShader( Bool32 multiviewGeometryShader_ )
10698 {
10699 multiviewGeometryShader = multiviewGeometryShader_;
10700 return *this;
10701 }
10702
10703 PhysicalDeviceMultiviewFeaturesKHX& setMultiviewTessellationShader( Bool32 multiviewTessellationShader_ )
10704 {
10705 multiviewTessellationShader = multiviewTessellationShader_;
10706 return *this;
10707 }
10708
10709 operator const VkPhysicalDeviceMultiviewFeaturesKHX&() const
10710 {
10711 return *reinterpret_cast<const VkPhysicalDeviceMultiviewFeaturesKHX*>(this);
10712 }
10713
10714 bool operator==( PhysicalDeviceMultiviewFeaturesKHX const& rhs ) const
10715 {
10716 return ( sType == rhs.sType )
10717 && ( pNext == rhs.pNext )
10718 && ( multiview == rhs.multiview )
10719 && ( multiviewGeometryShader == rhs.multiviewGeometryShader )
10720 && ( multiviewTessellationShader == rhs.multiviewTessellationShader );
10721 }
10722
10723 bool operator!=( PhysicalDeviceMultiviewFeaturesKHX const& rhs ) const
10724 {
10725 return !operator==( rhs );
10726 }
10727
10728 private:
10729 StructureType sType;
10730
10731 public:
10732 void* pNext;
10733 Bool32 multiview;
10734 Bool32 multiviewGeometryShader;
10735 Bool32 multiviewTessellationShader;
10736 };
10737 static_assert( sizeof( PhysicalDeviceMultiviewFeaturesKHX ) == sizeof( VkPhysicalDeviceMultiviewFeaturesKHX ), "struct and wrapper have different size!" );
10738
10739 struct PhysicalDeviceMultiviewPropertiesKHX
10740 {
10741 operator const VkPhysicalDeviceMultiviewPropertiesKHX&() const
10742 {
10743 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPropertiesKHX*>(this);
10744 }
10745
10746 bool operator==( PhysicalDeviceMultiviewPropertiesKHX const& rhs ) const
10747 {
10748 return ( sType == rhs.sType )
10749 && ( pNext == rhs.pNext )
10750 && ( maxMultiviewViewCount == rhs.maxMultiviewViewCount )
10751 && ( maxMultiviewInstanceIndex == rhs.maxMultiviewInstanceIndex );
10752 }
10753
10754 bool operator!=( PhysicalDeviceMultiviewPropertiesKHX const& rhs ) const
10755 {
10756 return !operator==( rhs );
10757 }
10758
10759 private:
10760 StructureType sType;
10761
10762 public:
10763 void* pNext;
10764 uint32_t maxMultiviewViewCount;
10765 uint32_t maxMultiviewInstanceIndex;
10766 };
10767 static_assert( sizeof( PhysicalDeviceMultiviewPropertiesKHX ) == sizeof( VkPhysicalDeviceMultiviewPropertiesKHX ), "struct and wrapper have different size!" );
10768
10769 struct RenderPassMultiviewCreateInfoKHX
10770 {
10771 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 )
10772 : sType( StructureType::eRenderPassMultiviewCreateInfoKHX )
10773 , pNext( nullptr )
10774 , subpassCount( subpassCount_ )
10775 , pViewMasks( pViewMasks_ )
10776 , dependencyCount( dependencyCount_ )
10777 , pViewOffsets( pViewOffsets_ )
10778 , correlationMaskCount( correlationMaskCount_ )
10779 , pCorrelationMasks( pCorrelationMasks_ )
10780 {
10781 }
10782
10783 RenderPassMultiviewCreateInfoKHX( VkRenderPassMultiviewCreateInfoKHX const & rhs )
10784 {
10785 memcpy( this, &rhs, sizeof(RenderPassMultiviewCreateInfoKHX) );
10786 }
10787
10788 RenderPassMultiviewCreateInfoKHX& operator=( VkRenderPassMultiviewCreateInfoKHX const & rhs )
10789 {
10790 memcpy( this, &rhs, sizeof(RenderPassMultiviewCreateInfoKHX) );
10791 return *this;
10792 }
10793
10794 RenderPassMultiviewCreateInfoKHX& setPNext( const void* pNext_ )
10795 {
10796 pNext = pNext_;
10797 return *this;
10798 }
10799
10800 RenderPassMultiviewCreateInfoKHX& setSubpassCount( uint32_t subpassCount_ )
10801 {
10802 subpassCount = subpassCount_;
10803 return *this;
10804 }
10805
10806 RenderPassMultiviewCreateInfoKHX& setPViewMasks( const uint32_t* pViewMasks_ )
10807 {
10808 pViewMasks = pViewMasks_;
10809 return *this;
10810 }
10811
10812 RenderPassMultiviewCreateInfoKHX& setDependencyCount( uint32_t dependencyCount_ )
10813 {
10814 dependencyCount = dependencyCount_;
10815 return *this;
10816 }
10817
10818 RenderPassMultiviewCreateInfoKHX& setPViewOffsets( const int32_t* pViewOffsets_ )
10819 {
10820 pViewOffsets = pViewOffsets_;
10821 return *this;
10822 }
10823
10824 RenderPassMultiviewCreateInfoKHX& setCorrelationMaskCount( uint32_t correlationMaskCount_ )
10825 {
10826 correlationMaskCount = correlationMaskCount_;
10827 return *this;
10828 }
10829
10830 RenderPassMultiviewCreateInfoKHX& setPCorrelationMasks( const uint32_t* pCorrelationMasks_ )
10831 {
10832 pCorrelationMasks = pCorrelationMasks_;
10833 return *this;
10834 }
10835
10836 operator const VkRenderPassMultiviewCreateInfoKHX&() const
10837 {
10838 return *reinterpret_cast<const VkRenderPassMultiviewCreateInfoKHX*>(this);
10839 }
10840
10841 bool operator==( RenderPassMultiviewCreateInfoKHX const& rhs ) const
10842 {
10843 return ( sType == rhs.sType )
10844 && ( pNext == rhs.pNext )
10845 && ( subpassCount == rhs.subpassCount )
10846 && ( pViewMasks == rhs.pViewMasks )
10847 && ( dependencyCount == rhs.dependencyCount )
10848 && ( pViewOffsets == rhs.pViewOffsets )
10849 && ( correlationMaskCount == rhs.correlationMaskCount )
10850 && ( pCorrelationMasks == rhs.pCorrelationMasks );
10851 }
10852
10853 bool operator!=( RenderPassMultiviewCreateInfoKHX const& rhs ) const
10854 {
10855 return !operator==( rhs );
10856 }
10857
10858 private:
10859 StructureType sType;
10860
10861 public:
10862 const void* pNext;
10863 uint32_t subpassCount;
10864 const uint32_t* pViewMasks;
10865 uint32_t dependencyCount;
10866 const int32_t* pViewOffsets;
10867 uint32_t correlationMaskCount;
10868 const uint32_t* pCorrelationMasks;
10869 };
10870 static_assert( sizeof( RenderPassMultiviewCreateInfoKHX ) == sizeof( VkRenderPassMultiviewCreateInfoKHX ), "struct and wrapper have different size!" );
10871
10872 struct BindBufferMemoryInfoKHX
10873 {
10874 BindBufferMemoryInfoKHX( Buffer buffer_ = Buffer(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, uint32_t deviceIndexCount_ = 0, const uint32_t* pDeviceIndices_ = nullptr )
10875 : sType( StructureType::eBindBufferMemoryInfoKHX )
10876 , pNext( nullptr )
10877 , buffer( buffer_ )
10878 , memory( memory_ )
10879 , memoryOffset( memoryOffset_ )
10880 , deviceIndexCount( deviceIndexCount_ )
10881 , pDeviceIndices( pDeviceIndices_ )
10882 {
10883 }
10884
10885 BindBufferMemoryInfoKHX( VkBindBufferMemoryInfoKHX const & rhs )
10886 {
10887 memcpy( this, &rhs, sizeof(BindBufferMemoryInfoKHX) );
10888 }
10889
10890 BindBufferMemoryInfoKHX& operator=( VkBindBufferMemoryInfoKHX const & rhs )
10891 {
10892 memcpy( this, &rhs, sizeof(BindBufferMemoryInfoKHX) );
10893 return *this;
10894 }
10895
10896 BindBufferMemoryInfoKHX& setPNext( const void* pNext_ )
10897 {
10898 pNext = pNext_;
10899 return *this;
10900 }
10901
10902 BindBufferMemoryInfoKHX& setBuffer( Buffer buffer_ )
10903 {
10904 buffer = buffer_;
10905 return *this;
10906 }
10907
10908 BindBufferMemoryInfoKHX& setMemory( DeviceMemory memory_ )
10909 {
10910 memory = memory_;
10911 return *this;
10912 }
10913
10914 BindBufferMemoryInfoKHX& setMemoryOffset( DeviceSize memoryOffset_ )
10915 {
10916 memoryOffset = memoryOffset_;
10917 return *this;
10918 }
10919
10920 BindBufferMemoryInfoKHX& setDeviceIndexCount( uint32_t deviceIndexCount_ )
10921 {
10922 deviceIndexCount = deviceIndexCount_;
10923 return *this;
10924 }
10925
10926 BindBufferMemoryInfoKHX& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
10927 {
10928 pDeviceIndices = pDeviceIndices_;
10929 return *this;
10930 }
10931
10932 operator const VkBindBufferMemoryInfoKHX&() const
10933 {
10934 return *reinterpret_cast<const VkBindBufferMemoryInfoKHX*>(this);
10935 }
10936
10937 bool operator==( BindBufferMemoryInfoKHX const& rhs ) const
10938 {
10939 return ( sType == rhs.sType )
10940 && ( pNext == rhs.pNext )
10941 && ( buffer == rhs.buffer )
10942 && ( memory == rhs.memory )
10943 && ( memoryOffset == rhs.memoryOffset )
10944 && ( deviceIndexCount == rhs.deviceIndexCount )
10945 && ( pDeviceIndices == rhs.pDeviceIndices );
10946 }
10947
10948 bool operator!=( BindBufferMemoryInfoKHX const& rhs ) const
10949 {
10950 return !operator==( rhs );
10951 }
10952
10953 private:
10954 StructureType sType;
10955
10956 public:
10957 const void* pNext;
10958 Buffer buffer;
10959 DeviceMemory memory;
10960 DeviceSize memoryOffset;
10961 uint32_t deviceIndexCount;
10962 const uint32_t* pDeviceIndices;
10963 };
10964 static_assert( sizeof( BindBufferMemoryInfoKHX ) == sizeof( VkBindBufferMemoryInfoKHX ), "struct and wrapper have different size!" );
10965
10966 struct BindImageMemoryInfoKHX
10967 {
10968 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 )
10969 : sType( StructureType::eBindImageMemoryInfoKHX )
10970 , pNext( nullptr )
10971 , image( image_ )
10972 , memory( memory_ )
10973 , memoryOffset( memoryOffset_ )
10974 , deviceIndexCount( deviceIndexCount_ )
10975 , pDeviceIndices( pDeviceIndices_ )
10976 , SFRRectCount( SFRRectCount_ )
10977 , pSFRRects( pSFRRects_ )
10978 {
10979 }
10980
10981 BindImageMemoryInfoKHX( VkBindImageMemoryInfoKHX const & rhs )
10982 {
10983 memcpy( this, &rhs, sizeof(BindImageMemoryInfoKHX) );
10984 }
10985
10986 BindImageMemoryInfoKHX& operator=( VkBindImageMemoryInfoKHX const & rhs )
10987 {
10988 memcpy( this, &rhs, sizeof(BindImageMemoryInfoKHX) );
10989 return *this;
10990 }
10991
10992 BindImageMemoryInfoKHX& setPNext( const void* pNext_ )
10993 {
10994 pNext = pNext_;
10995 return *this;
10996 }
10997
10998 BindImageMemoryInfoKHX& setImage( Image image_ )
10999 {
11000 image = image_;
11001 return *this;
11002 }
11003
11004 BindImageMemoryInfoKHX& setMemory( DeviceMemory memory_ )
11005 {
11006 memory = memory_;
11007 return *this;
11008 }
11009
11010 BindImageMemoryInfoKHX& setMemoryOffset( DeviceSize memoryOffset_ )
11011 {
11012 memoryOffset = memoryOffset_;
11013 return *this;
11014 }
11015
11016 BindImageMemoryInfoKHX& setDeviceIndexCount( uint32_t deviceIndexCount_ )
11017 {
11018 deviceIndexCount = deviceIndexCount_;
11019 return *this;
11020 }
11021
11022 BindImageMemoryInfoKHX& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
11023 {
11024 pDeviceIndices = pDeviceIndices_;
11025 return *this;
11026 }
11027
11028 BindImageMemoryInfoKHX& setSFRRectCount( uint32_t SFRRectCount_ )
11029 {
11030 SFRRectCount = SFRRectCount_;
11031 return *this;
11032 }
11033
11034 BindImageMemoryInfoKHX& setPSFRRects( const Rect2D* pSFRRects_ )
11035 {
11036 pSFRRects = pSFRRects_;
11037 return *this;
11038 }
11039
11040 operator const VkBindImageMemoryInfoKHX&() const
11041 {
11042 return *reinterpret_cast<const VkBindImageMemoryInfoKHX*>(this);
11043 }
11044
11045 bool operator==( BindImageMemoryInfoKHX const& rhs ) const
11046 {
11047 return ( sType == rhs.sType )
11048 && ( pNext == rhs.pNext )
11049 && ( image == rhs.image )
11050 && ( memory == rhs.memory )
11051 && ( memoryOffset == rhs.memoryOffset )
11052 && ( deviceIndexCount == rhs.deviceIndexCount )
11053 && ( pDeviceIndices == rhs.pDeviceIndices )
11054 && ( SFRRectCount == rhs.SFRRectCount )
11055 && ( pSFRRects == rhs.pSFRRects );
11056 }
11057
11058 bool operator!=( BindImageMemoryInfoKHX const& rhs ) const
11059 {
11060 return !operator==( rhs );
11061 }
11062
11063 private:
11064 StructureType sType;
11065
11066 public:
11067 const void* pNext;
11068 Image image;
11069 DeviceMemory memory;
11070 DeviceSize memoryOffset;
11071 uint32_t deviceIndexCount;
11072 const uint32_t* pDeviceIndices;
11073 uint32_t SFRRectCount;
11074 const Rect2D* pSFRRects;
11075 };
11076 static_assert( sizeof( BindImageMemoryInfoKHX ) == sizeof( VkBindImageMemoryInfoKHX ), "struct and wrapper have different size!" );
11077
11078 struct DeviceGroupRenderPassBeginInfoKHX
11079 {
11080 DeviceGroupRenderPassBeginInfoKHX( uint32_t deviceMask_ = 0, uint32_t deviceRenderAreaCount_ = 0, const Rect2D* pDeviceRenderAreas_ = nullptr )
11081 : sType( StructureType::eDeviceGroupRenderPassBeginInfoKHX )
11082 , pNext( nullptr )
11083 , deviceMask( deviceMask_ )
11084 , deviceRenderAreaCount( deviceRenderAreaCount_ )
11085 , pDeviceRenderAreas( pDeviceRenderAreas_ )
11086 {
11087 }
11088
11089 DeviceGroupRenderPassBeginInfoKHX( VkDeviceGroupRenderPassBeginInfoKHX const & rhs )
11090 {
11091 memcpy( this, &rhs, sizeof(DeviceGroupRenderPassBeginInfoKHX) );
11092 }
11093
11094 DeviceGroupRenderPassBeginInfoKHX& operator=( VkDeviceGroupRenderPassBeginInfoKHX const & rhs )
11095 {
11096 memcpy( this, &rhs, sizeof(DeviceGroupRenderPassBeginInfoKHX) );
11097 return *this;
11098 }
11099
11100 DeviceGroupRenderPassBeginInfoKHX& setPNext( const void* pNext_ )
11101 {
11102 pNext = pNext_;
11103 return *this;
11104 }
11105
11106 DeviceGroupRenderPassBeginInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11107 {
11108 deviceMask = deviceMask_;
11109 return *this;
11110 }
11111
11112 DeviceGroupRenderPassBeginInfoKHX& setDeviceRenderAreaCount( uint32_t deviceRenderAreaCount_ )
11113 {
11114 deviceRenderAreaCount = deviceRenderAreaCount_;
11115 return *this;
11116 }
11117
11118 DeviceGroupRenderPassBeginInfoKHX& setPDeviceRenderAreas( const Rect2D* pDeviceRenderAreas_ )
11119 {
11120 pDeviceRenderAreas = pDeviceRenderAreas_;
11121 return *this;
11122 }
11123
11124 operator const VkDeviceGroupRenderPassBeginInfoKHX&() const
11125 {
11126 return *reinterpret_cast<const VkDeviceGroupRenderPassBeginInfoKHX*>(this);
11127 }
11128
11129 bool operator==( DeviceGroupRenderPassBeginInfoKHX const& rhs ) const
11130 {
11131 return ( sType == rhs.sType )
11132 && ( pNext == rhs.pNext )
11133 && ( deviceMask == rhs.deviceMask )
11134 && ( deviceRenderAreaCount == rhs.deviceRenderAreaCount )
11135 && ( pDeviceRenderAreas == rhs.pDeviceRenderAreas );
11136 }
11137
11138 bool operator!=( DeviceGroupRenderPassBeginInfoKHX const& rhs ) const
11139 {
11140 return !operator==( rhs );
11141 }
11142
11143 private:
11144 StructureType sType;
11145
11146 public:
11147 const void* pNext;
11148 uint32_t deviceMask;
11149 uint32_t deviceRenderAreaCount;
11150 const Rect2D* pDeviceRenderAreas;
11151 };
11152 static_assert( sizeof( DeviceGroupRenderPassBeginInfoKHX ) == sizeof( VkDeviceGroupRenderPassBeginInfoKHX ), "struct and wrapper have different size!" );
11153
11154 struct DeviceGroupCommandBufferBeginInfoKHX
11155 {
11156 DeviceGroupCommandBufferBeginInfoKHX( uint32_t deviceMask_ = 0 )
11157 : sType( StructureType::eDeviceGroupCommandBufferBeginInfoKHX )
11158 , pNext( nullptr )
11159 , deviceMask( deviceMask_ )
11160 {
11161 }
11162
11163 DeviceGroupCommandBufferBeginInfoKHX( VkDeviceGroupCommandBufferBeginInfoKHX const & rhs )
11164 {
11165 memcpy( this, &rhs, sizeof(DeviceGroupCommandBufferBeginInfoKHX) );
11166 }
11167
11168 DeviceGroupCommandBufferBeginInfoKHX& operator=( VkDeviceGroupCommandBufferBeginInfoKHX const & rhs )
11169 {
11170 memcpy( this, &rhs, sizeof(DeviceGroupCommandBufferBeginInfoKHX) );
11171 return *this;
11172 }
11173
11174 DeviceGroupCommandBufferBeginInfoKHX& setPNext( const void* pNext_ )
11175 {
11176 pNext = pNext_;
11177 return *this;
11178 }
11179
11180 DeviceGroupCommandBufferBeginInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11181 {
11182 deviceMask = deviceMask_;
11183 return *this;
11184 }
11185
11186 operator const VkDeviceGroupCommandBufferBeginInfoKHX&() const
11187 {
11188 return *reinterpret_cast<const VkDeviceGroupCommandBufferBeginInfoKHX*>(this);
11189 }
11190
11191 bool operator==( DeviceGroupCommandBufferBeginInfoKHX const& rhs ) const
11192 {
11193 return ( sType == rhs.sType )
11194 && ( pNext == rhs.pNext )
11195 && ( deviceMask == rhs.deviceMask );
11196 }
11197
11198 bool operator!=( DeviceGroupCommandBufferBeginInfoKHX const& rhs ) const
11199 {
11200 return !operator==( rhs );
11201 }
11202
11203 private:
11204 StructureType sType;
11205
11206 public:
11207 const void* pNext;
11208 uint32_t deviceMask;
11209 };
11210 static_assert( sizeof( DeviceGroupCommandBufferBeginInfoKHX ) == sizeof( VkDeviceGroupCommandBufferBeginInfoKHX ), "struct and wrapper have different size!" );
11211
11212 struct DeviceGroupSubmitInfoKHX
11213 {
11214 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 )
11215 : sType( StructureType::eDeviceGroupSubmitInfoKHX )
11216 , pNext( nullptr )
11217 , waitSemaphoreCount( waitSemaphoreCount_ )
11218 , pWaitSemaphoreDeviceIndices( pWaitSemaphoreDeviceIndices_ )
11219 , commandBufferCount( commandBufferCount_ )
11220 , pCommandBufferDeviceMasks( pCommandBufferDeviceMasks_ )
11221 , signalSemaphoreCount( signalSemaphoreCount_ )
11222 , pSignalSemaphoreDeviceIndices( pSignalSemaphoreDeviceIndices_ )
11223 {
11224 }
11225
11226 DeviceGroupSubmitInfoKHX( VkDeviceGroupSubmitInfoKHX const & rhs )
11227 {
11228 memcpy( this, &rhs, sizeof(DeviceGroupSubmitInfoKHX) );
11229 }
11230
11231 DeviceGroupSubmitInfoKHX& operator=( VkDeviceGroupSubmitInfoKHX const & rhs )
11232 {
11233 memcpy( this, &rhs, sizeof(DeviceGroupSubmitInfoKHX) );
11234 return *this;
11235 }
11236
11237 DeviceGroupSubmitInfoKHX& setPNext( const void* pNext_ )
11238 {
11239 pNext = pNext_;
11240 return *this;
11241 }
11242
11243 DeviceGroupSubmitInfoKHX& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
11244 {
11245 waitSemaphoreCount = waitSemaphoreCount_;
11246 return *this;
11247 }
11248
11249 DeviceGroupSubmitInfoKHX& setPWaitSemaphoreDeviceIndices( const uint32_t* pWaitSemaphoreDeviceIndices_ )
11250 {
11251 pWaitSemaphoreDeviceIndices = pWaitSemaphoreDeviceIndices_;
11252 return *this;
11253 }
11254
11255 DeviceGroupSubmitInfoKHX& setCommandBufferCount( uint32_t commandBufferCount_ )
11256 {
11257 commandBufferCount = commandBufferCount_;
11258 return *this;
11259 }
11260
11261 DeviceGroupSubmitInfoKHX& setPCommandBufferDeviceMasks( const uint32_t* pCommandBufferDeviceMasks_ )
11262 {
11263 pCommandBufferDeviceMasks = pCommandBufferDeviceMasks_;
11264 return *this;
11265 }
11266
11267 DeviceGroupSubmitInfoKHX& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
11268 {
11269 signalSemaphoreCount = signalSemaphoreCount_;
11270 return *this;
11271 }
11272
11273 DeviceGroupSubmitInfoKHX& setPSignalSemaphoreDeviceIndices( const uint32_t* pSignalSemaphoreDeviceIndices_ )
11274 {
11275 pSignalSemaphoreDeviceIndices = pSignalSemaphoreDeviceIndices_;
11276 return *this;
11277 }
11278
11279 operator const VkDeviceGroupSubmitInfoKHX&() const
11280 {
11281 return *reinterpret_cast<const VkDeviceGroupSubmitInfoKHX*>(this);
11282 }
11283
11284 bool operator==( DeviceGroupSubmitInfoKHX const& rhs ) const
11285 {
11286 return ( sType == rhs.sType )
11287 && ( pNext == rhs.pNext )
11288 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
11289 && ( pWaitSemaphoreDeviceIndices == rhs.pWaitSemaphoreDeviceIndices )
11290 && ( commandBufferCount == rhs.commandBufferCount )
11291 && ( pCommandBufferDeviceMasks == rhs.pCommandBufferDeviceMasks )
11292 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
11293 && ( pSignalSemaphoreDeviceIndices == rhs.pSignalSemaphoreDeviceIndices );
11294 }
11295
11296 bool operator!=( DeviceGroupSubmitInfoKHX const& rhs ) const
11297 {
11298 return !operator==( rhs );
11299 }
11300
11301 private:
11302 StructureType sType;
11303
11304 public:
11305 const void* pNext;
11306 uint32_t waitSemaphoreCount;
11307 const uint32_t* pWaitSemaphoreDeviceIndices;
11308 uint32_t commandBufferCount;
11309 const uint32_t* pCommandBufferDeviceMasks;
11310 uint32_t signalSemaphoreCount;
11311 const uint32_t* pSignalSemaphoreDeviceIndices;
11312 };
11313 static_assert( sizeof( DeviceGroupSubmitInfoKHX ) == sizeof( VkDeviceGroupSubmitInfoKHX ), "struct and wrapper have different size!" );
11314
11315 struct DeviceGroupBindSparseInfoKHX
11316 {
11317 DeviceGroupBindSparseInfoKHX( uint32_t resourceDeviceIndex_ = 0, uint32_t memoryDeviceIndex_ = 0 )
11318 : sType( StructureType::eDeviceGroupBindSparseInfoKHX )
11319 , pNext( nullptr )
11320 , resourceDeviceIndex( resourceDeviceIndex_ )
11321 , memoryDeviceIndex( memoryDeviceIndex_ )
11322 {
11323 }
11324
11325 DeviceGroupBindSparseInfoKHX( VkDeviceGroupBindSparseInfoKHX const & rhs )
11326 {
11327 memcpy( this, &rhs, sizeof(DeviceGroupBindSparseInfoKHX) );
11328 }
11329
11330 DeviceGroupBindSparseInfoKHX& operator=( VkDeviceGroupBindSparseInfoKHX const & rhs )
11331 {
11332 memcpy( this, &rhs, sizeof(DeviceGroupBindSparseInfoKHX) );
11333 return *this;
11334 }
11335
11336 DeviceGroupBindSparseInfoKHX& setPNext( const void* pNext_ )
11337 {
11338 pNext = pNext_;
11339 return *this;
11340 }
11341
11342 DeviceGroupBindSparseInfoKHX& setResourceDeviceIndex( uint32_t resourceDeviceIndex_ )
11343 {
11344 resourceDeviceIndex = resourceDeviceIndex_;
11345 return *this;
11346 }
11347
11348 DeviceGroupBindSparseInfoKHX& setMemoryDeviceIndex( uint32_t memoryDeviceIndex_ )
11349 {
11350 memoryDeviceIndex = memoryDeviceIndex_;
11351 return *this;
11352 }
11353
11354 operator const VkDeviceGroupBindSparseInfoKHX&() const
11355 {
11356 return *reinterpret_cast<const VkDeviceGroupBindSparseInfoKHX*>(this);
11357 }
11358
11359 bool operator==( DeviceGroupBindSparseInfoKHX const& rhs ) const
11360 {
11361 return ( sType == rhs.sType )
11362 && ( pNext == rhs.pNext )
11363 && ( resourceDeviceIndex == rhs.resourceDeviceIndex )
11364 && ( memoryDeviceIndex == rhs.memoryDeviceIndex );
11365 }
11366
11367 bool operator!=( DeviceGroupBindSparseInfoKHX const& rhs ) const
11368 {
11369 return !operator==( rhs );
11370 }
11371
11372 private:
11373 StructureType sType;
11374
11375 public:
11376 const void* pNext;
11377 uint32_t resourceDeviceIndex;
11378 uint32_t memoryDeviceIndex;
11379 };
11380 static_assert( sizeof( DeviceGroupBindSparseInfoKHX ) == sizeof( VkDeviceGroupBindSparseInfoKHX ), "struct and wrapper have different size!" );
11381
11382 struct ImageSwapchainCreateInfoKHX
11383 {
11384 ImageSwapchainCreateInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR() )
11385 : sType( StructureType::eImageSwapchainCreateInfoKHX )
11386 , pNext( nullptr )
11387 , swapchain( swapchain_ )
11388 {
11389 }
11390
11391 ImageSwapchainCreateInfoKHX( VkImageSwapchainCreateInfoKHX const & rhs )
11392 {
11393 memcpy( this, &rhs, sizeof(ImageSwapchainCreateInfoKHX) );
11394 }
11395
11396 ImageSwapchainCreateInfoKHX& operator=( VkImageSwapchainCreateInfoKHX const & rhs )
11397 {
11398 memcpy( this, &rhs, sizeof(ImageSwapchainCreateInfoKHX) );
11399 return *this;
11400 }
11401
11402 ImageSwapchainCreateInfoKHX& setPNext( const void* pNext_ )
11403 {
11404 pNext = pNext_;
11405 return *this;
11406 }
11407
11408 ImageSwapchainCreateInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11409 {
11410 swapchain = swapchain_;
11411 return *this;
11412 }
11413
11414 operator const VkImageSwapchainCreateInfoKHX&() const
11415 {
11416 return *reinterpret_cast<const VkImageSwapchainCreateInfoKHX*>(this);
11417 }
11418
11419 bool operator==( ImageSwapchainCreateInfoKHX const& rhs ) const
11420 {
11421 return ( sType == rhs.sType )
11422 && ( pNext == rhs.pNext )
11423 && ( swapchain == rhs.swapchain );
11424 }
11425
11426 bool operator!=( ImageSwapchainCreateInfoKHX const& rhs ) const
11427 {
11428 return !operator==( rhs );
11429 }
11430
11431 private:
11432 StructureType sType;
11433
11434 public:
11435 const void* pNext;
11436 SwapchainKHR swapchain;
11437 };
11438 static_assert( sizeof( ImageSwapchainCreateInfoKHX ) == sizeof( VkImageSwapchainCreateInfoKHX ), "struct and wrapper have different size!" );
11439
11440 struct BindImageMemorySwapchainInfoKHX
11441 {
11442 BindImageMemorySwapchainInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR(), uint32_t imageIndex_ = 0 )
11443 : sType( StructureType::eBindImageMemorySwapchainInfoKHX )
11444 , pNext( nullptr )
11445 , swapchain( swapchain_ )
11446 , imageIndex( imageIndex_ )
11447 {
11448 }
11449
11450 BindImageMemorySwapchainInfoKHX( VkBindImageMemorySwapchainInfoKHX const & rhs )
11451 {
11452 memcpy( this, &rhs, sizeof(BindImageMemorySwapchainInfoKHX) );
11453 }
11454
11455 BindImageMemorySwapchainInfoKHX& operator=( VkBindImageMemorySwapchainInfoKHX const & rhs )
11456 {
11457 memcpy( this, &rhs, sizeof(BindImageMemorySwapchainInfoKHX) );
11458 return *this;
11459 }
11460
11461 BindImageMemorySwapchainInfoKHX& setPNext( const void* pNext_ )
11462 {
11463 pNext = pNext_;
11464 return *this;
11465 }
11466
11467 BindImageMemorySwapchainInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11468 {
11469 swapchain = swapchain_;
11470 return *this;
11471 }
11472
11473 BindImageMemorySwapchainInfoKHX& setImageIndex( uint32_t imageIndex_ )
11474 {
11475 imageIndex = imageIndex_;
11476 return *this;
11477 }
11478
11479 operator const VkBindImageMemorySwapchainInfoKHX&() const
11480 {
11481 return *reinterpret_cast<const VkBindImageMemorySwapchainInfoKHX*>(this);
11482 }
11483
11484 bool operator==( BindImageMemorySwapchainInfoKHX const& rhs ) const
11485 {
11486 return ( sType == rhs.sType )
11487 && ( pNext == rhs.pNext )
11488 && ( swapchain == rhs.swapchain )
11489 && ( imageIndex == rhs.imageIndex );
11490 }
11491
11492 bool operator!=( BindImageMemorySwapchainInfoKHX const& rhs ) const
11493 {
11494 return !operator==( rhs );
11495 }
11496
11497 private:
11498 StructureType sType;
11499
11500 public:
11501 const void* pNext;
11502 SwapchainKHR swapchain;
11503 uint32_t imageIndex;
11504 };
11505 static_assert( sizeof( BindImageMemorySwapchainInfoKHX ) == sizeof( VkBindImageMemorySwapchainInfoKHX ), "struct and wrapper have different size!" );
11506
11507 struct AcquireNextImageInfoKHX
11508 {
11509 AcquireNextImageInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR(), uint64_t timeout_ = 0, Semaphore semaphore_ = Semaphore(), Fence fence_ = Fence(), uint32_t deviceMask_ = 0 )
11510 : sType( StructureType::eAcquireNextImageInfoKHX )
11511 , pNext( nullptr )
11512 , swapchain( swapchain_ )
11513 , timeout( timeout_ )
11514 , semaphore( semaphore_ )
11515 , fence( fence_ )
11516 , deviceMask( deviceMask_ )
11517 {
11518 }
11519
11520 AcquireNextImageInfoKHX( VkAcquireNextImageInfoKHX const & rhs )
11521 {
11522 memcpy( this, &rhs, sizeof(AcquireNextImageInfoKHX) );
11523 }
11524
11525 AcquireNextImageInfoKHX& operator=( VkAcquireNextImageInfoKHX const & rhs )
11526 {
11527 memcpy( this, &rhs, sizeof(AcquireNextImageInfoKHX) );
11528 return *this;
11529 }
11530
11531 AcquireNextImageInfoKHX& setPNext( const void* pNext_ )
11532 {
11533 pNext = pNext_;
11534 return *this;
11535 }
11536
11537 AcquireNextImageInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11538 {
11539 swapchain = swapchain_;
11540 return *this;
11541 }
11542
11543 AcquireNextImageInfoKHX& setTimeout( uint64_t timeout_ )
11544 {
11545 timeout = timeout_;
11546 return *this;
11547 }
11548
11549 AcquireNextImageInfoKHX& setSemaphore( Semaphore semaphore_ )
11550 {
11551 semaphore = semaphore_;
11552 return *this;
11553 }
11554
11555 AcquireNextImageInfoKHX& setFence( Fence fence_ )
11556 {
11557 fence = fence_;
11558 return *this;
11559 }
11560
11561 AcquireNextImageInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11562 {
11563 deviceMask = deviceMask_;
11564 return *this;
11565 }
11566
11567 operator const VkAcquireNextImageInfoKHX&() const
11568 {
11569 return *reinterpret_cast<const VkAcquireNextImageInfoKHX*>(this);
11570 }
11571
11572 bool operator==( AcquireNextImageInfoKHX const& rhs ) const
11573 {
11574 return ( sType == rhs.sType )
11575 && ( pNext == rhs.pNext )
11576 && ( swapchain == rhs.swapchain )
11577 && ( timeout == rhs.timeout )
11578 && ( semaphore == rhs.semaphore )
11579 && ( fence == rhs.fence )
11580 && ( deviceMask == rhs.deviceMask );
11581 }
11582
11583 bool operator!=( AcquireNextImageInfoKHX const& rhs ) const
11584 {
11585 return !operator==( rhs );
11586 }
11587
11588 private:
11589 StructureType sType;
11590
11591 public:
11592 const void* pNext;
11593 SwapchainKHR swapchain;
11594 uint64_t timeout;
11595 Semaphore semaphore;
11596 Fence fence;
11597 uint32_t deviceMask;
11598 };
11599 static_assert( sizeof( AcquireNextImageInfoKHX ) == sizeof( VkAcquireNextImageInfoKHX ), "struct and wrapper have different size!" );
11600
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060011601 struct HdrMetadataEXT
11602 {
11603 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 )
11604 : sType( StructureType::eHdrMetadataEXT )
11605 , pNext( nullptr )
11606 , displayPrimaryRed( displayPrimaryRed_ )
11607 , displayPrimaryGreen( displayPrimaryGreen_ )
11608 , displayPrimaryBlue( displayPrimaryBlue_ )
11609 , whitePoint( whitePoint_ )
11610 , maxLuminance( maxLuminance_ )
11611 , minLuminance( minLuminance_ )
11612 , maxContentLightLevel( maxContentLightLevel_ )
11613 , maxFrameAverageLightLevel( maxFrameAverageLightLevel_ )
11614 {
11615 }
11616
11617 HdrMetadataEXT( VkHdrMetadataEXT const & rhs )
11618 {
11619 memcpy( this, &rhs, sizeof(HdrMetadataEXT) );
11620 }
11621
11622 HdrMetadataEXT& operator=( VkHdrMetadataEXT const & rhs )
11623 {
11624 memcpy( this, &rhs, sizeof(HdrMetadataEXT) );
11625 return *this;
11626 }
11627
11628 HdrMetadataEXT& setPNext( const void* pNext_ )
11629 {
11630 pNext = pNext_;
11631 return *this;
11632 }
11633
11634 HdrMetadataEXT& setDisplayPrimaryRed( XYColorEXT displayPrimaryRed_ )
11635 {
11636 displayPrimaryRed = displayPrimaryRed_;
11637 return *this;
11638 }
11639
11640 HdrMetadataEXT& setDisplayPrimaryGreen( XYColorEXT displayPrimaryGreen_ )
11641 {
11642 displayPrimaryGreen = displayPrimaryGreen_;
11643 return *this;
11644 }
11645
11646 HdrMetadataEXT& setDisplayPrimaryBlue( XYColorEXT displayPrimaryBlue_ )
11647 {
11648 displayPrimaryBlue = displayPrimaryBlue_;
11649 return *this;
11650 }
11651
11652 HdrMetadataEXT& setWhitePoint( XYColorEXT whitePoint_ )
11653 {
11654 whitePoint = whitePoint_;
11655 return *this;
11656 }
11657
11658 HdrMetadataEXT& setMaxLuminance( float maxLuminance_ )
11659 {
11660 maxLuminance = maxLuminance_;
11661 return *this;
11662 }
11663
11664 HdrMetadataEXT& setMinLuminance( float minLuminance_ )
11665 {
11666 minLuminance = minLuminance_;
11667 return *this;
11668 }
11669
11670 HdrMetadataEXT& setMaxContentLightLevel( float maxContentLightLevel_ )
11671 {
11672 maxContentLightLevel = maxContentLightLevel_;
11673 return *this;
11674 }
11675
11676 HdrMetadataEXT& setMaxFrameAverageLightLevel( float maxFrameAverageLightLevel_ )
11677 {
11678 maxFrameAverageLightLevel = maxFrameAverageLightLevel_;
11679 return *this;
11680 }
11681
11682 operator const VkHdrMetadataEXT&() const
11683 {
11684 return *reinterpret_cast<const VkHdrMetadataEXT*>(this);
11685 }
11686
11687 bool operator==( HdrMetadataEXT const& rhs ) const
11688 {
11689 return ( sType == rhs.sType )
11690 && ( pNext == rhs.pNext )
11691 && ( displayPrimaryRed == rhs.displayPrimaryRed )
11692 && ( displayPrimaryGreen == rhs.displayPrimaryGreen )
11693 && ( displayPrimaryBlue == rhs.displayPrimaryBlue )
11694 && ( whitePoint == rhs.whitePoint )
11695 && ( maxLuminance == rhs.maxLuminance )
11696 && ( minLuminance == rhs.minLuminance )
11697 && ( maxContentLightLevel == rhs.maxContentLightLevel )
11698 && ( maxFrameAverageLightLevel == rhs.maxFrameAverageLightLevel );
11699 }
11700
11701 bool operator!=( HdrMetadataEXT const& rhs ) const
11702 {
11703 return !operator==( rhs );
11704 }
11705
11706 private:
11707 StructureType sType;
11708
11709 public:
11710 const void* pNext;
11711 XYColorEXT displayPrimaryRed;
11712 XYColorEXT displayPrimaryGreen;
11713 XYColorEXT displayPrimaryBlue;
11714 XYColorEXT whitePoint;
11715 float maxLuminance;
11716 float minLuminance;
11717 float maxContentLightLevel;
11718 float maxFrameAverageLightLevel;
11719 };
11720 static_assert( sizeof( HdrMetadataEXT ) == sizeof( VkHdrMetadataEXT ), "struct and wrapper have different size!" );
11721
11722 struct PresentTimesInfoGOOGLE
11723 {
11724 PresentTimesInfoGOOGLE( uint32_t swapchainCount_ = 0, const PresentTimeGOOGLE* pTimes_ = nullptr )
11725 : sType( StructureType::ePresentTimesInfoGOOGLE )
11726 , pNext( nullptr )
11727 , swapchainCount( swapchainCount_ )
11728 , pTimes( pTimes_ )
11729 {
11730 }
11731
11732 PresentTimesInfoGOOGLE( VkPresentTimesInfoGOOGLE const & rhs )
11733 {
11734 memcpy( this, &rhs, sizeof(PresentTimesInfoGOOGLE) );
11735 }
11736
11737 PresentTimesInfoGOOGLE& operator=( VkPresentTimesInfoGOOGLE const & rhs )
11738 {
11739 memcpy( this, &rhs, sizeof(PresentTimesInfoGOOGLE) );
11740 return *this;
11741 }
11742
11743 PresentTimesInfoGOOGLE& setPNext( const void* pNext_ )
11744 {
11745 pNext = pNext_;
11746 return *this;
11747 }
11748
11749 PresentTimesInfoGOOGLE& setSwapchainCount( uint32_t swapchainCount_ )
11750 {
11751 swapchainCount = swapchainCount_;
11752 return *this;
11753 }
11754
11755 PresentTimesInfoGOOGLE& setPTimes( const PresentTimeGOOGLE* pTimes_ )
11756 {
11757 pTimes = pTimes_;
11758 return *this;
11759 }
11760
11761 operator const VkPresentTimesInfoGOOGLE&() const
11762 {
11763 return *reinterpret_cast<const VkPresentTimesInfoGOOGLE*>(this);
11764 }
11765
11766 bool operator==( PresentTimesInfoGOOGLE const& rhs ) const
11767 {
11768 return ( sType == rhs.sType )
11769 && ( pNext == rhs.pNext )
11770 && ( swapchainCount == rhs.swapchainCount )
11771 && ( pTimes == rhs.pTimes );
11772 }
11773
11774 bool operator!=( PresentTimesInfoGOOGLE const& rhs ) const
11775 {
11776 return !operator==( rhs );
11777 }
11778
11779 private:
11780 StructureType sType;
11781
11782 public:
11783 const void* pNext;
11784 uint32_t swapchainCount;
11785 const PresentTimeGOOGLE* pTimes;
11786 };
11787 static_assert( sizeof( PresentTimesInfoGOOGLE ) == sizeof( VkPresentTimesInfoGOOGLE ), "struct and wrapper have different size!" );
11788
Mark Young0f183a82017-02-28 09:58:04 -070011789#ifdef VK_USE_PLATFORM_IOS_MVK
11790 struct IOSSurfaceCreateInfoMVK
11791 {
11792 IOSSurfaceCreateInfoMVK( IOSSurfaceCreateFlagsMVK flags_ = IOSSurfaceCreateFlagsMVK(), const void* pView_ = nullptr )
11793 : sType( StructureType::eIOSSurfaceCreateInfoMVK )
11794 , pNext( nullptr )
11795 , flags( flags_ )
11796 , pView( pView_ )
11797 {
11798 }
11799
11800 IOSSurfaceCreateInfoMVK( VkIOSSurfaceCreateInfoMVK const & rhs )
11801 {
11802 memcpy( this, &rhs, sizeof(IOSSurfaceCreateInfoMVK) );
11803 }
11804
11805 IOSSurfaceCreateInfoMVK& operator=( VkIOSSurfaceCreateInfoMVK const & rhs )
11806 {
11807 memcpy( this, &rhs, sizeof(IOSSurfaceCreateInfoMVK) );
11808 return *this;
11809 }
11810
11811 IOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
11812 {
11813 pNext = pNext_;
11814 return *this;
11815 }
11816
11817 IOSSurfaceCreateInfoMVK& setFlags( IOSSurfaceCreateFlagsMVK flags_ )
11818 {
11819 flags = flags_;
11820 return *this;
11821 }
11822
11823 IOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
11824 {
11825 pView = pView_;
11826 return *this;
11827 }
11828
11829 operator const VkIOSSurfaceCreateInfoMVK&() const
11830 {
11831 return *reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>(this);
11832 }
11833
11834 bool operator==( IOSSurfaceCreateInfoMVK const& rhs ) const
11835 {
11836 return ( sType == rhs.sType )
11837 && ( pNext == rhs.pNext )
11838 && ( flags == rhs.flags )
11839 && ( pView == rhs.pView );
11840 }
11841
11842 bool operator!=( IOSSurfaceCreateInfoMVK const& rhs ) const
11843 {
11844 return !operator==( rhs );
11845 }
11846
11847 private:
11848 StructureType sType;
11849
11850 public:
11851 const void* pNext;
11852 IOSSurfaceCreateFlagsMVK flags;
11853 const void* pView;
11854 };
11855 static_assert( sizeof( IOSSurfaceCreateInfoMVK ) == sizeof( VkIOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
11856#endif /*VK_USE_PLATFORM_IOS_MVK*/
11857
11858#ifdef VK_USE_PLATFORM_MACOS_MVK
11859 struct MacOSSurfaceCreateInfoMVK
11860 {
11861 MacOSSurfaceCreateInfoMVK( MacOSSurfaceCreateFlagsMVK flags_ = MacOSSurfaceCreateFlagsMVK(), const void* pView_ = nullptr )
11862 : sType( StructureType::eMacOSSurfaceCreateInfoMVK )
11863 , pNext( nullptr )
11864 , flags( flags_ )
11865 , pView( pView_ )
11866 {
11867 }
11868
11869 MacOSSurfaceCreateInfoMVK( VkMacOSSurfaceCreateInfoMVK const & rhs )
11870 {
11871 memcpy( this, &rhs, sizeof(MacOSSurfaceCreateInfoMVK) );
11872 }
11873
11874 MacOSSurfaceCreateInfoMVK& operator=( VkMacOSSurfaceCreateInfoMVK const & rhs )
11875 {
11876 memcpy( this, &rhs, sizeof(MacOSSurfaceCreateInfoMVK) );
11877 return *this;
11878 }
11879
11880 MacOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
11881 {
11882 pNext = pNext_;
11883 return *this;
11884 }
11885
11886 MacOSSurfaceCreateInfoMVK& setFlags( MacOSSurfaceCreateFlagsMVK flags_ )
11887 {
11888 flags = flags_;
11889 return *this;
11890 }
11891
11892 MacOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
11893 {
11894 pView = pView_;
11895 return *this;
11896 }
11897
11898 operator const VkMacOSSurfaceCreateInfoMVK&() const
11899 {
11900 return *reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>(this);
11901 }
11902
11903 bool operator==( MacOSSurfaceCreateInfoMVK const& rhs ) const
11904 {
11905 return ( sType == rhs.sType )
11906 && ( pNext == rhs.pNext )
11907 && ( flags == rhs.flags )
11908 && ( pView == rhs.pView );
11909 }
11910
11911 bool operator!=( MacOSSurfaceCreateInfoMVK const& rhs ) const
11912 {
11913 return !operator==( rhs );
11914 }
11915
11916 private:
11917 StructureType sType;
11918
11919 public:
11920 const void* pNext;
11921 MacOSSurfaceCreateFlagsMVK flags;
11922 const void* pView;
11923 };
11924 static_assert( sizeof( MacOSSurfaceCreateInfoMVK ) == sizeof( VkMacOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
11925#endif /*VK_USE_PLATFORM_MACOS_MVK*/
11926
11927 struct PipelineViewportWScalingStateCreateInfoNV
11928 {
11929 PipelineViewportWScalingStateCreateInfoNV( Bool32 viewportWScalingEnable_ = 0, uint32_t viewportCount_ = 0, const ViewportWScalingNV* pViewportWScalings_ = nullptr )
11930 : sType( StructureType::ePipelineViewportWScalingStateCreateInfoNV )
11931 , pNext( nullptr )
11932 , viewportWScalingEnable( viewportWScalingEnable_ )
11933 , viewportCount( viewportCount_ )
11934 , pViewportWScalings( pViewportWScalings_ )
11935 {
11936 }
11937
11938 PipelineViewportWScalingStateCreateInfoNV( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
11939 {
11940 memcpy( this, &rhs, sizeof(PipelineViewportWScalingStateCreateInfoNV) );
11941 }
11942
11943 PipelineViewportWScalingStateCreateInfoNV& operator=( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
11944 {
11945 memcpy( this, &rhs, sizeof(PipelineViewportWScalingStateCreateInfoNV) );
11946 return *this;
11947 }
11948
11949 PipelineViewportWScalingStateCreateInfoNV& setPNext( const void* pNext_ )
11950 {
11951 pNext = pNext_;
11952 return *this;
11953 }
11954
11955 PipelineViewportWScalingStateCreateInfoNV& setViewportWScalingEnable( Bool32 viewportWScalingEnable_ )
11956 {
11957 viewportWScalingEnable = viewportWScalingEnable_;
11958 return *this;
11959 }
11960
11961 PipelineViewportWScalingStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
11962 {
11963 viewportCount = viewportCount_;
11964 return *this;
11965 }
11966
11967 PipelineViewportWScalingStateCreateInfoNV& setPViewportWScalings( const ViewportWScalingNV* pViewportWScalings_ )
11968 {
11969 pViewportWScalings = pViewportWScalings_;
11970 return *this;
11971 }
11972
11973 operator const VkPipelineViewportWScalingStateCreateInfoNV&() const
11974 {
11975 return *reinterpret_cast<const VkPipelineViewportWScalingStateCreateInfoNV*>(this);
11976 }
11977
11978 bool operator==( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
11979 {
11980 return ( sType == rhs.sType )
11981 && ( pNext == rhs.pNext )
11982 && ( viewportWScalingEnable == rhs.viewportWScalingEnable )
11983 && ( viewportCount == rhs.viewportCount )
11984 && ( pViewportWScalings == rhs.pViewportWScalings );
11985 }
11986
11987 bool operator!=( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
11988 {
11989 return !operator==( rhs );
11990 }
11991
11992 private:
11993 StructureType sType;
11994
11995 public:
11996 const void* pNext;
11997 Bool32 viewportWScalingEnable;
11998 uint32_t viewportCount;
11999 const ViewportWScalingNV* pViewportWScalings;
12000 };
12001 static_assert( sizeof( PipelineViewportWScalingStateCreateInfoNV ) == sizeof( VkPipelineViewportWScalingStateCreateInfoNV ), "struct and wrapper have different size!" );
12002
12003 struct PhysicalDeviceDiscardRectanglePropertiesEXT
12004 {
12005 PhysicalDeviceDiscardRectanglePropertiesEXT( uint32_t maxDiscardRectangles_ = 0 )
12006 : sType( StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT )
12007 , pNext( nullptr )
12008 , maxDiscardRectangles( maxDiscardRectangles_ )
12009 {
12010 }
12011
12012 PhysicalDeviceDiscardRectanglePropertiesEXT( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
12013 {
12014 memcpy( this, &rhs, sizeof(PhysicalDeviceDiscardRectanglePropertiesEXT) );
12015 }
12016
12017 PhysicalDeviceDiscardRectanglePropertiesEXT& operator=( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
12018 {
12019 memcpy( this, &rhs, sizeof(PhysicalDeviceDiscardRectanglePropertiesEXT) );
12020 return *this;
12021 }
12022
Mark Lobodzinski3289d762017-04-03 08:22:04 -060012023 PhysicalDeviceDiscardRectanglePropertiesEXT& setPNext( void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070012024 {
12025 pNext = pNext_;
12026 return *this;
12027 }
12028
12029 PhysicalDeviceDiscardRectanglePropertiesEXT& setMaxDiscardRectangles( uint32_t maxDiscardRectangles_ )
12030 {
12031 maxDiscardRectangles = maxDiscardRectangles_;
12032 return *this;
12033 }
12034
12035 operator const VkPhysicalDeviceDiscardRectanglePropertiesEXT&() const
12036 {
12037 return *reinterpret_cast<const VkPhysicalDeviceDiscardRectanglePropertiesEXT*>(this);
12038 }
12039
12040 bool operator==( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
12041 {
12042 return ( sType == rhs.sType )
12043 && ( pNext == rhs.pNext )
12044 && ( maxDiscardRectangles == rhs.maxDiscardRectangles );
12045 }
12046
12047 bool operator!=( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
12048 {
12049 return !operator==( rhs );
12050 }
12051
12052 private:
12053 StructureType sType;
12054
12055 public:
Mark Lobodzinski3289d762017-04-03 08:22:04 -060012056 void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070012057 uint32_t maxDiscardRectangles;
12058 };
12059 static_assert( sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) == sizeof( VkPhysicalDeviceDiscardRectanglePropertiesEXT ), "struct and wrapper have different size!" );
12060
12061 struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
12062 {
12063 operator const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX&() const
12064 {
12065 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX*>(this);
12066 }
12067
12068 bool operator==( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
12069 {
12070 return ( sType == rhs.sType )
12071 && ( pNext == rhs.pNext )
12072 && ( perViewPositionAllComponents == rhs.perViewPositionAllComponents );
12073 }
12074
12075 bool operator!=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
12076 {
12077 return !operator==( rhs );
12078 }
12079
12080 private:
12081 StructureType sType;
12082
12083 public:
12084 void* pNext;
12085 Bool32 perViewPositionAllComponents;
12086 };
12087 static_assert( sizeof( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ) == sizeof( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ), "struct and wrapper have different size!" );
12088
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012089 enum class SubpassContents
12090 {
12091 eInline = VK_SUBPASS_CONTENTS_INLINE,
12092 eSecondaryCommandBuffers = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS
12093 };
12094
12095 struct PresentInfoKHR
12096 {
12097 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 )
12098 : sType( StructureType::ePresentInfoKHR )
12099 , pNext( nullptr )
12100 , waitSemaphoreCount( waitSemaphoreCount_ )
12101 , pWaitSemaphores( pWaitSemaphores_ )
12102 , swapchainCount( swapchainCount_ )
12103 , pSwapchains( pSwapchains_ )
12104 , pImageIndices( pImageIndices_ )
12105 , pResults( pResults_ )
12106 {
12107 }
12108
12109 PresentInfoKHR( VkPresentInfoKHR const & rhs )
12110 {
12111 memcpy( this, &rhs, sizeof(PresentInfoKHR) );
12112 }
12113
12114 PresentInfoKHR& operator=( VkPresentInfoKHR const & rhs )
12115 {
12116 memcpy( this, &rhs, sizeof(PresentInfoKHR) );
12117 return *this;
12118 }
12119
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012120 PresentInfoKHR& setPNext( const void* pNext_ )
12121 {
12122 pNext = pNext_;
12123 return *this;
12124 }
12125
12126 PresentInfoKHR& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
12127 {
12128 waitSemaphoreCount = waitSemaphoreCount_;
12129 return *this;
12130 }
12131
12132 PresentInfoKHR& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
12133 {
12134 pWaitSemaphores = pWaitSemaphores_;
12135 return *this;
12136 }
12137
12138 PresentInfoKHR& setSwapchainCount( uint32_t swapchainCount_ )
12139 {
12140 swapchainCount = swapchainCount_;
12141 return *this;
12142 }
12143
12144 PresentInfoKHR& setPSwapchains( const SwapchainKHR* pSwapchains_ )
12145 {
12146 pSwapchains = pSwapchains_;
12147 return *this;
12148 }
12149
12150 PresentInfoKHR& setPImageIndices( const uint32_t* pImageIndices_ )
12151 {
12152 pImageIndices = pImageIndices_;
12153 return *this;
12154 }
12155
12156 PresentInfoKHR& setPResults( Result* pResults_ )
12157 {
12158 pResults = pResults_;
12159 return *this;
12160 }
12161
12162 operator const VkPresentInfoKHR&() const
12163 {
12164 return *reinterpret_cast<const VkPresentInfoKHR*>(this);
12165 }
12166
12167 bool operator==( PresentInfoKHR const& rhs ) const
12168 {
12169 return ( sType == rhs.sType )
12170 && ( pNext == rhs.pNext )
12171 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
12172 && ( pWaitSemaphores == rhs.pWaitSemaphores )
12173 && ( swapchainCount == rhs.swapchainCount )
12174 && ( pSwapchains == rhs.pSwapchains )
12175 && ( pImageIndices == rhs.pImageIndices )
12176 && ( pResults == rhs.pResults );
12177 }
12178
12179 bool operator!=( PresentInfoKHR const& rhs ) const
12180 {
12181 return !operator==( rhs );
12182 }
12183
12184 private:
12185 StructureType sType;
12186
12187 public:
12188 const void* pNext;
12189 uint32_t waitSemaphoreCount;
12190 const Semaphore* pWaitSemaphores;
12191 uint32_t swapchainCount;
12192 const SwapchainKHR* pSwapchains;
12193 const uint32_t* pImageIndices;
12194 Result* pResults;
12195 };
12196 static_assert( sizeof( PresentInfoKHR ) == sizeof( VkPresentInfoKHR ), "struct and wrapper have different size!" );
12197
12198 enum class DynamicState
12199 {
12200 eViewport = VK_DYNAMIC_STATE_VIEWPORT,
12201 eScissor = VK_DYNAMIC_STATE_SCISSOR,
12202 eLineWidth = VK_DYNAMIC_STATE_LINE_WIDTH,
12203 eDepthBias = VK_DYNAMIC_STATE_DEPTH_BIAS,
12204 eBlendConstants = VK_DYNAMIC_STATE_BLEND_CONSTANTS,
12205 eDepthBounds = VK_DYNAMIC_STATE_DEPTH_BOUNDS,
12206 eStencilCompareMask = VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK,
12207 eStencilWriteMask = VK_DYNAMIC_STATE_STENCIL_WRITE_MASK,
Mark Young0f183a82017-02-28 09:58:04 -070012208 eStencilReference = VK_DYNAMIC_STATE_STENCIL_REFERENCE,
12209 eViewportWScalingNV = VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV,
12210 eDiscardRectangleEXT = VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012211 };
12212
12213 struct PipelineDynamicStateCreateInfo
12214 {
12215 PipelineDynamicStateCreateInfo( PipelineDynamicStateCreateFlags flags_ = PipelineDynamicStateCreateFlags(), uint32_t dynamicStateCount_ = 0, const DynamicState* pDynamicStates_ = nullptr )
12216 : sType( StructureType::ePipelineDynamicStateCreateInfo )
12217 , pNext( nullptr )
12218 , flags( flags_ )
12219 , dynamicStateCount( dynamicStateCount_ )
12220 , pDynamicStates( pDynamicStates_ )
12221 {
12222 }
12223
12224 PipelineDynamicStateCreateInfo( VkPipelineDynamicStateCreateInfo const & rhs )
12225 {
12226 memcpy( this, &rhs, sizeof(PipelineDynamicStateCreateInfo) );
12227 }
12228
12229 PipelineDynamicStateCreateInfo& operator=( VkPipelineDynamicStateCreateInfo const & rhs )
12230 {
12231 memcpy( this, &rhs, sizeof(PipelineDynamicStateCreateInfo) );
12232 return *this;
12233 }
12234
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012235 PipelineDynamicStateCreateInfo& setPNext( const void* pNext_ )
12236 {
12237 pNext = pNext_;
12238 return *this;
12239 }
12240
12241 PipelineDynamicStateCreateInfo& setFlags( PipelineDynamicStateCreateFlags flags_ )
12242 {
12243 flags = flags_;
12244 return *this;
12245 }
12246
12247 PipelineDynamicStateCreateInfo& setDynamicStateCount( uint32_t dynamicStateCount_ )
12248 {
12249 dynamicStateCount = dynamicStateCount_;
12250 return *this;
12251 }
12252
12253 PipelineDynamicStateCreateInfo& setPDynamicStates( const DynamicState* pDynamicStates_ )
12254 {
12255 pDynamicStates = pDynamicStates_;
12256 return *this;
12257 }
12258
12259 operator const VkPipelineDynamicStateCreateInfo&() const
12260 {
12261 return *reinterpret_cast<const VkPipelineDynamicStateCreateInfo*>(this);
12262 }
12263
12264 bool operator==( PipelineDynamicStateCreateInfo const& rhs ) const
12265 {
12266 return ( sType == rhs.sType )
12267 && ( pNext == rhs.pNext )
12268 && ( flags == rhs.flags )
12269 && ( dynamicStateCount == rhs.dynamicStateCount )
12270 && ( pDynamicStates == rhs.pDynamicStates );
12271 }
12272
12273 bool operator!=( PipelineDynamicStateCreateInfo const& rhs ) const
12274 {
12275 return !operator==( rhs );
12276 }
12277
12278 private:
12279 StructureType sType;
12280
12281 public:
12282 const void* pNext;
12283 PipelineDynamicStateCreateFlags flags;
12284 uint32_t dynamicStateCount;
12285 const DynamicState* pDynamicStates;
12286 };
12287 static_assert( sizeof( PipelineDynamicStateCreateInfo ) == sizeof( VkPipelineDynamicStateCreateInfo ), "struct and wrapper have different size!" );
12288
Mark Young0f183a82017-02-28 09:58:04 -070012289 enum class DescriptorUpdateTemplateTypeKHR
12290 {
12291 eDescriptorSet = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR,
12292 ePushDescriptors = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR
12293 };
12294
12295 struct DescriptorUpdateTemplateCreateInfoKHR
12296 {
12297 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 )
12298 : sType( StructureType::eDescriptorUpdateTemplateCreateInfoKHR )
12299 , pNext( nullptr )
12300 , flags( flags_ )
12301 , descriptorUpdateEntryCount( descriptorUpdateEntryCount_ )
12302 , pDescriptorUpdateEntries( pDescriptorUpdateEntries_ )
12303 , templateType( templateType_ )
12304 , descriptorSetLayout( descriptorSetLayout_ )
12305 , pipelineBindPoint( pipelineBindPoint_ )
12306 , pipelineLayout( pipelineLayout_ )
12307 , set( set_ )
12308 {
12309 }
12310
12311 DescriptorUpdateTemplateCreateInfoKHR( VkDescriptorUpdateTemplateCreateInfoKHR const & rhs )
12312 {
12313 memcpy( this, &rhs, sizeof(DescriptorUpdateTemplateCreateInfoKHR) );
12314 }
12315
12316 DescriptorUpdateTemplateCreateInfoKHR& operator=( VkDescriptorUpdateTemplateCreateInfoKHR const & rhs )
12317 {
12318 memcpy( this, &rhs, sizeof(DescriptorUpdateTemplateCreateInfoKHR) );
12319 return *this;
12320 }
12321
12322 DescriptorUpdateTemplateCreateInfoKHR& setPNext( void* pNext_ )
12323 {
12324 pNext = pNext_;
12325 return *this;
12326 }
12327
12328 DescriptorUpdateTemplateCreateInfoKHR& setFlags( DescriptorUpdateTemplateCreateFlagsKHR flags_ )
12329 {
12330 flags = flags_;
12331 return *this;
12332 }
12333
12334 DescriptorUpdateTemplateCreateInfoKHR& setDescriptorUpdateEntryCount( uint32_t descriptorUpdateEntryCount_ )
12335 {
12336 descriptorUpdateEntryCount = descriptorUpdateEntryCount_;
12337 return *this;
12338 }
12339
12340 DescriptorUpdateTemplateCreateInfoKHR& setPDescriptorUpdateEntries( const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries_ )
12341 {
12342 pDescriptorUpdateEntries = pDescriptorUpdateEntries_;
12343 return *this;
12344 }
12345
12346 DescriptorUpdateTemplateCreateInfoKHR& setTemplateType( DescriptorUpdateTemplateTypeKHR templateType_ )
12347 {
12348 templateType = templateType_;
12349 return *this;
12350 }
12351
12352 DescriptorUpdateTemplateCreateInfoKHR& setDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout_ )
12353 {
12354 descriptorSetLayout = descriptorSetLayout_;
12355 return *this;
12356 }
12357
12358 DescriptorUpdateTemplateCreateInfoKHR& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
12359 {
12360 pipelineBindPoint = pipelineBindPoint_;
12361 return *this;
12362 }
12363
12364 DescriptorUpdateTemplateCreateInfoKHR& setPipelineLayout( PipelineLayout pipelineLayout_ )
12365 {
12366 pipelineLayout = pipelineLayout_;
12367 return *this;
12368 }
12369
12370 DescriptorUpdateTemplateCreateInfoKHR& setSet( uint32_t set_ )
12371 {
12372 set = set_;
12373 return *this;
12374 }
12375
12376 operator const VkDescriptorUpdateTemplateCreateInfoKHR&() const
12377 {
12378 return *reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>(this);
12379 }
12380
12381 bool operator==( DescriptorUpdateTemplateCreateInfoKHR const& rhs ) const
12382 {
12383 return ( sType == rhs.sType )
12384 && ( pNext == rhs.pNext )
12385 && ( flags == rhs.flags )
12386 && ( descriptorUpdateEntryCount == rhs.descriptorUpdateEntryCount )
12387 && ( pDescriptorUpdateEntries == rhs.pDescriptorUpdateEntries )
12388 && ( templateType == rhs.templateType )
12389 && ( descriptorSetLayout == rhs.descriptorSetLayout )
12390 && ( pipelineBindPoint == rhs.pipelineBindPoint )
12391 && ( pipelineLayout == rhs.pipelineLayout )
12392 && ( set == rhs.set );
12393 }
12394
12395 bool operator!=( DescriptorUpdateTemplateCreateInfoKHR const& rhs ) const
12396 {
12397 return !operator==( rhs );
12398 }
12399
12400 private:
12401 StructureType sType;
12402
12403 public:
12404 void* pNext;
12405 DescriptorUpdateTemplateCreateFlagsKHR flags;
12406 uint32_t descriptorUpdateEntryCount;
12407 const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries;
12408 DescriptorUpdateTemplateTypeKHR templateType;
12409 DescriptorSetLayout descriptorSetLayout;
12410 PipelineBindPoint pipelineBindPoint;
12411 PipelineLayout pipelineLayout;
12412 uint32_t set;
12413 };
12414 static_assert( sizeof( DescriptorUpdateTemplateCreateInfoKHR ) == sizeof( VkDescriptorUpdateTemplateCreateInfoKHR ), "struct and wrapper have different size!" );
12415
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012416 enum class QueueFlagBits
12417 {
12418 eGraphics = VK_QUEUE_GRAPHICS_BIT,
12419 eCompute = VK_QUEUE_COMPUTE_BIT,
12420 eTransfer = VK_QUEUE_TRANSFER_BIT,
12421 eSparseBinding = VK_QUEUE_SPARSE_BINDING_BIT
12422 };
12423
12424 using QueueFlags = Flags<QueueFlagBits, VkQueueFlags>;
12425
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012426 VULKAN_HPP_INLINE QueueFlags operator|( QueueFlagBits bit0, QueueFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012427 {
12428 return QueueFlags( bit0 ) | bit1;
12429 }
12430
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012431 VULKAN_HPP_INLINE QueueFlags operator~( QueueFlagBits bits )
12432 {
12433 return ~( QueueFlags( bits ) );
12434 }
12435
12436 template <> struct FlagTraits<QueueFlagBits>
12437 {
12438 enum
12439 {
12440 allFlags = VkFlags(QueueFlagBits::eGraphics) | VkFlags(QueueFlagBits::eCompute) | VkFlags(QueueFlagBits::eTransfer) | VkFlags(QueueFlagBits::eSparseBinding)
12441 };
12442 };
12443
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012444 struct QueueFamilyProperties
12445 {
12446 operator const VkQueueFamilyProperties&() const
12447 {
12448 return *reinterpret_cast<const VkQueueFamilyProperties*>(this);
12449 }
12450
12451 bool operator==( QueueFamilyProperties const& rhs ) const
12452 {
12453 return ( queueFlags == rhs.queueFlags )
12454 && ( queueCount == rhs.queueCount )
12455 && ( timestampValidBits == rhs.timestampValidBits )
12456 && ( minImageTransferGranularity == rhs.minImageTransferGranularity );
12457 }
12458
12459 bool operator!=( QueueFamilyProperties const& rhs ) const
12460 {
12461 return !operator==( rhs );
12462 }
12463
12464 QueueFlags queueFlags;
12465 uint32_t queueCount;
12466 uint32_t timestampValidBits;
12467 Extent3D minImageTransferGranularity;
12468 };
12469 static_assert( sizeof( QueueFamilyProperties ) == sizeof( VkQueueFamilyProperties ), "struct and wrapper have different size!" );
12470
Mark Young39389872017-01-19 21:10:49 -070012471 struct QueueFamilyProperties2KHR
12472 {
12473 operator const VkQueueFamilyProperties2KHR&() const
12474 {
12475 return *reinterpret_cast<const VkQueueFamilyProperties2KHR*>(this);
12476 }
12477
12478 bool operator==( QueueFamilyProperties2KHR const& rhs ) const
12479 {
12480 return ( sType == rhs.sType )
12481 && ( pNext == rhs.pNext )
12482 && ( queueFamilyProperties == rhs.queueFamilyProperties );
12483 }
12484
12485 bool operator!=( QueueFamilyProperties2KHR const& rhs ) const
12486 {
12487 return !operator==( rhs );
12488 }
12489
12490 private:
12491 StructureType sType;
12492
12493 public:
12494 void* pNext;
12495 QueueFamilyProperties queueFamilyProperties;
12496 };
12497 static_assert( sizeof( QueueFamilyProperties2KHR ) == sizeof( VkQueueFamilyProperties2KHR ), "struct and wrapper have different size!" );
12498
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012499 enum class MemoryPropertyFlagBits
12500 {
12501 eDeviceLocal = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
12502 eHostVisible = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
12503 eHostCoherent = VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
12504 eHostCached = VK_MEMORY_PROPERTY_HOST_CACHED_BIT,
12505 eLazilyAllocated = VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT
12506 };
12507
12508 using MemoryPropertyFlags = Flags<MemoryPropertyFlagBits, VkMemoryPropertyFlags>;
12509
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012510 VULKAN_HPP_INLINE MemoryPropertyFlags operator|( MemoryPropertyFlagBits bit0, MemoryPropertyFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012511 {
12512 return MemoryPropertyFlags( bit0 ) | bit1;
12513 }
12514
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012515 VULKAN_HPP_INLINE MemoryPropertyFlags operator~( MemoryPropertyFlagBits bits )
12516 {
12517 return ~( MemoryPropertyFlags( bits ) );
12518 }
12519
12520 template <> struct FlagTraits<MemoryPropertyFlagBits>
12521 {
12522 enum
12523 {
12524 allFlags = VkFlags(MemoryPropertyFlagBits::eDeviceLocal) | VkFlags(MemoryPropertyFlagBits::eHostVisible) | VkFlags(MemoryPropertyFlagBits::eHostCoherent) | VkFlags(MemoryPropertyFlagBits::eHostCached) | VkFlags(MemoryPropertyFlagBits::eLazilyAllocated)
12525 };
12526 };
12527
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012528 struct MemoryType
12529 {
12530 operator const VkMemoryType&() const
12531 {
12532 return *reinterpret_cast<const VkMemoryType*>(this);
12533 }
12534
12535 bool operator==( MemoryType const& rhs ) const
12536 {
12537 return ( propertyFlags == rhs.propertyFlags )
12538 && ( heapIndex == rhs.heapIndex );
12539 }
12540
12541 bool operator!=( MemoryType const& rhs ) const
12542 {
12543 return !operator==( rhs );
12544 }
12545
12546 MemoryPropertyFlags propertyFlags;
12547 uint32_t heapIndex;
12548 };
12549 static_assert( sizeof( MemoryType ) == sizeof( VkMemoryType ), "struct and wrapper have different size!" );
12550
12551 enum class MemoryHeapFlagBits
12552 {
Mark Young0f183a82017-02-28 09:58:04 -070012553 eDeviceLocal = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,
12554 eMultiInstanceKHX = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012555 };
12556
12557 using MemoryHeapFlags = Flags<MemoryHeapFlagBits, VkMemoryHeapFlags>;
12558
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012559 VULKAN_HPP_INLINE MemoryHeapFlags operator|( MemoryHeapFlagBits bit0, MemoryHeapFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012560 {
12561 return MemoryHeapFlags( bit0 ) | bit1;
12562 }
12563
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012564 VULKAN_HPP_INLINE MemoryHeapFlags operator~( MemoryHeapFlagBits bits )
12565 {
12566 return ~( MemoryHeapFlags( bits ) );
12567 }
12568
12569 template <> struct FlagTraits<MemoryHeapFlagBits>
12570 {
12571 enum
12572 {
Mark Young0f183a82017-02-28 09:58:04 -070012573 allFlags = VkFlags(MemoryHeapFlagBits::eDeviceLocal) | VkFlags(MemoryHeapFlagBits::eMultiInstanceKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012574 };
12575 };
12576
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012577 struct MemoryHeap
12578 {
12579 operator const VkMemoryHeap&() const
12580 {
12581 return *reinterpret_cast<const VkMemoryHeap*>(this);
12582 }
12583
12584 bool operator==( MemoryHeap const& rhs ) const
12585 {
12586 return ( size == rhs.size )
12587 && ( flags == rhs.flags );
12588 }
12589
12590 bool operator!=( MemoryHeap const& rhs ) const
12591 {
12592 return !operator==( rhs );
12593 }
12594
12595 DeviceSize size;
12596 MemoryHeapFlags flags;
12597 };
12598 static_assert( sizeof( MemoryHeap ) == sizeof( VkMemoryHeap ), "struct and wrapper have different size!" );
12599
12600 struct PhysicalDeviceMemoryProperties
12601 {
12602 operator const VkPhysicalDeviceMemoryProperties&() const
12603 {
12604 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties*>(this);
12605 }
12606
12607 bool operator==( PhysicalDeviceMemoryProperties const& rhs ) const
12608 {
12609 return ( memoryTypeCount == rhs.memoryTypeCount )
12610 && ( memcmp( memoryTypes, rhs.memoryTypes, VK_MAX_MEMORY_TYPES * sizeof( MemoryType ) ) == 0 )
12611 && ( memoryHeapCount == rhs.memoryHeapCount )
12612 && ( memcmp( memoryHeaps, rhs.memoryHeaps, VK_MAX_MEMORY_HEAPS * sizeof( MemoryHeap ) ) == 0 );
12613 }
12614
12615 bool operator!=( PhysicalDeviceMemoryProperties const& rhs ) const
12616 {
12617 return !operator==( rhs );
12618 }
12619
12620 uint32_t memoryTypeCount;
12621 MemoryType memoryTypes[VK_MAX_MEMORY_TYPES];
12622 uint32_t memoryHeapCount;
12623 MemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS];
12624 };
12625 static_assert( sizeof( PhysicalDeviceMemoryProperties ) == sizeof( VkPhysicalDeviceMemoryProperties ), "struct and wrapper have different size!" );
12626
Mark Young39389872017-01-19 21:10:49 -070012627 struct PhysicalDeviceMemoryProperties2KHR
12628 {
12629 operator const VkPhysicalDeviceMemoryProperties2KHR&() const
12630 {
12631 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties2KHR*>(this);
12632 }
12633
12634 bool operator==( PhysicalDeviceMemoryProperties2KHR const& rhs ) const
12635 {
12636 return ( sType == rhs.sType )
12637 && ( pNext == rhs.pNext )
12638 && ( memoryProperties == rhs.memoryProperties );
12639 }
12640
12641 bool operator!=( PhysicalDeviceMemoryProperties2KHR const& rhs ) const
12642 {
12643 return !operator==( rhs );
12644 }
12645
12646 private:
12647 StructureType sType;
12648
12649 public:
12650 void* pNext;
12651 PhysicalDeviceMemoryProperties memoryProperties;
12652 };
12653 static_assert( sizeof( PhysicalDeviceMemoryProperties2KHR ) == sizeof( VkPhysicalDeviceMemoryProperties2KHR ), "struct and wrapper have different size!" );
12654
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012655 enum class AccessFlagBits
12656 {
12657 eIndirectCommandRead = VK_ACCESS_INDIRECT_COMMAND_READ_BIT,
12658 eIndexRead = VK_ACCESS_INDEX_READ_BIT,
12659 eVertexAttributeRead = VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,
12660 eUniformRead = VK_ACCESS_UNIFORM_READ_BIT,
12661 eInputAttachmentRead = VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,
12662 eShaderRead = VK_ACCESS_SHADER_READ_BIT,
12663 eShaderWrite = VK_ACCESS_SHADER_WRITE_BIT,
12664 eColorAttachmentRead = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT,
12665 eColorAttachmentWrite = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
12666 eDepthStencilAttachmentRead = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT,
12667 eDepthStencilAttachmentWrite = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
12668 eTransferRead = VK_ACCESS_TRANSFER_READ_BIT,
12669 eTransferWrite = VK_ACCESS_TRANSFER_WRITE_BIT,
12670 eHostRead = VK_ACCESS_HOST_READ_BIT,
12671 eHostWrite = VK_ACCESS_HOST_WRITE_BIT,
12672 eMemoryRead = VK_ACCESS_MEMORY_READ_BIT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012673 eMemoryWrite = VK_ACCESS_MEMORY_WRITE_BIT,
12674 eCommandProcessReadNVX = VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX,
12675 eCommandProcessWriteNVX = VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012676 };
12677
12678 using AccessFlags = Flags<AccessFlagBits, VkAccessFlags>;
12679
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012680 VULKAN_HPP_INLINE AccessFlags operator|( AccessFlagBits bit0, AccessFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012681 {
12682 return AccessFlags( bit0 ) | bit1;
12683 }
12684
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012685 VULKAN_HPP_INLINE AccessFlags operator~( AccessFlagBits bits )
12686 {
12687 return ~( AccessFlags( bits ) );
12688 }
12689
12690 template <> struct FlagTraits<AccessFlagBits>
12691 {
12692 enum
12693 {
12694 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)
12695 };
12696 };
12697
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012698 struct MemoryBarrier
12699 {
12700 MemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags() )
12701 : sType( StructureType::eMemoryBarrier )
12702 , pNext( nullptr )
12703 , srcAccessMask( srcAccessMask_ )
12704 , dstAccessMask( dstAccessMask_ )
12705 {
12706 }
12707
12708 MemoryBarrier( VkMemoryBarrier const & rhs )
12709 {
12710 memcpy( this, &rhs, sizeof(MemoryBarrier) );
12711 }
12712
12713 MemoryBarrier& operator=( VkMemoryBarrier const & rhs )
12714 {
12715 memcpy( this, &rhs, sizeof(MemoryBarrier) );
12716 return *this;
12717 }
12718
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012719 MemoryBarrier& setPNext( const void* pNext_ )
12720 {
12721 pNext = pNext_;
12722 return *this;
12723 }
12724
12725 MemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
12726 {
12727 srcAccessMask = srcAccessMask_;
12728 return *this;
12729 }
12730
12731 MemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
12732 {
12733 dstAccessMask = dstAccessMask_;
12734 return *this;
12735 }
12736
12737 operator const VkMemoryBarrier&() const
12738 {
12739 return *reinterpret_cast<const VkMemoryBarrier*>(this);
12740 }
12741
12742 bool operator==( MemoryBarrier const& rhs ) const
12743 {
12744 return ( sType == rhs.sType )
12745 && ( pNext == rhs.pNext )
12746 && ( srcAccessMask == rhs.srcAccessMask )
12747 && ( dstAccessMask == rhs.dstAccessMask );
12748 }
12749
12750 bool operator!=( MemoryBarrier const& rhs ) const
12751 {
12752 return !operator==( rhs );
12753 }
12754
12755 private:
12756 StructureType sType;
12757
12758 public:
12759 const void* pNext;
12760 AccessFlags srcAccessMask;
12761 AccessFlags dstAccessMask;
12762 };
12763 static_assert( sizeof( MemoryBarrier ) == sizeof( VkMemoryBarrier ), "struct and wrapper have different size!" );
12764
12765 struct BufferMemoryBarrier
12766 {
12767 BufferMemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), uint32_t srcQueueFamilyIndex_ = 0, uint32_t dstQueueFamilyIndex_ = 0, Buffer buffer_ = Buffer(), DeviceSize offset_ = 0, DeviceSize size_ = 0 )
12768 : sType( StructureType::eBufferMemoryBarrier )
12769 , pNext( nullptr )
12770 , srcAccessMask( srcAccessMask_ )
12771 , dstAccessMask( dstAccessMask_ )
12772 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
12773 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
12774 , buffer( buffer_ )
12775 , offset( offset_ )
12776 , size( size_ )
12777 {
12778 }
12779
12780 BufferMemoryBarrier( VkBufferMemoryBarrier const & rhs )
12781 {
12782 memcpy( this, &rhs, sizeof(BufferMemoryBarrier) );
12783 }
12784
12785 BufferMemoryBarrier& operator=( VkBufferMemoryBarrier const & rhs )
12786 {
12787 memcpy( this, &rhs, sizeof(BufferMemoryBarrier) );
12788 return *this;
12789 }
12790
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012791 BufferMemoryBarrier& setPNext( const void* pNext_ )
12792 {
12793 pNext = pNext_;
12794 return *this;
12795 }
12796
12797 BufferMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
12798 {
12799 srcAccessMask = srcAccessMask_;
12800 return *this;
12801 }
12802
12803 BufferMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
12804 {
12805 dstAccessMask = dstAccessMask_;
12806 return *this;
12807 }
12808
12809 BufferMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
12810 {
12811 srcQueueFamilyIndex = srcQueueFamilyIndex_;
12812 return *this;
12813 }
12814
12815 BufferMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
12816 {
12817 dstQueueFamilyIndex = dstQueueFamilyIndex_;
12818 return *this;
12819 }
12820
12821 BufferMemoryBarrier& setBuffer( Buffer buffer_ )
12822 {
12823 buffer = buffer_;
12824 return *this;
12825 }
12826
12827 BufferMemoryBarrier& setOffset( DeviceSize offset_ )
12828 {
12829 offset = offset_;
12830 return *this;
12831 }
12832
12833 BufferMemoryBarrier& setSize( DeviceSize size_ )
12834 {
12835 size = size_;
12836 return *this;
12837 }
12838
12839 operator const VkBufferMemoryBarrier&() const
12840 {
12841 return *reinterpret_cast<const VkBufferMemoryBarrier*>(this);
12842 }
12843
12844 bool operator==( BufferMemoryBarrier const& rhs ) const
12845 {
12846 return ( sType == rhs.sType )
12847 && ( pNext == rhs.pNext )
12848 && ( srcAccessMask == rhs.srcAccessMask )
12849 && ( dstAccessMask == rhs.dstAccessMask )
12850 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
12851 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
12852 && ( buffer == rhs.buffer )
12853 && ( offset == rhs.offset )
12854 && ( size == rhs.size );
12855 }
12856
12857 bool operator!=( BufferMemoryBarrier const& rhs ) const
12858 {
12859 return !operator==( rhs );
12860 }
12861
12862 private:
12863 StructureType sType;
12864
12865 public:
12866 const void* pNext;
12867 AccessFlags srcAccessMask;
12868 AccessFlags dstAccessMask;
12869 uint32_t srcQueueFamilyIndex;
12870 uint32_t dstQueueFamilyIndex;
12871 Buffer buffer;
12872 DeviceSize offset;
12873 DeviceSize size;
12874 };
12875 static_assert( sizeof( BufferMemoryBarrier ) == sizeof( VkBufferMemoryBarrier ), "struct and wrapper have different size!" );
12876
12877 enum class BufferUsageFlagBits
12878 {
12879 eTransferSrc = VK_BUFFER_USAGE_TRANSFER_SRC_BIT,
12880 eTransferDst = VK_BUFFER_USAGE_TRANSFER_DST_BIT,
12881 eUniformTexelBuffer = VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT,
12882 eStorageTexelBuffer = VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT,
12883 eUniformBuffer = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
12884 eStorageBuffer = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
12885 eIndexBuffer = VK_BUFFER_USAGE_INDEX_BUFFER_BIT,
12886 eVertexBuffer = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,
12887 eIndirectBuffer = VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
12888 };
12889
12890 using BufferUsageFlags = Flags<BufferUsageFlagBits, VkBufferUsageFlags>;
12891
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012892 VULKAN_HPP_INLINE BufferUsageFlags operator|( BufferUsageFlagBits bit0, BufferUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012893 {
12894 return BufferUsageFlags( bit0 ) | bit1;
12895 }
12896
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012897 VULKAN_HPP_INLINE BufferUsageFlags operator~( BufferUsageFlagBits bits )
12898 {
12899 return ~( BufferUsageFlags( bits ) );
12900 }
12901
12902 template <> struct FlagTraits<BufferUsageFlagBits>
12903 {
12904 enum
12905 {
12906 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)
12907 };
12908 };
12909
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012910 enum class BufferCreateFlagBits
12911 {
12912 eSparseBinding = VK_BUFFER_CREATE_SPARSE_BINDING_BIT,
12913 eSparseResidency = VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT,
12914 eSparseAliased = VK_BUFFER_CREATE_SPARSE_ALIASED_BIT
12915 };
12916
12917 using BufferCreateFlags = Flags<BufferCreateFlagBits, VkBufferCreateFlags>;
12918
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012919 VULKAN_HPP_INLINE BufferCreateFlags operator|( BufferCreateFlagBits bit0, BufferCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012920 {
12921 return BufferCreateFlags( bit0 ) | bit1;
12922 }
12923
Mark Lobodzinski2d589822016-12-12 09:44:34 -070012924 VULKAN_HPP_INLINE BufferCreateFlags operator~( BufferCreateFlagBits bits )
12925 {
12926 return ~( BufferCreateFlags( bits ) );
12927 }
12928
12929 template <> struct FlagTraits<BufferCreateFlagBits>
12930 {
12931 enum
12932 {
12933 allFlags = VkFlags(BufferCreateFlagBits::eSparseBinding) | VkFlags(BufferCreateFlagBits::eSparseResidency) | VkFlags(BufferCreateFlagBits::eSparseAliased)
12934 };
12935 };
12936
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012937 struct BufferCreateInfo
12938 {
12939 BufferCreateInfo( BufferCreateFlags flags_ = BufferCreateFlags(), DeviceSize size_ = 0, BufferUsageFlags usage_ = BufferUsageFlags(), SharingMode sharingMode_ = SharingMode::eExclusive, uint32_t queueFamilyIndexCount_ = 0, const uint32_t* pQueueFamilyIndices_ = nullptr )
12940 : sType( StructureType::eBufferCreateInfo )
12941 , pNext( nullptr )
12942 , flags( flags_ )
12943 , size( size_ )
12944 , usage( usage_ )
12945 , sharingMode( sharingMode_ )
12946 , queueFamilyIndexCount( queueFamilyIndexCount_ )
12947 , pQueueFamilyIndices( pQueueFamilyIndices_ )
12948 {
12949 }
12950
12951 BufferCreateInfo( VkBufferCreateInfo const & rhs )
12952 {
12953 memcpy( this, &rhs, sizeof(BufferCreateInfo) );
12954 }
12955
12956 BufferCreateInfo& operator=( VkBufferCreateInfo const & rhs )
12957 {
12958 memcpy( this, &rhs, sizeof(BufferCreateInfo) );
12959 return *this;
12960 }
12961
Lenny Komowbed9b5c2016-08-11 11:23:15 -060012962 BufferCreateInfo& setPNext( const void* pNext_ )
12963 {
12964 pNext = pNext_;
12965 return *this;
12966 }
12967
12968 BufferCreateInfo& setFlags( BufferCreateFlags flags_ )
12969 {
12970 flags = flags_;
12971 return *this;
12972 }
12973
12974 BufferCreateInfo& setSize( DeviceSize size_ )
12975 {
12976 size = size_;
12977 return *this;
12978 }
12979
12980 BufferCreateInfo& setUsage( BufferUsageFlags usage_ )
12981 {
12982 usage = usage_;
12983 return *this;
12984 }
12985
12986 BufferCreateInfo& setSharingMode( SharingMode sharingMode_ )
12987 {
12988 sharingMode = sharingMode_;
12989 return *this;
12990 }
12991
12992 BufferCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
12993 {
12994 queueFamilyIndexCount = queueFamilyIndexCount_;
12995 return *this;
12996 }
12997
12998 BufferCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
12999 {
13000 pQueueFamilyIndices = pQueueFamilyIndices_;
13001 return *this;
13002 }
13003
13004 operator const VkBufferCreateInfo&() const
13005 {
13006 return *reinterpret_cast<const VkBufferCreateInfo*>(this);
13007 }
13008
13009 bool operator==( BufferCreateInfo const& rhs ) const
13010 {
13011 return ( sType == rhs.sType )
13012 && ( pNext == rhs.pNext )
13013 && ( flags == rhs.flags )
13014 && ( size == rhs.size )
13015 && ( usage == rhs.usage )
13016 && ( sharingMode == rhs.sharingMode )
13017 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
13018 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices );
13019 }
13020
13021 bool operator!=( BufferCreateInfo const& rhs ) const
13022 {
13023 return !operator==( rhs );
13024 }
13025
13026 private:
13027 StructureType sType;
13028
13029 public:
13030 const void* pNext;
13031 BufferCreateFlags flags;
13032 DeviceSize size;
13033 BufferUsageFlags usage;
13034 SharingMode sharingMode;
13035 uint32_t queueFamilyIndexCount;
13036 const uint32_t* pQueueFamilyIndices;
13037 };
13038 static_assert( sizeof( BufferCreateInfo ) == sizeof( VkBufferCreateInfo ), "struct and wrapper have different size!" );
13039
13040 enum class ShaderStageFlagBits
13041 {
13042 eVertex = VK_SHADER_STAGE_VERTEX_BIT,
13043 eTessellationControl = VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,
13044 eTessellationEvaluation = VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,
13045 eGeometry = VK_SHADER_STAGE_GEOMETRY_BIT,
13046 eFragment = VK_SHADER_STAGE_FRAGMENT_BIT,
13047 eCompute = VK_SHADER_STAGE_COMPUTE_BIT,
13048 eAllGraphics = VK_SHADER_STAGE_ALL_GRAPHICS,
13049 eAll = VK_SHADER_STAGE_ALL
13050 };
13051
13052 using ShaderStageFlags = Flags<ShaderStageFlagBits, VkShaderStageFlags>;
13053
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013054 VULKAN_HPP_INLINE ShaderStageFlags operator|( ShaderStageFlagBits bit0, ShaderStageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013055 {
13056 return ShaderStageFlags( bit0 ) | bit1;
13057 }
13058
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013059 VULKAN_HPP_INLINE ShaderStageFlags operator~( ShaderStageFlagBits bits )
13060 {
13061 return ~( ShaderStageFlags( bits ) );
13062 }
13063
13064 template <> struct FlagTraits<ShaderStageFlagBits>
13065 {
13066 enum
13067 {
13068 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)
13069 };
13070 };
13071
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013072 struct DescriptorSetLayoutBinding
13073 {
13074 DescriptorSetLayoutBinding( uint32_t binding_ = 0, DescriptorType descriptorType_ = DescriptorType::eSampler, uint32_t descriptorCount_ = 0, ShaderStageFlags stageFlags_ = ShaderStageFlags(), const Sampler* pImmutableSamplers_ = nullptr )
13075 : binding( binding_ )
13076 , descriptorType( descriptorType_ )
13077 , descriptorCount( descriptorCount_ )
13078 , stageFlags( stageFlags_ )
13079 , pImmutableSamplers( pImmutableSamplers_ )
13080 {
13081 }
13082
13083 DescriptorSetLayoutBinding( VkDescriptorSetLayoutBinding const & rhs )
13084 {
13085 memcpy( this, &rhs, sizeof(DescriptorSetLayoutBinding) );
13086 }
13087
13088 DescriptorSetLayoutBinding& operator=( VkDescriptorSetLayoutBinding const & rhs )
13089 {
13090 memcpy( this, &rhs, sizeof(DescriptorSetLayoutBinding) );
13091 return *this;
13092 }
13093
13094 DescriptorSetLayoutBinding& setBinding( uint32_t binding_ )
13095 {
13096 binding = binding_;
13097 return *this;
13098 }
13099
13100 DescriptorSetLayoutBinding& setDescriptorType( DescriptorType descriptorType_ )
13101 {
13102 descriptorType = descriptorType_;
13103 return *this;
13104 }
13105
13106 DescriptorSetLayoutBinding& setDescriptorCount( uint32_t descriptorCount_ )
13107 {
13108 descriptorCount = descriptorCount_;
13109 return *this;
13110 }
13111
13112 DescriptorSetLayoutBinding& setStageFlags( ShaderStageFlags stageFlags_ )
13113 {
13114 stageFlags = stageFlags_;
13115 return *this;
13116 }
13117
13118 DescriptorSetLayoutBinding& setPImmutableSamplers( const Sampler* pImmutableSamplers_ )
13119 {
13120 pImmutableSamplers = pImmutableSamplers_;
13121 return *this;
13122 }
13123
13124 operator const VkDescriptorSetLayoutBinding&() const
13125 {
13126 return *reinterpret_cast<const VkDescriptorSetLayoutBinding*>(this);
13127 }
13128
13129 bool operator==( DescriptorSetLayoutBinding const& rhs ) const
13130 {
13131 return ( binding == rhs.binding )
13132 && ( descriptorType == rhs.descriptorType )
13133 && ( descriptorCount == rhs.descriptorCount )
13134 && ( stageFlags == rhs.stageFlags )
13135 && ( pImmutableSamplers == rhs.pImmutableSamplers );
13136 }
13137
13138 bool operator!=( DescriptorSetLayoutBinding const& rhs ) const
13139 {
13140 return !operator==( rhs );
13141 }
13142
13143 uint32_t binding;
13144 DescriptorType descriptorType;
13145 uint32_t descriptorCount;
13146 ShaderStageFlags stageFlags;
13147 const Sampler* pImmutableSamplers;
13148 };
13149 static_assert( sizeof( DescriptorSetLayoutBinding ) == sizeof( VkDescriptorSetLayoutBinding ), "struct and wrapper have different size!" );
13150
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013151 struct PipelineShaderStageCreateInfo
13152 {
13153 PipelineShaderStageCreateInfo( PipelineShaderStageCreateFlags flags_ = PipelineShaderStageCreateFlags(), ShaderStageFlagBits stage_ = ShaderStageFlagBits::eVertex, ShaderModule module_ = ShaderModule(), const char* pName_ = nullptr, const SpecializationInfo* pSpecializationInfo_ = nullptr )
13154 : sType( StructureType::ePipelineShaderStageCreateInfo )
13155 , pNext( nullptr )
13156 , flags( flags_ )
13157 , stage( stage_ )
13158 , module( module_ )
13159 , pName( pName_ )
13160 , pSpecializationInfo( pSpecializationInfo_ )
13161 {
13162 }
13163
13164 PipelineShaderStageCreateInfo( VkPipelineShaderStageCreateInfo const & rhs )
13165 {
13166 memcpy( this, &rhs, sizeof(PipelineShaderStageCreateInfo) );
13167 }
13168
13169 PipelineShaderStageCreateInfo& operator=( VkPipelineShaderStageCreateInfo const & rhs )
13170 {
13171 memcpy( this, &rhs, sizeof(PipelineShaderStageCreateInfo) );
13172 return *this;
13173 }
13174
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013175 PipelineShaderStageCreateInfo& setPNext( const void* pNext_ )
13176 {
13177 pNext = pNext_;
13178 return *this;
13179 }
13180
13181 PipelineShaderStageCreateInfo& setFlags( PipelineShaderStageCreateFlags flags_ )
13182 {
13183 flags = flags_;
13184 return *this;
13185 }
13186
13187 PipelineShaderStageCreateInfo& setStage( ShaderStageFlagBits stage_ )
13188 {
13189 stage = stage_;
13190 return *this;
13191 }
13192
13193 PipelineShaderStageCreateInfo& setModule( ShaderModule module_ )
13194 {
13195 module = module_;
13196 return *this;
13197 }
13198
13199 PipelineShaderStageCreateInfo& setPName( const char* pName_ )
13200 {
13201 pName = pName_;
13202 return *this;
13203 }
13204
13205 PipelineShaderStageCreateInfo& setPSpecializationInfo( const SpecializationInfo* pSpecializationInfo_ )
13206 {
13207 pSpecializationInfo = pSpecializationInfo_;
13208 return *this;
13209 }
13210
13211 operator const VkPipelineShaderStageCreateInfo&() const
13212 {
13213 return *reinterpret_cast<const VkPipelineShaderStageCreateInfo*>(this);
13214 }
13215
13216 bool operator==( PipelineShaderStageCreateInfo const& rhs ) const
13217 {
13218 return ( sType == rhs.sType )
13219 && ( pNext == rhs.pNext )
13220 && ( flags == rhs.flags )
13221 && ( stage == rhs.stage )
13222 && ( module == rhs.module )
13223 && ( pName == rhs.pName )
13224 && ( pSpecializationInfo == rhs.pSpecializationInfo );
13225 }
13226
13227 bool operator!=( PipelineShaderStageCreateInfo const& rhs ) const
13228 {
13229 return !operator==( rhs );
13230 }
13231
13232 private:
13233 StructureType sType;
13234
13235 public:
13236 const void* pNext;
13237 PipelineShaderStageCreateFlags flags;
13238 ShaderStageFlagBits stage;
13239 ShaderModule module;
13240 const char* pName;
13241 const SpecializationInfo* pSpecializationInfo;
13242 };
13243 static_assert( sizeof( PipelineShaderStageCreateInfo ) == sizeof( VkPipelineShaderStageCreateInfo ), "struct and wrapper have different size!" );
13244
13245 struct PushConstantRange
13246 {
13247 PushConstantRange( ShaderStageFlags stageFlags_ = ShaderStageFlags(), uint32_t offset_ = 0, uint32_t size_ = 0 )
13248 : stageFlags( stageFlags_ )
13249 , offset( offset_ )
13250 , size( size_ )
13251 {
13252 }
13253
13254 PushConstantRange( VkPushConstantRange const & rhs )
13255 {
13256 memcpy( this, &rhs, sizeof(PushConstantRange) );
13257 }
13258
13259 PushConstantRange& operator=( VkPushConstantRange const & rhs )
13260 {
13261 memcpy( this, &rhs, sizeof(PushConstantRange) );
13262 return *this;
13263 }
13264
13265 PushConstantRange& setStageFlags( ShaderStageFlags stageFlags_ )
13266 {
13267 stageFlags = stageFlags_;
13268 return *this;
13269 }
13270
13271 PushConstantRange& setOffset( uint32_t offset_ )
13272 {
13273 offset = offset_;
13274 return *this;
13275 }
13276
13277 PushConstantRange& setSize( uint32_t size_ )
13278 {
13279 size = size_;
13280 return *this;
13281 }
13282
13283 operator const VkPushConstantRange&() const
13284 {
13285 return *reinterpret_cast<const VkPushConstantRange*>(this);
13286 }
13287
13288 bool operator==( PushConstantRange const& rhs ) const
13289 {
13290 return ( stageFlags == rhs.stageFlags )
13291 && ( offset == rhs.offset )
13292 && ( size == rhs.size );
13293 }
13294
13295 bool operator!=( PushConstantRange const& rhs ) const
13296 {
13297 return !operator==( rhs );
13298 }
13299
13300 ShaderStageFlags stageFlags;
13301 uint32_t offset;
13302 uint32_t size;
13303 };
13304 static_assert( sizeof( PushConstantRange ) == sizeof( VkPushConstantRange ), "struct and wrapper have different size!" );
13305
13306 struct PipelineLayoutCreateInfo
13307 {
13308 PipelineLayoutCreateInfo( PipelineLayoutCreateFlags flags_ = PipelineLayoutCreateFlags(), uint32_t setLayoutCount_ = 0, const DescriptorSetLayout* pSetLayouts_ = nullptr, uint32_t pushConstantRangeCount_ = 0, const PushConstantRange* pPushConstantRanges_ = nullptr )
13309 : sType( StructureType::ePipelineLayoutCreateInfo )
13310 , pNext( nullptr )
13311 , flags( flags_ )
13312 , setLayoutCount( setLayoutCount_ )
13313 , pSetLayouts( pSetLayouts_ )
13314 , pushConstantRangeCount( pushConstantRangeCount_ )
13315 , pPushConstantRanges( pPushConstantRanges_ )
13316 {
13317 }
13318
13319 PipelineLayoutCreateInfo( VkPipelineLayoutCreateInfo const & rhs )
13320 {
13321 memcpy( this, &rhs, sizeof(PipelineLayoutCreateInfo) );
13322 }
13323
13324 PipelineLayoutCreateInfo& operator=( VkPipelineLayoutCreateInfo const & rhs )
13325 {
13326 memcpy( this, &rhs, sizeof(PipelineLayoutCreateInfo) );
13327 return *this;
13328 }
13329
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013330 PipelineLayoutCreateInfo& setPNext( const void* pNext_ )
13331 {
13332 pNext = pNext_;
13333 return *this;
13334 }
13335
13336 PipelineLayoutCreateInfo& setFlags( PipelineLayoutCreateFlags flags_ )
13337 {
13338 flags = flags_;
13339 return *this;
13340 }
13341
13342 PipelineLayoutCreateInfo& setSetLayoutCount( uint32_t setLayoutCount_ )
13343 {
13344 setLayoutCount = setLayoutCount_;
13345 return *this;
13346 }
13347
13348 PipelineLayoutCreateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
13349 {
13350 pSetLayouts = pSetLayouts_;
13351 return *this;
13352 }
13353
13354 PipelineLayoutCreateInfo& setPushConstantRangeCount( uint32_t pushConstantRangeCount_ )
13355 {
13356 pushConstantRangeCount = pushConstantRangeCount_;
13357 return *this;
13358 }
13359
13360 PipelineLayoutCreateInfo& setPPushConstantRanges( const PushConstantRange* pPushConstantRanges_ )
13361 {
13362 pPushConstantRanges = pPushConstantRanges_;
13363 return *this;
13364 }
13365
13366 operator const VkPipelineLayoutCreateInfo&() const
13367 {
13368 return *reinterpret_cast<const VkPipelineLayoutCreateInfo*>(this);
13369 }
13370
13371 bool operator==( PipelineLayoutCreateInfo const& rhs ) const
13372 {
13373 return ( sType == rhs.sType )
13374 && ( pNext == rhs.pNext )
13375 && ( flags == rhs.flags )
13376 && ( setLayoutCount == rhs.setLayoutCount )
13377 && ( pSetLayouts == rhs.pSetLayouts )
13378 && ( pushConstantRangeCount == rhs.pushConstantRangeCount )
13379 && ( pPushConstantRanges == rhs.pPushConstantRanges );
13380 }
13381
13382 bool operator!=( PipelineLayoutCreateInfo const& rhs ) const
13383 {
13384 return !operator==( rhs );
13385 }
13386
13387 private:
13388 StructureType sType;
13389
13390 public:
13391 const void* pNext;
13392 PipelineLayoutCreateFlags flags;
13393 uint32_t setLayoutCount;
13394 const DescriptorSetLayout* pSetLayouts;
13395 uint32_t pushConstantRangeCount;
13396 const PushConstantRange* pPushConstantRanges;
13397 };
13398 static_assert( sizeof( PipelineLayoutCreateInfo ) == sizeof( VkPipelineLayoutCreateInfo ), "struct and wrapper have different size!" );
13399
13400 enum class ImageUsageFlagBits
13401 {
13402 eTransferSrc = VK_IMAGE_USAGE_TRANSFER_SRC_BIT,
13403 eTransferDst = VK_IMAGE_USAGE_TRANSFER_DST_BIT,
13404 eSampled = VK_IMAGE_USAGE_SAMPLED_BIT,
13405 eStorage = VK_IMAGE_USAGE_STORAGE_BIT,
13406 eColorAttachment = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
13407 eDepthStencilAttachment = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,
13408 eTransientAttachment = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,
13409 eInputAttachment = VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
13410 };
13411
13412 using ImageUsageFlags = Flags<ImageUsageFlagBits, VkImageUsageFlags>;
13413
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013414 VULKAN_HPP_INLINE ImageUsageFlags operator|( ImageUsageFlagBits bit0, ImageUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013415 {
13416 return ImageUsageFlags( bit0 ) | bit1;
13417 }
13418
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013419 VULKAN_HPP_INLINE ImageUsageFlags operator~( ImageUsageFlagBits bits )
13420 {
13421 return ~( ImageUsageFlags( bits ) );
13422 }
13423
13424 template <> struct FlagTraits<ImageUsageFlagBits>
13425 {
13426 enum
13427 {
13428 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)
13429 };
13430 };
13431
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013432 enum class ImageCreateFlagBits
13433 {
13434 eSparseBinding = VK_IMAGE_CREATE_SPARSE_BINDING_BIT,
13435 eSparseResidency = VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT,
13436 eSparseAliased = VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,
13437 eMutableFormat = VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,
Mark Young39389872017-01-19 21:10:49 -070013438 eCubeCompatible = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,
Mark Young0f183a82017-02-28 09:58:04 -070013439 eBindSfrKHX = VK_IMAGE_CREATE_BIND_SFR_BIT_KHX,
Mark Young39389872017-01-19 21:10:49 -070013440 e2DArrayCompatibleKHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013441 };
13442
13443 using ImageCreateFlags = Flags<ImageCreateFlagBits, VkImageCreateFlags>;
13444
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013445 VULKAN_HPP_INLINE ImageCreateFlags operator|( ImageCreateFlagBits bit0, ImageCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013446 {
13447 return ImageCreateFlags( bit0 ) | bit1;
13448 }
13449
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013450 VULKAN_HPP_INLINE ImageCreateFlags operator~( ImageCreateFlagBits bits )
13451 {
13452 return ~( ImageCreateFlags( bits ) );
13453 }
13454
13455 template <> struct FlagTraits<ImageCreateFlagBits>
13456 {
13457 enum
13458 {
Mark Young0f183a82017-02-28 09:58:04 -070013459 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 -070013460 };
13461 };
13462
Mark Young39389872017-01-19 21:10:49 -070013463 struct PhysicalDeviceImageFormatInfo2KHR
13464 {
13465 PhysicalDeviceImageFormatInfo2KHR( Format format_ = Format::eUndefined, ImageType type_ = ImageType::e1D, ImageTiling tiling_ = ImageTiling::eOptimal, ImageUsageFlags usage_ = ImageUsageFlags(), ImageCreateFlags flags_ = ImageCreateFlags() )
13466 : sType( StructureType::ePhysicalDeviceImageFormatInfo2KHR )
13467 , pNext( nullptr )
13468 , format( format_ )
13469 , type( type_ )
13470 , tiling( tiling_ )
13471 , usage( usage_ )
13472 , flags( flags_ )
13473 {
13474 }
13475
13476 PhysicalDeviceImageFormatInfo2KHR( VkPhysicalDeviceImageFormatInfo2KHR const & rhs )
13477 {
13478 memcpy( this, &rhs, sizeof(PhysicalDeviceImageFormatInfo2KHR) );
13479 }
13480
13481 PhysicalDeviceImageFormatInfo2KHR& operator=( VkPhysicalDeviceImageFormatInfo2KHR const & rhs )
13482 {
13483 memcpy( this, &rhs, sizeof(PhysicalDeviceImageFormatInfo2KHR) );
13484 return *this;
13485 }
13486
Mark Young39389872017-01-19 21:10:49 -070013487 PhysicalDeviceImageFormatInfo2KHR& setPNext( const void* pNext_ )
13488 {
13489 pNext = pNext_;
13490 return *this;
13491 }
13492
13493 PhysicalDeviceImageFormatInfo2KHR& setFormat( Format format_ )
13494 {
13495 format = format_;
13496 return *this;
13497 }
13498
13499 PhysicalDeviceImageFormatInfo2KHR& setType( ImageType type_ )
13500 {
13501 type = type_;
13502 return *this;
13503 }
13504
13505 PhysicalDeviceImageFormatInfo2KHR& setTiling( ImageTiling tiling_ )
13506 {
13507 tiling = tiling_;
13508 return *this;
13509 }
13510
13511 PhysicalDeviceImageFormatInfo2KHR& setUsage( ImageUsageFlags usage_ )
13512 {
13513 usage = usage_;
13514 return *this;
13515 }
13516
13517 PhysicalDeviceImageFormatInfo2KHR& setFlags( ImageCreateFlags flags_ )
13518 {
13519 flags = flags_;
13520 return *this;
13521 }
13522
13523 operator const VkPhysicalDeviceImageFormatInfo2KHR&() const
13524 {
13525 return *reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>(this);
13526 }
13527
13528 bool operator==( PhysicalDeviceImageFormatInfo2KHR const& rhs ) const
13529 {
13530 return ( sType == rhs.sType )
13531 && ( pNext == rhs.pNext )
13532 && ( format == rhs.format )
13533 && ( type == rhs.type )
13534 && ( tiling == rhs.tiling )
13535 && ( usage == rhs.usage )
13536 && ( flags == rhs.flags );
13537 }
13538
13539 bool operator!=( PhysicalDeviceImageFormatInfo2KHR const& rhs ) const
13540 {
13541 return !operator==( rhs );
13542 }
13543
13544 private:
13545 StructureType sType;
13546
13547 public:
13548 const void* pNext;
13549 Format format;
13550 ImageType type;
13551 ImageTiling tiling;
13552 ImageUsageFlags usage;
13553 ImageCreateFlags flags;
13554 };
13555 static_assert( sizeof( PhysicalDeviceImageFormatInfo2KHR ) == sizeof( VkPhysicalDeviceImageFormatInfo2KHR ), "struct and wrapper have different size!" );
13556
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013557 enum class PipelineCreateFlagBits
13558 {
13559 eDisableOptimization = VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT,
13560 eAllowDerivatives = VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT,
Mark Young0f183a82017-02-28 09:58:04 -070013561 eDerivative = VK_PIPELINE_CREATE_DERIVATIVE_BIT,
13562 eViewIndexFromDeviceIndexKHX = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX,
13563 eDispatchBaseKHX = VK_PIPELINE_CREATE_DISPATCH_BASE_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013564 };
13565
13566 using PipelineCreateFlags = Flags<PipelineCreateFlagBits, VkPipelineCreateFlags>;
13567
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013568 VULKAN_HPP_INLINE PipelineCreateFlags operator|( PipelineCreateFlagBits bit0, PipelineCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013569 {
13570 return PipelineCreateFlags( bit0 ) | bit1;
13571 }
13572
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013573 VULKAN_HPP_INLINE PipelineCreateFlags operator~( PipelineCreateFlagBits bits )
13574 {
13575 return ~( PipelineCreateFlags( bits ) );
13576 }
13577
13578 template <> struct FlagTraits<PipelineCreateFlagBits>
13579 {
13580 enum
13581 {
Mark Young0f183a82017-02-28 09:58:04 -070013582 allFlags = VkFlags(PipelineCreateFlagBits::eDisableOptimization) | VkFlags(PipelineCreateFlagBits::eAllowDerivatives) | VkFlags(PipelineCreateFlagBits::eDerivative) | VkFlags(PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX) | VkFlags(PipelineCreateFlagBits::eDispatchBaseKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013583 };
13584 };
13585
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013586 struct ComputePipelineCreateInfo
13587 {
13588 ComputePipelineCreateInfo( PipelineCreateFlags flags_ = PipelineCreateFlags(), PipelineShaderStageCreateInfo stage_ = PipelineShaderStageCreateInfo(), PipelineLayout layout_ = PipelineLayout(), Pipeline basePipelineHandle_ = Pipeline(), int32_t basePipelineIndex_ = 0 )
13589 : sType( StructureType::eComputePipelineCreateInfo )
13590 , pNext( nullptr )
13591 , flags( flags_ )
13592 , stage( stage_ )
13593 , layout( layout_ )
13594 , basePipelineHandle( basePipelineHandle_ )
13595 , basePipelineIndex( basePipelineIndex_ )
13596 {
13597 }
13598
13599 ComputePipelineCreateInfo( VkComputePipelineCreateInfo const & rhs )
13600 {
13601 memcpy( this, &rhs, sizeof(ComputePipelineCreateInfo) );
13602 }
13603
13604 ComputePipelineCreateInfo& operator=( VkComputePipelineCreateInfo const & rhs )
13605 {
13606 memcpy( this, &rhs, sizeof(ComputePipelineCreateInfo) );
13607 return *this;
13608 }
13609
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013610 ComputePipelineCreateInfo& setPNext( const void* pNext_ )
13611 {
13612 pNext = pNext_;
13613 return *this;
13614 }
13615
13616 ComputePipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
13617 {
13618 flags = flags_;
13619 return *this;
13620 }
13621
13622 ComputePipelineCreateInfo& setStage( PipelineShaderStageCreateInfo stage_ )
13623 {
13624 stage = stage_;
13625 return *this;
13626 }
13627
13628 ComputePipelineCreateInfo& setLayout( PipelineLayout layout_ )
13629 {
13630 layout = layout_;
13631 return *this;
13632 }
13633
13634 ComputePipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
13635 {
13636 basePipelineHandle = basePipelineHandle_;
13637 return *this;
13638 }
13639
13640 ComputePipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
13641 {
13642 basePipelineIndex = basePipelineIndex_;
13643 return *this;
13644 }
13645
13646 operator const VkComputePipelineCreateInfo&() const
13647 {
13648 return *reinterpret_cast<const VkComputePipelineCreateInfo*>(this);
13649 }
13650
13651 bool operator==( ComputePipelineCreateInfo const& rhs ) const
13652 {
13653 return ( sType == rhs.sType )
13654 && ( pNext == rhs.pNext )
13655 && ( flags == rhs.flags )
13656 && ( stage == rhs.stage )
13657 && ( layout == rhs.layout )
13658 && ( basePipelineHandle == rhs.basePipelineHandle )
13659 && ( basePipelineIndex == rhs.basePipelineIndex );
13660 }
13661
13662 bool operator!=( ComputePipelineCreateInfo const& rhs ) const
13663 {
13664 return !operator==( rhs );
13665 }
13666
13667 private:
13668 StructureType sType;
13669
13670 public:
13671 const void* pNext;
13672 PipelineCreateFlags flags;
13673 PipelineShaderStageCreateInfo stage;
13674 PipelineLayout layout;
13675 Pipeline basePipelineHandle;
13676 int32_t basePipelineIndex;
13677 };
13678 static_assert( sizeof( ComputePipelineCreateInfo ) == sizeof( VkComputePipelineCreateInfo ), "struct and wrapper have different size!" );
13679
13680 enum class ColorComponentFlagBits
13681 {
13682 eR = VK_COLOR_COMPONENT_R_BIT,
13683 eG = VK_COLOR_COMPONENT_G_BIT,
13684 eB = VK_COLOR_COMPONENT_B_BIT,
13685 eA = VK_COLOR_COMPONENT_A_BIT
13686 };
13687
13688 using ColorComponentFlags = Flags<ColorComponentFlagBits, VkColorComponentFlags>;
13689
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013690 VULKAN_HPP_INLINE ColorComponentFlags operator|( ColorComponentFlagBits bit0, ColorComponentFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013691 {
13692 return ColorComponentFlags( bit0 ) | bit1;
13693 }
13694
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013695 VULKAN_HPP_INLINE ColorComponentFlags operator~( ColorComponentFlagBits bits )
13696 {
13697 return ~( ColorComponentFlags( bits ) );
13698 }
13699
13700 template <> struct FlagTraits<ColorComponentFlagBits>
13701 {
13702 enum
13703 {
13704 allFlags = VkFlags(ColorComponentFlagBits::eR) | VkFlags(ColorComponentFlagBits::eG) | VkFlags(ColorComponentFlagBits::eB) | VkFlags(ColorComponentFlagBits::eA)
13705 };
13706 };
13707
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013708 struct PipelineColorBlendAttachmentState
13709 {
13710 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() )
13711 : blendEnable( blendEnable_ )
13712 , srcColorBlendFactor( srcColorBlendFactor_ )
13713 , dstColorBlendFactor( dstColorBlendFactor_ )
13714 , colorBlendOp( colorBlendOp_ )
13715 , srcAlphaBlendFactor( srcAlphaBlendFactor_ )
13716 , dstAlphaBlendFactor( dstAlphaBlendFactor_ )
13717 , alphaBlendOp( alphaBlendOp_ )
13718 , colorWriteMask( colorWriteMask_ )
13719 {
13720 }
13721
13722 PipelineColorBlendAttachmentState( VkPipelineColorBlendAttachmentState const & rhs )
13723 {
13724 memcpy( this, &rhs, sizeof(PipelineColorBlendAttachmentState) );
13725 }
13726
13727 PipelineColorBlendAttachmentState& operator=( VkPipelineColorBlendAttachmentState const & rhs )
13728 {
13729 memcpy( this, &rhs, sizeof(PipelineColorBlendAttachmentState) );
13730 return *this;
13731 }
13732
13733 PipelineColorBlendAttachmentState& setBlendEnable( Bool32 blendEnable_ )
13734 {
13735 blendEnable = blendEnable_;
13736 return *this;
13737 }
13738
13739 PipelineColorBlendAttachmentState& setSrcColorBlendFactor( BlendFactor srcColorBlendFactor_ )
13740 {
13741 srcColorBlendFactor = srcColorBlendFactor_;
13742 return *this;
13743 }
13744
13745 PipelineColorBlendAttachmentState& setDstColorBlendFactor( BlendFactor dstColorBlendFactor_ )
13746 {
13747 dstColorBlendFactor = dstColorBlendFactor_;
13748 return *this;
13749 }
13750
13751 PipelineColorBlendAttachmentState& setColorBlendOp( BlendOp colorBlendOp_ )
13752 {
13753 colorBlendOp = colorBlendOp_;
13754 return *this;
13755 }
13756
13757 PipelineColorBlendAttachmentState& setSrcAlphaBlendFactor( BlendFactor srcAlphaBlendFactor_ )
13758 {
13759 srcAlphaBlendFactor = srcAlphaBlendFactor_;
13760 return *this;
13761 }
13762
13763 PipelineColorBlendAttachmentState& setDstAlphaBlendFactor( BlendFactor dstAlphaBlendFactor_ )
13764 {
13765 dstAlphaBlendFactor = dstAlphaBlendFactor_;
13766 return *this;
13767 }
13768
13769 PipelineColorBlendAttachmentState& setAlphaBlendOp( BlendOp alphaBlendOp_ )
13770 {
13771 alphaBlendOp = alphaBlendOp_;
13772 return *this;
13773 }
13774
13775 PipelineColorBlendAttachmentState& setColorWriteMask( ColorComponentFlags colorWriteMask_ )
13776 {
13777 colorWriteMask = colorWriteMask_;
13778 return *this;
13779 }
13780
13781 operator const VkPipelineColorBlendAttachmentState&() const
13782 {
13783 return *reinterpret_cast<const VkPipelineColorBlendAttachmentState*>(this);
13784 }
13785
13786 bool operator==( PipelineColorBlendAttachmentState const& rhs ) const
13787 {
13788 return ( blendEnable == rhs.blendEnable )
13789 && ( srcColorBlendFactor == rhs.srcColorBlendFactor )
13790 && ( dstColorBlendFactor == rhs.dstColorBlendFactor )
13791 && ( colorBlendOp == rhs.colorBlendOp )
13792 && ( srcAlphaBlendFactor == rhs.srcAlphaBlendFactor )
13793 && ( dstAlphaBlendFactor == rhs.dstAlphaBlendFactor )
13794 && ( alphaBlendOp == rhs.alphaBlendOp )
13795 && ( colorWriteMask == rhs.colorWriteMask );
13796 }
13797
13798 bool operator!=( PipelineColorBlendAttachmentState const& rhs ) const
13799 {
13800 return !operator==( rhs );
13801 }
13802
13803 Bool32 blendEnable;
13804 BlendFactor srcColorBlendFactor;
13805 BlendFactor dstColorBlendFactor;
13806 BlendOp colorBlendOp;
13807 BlendFactor srcAlphaBlendFactor;
13808 BlendFactor dstAlphaBlendFactor;
13809 BlendOp alphaBlendOp;
13810 ColorComponentFlags colorWriteMask;
13811 };
13812 static_assert( sizeof( PipelineColorBlendAttachmentState ) == sizeof( VkPipelineColorBlendAttachmentState ), "struct and wrapper have different size!" );
13813
13814 struct PipelineColorBlendStateCreateInfo
13815 {
13816 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 } } )
13817 : sType( StructureType::ePipelineColorBlendStateCreateInfo )
13818 , pNext( nullptr )
13819 , flags( flags_ )
13820 , logicOpEnable( logicOpEnable_ )
13821 , logicOp( logicOp_ )
13822 , attachmentCount( attachmentCount_ )
13823 , pAttachments( pAttachments_ )
13824 {
13825 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
13826 }
13827
13828 PipelineColorBlendStateCreateInfo( VkPipelineColorBlendStateCreateInfo const & rhs )
13829 {
13830 memcpy( this, &rhs, sizeof(PipelineColorBlendStateCreateInfo) );
13831 }
13832
13833 PipelineColorBlendStateCreateInfo& operator=( VkPipelineColorBlendStateCreateInfo const & rhs )
13834 {
13835 memcpy( this, &rhs, sizeof(PipelineColorBlendStateCreateInfo) );
13836 return *this;
13837 }
13838
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013839 PipelineColorBlendStateCreateInfo& setPNext( const void* pNext_ )
13840 {
13841 pNext = pNext_;
13842 return *this;
13843 }
13844
13845 PipelineColorBlendStateCreateInfo& setFlags( PipelineColorBlendStateCreateFlags flags_ )
13846 {
13847 flags = flags_;
13848 return *this;
13849 }
13850
13851 PipelineColorBlendStateCreateInfo& setLogicOpEnable( Bool32 logicOpEnable_ )
13852 {
13853 logicOpEnable = logicOpEnable_;
13854 return *this;
13855 }
13856
13857 PipelineColorBlendStateCreateInfo& setLogicOp( LogicOp logicOp_ )
13858 {
13859 logicOp = logicOp_;
13860 return *this;
13861 }
13862
13863 PipelineColorBlendStateCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
13864 {
13865 attachmentCount = attachmentCount_;
13866 return *this;
13867 }
13868
13869 PipelineColorBlendStateCreateInfo& setPAttachments( const PipelineColorBlendAttachmentState* pAttachments_ )
13870 {
13871 pAttachments = pAttachments_;
13872 return *this;
13873 }
13874
13875 PipelineColorBlendStateCreateInfo& setBlendConstants( std::array<float,4> blendConstants_ )
13876 {
13877 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
13878 return *this;
13879 }
13880
13881 operator const VkPipelineColorBlendStateCreateInfo&() const
13882 {
13883 return *reinterpret_cast<const VkPipelineColorBlendStateCreateInfo*>(this);
13884 }
13885
13886 bool operator==( PipelineColorBlendStateCreateInfo const& rhs ) const
13887 {
13888 return ( sType == rhs.sType )
13889 && ( pNext == rhs.pNext )
13890 && ( flags == rhs.flags )
13891 && ( logicOpEnable == rhs.logicOpEnable )
13892 && ( logicOp == rhs.logicOp )
13893 && ( attachmentCount == rhs.attachmentCount )
13894 && ( pAttachments == rhs.pAttachments )
13895 && ( memcmp( blendConstants, rhs.blendConstants, 4 * sizeof( float ) ) == 0 );
13896 }
13897
13898 bool operator!=( PipelineColorBlendStateCreateInfo const& rhs ) const
13899 {
13900 return !operator==( rhs );
13901 }
13902
13903 private:
13904 StructureType sType;
13905
13906 public:
13907 const void* pNext;
13908 PipelineColorBlendStateCreateFlags flags;
13909 Bool32 logicOpEnable;
13910 LogicOp logicOp;
13911 uint32_t attachmentCount;
13912 const PipelineColorBlendAttachmentState* pAttachments;
13913 float blendConstants[4];
13914 };
13915 static_assert( sizeof( PipelineColorBlendStateCreateInfo ) == sizeof( VkPipelineColorBlendStateCreateInfo ), "struct and wrapper have different size!" );
13916
13917 enum class FenceCreateFlagBits
13918 {
13919 eSignaled = VK_FENCE_CREATE_SIGNALED_BIT
13920 };
13921
13922 using FenceCreateFlags = Flags<FenceCreateFlagBits, VkFenceCreateFlags>;
13923
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013924 VULKAN_HPP_INLINE FenceCreateFlags operator|( FenceCreateFlagBits bit0, FenceCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013925 {
13926 return FenceCreateFlags( bit0 ) | bit1;
13927 }
13928
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013929 VULKAN_HPP_INLINE FenceCreateFlags operator~( FenceCreateFlagBits bits )
13930 {
13931 return ~( FenceCreateFlags( bits ) );
13932 }
13933
13934 template <> struct FlagTraits<FenceCreateFlagBits>
13935 {
13936 enum
13937 {
13938 allFlags = VkFlags(FenceCreateFlagBits::eSignaled)
13939 };
13940 };
13941
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013942 struct FenceCreateInfo
13943 {
13944 FenceCreateInfo( FenceCreateFlags flags_ = FenceCreateFlags() )
13945 : sType( StructureType::eFenceCreateInfo )
13946 , pNext( nullptr )
13947 , flags( flags_ )
13948 {
13949 }
13950
13951 FenceCreateInfo( VkFenceCreateInfo const & rhs )
13952 {
13953 memcpy( this, &rhs, sizeof(FenceCreateInfo) );
13954 }
13955
13956 FenceCreateInfo& operator=( VkFenceCreateInfo const & rhs )
13957 {
13958 memcpy( this, &rhs, sizeof(FenceCreateInfo) );
13959 return *this;
13960 }
13961
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013962 FenceCreateInfo& setPNext( const void* pNext_ )
13963 {
13964 pNext = pNext_;
13965 return *this;
13966 }
13967
13968 FenceCreateInfo& setFlags( FenceCreateFlags flags_ )
13969 {
13970 flags = flags_;
13971 return *this;
13972 }
13973
13974 operator const VkFenceCreateInfo&() const
13975 {
13976 return *reinterpret_cast<const VkFenceCreateInfo*>(this);
13977 }
13978
13979 bool operator==( FenceCreateInfo const& rhs ) const
13980 {
13981 return ( sType == rhs.sType )
13982 && ( pNext == rhs.pNext )
13983 && ( flags == rhs.flags );
13984 }
13985
13986 bool operator!=( FenceCreateInfo const& rhs ) const
13987 {
13988 return !operator==( rhs );
13989 }
13990
13991 private:
13992 StructureType sType;
13993
13994 public:
13995 const void* pNext;
13996 FenceCreateFlags flags;
13997 };
13998 static_assert( sizeof( FenceCreateInfo ) == sizeof( VkFenceCreateInfo ), "struct and wrapper have different size!" );
13999
14000 enum class FormatFeatureFlagBits
14001 {
14002 eSampledImage = VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
14003 eStorageImage = VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,
14004 eStorageImageAtomic = VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT,
14005 eUniformTexelBuffer = VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT,
14006 eStorageTexelBuffer = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,
14007 eStorageTexelBufferAtomic = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT,
14008 eVertexBuffer = VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,
14009 eColorAttachment = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,
14010 eColorAttachmentBlend = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
14011 eDepthStencilAttachment = VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,
14012 eBlitSrc = VK_FORMAT_FEATURE_BLIT_SRC_BIT,
14013 eBlitDst = VK_FORMAT_FEATURE_BLIT_DST_BIT,
14014 eSampledImageFilterLinear = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,
Mark Young39389872017-01-19 21:10:49 -070014015 eSampledImageFilterCubicIMG = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG,
14016 eTransferSrcKHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR,
14017 eTransferDstKHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014018 };
14019
14020 using FormatFeatureFlags = Flags<FormatFeatureFlagBits, VkFormatFeatureFlags>;
14021
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014022 VULKAN_HPP_INLINE FormatFeatureFlags operator|( FormatFeatureFlagBits bit0, FormatFeatureFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014023 {
14024 return FormatFeatureFlags( bit0 ) | bit1;
14025 }
14026
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014027 VULKAN_HPP_INLINE FormatFeatureFlags operator~( FormatFeatureFlagBits bits )
14028 {
14029 return ~( FormatFeatureFlags( bits ) );
14030 }
14031
14032 template <> struct FlagTraits<FormatFeatureFlagBits>
14033 {
14034 enum
14035 {
Mark Young39389872017-01-19 21:10:49 -070014036 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 -070014037 };
14038 };
14039
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014040 struct FormatProperties
14041 {
14042 operator const VkFormatProperties&() const
14043 {
14044 return *reinterpret_cast<const VkFormatProperties*>(this);
14045 }
14046
14047 bool operator==( FormatProperties const& rhs ) const
14048 {
14049 return ( linearTilingFeatures == rhs.linearTilingFeatures )
14050 && ( optimalTilingFeatures == rhs.optimalTilingFeatures )
14051 && ( bufferFeatures == rhs.bufferFeatures );
14052 }
14053
14054 bool operator!=( FormatProperties const& rhs ) const
14055 {
14056 return !operator==( rhs );
14057 }
14058
14059 FormatFeatureFlags linearTilingFeatures;
14060 FormatFeatureFlags optimalTilingFeatures;
14061 FormatFeatureFlags bufferFeatures;
14062 };
14063 static_assert( sizeof( FormatProperties ) == sizeof( VkFormatProperties ), "struct and wrapper have different size!" );
14064
Mark Young39389872017-01-19 21:10:49 -070014065 struct FormatProperties2KHR
14066 {
14067 operator const VkFormatProperties2KHR&() const
14068 {
14069 return *reinterpret_cast<const VkFormatProperties2KHR*>(this);
14070 }
14071
14072 bool operator==( FormatProperties2KHR const& rhs ) const
14073 {
14074 return ( sType == rhs.sType )
14075 && ( pNext == rhs.pNext )
14076 && ( formatProperties == rhs.formatProperties );
14077 }
14078
14079 bool operator!=( FormatProperties2KHR const& rhs ) const
14080 {
14081 return !operator==( rhs );
14082 }
14083
14084 private:
14085 StructureType sType;
14086
14087 public:
14088 void* pNext;
14089 FormatProperties formatProperties;
14090 };
14091 static_assert( sizeof( FormatProperties2KHR ) == sizeof( VkFormatProperties2KHR ), "struct and wrapper have different size!" );
14092
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014093 enum class QueryControlFlagBits
14094 {
14095 ePrecise = VK_QUERY_CONTROL_PRECISE_BIT
14096 };
14097
14098 using QueryControlFlags = Flags<QueryControlFlagBits, VkQueryControlFlags>;
14099
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014100 VULKAN_HPP_INLINE QueryControlFlags operator|( QueryControlFlagBits bit0, QueryControlFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014101 {
14102 return QueryControlFlags( bit0 ) | bit1;
14103 }
14104
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014105 VULKAN_HPP_INLINE QueryControlFlags operator~( QueryControlFlagBits bits )
14106 {
14107 return ~( QueryControlFlags( bits ) );
14108 }
14109
14110 template <> struct FlagTraits<QueryControlFlagBits>
14111 {
14112 enum
14113 {
14114 allFlags = VkFlags(QueryControlFlagBits::ePrecise)
14115 };
14116 };
14117
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014118 enum class QueryResultFlagBits
14119 {
14120 e64 = VK_QUERY_RESULT_64_BIT,
14121 eWait = VK_QUERY_RESULT_WAIT_BIT,
14122 eWithAvailability = VK_QUERY_RESULT_WITH_AVAILABILITY_BIT,
14123 ePartial = VK_QUERY_RESULT_PARTIAL_BIT
14124 };
14125
14126 using QueryResultFlags = Flags<QueryResultFlagBits, VkQueryResultFlags>;
14127
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014128 VULKAN_HPP_INLINE QueryResultFlags operator|( QueryResultFlagBits bit0, QueryResultFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014129 {
14130 return QueryResultFlags( bit0 ) | bit1;
14131 }
14132
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014133 VULKAN_HPP_INLINE QueryResultFlags operator~( QueryResultFlagBits bits )
14134 {
14135 return ~( QueryResultFlags( bits ) );
14136 }
14137
14138 template <> struct FlagTraits<QueryResultFlagBits>
14139 {
14140 enum
14141 {
14142 allFlags = VkFlags(QueryResultFlagBits::e64) | VkFlags(QueryResultFlagBits::eWait) | VkFlags(QueryResultFlagBits::eWithAvailability) | VkFlags(QueryResultFlagBits::ePartial)
14143 };
14144 };
14145
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014146 enum class CommandBufferUsageFlagBits
14147 {
14148 eOneTimeSubmit = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,
14149 eRenderPassContinue = VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT,
14150 eSimultaneousUse = VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
14151 };
14152
14153 using CommandBufferUsageFlags = Flags<CommandBufferUsageFlagBits, VkCommandBufferUsageFlags>;
14154
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014155 VULKAN_HPP_INLINE CommandBufferUsageFlags operator|( CommandBufferUsageFlagBits bit0, CommandBufferUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014156 {
14157 return CommandBufferUsageFlags( bit0 ) | bit1;
14158 }
14159
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014160 VULKAN_HPP_INLINE CommandBufferUsageFlags operator~( CommandBufferUsageFlagBits bits )
14161 {
14162 return ~( CommandBufferUsageFlags( bits ) );
14163 }
14164
14165 template <> struct FlagTraits<CommandBufferUsageFlagBits>
14166 {
14167 enum
14168 {
14169 allFlags = VkFlags(CommandBufferUsageFlagBits::eOneTimeSubmit) | VkFlags(CommandBufferUsageFlagBits::eRenderPassContinue) | VkFlags(CommandBufferUsageFlagBits::eSimultaneousUse)
14170 };
14171 };
14172
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014173 enum class QueryPipelineStatisticFlagBits
14174 {
14175 eInputAssemblyVertices = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT,
14176 eInputAssemblyPrimitives = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT,
14177 eVertexShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT,
14178 eGeometryShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT,
14179 eGeometryShaderPrimitives = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT,
14180 eClippingInvocations = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT,
14181 eClippingPrimitives = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT,
14182 eFragmentShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT,
14183 eTessellationControlShaderPatches = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT,
14184 eTessellationEvaluationShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT,
14185 eComputeShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT
14186 };
14187
14188 using QueryPipelineStatisticFlags = Flags<QueryPipelineStatisticFlagBits, VkQueryPipelineStatisticFlags>;
14189
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014190 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator|( QueryPipelineStatisticFlagBits bit0, QueryPipelineStatisticFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014191 {
14192 return QueryPipelineStatisticFlags( bit0 ) | bit1;
14193 }
14194
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014195 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator~( QueryPipelineStatisticFlagBits bits )
14196 {
14197 return ~( QueryPipelineStatisticFlags( bits ) );
14198 }
14199
14200 template <> struct FlagTraits<QueryPipelineStatisticFlagBits>
14201 {
14202 enum
14203 {
14204 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)
14205 };
14206 };
14207
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014208 struct CommandBufferInheritanceInfo
14209 {
14210 CommandBufferInheritanceInfo( RenderPass renderPass_ = RenderPass(), uint32_t subpass_ = 0, Framebuffer framebuffer_ = Framebuffer(), Bool32 occlusionQueryEnable_ = 0, QueryControlFlags queryFlags_ = QueryControlFlags(), QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
14211 : sType( StructureType::eCommandBufferInheritanceInfo )
14212 , pNext( nullptr )
14213 , renderPass( renderPass_ )
14214 , subpass( subpass_ )
14215 , framebuffer( framebuffer_ )
14216 , occlusionQueryEnable( occlusionQueryEnable_ )
14217 , queryFlags( queryFlags_ )
14218 , pipelineStatistics( pipelineStatistics_ )
14219 {
14220 }
14221
14222 CommandBufferInheritanceInfo( VkCommandBufferInheritanceInfo const & rhs )
14223 {
14224 memcpy( this, &rhs, sizeof(CommandBufferInheritanceInfo) );
14225 }
14226
14227 CommandBufferInheritanceInfo& operator=( VkCommandBufferInheritanceInfo const & rhs )
14228 {
14229 memcpy( this, &rhs, sizeof(CommandBufferInheritanceInfo) );
14230 return *this;
14231 }
14232
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014233 CommandBufferInheritanceInfo& setPNext( const void* pNext_ )
14234 {
14235 pNext = pNext_;
14236 return *this;
14237 }
14238
14239 CommandBufferInheritanceInfo& setRenderPass( RenderPass renderPass_ )
14240 {
14241 renderPass = renderPass_;
14242 return *this;
14243 }
14244
14245 CommandBufferInheritanceInfo& setSubpass( uint32_t subpass_ )
14246 {
14247 subpass = subpass_;
14248 return *this;
14249 }
14250
14251 CommandBufferInheritanceInfo& setFramebuffer( Framebuffer framebuffer_ )
14252 {
14253 framebuffer = framebuffer_;
14254 return *this;
14255 }
14256
14257 CommandBufferInheritanceInfo& setOcclusionQueryEnable( Bool32 occlusionQueryEnable_ )
14258 {
14259 occlusionQueryEnable = occlusionQueryEnable_;
14260 return *this;
14261 }
14262
14263 CommandBufferInheritanceInfo& setQueryFlags( QueryControlFlags queryFlags_ )
14264 {
14265 queryFlags = queryFlags_;
14266 return *this;
14267 }
14268
14269 CommandBufferInheritanceInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
14270 {
14271 pipelineStatistics = pipelineStatistics_;
14272 return *this;
14273 }
14274
14275 operator const VkCommandBufferInheritanceInfo&() const
14276 {
14277 return *reinterpret_cast<const VkCommandBufferInheritanceInfo*>(this);
14278 }
14279
14280 bool operator==( CommandBufferInheritanceInfo const& rhs ) const
14281 {
14282 return ( sType == rhs.sType )
14283 && ( pNext == rhs.pNext )
14284 && ( renderPass == rhs.renderPass )
14285 && ( subpass == rhs.subpass )
14286 && ( framebuffer == rhs.framebuffer )
14287 && ( occlusionQueryEnable == rhs.occlusionQueryEnable )
14288 && ( queryFlags == rhs.queryFlags )
14289 && ( pipelineStatistics == rhs.pipelineStatistics );
14290 }
14291
14292 bool operator!=( CommandBufferInheritanceInfo const& rhs ) const
14293 {
14294 return !operator==( rhs );
14295 }
14296
14297 private:
14298 StructureType sType;
14299
14300 public:
14301 const void* pNext;
14302 RenderPass renderPass;
14303 uint32_t subpass;
14304 Framebuffer framebuffer;
14305 Bool32 occlusionQueryEnable;
14306 QueryControlFlags queryFlags;
14307 QueryPipelineStatisticFlags pipelineStatistics;
14308 };
14309 static_assert( sizeof( CommandBufferInheritanceInfo ) == sizeof( VkCommandBufferInheritanceInfo ), "struct and wrapper have different size!" );
14310
14311 struct CommandBufferBeginInfo
14312 {
14313 CommandBufferBeginInfo( CommandBufferUsageFlags flags_ = CommandBufferUsageFlags(), const CommandBufferInheritanceInfo* pInheritanceInfo_ = nullptr )
14314 : sType( StructureType::eCommandBufferBeginInfo )
14315 , pNext( nullptr )
14316 , flags( flags_ )
14317 , pInheritanceInfo( pInheritanceInfo_ )
14318 {
14319 }
14320
14321 CommandBufferBeginInfo( VkCommandBufferBeginInfo const & rhs )
14322 {
14323 memcpy( this, &rhs, sizeof(CommandBufferBeginInfo) );
14324 }
14325
14326 CommandBufferBeginInfo& operator=( VkCommandBufferBeginInfo const & rhs )
14327 {
14328 memcpy( this, &rhs, sizeof(CommandBufferBeginInfo) );
14329 return *this;
14330 }
14331
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014332 CommandBufferBeginInfo& setPNext( const void* pNext_ )
14333 {
14334 pNext = pNext_;
14335 return *this;
14336 }
14337
14338 CommandBufferBeginInfo& setFlags( CommandBufferUsageFlags flags_ )
14339 {
14340 flags = flags_;
14341 return *this;
14342 }
14343
14344 CommandBufferBeginInfo& setPInheritanceInfo( const CommandBufferInheritanceInfo* pInheritanceInfo_ )
14345 {
14346 pInheritanceInfo = pInheritanceInfo_;
14347 return *this;
14348 }
14349
14350 operator const VkCommandBufferBeginInfo&() const
14351 {
14352 return *reinterpret_cast<const VkCommandBufferBeginInfo*>(this);
14353 }
14354
14355 bool operator==( CommandBufferBeginInfo const& rhs ) const
14356 {
14357 return ( sType == rhs.sType )
14358 && ( pNext == rhs.pNext )
14359 && ( flags == rhs.flags )
14360 && ( pInheritanceInfo == rhs.pInheritanceInfo );
14361 }
14362
14363 bool operator!=( CommandBufferBeginInfo const& rhs ) const
14364 {
14365 return !operator==( rhs );
14366 }
14367
14368 private:
14369 StructureType sType;
14370
14371 public:
14372 const void* pNext;
14373 CommandBufferUsageFlags flags;
14374 const CommandBufferInheritanceInfo* pInheritanceInfo;
14375 };
14376 static_assert( sizeof( CommandBufferBeginInfo ) == sizeof( VkCommandBufferBeginInfo ), "struct and wrapper have different size!" );
14377
14378 struct QueryPoolCreateInfo
14379 {
14380 QueryPoolCreateInfo( QueryPoolCreateFlags flags_ = QueryPoolCreateFlags(), QueryType queryType_ = QueryType::eOcclusion, uint32_t queryCount_ = 0, QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
14381 : sType( StructureType::eQueryPoolCreateInfo )
14382 , pNext( nullptr )
14383 , flags( flags_ )
14384 , queryType( queryType_ )
14385 , queryCount( queryCount_ )
14386 , pipelineStatistics( pipelineStatistics_ )
14387 {
14388 }
14389
14390 QueryPoolCreateInfo( VkQueryPoolCreateInfo const & rhs )
14391 {
14392 memcpy( this, &rhs, sizeof(QueryPoolCreateInfo) );
14393 }
14394
14395 QueryPoolCreateInfo& operator=( VkQueryPoolCreateInfo const & rhs )
14396 {
14397 memcpy( this, &rhs, sizeof(QueryPoolCreateInfo) );
14398 return *this;
14399 }
14400
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014401 QueryPoolCreateInfo& setPNext( const void* pNext_ )
14402 {
14403 pNext = pNext_;
14404 return *this;
14405 }
14406
14407 QueryPoolCreateInfo& setFlags( QueryPoolCreateFlags flags_ )
14408 {
14409 flags = flags_;
14410 return *this;
14411 }
14412
14413 QueryPoolCreateInfo& setQueryType( QueryType queryType_ )
14414 {
14415 queryType = queryType_;
14416 return *this;
14417 }
14418
14419 QueryPoolCreateInfo& setQueryCount( uint32_t queryCount_ )
14420 {
14421 queryCount = queryCount_;
14422 return *this;
14423 }
14424
14425 QueryPoolCreateInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
14426 {
14427 pipelineStatistics = pipelineStatistics_;
14428 return *this;
14429 }
14430
14431 operator const VkQueryPoolCreateInfo&() const
14432 {
14433 return *reinterpret_cast<const VkQueryPoolCreateInfo*>(this);
14434 }
14435
14436 bool operator==( QueryPoolCreateInfo const& rhs ) const
14437 {
14438 return ( sType == rhs.sType )
14439 && ( pNext == rhs.pNext )
14440 && ( flags == rhs.flags )
14441 && ( queryType == rhs.queryType )
14442 && ( queryCount == rhs.queryCount )
14443 && ( pipelineStatistics == rhs.pipelineStatistics );
14444 }
14445
14446 bool operator!=( QueryPoolCreateInfo const& rhs ) const
14447 {
14448 return !operator==( rhs );
14449 }
14450
14451 private:
14452 StructureType sType;
14453
14454 public:
14455 const void* pNext;
14456 QueryPoolCreateFlags flags;
14457 QueryType queryType;
14458 uint32_t queryCount;
14459 QueryPipelineStatisticFlags pipelineStatistics;
14460 };
14461 static_assert( sizeof( QueryPoolCreateInfo ) == sizeof( VkQueryPoolCreateInfo ), "struct and wrapper have different size!" );
14462
14463 enum class ImageAspectFlagBits
14464 {
14465 eColor = VK_IMAGE_ASPECT_COLOR_BIT,
14466 eDepth = VK_IMAGE_ASPECT_DEPTH_BIT,
14467 eStencil = VK_IMAGE_ASPECT_STENCIL_BIT,
14468 eMetadata = VK_IMAGE_ASPECT_METADATA_BIT
14469 };
14470
14471 using ImageAspectFlags = Flags<ImageAspectFlagBits, VkImageAspectFlags>;
14472
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014473 VULKAN_HPP_INLINE ImageAspectFlags operator|( ImageAspectFlagBits bit0, ImageAspectFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014474 {
14475 return ImageAspectFlags( bit0 ) | bit1;
14476 }
14477
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014478 VULKAN_HPP_INLINE ImageAspectFlags operator~( ImageAspectFlagBits bits )
14479 {
14480 return ~( ImageAspectFlags( bits ) );
14481 }
14482
14483 template <> struct FlagTraits<ImageAspectFlagBits>
14484 {
14485 enum
14486 {
14487 allFlags = VkFlags(ImageAspectFlagBits::eColor) | VkFlags(ImageAspectFlagBits::eDepth) | VkFlags(ImageAspectFlagBits::eStencil) | VkFlags(ImageAspectFlagBits::eMetadata)
14488 };
14489 };
14490
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014491 struct ImageSubresource
14492 {
14493 ImageSubresource( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t mipLevel_ = 0, uint32_t arrayLayer_ = 0 )
14494 : aspectMask( aspectMask_ )
14495 , mipLevel( mipLevel_ )
14496 , arrayLayer( arrayLayer_ )
14497 {
14498 }
14499
14500 ImageSubresource( VkImageSubresource const & rhs )
14501 {
14502 memcpy( this, &rhs, sizeof(ImageSubresource) );
14503 }
14504
14505 ImageSubresource& operator=( VkImageSubresource const & rhs )
14506 {
14507 memcpy( this, &rhs, sizeof(ImageSubresource) );
14508 return *this;
14509 }
14510
14511 ImageSubresource& setAspectMask( ImageAspectFlags aspectMask_ )
14512 {
14513 aspectMask = aspectMask_;
14514 return *this;
14515 }
14516
14517 ImageSubresource& setMipLevel( uint32_t mipLevel_ )
14518 {
14519 mipLevel = mipLevel_;
14520 return *this;
14521 }
14522
14523 ImageSubresource& setArrayLayer( uint32_t arrayLayer_ )
14524 {
14525 arrayLayer = arrayLayer_;
14526 return *this;
14527 }
14528
14529 operator const VkImageSubresource&() const
14530 {
14531 return *reinterpret_cast<const VkImageSubresource*>(this);
14532 }
14533
14534 bool operator==( ImageSubresource const& rhs ) const
14535 {
14536 return ( aspectMask == rhs.aspectMask )
14537 && ( mipLevel == rhs.mipLevel )
14538 && ( arrayLayer == rhs.arrayLayer );
14539 }
14540
14541 bool operator!=( ImageSubresource const& rhs ) const
14542 {
14543 return !operator==( rhs );
14544 }
14545
14546 ImageAspectFlags aspectMask;
14547 uint32_t mipLevel;
14548 uint32_t arrayLayer;
14549 };
14550 static_assert( sizeof( ImageSubresource ) == sizeof( VkImageSubresource ), "struct and wrapper have different size!" );
14551
14552 struct ImageSubresourceLayers
14553 {
14554 ImageSubresourceLayers( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t mipLevel_ = 0, uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
14555 : aspectMask( aspectMask_ )
14556 , mipLevel( mipLevel_ )
14557 , baseArrayLayer( baseArrayLayer_ )
14558 , layerCount( layerCount_ )
14559 {
14560 }
14561
14562 ImageSubresourceLayers( VkImageSubresourceLayers const & rhs )
14563 {
14564 memcpy( this, &rhs, sizeof(ImageSubresourceLayers) );
14565 }
14566
14567 ImageSubresourceLayers& operator=( VkImageSubresourceLayers const & rhs )
14568 {
14569 memcpy( this, &rhs, sizeof(ImageSubresourceLayers) );
14570 return *this;
14571 }
14572
14573 ImageSubresourceLayers& setAspectMask( ImageAspectFlags aspectMask_ )
14574 {
14575 aspectMask = aspectMask_;
14576 return *this;
14577 }
14578
14579 ImageSubresourceLayers& setMipLevel( uint32_t mipLevel_ )
14580 {
14581 mipLevel = mipLevel_;
14582 return *this;
14583 }
14584
14585 ImageSubresourceLayers& setBaseArrayLayer( uint32_t baseArrayLayer_ )
14586 {
14587 baseArrayLayer = baseArrayLayer_;
14588 return *this;
14589 }
14590
14591 ImageSubresourceLayers& setLayerCount( uint32_t layerCount_ )
14592 {
14593 layerCount = layerCount_;
14594 return *this;
14595 }
14596
14597 operator const VkImageSubresourceLayers&() const
14598 {
14599 return *reinterpret_cast<const VkImageSubresourceLayers*>(this);
14600 }
14601
14602 bool operator==( ImageSubresourceLayers const& rhs ) const
14603 {
14604 return ( aspectMask == rhs.aspectMask )
14605 && ( mipLevel == rhs.mipLevel )
14606 && ( baseArrayLayer == rhs.baseArrayLayer )
14607 && ( layerCount == rhs.layerCount );
14608 }
14609
14610 bool operator!=( ImageSubresourceLayers const& rhs ) const
14611 {
14612 return !operator==( rhs );
14613 }
14614
14615 ImageAspectFlags aspectMask;
14616 uint32_t mipLevel;
14617 uint32_t baseArrayLayer;
14618 uint32_t layerCount;
14619 };
14620 static_assert( sizeof( ImageSubresourceLayers ) == sizeof( VkImageSubresourceLayers ), "struct and wrapper have different size!" );
14621
14622 struct ImageSubresourceRange
14623 {
14624 ImageSubresourceRange( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t baseMipLevel_ = 0, uint32_t levelCount_ = 0, uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
14625 : aspectMask( aspectMask_ )
14626 , baseMipLevel( baseMipLevel_ )
14627 , levelCount( levelCount_ )
14628 , baseArrayLayer( baseArrayLayer_ )
14629 , layerCount( layerCount_ )
14630 {
14631 }
14632
14633 ImageSubresourceRange( VkImageSubresourceRange const & rhs )
14634 {
14635 memcpy( this, &rhs, sizeof(ImageSubresourceRange) );
14636 }
14637
14638 ImageSubresourceRange& operator=( VkImageSubresourceRange const & rhs )
14639 {
14640 memcpy( this, &rhs, sizeof(ImageSubresourceRange) );
14641 return *this;
14642 }
14643
14644 ImageSubresourceRange& setAspectMask( ImageAspectFlags aspectMask_ )
14645 {
14646 aspectMask = aspectMask_;
14647 return *this;
14648 }
14649
14650 ImageSubresourceRange& setBaseMipLevel( uint32_t baseMipLevel_ )
14651 {
14652 baseMipLevel = baseMipLevel_;
14653 return *this;
14654 }
14655
14656 ImageSubresourceRange& setLevelCount( uint32_t levelCount_ )
14657 {
14658 levelCount = levelCount_;
14659 return *this;
14660 }
14661
14662 ImageSubresourceRange& setBaseArrayLayer( uint32_t baseArrayLayer_ )
14663 {
14664 baseArrayLayer = baseArrayLayer_;
14665 return *this;
14666 }
14667
14668 ImageSubresourceRange& setLayerCount( uint32_t layerCount_ )
14669 {
14670 layerCount = layerCount_;
14671 return *this;
14672 }
14673
14674 operator const VkImageSubresourceRange&() const
14675 {
14676 return *reinterpret_cast<const VkImageSubresourceRange*>(this);
14677 }
14678
14679 bool operator==( ImageSubresourceRange const& rhs ) const
14680 {
14681 return ( aspectMask == rhs.aspectMask )
14682 && ( baseMipLevel == rhs.baseMipLevel )
14683 && ( levelCount == rhs.levelCount )
14684 && ( baseArrayLayer == rhs.baseArrayLayer )
14685 && ( layerCount == rhs.layerCount );
14686 }
14687
14688 bool operator!=( ImageSubresourceRange const& rhs ) const
14689 {
14690 return !operator==( rhs );
14691 }
14692
14693 ImageAspectFlags aspectMask;
14694 uint32_t baseMipLevel;
14695 uint32_t levelCount;
14696 uint32_t baseArrayLayer;
14697 uint32_t layerCount;
14698 };
14699 static_assert( sizeof( ImageSubresourceRange ) == sizeof( VkImageSubresourceRange ), "struct and wrapper have different size!" );
14700
14701 struct ImageMemoryBarrier
14702 {
14703 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() )
14704 : sType( StructureType::eImageMemoryBarrier )
14705 , pNext( nullptr )
14706 , srcAccessMask( srcAccessMask_ )
14707 , dstAccessMask( dstAccessMask_ )
14708 , oldLayout( oldLayout_ )
14709 , newLayout( newLayout_ )
14710 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
14711 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
14712 , image( image_ )
14713 , subresourceRange( subresourceRange_ )
14714 {
14715 }
14716
14717 ImageMemoryBarrier( VkImageMemoryBarrier const & rhs )
14718 {
14719 memcpy( this, &rhs, sizeof(ImageMemoryBarrier) );
14720 }
14721
14722 ImageMemoryBarrier& operator=( VkImageMemoryBarrier const & rhs )
14723 {
14724 memcpy( this, &rhs, sizeof(ImageMemoryBarrier) );
14725 return *this;
14726 }
14727
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014728 ImageMemoryBarrier& setPNext( const void* pNext_ )
14729 {
14730 pNext = pNext_;
14731 return *this;
14732 }
14733
14734 ImageMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
14735 {
14736 srcAccessMask = srcAccessMask_;
14737 return *this;
14738 }
14739
14740 ImageMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
14741 {
14742 dstAccessMask = dstAccessMask_;
14743 return *this;
14744 }
14745
14746 ImageMemoryBarrier& setOldLayout( ImageLayout oldLayout_ )
14747 {
14748 oldLayout = oldLayout_;
14749 return *this;
14750 }
14751
14752 ImageMemoryBarrier& setNewLayout( ImageLayout newLayout_ )
14753 {
14754 newLayout = newLayout_;
14755 return *this;
14756 }
14757
14758 ImageMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
14759 {
14760 srcQueueFamilyIndex = srcQueueFamilyIndex_;
14761 return *this;
14762 }
14763
14764 ImageMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
14765 {
14766 dstQueueFamilyIndex = dstQueueFamilyIndex_;
14767 return *this;
14768 }
14769
14770 ImageMemoryBarrier& setImage( Image image_ )
14771 {
14772 image = image_;
14773 return *this;
14774 }
14775
14776 ImageMemoryBarrier& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
14777 {
14778 subresourceRange = subresourceRange_;
14779 return *this;
14780 }
14781
14782 operator const VkImageMemoryBarrier&() const
14783 {
14784 return *reinterpret_cast<const VkImageMemoryBarrier*>(this);
14785 }
14786
14787 bool operator==( ImageMemoryBarrier const& rhs ) const
14788 {
14789 return ( sType == rhs.sType )
14790 && ( pNext == rhs.pNext )
14791 && ( srcAccessMask == rhs.srcAccessMask )
14792 && ( dstAccessMask == rhs.dstAccessMask )
14793 && ( oldLayout == rhs.oldLayout )
14794 && ( newLayout == rhs.newLayout )
14795 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
14796 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
14797 && ( image == rhs.image )
14798 && ( subresourceRange == rhs.subresourceRange );
14799 }
14800
14801 bool operator!=( ImageMemoryBarrier const& rhs ) const
14802 {
14803 return !operator==( rhs );
14804 }
14805
14806 private:
14807 StructureType sType;
14808
14809 public:
14810 const void* pNext;
14811 AccessFlags srcAccessMask;
14812 AccessFlags dstAccessMask;
14813 ImageLayout oldLayout;
14814 ImageLayout newLayout;
14815 uint32_t srcQueueFamilyIndex;
14816 uint32_t dstQueueFamilyIndex;
14817 Image image;
14818 ImageSubresourceRange subresourceRange;
14819 };
14820 static_assert( sizeof( ImageMemoryBarrier ) == sizeof( VkImageMemoryBarrier ), "struct and wrapper have different size!" );
14821
14822 struct ImageViewCreateInfo
14823 {
14824 ImageViewCreateInfo( ImageViewCreateFlags flags_ = ImageViewCreateFlags(), Image image_ = Image(), ImageViewType viewType_ = ImageViewType::e1D, Format format_ = Format::eUndefined, ComponentMapping components_ = ComponentMapping(), ImageSubresourceRange subresourceRange_ = ImageSubresourceRange() )
14825 : sType( StructureType::eImageViewCreateInfo )
14826 , pNext( nullptr )
14827 , flags( flags_ )
14828 , image( image_ )
14829 , viewType( viewType_ )
14830 , format( format_ )
14831 , components( components_ )
14832 , subresourceRange( subresourceRange_ )
14833 {
14834 }
14835
14836 ImageViewCreateInfo( VkImageViewCreateInfo const & rhs )
14837 {
14838 memcpy( this, &rhs, sizeof(ImageViewCreateInfo) );
14839 }
14840
14841 ImageViewCreateInfo& operator=( VkImageViewCreateInfo const & rhs )
14842 {
14843 memcpy( this, &rhs, sizeof(ImageViewCreateInfo) );
14844 return *this;
14845 }
14846
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014847 ImageViewCreateInfo& setPNext( const void* pNext_ )
14848 {
14849 pNext = pNext_;
14850 return *this;
14851 }
14852
14853 ImageViewCreateInfo& setFlags( ImageViewCreateFlags flags_ )
14854 {
14855 flags = flags_;
14856 return *this;
14857 }
14858
14859 ImageViewCreateInfo& setImage( Image image_ )
14860 {
14861 image = image_;
14862 return *this;
14863 }
14864
14865 ImageViewCreateInfo& setViewType( ImageViewType viewType_ )
14866 {
14867 viewType = viewType_;
14868 return *this;
14869 }
14870
14871 ImageViewCreateInfo& setFormat( Format format_ )
14872 {
14873 format = format_;
14874 return *this;
14875 }
14876
14877 ImageViewCreateInfo& setComponents( ComponentMapping components_ )
14878 {
14879 components = components_;
14880 return *this;
14881 }
14882
14883 ImageViewCreateInfo& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
14884 {
14885 subresourceRange = subresourceRange_;
14886 return *this;
14887 }
14888
14889 operator const VkImageViewCreateInfo&() const
14890 {
14891 return *reinterpret_cast<const VkImageViewCreateInfo*>(this);
14892 }
14893
14894 bool operator==( ImageViewCreateInfo const& rhs ) const
14895 {
14896 return ( sType == rhs.sType )
14897 && ( pNext == rhs.pNext )
14898 && ( flags == rhs.flags )
14899 && ( image == rhs.image )
14900 && ( viewType == rhs.viewType )
14901 && ( format == rhs.format )
14902 && ( components == rhs.components )
14903 && ( subresourceRange == rhs.subresourceRange );
14904 }
14905
14906 bool operator!=( ImageViewCreateInfo const& rhs ) const
14907 {
14908 return !operator==( rhs );
14909 }
14910
14911 private:
14912 StructureType sType;
14913
14914 public:
14915 const void* pNext;
14916 ImageViewCreateFlags flags;
14917 Image image;
14918 ImageViewType viewType;
14919 Format format;
14920 ComponentMapping components;
14921 ImageSubresourceRange subresourceRange;
14922 };
14923 static_assert( sizeof( ImageViewCreateInfo ) == sizeof( VkImageViewCreateInfo ), "struct and wrapper have different size!" );
14924
14925 struct ImageCopy
14926 {
14927 ImageCopy( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), Offset3D srcOffset_ = Offset3D(), ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), Offset3D dstOffset_ = Offset3D(), Extent3D extent_ = Extent3D() )
14928 : srcSubresource( srcSubresource_ )
14929 , srcOffset( srcOffset_ )
14930 , dstSubresource( dstSubresource_ )
14931 , dstOffset( dstOffset_ )
14932 , extent( extent_ )
14933 {
14934 }
14935
14936 ImageCopy( VkImageCopy const & rhs )
14937 {
14938 memcpy( this, &rhs, sizeof(ImageCopy) );
14939 }
14940
14941 ImageCopy& operator=( VkImageCopy const & rhs )
14942 {
14943 memcpy( this, &rhs, sizeof(ImageCopy) );
14944 return *this;
14945 }
14946
14947 ImageCopy& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
14948 {
14949 srcSubresource = srcSubresource_;
14950 return *this;
14951 }
14952
14953 ImageCopy& setSrcOffset( Offset3D srcOffset_ )
14954 {
14955 srcOffset = srcOffset_;
14956 return *this;
14957 }
14958
14959 ImageCopy& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
14960 {
14961 dstSubresource = dstSubresource_;
14962 return *this;
14963 }
14964
14965 ImageCopy& setDstOffset( Offset3D dstOffset_ )
14966 {
14967 dstOffset = dstOffset_;
14968 return *this;
14969 }
14970
14971 ImageCopy& setExtent( Extent3D extent_ )
14972 {
14973 extent = extent_;
14974 return *this;
14975 }
14976
14977 operator const VkImageCopy&() const
14978 {
14979 return *reinterpret_cast<const VkImageCopy*>(this);
14980 }
14981
14982 bool operator==( ImageCopy const& rhs ) const
14983 {
14984 return ( srcSubresource == rhs.srcSubresource )
14985 && ( srcOffset == rhs.srcOffset )
14986 && ( dstSubresource == rhs.dstSubresource )
14987 && ( dstOffset == rhs.dstOffset )
14988 && ( extent == rhs.extent );
14989 }
14990
14991 bool operator!=( ImageCopy const& rhs ) const
14992 {
14993 return !operator==( rhs );
14994 }
14995
14996 ImageSubresourceLayers srcSubresource;
14997 Offset3D srcOffset;
14998 ImageSubresourceLayers dstSubresource;
14999 Offset3D dstOffset;
15000 Extent3D extent;
15001 };
15002 static_assert( sizeof( ImageCopy ) == sizeof( VkImageCopy ), "struct and wrapper have different size!" );
15003
15004 struct ImageBlit
15005 {
15006 ImageBlit( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), std::array<Offset3D,2> const& srcOffsets_ = { { Offset3D(), Offset3D() } }, ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), std::array<Offset3D,2> const& dstOffsets_ = { { Offset3D(), Offset3D() } } )
15007 : srcSubresource( srcSubresource_ )
15008 , dstSubresource( dstSubresource_ )
15009 {
15010 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
15011 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
15012 }
15013
15014 ImageBlit( VkImageBlit const & rhs )
15015 {
15016 memcpy( this, &rhs, sizeof(ImageBlit) );
15017 }
15018
15019 ImageBlit& operator=( VkImageBlit const & rhs )
15020 {
15021 memcpy( this, &rhs, sizeof(ImageBlit) );
15022 return *this;
15023 }
15024
15025 ImageBlit& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
15026 {
15027 srcSubresource = srcSubresource_;
15028 return *this;
15029 }
15030
15031 ImageBlit& setSrcOffsets( std::array<Offset3D,2> srcOffsets_ )
15032 {
15033 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
15034 return *this;
15035 }
15036
15037 ImageBlit& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
15038 {
15039 dstSubresource = dstSubresource_;
15040 return *this;
15041 }
15042
15043 ImageBlit& setDstOffsets( std::array<Offset3D,2> dstOffsets_ )
15044 {
15045 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
15046 return *this;
15047 }
15048
15049 operator const VkImageBlit&() const
15050 {
15051 return *reinterpret_cast<const VkImageBlit*>(this);
15052 }
15053
15054 bool operator==( ImageBlit const& rhs ) const
15055 {
15056 return ( srcSubresource == rhs.srcSubresource )
15057 && ( memcmp( srcOffsets, rhs.srcOffsets, 2 * sizeof( Offset3D ) ) == 0 )
15058 && ( dstSubresource == rhs.dstSubresource )
15059 && ( memcmp( dstOffsets, rhs.dstOffsets, 2 * sizeof( Offset3D ) ) == 0 );
15060 }
15061
15062 bool operator!=( ImageBlit const& rhs ) const
15063 {
15064 return !operator==( rhs );
15065 }
15066
15067 ImageSubresourceLayers srcSubresource;
15068 Offset3D srcOffsets[2];
15069 ImageSubresourceLayers dstSubresource;
15070 Offset3D dstOffsets[2];
15071 };
15072 static_assert( sizeof( ImageBlit ) == sizeof( VkImageBlit ), "struct and wrapper have different size!" );
15073
15074 struct BufferImageCopy
15075 {
15076 BufferImageCopy( DeviceSize bufferOffset_ = 0, uint32_t bufferRowLength_ = 0, uint32_t bufferImageHeight_ = 0, ImageSubresourceLayers imageSubresource_ = ImageSubresourceLayers(), Offset3D imageOffset_ = Offset3D(), Extent3D imageExtent_ = Extent3D() )
15077 : bufferOffset( bufferOffset_ )
15078 , bufferRowLength( bufferRowLength_ )
15079 , bufferImageHeight( bufferImageHeight_ )
15080 , imageSubresource( imageSubresource_ )
15081 , imageOffset( imageOffset_ )
15082 , imageExtent( imageExtent_ )
15083 {
15084 }
15085
15086 BufferImageCopy( VkBufferImageCopy const & rhs )
15087 {
15088 memcpy( this, &rhs, sizeof(BufferImageCopy) );
15089 }
15090
15091 BufferImageCopy& operator=( VkBufferImageCopy const & rhs )
15092 {
15093 memcpy( this, &rhs, sizeof(BufferImageCopy) );
15094 return *this;
15095 }
15096
15097 BufferImageCopy& setBufferOffset( DeviceSize bufferOffset_ )
15098 {
15099 bufferOffset = bufferOffset_;
15100 return *this;
15101 }
15102
15103 BufferImageCopy& setBufferRowLength( uint32_t bufferRowLength_ )
15104 {
15105 bufferRowLength = bufferRowLength_;
15106 return *this;
15107 }
15108
15109 BufferImageCopy& setBufferImageHeight( uint32_t bufferImageHeight_ )
15110 {
15111 bufferImageHeight = bufferImageHeight_;
15112 return *this;
15113 }
15114
15115 BufferImageCopy& setImageSubresource( ImageSubresourceLayers imageSubresource_ )
15116 {
15117 imageSubresource = imageSubresource_;
15118 return *this;
15119 }
15120
15121 BufferImageCopy& setImageOffset( Offset3D imageOffset_ )
15122 {
15123 imageOffset = imageOffset_;
15124 return *this;
15125 }
15126
15127 BufferImageCopy& setImageExtent( Extent3D imageExtent_ )
15128 {
15129 imageExtent = imageExtent_;
15130 return *this;
15131 }
15132
15133 operator const VkBufferImageCopy&() const
15134 {
15135 return *reinterpret_cast<const VkBufferImageCopy*>(this);
15136 }
15137
15138 bool operator==( BufferImageCopy const& rhs ) const
15139 {
15140 return ( bufferOffset == rhs.bufferOffset )
15141 && ( bufferRowLength == rhs.bufferRowLength )
15142 && ( bufferImageHeight == rhs.bufferImageHeight )
15143 && ( imageSubresource == rhs.imageSubresource )
15144 && ( imageOffset == rhs.imageOffset )
15145 && ( imageExtent == rhs.imageExtent );
15146 }
15147
15148 bool operator!=( BufferImageCopy const& rhs ) const
15149 {
15150 return !operator==( rhs );
15151 }
15152
15153 DeviceSize bufferOffset;
15154 uint32_t bufferRowLength;
15155 uint32_t bufferImageHeight;
15156 ImageSubresourceLayers imageSubresource;
15157 Offset3D imageOffset;
15158 Extent3D imageExtent;
15159 };
15160 static_assert( sizeof( BufferImageCopy ) == sizeof( VkBufferImageCopy ), "struct and wrapper have different size!" );
15161
15162 struct ImageResolve
15163 {
15164 ImageResolve( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), Offset3D srcOffset_ = Offset3D(), ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), Offset3D dstOffset_ = Offset3D(), Extent3D extent_ = Extent3D() )
15165 : srcSubresource( srcSubresource_ )
15166 , srcOffset( srcOffset_ )
15167 , dstSubresource( dstSubresource_ )
15168 , dstOffset( dstOffset_ )
15169 , extent( extent_ )
15170 {
15171 }
15172
15173 ImageResolve( VkImageResolve const & rhs )
15174 {
15175 memcpy( this, &rhs, sizeof(ImageResolve) );
15176 }
15177
15178 ImageResolve& operator=( VkImageResolve const & rhs )
15179 {
15180 memcpy( this, &rhs, sizeof(ImageResolve) );
15181 return *this;
15182 }
15183
15184 ImageResolve& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
15185 {
15186 srcSubresource = srcSubresource_;
15187 return *this;
15188 }
15189
15190 ImageResolve& setSrcOffset( Offset3D srcOffset_ )
15191 {
15192 srcOffset = srcOffset_;
15193 return *this;
15194 }
15195
15196 ImageResolve& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
15197 {
15198 dstSubresource = dstSubresource_;
15199 return *this;
15200 }
15201
15202 ImageResolve& setDstOffset( Offset3D dstOffset_ )
15203 {
15204 dstOffset = dstOffset_;
15205 return *this;
15206 }
15207
15208 ImageResolve& setExtent( Extent3D extent_ )
15209 {
15210 extent = extent_;
15211 return *this;
15212 }
15213
15214 operator const VkImageResolve&() const
15215 {
15216 return *reinterpret_cast<const VkImageResolve*>(this);
15217 }
15218
15219 bool operator==( ImageResolve const& rhs ) const
15220 {
15221 return ( srcSubresource == rhs.srcSubresource )
15222 && ( srcOffset == rhs.srcOffset )
15223 && ( dstSubresource == rhs.dstSubresource )
15224 && ( dstOffset == rhs.dstOffset )
15225 && ( extent == rhs.extent );
15226 }
15227
15228 bool operator!=( ImageResolve const& rhs ) const
15229 {
15230 return !operator==( rhs );
15231 }
15232
15233 ImageSubresourceLayers srcSubresource;
15234 Offset3D srcOffset;
15235 ImageSubresourceLayers dstSubresource;
15236 Offset3D dstOffset;
15237 Extent3D extent;
15238 };
15239 static_assert( sizeof( ImageResolve ) == sizeof( VkImageResolve ), "struct and wrapper have different size!" );
15240
15241 struct ClearAttachment
15242 {
15243 ClearAttachment( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t colorAttachment_ = 0, ClearValue clearValue_ = ClearValue() )
15244 : aspectMask( aspectMask_ )
15245 , colorAttachment( colorAttachment_ )
15246 , clearValue( clearValue_ )
15247 {
15248 }
15249
15250 ClearAttachment( VkClearAttachment const & rhs )
15251 {
15252 memcpy( this, &rhs, sizeof(ClearAttachment) );
15253 }
15254
15255 ClearAttachment& operator=( VkClearAttachment const & rhs )
15256 {
15257 memcpy( this, &rhs, sizeof(ClearAttachment) );
15258 return *this;
15259 }
15260
15261 ClearAttachment& setAspectMask( ImageAspectFlags aspectMask_ )
15262 {
15263 aspectMask = aspectMask_;
15264 return *this;
15265 }
15266
15267 ClearAttachment& setColorAttachment( uint32_t colorAttachment_ )
15268 {
15269 colorAttachment = colorAttachment_;
15270 return *this;
15271 }
15272
15273 ClearAttachment& setClearValue( ClearValue clearValue_ )
15274 {
15275 clearValue = clearValue_;
15276 return *this;
15277 }
15278
15279 operator const VkClearAttachment&() const
15280 {
15281 return *reinterpret_cast<const VkClearAttachment*>(this);
15282 }
15283
15284 ImageAspectFlags aspectMask;
15285 uint32_t colorAttachment;
15286 ClearValue clearValue;
15287 };
15288 static_assert( sizeof( ClearAttachment ) == sizeof( VkClearAttachment ), "struct and wrapper have different size!" );
15289
15290 enum class SparseImageFormatFlagBits
15291 {
15292 eSingleMiptail = VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT,
15293 eAlignedMipSize = VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT,
15294 eNonstandardBlockSize = VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT
15295 };
15296
15297 using SparseImageFormatFlags = Flags<SparseImageFormatFlagBits, VkSparseImageFormatFlags>;
15298
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015299 VULKAN_HPP_INLINE SparseImageFormatFlags operator|( SparseImageFormatFlagBits bit0, SparseImageFormatFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015300 {
15301 return SparseImageFormatFlags( bit0 ) | bit1;
15302 }
15303
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015304 VULKAN_HPP_INLINE SparseImageFormatFlags operator~( SparseImageFormatFlagBits bits )
15305 {
15306 return ~( SparseImageFormatFlags( bits ) );
15307 }
15308
15309 template <> struct FlagTraits<SparseImageFormatFlagBits>
15310 {
15311 enum
15312 {
15313 allFlags = VkFlags(SparseImageFormatFlagBits::eSingleMiptail) | VkFlags(SparseImageFormatFlagBits::eAlignedMipSize) | VkFlags(SparseImageFormatFlagBits::eNonstandardBlockSize)
15314 };
15315 };
15316
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015317 struct SparseImageFormatProperties
15318 {
15319 operator const VkSparseImageFormatProperties&() const
15320 {
15321 return *reinterpret_cast<const VkSparseImageFormatProperties*>(this);
15322 }
15323
15324 bool operator==( SparseImageFormatProperties const& rhs ) const
15325 {
15326 return ( aspectMask == rhs.aspectMask )
15327 && ( imageGranularity == rhs.imageGranularity )
15328 && ( flags == rhs.flags );
15329 }
15330
15331 bool operator!=( SparseImageFormatProperties const& rhs ) const
15332 {
15333 return !operator==( rhs );
15334 }
15335
15336 ImageAspectFlags aspectMask;
15337 Extent3D imageGranularity;
15338 SparseImageFormatFlags flags;
15339 };
15340 static_assert( sizeof( SparseImageFormatProperties ) == sizeof( VkSparseImageFormatProperties ), "struct and wrapper have different size!" );
15341
15342 struct SparseImageMemoryRequirements
15343 {
15344 operator const VkSparseImageMemoryRequirements&() const
15345 {
15346 return *reinterpret_cast<const VkSparseImageMemoryRequirements*>(this);
15347 }
15348
15349 bool operator==( SparseImageMemoryRequirements const& rhs ) const
15350 {
15351 return ( formatProperties == rhs.formatProperties )
15352 && ( imageMipTailFirstLod == rhs.imageMipTailFirstLod )
15353 && ( imageMipTailSize == rhs.imageMipTailSize )
15354 && ( imageMipTailOffset == rhs.imageMipTailOffset )
15355 && ( imageMipTailStride == rhs.imageMipTailStride );
15356 }
15357
15358 bool operator!=( SparseImageMemoryRequirements const& rhs ) const
15359 {
15360 return !operator==( rhs );
15361 }
15362
15363 SparseImageFormatProperties formatProperties;
15364 uint32_t imageMipTailFirstLod;
15365 DeviceSize imageMipTailSize;
15366 DeviceSize imageMipTailOffset;
15367 DeviceSize imageMipTailStride;
15368 };
15369 static_assert( sizeof( SparseImageMemoryRequirements ) == sizeof( VkSparseImageMemoryRequirements ), "struct and wrapper have different size!" );
15370
Mark Young39389872017-01-19 21:10:49 -070015371 struct SparseImageFormatProperties2KHR
15372 {
15373 operator const VkSparseImageFormatProperties2KHR&() const
15374 {
15375 return *reinterpret_cast<const VkSparseImageFormatProperties2KHR*>(this);
15376 }
15377
15378 bool operator==( SparseImageFormatProperties2KHR const& rhs ) const
15379 {
15380 return ( sType == rhs.sType )
15381 && ( pNext == rhs.pNext )
15382 && ( properties == rhs.properties );
15383 }
15384
15385 bool operator!=( SparseImageFormatProperties2KHR const& rhs ) const
15386 {
15387 return !operator==( rhs );
15388 }
15389
15390 private:
15391 StructureType sType;
15392
15393 public:
15394 void* pNext;
15395 SparseImageFormatProperties properties;
15396 };
15397 static_assert( sizeof( SparseImageFormatProperties2KHR ) == sizeof( VkSparseImageFormatProperties2KHR ), "struct and wrapper have different size!" );
15398
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015399 enum class SparseMemoryBindFlagBits
15400 {
15401 eMetadata = VK_SPARSE_MEMORY_BIND_METADATA_BIT
15402 };
15403
15404 using SparseMemoryBindFlags = Flags<SparseMemoryBindFlagBits, VkSparseMemoryBindFlags>;
15405
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015406 VULKAN_HPP_INLINE SparseMemoryBindFlags operator|( SparseMemoryBindFlagBits bit0, SparseMemoryBindFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015407 {
15408 return SparseMemoryBindFlags( bit0 ) | bit1;
15409 }
15410
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015411 VULKAN_HPP_INLINE SparseMemoryBindFlags operator~( SparseMemoryBindFlagBits bits )
15412 {
15413 return ~( SparseMemoryBindFlags( bits ) );
15414 }
15415
15416 template <> struct FlagTraits<SparseMemoryBindFlagBits>
15417 {
15418 enum
15419 {
15420 allFlags = VkFlags(SparseMemoryBindFlagBits::eMetadata)
15421 };
15422 };
15423
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015424 struct SparseMemoryBind
15425 {
15426 SparseMemoryBind( DeviceSize resourceOffset_ = 0, DeviceSize size_ = 0, DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
15427 : resourceOffset( resourceOffset_ )
15428 , size( size_ )
15429 , memory( memory_ )
15430 , memoryOffset( memoryOffset_ )
15431 , flags( flags_ )
15432 {
15433 }
15434
15435 SparseMemoryBind( VkSparseMemoryBind const & rhs )
15436 {
15437 memcpy( this, &rhs, sizeof(SparseMemoryBind) );
15438 }
15439
15440 SparseMemoryBind& operator=( VkSparseMemoryBind const & rhs )
15441 {
15442 memcpy( this, &rhs, sizeof(SparseMemoryBind) );
15443 return *this;
15444 }
15445
15446 SparseMemoryBind& setResourceOffset( DeviceSize resourceOffset_ )
15447 {
15448 resourceOffset = resourceOffset_;
15449 return *this;
15450 }
15451
15452 SparseMemoryBind& setSize( DeviceSize size_ )
15453 {
15454 size = size_;
15455 return *this;
15456 }
15457
15458 SparseMemoryBind& setMemory( DeviceMemory memory_ )
15459 {
15460 memory = memory_;
15461 return *this;
15462 }
15463
15464 SparseMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
15465 {
15466 memoryOffset = memoryOffset_;
15467 return *this;
15468 }
15469
15470 SparseMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
15471 {
15472 flags = flags_;
15473 return *this;
15474 }
15475
15476 operator const VkSparseMemoryBind&() const
15477 {
15478 return *reinterpret_cast<const VkSparseMemoryBind*>(this);
15479 }
15480
15481 bool operator==( SparseMemoryBind const& rhs ) const
15482 {
15483 return ( resourceOffset == rhs.resourceOffset )
15484 && ( size == rhs.size )
15485 && ( memory == rhs.memory )
15486 && ( memoryOffset == rhs.memoryOffset )
15487 && ( flags == rhs.flags );
15488 }
15489
15490 bool operator!=( SparseMemoryBind const& rhs ) const
15491 {
15492 return !operator==( rhs );
15493 }
15494
15495 DeviceSize resourceOffset;
15496 DeviceSize size;
15497 DeviceMemory memory;
15498 DeviceSize memoryOffset;
15499 SparseMemoryBindFlags flags;
15500 };
15501 static_assert( sizeof( SparseMemoryBind ) == sizeof( VkSparseMemoryBind ), "struct and wrapper have different size!" );
15502
15503 struct SparseImageMemoryBind
15504 {
15505 SparseImageMemoryBind( ImageSubresource subresource_ = ImageSubresource(), Offset3D offset_ = Offset3D(), Extent3D extent_ = Extent3D(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
15506 : subresource( subresource_ )
15507 , offset( offset_ )
15508 , extent( extent_ )
15509 , memory( memory_ )
15510 , memoryOffset( memoryOffset_ )
15511 , flags( flags_ )
15512 {
15513 }
15514
15515 SparseImageMemoryBind( VkSparseImageMemoryBind const & rhs )
15516 {
15517 memcpy( this, &rhs, sizeof(SparseImageMemoryBind) );
15518 }
15519
15520 SparseImageMemoryBind& operator=( VkSparseImageMemoryBind const & rhs )
15521 {
15522 memcpy( this, &rhs, sizeof(SparseImageMemoryBind) );
15523 return *this;
15524 }
15525
15526 SparseImageMemoryBind& setSubresource( ImageSubresource subresource_ )
15527 {
15528 subresource = subresource_;
15529 return *this;
15530 }
15531
15532 SparseImageMemoryBind& setOffset( Offset3D offset_ )
15533 {
15534 offset = offset_;
15535 return *this;
15536 }
15537
15538 SparseImageMemoryBind& setExtent( Extent3D extent_ )
15539 {
15540 extent = extent_;
15541 return *this;
15542 }
15543
15544 SparseImageMemoryBind& setMemory( DeviceMemory memory_ )
15545 {
15546 memory = memory_;
15547 return *this;
15548 }
15549
15550 SparseImageMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
15551 {
15552 memoryOffset = memoryOffset_;
15553 return *this;
15554 }
15555
15556 SparseImageMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
15557 {
15558 flags = flags_;
15559 return *this;
15560 }
15561
15562 operator const VkSparseImageMemoryBind&() const
15563 {
15564 return *reinterpret_cast<const VkSparseImageMemoryBind*>(this);
15565 }
15566
15567 bool operator==( SparseImageMemoryBind const& rhs ) const
15568 {
15569 return ( subresource == rhs.subresource )
15570 && ( offset == rhs.offset )
15571 && ( extent == rhs.extent )
15572 && ( memory == rhs.memory )
15573 && ( memoryOffset == rhs.memoryOffset )
15574 && ( flags == rhs.flags );
15575 }
15576
15577 bool operator!=( SparseImageMemoryBind const& rhs ) const
15578 {
15579 return !operator==( rhs );
15580 }
15581
15582 ImageSubresource subresource;
15583 Offset3D offset;
15584 Extent3D extent;
15585 DeviceMemory memory;
15586 DeviceSize memoryOffset;
15587 SparseMemoryBindFlags flags;
15588 };
15589 static_assert( sizeof( SparseImageMemoryBind ) == sizeof( VkSparseImageMemoryBind ), "struct and wrapper have different size!" );
15590
15591 struct SparseBufferMemoryBindInfo
15592 {
15593 SparseBufferMemoryBindInfo( Buffer buffer_ = Buffer(), uint32_t bindCount_ = 0, const SparseMemoryBind* pBinds_ = nullptr )
15594 : buffer( buffer_ )
15595 , bindCount( bindCount_ )
15596 , pBinds( pBinds_ )
15597 {
15598 }
15599
15600 SparseBufferMemoryBindInfo( VkSparseBufferMemoryBindInfo const & rhs )
15601 {
15602 memcpy( this, &rhs, sizeof(SparseBufferMemoryBindInfo) );
15603 }
15604
15605 SparseBufferMemoryBindInfo& operator=( VkSparseBufferMemoryBindInfo const & rhs )
15606 {
15607 memcpy( this, &rhs, sizeof(SparseBufferMemoryBindInfo) );
15608 return *this;
15609 }
15610
15611 SparseBufferMemoryBindInfo& setBuffer( Buffer buffer_ )
15612 {
15613 buffer = buffer_;
15614 return *this;
15615 }
15616
15617 SparseBufferMemoryBindInfo& setBindCount( uint32_t bindCount_ )
15618 {
15619 bindCount = bindCount_;
15620 return *this;
15621 }
15622
15623 SparseBufferMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
15624 {
15625 pBinds = pBinds_;
15626 return *this;
15627 }
15628
15629 operator const VkSparseBufferMemoryBindInfo&() const
15630 {
15631 return *reinterpret_cast<const VkSparseBufferMemoryBindInfo*>(this);
15632 }
15633
15634 bool operator==( SparseBufferMemoryBindInfo const& rhs ) const
15635 {
15636 return ( buffer == rhs.buffer )
15637 && ( bindCount == rhs.bindCount )
15638 && ( pBinds == rhs.pBinds );
15639 }
15640
15641 bool operator!=( SparseBufferMemoryBindInfo const& rhs ) const
15642 {
15643 return !operator==( rhs );
15644 }
15645
15646 Buffer buffer;
15647 uint32_t bindCount;
15648 const SparseMemoryBind* pBinds;
15649 };
15650 static_assert( sizeof( SparseBufferMemoryBindInfo ) == sizeof( VkSparseBufferMemoryBindInfo ), "struct and wrapper have different size!" );
15651
15652 struct SparseImageOpaqueMemoryBindInfo
15653 {
15654 SparseImageOpaqueMemoryBindInfo( Image image_ = Image(), uint32_t bindCount_ = 0, const SparseMemoryBind* pBinds_ = nullptr )
15655 : image( image_ )
15656 , bindCount( bindCount_ )
15657 , pBinds( pBinds_ )
15658 {
15659 }
15660
15661 SparseImageOpaqueMemoryBindInfo( VkSparseImageOpaqueMemoryBindInfo const & rhs )
15662 {
15663 memcpy( this, &rhs, sizeof(SparseImageOpaqueMemoryBindInfo) );
15664 }
15665
15666 SparseImageOpaqueMemoryBindInfo& operator=( VkSparseImageOpaqueMemoryBindInfo const & rhs )
15667 {
15668 memcpy( this, &rhs, sizeof(SparseImageOpaqueMemoryBindInfo) );
15669 return *this;
15670 }
15671
15672 SparseImageOpaqueMemoryBindInfo& setImage( Image image_ )
15673 {
15674 image = image_;
15675 return *this;
15676 }
15677
15678 SparseImageOpaqueMemoryBindInfo& setBindCount( uint32_t bindCount_ )
15679 {
15680 bindCount = bindCount_;
15681 return *this;
15682 }
15683
15684 SparseImageOpaqueMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
15685 {
15686 pBinds = pBinds_;
15687 return *this;
15688 }
15689
15690 operator const VkSparseImageOpaqueMemoryBindInfo&() const
15691 {
15692 return *reinterpret_cast<const VkSparseImageOpaqueMemoryBindInfo*>(this);
15693 }
15694
15695 bool operator==( SparseImageOpaqueMemoryBindInfo const& rhs ) const
15696 {
15697 return ( image == rhs.image )
15698 && ( bindCount == rhs.bindCount )
15699 && ( pBinds == rhs.pBinds );
15700 }
15701
15702 bool operator!=( SparseImageOpaqueMemoryBindInfo const& rhs ) const
15703 {
15704 return !operator==( rhs );
15705 }
15706
15707 Image image;
15708 uint32_t bindCount;
15709 const SparseMemoryBind* pBinds;
15710 };
15711 static_assert( sizeof( SparseImageOpaqueMemoryBindInfo ) == sizeof( VkSparseImageOpaqueMemoryBindInfo ), "struct and wrapper have different size!" );
15712
15713 struct SparseImageMemoryBindInfo
15714 {
15715 SparseImageMemoryBindInfo( Image image_ = Image(), uint32_t bindCount_ = 0, const SparseImageMemoryBind* pBinds_ = nullptr )
15716 : image( image_ )
15717 , bindCount( bindCount_ )
15718 , pBinds( pBinds_ )
15719 {
15720 }
15721
15722 SparseImageMemoryBindInfo( VkSparseImageMemoryBindInfo const & rhs )
15723 {
15724 memcpy( this, &rhs, sizeof(SparseImageMemoryBindInfo) );
15725 }
15726
15727 SparseImageMemoryBindInfo& operator=( VkSparseImageMemoryBindInfo const & rhs )
15728 {
15729 memcpy( this, &rhs, sizeof(SparseImageMemoryBindInfo) );
15730 return *this;
15731 }
15732
15733 SparseImageMemoryBindInfo& setImage( Image image_ )
15734 {
15735 image = image_;
15736 return *this;
15737 }
15738
15739 SparseImageMemoryBindInfo& setBindCount( uint32_t bindCount_ )
15740 {
15741 bindCount = bindCount_;
15742 return *this;
15743 }
15744
15745 SparseImageMemoryBindInfo& setPBinds( const SparseImageMemoryBind* pBinds_ )
15746 {
15747 pBinds = pBinds_;
15748 return *this;
15749 }
15750
15751 operator const VkSparseImageMemoryBindInfo&() const
15752 {
15753 return *reinterpret_cast<const VkSparseImageMemoryBindInfo*>(this);
15754 }
15755
15756 bool operator==( SparseImageMemoryBindInfo const& rhs ) const
15757 {
15758 return ( image == rhs.image )
15759 && ( bindCount == rhs.bindCount )
15760 && ( pBinds == rhs.pBinds );
15761 }
15762
15763 bool operator!=( SparseImageMemoryBindInfo const& rhs ) const
15764 {
15765 return !operator==( rhs );
15766 }
15767
15768 Image image;
15769 uint32_t bindCount;
15770 const SparseImageMemoryBind* pBinds;
15771 };
15772 static_assert( sizeof( SparseImageMemoryBindInfo ) == sizeof( VkSparseImageMemoryBindInfo ), "struct and wrapper have different size!" );
15773
15774 struct BindSparseInfo
15775 {
15776 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 )
15777 : sType( StructureType::eBindSparseInfo )
15778 , pNext( nullptr )
15779 , waitSemaphoreCount( waitSemaphoreCount_ )
15780 , pWaitSemaphores( pWaitSemaphores_ )
15781 , bufferBindCount( bufferBindCount_ )
15782 , pBufferBinds( pBufferBinds_ )
15783 , imageOpaqueBindCount( imageOpaqueBindCount_ )
15784 , pImageOpaqueBinds( pImageOpaqueBinds_ )
15785 , imageBindCount( imageBindCount_ )
15786 , pImageBinds( pImageBinds_ )
15787 , signalSemaphoreCount( signalSemaphoreCount_ )
15788 , pSignalSemaphores( pSignalSemaphores_ )
15789 {
15790 }
15791
15792 BindSparseInfo( VkBindSparseInfo const & rhs )
15793 {
15794 memcpy( this, &rhs, sizeof(BindSparseInfo) );
15795 }
15796
15797 BindSparseInfo& operator=( VkBindSparseInfo const & rhs )
15798 {
15799 memcpy( this, &rhs, sizeof(BindSparseInfo) );
15800 return *this;
15801 }
15802
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015803 BindSparseInfo& setPNext( const void* pNext_ )
15804 {
15805 pNext = pNext_;
15806 return *this;
15807 }
15808
15809 BindSparseInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
15810 {
15811 waitSemaphoreCount = waitSemaphoreCount_;
15812 return *this;
15813 }
15814
15815 BindSparseInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
15816 {
15817 pWaitSemaphores = pWaitSemaphores_;
15818 return *this;
15819 }
15820
15821 BindSparseInfo& setBufferBindCount( uint32_t bufferBindCount_ )
15822 {
15823 bufferBindCount = bufferBindCount_;
15824 return *this;
15825 }
15826
15827 BindSparseInfo& setPBufferBinds( const SparseBufferMemoryBindInfo* pBufferBinds_ )
15828 {
15829 pBufferBinds = pBufferBinds_;
15830 return *this;
15831 }
15832
15833 BindSparseInfo& setImageOpaqueBindCount( uint32_t imageOpaqueBindCount_ )
15834 {
15835 imageOpaqueBindCount = imageOpaqueBindCount_;
15836 return *this;
15837 }
15838
15839 BindSparseInfo& setPImageOpaqueBinds( const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds_ )
15840 {
15841 pImageOpaqueBinds = pImageOpaqueBinds_;
15842 return *this;
15843 }
15844
15845 BindSparseInfo& setImageBindCount( uint32_t imageBindCount_ )
15846 {
15847 imageBindCount = imageBindCount_;
15848 return *this;
15849 }
15850
15851 BindSparseInfo& setPImageBinds( const SparseImageMemoryBindInfo* pImageBinds_ )
15852 {
15853 pImageBinds = pImageBinds_;
15854 return *this;
15855 }
15856
15857 BindSparseInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
15858 {
15859 signalSemaphoreCount = signalSemaphoreCount_;
15860 return *this;
15861 }
15862
15863 BindSparseInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
15864 {
15865 pSignalSemaphores = pSignalSemaphores_;
15866 return *this;
15867 }
15868
15869 operator const VkBindSparseInfo&() const
15870 {
15871 return *reinterpret_cast<const VkBindSparseInfo*>(this);
15872 }
15873
15874 bool operator==( BindSparseInfo const& rhs ) const
15875 {
15876 return ( sType == rhs.sType )
15877 && ( pNext == rhs.pNext )
15878 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
15879 && ( pWaitSemaphores == rhs.pWaitSemaphores )
15880 && ( bufferBindCount == rhs.bufferBindCount )
15881 && ( pBufferBinds == rhs.pBufferBinds )
15882 && ( imageOpaqueBindCount == rhs.imageOpaqueBindCount )
15883 && ( pImageOpaqueBinds == rhs.pImageOpaqueBinds )
15884 && ( imageBindCount == rhs.imageBindCount )
15885 && ( pImageBinds == rhs.pImageBinds )
15886 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
15887 && ( pSignalSemaphores == rhs.pSignalSemaphores );
15888 }
15889
15890 bool operator!=( BindSparseInfo const& rhs ) const
15891 {
15892 return !operator==( rhs );
15893 }
15894
15895 private:
15896 StructureType sType;
15897
15898 public:
15899 const void* pNext;
15900 uint32_t waitSemaphoreCount;
15901 const Semaphore* pWaitSemaphores;
15902 uint32_t bufferBindCount;
15903 const SparseBufferMemoryBindInfo* pBufferBinds;
15904 uint32_t imageOpaqueBindCount;
15905 const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds;
15906 uint32_t imageBindCount;
15907 const SparseImageMemoryBindInfo* pImageBinds;
15908 uint32_t signalSemaphoreCount;
15909 const Semaphore* pSignalSemaphores;
15910 };
15911 static_assert( sizeof( BindSparseInfo ) == sizeof( VkBindSparseInfo ), "struct and wrapper have different size!" );
15912
15913 enum class PipelineStageFlagBits
15914 {
15915 eTopOfPipe = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
15916 eDrawIndirect = VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,
15917 eVertexInput = VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,
15918 eVertexShader = VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,
15919 eTessellationControlShader = VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,
15920 eTessellationEvaluationShader = VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT,
15921 eGeometryShader = VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT,
15922 eFragmentShader = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
15923 eEarlyFragmentTests = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,
15924 eLateFragmentTests = VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
15925 eColorAttachmentOutput = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
15926 eComputeShader = VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
15927 eTransfer = VK_PIPELINE_STAGE_TRANSFER_BIT,
15928 eBottomOfPipe = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
15929 eHost = VK_PIPELINE_STAGE_HOST_BIT,
15930 eAllGraphics = VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015931 eAllCommands = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,
15932 eCommandProcessNVX = VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015933 };
15934
15935 using PipelineStageFlags = Flags<PipelineStageFlagBits, VkPipelineStageFlags>;
15936
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015937 VULKAN_HPP_INLINE PipelineStageFlags operator|( PipelineStageFlagBits bit0, PipelineStageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015938 {
15939 return PipelineStageFlags( bit0 ) | bit1;
15940 }
15941
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015942 VULKAN_HPP_INLINE PipelineStageFlags operator~( PipelineStageFlagBits bits )
15943 {
15944 return ~( PipelineStageFlags( bits ) );
15945 }
15946
15947 template <> struct FlagTraits<PipelineStageFlagBits>
15948 {
15949 enum
15950 {
15951 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)
15952 };
15953 };
15954
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015955 enum class CommandPoolCreateFlagBits
15956 {
15957 eTransient = VK_COMMAND_POOL_CREATE_TRANSIENT_BIT,
15958 eResetCommandBuffer = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT
15959 };
15960
15961 using CommandPoolCreateFlags = Flags<CommandPoolCreateFlagBits, VkCommandPoolCreateFlags>;
15962
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015963 VULKAN_HPP_INLINE CommandPoolCreateFlags operator|( CommandPoolCreateFlagBits bit0, CommandPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015964 {
15965 return CommandPoolCreateFlags( bit0 ) | bit1;
15966 }
15967
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015968 VULKAN_HPP_INLINE CommandPoolCreateFlags operator~( CommandPoolCreateFlagBits bits )
15969 {
15970 return ~( CommandPoolCreateFlags( bits ) );
15971 }
15972
15973 template <> struct FlagTraits<CommandPoolCreateFlagBits>
15974 {
15975 enum
15976 {
15977 allFlags = VkFlags(CommandPoolCreateFlagBits::eTransient) | VkFlags(CommandPoolCreateFlagBits::eResetCommandBuffer)
15978 };
15979 };
15980
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015981 struct CommandPoolCreateInfo
15982 {
15983 CommandPoolCreateInfo( CommandPoolCreateFlags flags_ = CommandPoolCreateFlags(), uint32_t queueFamilyIndex_ = 0 )
15984 : sType( StructureType::eCommandPoolCreateInfo )
15985 , pNext( nullptr )
15986 , flags( flags_ )
15987 , queueFamilyIndex( queueFamilyIndex_ )
15988 {
15989 }
15990
15991 CommandPoolCreateInfo( VkCommandPoolCreateInfo const & rhs )
15992 {
15993 memcpy( this, &rhs, sizeof(CommandPoolCreateInfo) );
15994 }
15995
15996 CommandPoolCreateInfo& operator=( VkCommandPoolCreateInfo const & rhs )
15997 {
15998 memcpy( this, &rhs, sizeof(CommandPoolCreateInfo) );
15999 return *this;
16000 }
16001
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016002 CommandPoolCreateInfo& setPNext( const void* pNext_ )
16003 {
16004 pNext = pNext_;
16005 return *this;
16006 }
16007
16008 CommandPoolCreateInfo& setFlags( CommandPoolCreateFlags flags_ )
16009 {
16010 flags = flags_;
16011 return *this;
16012 }
16013
16014 CommandPoolCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
16015 {
16016 queueFamilyIndex = queueFamilyIndex_;
16017 return *this;
16018 }
16019
16020 operator const VkCommandPoolCreateInfo&() const
16021 {
16022 return *reinterpret_cast<const VkCommandPoolCreateInfo*>(this);
16023 }
16024
16025 bool operator==( CommandPoolCreateInfo const& rhs ) const
16026 {
16027 return ( sType == rhs.sType )
16028 && ( pNext == rhs.pNext )
16029 && ( flags == rhs.flags )
16030 && ( queueFamilyIndex == rhs.queueFamilyIndex );
16031 }
16032
16033 bool operator!=( CommandPoolCreateInfo const& rhs ) const
16034 {
16035 return !operator==( rhs );
16036 }
16037
16038 private:
16039 StructureType sType;
16040
16041 public:
16042 const void* pNext;
16043 CommandPoolCreateFlags flags;
16044 uint32_t queueFamilyIndex;
16045 };
16046 static_assert( sizeof( CommandPoolCreateInfo ) == sizeof( VkCommandPoolCreateInfo ), "struct and wrapper have different size!" );
16047
16048 enum class CommandPoolResetFlagBits
16049 {
16050 eReleaseResources = VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT
16051 };
16052
16053 using CommandPoolResetFlags = Flags<CommandPoolResetFlagBits, VkCommandPoolResetFlags>;
16054
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016055 VULKAN_HPP_INLINE CommandPoolResetFlags operator|( CommandPoolResetFlagBits bit0, CommandPoolResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016056 {
16057 return CommandPoolResetFlags( bit0 ) | bit1;
16058 }
16059
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016060 VULKAN_HPP_INLINE CommandPoolResetFlags operator~( CommandPoolResetFlagBits bits )
16061 {
16062 return ~( CommandPoolResetFlags( bits ) );
16063 }
16064
16065 template <> struct FlagTraits<CommandPoolResetFlagBits>
16066 {
16067 enum
16068 {
16069 allFlags = VkFlags(CommandPoolResetFlagBits::eReleaseResources)
16070 };
16071 };
16072
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016073 enum class CommandBufferResetFlagBits
16074 {
16075 eReleaseResources = VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT
16076 };
16077
16078 using CommandBufferResetFlags = Flags<CommandBufferResetFlagBits, VkCommandBufferResetFlags>;
16079
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016080 VULKAN_HPP_INLINE CommandBufferResetFlags operator|( CommandBufferResetFlagBits bit0, CommandBufferResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016081 {
16082 return CommandBufferResetFlags( bit0 ) | bit1;
16083 }
16084
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016085 VULKAN_HPP_INLINE CommandBufferResetFlags operator~( CommandBufferResetFlagBits bits )
16086 {
16087 return ~( CommandBufferResetFlags( bits ) );
16088 }
16089
16090 template <> struct FlagTraits<CommandBufferResetFlagBits>
16091 {
16092 enum
16093 {
16094 allFlags = VkFlags(CommandBufferResetFlagBits::eReleaseResources)
16095 };
16096 };
16097
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016098 enum class SampleCountFlagBits
16099 {
16100 e1 = VK_SAMPLE_COUNT_1_BIT,
16101 e2 = VK_SAMPLE_COUNT_2_BIT,
16102 e4 = VK_SAMPLE_COUNT_4_BIT,
16103 e8 = VK_SAMPLE_COUNT_8_BIT,
16104 e16 = VK_SAMPLE_COUNT_16_BIT,
16105 e32 = VK_SAMPLE_COUNT_32_BIT,
16106 e64 = VK_SAMPLE_COUNT_64_BIT
16107 };
16108
16109 using SampleCountFlags = Flags<SampleCountFlagBits, VkSampleCountFlags>;
16110
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016111 VULKAN_HPP_INLINE SampleCountFlags operator|( SampleCountFlagBits bit0, SampleCountFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016112 {
16113 return SampleCountFlags( bit0 ) | bit1;
16114 }
16115
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016116 VULKAN_HPP_INLINE SampleCountFlags operator~( SampleCountFlagBits bits )
16117 {
16118 return ~( SampleCountFlags( bits ) );
16119 }
16120
16121 template <> struct FlagTraits<SampleCountFlagBits>
16122 {
16123 enum
16124 {
16125 allFlags = VkFlags(SampleCountFlagBits::e1) | VkFlags(SampleCountFlagBits::e2) | VkFlags(SampleCountFlagBits::e4) | VkFlags(SampleCountFlagBits::e8) | VkFlags(SampleCountFlagBits::e16) | VkFlags(SampleCountFlagBits::e32) | VkFlags(SampleCountFlagBits::e64)
16126 };
16127 };
16128
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016129 struct ImageFormatProperties
16130 {
16131 operator const VkImageFormatProperties&() const
16132 {
16133 return *reinterpret_cast<const VkImageFormatProperties*>(this);
16134 }
16135
16136 bool operator==( ImageFormatProperties const& rhs ) const
16137 {
16138 return ( maxExtent == rhs.maxExtent )
16139 && ( maxMipLevels == rhs.maxMipLevels )
16140 && ( maxArrayLayers == rhs.maxArrayLayers )
16141 && ( sampleCounts == rhs.sampleCounts )
16142 && ( maxResourceSize == rhs.maxResourceSize );
16143 }
16144
16145 bool operator!=( ImageFormatProperties const& rhs ) const
16146 {
16147 return !operator==( rhs );
16148 }
16149
16150 Extent3D maxExtent;
16151 uint32_t maxMipLevels;
16152 uint32_t maxArrayLayers;
16153 SampleCountFlags sampleCounts;
16154 DeviceSize maxResourceSize;
16155 };
16156 static_assert( sizeof( ImageFormatProperties ) == sizeof( VkImageFormatProperties ), "struct and wrapper have different size!" );
16157
16158 struct ImageCreateInfo
16159 {
16160 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 )
16161 : sType( StructureType::eImageCreateInfo )
16162 , pNext( nullptr )
16163 , flags( flags_ )
16164 , imageType( imageType_ )
16165 , format( format_ )
16166 , extent( extent_ )
16167 , mipLevels( mipLevels_ )
16168 , arrayLayers( arrayLayers_ )
16169 , samples( samples_ )
16170 , tiling( tiling_ )
16171 , usage( usage_ )
16172 , sharingMode( sharingMode_ )
16173 , queueFamilyIndexCount( queueFamilyIndexCount_ )
16174 , pQueueFamilyIndices( pQueueFamilyIndices_ )
16175 , initialLayout( initialLayout_ )
16176 {
16177 }
16178
16179 ImageCreateInfo( VkImageCreateInfo const & rhs )
16180 {
16181 memcpy( this, &rhs, sizeof(ImageCreateInfo) );
16182 }
16183
16184 ImageCreateInfo& operator=( VkImageCreateInfo const & rhs )
16185 {
16186 memcpy( this, &rhs, sizeof(ImageCreateInfo) );
16187 return *this;
16188 }
16189
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016190 ImageCreateInfo& setPNext( const void* pNext_ )
16191 {
16192 pNext = pNext_;
16193 return *this;
16194 }
16195
16196 ImageCreateInfo& setFlags( ImageCreateFlags flags_ )
16197 {
16198 flags = flags_;
16199 return *this;
16200 }
16201
16202 ImageCreateInfo& setImageType( ImageType imageType_ )
16203 {
16204 imageType = imageType_;
16205 return *this;
16206 }
16207
16208 ImageCreateInfo& setFormat( Format format_ )
16209 {
16210 format = format_;
16211 return *this;
16212 }
16213
16214 ImageCreateInfo& setExtent( Extent3D extent_ )
16215 {
16216 extent = extent_;
16217 return *this;
16218 }
16219
16220 ImageCreateInfo& setMipLevels( uint32_t mipLevels_ )
16221 {
16222 mipLevels = mipLevels_;
16223 return *this;
16224 }
16225
16226 ImageCreateInfo& setArrayLayers( uint32_t arrayLayers_ )
16227 {
16228 arrayLayers = arrayLayers_;
16229 return *this;
16230 }
16231
16232 ImageCreateInfo& setSamples( SampleCountFlagBits samples_ )
16233 {
16234 samples = samples_;
16235 return *this;
16236 }
16237
16238 ImageCreateInfo& setTiling( ImageTiling tiling_ )
16239 {
16240 tiling = tiling_;
16241 return *this;
16242 }
16243
16244 ImageCreateInfo& setUsage( ImageUsageFlags usage_ )
16245 {
16246 usage = usage_;
16247 return *this;
16248 }
16249
16250 ImageCreateInfo& setSharingMode( SharingMode sharingMode_ )
16251 {
16252 sharingMode = sharingMode_;
16253 return *this;
16254 }
16255
16256 ImageCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
16257 {
16258 queueFamilyIndexCount = queueFamilyIndexCount_;
16259 return *this;
16260 }
16261
16262 ImageCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
16263 {
16264 pQueueFamilyIndices = pQueueFamilyIndices_;
16265 return *this;
16266 }
16267
16268 ImageCreateInfo& setInitialLayout( ImageLayout initialLayout_ )
16269 {
16270 initialLayout = initialLayout_;
16271 return *this;
16272 }
16273
16274 operator const VkImageCreateInfo&() const
16275 {
16276 return *reinterpret_cast<const VkImageCreateInfo*>(this);
16277 }
16278
16279 bool operator==( ImageCreateInfo const& rhs ) const
16280 {
16281 return ( sType == rhs.sType )
16282 && ( pNext == rhs.pNext )
16283 && ( flags == rhs.flags )
16284 && ( imageType == rhs.imageType )
16285 && ( format == rhs.format )
16286 && ( extent == rhs.extent )
16287 && ( mipLevels == rhs.mipLevels )
16288 && ( arrayLayers == rhs.arrayLayers )
16289 && ( samples == rhs.samples )
16290 && ( tiling == rhs.tiling )
16291 && ( usage == rhs.usage )
16292 && ( sharingMode == rhs.sharingMode )
16293 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
16294 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
16295 && ( initialLayout == rhs.initialLayout );
16296 }
16297
16298 bool operator!=( ImageCreateInfo const& rhs ) const
16299 {
16300 return !operator==( rhs );
16301 }
16302
16303 private:
16304 StructureType sType;
16305
16306 public:
16307 const void* pNext;
16308 ImageCreateFlags flags;
16309 ImageType imageType;
16310 Format format;
16311 Extent3D extent;
16312 uint32_t mipLevels;
16313 uint32_t arrayLayers;
16314 SampleCountFlagBits samples;
16315 ImageTiling tiling;
16316 ImageUsageFlags usage;
16317 SharingMode sharingMode;
16318 uint32_t queueFamilyIndexCount;
16319 const uint32_t* pQueueFamilyIndices;
16320 ImageLayout initialLayout;
16321 };
16322 static_assert( sizeof( ImageCreateInfo ) == sizeof( VkImageCreateInfo ), "struct and wrapper have different size!" );
16323
16324 struct PipelineMultisampleStateCreateInfo
16325 {
16326 PipelineMultisampleStateCreateInfo( PipelineMultisampleStateCreateFlags flags_ = PipelineMultisampleStateCreateFlags(), SampleCountFlagBits rasterizationSamples_ = SampleCountFlagBits::e1, Bool32 sampleShadingEnable_ = 0, float minSampleShading_ = 0, const SampleMask* pSampleMask_ = nullptr, Bool32 alphaToCoverageEnable_ = 0, Bool32 alphaToOneEnable_ = 0 )
16327 : sType( StructureType::ePipelineMultisampleStateCreateInfo )
16328 , pNext( nullptr )
16329 , flags( flags_ )
16330 , rasterizationSamples( rasterizationSamples_ )
16331 , sampleShadingEnable( sampleShadingEnable_ )
16332 , minSampleShading( minSampleShading_ )
16333 , pSampleMask( pSampleMask_ )
16334 , alphaToCoverageEnable( alphaToCoverageEnable_ )
16335 , alphaToOneEnable( alphaToOneEnable_ )
16336 {
16337 }
16338
16339 PipelineMultisampleStateCreateInfo( VkPipelineMultisampleStateCreateInfo const & rhs )
16340 {
16341 memcpy( this, &rhs, sizeof(PipelineMultisampleStateCreateInfo) );
16342 }
16343
16344 PipelineMultisampleStateCreateInfo& operator=( VkPipelineMultisampleStateCreateInfo const & rhs )
16345 {
16346 memcpy( this, &rhs, sizeof(PipelineMultisampleStateCreateInfo) );
16347 return *this;
16348 }
16349
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016350 PipelineMultisampleStateCreateInfo& setPNext( const void* pNext_ )
16351 {
16352 pNext = pNext_;
16353 return *this;
16354 }
16355
16356 PipelineMultisampleStateCreateInfo& setFlags( PipelineMultisampleStateCreateFlags flags_ )
16357 {
16358 flags = flags_;
16359 return *this;
16360 }
16361
16362 PipelineMultisampleStateCreateInfo& setRasterizationSamples( SampleCountFlagBits rasterizationSamples_ )
16363 {
16364 rasterizationSamples = rasterizationSamples_;
16365 return *this;
16366 }
16367
16368 PipelineMultisampleStateCreateInfo& setSampleShadingEnable( Bool32 sampleShadingEnable_ )
16369 {
16370 sampleShadingEnable = sampleShadingEnable_;
16371 return *this;
16372 }
16373
16374 PipelineMultisampleStateCreateInfo& setMinSampleShading( float minSampleShading_ )
16375 {
16376 minSampleShading = minSampleShading_;
16377 return *this;
16378 }
16379
16380 PipelineMultisampleStateCreateInfo& setPSampleMask( const SampleMask* pSampleMask_ )
16381 {
16382 pSampleMask = pSampleMask_;
16383 return *this;
16384 }
16385
16386 PipelineMultisampleStateCreateInfo& setAlphaToCoverageEnable( Bool32 alphaToCoverageEnable_ )
16387 {
16388 alphaToCoverageEnable = alphaToCoverageEnable_;
16389 return *this;
16390 }
16391
16392 PipelineMultisampleStateCreateInfo& setAlphaToOneEnable( Bool32 alphaToOneEnable_ )
16393 {
16394 alphaToOneEnable = alphaToOneEnable_;
16395 return *this;
16396 }
16397
16398 operator const VkPipelineMultisampleStateCreateInfo&() const
16399 {
16400 return *reinterpret_cast<const VkPipelineMultisampleStateCreateInfo*>(this);
16401 }
16402
16403 bool operator==( PipelineMultisampleStateCreateInfo const& rhs ) const
16404 {
16405 return ( sType == rhs.sType )
16406 && ( pNext == rhs.pNext )
16407 && ( flags == rhs.flags )
16408 && ( rasterizationSamples == rhs.rasterizationSamples )
16409 && ( sampleShadingEnable == rhs.sampleShadingEnable )
16410 && ( minSampleShading == rhs.minSampleShading )
16411 && ( pSampleMask == rhs.pSampleMask )
16412 && ( alphaToCoverageEnable == rhs.alphaToCoverageEnable )
16413 && ( alphaToOneEnable == rhs.alphaToOneEnable );
16414 }
16415
16416 bool operator!=( PipelineMultisampleStateCreateInfo const& rhs ) const
16417 {
16418 return !operator==( rhs );
16419 }
16420
16421 private:
16422 StructureType sType;
16423
16424 public:
16425 const void* pNext;
16426 PipelineMultisampleStateCreateFlags flags;
16427 SampleCountFlagBits rasterizationSamples;
16428 Bool32 sampleShadingEnable;
16429 float minSampleShading;
16430 const SampleMask* pSampleMask;
16431 Bool32 alphaToCoverageEnable;
16432 Bool32 alphaToOneEnable;
16433 };
16434 static_assert( sizeof( PipelineMultisampleStateCreateInfo ) == sizeof( VkPipelineMultisampleStateCreateInfo ), "struct and wrapper have different size!" );
16435
16436 struct GraphicsPipelineCreateInfo
16437 {
16438 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 )
16439 : sType( StructureType::eGraphicsPipelineCreateInfo )
16440 , pNext( nullptr )
16441 , flags( flags_ )
16442 , stageCount( stageCount_ )
16443 , pStages( pStages_ )
16444 , pVertexInputState( pVertexInputState_ )
16445 , pInputAssemblyState( pInputAssemblyState_ )
16446 , pTessellationState( pTessellationState_ )
16447 , pViewportState( pViewportState_ )
16448 , pRasterizationState( pRasterizationState_ )
16449 , pMultisampleState( pMultisampleState_ )
16450 , pDepthStencilState( pDepthStencilState_ )
16451 , pColorBlendState( pColorBlendState_ )
16452 , pDynamicState( pDynamicState_ )
16453 , layout( layout_ )
16454 , renderPass( renderPass_ )
16455 , subpass( subpass_ )
16456 , basePipelineHandle( basePipelineHandle_ )
16457 , basePipelineIndex( basePipelineIndex_ )
16458 {
16459 }
16460
16461 GraphicsPipelineCreateInfo( VkGraphicsPipelineCreateInfo const & rhs )
16462 {
16463 memcpy( this, &rhs, sizeof(GraphicsPipelineCreateInfo) );
16464 }
16465
16466 GraphicsPipelineCreateInfo& operator=( VkGraphicsPipelineCreateInfo const & rhs )
16467 {
16468 memcpy( this, &rhs, sizeof(GraphicsPipelineCreateInfo) );
16469 return *this;
16470 }
16471
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016472 GraphicsPipelineCreateInfo& setPNext( const void* pNext_ )
16473 {
16474 pNext = pNext_;
16475 return *this;
16476 }
16477
16478 GraphicsPipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
16479 {
16480 flags = flags_;
16481 return *this;
16482 }
16483
16484 GraphicsPipelineCreateInfo& setStageCount( uint32_t stageCount_ )
16485 {
16486 stageCount = stageCount_;
16487 return *this;
16488 }
16489
16490 GraphicsPipelineCreateInfo& setPStages( const PipelineShaderStageCreateInfo* pStages_ )
16491 {
16492 pStages = pStages_;
16493 return *this;
16494 }
16495
16496 GraphicsPipelineCreateInfo& setPVertexInputState( const PipelineVertexInputStateCreateInfo* pVertexInputState_ )
16497 {
16498 pVertexInputState = pVertexInputState_;
16499 return *this;
16500 }
16501
16502 GraphicsPipelineCreateInfo& setPInputAssemblyState( const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState_ )
16503 {
16504 pInputAssemblyState = pInputAssemblyState_;
16505 return *this;
16506 }
16507
16508 GraphicsPipelineCreateInfo& setPTessellationState( const PipelineTessellationStateCreateInfo* pTessellationState_ )
16509 {
16510 pTessellationState = pTessellationState_;
16511 return *this;
16512 }
16513
16514 GraphicsPipelineCreateInfo& setPViewportState( const PipelineViewportStateCreateInfo* pViewportState_ )
16515 {
16516 pViewportState = pViewportState_;
16517 return *this;
16518 }
16519
16520 GraphicsPipelineCreateInfo& setPRasterizationState( const PipelineRasterizationStateCreateInfo* pRasterizationState_ )
16521 {
16522 pRasterizationState = pRasterizationState_;
16523 return *this;
16524 }
16525
16526 GraphicsPipelineCreateInfo& setPMultisampleState( const PipelineMultisampleStateCreateInfo* pMultisampleState_ )
16527 {
16528 pMultisampleState = pMultisampleState_;
16529 return *this;
16530 }
16531
16532 GraphicsPipelineCreateInfo& setPDepthStencilState( const PipelineDepthStencilStateCreateInfo* pDepthStencilState_ )
16533 {
16534 pDepthStencilState = pDepthStencilState_;
16535 return *this;
16536 }
16537
16538 GraphicsPipelineCreateInfo& setPColorBlendState( const PipelineColorBlendStateCreateInfo* pColorBlendState_ )
16539 {
16540 pColorBlendState = pColorBlendState_;
16541 return *this;
16542 }
16543
16544 GraphicsPipelineCreateInfo& setPDynamicState( const PipelineDynamicStateCreateInfo* pDynamicState_ )
16545 {
16546 pDynamicState = pDynamicState_;
16547 return *this;
16548 }
16549
16550 GraphicsPipelineCreateInfo& setLayout( PipelineLayout layout_ )
16551 {
16552 layout = layout_;
16553 return *this;
16554 }
16555
16556 GraphicsPipelineCreateInfo& setRenderPass( RenderPass renderPass_ )
16557 {
16558 renderPass = renderPass_;
16559 return *this;
16560 }
16561
16562 GraphicsPipelineCreateInfo& setSubpass( uint32_t subpass_ )
16563 {
16564 subpass = subpass_;
16565 return *this;
16566 }
16567
16568 GraphicsPipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
16569 {
16570 basePipelineHandle = basePipelineHandle_;
16571 return *this;
16572 }
16573
16574 GraphicsPipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
16575 {
16576 basePipelineIndex = basePipelineIndex_;
16577 return *this;
16578 }
16579
16580 operator const VkGraphicsPipelineCreateInfo&() const
16581 {
16582 return *reinterpret_cast<const VkGraphicsPipelineCreateInfo*>(this);
16583 }
16584
16585 bool operator==( GraphicsPipelineCreateInfo const& rhs ) const
16586 {
16587 return ( sType == rhs.sType )
16588 && ( pNext == rhs.pNext )
16589 && ( flags == rhs.flags )
16590 && ( stageCount == rhs.stageCount )
16591 && ( pStages == rhs.pStages )
16592 && ( pVertexInputState == rhs.pVertexInputState )
16593 && ( pInputAssemblyState == rhs.pInputAssemblyState )
16594 && ( pTessellationState == rhs.pTessellationState )
16595 && ( pViewportState == rhs.pViewportState )
16596 && ( pRasterizationState == rhs.pRasterizationState )
16597 && ( pMultisampleState == rhs.pMultisampleState )
16598 && ( pDepthStencilState == rhs.pDepthStencilState )
16599 && ( pColorBlendState == rhs.pColorBlendState )
16600 && ( pDynamicState == rhs.pDynamicState )
16601 && ( layout == rhs.layout )
16602 && ( renderPass == rhs.renderPass )
16603 && ( subpass == rhs.subpass )
16604 && ( basePipelineHandle == rhs.basePipelineHandle )
16605 && ( basePipelineIndex == rhs.basePipelineIndex );
16606 }
16607
16608 bool operator!=( GraphicsPipelineCreateInfo const& rhs ) const
16609 {
16610 return !operator==( rhs );
16611 }
16612
16613 private:
16614 StructureType sType;
16615
16616 public:
16617 const void* pNext;
16618 PipelineCreateFlags flags;
16619 uint32_t stageCount;
16620 const PipelineShaderStageCreateInfo* pStages;
16621 const PipelineVertexInputStateCreateInfo* pVertexInputState;
16622 const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState;
16623 const PipelineTessellationStateCreateInfo* pTessellationState;
16624 const PipelineViewportStateCreateInfo* pViewportState;
16625 const PipelineRasterizationStateCreateInfo* pRasterizationState;
16626 const PipelineMultisampleStateCreateInfo* pMultisampleState;
16627 const PipelineDepthStencilStateCreateInfo* pDepthStencilState;
16628 const PipelineColorBlendStateCreateInfo* pColorBlendState;
16629 const PipelineDynamicStateCreateInfo* pDynamicState;
16630 PipelineLayout layout;
16631 RenderPass renderPass;
16632 uint32_t subpass;
16633 Pipeline basePipelineHandle;
16634 int32_t basePipelineIndex;
16635 };
16636 static_assert( sizeof( GraphicsPipelineCreateInfo ) == sizeof( VkGraphicsPipelineCreateInfo ), "struct and wrapper have different size!" );
16637
16638 struct PhysicalDeviceLimits
16639 {
16640 operator const VkPhysicalDeviceLimits&() const
16641 {
16642 return *reinterpret_cast<const VkPhysicalDeviceLimits*>(this);
16643 }
16644
16645 bool operator==( PhysicalDeviceLimits const& rhs ) const
16646 {
16647 return ( maxImageDimension1D == rhs.maxImageDimension1D )
16648 && ( maxImageDimension2D == rhs.maxImageDimension2D )
16649 && ( maxImageDimension3D == rhs.maxImageDimension3D )
16650 && ( maxImageDimensionCube == rhs.maxImageDimensionCube )
16651 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
16652 && ( maxTexelBufferElements == rhs.maxTexelBufferElements )
16653 && ( maxUniformBufferRange == rhs.maxUniformBufferRange )
16654 && ( maxStorageBufferRange == rhs.maxStorageBufferRange )
16655 && ( maxPushConstantsSize == rhs.maxPushConstantsSize )
16656 && ( maxMemoryAllocationCount == rhs.maxMemoryAllocationCount )
16657 && ( maxSamplerAllocationCount == rhs.maxSamplerAllocationCount )
16658 && ( bufferImageGranularity == rhs.bufferImageGranularity )
16659 && ( sparseAddressSpaceSize == rhs.sparseAddressSpaceSize )
16660 && ( maxBoundDescriptorSets == rhs.maxBoundDescriptorSets )
16661 && ( maxPerStageDescriptorSamplers == rhs.maxPerStageDescriptorSamplers )
16662 && ( maxPerStageDescriptorUniformBuffers == rhs.maxPerStageDescriptorUniformBuffers )
16663 && ( maxPerStageDescriptorStorageBuffers == rhs.maxPerStageDescriptorStorageBuffers )
16664 && ( maxPerStageDescriptorSampledImages == rhs.maxPerStageDescriptorSampledImages )
16665 && ( maxPerStageDescriptorStorageImages == rhs.maxPerStageDescriptorStorageImages )
16666 && ( maxPerStageDescriptorInputAttachments == rhs.maxPerStageDescriptorInputAttachments )
16667 && ( maxPerStageResources == rhs.maxPerStageResources )
16668 && ( maxDescriptorSetSamplers == rhs.maxDescriptorSetSamplers )
16669 && ( maxDescriptorSetUniformBuffers == rhs.maxDescriptorSetUniformBuffers )
16670 && ( maxDescriptorSetUniformBuffersDynamic == rhs.maxDescriptorSetUniformBuffersDynamic )
16671 && ( maxDescriptorSetStorageBuffers == rhs.maxDescriptorSetStorageBuffers )
16672 && ( maxDescriptorSetStorageBuffersDynamic == rhs.maxDescriptorSetStorageBuffersDynamic )
16673 && ( maxDescriptorSetSampledImages == rhs.maxDescriptorSetSampledImages )
16674 && ( maxDescriptorSetStorageImages == rhs.maxDescriptorSetStorageImages )
16675 && ( maxDescriptorSetInputAttachments == rhs.maxDescriptorSetInputAttachments )
16676 && ( maxVertexInputAttributes == rhs.maxVertexInputAttributes )
16677 && ( maxVertexInputBindings == rhs.maxVertexInputBindings )
16678 && ( maxVertexInputAttributeOffset == rhs.maxVertexInputAttributeOffset )
16679 && ( maxVertexInputBindingStride == rhs.maxVertexInputBindingStride )
16680 && ( maxVertexOutputComponents == rhs.maxVertexOutputComponents )
16681 && ( maxTessellationGenerationLevel == rhs.maxTessellationGenerationLevel )
16682 && ( maxTessellationPatchSize == rhs.maxTessellationPatchSize )
16683 && ( maxTessellationControlPerVertexInputComponents == rhs.maxTessellationControlPerVertexInputComponents )
16684 && ( maxTessellationControlPerVertexOutputComponents == rhs.maxTessellationControlPerVertexOutputComponents )
16685 && ( maxTessellationControlPerPatchOutputComponents == rhs.maxTessellationControlPerPatchOutputComponents )
16686 && ( maxTessellationControlTotalOutputComponents == rhs.maxTessellationControlTotalOutputComponents )
16687 && ( maxTessellationEvaluationInputComponents == rhs.maxTessellationEvaluationInputComponents )
16688 && ( maxTessellationEvaluationOutputComponents == rhs.maxTessellationEvaluationOutputComponents )
16689 && ( maxGeometryShaderInvocations == rhs.maxGeometryShaderInvocations )
16690 && ( maxGeometryInputComponents == rhs.maxGeometryInputComponents )
16691 && ( maxGeometryOutputComponents == rhs.maxGeometryOutputComponents )
16692 && ( maxGeometryOutputVertices == rhs.maxGeometryOutputVertices )
16693 && ( maxGeometryTotalOutputComponents == rhs.maxGeometryTotalOutputComponents )
16694 && ( maxFragmentInputComponents == rhs.maxFragmentInputComponents )
16695 && ( maxFragmentOutputAttachments == rhs.maxFragmentOutputAttachments )
16696 && ( maxFragmentDualSrcAttachments == rhs.maxFragmentDualSrcAttachments )
16697 && ( maxFragmentCombinedOutputResources == rhs.maxFragmentCombinedOutputResources )
16698 && ( maxComputeSharedMemorySize == rhs.maxComputeSharedMemorySize )
16699 && ( memcmp( maxComputeWorkGroupCount, rhs.maxComputeWorkGroupCount, 3 * sizeof( uint32_t ) ) == 0 )
16700 && ( maxComputeWorkGroupInvocations == rhs.maxComputeWorkGroupInvocations )
16701 && ( memcmp( maxComputeWorkGroupSize, rhs.maxComputeWorkGroupSize, 3 * sizeof( uint32_t ) ) == 0 )
16702 && ( subPixelPrecisionBits == rhs.subPixelPrecisionBits )
16703 && ( subTexelPrecisionBits == rhs.subTexelPrecisionBits )
16704 && ( mipmapPrecisionBits == rhs.mipmapPrecisionBits )
16705 && ( maxDrawIndexedIndexValue == rhs.maxDrawIndexedIndexValue )
16706 && ( maxDrawIndirectCount == rhs.maxDrawIndirectCount )
16707 && ( maxSamplerLodBias == rhs.maxSamplerLodBias )
16708 && ( maxSamplerAnisotropy == rhs.maxSamplerAnisotropy )
16709 && ( maxViewports == rhs.maxViewports )
16710 && ( memcmp( maxViewportDimensions, rhs.maxViewportDimensions, 2 * sizeof( uint32_t ) ) == 0 )
16711 && ( memcmp( viewportBoundsRange, rhs.viewportBoundsRange, 2 * sizeof( float ) ) == 0 )
16712 && ( viewportSubPixelBits == rhs.viewportSubPixelBits )
16713 && ( minMemoryMapAlignment == rhs.minMemoryMapAlignment )
16714 && ( minTexelBufferOffsetAlignment == rhs.minTexelBufferOffsetAlignment )
16715 && ( minUniformBufferOffsetAlignment == rhs.minUniformBufferOffsetAlignment )
16716 && ( minStorageBufferOffsetAlignment == rhs.minStorageBufferOffsetAlignment )
16717 && ( minTexelOffset == rhs.minTexelOffset )
16718 && ( maxTexelOffset == rhs.maxTexelOffset )
16719 && ( minTexelGatherOffset == rhs.minTexelGatherOffset )
16720 && ( maxTexelGatherOffset == rhs.maxTexelGatherOffset )
16721 && ( minInterpolationOffset == rhs.minInterpolationOffset )
16722 && ( maxInterpolationOffset == rhs.maxInterpolationOffset )
16723 && ( subPixelInterpolationOffsetBits == rhs.subPixelInterpolationOffsetBits )
16724 && ( maxFramebufferWidth == rhs.maxFramebufferWidth )
16725 && ( maxFramebufferHeight == rhs.maxFramebufferHeight )
16726 && ( maxFramebufferLayers == rhs.maxFramebufferLayers )
16727 && ( framebufferColorSampleCounts == rhs.framebufferColorSampleCounts )
16728 && ( framebufferDepthSampleCounts == rhs.framebufferDepthSampleCounts )
16729 && ( framebufferStencilSampleCounts == rhs.framebufferStencilSampleCounts )
16730 && ( framebufferNoAttachmentsSampleCounts == rhs.framebufferNoAttachmentsSampleCounts )
16731 && ( maxColorAttachments == rhs.maxColorAttachments )
16732 && ( sampledImageColorSampleCounts == rhs.sampledImageColorSampleCounts )
16733 && ( sampledImageIntegerSampleCounts == rhs.sampledImageIntegerSampleCounts )
16734 && ( sampledImageDepthSampleCounts == rhs.sampledImageDepthSampleCounts )
16735 && ( sampledImageStencilSampleCounts == rhs.sampledImageStencilSampleCounts )
16736 && ( storageImageSampleCounts == rhs.storageImageSampleCounts )
16737 && ( maxSampleMaskWords == rhs.maxSampleMaskWords )
16738 && ( timestampComputeAndGraphics == rhs.timestampComputeAndGraphics )
16739 && ( timestampPeriod == rhs.timestampPeriod )
16740 && ( maxClipDistances == rhs.maxClipDistances )
16741 && ( maxCullDistances == rhs.maxCullDistances )
16742 && ( maxCombinedClipAndCullDistances == rhs.maxCombinedClipAndCullDistances )
16743 && ( discreteQueuePriorities == rhs.discreteQueuePriorities )
16744 && ( memcmp( pointSizeRange, rhs.pointSizeRange, 2 * sizeof( float ) ) == 0 )
16745 && ( memcmp( lineWidthRange, rhs.lineWidthRange, 2 * sizeof( float ) ) == 0 )
16746 && ( pointSizeGranularity == rhs.pointSizeGranularity )
16747 && ( lineWidthGranularity == rhs.lineWidthGranularity )
16748 && ( strictLines == rhs.strictLines )
16749 && ( standardSampleLocations == rhs.standardSampleLocations )
16750 && ( optimalBufferCopyOffsetAlignment == rhs.optimalBufferCopyOffsetAlignment )
16751 && ( optimalBufferCopyRowPitchAlignment == rhs.optimalBufferCopyRowPitchAlignment )
16752 && ( nonCoherentAtomSize == rhs.nonCoherentAtomSize );
16753 }
16754
16755 bool operator!=( PhysicalDeviceLimits const& rhs ) const
16756 {
16757 return !operator==( rhs );
16758 }
16759
16760 uint32_t maxImageDimension1D;
16761 uint32_t maxImageDimension2D;
16762 uint32_t maxImageDimension3D;
16763 uint32_t maxImageDimensionCube;
16764 uint32_t maxImageArrayLayers;
16765 uint32_t maxTexelBufferElements;
16766 uint32_t maxUniformBufferRange;
16767 uint32_t maxStorageBufferRange;
16768 uint32_t maxPushConstantsSize;
16769 uint32_t maxMemoryAllocationCount;
16770 uint32_t maxSamplerAllocationCount;
16771 DeviceSize bufferImageGranularity;
16772 DeviceSize sparseAddressSpaceSize;
16773 uint32_t maxBoundDescriptorSets;
16774 uint32_t maxPerStageDescriptorSamplers;
16775 uint32_t maxPerStageDescriptorUniformBuffers;
16776 uint32_t maxPerStageDescriptorStorageBuffers;
16777 uint32_t maxPerStageDescriptorSampledImages;
16778 uint32_t maxPerStageDescriptorStorageImages;
16779 uint32_t maxPerStageDescriptorInputAttachments;
16780 uint32_t maxPerStageResources;
16781 uint32_t maxDescriptorSetSamplers;
16782 uint32_t maxDescriptorSetUniformBuffers;
16783 uint32_t maxDescriptorSetUniformBuffersDynamic;
16784 uint32_t maxDescriptorSetStorageBuffers;
16785 uint32_t maxDescriptorSetStorageBuffersDynamic;
16786 uint32_t maxDescriptorSetSampledImages;
16787 uint32_t maxDescriptorSetStorageImages;
16788 uint32_t maxDescriptorSetInputAttachments;
16789 uint32_t maxVertexInputAttributes;
16790 uint32_t maxVertexInputBindings;
16791 uint32_t maxVertexInputAttributeOffset;
16792 uint32_t maxVertexInputBindingStride;
16793 uint32_t maxVertexOutputComponents;
16794 uint32_t maxTessellationGenerationLevel;
16795 uint32_t maxTessellationPatchSize;
16796 uint32_t maxTessellationControlPerVertexInputComponents;
16797 uint32_t maxTessellationControlPerVertexOutputComponents;
16798 uint32_t maxTessellationControlPerPatchOutputComponents;
16799 uint32_t maxTessellationControlTotalOutputComponents;
16800 uint32_t maxTessellationEvaluationInputComponents;
16801 uint32_t maxTessellationEvaluationOutputComponents;
16802 uint32_t maxGeometryShaderInvocations;
16803 uint32_t maxGeometryInputComponents;
16804 uint32_t maxGeometryOutputComponents;
16805 uint32_t maxGeometryOutputVertices;
16806 uint32_t maxGeometryTotalOutputComponents;
16807 uint32_t maxFragmentInputComponents;
16808 uint32_t maxFragmentOutputAttachments;
16809 uint32_t maxFragmentDualSrcAttachments;
16810 uint32_t maxFragmentCombinedOutputResources;
16811 uint32_t maxComputeSharedMemorySize;
16812 uint32_t maxComputeWorkGroupCount[3];
16813 uint32_t maxComputeWorkGroupInvocations;
16814 uint32_t maxComputeWorkGroupSize[3];
16815 uint32_t subPixelPrecisionBits;
16816 uint32_t subTexelPrecisionBits;
16817 uint32_t mipmapPrecisionBits;
16818 uint32_t maxDrawIndexedIndexValue;
16819 uint32_t maxDrawIndirectCount;
16820 float maxSamplerLodBias;
16821 float maxSamplerAnisotropy;
16822 uint32_t maxViewports;
16823 uint32_t maxViewportDimensions[2];
16824 float viewportBoundsRange[2];
16825 uint32_t viewportSubPixelBits;
16826 size_t minMemoryMapAlignment;
16827 DeviceSize minTexelBufferOffsetAlignment;
16828 DeviceSize minUniformBufferOffsetAlignment;
16829 DeviceSize minStorageBufferOffsetAlignment;
16830 int32_t minTexelOffset;
16831 uint32_t maxTexelOffset;
16832 int32_t minTexelGatherOffset;
16833 uint32_t maxTexelGatherOffset;
16834 float minInterpolationOffset;
16835 float maxInterpolationOffset;
16836 uint32_t subPixelInterpolationOffsetBits;
16837 uint32_t maxFramebufferWidth;
16838 uint32_t maxFramebufferHeight;
16839 uint32_t maxFramebufferLayers;
16840 SampleCountFlags framebufferColorSampleCounts;
16841 SampleCountFlags framebufferDepthSampleCounts;
16842 SampleCountFlags framebufferStencilSampleCounts;
16843 SampleCountFlags framebufferNoAttachmentsSampleCounts;
16844 uint32_t maxColorAttachments;
16845 SampleCountFlags sampledImageColorSampleCounts;
16846 SampleCountFlags sampledImageIntegerSampleCounts;
16847 SampleCountFlags sampledImageDepthSampleCounts;
16848 SampleCountFlags sampledImageStencilSampleCounts;
16849 SampleCountFlags storageImageSampleCounts;
16850 uint32_t maxSampleMaskWords;
16851 Bool32 timestampComputeAndGraphics;
16852 float timestampPeriod;
16853 uint32_t maxClipDistances;
16854 uint32_t maxCullDistances;
16855 uint32_t maxCombinedClipAndCullDistances;
16856 uint32_t discreteQueuePriorities;
16857 float pointSizeRange[2];
16858 float lineWidthRange[2];
16859 float pointSizeGranularity;
16860 float lineWidthGranularity;
16861 Bool32 strictLines;
16862 Bool32 standardSampleLocations;
16863 DeviceSize optimalBufferCopyOffsetAlignment;
16864 DeviceSize optimalBufferCopyRowPitchAlignment;
16865 DeviceSize nonCoherentAtomSize;
16866 };
16867 static_assert( sizeof( PhysicalDeviceLimits ) == sizeof( VkPhysicalDeviceLimits ), "struct and wrapper have different size!" );
16868
16869 struct PhysicalDeviceProperties
16870 {
16871 operator const VkPhysicalDeviceProperties&() const
16872 {
16873 return *reinterpret_cast<const VkPhysicalDeviceProperties*>(this);
16874 }
16875
16876 bool operator==( PhysicalDeviceProperties const& rhs ) const
16877 {
16878 return ( apiVersion == rhs.apiVersion )
16879 && ( driverVersion == rhs.driverVersion )
16880 && ( vendorID == rhs.vendorID )
16881 && ( deviceID == rhs.deviceID )
16882 && ( deviceType == rhs.deviceType )
16883 && ( memcmp( deviceName, rhs.deviceName, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE * sizeof( char ) ) == 0 )
16884 && ( memcmp( pipelineCacheUUID, rhs.pipelineCacheUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
16885 && ( limits == rhs.limits )
16886 && ( sparseProperties == rhs.sparseProperties );
16887 }
16888
16889 bool operator!=( PhysicalDeviceProperties const& rhs ) const
16890 {
16891 return !operator==( rhs );
16892 }
16893
16894 uint32_t apiVersion;
16895 uint32_t driverVersion;
16896 uint32_t vendorID;
16897 uint32_t deviceID;
16898 PhysicalDeviceType deviceType;
16899 char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
16900 uint8_t pipelineCacheUUID[VK_UUID_SIZE];
16901 PhysicalDeviceLimits limits;
16902 PhysicalDeviceSparseProperties sparseProperties;
16903 };
16904 static_assert( sizeof( PhysicalDeviceProperties ) == sizeof( VkPhysicalDeviceProperties ), "struct and wrapper have different size!" );
16905
Mark Young39389872017-01-19 21:10:49 -070016906 struct PhysicalDeviceProperties2KHR
16907 {
16908 operator const VkPhysicalDeviceProperties2KHR&() const
16909 {
16910 return *reinterpret_cast<const VkPhysicalDeviceProperties2KHR*>(this);
16911 }
16912
16913 bool operator==( PhysicalDeviceProperties2KHR const& rhs ) const
16914 {
16915 return ( sType == rhs.sType )
16916 && ( pNext == rhs.pNext )
16917 && ( properties == rhs.properties );
16918 }
16919
16920 bool operator!=( PhysicalDeviceProperties2KHR const& rhs ) const
16921 {
16922 return !operator==( rhs );
16923 }
16924
16925 private:
16926 StructureType sType;
16927
16928 public:
16929 void* pNext;
16930 PhysicalDeviceProperties properties;
16931 };
16932 static_assert( sizeof( PhysicalDeviceProperties2KHR ) == sizeof( VkPhysicalDeviceProperties2KHR ), "struct and wrapper have different size!" );
16933
16934 struct ImageFormatProperties2KHR
16935 {
16936 operator const VkImageFormatProperties2KHR&() const
16937 {
16938 return *reinterpret_cast<const VkImageFormatProperties2KHR*>(this);
16939 }
16940
16941 bool operator==( ImageFormatProperties2KHR const& rhs ) const
16942 {
16943 return ( sType == rhs.sType )
16944 && ( pNext == rhs.pNext )
16945 && ( imageFormatProperties == rhs.imageFormatProperties );
16946 }
16947
16948 bool operator!=( ImageFormatProperties2KHR const& rhs ) const
16949 {
16950 return !operator==( rhs );
16951 }
16952
16953 private:
16954 StructureType sType;
16955
16956 public:
16957 void* pNext;
16958 ImageFormatProperties imageFormatProperties;
16959 };
16960 static_assert( sizeof( ImageFormatProperties2KHR ) == sizeof( VkImageFormatProperties2KHR ), "struct and wrapper have different size!" );
16961
16962 struct PhysicalDeviceSparseImageFormatInfo2KHR
16963 {
16964 PhysicalDeviceSparseImageFormatInfo2KHR( Format format_ = Format::eUndefined, ImageType type_ = ImageType::e1D, SampleCountFlagBits samples_ = SampleCountFlagBits::e1, ImageUsageFlags usage_ = ImageUsageFlags(), ImageTiling tiling_ = ImageTiling::eOptimal )
16965 : sType( StructureType::ePhysicalDeviceSparseImageFormatInfo2KHR )
16966 , pNext( nullptr )
16967 , format( format_ )
16968 , type( type_ )
16969 , samples( samples_ )
16970 , usage( usage_ )
16971 , tiling( tiling_ )
16972 {
16973 }
16974
16975 PhysicalDeviceSparseImageFormatInfo2KHR( VkPhysicalDeviceSparseImageFormatInfo2KHR const & rhs )
16976 {
16977 memcpy( this, &rhs, sizeof(PhysicalDeviceSparseImageFormatInfo2KHR) );
16978 }
16979
16980 PhysicalDeviceSparseImageFormatInfo2KHR& operator=( VkPhysicalDeviceSparseImageFormatInfo2KHR const & rhs )
16981 {
16982 memcpy( this, &rhs, sizeof(PhysicalDeviceSparseImageFormatInfo2KHR) );
16983 return *this;
16984 }
16985
Mark Young39389872017-01-19 21:10:49 -070016986 PhysicalDeviceSparseImageFormatInfo2KHR& setPNext( const void* pNext_ )
16987 {
16988 pNext = pNext_;
16989 return *this;
16990 }
16991
16992 PhysicalDeviceSparseImageFormatInfo2KHR& setFormat( Format format_ )
16993 {
16994 format = format_;
16995 return *this;
16996 }
16997
16998 PhysicalDeviceSparseImageFormatInfo2KHR& setType( ImageType type_ )
16999 {
17000 type = type_;
17001 return *this;
17002 }
17003
17004 PhysicalDeviceSparseImageFormatInfo2KHR& setSamples( SampleCountFlagBits samples_ )
17005 {
17006 samples = samples_;
17007 return *this;
17008 }
17009
17010 PhysicalDeviceSparseImageFormatInfo2KHR& setUsage( ImageUsageFlags usage_ )
17011 {
17012 usage = usage_;
17013 return *this;
17014 }
17015
17016 PhysicalDeviceSparseImageFormatInfo2KHR& setTiling( ImageTiling tiling_ )
17017 {
17018 tiling = tiling_;
17019 return *this;
17020 }
17021
17022 operator const VkPhysicalDeviceSparseImageFormatInfo2KHR&() const
17023 {
17024 return *reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>(this);
17025 }
17026
17027 bool operator==( PhysicalDeviceSparseImageFormatInfo2KHR const& rhs ) const
17028 {
17029 return ( sType == rhs.sType )
17030 && ( pNext == rhs.pNext )
17031 && ( format == rhs.format )
17032 && ( type == rhs.type )
17033 && ( samples == rhs.samples )
17034 && ( usage == rhs.usage )
17035 && ( tiling == rhs.tiling );
17036 }
17037
17038 bool operator!=( PhysicalDeviceSparseImageFormatInfo2KHR const& rhs ) const
17039 {
17040 return !operator==( rhs );
17041 }
17042
17043 private:
17044 StructureType sType;
17045
17046 public:
17047 const void* pNext;
17048 Format format;
17049 ImageType type;
17050 SampleCountFlagBits samples;
17051 ImageUsageFlags usage;
17052 ImageTiling tiling;
17053 };
17054 static_assert( sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) == sizeof( VkPhysicalDeviceSparseImageFormatInfo2KHR ), "struct and wrapper have different size!" );
17055
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017056 enum class AttachmentDescriptionFlagBits
17057 {
17058 eMayAlias = VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT
17059 };
17060
17061 using AttachmentDescriptionFlags = Flags<AttachmentDescriptionFlagBits, VkAttachmentDescriptionFlags>;
17062
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017063 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator|( AttachmentDescriptionFlagBits bit0, AttachmentDescriptionFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017064 {
17065 return AttachmentDescriptionFlags( bit0 ) | bit1;
17066 }
17067
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017068 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator~( AttachmentDescriptionFlagBits bits )
17069 {
17070 return ~( AttachmentDescriptionFlags( bits ) );
17071 }
17072
17073 template <> struct FlagTraits<AttachmentDescriptionFlagBits>
17074 {
17075 enum
17076 {
17077 allFlags = VkFlags(AttachmentDescriptionFlagBits::eMayAlias)
17078 };
17079 };
17080
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017081 struct AttachmentDescription
17082 {
17083 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 )
17084 : flags( flags_ )
17085 , format( format_ )
17086 , samples( samples_ )
17087 , loadOp( loadOp_ )
17088 , storeOp( storeOp_ )
17089 , stencilLoadOp( stencilLoadOp_ )
17090 , stencilStoreOp( stencilStoreOp_ )
17091 , initialLayout( initialLayout_ )
17092 , finalLayout( finalLayout_ )
17093 {
17094 }
17095
17096 AttachmentDescription( VkAttachmentDescription const & rhs )
17097 {
17098 memcpy( this, &rhs, sizeof(AttachmentDescription) );
17099 }
17100
17101 AttachmentDescription& operator=( VkAttachmentDescription const & rhs )
17102 {
17103 memcpy( this, &rhs, sizeof(AttachmentDescription) );
17104 return *this;
17105 }
17106
17107 AttachmentDescription& setFlags( AttachmentDescriptionFlags flags_ )
17108 {
17109 flags = flags_;
17110 return *this;
17111 }
17112
17113 AttachmentDescription& setFormat( Format format_ )
17114 {
17115 format = format_;
17116 return *this;
17117 }
17118
17119 AttachmentDescription& setSamples( SampleCountFlagBits samples_ )
17120 {
17121 samples = samples_;
17122 return *this;
17123 }
17124
17125 AttachmentDescription& setLoadOp( AttachmentLoadOp loadOp_ )
17126 {
17127 loadOp = loadOp_;
17128 return *this;
17129 }
17130
17131 AttachmentDescription& setStoreOp( AttachmentStoreOp storeOp_ )
17132 {
17133 storeOp = storeOp_;
17134 return *this;
17135 }
17136
17137 AttachmentDescription& setStencilLoadOp( AttachmentLoadOp stencilLoadOp_ )
17138 {
17139 stencilLoadOp = stencilLoadOp_;
17140 return *this;
17141 }
17142
17143 AttachmentDescription& setStencilStoreOp( AttachmentStoreOp stencilStoreOp_ )
17144 {
17145 stencilStoreOp = stencilStoreOp_;
17146 return *this;
17147 }
17148
17149 AttachmentDescription& setInitialLayout( ImageLayout initialLayout_ )
17150 {
17151 initialLayout = initialLayout_;
17152 return *this;
17153 }
17154
17155 AttachmentDescription& setFinalLayout( ImageLayout finalLayout_ )
17156 {
17157 finalLayout = finalLayout_;
17158 return *this;
17159 }
17160
17161 operator const VkAttachmentDescription&() const
17162 {
17163 return *reinterpret_cast<const VkAttachmentDescription*>(this);
17164 }
17165
17166 bool operator==( AttachmentDescription const& rhs ) const
17167 {
17168 return ( flags == rhs.flags )
17169 && ( format == rhs.format )
17170 && ( samples == rhs.samples )
17171 && ( loadOp == rhs.loadOp )
17172 && ( storeOp == rhs.storeOp )
17173 && ( stencilLoadOp == rhs.stencilLoadOp )
17174 && ( stencilStoreOp == rhs.stencilStoreOp )
17175 && ( initialLayout == rhs.initialLayout )
17176 && ( finalLayout == rhs.finalLayout );
17177 }
17178
17179 bool operator!=( AttachmentDescription const& rhs ) const
17180 {
17181 return !operator==( rhs );
17182 }
17183
17184 AttachmentDescriptionFlags flags;
17185 Format format;
17186 SampleCountFlagBits samples;
17187 AttachmentLoadOp loadOp;
17188 AttachmentStoreOp storeOp;
17189 AttachmentLoadOp stencilLoadOp;
17190 AttachmentStoreOp stencilStoreOp;
17191 ImageLayout initialLayout;
17192 ImageLayout finalLayout;
17193 };
17194 static_assert( sizeof( AttachmentDescription ) == sizeof( VkAttachmentDescription ), "struct and wrapper have different size!" );
17195
17196 enum class StencilFaceFlagBits
17197 {
17198 eFront = VK_STENCIL_FACE_FRONT_BIT,
17199 eBack = VK_STENCIL_FACE_BACK_BIT,
17200 eVkStencilFrontAndBack = VK_STENCIL_FRONT_AND_BACK
17201 };
17202
17203 using StencilFaceFlags = Flags<StencilFaceFlagBits, VkStencilFaceFlags>;
17204
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017205 VULKAN_HPP_INLINE StencilFaceFlags operator|( StencilFaceFlagBits bit0, StencilFaceFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017206 {
17207 return StencilFaceFlags( bit0 ) | bit1;
17208 }
17209
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017210 VULKAN_HPP_INLINE StencilFaceFlags operator~( StencilFaceFlagBits bits )
17211 {
17212 return ~( StencilFaceFlags( bits ) );
17213 }
17214
17215 template <> struct FlagTraits<StencilFaceFlagBits>
17216 {
17217 enum
17218 {
17219 allFlags = VkFlags(StencilFaceFlagBits::eFront) | VkFlags(StencilFaceFlagBits::eBack) | VkFlags(StencilFaceFlagBits::eVkStencilFrontAndBack)
17220 };
17221 };
17222
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017223 enum class DescriptorPoolCreateFlagBits
17224 {
17225 eFreeDescriptorSet = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT
17226 };
17227
17228 using DescriptorPoolCreateFlags = Flags<DescriptorPoolCreateFlagBits, VkDescriptorPoolCreateFlags>;
17229
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017230 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator|( DescriptorPoolCreateFlagBits bit0, DescriptorPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017231 {
17232 return DescriptorPoolCreateFlags( bit0 ) | bit1;
17233 }
17234
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017235 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator~( DescriptorPoolCreateFlagBits bits )
17236 {
17237 return ~( DescriptorPoolCreateFlags( bits ) );
17238 }
17239
17240 template <> struct FlagTraits<DescriptorPoolCreateFlagBits>
17241 {
17242 enum
17243 {
17244 allFlags = VkFlags(DescriptorPoolCreateFlagBits::eFreeDescriptorSet)
17245 };
17246 };
17247
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017248 struct DescriptorPoolCreateInfo
17249 {
17250 DescriptorPoolCreateInfo( DescriptorPoolCreateFlags flags_ = DescriptorPoolCreateFlags(), uint32_t maxSets_ = 0, uint32_t poolSizeCount_ = 0, const DescriptorPoolSize* pPoolSizes_ = nullptr )
17251 : sType( StructureType::eDescriptorPoolCreateInfo )
17252 , pNext( nullptr )
17253 , flags( flags_ )
17254 , maxSets( maxSets_ )
17255 , poolSizeCount( poolSizeCount_ )
17256 , pPoolSizes( pPoolSizes_ )
17257 {
17258 }
17259
17260 DescriptorPoolCreateInfo( VkDescriptorPoolCreateInfo const & rhs )
17261 {
17262 memcpy( this, &rhs, sizeof(DescriptorPoolCreateInfo) );
17263 }
17264
17265 DescriptorPoolCreateInfo& operator=( VkDescriptorPoolCreateInfo const & rhs )
17266 {
17267 memcpy( this, &rhs, sizeof(DescriptorPoolCreateInfo) );
17268 return *this;
17269 }
17270
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017271 DescriptorPoolCreateInfo& setPNext( const void* pNext_ )
17272 {
17273 pNext = pNext_;
17274 return *this;
17275 }
17276
17277 DescriptorPoolCreateInfo& setFlags( DescriptorPoolCreateFlags flags_ )
17278 {
17279 flags = flags_;
17280 return *this;
17281 }
17282
17283 DescriptorPoolCreateInfo& setMaxSets( uint32_t maxSets_ )
17284 {
17285 maxSets = maxSets_;
17286 return *this;
17287 }
17288
17289 DescriptorPoolCreateInfo& setPoolSizeCount( uint32_t poolSizeCount_ )
17290 {
17291 poolSizeCount = poolSizeCount_;
17292 return *this;
17293 }
17294
17295 DescriptorPoolCreateInfo& setPPoolSizes( const DescriptorPoolSize* pPoolSizes_ )
17296 {
17297 pPoolSizes = pPoolSizes_;
17298 return *this;
17299 }
17300
17301 operator const VkDescriptorPoolCreateInfo&() const
17302 {
17303 return *reinterpret_cast<const VkDescriptorPoolCreateInfo*>(this);
17304 }
17305
17306 bool operator==( DescriptorPoolCreateInfo const& rhs ) const
17307 {
17308 return ( sType == rhs.sType )
17309 && ( pNext == rhs.pNext )
17310 && ( flags == rhs.flags )
17311 && ( maxSets == rhs.maxSets )
17312 && ( poolSizeCount == rhs.poolSizeCount )
17313 && ( pPoolSizes == rhs.pPoolSizes );
17314 }
17315
17316 bool operator!=( DescriptorPoolCreateInfo const& rhs ) const
17317 {
17318 return !operator==( rhs );
17319 }
17320
17321 private:
17322 StructureType sType;
17323
17324 public:
17325 const void* pNext;
17326 DescriptorPoolCreateFlags flags;
17327 uint32_t maxSets;
17328 uint32_t poolSizeCount;
17329 const DescriptorPoolSize* pPoolSizes;
17330 };
17331 static_assert( sizeof( DescriptorPoolCreateInfo ) == sizeof( VkDescriptorPoolCreateInfo ), "struct and wrapper have different size!" );
17332
17333 enum class DependencyFlagBits
17334 {
Mark Young0f183a82017-02-28 09:58:04 -070017335 eByRegion = VK_DEPENDENCY_BY_REGION_BIT,
17336 eViewLocalKHX = VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX,
17337 eDeviceGroupKHX = VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017338 };
17339
17340 using DependencyFlags = Flags<DependencyFlagBits, VkDependencyFlags>;
17341
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017342 VULKAN_HPP_INLINE DependencyFlags operator|( DependencyFlagBits bit0, DependencyFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017343 {
17344 return DependencyFlags( bit0 ) | bit1;
17345 }
17346
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017347 VULKAN_HPP_INLINE DependencyFlags operator~( DependencyFlagBits bits )
17348 {
17349 return ~( DependencyFlags( bits ) );
17350 }
17351
17352 template <> struct FlagTraits<DependencyFlagBits>
17353 {
17354 enum
17355 {
Mark Young0f183a82017-02-28 09:58:04 -070017356 allFlags = VkFlags(DependencyFlagBits::eByRegion) | VkFlags(DependencyFlagBits::eViewLocalKHX) | VkFlags(DependencyFlagBits::eDeviceGroupKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017357 };
17358 };
17359
17360 struct SubpassDependency
17361 {
17362 SubpassDependency( uint32_t srcSubpass_ = 0, uint32_t dstSubpass_ = 0, PipelineStageFlags srcStageMask_ = PipelineStageFlags(), PipelineStageFlags dstStageMask_ = PipelineStageFlags(), AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), DependencyFlags dependencyFlags_ = DependencyFlags() )
17363 : srcSubpass( srcSubpass_ )
17364 , dstSubpass( dstSubpass_ )
17365 , srcStageMask( srcStageMask_ )
17366 , dstStageMask( dstStageMask_ )
17367 , srcAccessMask( srcAccessMask_ )
17368 , dstAccessMask( dstAccessMask_ )
17369 , dependencyFlags( dependencyFlags_ )
17370 {
17371 }
17372
17373 SubpassDependency( VkSubpassDependency const & rhs )
17374 {
17375 memcpy( this, &rhs, sizeof(SubpassDependency) );
17376 }
17377
17378 SubpassDependency& operator=( VkSubpassDependency const & rhs )
17379 {
17380 memcpy( this, &rhs, sizeof(SubpassDependency) );
17381 return *this;
17382 }
17383
17384 SubpassDependency& setSrcSubpass( uint32_t srcSubpass_ )
17385 {
17386 srcSubpass = srcSubpass_;
17387 return *this;
17388 }
17389
17390 SubpassDependency& setDstSubpass( uint32_t dstSubpass_ )
17391 {
17392 dstSubpass = dstSubpass_;
17393 return *this;
17394 }
17395
17396 SubpassDependency& setSrcStageMask( PipelineStageFlags srcStageMask_ )
17397 {
17398 srcStageMask = srcStageMask_;
17399 return *this;
17400 }
17401
17402 SubpassDependency& setDstStageMask( PipelineStageFlags dstStageMask_ )
17403 {
17404 dstStageMask = dstStageMask_;
17405 return *this;
17406 }
17407
17408 SubpassDependency& setSrcAccessMask( AccessFlags srcAccessMask_ )
17409 {
17410 srcAccessMask = srcAccessMask_;
17411 return *this;
17412 }
17413
17414 SubpassDependency& setDstAccessMask( AccessFlags dstAccessMask_ )
17415 {
17416 dstAccessMask = dstAccessMask_;
17417 return *this;
17418 }
17419
17420 SubpassDependency& setDependencyFlags( DependencyFlags dependencyFlags_ )
17421 {
17422 dependencyFlags = dependencyFlags_;
17423 return *this;
17424 }
17425
17426 operator const VkSubpassDependency&() const
17427 {
17428 return *reinterpret_cast<const VkSubpassDependency*>(this);
17429 }
17430
17431 bool operator==( SubpassDependency const& rhs ) const
17432 {
17433 return ( srcSubpass == rhs.srcSubpass )
17434 && ( dstSubpass == rhs.dstSubpass )
17435 && ( srcStageMask == rhs.srcStageMask )
17436 && ( dstStageMask == rhs.dstStageMask )
17437 && ( srcAccessMask == rhs.srcAccessMask )
17438 && ( dstAccessMask == rhs.dstAccessMask )
17439 && ( dependencyFlags == rhs.dependencyFlags );
17440 }
17441
17442 bool operator!=( SubpassDependency const& rhs ) const
17443 {
17444 return !operator==( rhs );
17445 }
17446
17447 uint32_t srcSubpass;
17448 uint32_t dstSubpass;
17449 PipelineStageFlags srcStageMask;
17450 PipelineStageFlags dstStageMask;
17451 AccessFlags srcAccessMask;
17452 AccessFlags dstAccessMask;
17453 DependencyFlags dependencyFlags;
17454 };
17455 static_assert( sizeof( SubpassDependency ) == sizeof( VkSubpassDependency ), "struct and wrapper have different size!" );
17456
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017457 enum class PresentModeKHR
17458 {
17459 eImmediate = VK_PRESENT_MODE_IMMEDIATE_KHR,
17460 eMailbox = VK_PRESENT_MODE_MAILBOX_KHR,
17461 eFifo = VK_PRESENT_MODE_FIFO_KHR,
17462 eFifoRelaxed = VK_PRESENT_MODE_FIFO_RELAXED_KHR
17463 };
17464
17465 enum class ColorSpaceKHR
17466 {
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060017467 eSrgbNonlinear = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
17468 eDisplayP3NonlinearEXT = VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT,
17469 eExtendedSrgbLinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT,
17470 eDciP3LinearEXT = VK_COLOR_SPACE_DCI_P3_LINEAR_EXT,
17471 eDciP3NonlinearEXT = VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT,
17472 eBt709LinearEXT = VK_COLOR_SPACE_BT709_LINEAR_EXT,
17473 eBt709NonlinearEXT = VK_COLOR_SPACE_BT709_NONLINEAR_EXT,
17474 eBt2020LinearEXT = VK_COLOR_SPACE_BT2020_LINEAR_EXT,
17475 eHdr10St2084EXT = VK_COLOR_SPACE_HDR10_ST2084_EXT,
17476 eDolbyvisionEXT = VK_COLOR_SPACE_DOLBYVISION_EXT,
17477 eHdr10HlgEXT = VK_COLOR_SPACE_HDR10_HLG_EXT,
17478 eAdobergbLinearEXT = VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT,
17479 eAdobergbNonlinearEXT = VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT,
17480 ePassThroughEXT = VK_COLOR_SPACE_PASS_THROUGH_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017481 };
17482
17483 struct SurfaceFormatKHR
17484 {
17485 operator const VkSurfaceFormatKHR&() const
17486 {
17487 return *reinterpret_cast<const VkSurfaceFormatKHR*>(this);
17488 }
17489
17490 bool operator==( SurfaceFormatKHR const& rhs ) const
17491 {
17492 return ( format == rhs.format )
17493 && ( colorSpace == rhs.colorSpace );
17494 }
17495
17496 bool operator!=( SurfaceFormatKHR const& rhs ) const
17497 {
17498 return !operator==( rhs );
17499 }
17500
17501 Format format;
17502 ColorSpaceKHR colorSpace;
17503 };
17504 static_assert( sizeof( SurfaceFormatKHR ) == sizeof( VkSurfaceFormatKHR ), "struct and wrapper have different size!" );
17505
17506 enum class DisplayPlaneAlphaFlagBitsKHR
17507 {
17508 eOpaque = VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR,
17509 eGlobal = VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR,
17510 ePerPixel = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR,
17511 ePerPixelPremultiplied = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR
17512 };
17513
17514 using DisplayPlaneAlphaFlagsKHR = Flags<DisplayPlaneAlphaFlagBitsKHR, VkDisplayPlaneAlphaFlagsKHR>;
17515
17516 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator|( DisplayPlaneAlphaFlagBitsKHR bit0, DisplayPlaneAlphaFlagBitsKHR bit1 )
17517 {
17518 return DisplayPlaneAlphaFlagsKHR( bit0 ) | bit1;
17519 }
17520
17521 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator~( DisplayPlaneAlphaFlagBitsKHR bits )
17522 {
17523 return ~( DisplayPlaneAlphaFlagsKHR( bits ) );
17524 }
17525
17526 template <> struct FlagTraits<DisplayPlaneAlphaFlagBitsKHR>
17527 {
17528 enum
17529 {
17530 allFlags = VkFlags(DisplayPlaneAlphaFlagBitsKHR::eOpaque) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::eGlobal) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixel) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied)
17531 };
17532 };
17533
17534 struct DisplayPlaneCapabilitiesKHR
17535 {
17536 operator const VkDisplayPlaneCapabilitiesKHR&() const
17537 {
17538 return *reinterpret_cast<const VkDisplayPlaneCapabilitiesKHR*>(this);
17539 }
17540
17541 bool operator==( DisplayPlaneCapabilitiesKHR const& rhs ) const
17542 {
17543 return ( supportedAlpha == rhs.supportedAlpha )
17544 && ( minSrcPosition == rhs.minSrcPosition )
17545 && ( maxSrcPosition == rhs.maxSrcPosition )
17546 && ( minSrcExtent == rhs.minSrcExtent )
17547 && ( maxSrcExtent == rhs.maxSrcExtent )
17548 && ( minDstPosition == rhs.minDstPosition )
17549 && ( maxDstPosition == rhs.maxDstPosition )
17550 && ( minDstExtent == rhs.minDstExtent )
17551 && ( maxDstExtent == rhs.maxDstExtent );
17552 }
17553
17554 bool operator!=( DisplayPlaneCapabilitiesKHR const& rhs ) const
17555 {
17556 return !operator==( rhs );
17557 }
17558
17559 DisplayPlaneAlphaFlagsKHR supportedAlpha;
17560 Offset2D minSrcPosition;
17561 Offset2D maxSrcPosition;
17562 Extent2D minSrcExtent;
17563 Extent2D maxSrcExtent;
17564 Offset2D minDstPosition;
17565 Offset2D maxDstPosition;
17566 Extent2D minDstExtent;
17567 Extent2D maxDstExtent;
17568 };
17569 static_assert( sizeof( DisplayPlaneCapabilitiesKHR ) == sizeof( VkDisplayPlaneCapabilitiesKHR ), "struct and wrapper have different size!" );
17570
17571 enum class CompositeAlphaFlagBitsKHR
17572 {
17573 eOpaque = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,
17574 ePreMultiplied = VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR,
17575 ePostMultiplied = VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR,
17576 eInherit = VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR
17577 };
17578
17579 using CompositeAlphaFlagsKHR = Flags<CompositeAlphaFlagBitsKHR, VkCompositeAlphaFlagsKHR>;
17580
17581 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator|( CompositeAlphaFlagBitsKHR bit0, CompositeAlphaFlagBitsKHR bit1 )
17582 {
17583 return CompositeAlphaFlagsKHR( bit0 ) | bit1;
17584 }
17585
17586 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator~( CompositeAlphaFlagBitsKHR bits )
17587 {
17588 return ~( CompositeAlphaFlagsKHR( bits ) );
17589 }
17590
17591 template <> struct FlagTraits<CompositeAlphaFlagBitsKHR>
17592 {
17593 enum
17594 {
17595 allFlags = VkFlags(CompositeAlphaFlagBitsKHR::eOpaque) | VkFlags(CompositeAlphaFlagBitsKHR::ePreMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::ePostMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::eInherit)
17596 };
17597 };
17598
17599 enum class SurfaceTransformFlagBitsKHR
17600 {
17601 eIdentity = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,
17602 eRotate90 = VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,
17603 eRotate180 = VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,
17604 eRotate270 = VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,
17605 eHorizontalMirror = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR,
17606 eHorizontalMirrorRotate90 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR,
17607 eHorizontalMirrorRotate180 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR,
17608 eHorizontalMirrorRotate270 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR,
17609 eInherit = VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR
17610 };
17611
17612 using SurfaceTransformFlagsKHR = Flags<SurfaceTransformFlagBitsKHR, VkSurfaceTransformFlagsKHR>;
17613
17614 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator|( SurfaceTransformFlagBitsKHR bit0, SurfaceTransformFlagBitsKHR bit1 )
17615 {
17616 return SurfaceTransformFlagsKHR( bit0 ) | bit1;
17617 }
17618
17619 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator~( SurfaceTransformFlagBitsKHR bits )
17620 {
17621 return ~( SurfaceTransformFlagsKHR( bits ) );
17622 }
17623
17624 template <> struct FlagTraits<SurfaceTransformFlagBitsKHR>
17625 {
17626 enum
17627 {
17628 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)
17629 };
17630 };
17631
17632 struct DisplayPropertiesKHR
17633 {
17634 operator const VkDisplayPropertiesKHR&() const
17635 {
17636 return *reinterpret_cast<const VkDisplayPropertiesKHR*>(this);
17637 }
17638
17639 bool operator==( DisplayPropertiesKHR const& rhs ) const
17640 {
17641 return ( display == rhs.display )
17642 && ( displayName == rhs.displayName )
17643 && ( physicalDimensions == rhs.physicalDimensions )
17644 && ( physicalResolution == rhs.physicalResolution )
17645 && ( supportedTransforms == rhs.supportedTransforms )
17646 && ( planeReorderPossible == rhs.planeReorderPossible )
17647 && ( persistentContent == rhs.persistentContent );
17648 }
17649
17650 bool operator!=( DisplayPropertiesKHR const& rhs ) const
17651 {
17652 return !operator==( rhs );
17653 }
17654
17655 DisplayKHR display;
17656 const char* displayName;
17657 Extent2D physicalDimensions;
17658 Extent2D physicalResolution;
17659 SurfaceTransformFlagsKHR supportedTransforms;
17660 Bool32 planeReorderPossible;
17661 Bool32 persistentContent;
17662 };
17663 static_assert( sizeof( DisplayPropertiesKHR ) == sizeof( VkDisplayPropertiesKHR ), "struct and wrapper have different size!" );
17664
17665 struct DisplaySurfaceCreateInfoKHR
17666 {
17667 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() )
17668 : sType( StructureType::eDisplaySurfaceCreateInfoKHR )
17669 , pNext( nullptr )
17670 , flags( flags_ )
17671 , displayMode( displayMode_ )
17672 , planeIndex( planeIndex_ )
17673 , planeStackIndex( planeStackIndex_ )
17674 , transform( transform_ )
17675 , globalAlpha( globalAlpha_ )
17676 , alphaMode( alphaMode_ )
17677 , imageExtent( imageExtent_ )
17678 {
17679 }
17680
17681 DisplaySurfaceCreateInfoKHR( VkDisplaySurfaceCreateInfoKHR const & rhs )
17682 {
17683 memcpy( this, &rhs, sizeof(DisplaySurfaceCreateInfoKHR) );
17684 }
17685
17686 DisplaySurfaceCreateInfoKHR& operator=( VkDisplaySurfaceCreateInfoKHR const & rhs )
17687 {
17688 memcpy( this, &rhs, sizeof(DisplaySurfaceCreateInfoKHR) );
17689 return *this;
17690 }
17691
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017692 DisplaySurfaceCreateInfoKHR& setPNext( const void* pNext_ )
17693 {
17694 pNext = pNext_;
17695 return *this;
17696 }
17697
17698 DisplaySurfaceCreateInfoKHR& setFlags( DisplaySurfaceCreateFlagsKHR flags_ )
17699 {
17700 flags = flags_;
17701 return *this;
17702 }
17703
17704 DisplaySurfaceCreateInfoKHR& setDisplayMode( DisplayModeKHR displayMode_ )
17705 {
17706 displayMode = displayMode_;
17707 return *this;
17708 }
17709
17710 DisplaySurfaceCreateInfoKHR& setPlaneIndex( uint32_t planeIndex_ )
17711 {
17712 planeIndex = planeIndex_;
17713 return *this;
17714 }
17715
17716 DisplaySurfaceCreateInfoKHR& setPlaneStackIndex( uint32_t planeStackIndex_ )
17717 {
17718 planeStackIndex = planeStackIndex_;
17719 return *this;
17720 }
17721
17722 DisplaySurfaceCreateInfoKHR& setTransform( SurfaceTransformFlagBitsKHR transform_ )
17723 {
17724 transform = transform_;
17725 return *this;
17726 }
17727
17728 DisplaySurfaceCreateInfoKHR& setGlobalAlpha( float globalAlpha_ )
17729 {
17730 globalAlpha = globalAlpha_;
17731 return *this;
17732 }
17733
17734 DisplaySurfaceCreateInfoKHR& setAlphaMode( DisplayPlaneAlphaFlagBitsKHR alphaMode_ )
17735 {
17736 alphaMode = alphaMode_;
17737 return *this;
17738 }
17739
17740 DisplaySurfaceCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
17741 {
17742 imageExtent = imageExtent_;
17743 return *this;
17744 }
17745
17746 operator const VkDisplaySurfaceCreateInfoKHR&() const
17747 {
17748 return *reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>(this);
17749 }
17750
17751 bool operator==( DisplaySurfaceCreateInfoKHR const& rhs ) const
17752 {
17753 return ( sType == rhs.sType )
17754 && ( pNext == rhs.pNext )
17755 && ( flags == rhs.flags )
17756 && ( displayMode == rhs.displayMode )
17757 && ( planeIndex == rhs.planeIndex )
17758 && ( planeStackIndex == rhs.planeStackIndex )
17759 && ( transform == rhs.transform )
17760 && ( globalAlpha == rhs.globalAlpha )
17761 && ( alphaMode == rhs.alphaMode )
17762 && ( imageExtent == rhs.imageExtent );
17763 }
17764
17765 bool operator!=( DisplaySurfaceCreateInfoKHR const& rhs ) const
17766 {
17767 return !operator==( rhs );
17768 }
17769
17770 private:
17771 StructureType sType;
17772
17773 public:
17774 const void* pNext;
17775 DisplaySurfaceCreateFlagsKHR flags;
17776 DisplayModeKHR displayMode;
17777 uint32_t planeIndex;
17778 uint32_t planeStackIndex;
17779 SurfaceTransformFlagBitsKHR transform;
17780 float globalAlpha;
17781 DisplayPlaneAlphaFlagBitsKHR alphaMode;
17782 Extent2D imageExtent;
17783 };
17784 static_assert( sizeof( DisplaySurfaceCreateInfoKHR ) == sizeof( VkDisplaySurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
17785
17786 struct SurfaceCapabilitiesKHR
17787 {
17788 operator const VkSurfaceCapabilitiesKHR&() const
17789 {
17790 return *reinterpret_cast<const VkSurfaceCapabilitiesKHR*>(this);
17791 }
17792
17793 bool operator==( SurfaceCapabilitiesKHR const& rhs ) const
17794 {
17795 return ( minImageCount == rhs.minImageCount )
17796 && ( maxImageCount == rhs.maxImageCount )
17797 && ( currentExtent == rhs.currentExtent )
17798 && ( minImageExtent == rhs.minImageExtent )
17799 && ( maxImageExtent == rhs.maxImageExtent )
17800 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
17801 && ( supportedTransforms == rhs.supportedTransforms )
17802 && ( currentTransform == rhs.currentTransform )
17803 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
17804 && ( supportedUsageFlags == rhs.supportedUsageFlags );
17805 }
17806
17807 bool operator!=( SurfaceCapabilitiesKHR const& rhs ) const
17808 {
17809 return !operator==( rhs );
17810 }
17811
17812 uint32_t minImageCount;
17813 uint32_t maxImageCount;
17814 Extent2D currentExtent;
17815 Extent2D minImageExtent;
17816 Extent2D maxImageExtent;
17817 uint32_t maxImageArrayLayers;
17818 SurfaceTransformFlagsKHR supportedTransforms;
17819 SurfaceTransformFlagBitsKHR currentTransform;
17820 CompositeAlphaFlagsKHR supportedCompositeAlpha;
17821 ImageUsageFlags supportedUsageFlags;
17822 };
17823 static_assert( sizeof( SurfaceCapabilitiesKHR ) == sizeof( VkSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" );
17824
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017825 enum class DebugReportFlagBitsEXT
17826 {
17827 eInformation = VK_DEBUG_REPORT_INFORMATION_BIT_EXT,
17828 eWarning = VK_DEBUG_REPORT_WARNING_BIT_EXT,
17829 ePerformanceWarning = VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT,
17830 eError = VK_DEBUG_REPORT_ERROR_BIT_EXT,
17831 eDebug = VK_DEBUG_REPORT_DEBUG_BIT_EXT
17832 };
17833
17834 using DebugReportFlagsEXT = Flags<DebugReportFlagBitsEXT, VkDebugReportFlagsEXT>;
17835
17836 VULKAN_HPP_INLINE DebugReportFlagsEXT operator|( DebugReportFlagBitsEXT bit0, DebugReportFlagBitsEXT bit1 )
17837 {
17838 return DebugReportFlagsEXT( bit0 ) | bit1;
17839 }
17840
17841 VULKAN_HPP_INLINE DebugReportFlagsEXT operator~( DebugReportFlagBitsEXT bits )
17842 {
17843 return ~( DebugReportFlagsEXT( bits ) );
17844 }
17845
17846 template <> struct FlagTraits<DebugReportFlagBitsEXT>
17847 {
17848 enum
17849 {
17850 allFlags = VkFlags(DebugReportFlagBitsEXT::eInformation) | VkFlags(DebugReportFlagBitsEXT::eWarning) | VkFlags(DebugReportFlagBitsEXT::ePerformanceWarning) | VkFlags(DebugReportFlagBitsEXT::eError) | VkFlags(DebugReportFlagBitsEXT::eDebug)
17851 };
17852 };
17853
17854 struct DebugReportCallbackCreateInfoEXT
17855 {
17856 DebugReportCallbackCreateInfoEXT( DebugReportFlagsEXT flags_ = DebugReportFlagsEXT(), PFN_vkDebugReportCallbackEXT pfnCallback_ = nullptr, void* pUserData_ = nullptr )
17857 : sType( StructureType::eDebugReportCallbackCreateInfoEXT )
17858 , pNext( nullptr )
17859 , flags( flags_ )
17860 , pfnCallback( pfnCallback_ )
17861 , pUserData( pUserData_ )
17862 {
17863 }
17864
17865 DebugReportCallbackCreateInfoEXT( VkDebugReportCallbackCreateInfoEXT const & rhs )
17866 {
17867 memcpy( this, &rhs, sizeof(DebugReportCallbackCreateInfoEXT) );
17868 }
17869
17870 DebugReportCallbackCreateInfoEXT& operator=( VkDebugReportCallbackCreateInfoEXT const & rhs )
17871 {
17872 memcpy( this, &rhs, sizeof(DebugReportCallbackCreateInfoEXT) );
17873 return *this;
17874 }
17875
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017876 DebugReportCallbackCreateInfoEXT& setPNext( const void* pNext_ )
17877 {
17878 pNext = pNext_;
17879 return *this;
17880 }
17881
17882 DebugReportCallbackCreateInfoEXT& setFlags( DebugReportFlagsEXT flags_ )
17883 {
17884 flags = flags_;
17885 return *this;
17886 }
17887
17888 DebugReportCallbackCreateInfoEXT& setPfnCallback( PFN_vkDebugReportCallbackEXT pfnCallback_ )
17889 {
17890 pfnCallback = pfnCallback_;
17891 return *this;
17892 }
17893
17894 DebugReportCallbackCreateInfoEXT& setPUserData( void* pUserData_ )
17895 {
17896 pUserData = pUserData_;
17897 return *this;
17898 }
17899
17900 operator const VkDebugReportCallbackCreateInfoEXT&() const
17901 {
17902 return *reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>(this);
17903 }
17904
17905 bool operator==( DebugReportCallbackCreateInfoEXT const& rhs ) const
17906 {
17907 return ( sType == rhs.sType )
17908 && ( pNext == rhs.pNext )
17909 && ( flags == rhs.flags )
17910 && ( pfnCallback == rhs.pfnCallback )
17911 && ( pUserData == rhs.pUserData );
17912 }
17913
17914 bool operator!=( DebugReportCallbackCreateInfoEXT const& rhs ) const
17915 {
17916 return !operator==( rhs );
17917 }
17918
17919 private:
17920 StructureType sType;
17921
17922 public:
17923 const void* pNext;
17924 DebugReportFlagsEXT flags;
17925 PFN_vkDebugReportCallbackEXT pfnCallback;
17926 void* pUserData;
17927 };
17928 static_assert( sizeof( DebugReportCallbackCreateInfoEXT ) == sizeof( VkDebugReportCallbackCreateInfoEXT ), "struct and wrapper have different size!" );
17929
17930 enum class DebugReportObjectTypeEXT
17931 {
17932 eUnknown = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT,
17933 eInstance = VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT,
17934 ePhysicalDevice = VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT,
17935 eDevice = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
17936 eQueue = VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT,
17937 eSemaphore = VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT,
17938 eCommandBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT,
17939 eFence = VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT,
17940 eDeviceMemory = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT,
17941 eBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT,
17942 eImage = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT,
17943 eEvent = VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT,
17944 eQueryPool = VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT,
17945 eBufferView = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT,
17946 eImageView = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT,
17947 eShaderModule = VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT,
17948 ePipelineCache = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT,
17949 ePipelineLayout = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT,
17950 eRenderPass = VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT,
17951 ePipeline = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT,
17952 eDescriptorSetLayout = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT,
17953 eSampler = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT,
17954 eDescriptorPool = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT,
17955 eDescriptorSet = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT,
17956 eFramebuffer = VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT,
17957 eCommandPool = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT,
17958 eSurfaceKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT,
17959 eSwapchainKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT,
17960 eDebugReport = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT,
17961 eDisplayKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT,
17962 eDisplayModeKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT,
17963 eObjectTableNvx = VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT,
Mark Lobodzinski3289d762017-04-03 08:22:04 -060017964 eIndirectCommandsLayoutNvx = VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT,
17965 eDescriptorUpdateTemplateKhrKHR = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017966 };
17967
17968 struct DebugMarkerObjectNameInfoEXT
17969 {
17970 DebugMarkerObjectNameInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = 0, const char* pObjectName_ = nullptr )
17971 : sType( StructureType::eDebugMarkerObjectNameInfoEXT )
17972 , pNext( nullptr )
17973 , objectType( objectType_ )
17974 , object( object_ )
17975 , pObjectName( pObjectName_ )
17976 {
17977 }
17978
17979 DebugMarkerObjectNameInfoEXT( VkDebugMarkerObjectNameInfoEXT const & rhs )
17980 {
17981 memcpy( this, &rhs, sizeof(DebugMarkerObjectNameInfoEXT) );
17982 }
17983
17984 DebugMarkerObjectNameInfoEXT& operator=( VkDebugMarkerObjectNameInfoEXT const & rhs )
17985 {
17986 memcpy( this, &rhs, sizeof(DebugMarkerObjectNameInfoEXT) );
17987 return *this;
17988 }
17989
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017990 DebugMarkerObjectNameInfoEXT& setPNext( const void* pNext_ )
17991 {
17992 pNext = pNext_;
17993 return *this;
17994 }
17995
17996 DebugMarkerObjectNameInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
17997 {
17998 objectType = objectType_;
17999 return *this;
18000 }
18001
18002 DebugMarkerObjectNameInfoEXT& setObject( uint64_t object_ )
18003 {
18004 object = object_;
18005 return *this;
18006 }
18007
18008 DebugMarkerObjectNameInfoEXT& setPObjectName( const char* pObjectName_ )
18009 {
18010 pObjectName = pObjectName_;
18011 return *this;
18012 }
18013
18014 operator const VkDebugMarkerObjectNameInfoEXT&() const
18015 {
18016 return *reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>(this);
18017 }
18018
18019 bool operator==( DebugMarkerObjectNameInfoEXT const& rhs ) const
18020 {
18021 return ( sType == rhs.sType )
18022 && ( pNext == rhs.pNext )
18023 && ( objectType == rhs.objectType )
18024 && ( object == rhs.object )
18025 && ( pObjectName == rhs.pObjectName );
18026 }
18027
18028 bool operator!=( DebugMarkerObjectNameInfoEXT const& rhs ) const
18029 {
18030 return !operator==( rhs );
18031 }
18032
18033 private:
18034 StructureType sType;
18035
18036 public:
18037 const void* pNext;
18038 DebugReportObjectTypeEXT objectType;
18039 uint64_t object;
18040 const char* pObjectName;
18041 };
18042 static_assert( sizeof( DebugMarkerObjectNameInfoEXT ) == sizeof( VkDebugMarkerObjectNameInfoEXT ), "struct and wrapper have different size!" );
18043
18044 struct DebugMarkerObjectTagInfoEXT
18045 {
18046 DebugMarkerObjectTagInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = 0, uint64_t tagName_ = 0, size_t tagSize_ = 0, const void* pTag_ = nullptr )
18047 : sType( StructureType::eDebugMarkerObjectTagInfoEXT )
18048 , pNext( nullptr )
18049 , objectType( objectType_ )
18050 , object( object_ )
18051 , tagName( tagName_ )
18052 , tagSize( tagSize_ )
18053 , pTag( pTag_ )
18054 {
18055 }
18056
18057 DebugMarkerObjectTagInfoEXT( VkDebugMarkerObjectTagInfoEXT const & rhs )
18058 {
18059 memcpy( this, &rhs, sizeof(DebugMarkerObjectTagInfoEXT) );
18060 }
18061
18062 DebugMarkerObjectTagInfoEXT& operator=( VkDebugMarkerObjectTagInfoEXT const & rhs )
18063 {
18064 memcpy( this, &rhs, sizeof(DebugMarkerObjectTagInfoEXT) );
18065 return *this;
18066 }
18067
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018068 DebugMarkerObjectTagInfoEXT& setPNext( const void* pNext_ )
18069 {
18070 pNext = pNext_;
18071 return *this;
18072 }
18073
18074 DebugMarkerObjectTagInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
18075 {
18076 objectType = objectType_;
18077 return *this;
18078 }
18079
18080 DebugMarkerObjectTagInfoEXT& setObject( uint64_t object_ )
18081 {
18082 object = object_;
18083 return *this;
18084 }
18085
18086 DebugMarkerObjectTagInfoEXT& setTagName( uint64_t tagName_ )
18087 {
18088 tagName = tagName_;
18089 return *this;
18090 }
18091
18092 DebugMarkerObjectTagInfoEXT& setTagSize( size_t tagSize_ )
18093 {
18094 tagSize = tagSize_;
18095 return *this;
18096 }
18097
18098 DebugMarkerObjectTagInfoEXT& setPTag( const void* pTag_ )
18099 {
18100 pTag = pTag_;
18101 return *this;
18102 }
18103
18104 operator const VkDebugMarkerObjectTagInfoEXT&() const
18105 {
18106 return *reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>(this);
18107 }
18108
18109 bool operator==( DebugMarkerObjectTagInfoEXT const& rhs ) const
18110 {
18111 return ( sType == rhs.sType )
18112 && ( pNext == rhs.pNext )
18113 && ( objectType == rhs.objectType )
18114 && ( object == rhs.object )
18115 && ( tagName == rhs.tagName )
18116 && ( tagSize == rhs.tagSize )
18117 && ( pTag == rhs.pTag );
18118 }
18119
18120 bool operator!=( DebugMarkerObjectTagInfoEXT const& rhs ) const
18121 {
18122 return !operator==( rhs );
18123 }
18124
18125 private:
18126 StructureType sType;
18127
18128 public:
18129 const void* pNext;
18130 DebugReportObjectTypeEXT objectType;
18131 uint64_t object;
18132 uint64_t tagName;
18133 size_t tagSize;
18134 const void* pTag;
18135 };
18136 static_assert( sizeof( DebugMarkerObjectTagInfoEXT ) == sizeof( VkDebugMarkerObjectTagInfoEXT ), "struct and wrapper have different size!" );
18137
18138 enum class DebugReportErrorEXT
18139 {
18140 eNone = VK_DEBUG_REPORT_ERROR_NONE_EXT,
18141 eCallbackRef = VK_DEBUG_REPORT_ERROR_CALLBACK_REF_EXT
18142 };
18143
18144 enum class RasterizationOrderAMD
18145 {
18146 eStrict = VK_RASTERIZATION_ORDER_STRICT_AMD,
18147 eRelaxed = VK_RASTERIZATION_ORDER_RELAXED_AMD
18148 };
18149
18150 struct PipelineRasterizationStateRasterizationOrderAMD
18151 {
18152 PipelineRasterizationStateRasterizationOrderAMD( RasterizationOrderAMD rasterizationOrder_ = RasterizationOrderAMD::eStrict )
18153 : sType( StructureType::ePipelineRasterizationStateRasterizationOrderAMD )
18154 , pNext( nullptr )
18155 , rasterizationOrder( rasterizationOrder_ )
18156 {
18157 }
18158
18159 PipelineRasterizationStateRasterizationOrderAMD( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
18160 {
18161 memcpy( this, &rhs, sizeof(PipelineRasterizationStateRasterizationOrderAMD) );
18162 }
18163
18164 PipelineRasterizationStateRasterizationOrderAMD& operator=( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
18165 {
18166 memcpy( this, &rhs, sizeof(PipelineRasterizationStateRasterizationOrderAMD) );
18167 return *this;
18168 }
18169
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018170 PipelineRasterizationStateRasterizationOrderAMD& setPNext( const void* pNext_ )
18171 {
18172 pNext = pNext_;
18173 return *this;
18174 }
18175
18176 PipelineRasterizationStateRasterizationOrderAMD& setRasterizationOrder( RasterizationOrderAMD rasterizationOrder_ )
18177 {
18178 rasterizationOrder = rasterizationOrder_;
18179 return *this;
18180 }
18181
18182 operator const VkPipelineRasterizationStateRasterizationOrderAMD&() const
18183 {
18184 return *reinterpret_cast<const VkPipelineRasterizationStateRasterizationOrderAMD*>(this);
18185 }
18186
18187 bool operator==( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
18188 {
18189 return ( sType == rhs.sType )
18190 && ( pNext == rhs.pNext )
18191 && ( rasterizationOrder == rhs.rasterizationOrder );
18192 }
18193
18194 bool operator!=( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
18195 {
18196 return !operator==( rhs );
18197 }
18198
18199 private:
18200 StructureType sType;
18201
18202 public:
18203 const void* pNext;
18204 RasterizationOrderAMD rasterizationOrder;
18205 };
18206 static_assert( sizeof( PipelineRasterizationStateRasterizationOrderAMD ) == sizeof( VkPipelineRasterizationStateRasterizationOrderAMD ), "struct and wrapper have different size!" );
18207
18208 enum class ExternalMemoryHandleTypeFlagBitsNV
18209 {
18210 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV,
18211 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV,
18212 eD3D11Image = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV,
18213 eD3D11ImageKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV
18214 };
18215
18216 using ExternalMemoryHandleTypeFlagsNV = Flags<ExternalMemoryHandleTypeFlagBitsNV, VkExternalMemoryHandleTypeFlagsNV>;
18217
18218 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator|( ExternalMemoryHandleTypeFlagBitsNV bit0, ExternalMemoryHandleTypeFlagBitsNV bit1 )
18219 {
18220 return ExternalMemoryHandleTypeFlagsNV( bit0 ) | bit1;
18221 }
18222
18223 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator~( ExternalMemoryHandleTypeFlagBitsNV bits )
18224 {
18225 return ~( ExternalMemoryHandleTypeFlagsNV( bits ) );
18226 }
18227
18228 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsNV>
18229 {
18230 enum
18231 {
18232 allFlags = VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt)
18233 };
18234 };
18235
18236 struct ExternalMemoryImageCreateInfoNV
18237 {
18238 ExternalMemoryImageCreateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
18239 : sType( StructureType::eExternalMemoryImageCreateInfoNV )
18240 , pNext( nullptr )
18241 , handleTypes( handleTypes_ )
18242 {
18243 }
18244
18245 ExternalMemoryImageCreateInfoNV( VkExternalMemoryImageCreateInfoNV const & rhs )
18246 {
18247 memcpy( this, &rhs, sizeof(ExternalMemoryImageCreateInfoNV) );
18248 }
18249
18250 ExternalMemoryImageCreateInfoNV& operator=( VkExternalMemoryImageCreateInfoNV const & rhs )
18251 {
18252 memcpy( this, &rhs, sizeof(ExternalMemoryImageCreateInfoNV) );
18253 return *this;
18254 }
18255
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018256 ExternalMemoryImageCreateInfoNV& setPNext( const void* pNext_ )
18257 {
18258 pNext = pNext_;
18259 return *this;
18260 }
18261
18262 ExternalMemoryImageCreateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
18263 {
18264 handleTypes = handleTypes_;
18265 return *this;
18266 }
18267
18268 operator const VkExternalMemoryImageCreateInfoNV&() const
18269 {
18270 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoNV*>(this);
18271 }
18272
18273 bool operator==( ExternalMemoryImageCreateInfoNV const& rhs ) const
18274 {
18275 return ( sType == rhs.sType )
18276 && ( pNext == rhs.pNext )
18277 && ( handleTypes == rhs.handleTypes );
18278 }
18279
18280 bool operator!=( ExternalMemoryImageCreateInfoNV const& rhs ) const
18281 {
18282 return !operator==( rhs );
18283 }
18284
18285 private:
18286 StructureType sType;
18287
18288 public:
18289 const void* pNext;
18290 ExternalMemoryHandleTypeFlagsNV handleTypes;
18291 };
18292 static_assert( sizeof( ExternalMemoryImageCreateInfoNV ) == sizeof( VkExternalMemoryImageCreateInfoNV ), "struct and wrapper have different size!" );
18293
18294 struct ExportMemoryAllocateInfoNV
18295 {
18296 ExportMemoryAllocateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
18297 : sType( StructureType::eExportMemoryAllocateInfoNV )
18298 , pNext( nullptr )
18299 , handleTypes( handleTypes_ )
18300 {
18301 }
18302
18303 ExportMemoryAllocateInfoNV( VkExportMemoryAllocateInfoNV const & rhs )
18304 {
18305 memcpy( this, &rhs, sizeof(ExportMemoryAllocateInfoNV) );
18306 }
18307
18308 ExportMemoryAllocateInfoNV& operator=( VkExportMemoryAllocateInfoNV const & rhs )
18309 {
18310 memcpy( this, &rhs, sizeof(ExportMemoryAllocateInfoNV) );
18311 return *this;
18312 }
18313
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018314 ExportMemoryAllocateInfoNV& setPNext( const void* pNext_ )
18315 {
18316 pNext = pNext_;
18317 return *this;
18318 }
18319
18320 ExportMemoryAllocateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
18321 {
18322 handleTypes = handleTypes_;
18323 return *this;
18324 }
18325
18326 operator const VkExportMemoryAllocateInfoNV&() const
18327 {
18328 return *reinterpret_cast<const VkExportMemoryAllocateInfoNV*>(this);
18329 }
18330
18331 bool operator==( ExportMemoryAllocateInfoNV const& rhs ) const
18332 {
18333 return ( sType == rhs.sType )
18334 && ( pNext == rhs.pNext )
18335 && ( handleTypes == rhs.handleTypes );
18336 }
18337
18338 bool operator!=( ExportMemoryAllocateInfoNV const& rhs ) const
18339 {
18340 return !operator==( rhs );
18341 }
18342
18343 private:
18344 StructureType sType;
18345
18346 public:
18347 const void* pNext;
18348 ExternalMemoryHandleTypeFlagsNV handleTypes;
18349 };
18350 static_assert( sizeof( ExportMemoryAllocateInfoNV ) == sizeof( VkExportMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
18351
18352#ifdef VK_USE_PLATFORM_WIN32_KHR
18353 struct ImportMemoryWin32HandleInfoNV
18354 {
18355 ImportMemoryWin32HandleInfoNV( ExternalMemoryHandleTypeFlagsNV handleType_ = ExternalMemoryHandleTypeFlagsNV(), HANDLE handle_ = 0 )
18356 : sType( StructureType::eImportMemoryWin32HandleInfoNV )
18357 , pNext( nullptr )
18358 , handleType( handleType_ )
18359 , handle( handle_ )
18360 {
18361 }
18362
18363 ImportMemoryWin32HandleInfoNV( VkImportMemoryWin32HandleInfoNV const & rhs )
18364 {
18365 memcpy( this, &rhs, sizeof(ImportMemoryWin32HandleInfoNV) );
18366 }
18367
18368 ImportMemoryWin32HandleInfoNV& operator=( VkImportMemoryWin32HandleInfoNV const & rhs )
18369 {
18370 memcpy( this, &rhs, sizeof(ImportMemoryWin32HandleInfoNV) );
18371 return *this;
18372 }
18373
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018374 ImportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
18375 {
18376 pNext = pNext_;
18377 return *this;
18378 }
18379
18380 ImportMemoryWin32HandleInfoNV& setHandleType( ExternalMemoryHandleTypeFlagsNV handleType_ )
18381 {
18382 handleType = handleType_;
18383 return *this;
18384 }
18385
18386 ImportMemoryWin32HandleInfoNV& setHandle( HANDLE handle_ )
18387 {
18388 handle = handle_;
18389 return *this;
18390 }
18391
18392 operator const VkImportMemoryWin32HandleInfoNV&() const
18393 {
18394 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoNV*>(this);
18395 }
18396
18397 bool operator==( ImportMemoryWin32HandleInfoNV const& rhs ) const
18398 {
18399 return ( sType == rhs.sType )
18400 && ( pNext == rhs.pNext )
18401 && ( handleType == rhs.handleType )
18402 && ( handle == rhs.handle );
18403 }
18404
18405 bool operator!=( ImportMemoryWin32HandleInfoNV const& rhs ) const
18406 {
18407 return !operator==( rhs );
18408 }
18409
18410 private:
18411 StructureType sType;
18412
18413 public:
18414 const void* pNext;
18415 ExternalMemoryHandleTypeFlagsNV handleType;
18416 HANDLE handle;
18417 };
18418 static_assert( sizeof( ImportMemoryWin32HandleInfoNV ) == sizeof( VkImportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
18419#endif /*VK_USE_PLATFORM_WIN32_KHR*/
18420
18421 enum class ExternalMemoryFeatureFlagBitsNV
18422 {
18423 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV,
18424 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV,
18425 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV
18426 };
18427
18428 using ExternalMemoryFeatureFlagsNV = Flags<ExternalMemoryFeatureFlagBitsNV, VkExternalMemoryFeatureFlagsNV>;
18429
18430 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator|( ExternalMemoryFeatureFlagBitsNV bit0, ExternalMemoryFeatureFlagBitsNV bit1 )
18431 {
18432 return ExternalMemoryFeatureFlagsNV( bit0 ) | bit1;
18433 }
18434
18435 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator~( ExternalMemoryFeatureFlagBitsNV bits )
18436 {
18437 return ~( ExternalMemoryFeatureFlagsNV( bits ) );
18438 }
18439
18440 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsNV>
18441 {
18442 enum
18443 {
18444 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eImportable)
18445 };
18446 };
18447
18448 struct ExternalImageFormatPropertiesNV
18449 {
18450 operator const VkExternalImageFormatPropertiesNV&() const
18451 {
18452 return *reinterpret_cast<const VkExternalImageFormatPropertiesNV*>(this);
18453 }
18454
18455 bool operator==( ExternalImageFormatPropertiesNV const& rhs ) const
18456 {
18457 return ( imageFormatProperties == rhs.imageFormatProperties )
18458 && ( externalMemoryFeatures == rhs.externalMemoryFeatures )
18459 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
18460 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
18461 }
18462
18463 bool operator!=( ExternalImageFormatPropertiesNV const& rhs ) const
18464 {
18465 return !operator==( rhs );
18466 }
18467
18468 ImageFormatProperties imageFormatProperties;
18469 ExternalMemoryFeatureFlagsNV externalMemoryFeatures;
18470 ExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes;
18471 ExternalMemoryHandleTypeFlagsNV compatibleHandleTypes;
18472 };
18473 static_assert( sizeof( ExternalImageFormatPropertiesNV ) == sizeof( VkExternalImageFormatPropertiesNV ), "struct and wrapper have different size!" );
18474
18475 enum class ValidationCheckEXT
18476 {
18477 eAll = VK_VALIDATION_CHECK_ALL_EXT
18478 };
18479
18480 struct ValidationFlagsEXT
18481 {
18482 ValidationFlagsEXT( uint32_t disabledValidationCheckCount_ = 0, ValidationCheckEXT* pDisabledValidationChecks_ = nullptr )
18483 : sType( StructureType::eValidationFlagsEXT )
18484 , pNext( nullptr )
18485 , disabledValidationCheckCount( disabledValidationCheckCount_ )
18486 , pDisabledValidationChecks( pDisabledValidationChecks_ )
18487 {
18488 }
18489
18490 ValidationFlagsEXT( VkValidationFlagsEXT const & rhs )
18491 {
18492 memcpy( this, &rhs, sizeof(ValidationFlagsEXT) );
18493 }
18494
18495 ValidationFlagsEXT& operator=( VkValidationFlagsEXT const & rhs )
18496 {
18497 memcpy( this, &rhs, sizeof(ValidationFlagsEXT) );
18498 return *this;
18499 }
18500
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018501 ValidationFlagsEXT& setPNext( const void* pNext_ )
18502 {
18503 pNext = pNext_;
18504 return *this;
18505 }
18506
18507 ValidationFlagsEXT& setDisabledValidationCheckCount( uint32_t disabledValidationCheckCount_ )
18508 {
18509 disabledValidationCheckCount = disabledValidationCheckCount_;
18510 return *this;
18511 }
18512
18513 ValidationFlagsEXT& setPDisabledValidationChecks( ValidationCheckEXT* pDisabledValidationChecks_ )
18514 {
18515 pDisabledValidationChecks = pDisabledValidationChecks_;
18516 return *this;
18517 }
18518
18519 operator const VkValidationFlagsEXT&() const
18520 {
18521 return *reinterpret_cast<const VkValidationFlagsEXT*>(this);
18522 }
18523
18524 bool operator==( ValidationFlagsEXT const& rhs ) const
18525 {
18526 return ( sType == rhs.sType )
18527 && ( pNext == rhs.pNext )
18528 && ( disabledValidationCheckCount == rhs.disabledValidationCheckCount )
18529 && ( pDisabledValidationChecks == rhs.pDisabledValidationChecks );
18530 }
18531
18532 bool operator!=( ValidationFlagsEXT const& rhs ) const
18533 {
18534 return !operator==( rhs );
18535 }
18536
18537 private:
18538 StructureType sType;
18539
18540 public:
18541 const void* pNext;
18542 uint32_t disabledValidationCheckCount;
18543 ValidationCheckEXT* pDisabledValidationChecks;
18544 };
18545 static_assert( sizeof( ValidationFlagsEXT ) == sizeof( VkValidationFlagsEXT ), "struct and wrapper have different size!" );
18546
18547 enum class IndirectCommandsLayoutUsageFlagBitsNVX
18548 {
18549 eUnorderedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX,
18550 eSparseSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX,
18551 eEmptyExecutions = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX,
18552 eIndexedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX
18553 };
18554
18555 using IndirectCommandsLayoutUsageFlagsNVX = Flags<IndirectCommandsLayoutUsageFlagBitsNVX, VkIndirectCommandsLayoutUsageFlagsNVX>;
18556
18557 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator|( IndirectCommandsLayoutUsageFlagBitsNVX bit0, IndirectCommandsLayoutUsageFlagBitsNVX bit1 )
18558 {
18559 return IndirectCommandsLayoutUsageFlagsNVX( bit0 ) | bit1;
18560 }
18561
18562 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator~( IndirectCommandsLayoutUsageFlagBitsNVX bits )
18563 {
18564 return ~( IndirectCommandsLayoutUsageFlagsNVX( bits ) );
18565 }
18566
18567 template <> struct FlagTraits<IndirectCommandsLayoutUsageFlagBitsNVX>
18568 {
18569 enum
18570 {
18571 allFlags = VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences)
18572 };
18573 };
18574
18575 enum class ObjectEntryUsageFlagBitsNVX
18576 {
18577 eGraphics = VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX,
18578 eCompute = VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX
18579 };
18580
18581 using ObjectEntryUsageFlagsNVX = Flags<ObjectEntryUsageFlagBitsNVX, VkObjectEntryUsageFlagsNVX>;
18582
18583 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator|( ObjectEntryUsageFlagBitsNVX bit0, ObjectEntryUsageFlagBitsNVX bit1 )
18584 {
18585 return ObjectEntryUsageFlagsNVX( bit0 ) | bit1;
18586 }
18587
18588 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator~( ObjectEntryUsageFlagBitsNVX bits )
18589 {
18590 return ~( ObjectEntryUsageFlagsNVX( bits ) );
18591 }
18592
18593 template <> struct FlagTraits<ObjectEntryUsageFlagBitsNVX>
18594 {
18595 enum
18596 {
18597 allFlags = VkFlags(ObjectEntryUsageFlagBitsNVX::eGraphics) | VkFlags(ObjectEntryUsageFlagBitsNVX::eCompute)
18598 };
18599 };
18600
18601 enum class IndirectCommandsTokenTypeNVX
18602 {
18603 eVkIndirectCommandsTokenPipeline = VK_INDIRECT_COMMANDS_TOKEN_PIPELINE_NVX,
18604 eVkIndirectCommandsTokenDescriptorSet = VK_INDIRECT_COMMANDS_TOKEN_DESCRIPTOR_SET_NVX,
18605 eVkIndirectCommandsTokenIndexBuffer = VK_INDIRECT_COMMANDS_TOKEN_INDEX_BUFFER_NVX,
18606 eVkIndirectCommandsTokenVertexBuffer = VK_INDIRECT_COMMANDS_TOKEN_VERTEX_BUFFER_NVX,
18607 eVkIndirectCommandsTokenPushConstant = VK_INDIRECT_COMMANDS_TOKEN_PUSH_CONSTANT_NVX,
18608 eVkIndirectCommandsTokenDrawIndexed = VK_INDIRECT_COMMANDS_TOKEN_DRAW_INDEXED_NVX,
18609 eVkIndirectCommandsTokenDraw = VK_INDIRECT_COMMANDS_TOKEN_DRAW_NVX,
18610 eVkIndirectCommandsTokenDispatch = VK_INDIRECT_COMMANDS_TOKEN_DISPATCH_NVX
18611 };
18612
18613 struct IndirectCommandsTokenNVX
18614 {
18615 IndirectCommandsTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenPipeline, Buffer buffer_ = Buffer(), DeviceSize offset_ = 0 )
18616 : tokenType( tokenType_ )
18617 , buffer( buffer_ )
18618 , offset( offset_ )
18619 {
18620 }
18621
18622 IndirectCommandsTokenNVX( VkIndirectCommandsTokenNVX const & rhs )
18623 {
18624 memcpy( this, &rhs, sizeof(IndirectCommandsTokenNVX) );
18625 }
18626
18627 IndirectCommandsTokenNVX& operator=( VkIndirectCommandsTokenNVX const & rhs )
18628 {
18629 memcpy( this, &rhs, sizeof(IndirectCommandsTokenNVX) );
18630 return *this;
18631 }
18632
18633 IndirectCommandsTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
18634 {
18635 tokenType = tokenType_;
18636 return *this;
18637 }
18638
18639 IndirectCommandsTokenNVX& setBuffer( Buffer buffer_ )
18640 {
18641 buffer = buffer_;
18642 return *this;
18643 }
18644
18645 IndirectCommandsTokenNVX& setOffset( DeviceSize offset_ )
18646 {
18647 offset = offset_;
18648 return *this;
18649 }
18650
18651 operator const VkIndirectCommandsTokenNVX&() const
18652 {
18653 return *reinterpret_cast<const VkIndirectCommandsTokenNVX*>(this);
18654 }
18655
18656 bool operator==( IndirectCommandsTokenNVX const& rhs ) const
18657 {
18658 return ( tokenType == rhs.tokenType )
18659 && ( buffer == rhs.buffer )
18660 && ( offset == rhs.offset );
18661 }
18662
18663 bool operator!=( IndirectCommandsTokenNVX const& rhs ) const
18664 {
18665 return !operator==( rhs );
18666 }
18667
18668 IndirectCommandsTokenTypeNVX tokenType;
18669 Buffer buffer;
18670 DeviceSize offset;
18671 };
18672 static_assert( sizeof( IndirectCommandsTokenNVX ) == sizeof( VkIndirectCommandsTokenNVX ), "struct and wrapper have different size!" );
18673
18674 struct IndirectCommandsLayoutTokenNVX
18675 {
18676 IndirectCommandsLayoutTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenPipeline, uint32_t bindingUnit_ = 0, uint32_t dynamicCount_ = 0, uint32_t divisor_ = 0 )
18677 : tokenType( tokenType_ )
18678 , bindingUnit( bindingUnit_ )
18679 , dynamicCount( dynamicCount_ )
18680 , divisor( divisor_ )
18681 {
18682 }
18683
18684 IndirectCommandsLayoutTokenNVX( VkIndirectCommandsLayoutTokenNVX const & rhs )
18685 {
18686 memcpy( this, &rhs, sizeof(IndirectCommandsLayoutTokenNVX) );
18687 }
18688
18689 IndirectCommandsLayoutTokenNVX& operator=( VkIndirectCommandsLayoutTokenNVX const & rhs )
18690 {
18691 memcpy( this, &rhs, sizeof(IndirectCommandsLayoutTokenNVX) );
18692 return *this;
18693 }
18694
18695 IndirectCommandsLayoutTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
18696 {
18697 tokenType = tokenType_;
18698 return *this;
18699 }
18700
18701 IndirectCommandsLayoutTokenNVX& setBindingUnit( uint32_t bindingUnit_ )
18702 {
18703 bindingUnit = bindingUnit_;
18704 return *this;
18705 }
18706
18707 IndirectCommandsLayoutTokenNVX& setDynamicCount( uint32_t dynamicCount_ )
18708 {
18709 dynamicCount = dynamicCount_;
18710 return *this;
18711 }
18712
18713 IndirectCommandsLayoutTokenNVX& setDivisor( uint32_t divisor_ )
18714 {
18715 divisor = divisor_;
18716 return *this;
18717 }
18718
18719 operator const VkIndirectCommandsLayoutTokenNVX&() const
18720 {
18721 return *reinterpret_cast<const VkIndirectCommandsLayoutTokenNVX*>(this);
18722 }
18723
18724 bool operator==( IndirectCommandsLayoutTokenNVX const& rhs ) const
18725 {
18726 return ( tokenType == rhs.tokenType )
18727 && ( bindingUnit == rhs.bindingUnit )
18728 && ( dynamicCount == rhs.dynamicCount )
18729 && ( divisor == rhs.divisor );
18730 }
18731
18732 bool operator!=( IndirectCommandsLayoutTokenNVX const& rhs ) const
18733 {
18734 return !operator==( rhs );
18735 }
18736
18737 IndirectCommandsTokenTypeNVX tokenType;
18738 uint32_t bindingUnit;
18739 uint32_t dynamicCount;
18740 uint32_t divisor;
18741 };
18742 static_assert( sizeof( IndirectCommandsLayoutTokenNVX ) == sizeof( VkIndirectCommandsLayoutTokenNVX ), "struct and wrapper have different size!" );
18743
18744 struct IndirectCommandsLayoutCreateInfoNVX
18745 {
18746 IndirectCommandsLayoutCreateInfoNVX( PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics, IndirectCommandsLayoutUsageFlagsNVX flags_ = IndirectCommandsLayoutUsageFlagsNVX(), uint32_t tokenCount_ = 0, const IndirectCommandsLayoutTokenNVX* pTokens_ = nullptr )
18747 : sType( StructureType::eIndirectCommandsLayoutCreateInfoNVX )
18748 , pNext( nullptr )
18749 , pipelineBindPoint( pipelineBindPoint_ )
18750 , flags( flags_ )
18751 , tokenCount( tokenCount_ )
18752 , pTokens( pTokens_ )
18753 {
18754 }
18755
18756 IndirectCommandsLayoutCreateInfoNVX( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
18757 {
18758 memcpy( this, &rhs, sizeof(IndirectCommandsLayoutCreateInfoNVX) );
18759 }
18760
18761 IndirectCommandsLayoutCreateInfoNVX& operator=( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
18762 {
18763 memcpy( this, &rhs, sizeof(IndirectCommandsLayoutCreateInfoNVX) );
18764 return *this;
18765 }
18766
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018767 IndirectCommandsLayoutCreateInfoNVX& setPNext( const void* pNext_ )
18768 {
18769 pNext = pNext_;
18770 return *this;
18771 }
18772
18773 IndirectCommandsLayoutCreateInfoNVX& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
18774 {
18775 pipelineBindPoint = pipelineBindPoint_;
18776 return *this;
18777 }
18778
18779 IndirectCommandsLayoutCreateInfoNVX& setFlags( IndirectCommandsLayoutUsageFlagsNVX flags_ )
18780 {
18781 flags = flags_;
18782 return *this;
18783 }
18784
18785 IndirectCommandsLayoutCreateInfoNVX& setTokenCount( uint32_t tokenCount_ )
18786 {
18787 tokenCount = tokenCount_;
18788 return *this;
18789 }
18790
18791 IndirectCommandsLayoutCreateInfoNVX& setPTokens( const IndirectCommandsLayoutTokenNVX* pTokens_ )
18792 {
18793 pTokens = pTokens_;
18794 return *this;
18795 }
18796
18797 operator const VkIndirectCommandsLayoutCreateInfoNVX&() const
18798 {
18799 return *reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>(this);
18800 }
18801
18802 bool operator==( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
18803 {
18804 return ( sType == rhs.sType )
18805 && ( pNext == rhs.pNext )
18806 && ( pipelineBindPoint == rhs.pipelineBindPoint )
18807 && ( flags == rhs.flags )
18808 && ( tokenCount == rhs.tokenCount )
18809 && ( pTokens == rhs.pTokens );
18810 }
18811
18812 bool operator!=( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
18813 {
18814 return !operator==( rhs );
18815 }
18816
18817 private:
18818 StructureType sType;
18819
18820 public:
18821 const void* pNext;
18822 PipelineBindPoint pipelineBindPoint;
18823 IndirectCommandsLayoutUsageFlagsNVX flags;
18824 uint32_t tokenCount;
18825 const IndirectCommandsLayoutTokenNVX* pTokens;
18826 };
18827 static_assert( sizeof( IndirectCommandsLayoutCreateInfoNVX ) == sizeof( VkIndirectCommandsLayoutCreateInfoNVX ), "struct and wrapper have different size!" );
18828
18829 enum class ObjectEntryTypeNVX
18830 {
18831 eVkObjectEntryDescriptorSet = VK_OBJECT_ENTRY_DESCRIPTOR_SET_NVX,
18832 eVkObjectEntryPipeline = VK_OBJECT_ENTRY_PIPELINE_NVX,
18833 eVkObjectEntryIndexBuffer = VK_OBJECT_ENTRY_INDEX_BUFFER_NVX,
18834 eVkObjectEntryVertexBuffer = VK_OBJECT_ENTRY_VERTEX_BUFFER_NVX,
18835 eVkObjectEntryPushConstant = VK_OBJECT_ENTRY_PUSH_CONSTANT_NVX
18836 };
18837
18838 struct ObjectTableCreateInfoNVX
18839 {
18840 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 )
18841 : sType( StructureType::eObjectTableCreateInfoNVX )
18842 , pNext( nullptr )
18843 , objectCount( objectCount_ )
18844 , pObjectEntryTypes( pObjectEntryTypes_ )
18845 , pObjectEntryCounts( pObjectEntryCounts_ )
18846 , pObjectEntryUsageFlags( pObjectEntryUsageFlags_ )
18847 , maxUniformBuffersPerDescriptor( maxUniformBuffersPerDescriptor_ )
18848 , maxStorageBuffersPerDescriptor( maxStorageBuffersPerDescriptor_ )
18849 , maxStorageImagesPerDescriptor( maxStorageImagesPerDescriptor_ )
18850 , maxSampledImagesPerDescriptor( maxSampledImagesPerDescriptor_ )
18851 , maxPipelineLayouts( maxPipelineLayouts_ )
18852 {
18853 }
18854
18855 ObjectTableCreateInfoNVX( VkObjectTableCreateInfoNVX const & rhs )
18856 {
18857 memcpy( this, &rhs, sizeof(ObjectTableCreateInfoNVX) );
18858 }
18859
18860 ObjectTableCreateInfoNVX& operator=( VkObjectTableCreateInfoNVX const & rhs )
18861 {
18862 memcpy( this, &rhs, sizeof(ObjectTableCreateInfoNVX) );
18863 return *this;
18864 }
18865
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018866 ObjectTableCreateInfoNVX& setPNext( const void* pNext_ )
18867 {
18868 pNext = pNext_;
18869 return *this;
18870 }
18871
18872 ObjectTableCreateInfoNVX& setObjectCount( uint32_t objectCount_ )
18873 {
18874 objectCount = objectCount_;
18875 return *this;
18876 }
18877
18878 ObjectTableCreateInfoNVX& setPObjectEntryTypes( const ObjectEntryTypeNVX* pObjectEntryTypes_ )
18879 {
18880 pObjectEntryTypes = pObjectEntryTypes_;
18881 return *this;
18882 }
18883
18884 ObjectTableCreateInfoNVX& setPObjectEntryCounts( const uint32_t* pObjectEntryCounts_ )
18885 {
18886 pObjectEntryCounts = pObjectEntryCounts_;
18887 return *this;
18888 }
18889
18890 ObjectTableCreateInfoNVX& setPObjectEntryUsageFlags( const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags_ )
18891 {
18892 pObjectEntryUsageFlags = pObjectEntryUsageFlags_;
18893 return *this;
18894 }
18895
18896 ObjectTableCreateInfoNVX& setMaxUniformBuffersPerDescriptor( uint32_t maxUniformBuffersPerDescriptor_ )
18897 {
18898 maxUniformBuffersPerDescriptor = maxUniformBuffersPerDescriptor_;
18899 return *this;
18900 }
18901
18902 ObjectTableCreateInfoNVX& setMaxStorageBuffersPerDescriptor( uint32_t maxStorageBuffersPerDescriptor_ )
18903 {
18904 maxStorageBuffersPerDescriptor = maxStorageBuffersPerDescriptor_;
18905 return *this;
18906 }
18907
18908 ObjectTableCreateInfoNVX& setMaxStorageImagesPerDescriptor( uint32_t maxStorageImagesPerDescriptor_ )
18909 {
18910 maxStorageImagesPerDescriptor = maxStorageImagesPerDescriptor_;
18911 return *this;
18912 }
18913
18914 ObjectTableCreateInfoNVX& setMaxSampledImagesPerDescriptor( uint32_t maxSampledImagesPerDescriptor_ )
18915 {
18916 maxSampledImagesPerDescriptor = maxSampledImagesPerDescriptor_;
18917 return *this;
18918 }
18919
18920 ObjectTableCreateInfoNVX& setMaxPipelineLayouts( uint32_t maxPipelineLayouts_ )
18921 {
18922 maxPipelineLayouts = maxPipelineLayouts_;
18923 return *this;
18924 }
18925
18926 operator const VkObjectTableCreateInfoNVX&() const
18927 {
18928 return *reinterpret_cast<const VkObjectTableCreateInfoNVX*>(this);
18929 }
18930
18931 bool operator==( ObjectTableCreateInfoNVX const& rhs ) const
18932 {
18933 return ( sType == rhs.sType )
18934 && ( pNext == rhs.pNext )
18935 && ( objectCount == rhs.objectCount )
18936 && ( pObjectEntryTypes == rhs.pObjectEntryTypes )
18937 && ( pObjectEntryCounts == rhs.pObjectEntryCounts )
18938 && ( pObjectEntryUsageFlags == rhs.pObjectEntryUsageFlags )
18939 && ( maxUniformBuffersPerDescriptor == rhs.maxUniformBuffersPerDescriptor )
18940 && ( maxStorageBuffersPerDescriptor == rhs.maxStorageBuffersPerDescriptor )
18941 && ( maxStorageImagesPerDescriptor == rhs.maxStorageImagesPerDescriptor )
18942 && ( maxSampledImagesPerDescriptor == rhs.maxSampledImagesPerDescriptor )
18943 && ( maxPipelineLayouts == rhs.maxPipelineLayouts );
18944 }
18945
18946 bool operator!=( ObjectTableCreateInfoNVX const& rhs ) const
18947 {
18948 return !operator==( rhs );
18949 }
18950
18951 private:
18952 StructureType sType;
18953
18954 public:
18955 const void* pNext;
18956 uint32_t objectCount;
18957 const ObjectEntryTypeNVX* pObjectEntryTypes;
18958 const uint32_t* pObjectEntryCounts;
18959 const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags;
18960 uint32_t maxUniformBuffersPerDescriptor;
18961 uint32_t maxStorageBuffersPerDescriptor;
18962 uint32_t maxStorageImagesPerDescriptor;
18963 uint32_t maxSampledImagesPerDescriptor;
18964 uint32_t maxPipelineLayouts;
18965 };
18966 static_assert( sizeof( ObjectTableCreateInfoNVX ) == sizeof( VkObjectTableCreateInfoNVX ), "struct and wrapper have different size!" );
18967
18968 struct ObjectTableEntryNVX
18969 {
18970 ObjectTableEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX() )
18971 : type( type_ )
18972 , flags( flags_ )
18973 {
18974 }
18975
18976 ObjectTableEntryNVX( VkObjectTableEntryNVX const & rhs )
18977 {
18978 memcpy( this, &rhs, sizeof(ObjectTableEntryNVX) );
18979 }
18980
18981 ObjectTableEntryNVX& operator=( VkObjectTableEntryNVX const & rhs )
18982 {
18983 memcpy( this, &rhs, sizeof(ObjectTableEntryNVX) );
18984 return *this;
18985 }
18986
18987 ObjectTableEntryNVX& setType( ObjectEntryTypeNVX type_ )
18988 {
18989 type = type_;
18990 return *this;
18991 }
18992
18993 ObjectTableEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
18994 {
18995 flags = flags_;
18996 return *this;
18997 }
18998
18999 operator const VkObjectTableEntryNVX&() const
19000 {
19001 return *reinterpret_cast<const VkObjectTableEntryNVX*>(this);
19002 }
19003
19004 bool operator==( ObjectTableEntryNVX const& rhs ) const
19005 {
19006 return ( type == rhs.type )
19007 && ( flags == rhs.flags );
19008 }
19009
19010 bool operator!=( ObjectTableEntryNVX const& rhs ) const
19011 {
19012 return !operator==( rhs );
19013 }
19014
19015 ObjectEntryTypeNVX type;
19016 ObjectEntryUsageFlagsNVX flags;
19017 };
19018 static_assert( sizeof( ObjectTableEntryNVX ) == sizeof( VkObjectTableEntryNVX ), "struct and wrapper have different size!" );
19019
19020 struct ObjectTablePipelineEntryNVX
19021 {
19022 ObjectTablePipelineEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Pipeline pipeline_ = Pipeline() )
19023 : type( type_ )
19024 , flags( flags_ )
19025 , pipeline( pipeline_ )
19026 {
19027 }
19028
19029 ObjectTablePipelineEntryNVX( VkObjectTablePipelineEntryNVX const & rhs )
19030 {
19031 memcpy( this, &rhs, sizeof(ObjectTablePipelineEntryNVX) );
19032 }
19033
19034 ObjectTablePipelineEntryNVX& operator=( VkObjectTablePipelineEntryNVX const & rhs )
19035 {
19036 memcpy( this, &rhs, sizeof(ObjectTablePipelineEntryNVX) );
19037 return *this;
19038 }
19039
19040 ObjectTablePipelineEntryNVX& setType( ObjectEntryTypeNVX type_ )
19041 {
19042 type = type_;
19043 return *this;
19044 }
19045
19046 ObjectTablePipelineEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19047 {
19048 flags = flags_;
19049 return *this;
19050 }
19051
19052 ObjectTablePipelineEntryNVX& setPipeline( Pipeline pipeline_ )
19053 {
19054 pipeline = pipeline_;
19055 return *this;
19056 }
19057
19058 operator const VkObjectTablePipelineEntryNVX&() const
19059 {
19060 return *reinterpret_cast<const VkObjectTablePipelineEntryNVX*>(this);
19061 }
19062
19063 bool operator==( ObjectTablePipelineEntryNVX const& rhs ) const
19064 {
19065 return ( type == rhs.type )
19066 && ( flags == rhs.flags )
19067 && ( pipeline == rhs.pipeline );
19068 }
19069
19070 bool operator!=( ObjectTablePipelineEntryNVX const& rhs ) const
19071 {
19072 return !operator==( rhs );
19073 }
19074
19075 ObjectEntryTypeNVX type;
19076 ObjectEntryUsageFlagsNVX flags;
19077 Pipeline pipeline;
19078 };
19079 static_assert( sizeof( ObjectTablePipelineEntryNVX ) == sizeof( VkObjectTablePipelineEntryNVX ), "struct and wrapper have different size!" );
19080
19081 struct ObjectTableDescriptorSetEntryNVX
19082 {
19083 ObjectTableDescriptorSetEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), PipelineLayout pipelineLayout_ = PipelineLayout(), DescriptorSet descriptorSet_ = DescriptorSet() )
19084 : type( type_ )
19085 , flags( flags_ )
19086 , pipelineLayout( pipelineLayout_ )
19087 , descriptorSet( descriptorSet_ )
19088 {
19089 }
19090
19091 ObjectTableDescriptorSetEntryNVX( VkObjectTableDescriptorSetEntryNVX const & rhs )
19092 {
19093 memcpy( this, &rhs, sizeof(ObjectTableDescriptorSetEntryNVX) );
19094 }
19095
19096 ObjectTableDescriptorSetEntryNVX& operator=( VkObjectTableDescriptorSetEntryNVX const & rhs )
19097 {
19098 memcpy( this, &rhs, sizeof(ObjectTableDescriptorSetEntryNVX) );
19099 return *this;
19100 }
19101
19102 ObjectTableDescriptorSetEntryNVX& setType( ObjectEntryTypeNVX type_ )
19103 {
19104 type = type_;
19105 return *this;
19106 }
19107
19108 ObjectTableDescriptorSetEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19109 {
19110 flags = flags_;
19111 return *this;
19112 }
19113
19114 ObjectTableDescriptorSetEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
19115 {
19116 pipelineLayout = pipelineLayout_;
19117 return *this;
19118 }
19119
19120 ObjectTableDescriptorSetEntryNVX& setDescriptorSet( DescriptorSet descriptorSet_ )
19121 {
19122 descriptorSet = descriptorSet_;
19123 return *this;
19124 }
19125
19126 operator const VkObjectTableDescriptorSetEntryNVX&() const
19127 {
19128 return *reinterpret_cast<const VkObjectTableDescriptorSetEntryNVX*>(this);
19129 }
19130
19131 bool operator==( ObjectTableDescriptorSetEntryNVX const& rhs ) const
19132 {
19133 return ( type == rhs.type )
19134 && ( flags == rhs.flags )
19135 && ( pipelineLayout == rhs.pipelineLayout )
19136 && ( descriptorSet == rhs.descriptorSet );
19137 }
19138
19139 bool operator!=( ObjectTableDescriptorSetEntryNVX const& rhs ) const
19140 {
19141 return !operator==( rhs );
19142 }
19143
19144 ObjectEntryTypeNVX type;
19145 ObjectEntryUsageFlagsNVX flags;
19146 PipelineLayout pipelineLayout;
19147 DescriptorSet descriptorSet;
19148 };
19149 static_assert( sizeof( ObjectTableDescriptorSetEntryNVX ) == sizeof( VkObjectTableDescriptorSetEntryNVX ), "struct and wrapper have different size!" );
19150
19151 struct ObjectTableVertexBufferEntryNVX
19152 {
19153 ObjectTableVertexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Buffer buffer_ = Buffer() )
19154 : type( type_ )
19155 , flags( flags_ )
19156 , buffer( buffer_ )
19157 {
19158 }
19159
19160 ObjectTableVertexBufferEntryNVX( VkObjectTableVertexBufferEntryNVX const & rhs )
19161 {
19162 memcpy( this, &rhs, sizeof(ObjectTableVertexBufferEntryNVX) );
19163 }
19164
19165 ObjectTableVertexBufferEntryNVX& operator=( VkObjectTableVertexBufferEntryNVX const & rhs )
19166 {
19167 memcpy( this, &rhs, sizeof(ObjectTableVertexBufferEntryNVX) );
19168 return *this;
19169 }
19170
19171 ObjectTableVertexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
19172 {
19173 type = type_;
19174 return *this;
19175 }
19176
19177 ObjectTableVertexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19178 {
19179 flags = flags_;
19180 return *this;
19181 }
19182
19183 ObjectTableVertexBufferEntryNVX& setBuffer( Buffer buffer_ )
19184 {
19185 buffer = buffer_;
19186 return *this;
19187 }
19188
19189 operator const VkObjectTableVertexBufferEntryNVX&() const
19190 {
19191 return *reinterpret_cast<const VkObjectTableVertexBufferEntryNVX*>(this);
19192 }
19193
19194 bool operator==( ObjectTableVertexBufferEntryNVX const& rhs ) const
19195 {
19196 return ( type == rhs.type )
19197 && ( flags == rhs.flags )
19198 && ( buffer == rhs.buffer );
19199 }
19200
19201 bool operator!=( ObjectTableVertexBufferEntryNVX const& rhs ) const
19202 {
19203 return !operator==( rhs );
19204 }
19205
19206 ObjectEntryTypeNVX type;
19207 ObjectEntryUsageFlagsNVX flags;
19208 Buffer buffer;
19209 };
19210 static_assert( sizeof( ObjectTableVertexBufferEntryNVX ) == sizeof( VkObjectTableVertexBufferEntryNVX ), "struct and wrapper have different size!" );
19211
19212 struct ObjectTableIndexBufferEntryNVX
19213 {
Mark Young39389872017-01-19 21:10:49 -070019214 ObjectTableIndexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Buffer buffer_ = Buffer(), IndexType indexType_ = IndexType::eUint16 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019215 : type( type_ )
19216 , flags( flags_ )
19217 , buffer( buffer_ )
Mark Young39389872017-01-19 21:10:49 -070019218 , indexType( indexType_ )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019219 {
19220 }
19221
19222 ObjectTableIndexBufferEntryNVX( VkObjectTableIndexBufferEntryNVX const & rhs )
19223 {
19224 memcpy( this, &rhs, sizeof(ObjectTableIndexBufferEntryNVX) );
19225 }
19226
19227 ObjectTableIndexBufferEntryNVX& operator=( VkObjectTableIndexBufferEntryNVX const & rhs )
19228 {
19229 memcpy( this, &rhs, sizeof(ObjectTableIndexBufferEntryNVX) );
19230 return *this;
19231 }
19232
19233 ObjectTableIndexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
19234 {
19235 type = type_;
19236 return *this;
19237 }
19238
19239 ObjectTableIndexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19240 {
19241 flags = flags_;
19242 return *this;
19243 }
19244
19245 ObjectTableIndexBufferEntryNVX& setBuffer( Buffer buffer_ )
19246 {
19247 buffer = buffer_;
19248 return *this;
19249 }
19250
Mark Young39389872017-01-19 21:10:49 -070019251 ObjectTableIndexBufferEntryNVX& setIndexType( IndexType indexType_ )
19252 {
19253 indexType = indexType_;
19254 return *this;
19255 }
19256
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019257 operator const VkObjectTableIndexBufferEntryNVX&() const
19258 {
19259 return *reinterpret_cast<const VkObjectTableIndexBufferEntryNVX*>(this);
19260 }
19261
19262 bool operator==( ObjectTableIndexBufferEntryNVX const& rhs ) const
19263 {
19264 return ( type == rhs.type )
19265 && ( flags == rhs.flags )
Mark Young39389872017-01-19 21:10:49 -070019266 && ( buffer == rhs.buffer )
19267 && ( indexType == rhs.indexType );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019268 }
19269
19270 bool operator!=( ObjectTableIndexBufferEntryNVX const& rhs ) const
19271 {
19272 return !operator==( rhs );
19273 }
19274
19275 ObjectEntryTypeNVX type;
19276 ObjectEntryUsageFlagsNVX flags;
19277 Buffer buffer;
Mark Young39389872017-01-19 21:10:49 -070019278 IndexType indexType;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019279 };
19280 static_assert( sizeof( ObjectTableIndexBufferEntryNVX ) == sizeof( VkObjectTableIndexBufferEntryNVX ), "struct and wrapper have different size!" );
19281
19282 struct ObjectTablePushConstantEntryNVX
19283 {
19284 ObjectTablePushConstantEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), PipelineLayout pipelineLayout_ = PipelineLayout(), ShaderStageFlags stageFlags_ = ShaderStageFlags() )
19285 : type( type_ )
19286 , flags( flags_ )
19287 , pipelineLayout( pipelineLayout_ )
19288 , stageFlags( stageFlags_ )
19289 {
19290 }
19291
19292 ObjectTablePushConstantEntryNVX( VkObjectTablePushConstantEntryNVX const & rhs )
19293 {
19294 memcpy( this, &rhs, sizeof(ObjectTablePushConstantEntryNVX) );
19295 }
19296
19297 ObjectTablePushConstantEntryNVX& operator=( VkObjectTablePushConstantEntryNVX const & rhs )
19298 {
19299 memcpy( this, &rhs, sizeof(ObjectTablePushConstantEntryNVX) );
19300 return *this;
19301 }
19302
19303 ObjectTablePushConstantEntryNVX& setType( ObjectEntryTypeNVX type_ )
19304 {
19305 type = type_;
19306 return *this;
19307 }
19308
19309 ObjectTablePushConstantEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
19310 {
19311 flags = flags_;
19312 return *this;
19313 }
19314
19315 ObjectTablePushConstantEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
19316 {
19317 pipelineLayout = pipelineLayout_;
19318 return *this;
19319 }
19320
19321 ObjectTablePushConstantEntryNVX& setStageFlags( ShaderStageFlags stageFlags_ )
19322 {
19323 stageFlags = stageFlags_;
19324 return *this;
19325 }
19326
19327 operator const VkObjectTablePushConstantEntryNVX&() const
19328 {
19329 return *reinterpret_cast<const VkObjectTablePushConstantEntryNVX*>(this);
19330 }
19331
19332 bool operator==( ObjectTablePushConstantEntryNVX const& rhs ) const
19333 {
19334 return ( type == rhs.type )
19335 && ( flags == rhs.flags )
19336 && ( pipelineLayout == rhs.pipelineLayout )
19337 && ( stageFlags == rhs.stageFlags );
19338 }
19339
19340 bool operator!=( ObjectTablePushConstantEntryNVX const& rhs ) const
19341 {
19342 return !operator==( rhs );
19343 }
19344
19345 ObjectEntryTypeNVX type;
19346 ObjectEntryUsageFlagsNVX flags;
19347 PipelineLayout pipelineLayout;
19348 ShaderStageFlags stageFlags;
19349 };
19350 static_assert( sizeof( ObjectTablePushConstantEntryNVX ) == sizeof( VkObjectTablePushConstantEntryNVX ), "struct and wrapper have different size!" );
19351
Mark Young0f183a82017-02-28 09:58:04 -070019352 enum class DescriptorSetLayoutCreateFlagBits
19353 {
19354 ePushDescriptorKHR = VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
19355 };
19356
19357 using DescriptorSetLayoutCreateFlags = Flags<DescriptorSetLayoutCreateFlagBits, VkDescriptorSetLayoutCreateFlags>;
19358
19359 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator|( DescriptorSetLayoutCreateFlagBits bit0, DescriptorSetLayoutCreateFlagBits bit1 )
19360 {
19361 return DescriptorSetLayoutCreateFlags( bit0 ) | bit1;
19362 }
19363
19364 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator~( DescriptorSetLayoutCreateFlagBits bits )
19365 {
19366 return ~( DescriptorSetLayoutCreateFlags( bits ) );
19367 }
19368
19369 template <> struct FlagTraits<DescriptorSetLayoutCreateFlagBits>
19370 {
19371 enum
19372 {
19373 allFlags = VkFlags(DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR)
19374 };
19375 };
19376
19377 struct DescriptorSetLayoutCreateInfo
19378 {
19379 DescriptorSetLayoutCreateInfo( DescriptorSetLayoutCreateFlags flags_ = DescriptorSetLayoutCreateFlags(), uint32_t bindingCount_ = 0, const DescriptorSetLayoutBinding* pBindings_ = nullptr )
19380 : sType( StructureType::eDescriptorSetLayoutCreateInfo )
19381 , pNext( nullptr )
19382 , flags( flags_ )
19383 , bindingCount( bindingCount_ )
19384 , pBindings( pBindings_ )
19385 {
19386 }
19387
19388 DescriptorSetLayoutCreateInfo( VkDescriptorSetLayoutCreateInfo const & rhs )
19389 {
19390 memcpy( this, &rhs, sizeof(DescriptorSetLayoutCreateInfo) );
19391 }
19392
19393 DescriptorSetLayoutCreateInfo& operator=( VkDescriptorSetLayoutCreateInfo const & rhs )
19394 {
19395 memcpy( this, &rhs, sizeof(DescriptorSetLayoutCreateInfo) );
19396 return *this;
19397 }
19398
19399 DescriptorSetLayoutCreateInfo& setPNext( const void* pNext_ )
19400 {
19401 pNext = pNext_;
19402 return *this;
19403 }
19404
19405 DescriptorSetLayoutCreateInfo& setFlags( DescriptorSetLayoutCreateFlags flags_ )
19406 {
19407 flags = flags_;
19408 return *this;
19409 }
19410
19411 DescriptorSetLayoutCreateInfo& setBindingCount( uint32_t bindingCount_ )
19412 {
19413 bindingCount = bindingCount_;
19414 return *this;
19415 }
19416
19417 DescriptorSetLayoutCreateInfo& setPBindings( const DescriptorSetLayoutBinding* pBindings_ )
19418 {
19419 pBindings = pBindings_;
19420 return *this;
19421 }
19422
19423 operator const VkDescriptorSetLayoutCreateInfo&() const
19424 {
19425 return *reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>(this);
19426 }
19427
19428 bool operator==( DescriptorSetLayoutCreateInfo const& rhs ) const
19429 {
19430 return ( sType == rhs.sType )
19431 && ( pNext == rhs.pNext )
19432 && ( flags == rhs.flags )
19433 && ( bindingCount == rhs.bindingCount )
19434 && ( pBindings == rhs.pBindings );
19435 }
19436
19437 bool operator!=( DescriptorSetLayoutCreateInfo const& rhs ) const
19438 {
19439 return !operator==( rhs );
19440 }
19441
19442 private:
19443 StructureType sType;
19444
19445 public:
19446 const void* pNext;
19447 DescriptorSetLayoutCreateFlags flags;
19448 uint32_t bindingCount;
19449 const DescriptorSetLayoutBinding* pBindings;
19450 };
19451 static_assert( sizeof( DescriptorSetLayoutCreateInfo ) == sizeof( VkDescriptorSetLayoutCreateInfo ), "struct and wrapper have different size!" );
19452
19453 enum class ExternalMemoryHandleTypeFlagBitsKHX
19454 {
19455 eOpaqueFd = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHX,
19456 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX,
19457 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX,
19458 eD3D11Texture = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHX,
19459 eD3D11TextureKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHX,
19460 eD3D12Heap = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHX,
19461 eD3D12Resource = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHX
19462 };
19463
19464 using ExternalMemoryHandleTypeFlagsKHX = Flags<ExternalMemoryHandleTypeFlagBitsKHX, VkExternalMemoryHandleTypeFlagsKHX>;
19465
19466 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsKHX operator|( ExternalMemoryHandleTypeFlagBitsKHX bit0, ExternalMemoryHandleTypeFlagBitsKHX bit1 )
19467 {
19468 return ExternalMemoryHandleTypeFlagsKHX( bit0 ) | bit1;
19469 }
19470
19471 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsKHX operator~( ExternalMemoryHandleTypeFlagBitsKHX bits )
19472 {
19473 return ~( ExternalMemoryHandleTypeFlagsKHX( bits ) );
19474 }
19475
19476 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsKHX>
19477 {
19478 enum
19479 {
19480 allFlags = VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eD3D11Texture) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eD3D11TextureKmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Heap) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Resource)
19481 };
19482 };
19483
19484 struct PhysicalDeviceExternalImageFormatInfoKHX
19485 {
19486 PhysicalDeviceExternalImageFormatInfoKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType_ = ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd )
19487 : sType( StructureType::ePhysicalDeviceExternalImageFormatInfoKHX )
19488 , pNext( nullptr )
19489 , handleType( handleType_ )
19490 {
19491 }
19492
19493 PhysicalDeviceExternalImageFormatInfoKHX( VkPhysicalDeviceExternalImageFormatInfoKHX const & rhs )
19494 {
19495 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalImageFormatInfoKHX) );
19496 }
19497
19498 PhysicalDeviceExternalImageFormatInfoKHX& operator=( VkPhysicalDeviceExternalImageFormatInfoKHX const & rhs )
19499 {
19500 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalImageFormatInfoKHX) );
19501 return *this;
19502 }
19503
19504 PhysicalDeviceExternalImageFormatInfoKHX& setPNext( const void* pNext_ )
19505 {
19506 pNext = pNext_;
19507 return *this;
19508 }
19509
19510 PhysicalDeviceExternalImageFormatInfoKHX& setHandleType( ExternalMemoryHandleTypeFlagBitsKHX handleType_ )
19511 {
19512 handleType = handleType_;
19513 return *this;
19514 }
19515
19516 operator const VkPhysicalDeviceExternalImageFormatInfoKHX&() const
19517 {
19518 return *reinterpret_cast<const VkPhysicalDeviceExternalImageFormatInfoKHX*>(this);
19519 }
19520
19521 bool operator==( PhysicalDeviceExternalImageFormatInfoKHX const& rhs ) const
19522 {
19523 return ( sType == rhs.sType )
19524 && ( pNext == rhs.pNext )
19525 && ( handleType == rhs.handleType );
19526 }
19527
19528 bool operator!=( PhysicalDeviceExternalImageFormatInfoKHX const& rhs ) const
19529 {
19530 return !operator==( rhs );
19531 }
19532
19533 private:
19534 StructureType sType;
19535
19536 public:
19537 const void* pNext;
19538 ExternalMemoryHandleTypeFlagBitsKHX handleType;
19539 };
19540 static_assert( sizeof( PhysicalDeviceExternalImageFormatInfoKHX ) == sizeof( VkPhysicalDeviceExternalImageFormatInfoKHX ), "struct and wrapper have different size!" );
19541
19542 struct PhysicalDeviceExternalBufferInfoKHX
19543 {
19544 PhysicalDeviceExternalBufferInfoKHX( BufferCreateFlags flags_ = BufferCreateFlags(), BufferUsageFlags usage_ = BufferUsageFlags(), ExternalMemoryHandleTypeFlagBitsKHX handleType_ = ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd )
19545 : sType( StructureType::ePhysicalDeviceExternalBufferInfoKHX )
19546 , pNext( nullptr )
19547 , flags( flags_ )
19548 , usage( usage_ )
19549 , handleType( handleType_ )
19550 {
19551 }
19552
19553 PhysicalDeviceExternalBufferInfoKHX( VkPhysicalDeviceExternalBufferInfoKHX const & rhs )
19554 {
19555 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalBufferInfoKHX) );
19556 }
19557
19558 PhysicalDeviceExternalBufferInfoKHX& operator=( VkPhysicalDeviceExternalBufferInfoKHX const & rhs )
19559 {
19560 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalBufferInfoKHX) );
19561 return *this;
19562 }
19563
19564 PhysicalDeviceExternalBufferInfoKHX& setPNext( const void* pNext_ )
19565 {
19566 pNext = pNext_;
19567 return *this;
19568 }
19569
19570 PhysicalDeviceExternalBufferInfoKHX& setFlags( BufferCreateFlags flags_ )
19571 {
19572 flags = flags_;
19573 return *this;
19574 }
19575
19576 PhysicalDeviceExternalBufferInfoKHX& setUsage( BufferUsageFlags usage_ )
19577 {
19578 usage = usage_;
19579 return *this;
19580 }
19581
19582 PhysicalDeviceExternalBufferInfoKHX& setHandleType( ExternalMemoryHandleTypeFlagBitsKHX handleType_ )
19583 {
19584 handleType = handleType_;
19585 return *this;
19586 }
19587
19588 operator const VkPhysicalDeviceExternalBufferInfoKHX&() const
19589 {
19590 return *reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHX*>(this);
19591 }
19592
19593 bool operator==( PhysicalDeviceExternalBufferInfoKHX const& rhs ) const
19594 {
19595 return ( sType == rhs.sType )
19596 && ( pNext == rhs.pNext )
19597 && ( flags == rhs.flags )
19598 && ( usage == rhs.usage )
19599 && ( handleType == rhs.handleType );
19600 }
19601
19602 bool operator!=( PhysicalDeviceExternalBufferInfoKHX const& rhs ) const
19603 {
19604 return !operator==( rhs );
19605 }
19606
19607 private:
19608 StructureType sType;
19609
19610 public:
19611 const void* pNext;
19612 BufferCreateFlags flags;
19613 BufferUsageFlags usage;
19614 ExternalMemoryHandleTypeFlagBitsKHX handleType;
19615 };
19616 static_assert( sizeof( PhysicalDeviceExternalBufferInfoKHX ) == sizeof( VkPhysicalDeviceExternalBufferInfoKHX ), "struct and wrapper have different size!" );
19617
19618 struct ExternalMemoryImageCreateInfoKHX
19619 {
19620 ExternalMemoryImageCreateInfoKHX( ExternalMemoryHandleTypeFlagsKHX handleTypes_ = ExternalMemoryHandleTypeFlagsKHX() )
19621 : sType( StructureType::eExternalMemoryImageCreateInfoKHX )
19622 , pNext( nullptr )
19623 , handleTypes( handleTypes_ )
19624 {
19625 }
19626
19627 ExternalMemoryImageCreateInfoKHX( VkExternalMemoryImageCreateInfoKHX const & rhs )
19628 {
19629 memcpy( this, &rhs, sizeof(ExternalMemoryImageCreateInfoKHX) );
19630 }
19631
19632 ExternalMemoryImageCreateInfoKHX& operator=( VkExternalMemoryImageCreateInfoKHX const & rhs )
19633 {
19634 memcpy( this, &rhs, sizeof(ExternalMemoryImageCreateInfoKHX) );
19635 return *this;
19636 }
19637
19638 ExternalMemoryImageCreateInfoKHX& setPNext( const void* pNext_ )
19639 {
19640 pNext = pNext_;
19641 return *this;
19642 }
19643
19644 ExternalMemoryImageCreateInfoKHX& setHandleTypes( ExternalMemoryHandleTypeFlagsKHX handleTypes_ )
19645 {
19646 handleTypes = handleTypes_;
19647 return *this;
19648 }
19649
19650 operator const VkExternalMemoryImageCreateInfoKHX&() const
19651 {
19652 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoKHX*>(this);
19653 }
19654
19655 bool operator==( ExternalMemoryImageCreateInfoKHX const& rhs ) const
19656 {
19657 return ( sType == rhs.sType )
19658 && ( pNext == rhs.pNext )
19659 && ( handleTypes == rhs.handleTypes );
19660 }
19661
19662 bool operator!=( ExternalMemoryImageCreateInfoKHX const& rhs ) const
19663 {
19664 return !operator==( rhs );
19665 }
19666
19667 private:
19668 StructureType sType;
19669
19670 public:
19671 const void* pNext;
19672 ExternalMemoryHandleTypeFlagsKHX handleTypes;
19673 };
19674 static_assert( sizeof( ExternalMemoryImageCreateInfoKHX ) == sizeof( VkExternalMemoryImageCreateInfoKHX ), "struct and wrapper have different size!" );
19675
19676 struct ExternalMemoryBufferCreateInfoKHX
19677 {
19678 ExternalMemoryBufferCreateInfoKHX( ExternalMemoryHandleTypeFlagsKHX handleTypes_ = ExternalMemoryHandleTypeFlagsKHX() )
19679 : sType( StructureType::eExternalMemoryBufferCreateInfoKHX )
19680 , pNext( nullptr )
19681 , handleTypes( handleTypes_ )
19682 {
19683 }
19684
19685 ExternalMemoryBufferCreateInfoKHX( VkExternalMemoryBufferCreateInfoKHX const & rhs )
19686 {
19687 memcpy( this, &rhs, sizeof(ExternalMemoryBufferCreateInfoKHX) );
19688 }
19689
19690 ExternalMemoryBufferCreateInfoKHX& operator=( VkExternalMemoryBufferCreateInfoKHX const & rhs )
19691 {
19692 memcpy( this, &rhs, sizeof(ExternalMemoryBufferCreateInfoKHX) );
19693 return *this;
19694 }
19695
19696 ExternalMemoryBufferCreateInfoKHX& setPNext( const void* pNext_ )
19697 {
19698 pNext = pNext_;
19699 return *this;
19700 }
19701
19702 ExternalMemoryBufferCreateInfoKHX& setHandleTypes( ExternalMemoryHandleTypeFlagsKHX handleTypes_ )
19703 {
19704 handleTypes = handleTypes_;
19705 return *this;
19706 }
19707
19708 operator const VkExternalMemoryBufferCreateInfoKHX&() const
19709 {
19710 return *reinterpret_cast<const VkExternalMemoryBufferCreateInfoKHX*>(this);
19711 }
19712
19713 bool operator==( ExternalMemoryBufferCreateInfoKHX const& rhs ) const
19714 {
19715 return ( sType == rhs.sType )
19716 && ( pNext == rhs.pNext )
19717 && ( handleTypes == rhs.handleTypes );
19718 }
19719
19720 bool operator!=( ExternalMemoryBufferCreateInfoKHX const& rhs ) const
19721 {
19722 return !operator==( rhs );
19723 }
19724
19725 private:
19726 StructureType sType;
19727
19728 public:
19729 const void* pNext;
19730 ExternalMemoryHandleTypeFlagsKHX handleTypes;
19731 };
19732 static_assert( sizeof( ExternalMemoryBufferCreateInfoKHX ) == sizeof( VkExternalMemoryBufferCreateInfoKHX ), "struct and wrapper have different size!" );
19733
19734 struct ExportMemoryAllocateInfoKHX
19735 {
19736 ExportMemoryAllocateInfoKHX( ExternalMemoryHandleTypeFlagsKHX handleTypes_ = ExternalMemoryHandleTypeFlagsKHX() )
19737 : sType( StructureType::eExportMemoryAllocateInfoKHX )
19738 , pNext( nullptr )
19739 , handleTypes( handleTypes_ )
19740 {
19741 }
19742
19743 ExportMemoryAllocateInfoKHX( VkExportMemoryAllocateInfoKHX const & rhs )
19744 {
19745 memcpy( this, &rhs, sizeof(ExportMemoryAllocateInfoKHX) );
19746 }
19747
19748 ExportMemoryAllocateInfoKHX& operator=( VkExportMemoryAllocateInfoKHX const & rhs )
19749 {
19750 memcpy( this, &rhs, sizeof(ExportMemoryAllocateInfoKHX) );
19751 return *this;
19752 }
19753
19754 ExportMemoryAllocateInfoKHX& setPNext( const void* pNext_ )
19755 {
19756 pNext = pNext_;
19757 return *this;
19758 }
19759
19760 ExportMemoryAllocateInfoKHX& setHandleTypes( ExternalMemoryHandleTypeFlagsKHX handleTypes_ )
19761 {
19762 handleTypes = handleTypes_;
19763 return *this;
19764 }
19765
19766 operator const VkExportMemoryAllocateInfoKHX&() const
19767 {
19768 return *reinterpret_cast<const VkExportMemoryAllocateInfoKHX*>(this);
19769 }
19770
19771 bool operator==( ExportMemoryAllocateInfoKHX const& rhs ) const
19772 {
19773 return ( sType == rhs.sType )
19774 && ( pNext == rhs.pNext )
19775 && ( handleTypes == rhs.handleTypes );
19776 }
19777
19778 bool operator!=( ExportMemoryAllocateInfoKHX const& rhs ) const
19779 {
19780 return !operator==( rhs );
19781 }
19782
19783 private:
19784 StructureType sType;
19785
19786 public:
19787 const void* pNext;
19788 ExternalMemoryHandleTypeFlagsKHX handleTypes;
19789 };
19790 static_assert( sizeof( ExportMemoryAllocateInfoKHX ) == sizeof( VkExportMemoryAllocateInfoKHX ), "struct and wrapper have different size!" );
19791
Mark Lobodzinski3289d762017-04-03 08:22:04 -060019792#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070019793 struct ImportMemoryWin32HandleInfoKHX
19794 {
19795 ImportMemoryWin32HandleInfoKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType_ = ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd, HANDLE handle_ = 0 )
19796 : sType( StructureType::eImportMemoryWin32HandleInfoKHX )
19797 , pNext( nullptr )
19798 , handleType( handleType_ )
19799 , handle( handle_ )
19800 {
19801 }
19802
19803 ImportMemoryWin32HandleInfoKHX( VkImportMemoryWin32HandleInfoKHX const & rhs )
19804 {
19805 memcpy( this, &rhs, sizeof(ImportMemoryWin32HandleInfoKHX) );
19806 }
19807
19808 ImportMemoryWin32HandleInfoKHX& operator=( VkImportMemoryWin32HandleInfoKHX const & rhs )
19809 {
19810 memcpy( this, &rhs, sizeof(ImportMemoryWin32HandleInfoKHX) );
19811 return *this;
19812 }
19813
19814 ImportMemoryWin32HandleInfoKHX& setPNext( const void* pNext_ )
19815 {
19816 pNext = pNext_;
19817 return *this;
19818 }
19819
19820 ImportMemoryWin32HandleInfoKHX& setHandleType( ExternalMemoryHandleTypeFlagBitsKHX handleType_ )
19821 {
19822 handleType = handleType_;
19823 return *this;
19824 }
19825
19826 ImportMemoryWin32HandleInfoKHX& setHandle( HANDLE handle_ )
19827 {
19828 handle = handle_;
19829 return *this;
19830 }
19831
19832 operator const VkImportMemoryWin32HandleInfoKHX&() const
19833 {
19834 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoKHX*>(this);
19835 }
19836
19837 bool operator==( ImportMemoryWin32HandleInfoKHX const& rhs ) const
19838 {
19839 return ( sType == rhs.sType )
19840 && ( pNext == rhs.pNext )
19841 && ( handleType == rhs.handleType )
19842 && ( handle == rhs.handle );
19843 }
19844
19845 bool operator!=( ImportMemoryWin32HandleInfoKHX const& rhs ) const
19846 {
19847 return !operator==( rhs );
19848 }
19849
19850 private:
19851 StructureType sType;
19852
19853 public:
19854 const void* pNext;
19855 ExternalMemoryHandleTypeFlagBitsKHX handleType;
19856 HANDLE handle;
19857 };
19858 static_assert( sizeof( ImportMemoryWin32HandleInfoKHX ) == sizeof( VkImportMemoryWin32HandleInfoKHX ), "struct and wrapper have different size!" );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060019859#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070019860
19861 struct ImportMemoryFdInfoKHX
19862 {
19863 ImportMemoryFdInfoKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType_ = ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd, int fd_ = 0 )
19864 : sType( StructureType::eImportMemoryFdInfoKHX )
19865 , pNext( nullptr )
19866 , handleType( handleType_ )
19867 , fd( fd_ )
19868 {
19869 }
19870
19871 ImportMemoryFdInfoKHX( VkImportMemoryFdInfoKHX const & rhs )
19872 {
19873 memcpy( this, &rhs, sizeof(ImportMemoryFdInfoKHX) );
19874 }
19875
19876 ImportMemoryFdInfoKHX& operator=( VkImportMemoryFdInfoKHX const & rhs )
19877 {
19878 memcpy( this, &rhs, sizeof(ImportMemoryFdInfoKHX) );
19879 return *this;
19880 }
19881
19882 ImportMemoryFdInfoKHX& setPNext( const void* pNext_ )
19883 {
19884 pNext = pNext_;
19885 return *this;
19886 }
19887
19888 ImportMemoryFdInfoKHX& setHandleType( ExternalMemoryHandleTypeFlagBitsKHX handleType_ )
19889 {
19890 handleType = handleType_;
19891 return *this;
19892 }
19893
19894 ImportMemoryFdInfoKHX& setFd( int fd_ )
19895 {
19896 fd = fd_;
19897 return *this;
19898 }
19899
19900 operator const VkImportMemoryFdInfoKHX&() const
19901 {
19902 return *reinterpret_cast<const VkImportMemoryFdInfoKHX*>(this);
19903 }
19904
19905 bool operator==( ImportMemoryFdInfoKHX const& rhs ) const
19906 {
19907 return ( sType == rhs.sType )
19908 && ( pNext == rhs.pNext )
19909 && ( handleType == rhs.handleType )
19910 && ( fd == rhs.fd );
19911 }
19912
19913 bool operator!=( ImportMemoryFdInfoKHX const& rhs ) const
19914 {
19915 return !operator==( rhs );
19916 }
19917
19918 private:
19919 StructureType sType;
19920
19921 public:
19922 const void* pNext;
19923 ExternalMemoryHandleTypeFlagBitsKHX handleType;
19924 int fd;
19925 };
19926 static_assert( sizeof( ImportMemoryFdInfoKHX ) == sizeof( VkImportMemoryFdInfoKHX ), "struct and wrapper have different size!" );
19927
19928 enum class ExternalMemoryFeatureFlagBitsKHX
19929 {
19930 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHX,
19931 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHX,
19932 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHX
19933 };
19934
19935 using ExternalMemoryFeatureFlagsKHX = Flags<ExternalMemoryFeatureFlagBitsKHX, VkExternalMemoryFeatureFlagsKHX>;
19936
19937 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsKHX operator|( ExternalMemoryFeatureFlagBitsKHX bit0, ExternalMemoryFeatureFlagBitsKHX bit1 )
19938 {
19939 return ExternalMemoryFeatureFlagsKHX( bit0 ) | bit1;
19940 }
19941
19942 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsKHX operator~( ExternalMemoryFeatureFlagBitsKHX bits )
19943 {
19944 return ~( ExternalMemoryFeatureFlagsKHX( bits ) );
19945 }
19946
19947 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsKHX>
19948 {
19949 enum
19950 {
19951 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsKHX::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsKHX::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsKHX::eImportable)
19952 };
19953 };
19954
19955 struct ExternalMemoryPropertiesKHX
19956 {
19957 operator const VkExternalMemoryPropertiesKHX&() const
19958 {
19959 return *reinterpret_cast<const VkExternalMemoryPropertiesKHX*>(this);
19960 }
19961
19962 bool operator==( ExternalMemoryPropertiesKHX const& rhs ) const
19963 {
19964 return ( externalMemoryFeatures == rhs.externalMemoryFeatures )
19965 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
19966 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
19967 }
19968
19969 bool operator!=( ExternalMemoryPropertiesKHX const& rhs ) const
19970 {
19971 return !operator==( rhs );
19972 }
19973
19974 ExternalMemoryFeatureFlagsKHX externalMemoryFeatures;
19975 ExternalMemoryHandleTypeFlagsKHX exportFromImportedHandleTypes;
19976 ExternalMemoryHandleTypeFlagsKHX compatibleHandleTypes;
19977 };
19978 static_assert( sizeof( ExternalMemoryPropertiesKHX ) == sizeof( VkExternalMemoryPropertiesKHX ), "struct and wrapper have different size!" );
19979
19980 struct ExternalImageFormatPropertiesKHX
19981 {
19982 operator const VkExternalImageFormatPropertiesKHX&() const
19983 {
19984 return *reinterpret_cast<const VkExternalImageFormatPropertiesKHX*>(this);
19985 }
19986
19987 bool operator==( ExternalImageFormatPropertiesKHX const& rhs ) const
19988 {
19989 return ( sType == rhs.sType )
19990 && ( pNext == rhs.pNext )
19991 && ( externalMemoryProperties == rhs.externalMemoryProperties );
19992 }
19993
19994 bool operator!=( ExternalImageFormatPropertiesKHX const& rhs ) const
19995 {
19996 return !operator==( rhs );
19997 }
19998
19999 private:
20000 StructureType sType;
20001
20002 public:
20003 void* pNext;
20004 ExternalMemoryPropertiesKHX externalMemoryProperties;
20005 };
20006 static_assert( sizeof( ExternalImageFormatPropertiesKHX ) == sizeof( VkExternalImageFormatPropertiesKHX ), "struct and wrapper have different size!" );
20007
20008 struct ExternalBufferPropertiesKHX
20009 {
20010 operator const VkExternalBufferPropertiesKHX&() const
20011 {
20012 return *reinterpret_cast<const VkExternalBufferPropertiesKHX*>(this);
20013 }
20014
20015 bool operator==( ExternalBufferPropertiesKHX const& rhs ) const
20016 {
20017 return ( sType == rhs.sType )
20018 && ( pNext == rhs.pNext )
20019 && ( externalMemoryProperties == rhs.externalMemoryProperties );
20020 }
20021
20022 bool operator!=( ExternalBufferPropertiesKHX const& rhs ) const
20023 {
20024 return !operator==( rhs );
20025 }
20026
20027 private:
20028 StructureType sType;
20029
20030 public:
20031 void* pNext;
20032 ExternalMemoryPropertiesKHX externalMemoryProperties;
20033 };
20034 static_assert( sizeof( ExternalBufferPropertiesKHX ) == sizeof( VkExternalBufferPropertiesKHX ), "struct and wrapper have different size!" );
20035
20036 enum class ExternalSemaphoreHandleTypeFlagBitsKHX
20037 {
20038 eOpaqueFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHX,
20039 eOpaqueWin32 = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX,
20040 eOpaqueWin32Kmt = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX,
20041 eD3D12Fence = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHX,
20042 eFenceFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT_KHX
20043 };
20044
20045 using ExternalSemaphoreHandleTypeFlagsKHX = Flags<ExternalSemaphoreHandleTypeFlagBitsKHX, VkExternalSemaphoreHandleTypeFlagsKHX>;
20046
20047 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlagsKHX operator|( ExternalSemaphoreHandleTypeFlagBitsKHX bit0, ExternalSemaphoreHandleTypeFlagBitsKHX bit1 )
20048 {
20049 return ExternalSemaphoreHandleTypeFlagsKHX( bit0 ) | bit1;
20050 }
20051
20052 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlagsKHX operator~( ExternalSemaphoreHandleTypeFlagBitsKHX bits )
20053 {
20054 return ~( ExternalSemaphoreHandleTypeFlagsKHX( bits ) );
20055 }
20056
20057 template <> struct FlagTraits<ExternalSemaphoreHandleTypeFlagBitsKHX>
20058 {
20059 enum
20060 {
20061 allFlags = VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32Kmt) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eD3D12Fence) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHX::eFenceFd)
20062 };
20063 };
20064
20065 struct PhysicalDeviceExternalSemaphoreInfoKHX
20066 {
20067 PhysicalDeviceExternalSemaphoreInfoKHX( ExternalSemaphoreHandleTypeFlagBitsKHX handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd )
20068 : sType( StructureType::ePhysicalDeviceExternalSemaphoreInfoKHX )
20069 , pNext( nullptr )
20070 , handleType( handleType_ )
20071 {
20072 }
20073
20074 PhysicalDeviceExternalSemaphoreInfoKHX( VkPhysicalDeviceExternalSemaphoreInfoKHX const & rhs )
20075 {
20076 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalSemaphoreInfoKHX) );
20077 }
20078
20079 PhysicalDeviceExternalSemaphoreInfoKHX& operator=( VkPhysicalDeviceExternalSemaphoreInfoKHX const & rhs )
20080 {
20081 memcpy( this, &rhs, sizeof(PhysicalDeviceExternalSemaphoreInfoKHX) );
20082 return *this;
20083 }
20084
20085 PhysicalDeviceExternalSemaphoreInfoKHX& setPNext( const void* pNext_ )
20086 {
20087 pNext = pNext_;
20088 return *this;
20089 }
20090
20091 PhysicalDeviceExternalSemaphoreInfoKHX& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHX handleType_ )
20092 {
20093 handleType = handleType_;
20094 return *this;
20095 }
20096
20097 operator const VkPhysicalDeviceExternalSemaphoreInfoKHX&() const
20098 {
20099 return *reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHX*>(this);
20100 }
20101
20102 bool operator==( PhysicalDeviceExternalSemaphoreInfoKHX const& rhs ) const
20103 {
20104 return ( sType == rhs.sType )
20105 && ( pNext == rhs.pNext )
20106 && ( handleType == rhs.handleType );
20107 }
20108
20109 bool operator!=( PhysicalDeviceExternalSemaphoreInfoKHX const& rhs ) const
20110 {
20111 return !operator==( rhs );
20112 }
20113
20114 private:
20115 StructureType sType;
20116
20117 public:
20118 const void* pNext;
20119 ExternalSemaphoreHandleTypeFlagBitsKHX handleType;
20120 };
20121 static_assert( sizeof( PhysicalDeviceExternalSemaphoreInfoKHX ) == sizeof( VkPhysicalDeviceExternalSemaphoreInfoKHX ), "struct and wrapper have different size!" );
20122
20123 struct ExportSemaphoreCreateInfoKHX
20124 {
20125 ExportSemaphoreCreateInfoKHX( ExternalSemaphoreHandleTypeFlagsKHX handleTypes_ = ExternalSemaphoreHandleTypeFlagsKHX() )
20126 : sType( StructureType::eExportSemaphoreCreateInfoKHX )
20127 , pNext( nullptr )
20128 , handleTypes( handleTypes_ )
20129 {
20130 }
20131
20132 ExportSemaphoreCreateInfoKHX( VkExportSemaphoreCreateInfoKHX const & rhs )
20133 {
20134 memcpy( this, &rhs, sizeof(ExportSemaphoreCreateInfoKHX) );
20135 }
20136
20137 ExportSemaphoreCreateInfoKHX& operator=( VkExportSemaphoreCreateInfoKHX const & rhs )
20138 {
20139 memcpy( this, &rhs, sizeof(ExportSemaphoreCreateInfoKHX) );
20140 return *this;
20141 }
20142
20143 ExportSemaphoreCreateInfoKHX& setPNext( const void* pNext_ )
20144 {
20145 pNext = pNext_;
20146 return *this;
20147 }
20148
20149 ExportSemaphoreCreateInfoKHX& setHandleTypes( ExternalSemaphoreHandleTypeFlagsKHX handleTypes_ )
20150 {
20151 handleTypes = handleTypes_;
20152 return *this;
20153 }
20154
20155 operator const VkExportSemaphoreCreateInfoKHX&() const
20156 {
20157 return *reinterpret_cast<const VkExportSemaphoreCreateInfoKHX*>(this);
20158 }
20159
20160 bool operator==( ExportSemaphoreCreateInfoKHX const& rhs ) const
20161 {
20162 return ( sType == rhs.sType )
20163 && ( pNext == rhs.pNext )
20164 && ( handleTypes == rhs.handleTypes );
20165 }
20166
20167 bool operator!=( ExportSemaphoreCreateInfoKHX const& rhs ) const
20168 {
20169 return !operator==( rhs );
20170 }
20171
20172 private:
20173 StructureType sType;
20174
20175 public:
20176 const void* pNext;
20177 ExternalSemaphoreHandleTypeFlagsKHX handleTypes;
20178 };
20179 static_assert( sizeof( ExportSemaphoreCreateInfoKHX ) == sizeof( VkExportSemaphoreCreateInfoKHX ), "struct and wrapper have different size!" );
20180
20181#ifdef VK_USE_PLATFORM_WIN32_KHX
20182 struct ImportSemaphoreWin32HandleInfoKHX
20183 {
20184 ImportSemaphoreWin32HandleInfoKHX( Semaphore semaphore_ = Semaphore(), ExternalSemaphoreHandleTypeFlagsKHX handleType_ = ExternalSemaphoreHandleTypeFlagsKHX(), HANDLE handle_ = 0 )
20185 : sType( StructureType::eImportSemaphoreWin32HandleInfoKHX )
20186 , pNext( nullptr )
20187 , semaphore( semaphore_ )
20188 , handleType( handleType_ )
20189 , handle( handle_ )
20190 {
20191 }
20192
20193 ImportSemaphoreWin32HandleInfoKHX( VkImportSemaphoreWin32HandleInfoKHX const & rhs )
20194 {
20195 memcpy( this, &rhs, sizeof(ImportSemaphoreWin32HandleInfoKHX) );
20196 }
20197
20198 ImportSemaphoreWin32HandleInfoKHX& operator=( VkImportSemaphoreWin32HandleInfoKHX const & rhs )
20199 {
20200 memcpy( this, &rhs, sizeof(ImportSemaphoreWin32HandleInfoKHX) );
20201 return *this;
20202 }
20203
20204 ImportSemaphoreWin32HandleInfoKHX& setPNext( const void* pNext_ )
20205 {
20206 pNext = pNext_;
20207 return *this;
20208 }
20209
20210 ImportSemaphoreWin32HandleInfoKHX& setSemaphore( Semaphore semaphore_ )
20211 {
20212 semaphore = semaphore_;
20213 return *this;
20214 }
20215
20216 ImportSemaphoreWin32HandleInfoKHX& setHandleType( ExternalSemaphoreHandleTypeFlagsKHX handleType_ )
20217 {
20218 handleType = handleType_;
20219 return *this;
20220 }
20221
20222 ImportSemaphoreWin32HandleInfoKHX& setHandle( HANDLE handle_ )
20223 {
20224 handle = handle_;
20225 return *this;
20226 }
20227
20228 operator const VkImportSemaphoreWin32HandleInfoKHX&() const
20229 {
20230 return *reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHX*>(this);
20231 }
20232
20233 bool operator==( ImportSemaphoreWin32HandleInfoKHX const& rhs ) const
20234 {
20235 return ( sType == rhs.sType )
20236 && ( pNext == rhs.pNext )
20237 && ( semaphore == rhs.semaphore )
20238 && ( handleType == rhs.handleType )
20239 && ( handle == rhs.handle );
20240 }
20241
20242 bool operator!=( ImportSemaphoreWin32HandleInfoKHX const& rhs ) const
20243 {
20244 return !operator==( rhs );
20245 }
20246
20247 private:
20248 StructureType sType;
20249
20250 public:
20251 const void* pNext;
20252 Semaphore semaphore;
20253 ExternalSemaphoreHandleTypeFlagsKHX handleType;
20254 HANDLE handle;
20255 };
20256 static_assert( sizeof( ImportSemaphoreWin32HandleInfoKHX ) == sizeof( VkImportSemaphoreWin32HandleInfoKHX ), "struct and wrapper have different size!" );
20257#endif /*VK_USE_PLATFORM_WIN32_KHX*/
20258
20259 struct ImportSemaphoreFdInfoKHX
20260 {
20261 ImportSemaphoreFdInfoKHX( Semaphore semaphore_ = Semaphore(), ExternalSemaphoreHandleTypeFlagBitsKHX handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd, int fd_ = 0 )
20262 : sType( StructureType::eImportSemaphoreFdInfoKHX )
20263 , pNext( nullptr )
20264 , semaphore( semaphore_ )
20265 , handleType( handleType_ )
20266 , fd( fd_ )
20267 {
20268 }
20269
20270 ImportSemaphoreFdInfoKHX( VkImportSemaphoreFdInfoKHX const & rhs )
20271 {
20272 memcpy( this, &rhs, sizeof(ImportSemaphoreFdInfoKHX) );
20273 }
20274
20275 ImportSemaphoreFdInfoKHX& operator=( VkImportSemaphoreFdInfoKHX const & rhs )
20276 {
20277 memcpy( this, &rhs, sizeof(ImportSemaphoreFdInfoKHX) );
20278 return *this;
20279 }
20280
20281 ImportSemaphoreFdInfoKHX& setPNext( const void* pNext_ )
20282 {
20283 pNext = pNext_;
20284 return *this;
20285 }
20286
20287 ImportSemaphoreFdInfoKHX& setSemaphore( Semaphore semaphore_ )
20288 {
20289 semaphore = semaphore_;
20290 return *this;
20291 }
20292
20293 ImportSemaphoreFdInfoKHX& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHX handleType_ )
20294 {
20295 handleType = handleType_;
20296 return *this;
20297 }
20298
20299 ImportSemaphoreFdInfoKHX& setFd( int fd_ )
20300 {
20301 fd = fd_;
20302 return *this;
20303 }
20304
20305 operator const VkImportSemaphoreFdInfoKHX&() const
20306 {
20307 return *reinterpret_cast<const VkImportSemaphoreFdInfoKHX*>(this);
20308 }
20309
20310 bool operator==( ImportSemaphoreFdInfoKHX const& rhs ) const
20311 {
20312 return ( sType == rhs.sType )
20313 && ( pNext == rhs.pNext )
20314 && ( semaphore == rhs.semaphore )
20315 && ( handleType == rhs.handleType )
20316 && ( fd == rhs.fd );
20317 }
20318
20319 bool operator!=( ImportSemaphoreFdInfoKHX const& rhs ) const
20320 {
20321 return !operator==( rhs );
20322 }
20323
20324 private:
20325 StructureType sType;
20326
20327 public:
20328 const void* pNext;
20329 Semaphore semaphore;
20330 ExternalSemaphoreHandleTypeFlagBitsKHX handleType;
20331 int fd;
20332 };
20333 static_assert( sizeof( ImportSemaphoreFdInfoKHX ) == sizeof( VkImportSemaphoreFdInfoKHX ), "struct and wrapper have different size!" );
20334
20335 enum class ExternalSemaphoreFeatureFlagBitsKHX
20336 {
20337 eExportable = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHX,
20338 eImportable = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHX
20339 };
20340
20341 using ExternalSemaphoreFeatureFlagsKHX = Flags<ExternalSemaphoreFeatureFlagBitsKHX, VkExternalSemaphoreFeatureFlagsKHX>;
20342
20343 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlagsKHX operator|( ExternalSemaphoreFeatureFlagBitsKHX bit0, ExternalSemaphoreFeatureFlagBitsKHX bit1 )
20344 {
20345 return ExternalSemaphoreFeatureFlagsKHX( bit0 ) | bit1;
20346 }
20347
20348 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlagsKHX operator~( ExternalSemaphoreFeatureFlagBitsKHX bits )
20349 {
20350 return ~( ExternalSemaphoreFeatureFlagsKHX( bits ) );
20351 }
20352
20353 template <> struct FlagTraits<ExternalSemaphoreFeatureFlagBitsKHX>
20354 {
20355 enum
20356 {
20357 allFlags = VkFlags(ExternalSemaphoreFeatureFlagBitsKHX::eExportable) | VkFlags(ExternalSemaphoreFeatureFlagBitsKHX::eImportable)
20358 };
20359 };
20360
20361 struct ExternalSemaphorePropertiesKHX
20362 {
20363 operator const VkExternalSemaphorePropertiesKHX&() const
20364 {
20365 return *reinterpret_cast<const VkExternalSemaphorePropertiesKHX*>(this);
20366 }
20367
20368 bool operator==( ExternalSemaphorePropertiesKHX const& rhs ) const
20369 {
20370 return ( sType == rhs.sType )
20371 && ( pNext == rhs.pNext )
20372 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
20373 && ( compatibleHandleTypes == rhs.compatibleHandleTypes )
20374 && ( externalSemaphoreFeatures == rhs.externalSemaphoreFeatures );
20375 }
20376
20377 bool operator!=( ExternalSemaphorePropertiesKHX const& rhs ) const
20378 {
20379 return !operator==( rhs );
20380 }
20381
20382 private:
20383 StructureType sType;
20384
20385 public:
20386 void* pNext;
20387 ExternalSemaphoreHandleTypeFlagsKHX exportFromImportedHandleTypes;
20388 ExternalSemaphoreHandleTypeFlagsKHX compatibleHandleTypes;
20389 ExternalSemaphoreFeatureFlagsKHX externalSemaphoreFeatures;
20390 };
20391 static_assert( sizeof( ExternalSemaphorePropertiesKHX ) == sizeof( VkExternalSemaphorePropertiesKHX ), "struct and wrapper have different size!" );
20392
Mark Young39389872017-01-19 21:10:49 -070020393 enum class SurfaceCounterFlagBitsEXT
20394 {
20395 eVblankExt = VK_SURFACE_COUNTER_VBLANK_EXT
20396 };
20397
20398 using SurfaceCounterFlagsEXT = Flags<SurfaceCounterFlagBitsEXT, VkSurfaceCounterFlagsEXT>;
20399
20400 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator|( SurfaceCounterFlagBitsEXT bit0, SurfaceCounterFlagBitsEXT bit1 )
20401 {
20402 return SurfaceCounterFlagsEXT( bit0 ) | bit1;
20403 }
20404
20405 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator~( SurfaceCounterFlagBitsEXT bits )
20406 {
20407 return ~( SurfaceCounterFlagsEXT( bits ) );
20408 }
20409
20410 template <> struct FlagTraits<SurfaceCounterFlagBitsEXT>
20411 {
20412 enum
20413 {
20414 allFlags = VkFlags(SurfaceCounterFlagBitsEXT::eVblankExt)
20415 };
20416 };
20417
20418 struct SurfaceCapabilities2EXT
20419 {
20420 operator const VkSurfaceCapabilities2EXT&() const
20421 {
20422 return *reinterpret_cast<const VkSurfaceCapabilities2EXT*>(this);
20423 }
20424
20425 bool operator==( SurfaceCapabilities2EXT const& rhs ) const
20426 {
20427 return ( sType == rhs.sType )
20428 && ( pNext == rhs.pNext )
20429 && ( minImageCount == rhs.minImageCount )
20430 && ( maxImageCount == rhs.maxImageCount )
20431 && ( currentExtent == rhs.currentExtent )
20432 && ( minImageExtent == rhs.minImageExtent )
20433 && ( maxImageExtent == rhs.maxImageExtent )
20434 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
20435 && ( supportedTransforms == rhs.supportedTransforms )
20436 && ( currentTransform == rhs.currentTransform )
20437 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
20438 && ( supportedUsageFlags == rhs.supportedUsageFlags )
20439 && ( supportedSurfaceCounters == rhs.supportedSurfaceCounters );
20440 }
20441
20442 bool operator!=( SurfaceCapabilities2EXT const& rhs ) const
20443 {
20444 return !operator==( rhs );
20445 }
20446
20447 private:
20448 StructureType sType;
20449
20450 public:
20451 void* pNext;
20452 uint32_t minImageCount;
20453 uint32_t maxImageCount;
20454 Extent2D currentExtent;
20455 Extent2D minImageExtent;
20456 Extent2D maxImageExtent;
20457 uint32_t maxImageArrayLayers;
20458 SurfaceTransformFlagsKHR supportedTransforms;
20459 SurfaceTransformFlagBitsKHR currentTransform;
20460 CompositeAlphaFlagsKHR supportedCompositeAlpha;
20461 ImageUsageFlags supportedUsageFlags;
20462 SurfaceCounterFlagsEXT supportedSurfaceCounters;
20463 };
20464 static_assert( sizeof( SurfaceCapabilities2EXT ) == sizeof( VkSurfaceCapabilities2EXT ), "struct and wrapper have different size!" );
20465
20466 struct SwapchainCounterCreateInfoEXT
20467 {
20468 SwapchainCounterCreateInfoEXT( SurfaceCounterFlagsEXT surfaceCounters_ = SurfaceCounterFlagsEXT() )
20469 : sType( StructureType::eSwapchainCounterCreateInfoEXT )
20470 , pNext( nullptr )
20471 , surfaceCounters( surfaceCounters_ )
20472 {
20473 }
20474
20475 SwapchainCounterCreateInfoEXT( VkSwapchainCounterCreateInfoEXT const & rhs )
20476 {
20477 memcpy( this, &rhs, sizeof(SwapchainCounterCreateInfoEXT) );
20478 }
20479
20480 SwapchainCounterCreateInfoEXT& operator=( VkSwapchainCounterCreateInfoEXT const & rhs )
20481 {
20482 memcpy( this, &rhs, sizeof(SwapchainCounterCreateInfoEXT) );
20483 return *this;
20484 }
20485
Mark Young39389872017-01-19 21:10:49 -070020486 SwapchainCounterCreateInfoEXT& setPNext( const void* pNext_ )
20487 {
20488 pNext = pNext_;
20489 return *this;
20490 }
20491
20492 SwapchainCounterCreateInfoEXT& setSurfaceCounters( SurfaceCounterFlagsEXT surfaceCounters_ )
20493 {
20494 surfaceCounters = surfaceCounters_;
20495 return *this;
20496 }
20497
20498 operator const VkSwapchainCounterCreateInfoEXT&() const
20499 {
20500 return *reinterpret_cast<const VkSwapchainCounterCreateInfoEXT*>(this);
20501 }
20502
20503 bool operator==( SwapchainCounterCreateInfoEXT const& rhs ) const
20504 {
20505 return ( sType == rhs.sType )
20506 && ( pNext == rhs.pNext )
20507 && ( surfaceCounters == rhs.surfaceCounters );
20508 }
20509
20510 bool operator!=( SwapchainCounterCreateInfoEXT const& rhs ) const
20511 {
20512 return !operator==( rhs );
20513 }
20514
20515 private:
20516 StructureType sType;
20517
20518 public:
20519 const void* pNext;
20520 SurfaceCounterFlagsEXT surfaceCounters;
20521 };
20522 static_assert( sizeof( SwapchainCounterCreateInfoEXT ) == sizeof( VkSwapchainCounterCreateInfoEXT ), "struct and wrapper have different size!" );
20523
20524 enum class DisplayPowerStateEXT
20525 {
20526 eOff = VK_DISPLAY_POWER_STATE_OFF_EXT,
20527 eSuspend = VK_DISPLAY_POWER_STATE_SUSPEND_EXT,
20528 eOn = VK_DISPLAY_POWER_STATE_ON_EXT
20529 };
20530
20531 struct DisplayPowerInfoEXT
20532 {
20533 DisplayPowerInfoEXT( DisplayPowerStateEXT powerState_ = DisplayPowerStateEXT::eOff )
20534 : sType( StructureType::eDisplayPowerInfoEXT )
20535 , pNext( nullptr )
20536 , powerState( powerState_ )
20537 {
20538 }
20539
20540 DisplayPowerInfoEXT( VkDisplayPowerInfoEXT const & rhs )
20541 {
20542 memcpy( this, &rhs, sizeof(DisplayPowerInfoEXT) );
20543 }
20544
20545 DisplayPowerInfoEXT& operator=( VkDisplayPowerInfoEXT const & rhs )
20546 {
20547 memcpy( this, &rhs, sizeof(DisplayPowerInfoEXT) );
20548 return *this;
20549 }
20550
Mark Young39389872017-01-19 21:10:49 -070020551 DisplayPowerInfoEXT& setPNext( const void* pNext_ )
20552 {
20553 pNext = pNext_;
20554 return *this;
20555 }
20556
20557 DisplayPowerInfoEXT& setPowerState( DisplayPowerStateEXT powerState_ )
20558 {
20559 powerState = powerState_;
20560 return *this;
20561 }
20562
20563 operator const VkDisplayPowerInfoEXT&() const
20564 {
20565 return *reinterpret_cast<const VkDisplayPowerInfoEXT*>(this);
20566 }
20567
20568 bool operator==( DisplayPowerInfoEXT const& rhs ) const
20569 {
20570 return ( sType == rhs.sType )
20571 && ( pNext == rhs.pNext )
20572 && ( powerState == rhs.powerState );
20573 }
20574
20575 bool operator!=( DisplayPowerInfoEXT const& rhs ) const
20576 {
20577 return !operator==( rhs );
20578 }
20579
20580 private:
20581 StructureType sType;
20582
20583 public:
20584 const void* pNext;
20585 DisplayPowerStateEXT powerState;
20586 };
20587 static_assert( sizeof( DisplayPowerInfoEXT ) == sizeof( VkDisplayPowerInfoEXT ), "struct and wrapper have different size!" );
20588
20589 enum class DeviceEventTypeEXT
20590 {
20591 eDisplayHotplug = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT
20592 };
20593
20594 struct DeviceEventInfoEXT
20595 {
20596 DeviceEventInfoEXT( DeviceEventTypeEXT deviceEvent_ = DeviceEventTypeEXT::eDisplayHotplug )
20597 : sType( StructureType::eDeviceEventInfoEXT )
20598 , pNext( nullptr )
20599 , deviceEvent( deviceEvent_ )
20600 {
20601 }
20602
20603 DeviceEventInfoEXT( VkDeviceEventInfoEXT const & rhs )
20604 {
20605 memcpy( this, &rhs, sizeof(DeviceEventInfoEXT) );
20606 }
20607
20608 DeviceEventInfoEXT& operator=( VkDeviceEventInfoEXT const & rhs )
20609 {
20610 memcpy( this, &rhs, sizeof(DeviceEventInfoEXT) );
20611 return *this;
20612 }
20613
Mark Young39389872017-01-19 21:10:49 -070020614 DeviceEventInfoEXT& setPNext( const void* pNext_ )
20615 {
20616 pNext = pNext_;
20617 return *this;
20618 }
20619
20620 DeviceEventInfoEXT& setDeviceEvent( DeviceEventTypeEXT deviceEvent_ )
20621 {
20622 deviceEvent = deviceEvent_;
20623 return *this;
20624 }
20625
20626 operator const VkDeviceEventInfoEXT&() const
20627 {
20628 return *reinterpret_cast<const VkDeviceEventInfoEXT*>(this);
20629 }
20630
20631 bool operator==( DeviceEventInfoEXT const& rhs ) const
20632 {
20633 return ( sType == rhs.sType )
20634 && ( pNext == rhs.pNext )
20635 && ( deviceEvent == rhs.deviceEvent );
20636 }
20637
20638 bool operator!=( DeviceEventInfoEXT const& rhs ) const
20639 {
20640 return !operator==( rhs );
20641 }
20642
20643 private:
20644 StructureType sType;
20645
20646 public:
20647 const void* pNext;
20648 DeviceEventTypeEXT deviceEvent;
20649 };
20650 static_assert( sizeof( DeviceEventInfoEXT ) == sizeof( VkDeviceEventInfoEXT ), "struct and wrapper have different size!" );
20651
20652 enum class DisplayEventTypeEXT
20653 {
20654 eFirstPixelOut = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT
20655 };
20656
20657 struct DisplayEventInfoEXT
20658 {
20659 DisplayEventInfoEXT( DisplayEventTypeEXT displayEvent_ = DisplayEventTypeEXT::eFirstPixelOut )
20660 : sType( StructureType::eDisplayEventInfoEXT )
20661 , pNext( nullptr )
20662 , displayEvent( displayEvent_ )
20663 {
20664 }
20665
20666 DisplayEventInfoEXT( VkDisplayEventInfoEXT const & rhs )
20667 {
20668 memcpy( this, &rhs, sizeof(DisplayEventInfoEXT) );
20669 }
20670
20671 DisplayEventInfoEXT& operator=( VkDisplayEventInfoEXT const & rhs )
20672 {
20673 memcpy( this, &rhs, sizeof(DisplayEventInfoEXT) );
20674 return *this;
20675 }
20676
Mark Young39389872017-01-19 21:10:49 -070020677 DisplayEventInfoEXT& setPNext( const void* pNext_ )
20678 {
20679 pNext = pNext_;
20680 return *this;
20681 }
20682
20683 DisplayEventInfoEXT& setDisplayEvent( DisplayEventTypeEXT displayEvent_ )
20684 {
20685 displayEvent = displayEvent_;
20686 return *this;
20687 }
20688
20689 operator const VkDisplayEventInfoEXT&() const
20690 {
20691 return *reinterpret_cast<const VkDisplayEventInfoEXT*>(this);
20692 }
20693
20694 bool operator==( DisplayEventInfoEXT const& rhs ) const
20695 {
20696 return ( sType == rhs.sType )
20697 && ( pNext == rhs.pNext )
20698 && ( displayEvent == rhs.displayEvent );
20699 }
20700
20701 bool operator!=( DisplayEventInfoEXT const& rhs ) const
20702 {
20703 return !operator==( rhs );
20704 }
20705
20706 private:
20707 StructureType sType;
20708
20709 public:
20710 const void* pNext;
20711 DisplayEventTypeEXT displayEvent;
20712 };
20713 static_assert( sizeof( DisplayEventInfoEXT ) == sizeof( VkDisplayEventInfoEXT ), "struct and wrapper have different size!" );
20714
Mark Young0f183a82017-02-28 09:58:04 -070020715 enum class PeerMemoryFeatureFlagBitsKHX
20716 {
20717 eCopySrc = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX,
20718 eCopyDst = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX,
20719 eGenericSrc = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX,
20720 eGenericDst = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX
20721 };
20722
20723 using PeerMemoryFeatureFlagsKHX = Flags<PeerMemoryFeatureFlagBitsKHX, VkPeerMemoryFeatureFlagsKHX>;
20724
20725 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX operator|( PeerMemoryFeatureFlagBitsKHX bit0, PeerMemoryFeatureFlagBitsKHX bit1 )
20726 {
20727 return PeerMemoryFeatureFlagsKHX( bit0 ) | bit1;
20728 }
20729
20730 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX operator~( PeerMemoryFeatureFlagBitsKHX bits )
20731 {
20732 return ~( PeerMemoryFeatureFlagsKHX( bits ) );
20733 }
20734
20735 template <> struct FlagTraits<PeerMemoryFeatureFlagBitsKHX>
20736 {
20737 enum
20738 {
20739 allFlags = VkFlags(PeerMemoryFeatureFlagBitsKHX::eCopySrc) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eCopyDst) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eGenericSrc) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eGenericDst)
20740 };
20741 };
20742
20743 enum class MemoryAllocateFlagBitsKHX
20744 {
20745 eDeviceMask = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX
20746 };
20747
20748 using MemoryAllocateFlagsKHX = Flags<MemoryAllocateFlagBitsKHX, VkMemoryAllocateFlagsKHX>;
20749
20750 VULKAN_HPP_INLINE MemoryAllocateFlagsKHX operator|( MemoryAllocateFlagBitsKHX bit0, MemoryAllocateFlagBitsKHX bit1 )
20751 {
20752 return MemoryAllocateFlagsKHX( bit0 ) | bit1;
20753 }
20754
20755 VULKAN_HPP_INLINE MemoryAllocateFlagsKHX operator~( MemoryAllocateFlagBitsKHX bits )
20756 {
20757 return ~( MemoryAllocateFlagsKHX( bits ) );
20758 }
20759
20760 template <> struct FlagTraits<MemoryAllocateFlagBitsKHX>
20761 {
20762 enum
20763 {
20764 allFlags = VkFlags(MemoryAllocateFlagBitsKHX::eDeviceMask)
20765 };
20766 };
20767
20768 struct MemoryAllocateFlagsInfoKHX
20769 {
20770 MemoryAllocateFlagsInfoKHX( MemoryAllocateFlagsKHX flags_ = MemoryAllocateFlagsKHX(), uint32_t deviceMask_ = 0 )
20771 : sType( StructureType::eMemoryAllocateFlagsInfoKHX )
20772 , pNext( nullptr )
20773 , flags( flags_ )
20774 , deviceMask( deviceMask_ )
20775 {
20776 }
20777
20778 MemoryAllocateFlagsInfoKHX( VkMemoryAllocateFlagsInfoKHX const & rhs )
20779 {
20780 memcpy( this, &rhs, sizeof(MemoryAllocateFlagsInfoKHX) );
20781 }
20782
20783 MemoryAllocateFlagsInfoKHX& operator=( VkMemoryAllocateFlagsInfoKHX const & rhs )
20784 {
20785 memcpy( this, &rhs, sizeof(MemoryAllocateFlagsInfoKHX) );
20786 return *this;
20787 }
20788
20789 MemoryAllocateFlagsInfoKHX& setPNext( const void* pNext_ )
20790 {
20791 pNext = pNext_;
20792 return *this;
20793 }
20794
20795 MemoryAllocateFlagsInfoKHX& setFlags( MemoryAllocateFlagsKHX flags_ )
20796 {
20797 flags = flags_;
20798 return *this;
20799 }
20800
20801 MemoryAllocateFlagsInfoKHX& setDeviceMask( uint32_t deviceMask_ )
20802 {
20803 deviceMask = deviceMask_;
20804 return *this;
20805 }
20806
20807 operator const VkMemoryAllocateFlagsInfoKHX&() const
20808 {
20809 return *reinterpret_cast<const VkMemoryAllocateFlagsInfoKHX*>(this);
20810 }
20811
20812 bool operator==( MemoryAllocateFlagsInfoKHX const& rhs ) const
20813 {
20814 return ( sType == rhs.sType )
20815 && ( pNext == rhs.pNext )
20816 && ( flags == rhs.flags )
20817 && ( deviceMask == rhs.deviceMask );
20818 }
20819
20820 bool operator!=( MemoryAllocateFlagsInfoKHX const& rhs ) const
20821 {
20822 return !operator==( rhs );
20823 }
20824
20825 private:
20826 StructureType sType;
20827
20828 public:
20829 const void* pNext;
20830 MemoryAllocateFlagsKHX flags;
20831 uint32_t deviceMask;
20832 };
20833 static_assert( sizeof( MemoryAllocateFlagsInfoKHX ) == sizeof( VkMemoryAllocateFlagsInfoKHX ), "struct and wrapper have different size!" );
20834
20835 enum class DeviceGroupPresentModeFlagBitsKHX
20836 {
20837 eLocal = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX,
20838 eRemote = VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX,
20839 eSum = VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX,
20840 eLocalMultiDevice = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX
20841 };
20842
20843 using DeviceGroupPresentModeFlagsKHX = Flags<DeviceGroupPresentModeFlagBitsKHX, VkDeviceGroupPresentModeFlagsKHX>;
20844
20845 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHX operator|( DeviceGroupPresentModeFlagBitsKHX bit0, DeviceGroupPresentModeFlagBitsKHX bit1 )
20846 {
20847 return DeviceGroupPresentModeFlagsKHX( bit0 ) | bit1;
20848 }
20849
20850 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHX operator~( DeviceGroupPresentModeFlagBitsKHX bits )
20851 {
20852 return ~( DeviceGroupPresentModeFlagsKHX( bits ) );
20853 }
20854
20855 template <> struct FlagTraits<DeviceGroupPresentModeFlagBitsKHX>
20856 {
20857 enum
20858 {
20859 allFlags = VkFlags(DeviceGroupPresentModeFlagBitsKHX::eLocal) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eRemote) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eSum) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice)
20860 };
20861 };
20862
20863 struct DeviceGroupPresentCapabilitiesKHX
20864 {
20865 operator const VkDeviceGroupPresentCapabilitiesKHX&() const
20866 {
20867 return *reinterpret_cast<const VkDeviceGroupPresentCapabilitiesKHX*>(this);
20868 }
20869
20870 bool operator==( DeviceGroupPresentCapabilitiesKHX const& rhs ) const
20871 {
20872 return ( sType == rhs.sType )
20873 && ( pNext == rhs.pNext )
20874 && ( memcmp( presentMask, rhs.presentMask, VK_MAX_DEVICE_GROUP_SIZE_KHX * sizeof( uint32_t ) ) == 0 )
20875 && ( modes == rhs.modes );
20876 }
20877
20878 bool operator!=( DeviceGroupPresentCapabilitiesKHX const& rhs ) const
20879 {
20880 return !operator==( rhs );
20881 }
20882
20883 private:
20884 StructureType sType;
20885
20886 public:
20887 const void* pNext;
20888 uint32_t presentMask[VK_MAX_DEVICE_GROUP_SIZE_KHX];
20889 DeviceGroupPresentModeFlagsKHX modes;
20890 };
20891 static_assert( sizeof( DeviceGroupPresentCapabilitiesKHX ) == sizeof( VkDeviceGroupPresentCapabilitiesKHX ), "struct and wrapper have different size!" );
20892
20893 struct DeviceGroupPresentInfoKHX
20894 {
20895 DeviceGroupPresentInfoKHX( uint32_t swapchainCount_ = 0, const uint32_t* pDeviceMasks_ = nullptr, DeviceGroupPresentModeFlagBitsKHX mode_ = DeviceGroupPresentModeFlagBitsKHX::eLocal )
20896 : sType( StructureType::eDeviceGroupPresentInfoKHX )
20897 , pNext( nullptr )
20898 , swapchainCount( swapchainCount_ )
20899 , pDeviceMasks( pDeviceMasks_ )
20900 , mode( mode_ )
20901 {
20902 }
20903
20904 DeviceGroupPresentInfoKHX( VkDeviceGroupPresentInfoKHX const & rhs )
20905 {
20906 memcpy( this, &rhs, sizeof(DeviceGroupPresentInfoKHX) );
20907 }
20908
20909 DeviceGroupPresentInfoKHX& operator=( VkDeviceGroupPresentInfoKHX const & rhs )
20910 {
20911 memcpy( this, &rhs, sizeof(DeviceGroupPresentInfoKHX) );
20912 return *this;
20913 }
20914
20915 DeviceGroupPresentInfoKHX& setPNext( const void* pNext_ )
20916 {
20917 pNext = pNext_;
20918 return *this;
20919 }
20920
20921 DeviceGroupPresentInfoKHX& setSwapchainCount( uint32_t swapchainCount_ )
20922 {
20923 swapchainCount = swapchainCount_;
20924 return *this;
20925 }
20926
20927 DeviceGroupPresentInfoKHX& setPDeviceMasks( const uint32_t* pDeviceMasks_ )
20928 {
20929 pDeviceMasks = pDeviceMasks_;
20930 return *this;
20931 }
20932
20933 DeviceGroupPresentInfoKHX& setMode( DeviceGroupPresentModeFlagBitsKHX mode_ )
20934 {
20935 mode = mode_;
20936 return *this;
20937 }
20938
20939 operator const VkDeviceGroupPresentInfoKHX&() const
20940 {
20941 return *reinterpret_cast<const VkDeviceGroupPresentInfoKHX*>(this);
20942 }
20943
20944 bool operator==( DeviceGroupPresentInfoKHX const& rhs ) const
20945 {
20946 return ( sType == rhs.sType )
20947 && ( pNext == rhs.pNext )
20948 && ( swapchainCount == rhs.swapchainCount )
20949 && ( pDeviceMasks == rhs.pDeviceMasks )
20950 && ( mode == rhs.mode );
20951 }
20952
20953 bool operator!=( DeviceGroupPresentInfoKHX const& rhs ) const
20954 {
20955 return !operator==( rhs );
20956 }
20957
20958 private:
20959 StructureType sType;
20960
20961 public:
20962 const void* pNext;
20963 uint32_t swapchainCount;
20964 const uint32_t* pDeviceMasks;
20965 DeviceGroupPresentModeFlagBitsKHX mode;
20966 };
20967 static_assert( sizeof( DeviceGroupPresentInfoKHX ) == sizeof( VkDeviceGroupPresentInfoKHX ), "struct and wrapper have different size!" );
20968
20969 struct DeviceGroupSwapchainCreateInfoKHX
20970 {
20971 DeviceGroupSwapchainCreateInfoKHX( DeviceGroupPresentModeFlagsKHX modes_ = DeviceGroupPresentModeFlagsKHX() )
20972 : sType( StructureType::eDeviceGroupSwapchainCreateInfoKHX )
20973 , pNext( nullptr )
20974 , modes( modes_ )
20975 {
20976 }
20977
20978 DeviceGroupSwapchainCreateInfoKHX( VkDeviceGroupSwapchainCreateInfoKHX const & rhs )
20979 {
20980 memcpy( this, &rhs, sizeof(DeviceGroupSwapchainCreateInfoKHX) );
20981 }
20982
20983 DeviceGroupSwapchainCreateInfoKHX& operator=( VkDeviceGroupSwapchainCreateInfoKHX const & rhs )
20984 {
20985 memcpy( this, &rhs, sizeof(DeviceGroupSwapchainCreateInfoKHX) );
20986 return *this;
20987 }
20988
20989 DeviceGroupSwapchainCreateInfoKHX& setPNext( const void* pNext_ )
20990 {
20991 pNext = pNext_;
20992 return *this;
20993 }
20994
20995 DeviceGroupSwapchainCreateInfoKHX& setModes( DeviceGroupPresentModeFlagsKHX modes_ )
20996 {
20997 modes = modes_;
20998 return *this;
20999 }
21000
21001 operator const VkDeviceGroupSwapchainCreateInfoKHX&() const
21002 {
21003 return *reinterpret_cast<const VkDeviceGroupSwapchainCreateInfoKHX*>(this);
21004 }
21005
21006 bool operator==( DeviceGroupSwapchainCreateInfoKHX const& rhs ) const
21007 {
21008 return ( sType == rhs.sType )
21009 && ( pNext == rhs.pNext )
21010 && ( modes == rhs.modes );
21011 }
21012
21013 bool operator!=( DeviceGroupSwapchainCreateInfoKHX const& rhs ) const
21014 {
21015 return !operator==( rhs );
21016 }
21017
21018 private:
21019 StructureType sType;
21020
21021 public:
21022 const void* pNext;
21023 DeviceGroupPresentModeFlagsKHX modes;
21024 };
21025 static_assert( sizeof( DeviceGroupSwapchainCreateInfoKHX ) == sizeof( VkDeviceGroupSwapchainCreateInfoKHX ), "struct and wrapper have different size!" );
21026
21027 enum class SwapchainCreateFlagBitsKHR
21028 {
21029 eBindSfrKHX = VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX
21030 };
21031
21032 using SwapchainCreateFlagsKHR = Flags<SwapchainCreateFlagBitsKHR, VkSwapchainCreateFlagsKHR>;
21033
21034 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator|( SwapchainCreateFlagBitsKHR bit0, SwapchainCreateFlagBitsKHR bit1 )
21035 {
21036 return SwapchainCreateFlagsKHR( bit0 ) | bit1;
21037 }
21038
21039 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator~( SwapchainCreateFlagBitsKHR bits )
21040 {
21041 return ~( SwapchainCreateFlagsKHR( bits ) );
21042 }
21043
21044 template <> struct FlagTraits<SwapchainCreateFlagBitsKHR>
21045 {
21046 enum
21047 {
21048 allFlags = VkFlags(SwapchainCreateFlagBitsKHR::eBindSfrKHX)
21049 };
21050 };
21051
21052 struct SwapchainCreateInfoKHR
21053 {
21054 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() )
21055 : sType( StructureType::eSwapchainCreateInfoKHR )
21056 , pNext( nullptr )
21057 , flags( flags_ )
21058 , surface( surface_ )
21059 , minImageCount( minImageCount_ )
21060 , imageFormat( imageFormat_ )
21061 , imageColorSpace( imageColorSpace_ )
21062 , imageExtent( imageExtent_ )
21063 , imageArrayLayers( imageArrayLayers_ )
21064 , imageUsage( imageUsage_ )
21065 , imageSharingMode( imageSharingMode_ )
21066 , queueFamilyIndexCount( queueFamilyIndexCount_ )
21067 , pQueueFamilyIndices( pQueueFamilyIndices_ )
21068 , preTransform( preTransform_ )
21069 , compositeAlpha( compositeAlpha_ )
21070 , presentMode( presentMode_ )
21071 , clipped( clipped_ )
21072 , oldSwapchain( oldSwapchain_ )
21073 {
21074 }
21075
21076 SwapchainCreateInfoKHR( VkSwapchainCreateInfoKHR const & rhs )
21077 {
21078 memcpy( this, &rhs, sizeof(SwapchainCreateInfoKHR) );
21079 }
21080
21081 SwapchainCreateInfoKHR& operator=( VkSwapchainCreateInfoKHR const & rhs )
21082 {
21083 memcpy( this, &rhs, sizeof(SwapchainCreateInfoKHR) );
21084 return *this;
21085 }
21086
21087 SwapchainCreateInfoKHR& setPNext( const void* pNext_ )
21088 {
21089 pNext = pNext_;
21090 return *this;
21091 }
21092
21093 SwapchainCreateInfoKHR& setFlags( SwapchainCreateFlagsKHR flags_ )
21094 {
21095 flags = flags_;
21096 return *this;
21097 }
21098
21099 SwapchainCreateInfoKHR& setSurface( SurfaceKHR surface_ )
21100 {
21101 surface = surface_;
21102 return *this;
21103 }
21104
21105 SwapchainCreateInfoKHR& setMinImageCount( uint32_t minImageCount_ )
21106 {
21107 minImageCount = minImageCount_;
21108 return *this;
21109 }
21110
21111 SwapchainCreateInfoKHR& setImageFormat( Format imageFormat_ )
21112 {
21113 imageFormat = imageFormat_;
21114 return *this;
21115 }
21116
21117 SwapchainCreateInfoKHR& setImageColorSpace( ColorSpaceKHR imageColorSpace_ )
21118 {
21119 imageColorSpace = imageColorSpace_;
21120 return *this;
21121 }
21122
21123 SwapchainCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
21124 {
21125 imageExtent = imageExtent_;
21126 return *this;
21127 }
21128
21129 SwapchainCreateInfoKHR& setImageArrayLayers( uint32_t imageArrayLayers_ )
21130 {
21131 imageArrayLayers = imageArrayLayers_;
21132 return *this;
21133 }
21134
21135 SwapchainCreateInfoKHR& setImageUsage( ImageUsageFlags imageUsage_ )
21136 {
21137 imageUsage = imageUsage_;
21138 return *this;
21139 }
21140
21141 SwapchainCreateInfoKHR& setImageSharingMode( SharingMode imageSharingMode_ )
21142 {
21143 imageSharingMode = imageSharingMode_;
21144 return *this;
21145 }
21146
21147 SwapchainCreateInfoKHR& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
21148 {
21149 queueFamilyIndexCount = queueFamilyIndexCount_;
21150 return *this;
21151 }
21152
21153 SwapchainCreateInfoKHR& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
21154 {
21155 pQueueFamilyIndices = pQueueFamilyIndices_;
21156 return *this;
21157 }
21158
21159 SwapchainCreateInfoKHR& setPreTransform( SurfaceTransformFlagBitsKHR preTransform_ )
21160 {
21161 preTransform = preTransform_;
21162 return *this;
21163 }
21164
21165 SwapchainCreateInfoKHR& setCompositeAlpha( CompositeAlphaFlagBitsKHR compositeAlpha_ )
21166 {
21167 compositeAlpha = compositeAlpha_;
21168 return *this;
21169 }
21170
21171 SwapchainCreateInfoKHR& setPresentMode( PresentModeKHR presentMode_ )
21172 {
21173 presentMode = presentMode_;
21174 return *this;
21175 }
21176
21177 SwapchainCreateInfoKHR& setClipped( Bool32 clipped_ )
21178 {
21179 clipped = clipped_;
21180 return *this;
21181 }
21182
21183 SwapchainCreateInfoKHR& setOldSwapchain( SwapchainKHR oldSwapchain_ )
21184 {
21185 oldSwapchain = oldSwapchain_;
21186 return *this;
21187 }
21188
21189 operator const VkSwapchainCreateInfoKHR&() const
21190 {
21191 return *reinterpret_cast<const VkSwapchainCreateInfoKHR*>(this);
21192 }
21193
21194 bool operator==( SwapchainCreateInfoKHR const& rhs ) const
21195 {
21196 return ( sType == rhs.sType )
21197 && ( pNext == rhs.pNext )
21198 && ( flags == rhs.flags )
21199 && ( surface == rhs.surface )
21200 && ( minImageCount == rhs.minImageCount )
21201 && ( imageFormat == rhs.imageFormat )
21202 && ( imageColorSpace == rhs.imageColorSpace )
21203 && ( imageExtent == rhs.imageExtent )
21204 && ( imageArrayLayers == rhs.imageArrayLayers )
21205 && ( imageUsage == rhs.imageUsage )
21206 && ( imageSharingMode == rhs.imageSharingMode )
21207 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
21208 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
21209 && ( preTransform == rhs.preTransform )
21210 && ( compositeAlpha == rhs.compositeAlpha )
21211 && ( presentMode == rhs.presentMode )
21212 && ( clipped == rhs.clipped )
21213 && ( oldSwapchain == rhs.oldSwapchain );
21214 }
21215
21216 bool operator!=( SwapchainCreateInfoKHR const& rhs ) const
21217 {
21218 return !operator==( rhs );
21219 }
21220
21221 private:
21222 StructureType sType;
21223
21224 public:
21225 const void* pNext;
21226 SwapchainCreateFlagsKHR flags;
21227 SurfaceKHR surface;
21228 uint32_t minImageCount;
21229 Format imageFormat;
21230 ColorSpaceKHR imageColorSpace;
21231 Extent2D imageExtent;
21232 uint32_t imageArrayLayers;
21233 ImageUsageFlags imageUsage;
21234 SharingMode imageSharingMode;
21235 uint32_t queueFamilyIndexCount;
21236 const uint32_t* pQueueFamilyIndices;
21237 SurfaceTransformFlagBitsKHR preTransform;
21238 CompositeAlphaFlagBitsKHR compositeAlpha;
21239 PresentModeKHR presentMode;
21240 Bool32 clipped;
21241 SwapchainKHR oldSwapchain;
21242 };
21243 static_assert( sizeof( SwapchainCreateInfoKHR ) == sizeof( VkSwapchainCreateInfoKHR ), "struct and wrapper have different size!" );
21244
21245 enum class ViewportCoordinateSwizzleNV
21246 {
21247 ePositiveX = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV,
21248 eNegativeX = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV,
21249 ePositiveY = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV,
21250 eNegativeY = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV,
21251 ePositiveZ = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV,
21252 eNegativeZ = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV,
21253 ePositiveW = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV,
21254 eNegativeW = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV
21255 };
21256
21257 struct ViewportSwizzleNV
21258 {
21259 ViewportSwizzleNV( ViewportCoordinateSwizzleNV x_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV y_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV z_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV w_ = ViewportCoordinateSwizzleNV::ePositiveX )
21260 : x( x_ )
21261 , y( y_ )
21262 , z( z_ )
21263 , w( w_ )
21264 {
21265 }
21266
21267 ViewportSwizzleNV( VkViewportSwizzleNV const & rhs )
21268 {
21269 memcpy( this, &rhs, sizeof(ViewportSwizzleNV) );
21270 }
21271
21272 ViewportSwizzleNV& operator=( VkViewportSwizzleNV const & rhs )
21273 {
21274 memcpy( this, &rhs, sizeof(ViewportSwizzleNV) );
21275 return *this;
21276 }
21277
21278 ViewportSwizzleNV& setX( ViewportCoordinateSwizzleNV x_ )
21279 {
21280 x = x_;
21281 return *this;
21282 }
21283
21284 ViewportSwizzleNV& setY( ViewportCoordinateSwizzleNV y_ )
21285 {
21286 y = y_;
21287 return *this;
21288 }
21289
21290 ViewportSwizzleNV& setZ( ViewportCoordinateSwizzleNV z_ )
21291 {
21292 z = z_;
21293 return *this;
21294 }
21295
21296 ViewportSwizzleNV& setW( ViewportCoordinateSwizzleNV w_ )
21297 {
21298 w = w_;
21299 return *this;
21300 }
21301
21302 operator const VkViewportSwizzleNV&() const
21303 {
21304 return *reinterpret_cast<const VkViewportSwizzleNV*>(this);
21305 }
21306
21307 bool operator==( ViewportSwizzleNV const& rhs ) const
21308 {
21309 return ( x == rhs.x )
21310 && ( y == rhs.y )
21311 && ( z == rhs.z )
21312 && ( w == rhs.w );
21313 }
21314
21315 bool operator!=( ViewportSwizzleNV const& rhs ) const
21316 {
21317 return !operator==( rhs );
21318 }
21319
21320 ViewportCoordinateSwizzleNV x;
21321 ViewportCoordinateSwizzleNV y;
21322 ViewportCoordinateSwizzleNV z;
21323 ViewportCoordinateSwizzleNV w;
21324 };
21325 static_assert( sizeof( ViewportSwizzleNV ) == sizeof( VkViewportSwizzleNV ), "struct and wrapper have different size!" );
21326
21327 struct PipelineViewportSwizzleStateCreateInfoNV
21328 {
21329 PipelineViewportSwizzleStateCreateInfoNV( PipelineViewportSwizzleStateCreateFlagsNV flags_ = PipelineViewportSwizzleStateCreateFlagsNV(), uint32_t viewportCount_ = 0, const ViewportSwizzleNV* pViewportSwizzles_ = nullptr )
21330 : sType( StructureType::ePipelineViewportSwizzleStateCreateInfoNV )
21331 , pNext( nullptr )
21332 , flags( flags_ )
21333 , viewportCount( viewportCount_ )
21334 , pViewportSwizzles( pViewportSwizzles_ )
21335 {
21336 }
21337
21338 PipelineViewportSwizzleStateCreateInfoNV( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
21339 {
21340 memcpy( this, &rhs, sizeof(PipelineViewportSwizzleStateCreateInfoNV) );
21341 }
21342
21343 PipelineViewportSwizzleStateCreateInfoNV& operator=( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
21344 {
21345 memcpy( this, &rhs, sizeof(PipelineViewportSwizzleStateCreateInfoNV) );
21346 return *this;
21347 }
21348
21349 PipelineViewportSwizzleStateCreateInfoNV& setPNext( const void* pNext_ )
21350 {
21351 pNext = pNext_;
21352 return *this;
21353 }
21354
21355 PipelineViewportSwizzleStateCreateInfoNV& setFlags( PipelineViewportSwizzleStateCreateFlagsNV flags_ )
21356 {
21357 flags = flags_;
21358 return *this;
21359 }
21360
21361 PipelineViewportSwizzleStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
21362 {
21363 viewportCount = viewportCount_;
21364 return *this;
21365 }
21366
21367 PipelineViewportSwizzleStateCreateInfoNV& setPViewportSwizzles( const ViewportSwizzleNV* pViewportSwizzles_ )
21368 {
21369 pViewportSwizzles = pViewportSwizzles_;
21370 return *this;
21371 }
21372
21373 operator const VkPipelineViewportSwizzleStateCreateInfoNV&() const
21374 {
21375 return *reinterpret_cast<const VkPipelineViewportSwizzleStateCreateInfoNV*>(this);
21376 }
21377
21378 bool operator==( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
21379 {
21380 return ( sType == rhs.sType )
21381 && ( pNext == rhs.pNext )
21382 && ( flags == rhs.flags )
21383 && ( viewportCount == rhs.viewportCount )
21384 && ( pViewportSwizzles == rhs.pViewportSwizzles );
21385 }
21386
21387 bool operator!=( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
21388 {
21389 return !operator==( rhs );
21390 }
21391
21392 private:
21393 StructureType sType;
21394
21395 public:
21396 const void* pNext;
21397 PipelineViewportSwizzleStateCreateFlagsNV flags;
21398 uint32_t viewportCount;
21399 const ViewportSwizzleNV* pViewportSwizzles;
21400 };
21401 static_assert( sizeof( PipelineViewportSwizzleStateCreateInfoNV ) == sizeof( VkPipelineViewportSwizzleStateCreateInfoNV ), "struct and wrapper have different size!" );
21402
21403 enum class DiscardRectangleModeEXT
21404 {
21405 eInclusive = VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT,
21406 eExclusive = VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT
21407 };
21408
21409 struct PipelineDiscardRectangleStateCreateInfoEXT
21410 {
21411 PipelineDiscardRectangleStateCreateInfoEXT( PipelineDiscardRectangleStateCreateFlagsEXT flags_ = PipelineDiscardRectangleStateCreateFlagsEXT(), DiscardRectangleModeEXT discardRectangleMode_ = DiscardRectangleModeEXT::eInclusive, uint32_t discardRectangleCount_ = 0, const Rect2D* pDiscardRectangles_ = nullptr )
21412 : sType( StructureType::ePipelineDiscardRectangleStateCreateInfoEXT )
21413 , pNext( nullptr )
21414 , flags( flags_ )
21415 , discardRectangleMode( discardRectangleMode_ )
21416 , discardRectangleCount( discardRectangleCount_ )
21417 , pDiscardRectangles( pDiscardRectangles_ )
21418 {
21419 }
21420
21421 PipelineDiscardRectangleStateCreateInfoEXT( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
21422 {
21423 memcpy( this, &rhs, sizeof(PipelineDiscardRectangleStateCreateInfoEXT) );
21424 }
21425
21426 PipelineDiscardRectangleStateCreateInfoEXT& operator=( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
21427 {
21428 memcpy( this, &rhs, sizeof(PipelineDiscardRectangleStateCreateInfoEXT) );
21429 return *this;
21430 }
21431
21432 PipelineDiscardRectangleStateCreateInfoEXT& setPNext( const void* pNext_ )
21433 {
21434 pNext = pNext_;
21435 return *this;
21436 }
21437
21438 PipelineDiscardRectangleStateCreateInfoEXT& setFlags( PipelineDiscardRectangleStateCreateFlagsEXT flags_ )
21439 {
21440 flags = flags_;
21441 return *this;
21442 }
21443
21444 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleMode( DiscardRectangleModeEXT discardRectangleMode_ )
21445 {
21446 discardRectangleMode = discardRectangleMode_;
21447 return *this;
21448 }
21449
21450 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleCount( uint32_t discardRectangleCount_ )
21451 {
21452 discardRectangleCount = discardRectangleCount_;
21453 return *this;
21454 }
21455
21456 PipelineDiscardRectangleStateCreateInfoEXT& setPDiscardRectangles( const Rect2D* pDiscardRectangles_ )
21457 {
21458 pDiscardRectangles = pDiscardRectangles_;
21459 return *this;
21460 }
21461
21462 operator const VkPipelineDiscardRectangleStateCreateInfoEXT&() const
21463 {
21464 return *reinterpret_cast<const VkPipelineDiscardRectangleStateCreateInfoEXT*>(this);
21465 }
21466
21467 bool operator==( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
21468 {
21469 return ( sType == rhs.sType )
21470 && ( pNext == rhs.pNext )
21471 && ( flags == rhs.flags )
21472 && ( discardRectangleMode == rhs.discardRectangleMode )
21473 && ( discardRectangleCount == rhs.discardRectangleCount )
21474 && ( pDiscardRectangles == rhs.pDiscardRectangles );
21475 }
21476
21477 bool operator!=( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
21478 {
21479 return !operator==( rhs );
21480 }
21481
21482 private:
21483 StructureType sType;
21484
21485 public:
21486 const void* pNext;
21487 PipelineDiscardRectangleStateCreateFlagsEXT flags;
21488 DiscardRectangleModeEXT discardRectangleMode;
21489 uint32_t discardRectangleCount;
21490 const Rect2D* pDiscardRectangles;
21491 };
21492 static_assert( sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) == sizeof( VkPipelineDiscardRectangleStateCreateInfoEXT ), "struct and wrapper have different size!" );
21493
21494 enum class SubpassDescriptionFlagBits
21495 {
21496 ePerViewAttributesNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX,
21497 ePerViewPositionXOnlyNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX
21498 };
21499
21500 using SubpassDescriptionFlags = Flags<SubpassDescriptionFlagBits, VkSubpassDescriptionFlags>;
21501
21502 VULKAN_HPP_INLINE SubpassDescriptionFlags operator|( SubpassDescriptionFlagBits bit0, SubpassDescriptionFlagBits bit1 )
21503 {
21504 return SubpassDescriptionFlags( bit0 ) | bit1;
21505 }
21506
21507 VULKAN_HPP_INLINE SubpassDescriptionFlags operator~( SubpassDescriptionFlagBits bits )
21508 {
21509 return ~( SubpassDescriptionFlags( bits ) );
21510 }
21511
21512 template <> struct FlagTraits<SubpassDescriptionFlagBits>
21513 {
21514 enum
21515 {
21516 allFlags = VkFlags(SubpassDescriptionFlagBits::ePerViewAttributesNVX) | VkFlags(SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX)
21517 };
21518 };
21519
21520 struct SubpassDescription
21521 {
21522 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 )
21523 : flags( flags_ )
21524 , pipelineBindPoint( pipelineBindPoint_ )
21525 , inputAttachmentCount( inputAttachmentCount_ )
21526 , pInputAttachments( pInputAttachments_ )
21527 , colorAttachmentCount( colorAttachmentCount_ )
21528 , pColorAttachments( pColorAttachments_ )
21529 , pResolveAttachments( pResolveAttachments_ )
21530 , pDepthStencilAttachment( pDepthStencilAttachment_ )
21531 , preserveAttachmentCount( preserveAttachmentCount_ )
21532 , pPreserveAttachments( pPreserveAttachments_ )
21533 {
21534 }
21535
21536 SubpassDescription( VkSubpassDescription const & rhs )
21537 {
21538 memcpy( this, &rhs, sizeof(SubpassDescription) );
21539 }
21540
21541 SubpassDescription& operator=( VkSubpassDescription const & rhs )
21542 {
21543 memcpy( this, &rhs, sizeof(SubpassDescription) );
21544 return *this;
21545 }
21546
21547 SubpassDescription& setFlags( SubpassDescriptionFlags flags_ )
21548 {
21549 flags = flags_;
21550 return *this;
21551 }
21552
21553 SubpassDescription& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
21554 {
21555 pipelineBindPoint = pipelineBindPoint_;
21556 return *this;
21557 }
21558
21559 SubpassDescription& setInputAttachmentCount( uint32_t inputAttachmentCount_ )
21560 {
21561 inputAttachmentCount = inputAttachmentCount_;
21562 return *this;
21563 }
21564
21565 SubpassDescription& setPInputAttachments( const AttachmentReference* pInputAttachments_ )
21566 {
21567 pInputAttachments = pInputAttachments_;
21568 return *this;
21569 }
21570
21571 SubpassDescription& setColorAttachmentCount( uint32_t colorAttachmentCount_ )
21572 {
21573 colorAttachmentCount = colorAttachmentCount_;
21574 return *this;
21575 }
21576
21577 SubpassDescription& setPColorAttachments( const AttachmentReference* pColorAttachments_ )
21578 {
21579 pColorAttachments = pColorAttachments_;
21580 return *this;
21581 }
21582
21583 SubpassDescription& setPResolveAttachments( const AttachmentReference* pResolveAttachments_ )
21584 {
21585 pResolveAttachments = pResolveAttachments_;
21586 return *this;
21587 }
21588
21589 SubpassDescription& setPDepthStencilAttachment( const AttachmentReference* pDepthStencilAttachment_ )
21590 {
21591 pDepthStencilAttachment = pDepthStencilAttachment_;
21592 return *this;
21593 }
21594
21595 SubpassDescription& setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ )
21596 {
21597 preserveAttachmentCount = preserveAttachmentCount_;
21598 return *this;
21599 }
21600
21601 SubpassDescription& setPPreserveAttachments( const uint32_t* pPreserveAttachments_ )
21602 {
21603 pPreserveAttachments = pPreserveAttachments_;
21604 return *this;
21605 }
21606
21607 operator const VkSubpassDescription&() const
21608 {
21609 return *reinterpret_cast<const VkSubpassDescription*>(this);
21610 }
21611
21612 bool operator==( SubpassDescription const& rhs ) const
21613 {
21614 return ( flags == rhs.flags )
21615 && ( pipelineBindPoint == rhs.pipelineBindPoint )
21616 && ( inputAttachmentCount == rhs.inputAttachmentCount )
21617 && ( pInputAttachments == rhs.pInputAttachments )
21618 && ( colorAttachmentCount == rhs.colorAttachmentCount )
21619 && ( pColorAttachments == rhs.pColorAttachments )
21620 && ( pResolveAttachments == rhs.pResolveAttachments )
21621 && ( pDepthStencilAttachment == rhs.pDepthStencilAttachment )
21622 && ( preserveAttachmentCount == rhs.preserveAttachmentCount )
21623 && ( pPreserveAttachments == rhs.pPreserveAttachments );
21624 }
21625
21626 bool operator!=( SubpassDescription const& rhs ) const
21627 {
21628 return !operator==( rhs );
21629 }
21630
21631 SubpassDescriptionFlags flags;
21632 PipelineBindPoint pipelineBindPoint;
21633 uint32_t inputAttachmentCount;
21634 const AttachmentReference* pInputAttachments;
21635 uint32_t colorAttachmentCount;
21636 const AttachmentReference* pColorAttachments;
21637 const AttachmentReference* pResolveAttachments;
21638 const AttachmentReference* pDepthStencilAttachment;
21639 uint32_t preserveAttachmentCount;
21640 const uint32_t* pPreserveAttachments;
21641 };
21642 static_assert( sizeof( SubpassDescription ) == sizeof( VkSubpassDescription ), "struct and wrapper have different size!" );
21643
21644 struct RenderPassCreateInfo
21645 {
21646 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 )
21647 : sType( StructureType::eRenderPassCreateInfo )
21648 , pNext( nullptr )
21649 , flags( flags_ )
21650 , attachmentCount( attachmentCount_ )
21651 , pAttachments( pAttachments_ )
21652 , subpassCount( subpassCount_ )
21653 , pSubpasses( pSubpasses_ )
21654 , dependencyCount( dependencyCount_ )
21655 , pDependencies( pDependencies_ )
21656 {
21657 }
21658
21659 RenderPassCreateInfo( VkRenderPassCreateInfo const & rhs )
21660 {
21661 memcpy( this, &rhs, sizeof(RenderPassCreateInfo) );
21662 }
21663
21664 RenderPassCreateInfo& operator=( VkRenderPassCreateInfo const & rhs )
21665 {
21666 memcpy( this, &rhs, sizeof(RenderPassCreateInfo) );
21667 return *this;
21668 }
21669
21670 RenderPassCreateInfo& setPNext( const void* pNext_ )
21671 {
21672 pNext = pNext_;
21673 return *this;
21674 }
21675
21676 RenderPassCreateInfo& setFlags( RenderPassCreateFlags flags_ )
21677 {
21678 flags = flags_;
21679 return *this;
21680 }
21681
21682 RenderPassCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
21683 {
21684 attachmentCount = attachmentCount_;
21685 return *this;
21686 }
21687
21688 RenderPassCreateInfo& setPAttachments( const AttachmentDescription* pAttachments_ )
21689 {
21690 pAttachments = pAttachments_;
21691 return *this;
21692 }
21693
21694 RenderPassCreateInfo& setSubpassCount( uint32_t subpassCount_ )
21695 {
21696 subpassCount = subpassCount_;
21697 return *this;
21698 }
21699
21700 RenderPassCreateInfo& setPSubpasses( const SubpassDescription* pSubpasses_ )
21701 {
21702 pSubpasses = pSubpasses_;
21703 return *this;
21704 }
21705
21706 RenderPassCreateInfo& setDependencyCount( uint32_t dependencyCount_ )
21707 {
21708 dependencyCount = dependencyCount_;
21709 return *this;
21710 }
21711
21712 RenderPassCreateInfo& setPDependencies( const SubpassDependency* pDependencies_ )
21713 {
21714 pDependencies = pDependencies_;
21715 return *this;
21716 }
21717
21718 operator const VkRenderPassCreateInfo&() const
21719 {
21720 return *reinterpret_cast<const VkRenderPassCreateInfo*>(this);
21721 }
21722
21723 bool operator==( RenderPassCreateInfo const& rhs ) const
21724 {
21725 return ( sType == rhs.sType )
21726 && ( pNext == rhs.pNext )
21727 && ( flags == rhs.flags )
21728 && ( attachmentCount == rhs.attachmentCount )
21729 && ( pAttachments == rhs.pAttachments )
21730 && ( subpassCount == rhs.subpassCount )
21731 && ( pSubpasses == rhs.pSubpasses )
21732 && ( dependencyCount == rhs.dependencyCount )
21733 && ( pDependencies == rhs.pDependencies );
21734 }
21735
21736 bool operator!=( RenderPassCreateInfo const& rhs ) const
21737 {
21738 return !operator==( rhs );
21739 }
21740
21741 private:
21742 StructureType sType;
21743
21744 public:
21745 const void* pNext;
21746 RenderPassCreateFlags flags;
21747 uint32_t attachmentCount;
21748 const AttachmentDescription* pAttachments;
21749 uint32_t subpassCount;
21750 const SubpassDescription* pSubpasses;
21751 uint32_t dependencyCount;
21752 const SubpassDependency* pDependencies;
21753 };
21754 static_assert( sizeof( RenderPassCreateInfo ) == sizeof( VkRenderPassCreateInfo ), "struct and wrapper have different size!" );
21755
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021756 Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties );
21757#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21758 template <typename Allocator = std::allocator<LayerProperties>>
21759 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties();
21760#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21761
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021762 VULKAN_HPP_INLINE Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties )
21763 {
21764 return static_cast<Result>( vkEnumerateInstanceLayerProperties( pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
21765 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021766#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021767 template <typename Allocator>
21768 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties()
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021769 {
21770 std::vector<LayerProperties,Allocator> properties;
21771 uint32_t propertyCount;
21772 Result result;
21773 do
21774 {
21775 result = static_cast<Result>( vkEnumerateInstanceLayerProperties( &propertyCount, nullptr ) );
21776 if ( ( result == Result::eSuccess ) && propertyCount )
21777 {
21778 properties.resize( propertyCount );
21779 result = static_cast<Result>( vkEnumerateInstanceLayerProperties( &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
21780 }
21781 } while ( result == Result::eIncomplete );
21782 assert( propertyCount <= properties.size() );
21783 properties.resize( propertyCount );
21784 return createResultValue( result, properties, "vk::enumerateInstanceLayerProperties" );
21785 }
21786#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21787
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060021788
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021789 Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties );
21790#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21791 template <typename Allocator = std::allocator<ExtensionProperties>>
21792 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName = nullptr );
21793#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21794
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021795 VULKAN_HPP_INLINE Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties )
21796 {
21797 return static_cast<Result>( vkEnumerateInstanceExtensionProperties( pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
21798 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021799#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021800 template <typename Allocator>
21801 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021802 {
21803 std::vector<ExtensionProperties,Allocator> properties;
21804 uint32_t propertyCount;
21805 Result result;
21806 do
21807 {
21808 result = static_cast<Result>( vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
21809 if ( ( result == Result::eSuccess ) && propertyCount )
21810 {
21811 properties.resize( propertyCount );
21812 result = static_cast<Result>( vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
21813 }
21814 } while ( result == Result::eIncomplete );
21815 assert( propertyCount <= properties.size() );
21816 properties.resize( propertyCount );
21817 return createResultValue( result, properties, "vk::enumerateInstanceExtensionProperties" );
21818 }
21819#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21820
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060021821
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021822 // forward declarations
21823 struct CmdProcessCommandsInfoNVX;
21824
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021825 class CommandBuffer
21826 {
21827 public:
21828 CommandBuffer()
21829 : m_commandBuffer(VK_NULL_HANDLE)
21830 {}
21831
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070021832 CommandBuffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021833 : m_commandBuffer(VK_NULL_HANDLE)
21834 {}
21835
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070021836 VULKAN_HPP_TYPESAFE_EXPLICIT CommandBuffer(VkCommandBuffer commandBuffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021837 : m_commandBuffer(commandBuffer)
21838 {}
21839
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070021840#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021841 CommandBuffer& operator=(VkCommandBuffer commandBuffer)
21842 {
21843 m_commandBuffer = commandBuffer;
21844 return *this;
21845 }
21846#endif
21847
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070021848 CommandBuffer& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021849 {
21850 m_commandBuffer = VK_NULL_HANDLE;
21851 return *this;
21852 }
21853
Lenny Komowebf33162016-08-26 14:10:08 -060021854 bool operator==(CommandBuffer const &rhs) const
21855 {
21856 return m_commandBuffer == rhs.m_commandBuffer;
21857 }
21858
21859 bool operator!=(CommandBuffer const &rhs) const
21860 {
21861 return m_commandBuffer != rhs.m_commandBuffer;
21862 }
21863
21864 bool operator<(CommandBuffer const &rhs) const
21865 {
21866 return m_commandBuffer < rhs.m_commandBuffer;
21867 }
21868
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021869 Result begin( const CommandBufferBeginInfo* pBeginInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021870#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021871 ResultValueType<void>::type begin( const CommandBufferBeginInfo & beginInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021872#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21873
21874#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021875 Result end() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021876#else
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021877 ResultValueType<void>::type end() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021878#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21879
21880#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021881 Result reset( CommandBufferResetFlags flags ) const;
21882#else
21883 ResultValueType<void>::type reset( CommandBufferResetFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021884#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21885
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021886 void bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021887
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021888 void setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021889#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021890 void setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021891#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21892
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021893 void setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021894#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021895 void setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021896#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21897
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021898 void setLineWidth( float lineWidth ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021899
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021900 void setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const;
21901
21902 void setBlendConstants( const float blendConstants[4] ) const;
21903
21904 void setDepthBounds( float minDepthBounds, float maxDepthBounds ) const;
21905
21906 void setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const;
21907
21908 void setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const;
21909
21910 void setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const;
21911
21912 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 -060021913#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021914 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 -060021915#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21916
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021917 void bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021918
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021919 void bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021920#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021921 void bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021922#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21923
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021924 void draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021925
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021926 void drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const;
21927
21928 void drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const;
21929
21930 void drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const;
21931
Mark Young0f183a82017-02-28 09:58:04 -070021932 void dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021933
21934 void dispatchIndirect( Buffer buffer, DeviceSize offset ) const;
21935
21936 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021937#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021938 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021939#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21940
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021941 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021942#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021943 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021944#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21945
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021946 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 -060021947#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021948 void blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021949#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21950
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021951 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021952#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021953 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021954#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21955
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021956 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021957#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021958 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021959#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21960
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021961 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021962#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
21963 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021964 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021965#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21966
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021967 void fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021968
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021969 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021970#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021971 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021972#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21973
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021974 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021975#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021976 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021977#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21978
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021979 void clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021980#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021981 void clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021982#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21983
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021984 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021985#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021986 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021987#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21988
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021989 void setEvent( Event event, PipelineStageFlags stageMask ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060021990
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021991 void resetEvent( Event event, PipelineStageFlags stageMask ) const;
21992
21993 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 -060021994#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021995 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 -060021996#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
21997
Mark Lobodzinski36c33862017-02-13 10:15:53 -070021998 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 -060021999#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022000 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 -060022001#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22002
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022003 void beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022004
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022005 void endQuery( QueryPool queryPool, uint32_t query ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022006
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022007 void resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022008
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022009 void writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022010
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022011 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 -060022012
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022013 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022014#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22015 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022016 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022017#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22018
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022019 void beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022020#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022021 void beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022022#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22023
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022024 void nextSubpass( SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022025
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022026 void endRenderPass() const;
22027
22028 void executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022029#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022030 void executeCommands( ArrayProxy<const CommandBuffer> commandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022031#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22032
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022033 void debugMarkerBeginEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022034#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022035 DebugMarkerMarkerInfoEXT debugMarkerBeginEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022036#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22037
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022038 void debugMarkerEndEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022039
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022040 void debugMarkerInsertEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022041#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022042 DebugMarkerMarkerInfoEXT debugMarkerInsertEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022043#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22044
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022045 void drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022046
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022047 void drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const;
22048
22049 void processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022050#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022051 void processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022052#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22053
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022054 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022055#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022056 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070022057#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22058
Mark Young0f183a82017-02-28 09:58:04 -070022059 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites ) const;
22060#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22061 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites ) const;
22062#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22063
22064 void setDeviceMaskKHX( uint32_t deviceMask ) const;
22065
22066 void dispatchBaseKHX( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const;
22067
22068 void pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData ) const;
22069
22070 void setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings ) const;
22071#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22072 void setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings ) const;
22073#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22074
22075 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles ) const;
22076#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22077 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles ) const;
22078#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22079
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022080 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandBuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022081 {
22082 return m_commandBuffer;
22083 }
22084
22085 explicit operator bool() const
22086 {
22087 return m_commandBuffer != VK_NULL_HANDLE;
22088 }
22089
22090 bool operator!() const
22091 {
22092 return m_commandBuffer == VK_NULL_HANDLE;
22093 }
22094
22095 private:
22096 VkCommandBuffer m_commandBuffer;
22097 };
22098 static_assert( sizeof( CommandBuffer ) == sizeof( VkCommandBuffer ), "handle and wrapper have different size!" );
22099
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022100 VULKAN_HPP_INLINE Result CommandBuffer::begin( const CommandBufferBeginInfo* pBeginInfo ) const
22101 {
22102 return static_cast<Result>( vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( pBeginInfo ) ) );
22103 }
22104#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22105 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::begin( const CommandBufferBeginInfo & beginInfo ) const
22106 {
22107 Result result = static_cast<Result>( vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( &beginInfo ) ) );
22108 return createResultValue( result, "vk::CommandBuffer::begin" );
22109 }
22110#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22111
22112#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
22113 VULKAN_HPP_INLINE Result CommandBuffer::end() const
22114 {
22115 return static_cast<Result>( vkEndCommandBuffer( m_commandBuffer ) );
22116 }
22117#else
22118 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::end() const
22119 {
22120 Result result = static_cast<Result>( vkEndCommandBuffer( m_commandBuffer ) );
22121 return createResultValue( result, "vk::CommandBuffer::end" );
22122 }
22123#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22124
22125#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
22126 VULKAN_HPP_INLINE Result CommandBuffer::reset( CommandBufferResetFlags flags ) const
22127 {
22128 return static_cast<Result>( vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
22129 }
22130#else
22131 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::reset( CommandBufferResetFlags flags ) const
22132 {
22133 Result result = static_cast<Result>( vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
22134 return createResultValue( result, "vk::CommandBuffer::reset" );
22135 }
22136#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22137
22138 VULKAN_HPP_INLINE void CommandBuffer::bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline ) const
22139 {
22140 vkCmdBindPipeline( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipeline>( pipeline ) );
22141 }
22142
22143 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports ) const
22144 {
22145 vkCmdSetViewport( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewport*>( pViewports ) );
22146 }
22147#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22148 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports ) const
22149 {
22150 vkCmdSetViewport( m_commandBuffer, firstViewport, viewports.size() , reinterpret_cast<const VkViewport*>( viewports.data() ) );
22151 }
22152#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22153
22154 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors ) const
22155 {
22156 vkCmdSetScissor( m_commandBuffer, firstScissor, scissorCount, reinterpret_cast<const VkRect2D*>( pScissors ) );
22157 }
22158#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22159 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors ) const
22160 {
22161 vkCmdSetScissor( m_commandBuffer, firstScissor, scissors.size() , reinterpret_cast<const VkRect2D*>( scissors.data() ) );
22162 }
22163#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22164
22165 VULKAN_HPP_INLINE void CommandBuffer::setLineWidth( float lineWidth ) const
22166 {
22167 vkCmdSetLineWidth( m_commandBuffer, lineWidth );
22168 }
22169
22170 VULKAN_HPP_INLINE void CommandBuffer::setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const
22171 {
22172 vkCmdSetDepthBias( m_commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor );
22173 }
22174
22175 VULKAN_HPP_INLINE void CommandBuffer::setBlendConstants( const float blendConstants[4] ) const
22176 {
22177 vkCmdSetBlendConstants( m_commandBuffer, blendConstants );
22178 }
22179
22180 VULKAN_HPP_INLINE void CommandBuffer::setDepthBounds( float minDepthBounds, float maxDepthBounds ) const
22181 {
22182 vkCmdSetDepthBounds( m_commandBuffer, minDepthBounds, maxDepthBounds );
22183 }
22184
22185 VULKAN_HPP_INLINE void CommandBuffer::setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const
22186 {
22187 vkCmdSetStencilCompareMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), compareMask );
22188 }
22189
22190 VULKAN_HPP_INLINE void CommandBuffer::setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const
22191 {
22192 vkCmdSetStencilWriteMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), writeMask );
22193 }
22194
22195 VULKAN_HPP_INLINE void CommandBuffer::setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const
22196 {
22197 vkCmdSetStencilReference( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), reference );
22198 }
22199
22200 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
22201 {
22202 vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ), dynamicOffsetCount, pDynamicOffsets );
22203 }
22204#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22205 VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t firstSet, ArrayProxy<const DescriptorSet> descriptorSets, ArrayProxy<const uint32_t> dynamicOffsets ) const
22206 {
22207 vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ), dynamicOffsets.size() , dynamicOffsets.data() );
22208 }
22209#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22210
22211 VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType ) const
22212 {
22213 vkCmdBindIndexBuffer( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkIndexType>( indexType ) );
22214 }
22215
22216 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets ) const
22217 {
22218 vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, bindingCount, reinterpret_cast<const VkBuffer*>( pBuffers ), pOffsets );
22219 }
22220#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22221 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets ) const
22222 {
22223#ifdef VULKAN_HPP_NO_EXCEPTIONS
22224 assert( buffers.size() == offsets.size() );
22225#else
22226 if ( buffers.size() != offsets.size() )
22227 {
22228 throw std::logic_error( "vk::CommandBuffer::bindVertexBuffers: buffers.size() != offsets.size()" );
22229 }
22230#endif // VULKAN_HPP_NO_EXCEPTIONS
22231 vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, buffers.size() , reinterpret_cast<const VkBuffer*>( buffers.data() ), offsets.data() );
22232 }
22233#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22234
22235 VULKAN_HPP_INLINE void CommandBuffer::draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const
22236 {
22237 vkCmdDraw( m_commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance );
22238 }
22239
22240 VULKAN_HPP_INLINE void CommandBuffer::drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const
22241 {
22242 vkCmdDrawIndexed( m_commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance );
22243 }
22244
22245 VULKAN_HPP_INLINE void CommandBuffer::drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const
22246 {
22247 vkCmdDrawIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
22248 }
22249
22250 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const
22251 {
22252 vkCmdDrawIndexedIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
22253 }
22254
Mark Young0f183a82017-02-28 09:58:04 -070022255 VULKAN_HPP_INLINE void CommandBuffer::dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022256 {
Mark Young0f183a82017-02-28 09:58:04 -070022257 vkCmdDispatch( m_commandBuffer, groupCountX, groupCountY, groupCountZ );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022258 }
22259
22260 VULKAN_HPP_INLINE void CommandBuffer::dispatchIndirect( Buffer buffer, DeviceSize offset ) const
22261 {
22262 vkCmdDispatchIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset );
22263 }
22264
22265 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions ) const
22266 {
22267 vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferCopy*>( pRegions ) );
22268 }
22269#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22270 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions ) const
22271 {
22272 vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferCopy*>( regions.data() ) );
22273 }
22274#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22275
22276 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions ) const
22277 {
22278 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 ) );
22279 }
22280#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22281 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions ) const
22282 {
22283 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() ) );
22284 }
22285#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22286
22287 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageBlit* pRegions, Filter filter ) const
22288 {
22289 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 ) );
22290 }
22291#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22292 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter ) const
22293 {
22294 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 ) );
22295 }
22296#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22297
22298 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions ) const
22299 {
22300 vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
22301 }
22302#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22303 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions ) const
22304 {
22305 vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
22306 }
22307#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22308
22309 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions ) const
22310 {
22311 vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
22312 }
22313#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22314 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions ) const
22315 {
22316 vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
22317 }
22318#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22319
22320 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData ) const
22321 {
22322 vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, dataSize, pData );
22323 }
22324#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22325 template <typename T>
22326 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data ) const
22327 {
22328 vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, data.size() * sizeof( T ) , reinterpret_cast<const void*>( data.data() ) );
22329 }
22330#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22331
22332 VULKAN_HPP_INLINE void CommandBuffer::fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const
22333 {
22334 vkCmdFillBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, size, data );
22335 }
22336
22337 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const
22338 {
22339 vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( pColor ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
22340 }
22341#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22342 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges ) const
22343 {
22344 vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( &color ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
22345 }
22346#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22347
22348 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const
22349 {
22350 vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( pDepthStencil ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
22351 }
22352#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22353 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges ) const
22354 {
22355 vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( &depthStencil ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
22356 }
22357#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22358
22359 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects ) const
22360 {
22361 vkCmdClearAttachments( m_commandBuffer, attachmentCount, reinterpret_cast<const VkClearAttachment*>( pAttachments ), rectCount, reinterpret_cast<const VkClearRect*>( pRects ) );
22362 }
22363#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22364 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects ) const
22365 {
22366 vkCmdClearAttachments( m_commandBuffer, attachments.size() , reinterpret_cast<const VkClearAttachment*>( attachments.data() ), rects.size() , reinterpret_cast<const VkClearRect*>( rects.data() ) );
22367 }
22368#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22369
22370 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions ) const
22371 {
22372 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 ) );
22373 }
22374#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22375 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions ) const
22376 {
22377 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() ) );
22378 }
22379#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22380
22381 VULKAN_HPP_INLINE void CommandBuffer::setEvent( Event event, PipelineStageFlags stageMask ) const
22382 {
22383 vkCmdSetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
22384 }
22385
22386 VULKAN_HPP_INLINE void CommandBuffer::resetEvent( Event event, PipelineStageFlags stageMask ) const
22387 {
22388 vkCmdResetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
22389 }
22390
22391 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
22392 {
22393 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 ) );
22394 }
22395#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22396 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
22397 {
22398 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() ) );
22399 }
22400#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22401
22402 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
22403 {
22404 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 ) );
22405 }
22406#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22407 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
22408 {
22409 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() ) );
22410 }
22411#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22412
22413 VULKAN_HPP_INLINE void CommandBuffer::beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const
22414 {
22415 vkCmdBeginQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query, static_cast<VkQueryControlFlags>( flags ) );
22416 }
22417
22418 VULKAN_HPP_INLINE void CommandBuffer::endQuery( QueryPool queryPool, uint32_t query ) const
22419 {
22420 vkCmdEndQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query );
22421 }
22422
22423 VULKAN_HPP_INLINE void CommandBuffer::resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const
22424 {
22425 vkCmdResetQueryPool( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount );
22426 }
22427
22428 VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query ) const
22429 {
22430 vkCmdWriteTimestamp( m_commandBuffer, static_cast<VkPipelineStageFlagBits>( pipelineStage ), static_cast<VkQueryPool>( queryPool ), query );
22431 }
22432
22433 VULKAN_HPP_INLINE void CommandBuffer::copyQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Buffer dstBuffer, DeviceSize dstOffset, DeviceSize stride, QueryResultFlags flags ) const
22434 {
22435 vkCmdCopyQueryPoolResults( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, static_cast<VkBuffer>( dstBuffer ), dstOffset, stride, static_cast<VkQueryResultFlags>( flags ) );
22436 }
22437
22438 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const
22439 {
22440 vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, size, pValues );
22441 }
22442#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22443 template <typename T>
22444 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values ) const
22445 {
22446 vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, values.size() * sizeof( T ) , reinterpret_cast<const void*>( values.data() ) );
22447 }
22448#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22449
22450 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents ) const
22451 {
22452 vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( pRenderPassBegin ), static_cast<VkSubpassContents>( contents ) );
22453 }
22454#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22455 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const
22456 {
22457 vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( &renderPassBegin ), static_cast<VkSubpassContents>( contents ) );
22458 }
22459#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22460
22461 VULKAN_HPP_INLINE void CommandBuffer::nextSubpass( SubpassContents contents ) const
22462 {
22463 vkCmdNextSubpass( m_commandBuffer, static_cast<VkSubpassContents>( contents ) );
22464 }
22465
22466 VULKAN_HPP_INLINE void CommandBuffer::endRenderPass() const
22467 {
22468 vkCmdEndRenderPass( m_commandBuffer );
22469 }
22470
22471 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const
22472 {
22473 vkCmdExecuteCommands( m_commandBuffer, commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
22474 }
22475#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22476 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( ArrayProxy<const CommandBuffer> commandBuffers ) const
22477 {
22478 vkCmdExecuteCommands( m_commandBuffer, commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
22479 }
22480#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22481
22482 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const
22483 {
22484 vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
22485 }
22486#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22487 VULKAN_HPP_INLINE DebugMarkerMarkerInfoEXT CommandBuffer::debugMarkerBeginEXT() const
22488 {
22489 DebugMarkerMarkerInfoEXT markerInfo;
22490 vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
22491 return markerInfo;
22492 }
22493#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22494
22495 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerEndEXT() const
22496 {
22497 vkCmdDebugMarkerEndEXT( m_commandBuffer );
22498 }
22499
22500 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( DebugMarkerMarkerInfoEXT* pMarkerInfo ) const
22501 {
22502 vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
22503 }
22504#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22505 VULKAN_HPP_INLINE DebugMarkerMarkerInfoEXT CommandBuffer::debugMarkerInsertEXT() const
22506 {
22507 DebugMarkerMarkerInfoEXT markerInfo;
22508 vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
22509 return markerInfo;
22510 }
22511#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22512
22513 VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
22514 {
22515 vkCmdDrawIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
22516 }
22517
22518 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
22519 {
22520 vkCmdDrawIndexedIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
22521 }
22522
22523 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const
22524 {
22525 vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( pProcessCommandsInfo ) );
22526 }
22527#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22528 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo ) const
22529 {
22530 vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( &processCommandsInfo ) );
22531 }
22532#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22533
22534 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const
22535 {
22536 vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( pReserveSpaceInfo ) );
22537 }
22538#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22539 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo ) const
22540 {
22541 vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( &reserveSpaceInfo ) );
22542 }
22543#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070022544
22545 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites ) const
22546 {
22547 vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ) );
22548 }
22549#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22550 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites ) const
22551 {
22552 vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ) );
22553 }
22554#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22555
22556 VULKAN_HPP_INLINE void CommandBuffer::setDeviceMaskKHX( uint32_t deviceMask ) const
22557 {
22558 vkCmdSetDeviceMaskKHX( m_commandBuffer, deviceMask );
22559 }
22560
22561 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
22562 {
22563 vkCmdDispatchBaseKHX( m_commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ );
22564 }
22565
22566 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData ) const
22567 {
22568 vkCmdPushDescriptorSetWithTemplateKHR( m_commandBuffer, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), static_cast<VkPipelineLayout>( layout ), set, pData );
22569 }
22570
22571 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings ) const
22572 {
22573 vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewportWScalingNV*>( pViewportWScalings ) );
22574 }
22575#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22576 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings ) const
22577 {
22578 vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportWScalings.size() , reinterpret_cast<const VkViewportWScalingNV*>( viewportWScalings.data() ) );
22579 }
22580#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22581
22582 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles ) const
22583 {
22584 vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangleCount, reinterpret_cast<const VkRect2D*>( pDiscardRectangles ) );
22585 }
22586#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22587 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles ) const
22588 {
22589 vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangles.size() , reinterpret_cast<const VkRect2D*>( discardRectangles.data() ) );
22590 }
22591#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060022592
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022593 struct SubmitInfo
22594 {
22595 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 )
22596 : sType( StructureType::eSubmitInfo )
22597 , pNext( nullptr )
22598 , waitSemaphoreCount( waitSemaphoreCount_ )
22599 , pWaitSemaphores( pWaitSemaphores_ )
22600 , pWaitDstStageMask( pWaitDstStageMask_ )
22601 , commandBufferCount( commandBufferCount_ )
22602 , pCommandBuffers( pCommandBuffers_ )
22603 , signalSemaphoreCount( signalSemaphoreCount_ )
22604 , pSignalSemaphores( pSignalSemaphores_ )
22605 {
22606 }
22607
22608 SubmitInfo( VkSubmitInfo const & rhs )
22609 {
22610 memcpy( this, &rhs, sizeof(SubmitInfo) );
22611 }
22612
22613 SubmitInfo& operator=( VkSubmitInfo const & rhs )
22614 {
22615 memcpy( this, &rhs, sizeof(SubmitInfo) );
22616 return *this;
22617 }
22618
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022619 SubmitInfo& setPNext( const void* pNext_ )
22620 {
22621 pNext = pNext_;
22622 return *this;
22623 }
22624
22625 SubmitInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
22626 {
22627 waitSemaphoreCount = waitSemaphoreCount_;
22628 return *this;
22629 }
22630
22631 SubmitInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
22632 {
22633 pWaitSemaphores = pWaitSemaphores_;
22634 return *this;
22635 }
22636
22637 SubmitInfo& setPWaitDstStageMask( const PipelineStageFlags* pWaitDstStageMask_ )
22638 {
22639 pWaitDstStageMask = pWaitDstStageMask_;
22640 return *this;
22641 }
22642
22643 SubmitInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
22644 {
22645 commandBufferCount = commandBufferCount_;
22646 return *this;
22647 }
22648
22649 SubmitInfo& setPCommandBuffers( const CommandBuffer* pCommandBuffers_ )
22650 {
22651 pCommandBuffers = pCommandBuffers_;
22652 return *this;
22653 }
22654
22655 SubmitInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
22656 {
22657 signalSemaphoreCount = signalSemaphoreCount_;
22658 return *this;
22659 }
22660
22661 SubmitInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
22662 {
22663 pSignalSemaphores = pSignalSemaphores_;
22664 return *this;
22665 }
22666
22667 operator const VkSubmitInfo&() const
22668 {
22669 return *reinterpret_cast<const VkSubmitInfo*>(this);
22670 }
22671
22672 bool operator==( SubmitInfo const& rhs ) const
22673 {
22674 return ( sType == rhs.sType )
22675 && ( pNext == rhs.pNext )
22676 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
22677 && ( pWaitSemaphores == rhs.pWaitSemaphores )
22678 && ( pWaitDstStageMask == rhs.pWaitDstStageMask )
22679 && ( commandBufferCount == rhs.commandBufferCount )
22680 && ( pCommandBuffers == rhs.pCommandBuffers )
22681 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
22682 && ( pSignalSemaphores == rhs.pSignalSemaphores );
22683 }
22684
22685 bool operator!=( SubmitInfo const& rhs ) const
22686 {
22687 return !operator==( rhs );
22688 }
22689
22690 private:
22691 StructureType sType;
22692
22693 public:
22694 const void* pNext;
22695 uint32_t waitSemaphoreCount;
22696 const Semaphore* pWaitSemaphores;
22697 const PipelineStageFlags* pWaitDstStageMask;
22698 uint32_t commandBufferCount;
22699 const CommandBuffer* pCommandBuffers;
22700 uint32_t signalSemaphoreCount;
22701 const Semaphore* pSignalSemaphores;
22702 };
22703 static_assert( sizeof( SubmitInfo ) == sizeof( VkSubmitInfo ), "struct and wrapper have different size!" );
22704
22705 class Queue
22706 {
22707 public:
22708 Queue()
22709 : m_queue(VK_NULL_HANDLE)
22710 {}
22711
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070022712 Queue( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022713 : m_queue(VK_NULL_HANDLE)
22714 {}
22715
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022716 VULKAN_HPP_TYPESAFE_EXPLICIT Queue(VkQueue queue)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022717 : m_queue(queue)
22718 {}
22719
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022720#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022721 Queue& operator=(VkQueue queue)
22722 {
22723 m_queue = queue;
22724 return *this;
22725 }
22726#endif
22727
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070022728 Queue& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022729 {
22730 m_queue = VK_NULL_HANDLE;
22731 return *this;
22732 }
22733
Lenny Komowebf33162016-08-26 14:10:08 -060022734 bool operator==(Queue const &rhs) const
22735 {
22736 return m_queue == rhs.m_queue;
22737 }
22738
22739 bool operator!=(Queue const &rhs) const
22740 {
22741 return m_queue != rhs.m_queue;
22742 }
22743
22744 bool operator<(Queue const &rhs) const
22745 {
22746 return m_queue < rhs.m_queue;
22747 }
22748
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022749 Result submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022750#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022751 ResultValueType<void>::type submit( ArrayProxy<const SubmitInfo> submits, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022752#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22753
22754#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022755 Result waitIdle() const;
22756#else
22757 ResultValueType<void>::type waitIdle() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022758#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22759
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022760 Result bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022761#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022762 ResultValueType<void>::type bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022763#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22764
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022765 Result presentKHR( const PresentInfoKHR* pPresentInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022766#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022767 Result presentKHR( const PresentInfoKHR & presentInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022768#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22769
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022770 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueue() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022771 {
22772 return m_queue;
22773 }
22774
22775 explicit operator bool() const
22776 {
22777 return m_queue != VK_NULL_HANDLE;
22778 }
22779
22780 bool operator!() const
22781 {
22782 return m_queue == VK_NULL_HANDLE;
22783 }
22784
22785 private:
22786 VkQueue m_queue;
22787 };
22788 static_assert( sizeof( Queue ) == sizeof( VkQueue ), "handle and wrapper have different size!" );
22789
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022790 VULKAN_HPP_INLINE Result Queue::submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence ) const
22791 {
22792 return static_cast<Result>( vkQueueSubmit( m_queue, submitCount, reinterpret_cast<const VkSubmitInfo*>( pSubmits ), static_cast<VkFence>( fence ) ) );
22793 }
22794#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22795 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::submit( ArrayProxy<const SubmitInfo> submits, Fence fence ) const
22796 {
22797 Result result = static_cast<Result>( vkQueueSubmit( m_queue, submits.size() , reinterpret_cast<const VkSubmitInfo*>( submits.data() ), static_cast<VkFence>( fence ) ) );
22798 return createResultValue( result, "vk::Queue::submit" );
22799 }
22800#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22801
22802#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
22803 VULKAN_HPP_INLINE Result Queue::waitIdle() const
22804 {
22805 return static_cast<Result>( vkQueueWaitIdle( m_queue ) );
22806 }
22807#else
22808 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::waitIdle() const
22809 {
22810 Result result = static_cast<Result>( vkQueueWaitIdle( m_queue ) );
22811 return createResultValue( result, "vk::Queue::waitIdle" );
22812 }
22813#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22814
22815 VULKAN_HPP_INLINE Result Queue::bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence ) const
22816 {
22817 return static_cast<Result>( vkQueueBindSparse( m_queue, bindInfoCount, reinterpret_cast<const VkBindSparseInfo*>( pBindInfo ), static_cast<VkFence>( fence ) ) );
22818 }
22819#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22820 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence ) const
22821 {
22822 Result result = static_cast<Result>( vkQueueBindSparse( m_queue, bindInfo.size() , reinterpret_cast<const VkBindSparseInfo*>( bindInfo.data() ), static_cast<VkFence>( fence ) ) );
22823 return createResultValue( result, "vk::Queue::bindSparse" );
22824 }
22825#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22826
22827 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR* pPresentInfo ) const
22828 {
22829 return static_cast<Result>( vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( pPresentInfo ) ) );
22830 }
22831#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22832 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR & presentInfo ) const
22833 {
22834 Result result = static_cast<Result>( vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( &presentInfo ) ) );
22835 return createResultValue( result, "vk::Queue::presentKHR", { Result::eSuccess, Result::eSuboptimalKHR } );
22836 }
22837#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060022838
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022839#ifndef VULKAN_HPP_NO_SMART_HANDLE
22840 class BufferDeleter;
22841 using UniqueBuffer = UniqueHandle<Buffer, BufferDeleter>;
22842 class BufferViewDeleter;
22843 using UniqueBufferView = UniqueHandle<BufferView, BufferViewDeleter>;
22844 class CommandBufferDeleter;
22845 using UniqueCommandBuffer = UniqueHandle<CommandBuffer, CommandBufferDeleter>;
22846 class CommandPoolDeleter;
22847 using UniqueCommandPool = UniqueHandle<CommandPool, CommandPoolDeleter>;
22848 class DescriptorPoolDeleter;
22849 using UniqueDescriptorPool = UniqueHandle<DescriptorPool, DescriptorPoolDeleter>;
22850 class DescriptorSetDeleter;
22851 using UniqueDescriptorSet = UniqueHandle<DescriptorSet, DescriptorSetDeleter>;
22852 class DescriptorSetLayoutDeleter;
22853 using UniqueDescriptorSetLayout = UniqueHandle<DescriptorSetLayout, DescriptorSetLayoutDeleter>;
Mark Young0f183a82017-02-28 09:58:04 -070022854 class DescriptorUpdateTemplateKHRDeleter;
22855 using UniqueDescriptorUpdateTemplateKHR = UniqueHandle<DescriptorUpdateTemplateKHR, DescriptorUpdateTemplateKHRDeleter>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022856 class DeviceMemoryDeleter;
22857 using UniqueDeviceMemory = UniqueHandle<DeviceMemory, DeviceMemoryDeleter>;
22858 class EventDeleter;
22859 using UniqueEvent = UniqueHandle<Event, EventDeleter>;
22860 class FenceDeleter;
22861 using UniqueFence = UniqueHandle<Fence, FenceDeleter>;
22862 class FramebufferDeleter;
22863 using UniqueFramebuffer = UniqueHandle<Framebuffer, FramebufferDeleter>;
22864 class ImageDeleter;
22865 using UniqueImage = UniqueHandle<Image, ImageDeleter>;
22866 class ImageViewDeleter;
22867 using UniqueImageView = UniqueHandle<ImageView, ImageViewDeleter>;
22868 class IndirectCommandsLayoutNVXDeleter;
22869 using UniqueIndirectCommandsLayoutNVX = UniqueHandle<IndirectCommandsLayoutNVX, IndirectCommandsLayoutNVXDeleter>;
22870 class ObjectTableNVXDeleter;
22871 using UniqueObjectTableNVX = UniqueHandle<ObjectTableNVX, ObjectTableNVXDeleter>;
22872 class PipelineDeleter;
22873 using UniquePipeline = UniqueHandle<Pipeline, PipelineDeleter>;
22874 class PipelineCacheDeleter;
22875 using UniquePipelineCache = UniqueHandle<PipelineCache, PipelineCacheDeleter>;
22876 class PipelineLayoutDeleter;
22877 using UniquePipelineLayout = UniqueHandle<PipelineLayout, PipelineLayoutDeleter>;
22878 class QueryPoolDeleter;
22879 using UniqueQueryPool = UniqueHandle<QueryPool, QueryPoolDeleter>;
22880 class RenderPassDeleter;
22881 using UniqueRenderPass = UniqueHandle<RenderPass, RenderPassDeleter>;
22882 class SamplerDeleter;
22883 using UniqueSampler = UniqueHandle<Sampler, SamplerDeleter>;
22884 class SemaphoreDeleter;
22885 using UniqueSemaphore = UniqueHandle<Semaphore, SemaphoreDeleter>;
22886 class ShaderModuleDeleter;
22887 using UniqueShaderModule = UniqueHandle<ShaderModule, ShaderModuleDeleter>;
22888 class SwapchainKHRDeleter;
22889 using UniqueSwapchainKHR = UniqueHandle<SwapchainKHR, SwapchainKHRDeleter>;
22890#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
22891
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022892 class Device
22893 {
22894 public:
22895 Device()
22896 : m_device(VK_NULL_HANDLE)
22897 {}
22898
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070022899 Device( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022900 : m_device(VK_NULL_HANDLE)
22901 {}
22902
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022903 VULKAN_HPP_TYPESAFE_EXPLICIT Device(VkDevice device)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022904 : m_device(device)
22905 {}
22906
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070022907#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022908 Device& operator=(VkDevice device)
22909 {
22910 m_device = device;
22911 return *this;
22912 }
22913#endif
22914
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070022915 Device& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022916 {
22917 m_device = VK_NULL_HANDLE;
22918 return *this;
22919 }
22920
Lenny Komowebf33162016-08-26 14:10:08 -060022921 bool operator==(Device const &rhs) const
22922 {
22923 return m_device == rhs.m_device;
22924 }
22925
22926 bool operator!=(Device const &rhs) const
22927 {
22928 return m_device != rhs.m_device;
22929 }
22930
22931 bool operator<(Device const &rhs) const
22932 {
22933 return m_device < rhs.m_device;
22934 }
22935
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022936 PFN_vkVoidFunction getProcAddr( const char* pName ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022937#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022938 PFN_vkVoidFunction getProcAddr( const std::string & name ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022939#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22940
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022941 void destroy( const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022942#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022943 void destroy( Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022944#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22945
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022946 void getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022947#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022948 Queue getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022949#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22950
22951#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022952 Result waitIdle() const;
22953#else
22954 ResultValueType<void>::type waitIdle() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022955#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22956
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022957 Result allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022958#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022959 ResultValueType<DeviceMemory>::type allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22960#ifndef VULKAN_HPP_NO_SMART_HANDLE
22961 UniqueDeviceMemory allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22962#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022963#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22964
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022965 void freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022966#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022967 void freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator = nullptr ) const;
22968#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22969
22970 Result mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData ) const;
22971#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22972 ResultValueType<void*>::type mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags = MemoryMapFlags() ) const;
22973#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22974
22975 void unmapMemory( DeviceMemory memory ) const;
22976
22977 Result flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const;
22978#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22979 ResultValueType<void>::type flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const;
22980#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22981
22982 Result invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const;
22983#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22984 ResultValueType<void>::type invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const;
22985#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22986
22987 void getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes ) const;
22988#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22989 DeviceSize getMemoryCommitment( DeviceMemory memory ) const;
22990#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22991
22992 void getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements ) const;
22993#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
22994 MemoryRequirements getBufferMemoryRequirements( Buffer buffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060022995#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
22996
22997#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070022998 Result bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const;
22999#else
23000 ResultValueType<void>::type bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const;
23001#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023002
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023003 void getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023004#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023005 MemoryRequirements getImageMemoryRequirements( Image image ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023006#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23007
23008#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023009 Result bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const;
23010#else
23011 ResultValueType<void>::type bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023012#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23013
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023014 void getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023015#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023016 template <typename Allocator = std::allocator<SparseImageMemoryRequirements>>
23017 std::vector<SparseImageMemoryRequirements,Allocator> getImageSparseMemoryRequirements( Image image ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023018#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23019
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023020 Result createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023021#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023022 ResultValueType<Fence>::type createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23023#ifndef VULKAN_HPP_NO_SMART_HANDLE
23024 UniqueFence createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23025#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023026#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23027
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023028 void destroyFence( Fence fence, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023029#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023030 void destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023031#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23032
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023033 Result resetFences( uint32_t fenceCount, const Fence* pFences ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023034#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023035 ResultValueType<void>::type resetFences( ArrayProxy<const Fence> fences ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023036#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23037
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023038 Result getFenceStatus( Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023039
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023040 Result waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023041#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023042 Result waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout ) const;
23043#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23044
23045 Result createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore ) const;
23046#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23047 ResultValueType<Semaphore>::type createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23048#ifndef VULKAN_HPP_NO_SMART_HANDLE
23049 UniqueSemaphore createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23050#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
23051#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23052
23053 void destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator ) const;
23054#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23055 void destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23056#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23057
23058 Result createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent ) const;
23059#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23060 ResultValueType<Event>::type createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23061#ifndef VULKAN_HPP_NO_SMART_HANDLE
23062 UniqueEvent createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23063#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
23064#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23065
23066 void destroyEvent( Event event, const AllocationCallbacks* pAllocator ) const;
23067#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23068 void destroyEvent( Event event, 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 getEventStatus( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023072
23073#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023074 Result setEvent( Event event ) const;
23075#else
23076 ResultValueType<void>::type setEvent( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023077#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23078
23079#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023080 Result resetEvent( Event event ) const;
23081#else
23082 ResultValueType<void>::type resetEvent( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023083#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23084
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023085 Result createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023086#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023087 ResultValueType<QueryPool>::type createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23088#ifndef VULKAN_HPP_NO_SMART_HANDLE
23089 UniqueQueryPool createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23090#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023091#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23092
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023093 void destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023094#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023095 void destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023096#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23097
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023098 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 -060023099#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23100 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023101 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 -060023102#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23103
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023104 Result createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023105#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023106 ResultValueType<Buffer>::type createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23107#ifndef VULKAN_HPP_NO_SMART_HANDLE
23108 UniqueBuffer createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23109#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023110#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23111
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023112 void destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023113#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023114 void destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023115#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23116
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023117 Result createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023118#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023119 ResultValueType<BufferView>::type createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23120#ifndef VULKAN_HPP_NO_SMART_HANDLE
23121 UniqueBufferView createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23122#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023123#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23124
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023125 void destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023126#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023127 void destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023128#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23129
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023130 Result createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023131#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023132 ResultValueType<Image>::type createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23133#ifndef VULKAN_HPP_NO_SMART_HANDLE
23134 UniqueImage createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23135#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023136#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23137
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023138 void destroyImage( Image image, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023139#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023140 void destroyImage( Image image, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023141#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23142
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023143 void getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023144#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023145 SubresourceLayout getImageSubresourceLayout( Image image, const ImageSubresource & subresource ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023146#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23147
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023148 Result createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023149#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023150 ResultValueType<ImageView>::type createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23151#ifndef VULKAN_HPP_NO_SMART_HANDLE
23152 UniqueImageView createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23153#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023154#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23155
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023156 void destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023157#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023158 void destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023159#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23160
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023161 Result createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023162#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023163 ResultValueType<ShaderModule>::type createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23164#ifndef VULKAN_HPP_NO_SMART_HANDLE
23165 UniqueShaderModule createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23166#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023167#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23168
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023169 void destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023170#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023171 void destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023172#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23173
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023174 Result createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023175#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023176 ResultValueType<PipelineCache>::type createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23177#ifndef VULKAN_HPP_NO_SMART_HANDLE
23178 UniquePipelineCache createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23179#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023180#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23181
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023182 void destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023183#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023184 void destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023185#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23186
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023187 Result getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023188#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023189 template <typename Allocator = std::allocator<uint8_t>>
23190 typename ResultValueType<std::vector<uint8_t,Allocator>>::type getPipelineCacheData( PipelineCache pipelineCache ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023191#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23192
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023193 Result mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023194#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023195 ResultValueType<void>::type mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023196#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23197
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023198 Result createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023199#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023200 template <typename Allocator = std::allocator<Pipeline>>
23201 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23202 ResultValueType<Pipeline>::type createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23203#ifndef VULKAN_HPP_NO_SMART_HANDLE
23204 template <typename Allocator = std::allocator<Pipeline>>
23205 std::vector<UniquePipeline> createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23206 UniquePipeline createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23207#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023208#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23209
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023210 Result createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023211#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023212 template <typename Allocator = std::allocator<Pipeline>>
23213 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23214 ResultValueType<Pipeline>::type createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23215#ifndef VULKAN_HPP_NO_SMART_HANDLE
23216 template <typename Allocator = std::allocator<Pipeline>>
23217 std::vector<UniquePipeline> createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23218 UniquePipeline createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23219#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023220#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23221
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023222 void destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023223#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023224 void destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023225#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23226
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023227 Result createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023228#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023229 ResultValueType<PipelineLayout>::type createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23230#ifndef VULKAN_HPP_NO_SMART_HANDLE
23231 UniquePipelineLayout createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23232#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023233#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23234
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023235 void destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023236#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023237 void destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023238#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23239
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023240 Result createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023241#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023242 ResultValueType<Sampler>::type createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23243#ifndef VULKAN_HPP_NO_SMART_HANDLE
23244 UniqueSampler createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23245#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023246#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23247
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023248 void destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023249#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023250 void destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023251#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23252
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023253 Result createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023254#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023255 ResultValueType<DescriptorSetLayout>::type createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23256#ifndef VULKAN_HPP_NO_SMART_HANDLE
23257 UniqueDescriptorSetLayout createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23258#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023259#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23260
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023261 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023262#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023263 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023264#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23265
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023266 Result createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023267#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023268 ResultValueType<DescriptorPool>::type createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23269#ifndef VULKAN_HPP_NO_SMART_HANDLE
23270 UniqueDescriptorPool createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23271#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023272#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23273
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023274 void destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023275#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023276 void destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023277#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23278
23279#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023280 Result resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const;
23281#else
23282 ResultValueType<void>::type resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags = DescriptorPoolResetFlags() ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023283#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23284
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023285 Result allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023286#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023287 template <typename Allocator = std::allocator<DescriptorSet>>
23288 typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo ) const;
23289#ifndef VULKAN_HPP_NO_SMART_HANDLE
23290 template <typename Allocator = std::allocator<DescriptorSet>>
23291 std::vector<UniqueDescriptorSet> allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo ) const;
23292#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023293#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23294
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023295 Result freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023296#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023297 ResultValueType<void>::type freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023298#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23299
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023300 void updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023301#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023302 void updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023303#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23304
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023305 Result createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023306#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023307 ResultValueType<Framebuffer>::type createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23308#ifndef VULKAN_HPP_NO_SMART_HANDLE
23309 UniqueFramebuffer createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23310#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023311#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23312
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023313 void destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023314#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023315 void destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023316#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23317
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023318 Result createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023319#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023320 ResultValueType<RenderPass>::type createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23321#ifndef VULKAN_HPP_NO_SMART_HANDLE
23322 UniqueRenderPass createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23323#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023324#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23325
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023326 void destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023327#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023328 void destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023329#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23330
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023331 void getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023332#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023333 Extent2D getRenderAreaGranularity( RenderPass renderPass ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023334#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23335
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023336 Result createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023337#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023338 ResultValueType<CommandPool>::type createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23339#ifndef VULKAN_HPP_NO_SMART_HANDLE
23340 UniqueCommandPool createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23341#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023342#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23343
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023344 void destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023345#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023346 void destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023347#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23348
23349#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023350 Result resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const;
23351#else
23352 ResultValueType<void>::type resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023353#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23354
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023355 Result allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023356#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023357 template <typename Allocator = std::allocator<CommandBuffer>>
23358 typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo ) const;
23359#ifndef VULKAN_HPP_NO_SMART_HANDLE
23360 template <typename Allocator = std::allocator<CommandBuffer>>
23361 std::vector<UniqueCommandBuffer> allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo ) const;
23362#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023363#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23364
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023365 void freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023366#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023367 void freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023368#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23369
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023370 Result createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023371#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023372 template <typename Allocator = std::allocator<SwapchainKHR>>
23373 typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23374 ResultValueType<SwapchainKHR>::type createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23375#ifndef VULKAN_HPP_NO_SMART_HANDLE
23376 template <typename Allocator = std::allocator<SwapchainKHR>>
23377 std::vector<UniqueSwapchainKHR> createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23378 UniqueSwapchainKHR createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23379#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023380#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23381
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023382 Result createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023383#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023384 ResultValueType<SwapchainKHR>::type createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23385#ifndef VULKAN_HPP_NO_SMART_HANDLE
23386 UniqueSwapchainKHR createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23387#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023388#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23389
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023390 void destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023391#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023392 void destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023393#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23394
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023395 Result getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023396#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023397 template <typename Allocator = std::allocator<Image>>
23398 typename ResultValueType<std::vector<Image,Allocator>>::type getSwapchainImagesKHR( SwapchainKHR swapchain ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023399#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23400
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023401 Result acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023402#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023403 ResultValue<uint32_t> acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023404#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23405
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023406 Result debugMarkerSetObjectNameEXT( DebugMarkerObjectNameInfoEXT* pNameInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023407#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023408 ResultValueType<DebugMarkerObjectNameInfoEXT>::type debugMarkerSetObjectNameEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023409#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23410
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023411 Result debugMarkerSetObjectTagEXT( DebugMarkerObjectTagInfoEXT* pTagInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023412#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023413 ResultValueType<DebugMarkerObjectTagInfoEXT>::type debugMarkerSetObjectTagEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023414#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23415
Lenny Komow6501c122016-08-31 15:03:49 -060023416#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023417 Result getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const;
23418#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23419 ResultValueType<HANDLE>::type getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType ) const;
23420#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komow6501c122016-08-31 15:03:49 -060023421#endif /*VK_USE_PLATFORM_WIN32_KHR*/
23422
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023423 Result createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const;
Lenny Komow6501c122016-08-31 15:03:49 -060023424#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023425 ResultValueType<IndirectCommandsLayoutNVX>::type createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23426#ifndef VULKAN_HPP_NO_SMART_HANDLE
23427 UniqueIndirectCommandsLayoutNVX createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23428#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komow6501c122016-08-31 15:03:49 -060023429#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23430
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023431 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023432#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023433 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023434#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23435
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023436 Result createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023437#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023438 ResultValueType<ObjectTableNVX>::type createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23439#ifndef VULKAN_HPP_NO_SMART_HANDLE
23440 UniqueObjectTableNVX createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23441#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023442#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23443
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023444 void destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023445#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023446 void destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023447#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23448
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023449 Result registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023450#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023451 ResultValueType<void>::type registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023452#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23453
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023454 Result unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023455#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023456 ResultValueType<void>::type unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023457#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23458
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023459#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023460 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags ) const;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023461#else
23462 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags = CommandPoolTrimFlagsKHR() ) const;
23463#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023464
Mark Lobodzinski3289d762017-04-03 08:22:04 -060023465#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070023466 Result getMemoryWin32HandleKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE* pHandle ) const;
23467#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23468 ResultValueType<HANDLE>::type getMemoryWin32HandleKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType ) const;
23469#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski3289d762017-04-03 08:22:04 -060023470#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070023471
Mark Lobodzinski3289d762017-04-03 08:22:04 -060023472#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070023473 Result getMemoryWin32HandlePropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE handle, MemoryWin32HandlePropertiesKHX* pMemoryWin32HandleProperties ) const;
23474#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23475 ResultValueType<MemoryWin32HandlePropertiesKHX>::type getMemoryWin32HandlePropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE handle ) const;
23476#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski3289d762017-04-03 08:22:04 -060023477#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070023478
23479 Result getMemoryFdKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType, int* pFd ) const;
23480#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23481 ResultValueType<int>::type getMemoryFdKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType ) const;
23482#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23483
23484 Result getMemoryFdPropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, int fd, MemoryFdPropertiesKHX* pMemoryFdProperties ) const;
23485#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23486 ResultValueType<MemoryFdPropertiesKHX>::type getMemoryFdPropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, int fd ) const;
23487#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23488
23489#ifdef VK_USE_PLATFORM_WIN32_KHX
23490 Result getSemaphoreWin32HandleKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType, HANDLE* pHandle ) const;
23491#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23492 ResultValueType<HANDLE>::type getSemaphoreWin32HandleKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType ) const;
23493#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23494#endif /*VK_USE_PLATFORM_WIN32_KHX*/
23495
23496#ifdef VK_USE_PLATFORM_WIN32_KHX
23497 Result importSemaphoreWin32HandleKHX( const ImportSemaphoreWin32HandleInfoKHX* pImportSemaphoreWin32HandleInfo ) const;
23498#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23499 ResultValueType<void>::type importSemaphoreWin32HandleKHX( const ImportSemaphoreWin32HandleInfoKHX & importSemaphoreWin32HandleInfo ) const;
23500#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23501#endif /*VK_USE_PLATFORM_WIN32_KHX*/
23502
23503 Result getSemaphoreFdKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType, int* pFd ) const;
23504#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23505 ResultValueType<int>::type getSemaphoreFdKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType ) const;
23506#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23507
23508 Result importSemaphoreFdKHX( const ImportSemaphoreFdInfoKHX* pImportSemaphoreFdInfo ) const;
23509#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23510 ResultValueType<void>::type importSemaphoreFdKHX( const ImportSemaphoreFdInfoKHX & importSemaphoreFdInfo ) const;
23511#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23512
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023513 Result displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023514#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023515 ResultValueType<void>::type displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070023516#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23517
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023518 Result registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Mark Young39389872017-01-19 21:10:49 -070023519#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023520 ResultValueType<Fence>::type registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, const AllocationCallbacks & allocator ) const;
Mark Young39389872017-01-19 21:10:49 -070023521#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23522
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023523 Result registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Mark Young39389872017-01-19 21:10:49 -070023524#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023525 ResultValueType<Fence>::type registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, const AllocationCallbacks & allocator ) const;
Mark Young39389872017-01-19 21:10:49 -070023526#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23527
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023528 Result getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const;
Mark Young39389872017-01-19 21:10:49 -070023529#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023530 ResultValue<uint64_t> getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter ) const;
Mark Young39389872017-01-19 21:10:49 -070023531#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23532
Mark Young0f183a82017-02-28 09:58:04 -070023533 void getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ) const;
23534#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23535 PeerMemoryFeatureFlagsKHX getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const;
23536#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23537
23538 Result bindBufferMemory2KHX( uint32_t bindInfoCount, const BindBufferMemoryInfoKHX* pBindInfos ) const;
23539#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23540 ResultValueType<void>::type bindBufferMemory2KHX( ArrayProxy<const BindBufferMemoryInfoKHX> bindInfos ) const;
23541#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23542
23543 Result bindImageMemory2KHX( uint32_t bindInfoCount, const BindImageMemoryInfoKHX* pBindInfos ) const;
23544#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23545 ResultValueType<void>::type bindImageMemory2KHX( ArrayProxy<const BindImageMemoryInfoKHX> bindInfos ) const;
23546#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23547
23548 Result getGroupPresentCapabilitiesKHX( DeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ) const;
23549#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23550 ResultValueType<DeviceGroupPresentCapabilitiesKHX>::type getGroupPresentCapabilitiesKHX() const;
23551#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23552
23553 Result getGroupSurfacePresentModesKHX( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHX* pModes ) const;
23554#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23555 ResultValueType<DeviceGroupPresentModeFlagsKHX>::type getGroupSurfacePresentModesKHX( SurfaceKHR surface ) const;
23556#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23557
23558 Result acquireNextImage2KHX( const AcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex ) const;
23559#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23560 ResultValue<uint32_t> acquireNextImage2KHX( const AcquireNextImageInfoKHX & acquireInfo ) const;
23561#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23562
23563 Result createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) const;
23564#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23565 ResultValueType<DescriptorUpdateTemplateKHR>::type createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23566#ifndef VULKAN_HPP_NO_SMART_HANDLE
23567 UniqueDescriptorUpdateTemplateKHR createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23568#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
23569#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23570
23571 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const AllocationCallbacks* pAllocator ) const;
23572#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23573 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator = nullptr ) const;
23574#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23575
23576 void updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData ) const;
23577
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060023578 void setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata ) const;
23579#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23580 void setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata ) const;
23581#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23582
23583 Result getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const;
23584#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23585 ResultValueType<RefreshCycleDurationGOOGLE>::type getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain ) const;
23586#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23587
23588 Result getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings ) const;
23589#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
23590 template <typename Allocator = std::allocator<PastPresentationTimingGOOGLE>>
23591 typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type getPastPresentationTimingGOOGLE( SwapchainKHR swapchain ) const;
23592#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
23593
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070023594 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDevice() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060023595 {
23596 return m_device;
23597 }
23598
23599 explicit operator bool() const
23600 {
23601 return m_device != VK_NULL_HANDLE;
23602 }
23603
23604 bool operator!() const
23605 {
23606 return m_device == VK_NULL_HANDLE;
23607 }
23608
23609 private:
23610 VkDevice m_device;
23611 };
23612 static_assert( sizeof( Device ) == sizeof( VkDevice ), "handle and wrapper have different size!" );
23613
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023614#ifndef VULKAN_HPP_NO_SMART_HANDLE
23615 class BufferDeleter
23616 {
23617 public:
23618 BufferDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23619 : m_device( device )
23620 , m_allocator( allocator )
23621 {}
23622
23623 void operator()( Buffer buffer )
23624 {
23625 m_device.destroyBuffer( buffer, m_allocator );
23626 }
23627
23628 private:
23629 Device m_device;
23630 Optional<const AllocationCallbacks> m_allocator;
23631 };
23632
23633 class BufferViewDeleter
23634 {
23635 public:
23636 BufferViewDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23637 : m_device( device )
23638 , m_allocator( allocator )
23639 {}
23640
23641 void operator()( BufferView bufferView )
23642 {
23643 m_device.destroyBufferView( bufferView, m_allocator );
23644 }
23645
23646 private:
23647 Device m_device;
23648 Optional<const AllocationCallbacks> m_allocator;
23649 };
23650
23651 class CommandBufferDeleter
23652 {
23653 public:
23654 CommandBufferDeleter( Device device = Device(), CommandPool commandPool = CommandPool() )
23655 : m_device( device )
23656 , m_commandPool( commandPool )
23657 {}
23658
23659 void operator()( CommandBuffer commandBuffer )
23660 {
23661 m_device.freeCommandBuffers( m_commandPool, commandBuffer );
23662 }
23663
23664 private:
23665 Device m_device;
23666 CommandPool m_commandPool;
23667 };
23668
23669 class CommandPoolDeleter
23670 {
23671 public:
23672 CommandPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23673 : m_device( device )
23674 , m_allocator( allocator )
23675 {}
23676
23677 void operator()( CommandPool commandPool )
23678 {
23679 m_device.destroyCommandPool( commandPool, m_allocator );
23680 }
23681
23682 private:
23683 Device m_device;
23684 Optional<const AllocationCallbacks> m_allocator;
23685 };
23686
23687 class DescriptorPoolDeleter
23688 {
23689 public:
23690 DescriptorPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23691 : m_device( device )
23692 , m_allocator( allocator )
23693 {}
23694
23695 void operator()( DescriptorPool descriptorPool )
23696 {
23697 m_device.destroyDescriptorPool( descriptorPool, m_allocator );
23698 }
23699
23700 private:
23701 Device m_device;
23702 Optional<const AllocationCallbacks> m_allocator;
23703 };
23704
23705 class DescriptorSetDeleter
23706 {
23707 public:
23708 DescriptorSetDeleter( Device device = Device(), DescriptorPool descriptorPool = DescriptorPool() )
23709 : m_device( device )
23710 , m_descriptorPool( descriptorPool )
23711 {}
23712
23713 void operator()( DescriptorSet descriptorSet )
23714 {
23715 m_device.freeDescriptorSets( m_descriptorPool, descriptorSet );
23716 }
23717
23718 private:
23719 Device m_device;
23720 DescriptorPool m_descriptorPool;
23721 };
23722
23723 class DescriptorSetLayoutDeleter
23724 {
23725 public:
23726 DescriptorSetLayoutDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23727 : m_device( device )
23728 , m_allocator( allocator )
23729 {}
23730
23731 void operator()( DescriptorSetLayout descriptorSetLayout )
23732 {
23733 m_device.destroyDescriptorSetLayout( descriptorSetLayout, m_allocator );
23734 }
23735
23736 private:
23737 Device m_device;
23738 Optional<const AllocationCallbacks> m_allocator;
23739 };
23740
Mark Young0f183a82017-02-28 09:58:04 -070023741 class DescriptorUpdateTemplateKHRDeleter
23742 {
23743 public:
23744 DescriptorUpdateTemplateKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23745 : m_device( device )
23746 , m_allocator( allocator )
23747 {}
23748
23749 void operator()( DescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR )
23750 {
23751 m_device.destroyDescriptorUpdateTemplateKHR( descriptorUpdateTemplateKHR, m_allocator );
23752 }
23753
23754 private:
23755 Device m_device;
23756 Optional<const AllocationCallbacks> m_allocator;
23757 };
23758
Mark Lobodzinski36c33862017-02-13 10:15:53 -070023759 class DeviceMemoryDeleter
23760 {
23761 public:
23762 DeviceMemoryDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23763 : m_device( device )
23764 , m_allocator( allocator )
23765 {}
23766
23767 void operator()( DeviceMemory deviceMemory )
23768 {
23769 m_device.freeMemory( deviceMemory, m_allocator );
23770 }
23771
23772 private:
23773 Device m_device;
23774 Optional<const AllocationCallbacks> m_allocator;
23775 };
23776
23777 class EventDeleter
23778 {
23779 public:
23780 EventDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23781 : m_device( device )
23782 , m_allocator( allocator )
23783 {}
23784
23785 void operator()( Event event )
23786 {
23787 m_device.destroyEvent( event, m_allocator );
23788 }
23789
23790 private:
23791 Device m_device;
23792 Optional<const AllocationCallbacks> m_allocator;
23793 };
23794
23795 class FenceDeleter
23796 {
23797 public:
23798 FenceDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23799 : m_device( device )
23800 , m_allocator( allocator )
23801 {}
23802
23803 void operator()( Fence fence )
23804 {
23805 m_device.destroyFence( fence, m_allocator );
23806 }
23807
23808 private:
23809 Device m_device;
23810 Optional<const AllocationCallbacks> m_allocator;
23811 };
23812
23813 class FramebufferDeleter
23814 {
23815 public:
23816 FramebufferDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23817 : m_device( device )
23818 , m_allocator( allocator )
23819 {}
23820
23821 void operator()( Framebuffer framebuffer )
23822 {
23823 m_device.destroyFramebuffer( framebuffer, m_allocator );
23824 }
23825
23826 private:
23827 Device m_device;
23828 Optional<const AllocationCallbacks> m_allocator;
23829 };
23830
23831 class ImageDeleter
23832 {
23833 public:
23834 ImageDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23835 : m_device( device )
23836 , m_allocator( allocator )
23837 {}
23838
23839 void operator()( Image image )
23840 {
23841 m_device.destroyImage( image, m_allocator );
23842 }
23843
23844 private:
23845 Device m_device;
23846 Optional<const AllocationCallbacks> m_allocator;
23847 };
23848
23849 class ImageViewDeleter
23850 {
23851 public:
23852 ImageViewDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23853 : m_device( device )
23854 , m_allocator( allocator )
23855 {}
23856
23857 void operator()( ImageView imageView )
23858 {
23859 m_device.destroyImageView( imageView, m_allocator );
23860 }
23861
23862 private:
23863 Device m_device;
23864 Optional<const AllocationCallbacks> m_allocator;
23865 };
23866
23867 class IndirectCommandsLayoutNVXDeleter
23868 {
23869 public:
23870 IndirectCommandsLayoutNVXDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23871 : m_device( device )
23872 , m_allocator( allocator )
23873 {}
23874
23875 void operator()( IndirectCommandsLayoutNVX indirectCommandsLayoutNVX )
23876 {
23877 m_device.destroyIndirectCommandsLayoutNVX( indirectCommandsLayoutNVX, m_allocator );
23878 }
23879
23880 private:
23881 Device m_device;
23882 Optional<const AllocationCallbacks> m_allocator;
23883 };
23884
23885 class ObjectTableNVXDeleter
23886 {
23887 public:
23888 ObjectTableNVXDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23889 : m_device( device )
23890 , m_allocator( allocator )
23891 {}
23892
23893 void operator()( ObjectTableNVX objectTableNVX )
23894 {
23895 m_device.destroyObjectTableNVX( objectTableNVX, m_allocator );
23896 }
23897
23898 private:
23899 Device m_device;
23900 Optional<const AllocationCallbacks> m_allocator;
23901 };
23902
23903 class PipelineDeleter
23904 {
23905 public:
23906 PipelineDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23907 : m_device( device )
23908 , m_allocator( allocator )
23909 {}
23910
23911 void operator()( Pipeline pipeline )
23912 {
23913 m_device.destroyPipeline( pipeline, m_allocator );
23914 }
23915
23916 private:
23917 Device m_device;
23918 Optional<const AllocationCallbacks> m_allocator;
23919 };
23920
23921 class PipelineCacheDeleter
23922 {
23923 public:
23924 PipelineCacheDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23925 : m_device( device )
23926 , m_allocator( allocator )
23927 {}
23928
23929 void operator()( PipelineCache pipelineCache )
23930 {
23931 m_device.destroyPipelineCache( pipelineCache, m_allocator );
23932 }
23933
23934 private:
23935 Device m_device;
23936 Optional<const AllocationCallbacks> m_allocator;
23937 };
23938
23939 class PipelineLayoutDeleter
23940 {
23941 public:
23942 PipelineLayoutDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23943 : m_device( device )
23944 , m_allocator( allocator )
23945 {}
23946
23947 void operator()( PipelineLayout pipelineLayout )
23948 {
23949 m_device.destroyPipelineLayout( pipelineLayout, m_allocator );
23950 }
23951
23952 private:
23953 Device m_device;
23954 Optional<const AllocationCallbacks> m_allocator;
23955 };
23956
23957 class QueryPoolDeleter
23958 {
23959 public:
23960 QueryPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23961 : m_device( device )
23962 , m_allocator( allocator )
23963 {}
23964
23965 void operator()( QueryPool queryPool )
23966 {
23967 m_device.destroyQueryPool( queryPool, m_allocator );
23968 }
23969
23970 private:
23971 Device m_device;
23972 Optional<const AllocationCallbacks> m_allocator;
23973 };
23974
23975 class RenderPassDeleter
23976 {
23977 public:
23978 RenderPassDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23979 : m_device( device )
23980 , m_allocator( allocator )
23981 {}
23982
23983 void operator()( RenderPass renderPass )
23984 {
23985 m_device.destroyRenderPass( renderPass, m_allocator );
23986 }
23987
23988 private:
23989 Device m_device;
23990 Optional<const AllocationCallbacks> m_allocator;
23991 };
23992
23993 class SamplerDeleter
23994 {
23995 public:
23996 SamplerDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
23997 : m_device( device )
23998 , m_allocator( allocator )
23999 {}
24000
24001 void operator()( Sampler sampler )
24002 {
24003 m_device.destroySampler( sampler, m_allocator );
24004 }
24005
24006 private:
24007 Device m_device;
24008 Optional<const AllocationCallbacks> m_allocator;
24009 };
24010
24011 class SemaphoreDeleter
24012 {
24013 public:
24014 SemaphoreDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24015 : m_device( device )
24016 , m_allocator( allocator )
24017 {}
24018
24019 void operator()( Semaphore semaphore )
24020 {
24021 m_device.destroySemaphore( semaphore, m_allocator );
24022 }
24023
24024 private:
24025 Device m_device;
24026 Optional<const AllocationCallbacks> m_allocator;
24027 };
24028
24029 class ShaderModuleDeleter
24030 {
24031 public:
24032 ShaderModuleDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24033 : m_device( device )
24034 , m_allocator( allocator )
24035 {}
24036
24037 void operator()( ShaderModule shaderModule )
24038 {
24039 m_device.destroyShaderModule( shaderModule, m_allocator );
24040 }
24041
24042 private:
24043 Device m_device;
24044 Optional<const AllocationCallbacks> m_allocator;
24045 };
24046
24047 class SwapchainKHRDeleter
24048 {
24049 public:
24050 SwapchainKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
24051 : m_device( device )
24052 , m_allocator( allocator )
24053 {}
24054
24055 void operator()( SwapchainKHR swapchainKHR )
24056 {
24057 m_device.destroySwapchainKHR( swapchainKHR, m_allocator );
24058 }
24059
24060 private:
24061 Device m_device;
24062 Optional<const AllocationCallbacks> m_allocator;
24063 };
24064#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24065
24066 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const char* pName ) const
24067 {
24068 return vkGetDeviceProcAddr( m_device, pName );
24069 }
24070#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24071 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const std::string & name ) const
24072 {
24073 return vkGetDeviceProcAddr( m_device, name.c_str() );
24074 }
24075#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24076
24077 VULKAN_HPP_INLINE void Device::destroy( const AllocationCallbacks* pAllocator ) const
24078 {
24079 vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24080 }
24081#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24082 VULKAN_HPP_INLINE void Device::destroy( Optional<const AllocationCallbacks> allocator ) const
24083 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024084 vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024085 }
24086#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24087
24088 VULKAN_HPP_INLINE void Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue ) const
24089 {
24090 vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( pQueue ) );
24091 }
24092#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24093 VULKAN_HPP_INLINE Queue Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const
24094 {
24095 Queue queue;
24096 vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( &queue ) );
24097 return queue;
24098 }
24099#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24100
24101#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24102 VULKAN_HPP_INLINE Result Device::waitIdle() const
24103 {
24104 return static_cast<Result>( vkDeviceWaitIdle( m_device ) );
24105 }
24106#else
24107 VULKAN_HPP_INLINE ResultValueType<void>::type Device::waitIdle() const
24108 {
24109 Result result = static_cast<Result>( vkDeviceWaitIdle( m_device ) );
24110 return createResultValue( result, "vk::Device::waitIdle" );
24111 }
24112#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24113
24114 VULKAN_HPP_INLINE Result Device::allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory ) const
24115 {
24116 return static_cast<Result>( vkAllocateMemory( m_device, reinterpret_cast<const VkMemoryAllocateInfo*>( pAllocateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDeviceMemory*>( pMemory ) ) );
24117 }
24118#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24119 VULKAN_HPP_INLINE ResultValueType<DeviceMemory>::type Device::allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator ) const
24120 {
24121 DeviceMemory memory;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024122 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 -070024123 return createResultValue( result, memory, "vk::Device::allocateMemory" );
24124 }
24125#ifndef VULKAN_HPP_NO_SMART_HANDLE
24126 VULKAN_HPP_INLINE UniqueDeviceMemory Device::allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator ) const
24127 {
24128 DeviceMemoryDeleter deleter( *this, allocator );
24129 return UniqueDeviceMemory( allocateMemory( allocateInfo, allocator ), deleter );
24130 }
24131#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24132#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24133
24134 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator ) const
24135 {
24136 vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24137 }
24138#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24139 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator ) const
24140 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024141 vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024142 }
24143#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24144
24145 VULKAN_HPP_INLINE Result Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData ) const
24146 {
24147 return static_cast<Result>( vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), ppData ) );
24148 }
24149#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24150 VULKAN_HPP_INLINE ResultValueType<void*>::type Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags ) const
24151 {
24152 void* pData;
24153 Result result = static_cast<Result>( vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), &pData ) );
24154 return createResultValue( result, pData, "vk::Device::mapMemory" );
24155 }
24156#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24157
24158 VULKAN_HPP_INLINE void Device::unmapMemory( DeviceMemory memory ) const
24159 {
24160 vkUnmapMemory( m_device, static_cast<VkDeviceMemory>( memory ) );
24161 }
24162
24163 VULKAN_HPP_INLINE Result Device::flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const
24164 {
24165 return static_cast<Result>( vkFlushMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
24166 }
24167#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24168 VULKAN_HPP_INLINE ResultValueType<void>::type Device::flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const
24169 {
24170 Result result = static_cast<Result>( vkFlushMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
24171 return createResultValue( result, "vk::Device::flushMappedMemoryRanges" );
24172 }
24173#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24174
24175 VULKAN_HPP_INLINE Result Device::invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const
24176 {
24177 return static_cast<Result>( vkInvalidateMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
24178 }
24179#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24180 VULKAN_HPP_INLINE ResultValueType<void>::type Device::invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const
24181 {
24182 Result result = static_cast<Result>( vkInvalidateMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
24183 return createResultValue( result, "vk::Device::invalidateMappedMemoryRanges" );
24184 }
24185#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24186
24187 VULKAN_HPP_INLINE void Device::getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes ) const
24188 {
24189 vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), pCommittedMemoryInBytes );
24190 }
24191#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24192 VULKAN_HPP_INLINE DeviceSize Device::getMemoryCommitment( DeviceMemory memory ) const
24193 {
24194 DeviceSize committedMemoryInBytes;
24195 vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), &committedMemoryInBytes );
24196 return committedMemoryInBytes;
24197 }
24198#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24199
24200 VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements ) const
24201 {
24202 vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
24203 }
24204#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24205 VULKAN_HPP_INLINE MemoryRequirements Device::getBufferMemoryRequirements( Buffer buffer ) const
24206 {
24207 MemoryRequirements memoryRequirements;
24208 vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
24209 return memoryRequirements;
24210 }
24211#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24212
24213#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24214 VULKAN_HPP_INLINE Result Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const
24215 {
24216 return static_cast<Result>( vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
24217 }
24218#else
24219 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const
24220 {
24221 Result result = static_cast<Result>( vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
24222 return createResultValue( result, "vk::Device::bindBufferMemory" );
24223 }
24224#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24225
24226 VULKAN_HPP_INLINE void Device::getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements ) const
24227 {
24228 vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
24229 }
24230#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24231 VULKAN_HPP_INLINE MemoryRequirements Device::getImageMemoryRequirements( Image image ) const
24232 {
24233 MemoryRequirements memoryRequirements;
24234 vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
24235 return memoryRequirements;
24236 }
24237#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24238
24239#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24240 VULKAN_HPP_INLINE Result Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const
24241 {
24242 return static_cast<Result>( vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
24243 }
24244#else
24245 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const
24246 {
24247 Result result = static_cast<Result>( vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
24248 return createResultValue( result, "vk::Device::bindImageMemory" );
24249 }
24250#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24251
24252 VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements ) const
24253 {
24254 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), pSparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( pSparseMemoryRequirements ) );
24255 }
24256#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24257 template <typename Allocator>
24258 VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements,Allocator> Device::getImageSparseMemoryRequirements( Image image ) const
24259 {
24260 std::vector<SparseImageMemoryRequirements,Allocator> sparseMemoryRequirements;
24261 uint32_t sparseMemoryRequirementCount;
24262 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, nullptr );
24263 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
24264 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( sparseMemoryRequirements.data() ) );
24265 return sparseMemoryRequirements;
24266 }
24267#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24268
24269 VULKAN_HPP_INLINE Result Device::createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
24270 {
24271 return static_cast<Result>( vkCreateFence( m_device, reinterpret_cast<const VkFenceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
24272 }
24273#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24274 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24275 {
24276 Fence fence;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024277 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 -070024278 return createResultValue( result, fence, "vk::Device::createFence" );
24279 }
24280#ifndef VULKAN_HPP_NO_SMART_HANDLE
24281 VULKAN_HPP_INLINE UniqueFence Device::createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24282 {
24283 FenceDeleter deleter( *this, allocator );
24284 return UniqueFence( createFence( createInfo, allocator ), deleter );
24285 }
24286#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24287#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24288
24289 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, const AllocationCallbacks* pAllocator ) const
24290 {
24291 vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24292 }
24293#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24294 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator ) const
24295 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024296 vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024297 }
24298#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24299
24300 VULKAN_HPP_INLINE Result Device::resetFences( uint32_t fenceCount, const Fence* pFences ) const
24301 {
24302 return static_cast<Result>( vkResetFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ) ) );
24303 }
24304#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24305 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetFences( ArrayProxy<const Fence> fences ) const
24306 {
24307 Result result = static_cast<Result>( vkResetFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ) ) );
24308 return createResultValue( result, "vk::Device::resetFences" );
24309 }
24310#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24311
24312#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24313 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence ) const
24314 {
24315 return static_cast<Result>( vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
24316 }
24317#else
24318 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence ) const
24319 {
24320 Result result = static_cast<Result>( vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
24321 return createResultValue( result, "vk::Device::getFenceStatus", { Result::eSuccess, Result::eNotReady } );
24322 }
24323#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24324
24325 VULKAN_HPP_INLINE Result Device::waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout ) const
24326 {
24327 return static_cast<Result>( vkWaitForFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ), waitAll, timeout ) );
24328 }
24329#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24330 VULKAN_HPP_INLINE Result Device::waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout ) const
24331 {
24332 Result result = static_cast<Result>( vkWaitForFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ), waitAll, timeout ) );
24333 return createResultValue( result, "vk::Device::waitForFences", { Result::eSuccess, Result::eTimeout } );
24334 }
24335#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24336
24337 VULKAN_HPP_INLINE Result Device::createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore ) const
24338 {
24339 return static_cast<Result>( vkCreateSemaphore( m_device, reinterpret_cast<const VkSemaphoreCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSemaphore*>( pSemaphore ) ) );
24340 }
24341#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24342 VULKAN_HPP_INLINE ResultValueType<Semaphore>::type Device::createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24343 {
24344 Semaphore semaphore;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024345 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 -070024346 return createResultValue( result, semaphore, "vk::Device::createSemaphore" );
24347 }
24348#ifndef VULKAN_HPP_NO_SMART_HANDLE
24349 VULKAN_HPP_INLINE UniqueSemaphore Device::createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24350 {
24351 SemaphoreDeleter deleter( *this, allocator );
24352 return UniqueSemaphore( createSemaphore( createInfo, allocator ), deleter );
24353 }
24354#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24355#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24356
24357 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator ) const
24358 {
24359 vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24360 }
24361#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24362 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator ) const
24363 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024364 vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024365 }
24366#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24367
24368 VULKAN_HPP_INLINE Result Device::createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent ) const
24369 {
24370 return static_cast<Result>( vkCreateEvent( m_device, reinterpret_cast<const VkEventCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkEvent*>( pEvent ) ) );
24371 }
24372#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24373 VULKAN_HPP_INLINE ResultValueType<Event>::type Device::createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24374 {
24375 Event event;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024376 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 -070024377 return createResultValue( result, event, "vk::Device::createEvent" );
24378 }
24379#ifndef VULKAN_HPP_NO_SMART_HANDLE
24380 VULKAN_HPP_INLINE UniqueEvent Device::createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24381 {
24382 EventDeleter deleter( *this, allocator );
24383 return UniqueEvent( createEvent( createInfo, allocator ), deleter );
24384 }
24385#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24386#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24387
24388 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, const AllocationCallbacks* pAllocator ) const
24389 {
24390 vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24391 }
24392#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24393 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, Optional<const AllocationCallbacks> allocator ) const
24394 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024395 vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024396 }
24397#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24398
24399#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24400 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event ) const
24401 {
24402 return static_cast<Result>( vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
24403 }
24404#else
24405 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event ) const
24406 {
24407 Result result = static_cast<Result>( vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
24408 return createResultValue( result, "vk::Device::getEventStatus", { Result::eEventSet, Result::eEventReset } );
24409 }
24410#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24411
24412#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24413 VULKAN_HPP_INLINE Result Device::setEvent( Event event ) const
24414 {
24415 return static_cast<Result>( vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
24416 }
24417#else
24418 VULKAN_HPP_INLINE ResultValueType<void>::type Device::setEvent( Event event ) const
24419 {
24420 Result result = static_cast<Result>( vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
24421 return createResultValue( result, "vk::Device::setEvent" );
24422 }
24423#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24424
24425#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24426 VULKAN_HPP_INLINE Result Device::resetEvent( Event event ) const
24427 {
24428 return static_cast<Result>( vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
24429 }
24430#else
24431 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetEvent( Event event ) const
24432 {
24433 Result result = static_cast<Result>( vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
24434 return createResultValue( result, "vk::Device::resetEvent" );
24435 }
24436#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24437
24438 VULKAN_HPP_INLINE Result Device::createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool ) const
24439 {
24440 return static_cast<Result>( vkCreateQueryPool( m_device, reinterpret_cast<const VkQueryPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkQueryPool*>( pQueryPool ) ) );
24441 }
24442#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24443 VULKAN_HPP_INLINE ResultValueType<QueryPool>::type Device::createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24444 {
24445 QueryPool queryPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024446 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 -070024447 return createResultValue( result, queryPool, "vk::Device::createQueryPool" );
24448 }
24449#ifndef VULKAN_HPP_NO_SMART_HANDLE
24450 VULKAN_HPP_INLINE UniqueQueryPool Device::createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24451 {
24452 QueryPoolDeleter deleter( *this, allocator );
24453 return UniqueQueryPool( createQueryPool( createInfo, allocator ), deleter );
24454 }
24455#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24456#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24457
24458 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator ) const
24459 {
24460 vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24461 }
24462#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24463 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator ) const
24464 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024465 vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024466 }
24467#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24468
24469 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, DeviceSize stride, QueryResultFlags flags ) const
24470 {
24471 return static_cast<Result>( vkGetQueryPoolResults( m_device, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, dataSize, pData, stride, static_cast<VkQueryResultFlags>( flags ) ) );
24472 }
24473#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24474 template <typename T>
24475 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, ArrayProxy<T> data, DeviceSize stride, QueryResultFlags flags ) const
24476 {
24477 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 ) ) );
24478 return createResultValue( result, "vk::Device::getQueryPoolResults", { Result::eSuccess, Result::eNotReady } );
24479 }
24480#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24481
24482 VULKAN_HPP_INLINE Result Device::createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer ) const
24483 {
24484 return static_cast<Result>( vkCreateBuffer( m_device, reinterpret_cast<const VkBufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBuffer*>( pBuffer ) ) );
24485 }
24486#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24487 VULKAN_HPP_INLINE ResultValueType<Buffer>::type Device::createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24488 {
24489 Buffer buffer;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024490 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 -070024491 return createResultValue( result, buffer, "vk::Device::createBuffer" );
24492 }
24493#ifndef VULKAN_HPP_NO_SMART_HANDLE
24494 VULKAN_HPP_INLINE UniqueBuffer Device::createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24495 {
24496 BufferDeleter deleter( *this, allocator );
24497 return UniqueBuffer( createBuffer( createInfo, allocator ), deleter );
24498 }
24499#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24500#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24501
24502 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator ) const
24503 {
24504 vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24505 }
24506#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24507 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator ) const
24508 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024509 vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024510 }
24511#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24512
24513 VULKAN_HPP_INLINE Result Device::createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView ) const
24514 {
24515 return static_cast<Result>( vkCreateBufferView( m_device, reinterpret_cast<const VkBufferViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBufferView*>( pView ) ) );
24516 }
24517#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24518 VULKAN_HPP_INLINE ResultValueType<BufferView>::type Device::createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24519 {
24520 BufferView view;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024521 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 -070024522 return createResultValue( result, view, "vk::Device::createBufferView" );
24523 }
24524#ifndef VULKAN_HPP_NO_SMART_HANDLE
24525 VULKAN_HPP_INLINE UniqueBufferView Device::createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24526 {
24527 BufferViewDeleter deleter( *this, allocator );
24528 return UniqueBufferView( createBufferView( createInfo, allocator ), deleter );
24529 }
24530#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24531#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24532
24533 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator ) const
24534 {
24535 vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24536 }
24537#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24538 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator ) const
24539 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024540 vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024541 }
24542#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24543
24544 VULKAN_HPP_INLINE Result Device::createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage ) const
24545 {
24546 return static_cast<Result>( vkCreateImage( m_device, reinterpret_cast<const VkImageCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImage*>( pImage ) ) );
24547 }
24548#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24549 VULKAN_HPP_INLINE ResultValueType<Image>::type Device::createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24550 {
24551 Image image;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024552 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 -070024553 return createResultValue( result, image, "vk::Device::createImage" );
24554 }
24555#ifndef VULKAN_HPP_NO_SMART_HANDLE
24556 VULKAN_HPP_INLINE UniqueImage Device::createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24557 {
24558 ImageDeleter deleter( *this, allocator );
24559 return UniqueImage( createImage( createInfo, allocator ), deleter );
24560 }
24561#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24562#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24563
24564 VULKAN_HPP_INLINE void Device::destroyImage( Image image, const AllocationCallbacks* pAllocator ) const
24565 {
24566 vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24567 }
24568#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24569 VULKAN_HPP_INLINE void Device::destroyImage( Image image, Optional<const AllocationCallbacks> allocator ) const
24570 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024571 vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024572 }
24573#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24574
24575 VULKAN_HPP_INLINE void Device::getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout ) const
24576 {
24577 vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( pSubresource ), reinterpret_cast<VkSubresourceLayout*>( pLayout ) );
24578 }
24579#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24580 VULKAN_HPP_INLINE SubresourceLayout Device::getImageSubresourceLayout( Image image, const ImageSubresource & subresource ) const
24581 {
24582 SubresourceLayout layout;
24583 vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( &subresource ), reinterpret_cast<VkSubresourceLayout*>( &layout ) );
24584 return layout;
24585 }
24586#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24587
24588 VULKAN_HPP_INLINE Result Device::createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView ) const
24589 {
24590 return static_cast<Result>( vkCreateImageView( m_device, reinterpret_cast<const VkImageViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImageView*>( pView ) ) );
24591 }
24592#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24593 VULKAN_HPP_INLINE ResultValueType<ImageView>::type Device::createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24594 {
24595 ImageView view;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024596 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 -070024597 return createResultValue( result, view, "vk::Device::createImageView" );
24598 }
24599#ifndef VULKAN_HPP_NO_SMART_HANDLE
24600 VULKAN_HPP_INLINE UniqueImageView Device::createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24601 {
24602 ImageViewDeleter deleter( *this, allocator );
24603 return UniqueImageView( createImageView( createInfo, allocator ), deleter );
24604 }
24605#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24606#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24607
24608 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator ) const
24609 {
24610 vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24611 }
24612#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24613 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator ) const
24614 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024615 vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024616 }
24617#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24618
24619 VULKAN_HPP_INLINE Result Device::createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule ) const
24620 {
24621 return static_cast<Result>( vkCreateShaderModule( m_device, reinterpret_cast<const VkShaderModuleCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkShaderModule*>( pShaderModule ) ) );
24622 }
24623#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24624 VULKAN_HPP_INLINE ResultValueType<ShaderModule>::type Device::createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24625 {
24626 ShaderModule shaderModule;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024627 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 -070024628 return createResultValue( result, shaderModule, "vk::Device::createShaderModule" );
24629 }
24630#ifndef VULKAN_HPP_NO_SMART_HANDLE
24631 VULKAN_HPP_INLINE UniqueShaderModule Device::createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24632 {
24633 ShaderModuleDeleter deleter( *this, allocator );
24634 return UniqueShaderModule( createShaderModule( createInfo, allocator ), deleter );
24635 }
24636#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24637#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24638
24639 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator ) const
24640 {
24641 vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24642 }
24643#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24644 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator ) const
24645 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024646 vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024647 }
24648#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24649
24650 VULKAN_HPP_INLINE Result Device::createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache ) const
24651 {
24652 return static_cast<Result>( vkCreatePipelineCache( m_device, reinterpret_cast<const VkPipelineCacheCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineCache*>( pPipelineCache ) ) );
24653 }
24654#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24655 VULKAN_HPP_INLINE ResultValueType<PipelineCache>::type Device::createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24656 {
24657 PipelineCache pipelineCache;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024658 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 -070024659 return createResultValue( result, pipelineCache, "vk::Device::createPipelineCache" );
24660 }
24661#ifndef VULKAN_HPP_NO_SMART_HANDLE
24662 VULKAN_HPP_INLINE UniquePipelineCache Device::createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24663 {
24664 PipelineCacheDeleter deleter( *this, allocator );
24665 return UniquePipelineCache( createPipelineCache( createInfo, allocator ), deleter );
24666 }
24667#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24668#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24669
24670 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator ) const
24671 {
24672 vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24673 }
24674#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24675 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator ) const
24676 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024677 vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024678 }
24679#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24680
24681 VULKAN_HPP_INLINE Result Device::getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData ) const
24682 {
24683 return static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), pDataSize, pData ) );
24684 }
24685#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24686 template <typename Allocator>
24687 VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getPipelineCacheData( PipelineCache pipelineCache ) const
24688 {
24689 std::vector<uint8_t,Allocator> data;
24690 size_t dataSize;
24691 Result result;
24692 do
24693 {
24694 result = static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, nullptr ) );
24695 if ( ( result == Result::eSuccess ) && dataSize )
24696 {
24697 data.resize( dataSize );
24698 result = static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, reinterpret_cast<void*>( data.data() ) ) );
24699 }
24700 } while ( result == Result::eIncomplete );
24701 assert( dataSize <= data.size() );
24702 data.resize( dataSize );
24703 return createResultValue( result, data, "vk::Device::getPipelineCacheData" );
24704 }
24705#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24706
24707 VULKAN_HPP_INLINE Result Device::mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches ) const
24708 {
24709 return static_cast<Result>( vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCacheCount, reinterpret_cast<const VkPipelineCache*>( pSrcCaches ) ) );
24710 }
24711#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24712 VULKAN_HPP_INLINE ResultValueType<void>::type Device::mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches ) const
24713 {
24714 Result result = static_cast<Result>( vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCaches.size() , reinterpret_cast<const VkPipelineCache*>( srcCaches.data() ) ) );
24715 return createResultValue( result, "vk::Device::mergePipelineCaches" );
24716 }
24717#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24718
24719 VULKAN_HPP_INLINE Result Device::createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const
24720 {
24721 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 ) ) );
24722 }
24723#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24724 template <typename Allocator>
24725 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
24726 {
24727 std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024728 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 -070024729 return createResultValue( result, pipelines, "vk::Device::createGraphicsPipelines" );
24730 }
24731 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24732 {
24733 Pipeline pipeline;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024734 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 -070024735 return createResultValue( result, pipeline, "vk::Device::createGraphicsPipeline" );
24736 }
24737#ifndef VULKAN_HPP_NO_SMART_HANDLE
24738 template <typename Allocator>
24739 VULKAN_HPP_INLINE std::vector<UniquePipeline> Device::createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
24740 {
24741 PipelineDeleter deleter( *this, allocator );
24742 std::vector<Pipeline,Allocator> pipelines = createGraphicsPipelines( pipelineCache, createInfos, allocator );
24743 std::vector<UniquePipeline> uniquePipelines;
24744 uniquePipelines.reserve( pipelines.size() );
24745 for ( auto pipeline : pipelines )
24746 {
24747 uniquePipelines.push_back( UniquePipeline( pipeline, deleter ) );
24748 }
24749 return uniquePipelines;
24750 }
24751 VULKAN_HPP_INLINE UniquePipeline Device::createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24752 {
24753 PipelineDeleter deleter( *this, allocator );
24754 return UniquePipeline( createGraphicsPipeline( pipelineCache, createInfo, allocator ), deleter );
24755 }
24756#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24757#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24758
24759 VULKAN_HPP_INLINE Result Device::createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const
24760 {
24761 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 ) ) );
24762 }
24763#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24764 template <typename Allocator>
24765 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
24766 {
24767 std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024768 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 -070024769 return createResultValue( result, pipelines, "vk::Device::createComputePipelines" );
24770 }
24771 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24772 {
24773 Pipeline pipeline;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024774 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 -070024775 return createResultValue( result, pipeline, "vk::Device::createComputePipeline" );
24776 }
24777#ifndef VULKAN_HPP_NO_SMART_HANDLE
24778 template <typename Allocator>
24779 VULKAN_HPP_INLINE std::vector<UniquePipeline> Device::createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
24780 {
24781 PipelineDeleter deleter( *this, allocator );
24782 std::vector<Pipeline,Allocator> pipelines = createComputePipelines( pipelineCache, createInfos, allocator );
24783 std::vector<UniquePipeline> uniquePipelines;
24784 uniquePipelines.reserve( pipelines.size() );
24785 for ( auto pipeline : pipelines )
24786 {
24787 uniquePipelines.push_back( UniquePipeline( pipeline, deleter ) );
24788 }
24789 return uniquePipelines;
24790 }
24791 VULKAN_HPP_INLINE UniquePipeline Device::createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24792 {
24793 PipelineDeleter deleter( *this, allocator );
24794 return UniquePipeline( createComputePipeline( pipelineCache, createInfo, allocator ), deleter );
24795 }
24796#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24797#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24798
24799 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator ) const
24800 {
24801 vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24802 }
24803#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24804 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator ) const
24805 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024806 vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024807 }
24808#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24809
24810 VULKAN_HPP_INLINE Result Device::createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout ) const
24811 {
24812 return static_cast<Result>( vkCreatePipelineLayout( m_device, reinterpret_cast<const VkPipelineLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineLayout*>( pPipelineLayout ) ) );
24813 }
24814#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24815 VULKAN_HPP_INLINE ResultValueType<PipelineLayout>::type Device::createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24816 {
24817 PipelineLayout pipelineLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024818 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 -070024819 return createResultValue( result, pipelineLayout, "vk::Device::createPipelineLayout" );
24820 }
24821#ifndef VULKAN_HPP_NO_SMART_HANDLE
24822 VULKAN_HPP_INLINE UniquePipelineLayout Device::createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24823 {
24824 PipelineLayoutDeleter deleter( *this, allocator );
24825 return UniquePipelineLayout( createPipelineLayout( createInfo, allocator ), deleter );
24826 }
24827#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24828#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24829
24830 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator ) const
24831 {
24832 vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24833 }
24834#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24835 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator ) const
24836 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024837 vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024838 }
24839#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24840
24841 VULKAN_HPP_INLINE Result Device::createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler ) const
24842 {
24843 return static_cast<Result>( vkCreateSampler( m_device, reinterpret_cast<const VkSamplerCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSampler*>( pSampler ) ) );
24844 }
24845#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24846 VULKAN_HPP_INLINE ResultValueType<Sampler>::type Device::createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24847 {
24848 Sampler sampler;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024849 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 -070024850 return createResultValue( result, sampler, "vk::Device::createSampler" );
24851 }
24852#ifndef VULKAN_HPP_NO_SMART_HANDLE
24853 VULKAN_HPP_INLINE UniqueSampler Device::createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24854 {
24855 SamplerDeleter deleter( *this, allocator );
24856 return UniqueSampler( createSampler( createInfo, allocator ), deleter );
24857 }
24858#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24859#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24860
24861 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator ) const
24862 {
24863 vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24864 }
24865#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24866 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator ) const
24867 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024868 vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024869 }
24870#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24871
24872 VULKAN_HPP_INLINE Result Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout ) const
24873 {
24874 return static_cast<Result>( vkCreateDescriptorSetLayout( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorSetLayout*>( pSetLayout ) ) );
24875 }
24876#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24877 VULKAN_HPP_INLINE ResultValueType<DescriptorSetLayout>::type Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24878 {
24879 DescriptorSetLayout setLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024880 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 -070024881 return createResultValue( result, setLayout, "vk::Device::createDescriptorSetLayout" );
24882 }
24883#ifndef VULKAN_HPP_NO_SMART_HANDLE
24884 VULKAN_HPP_INLINE UniqueDescriptorSetLayout Device::createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24885 {
24886 DescriptorSetLayoutDeleter deleter( *this, allocator );
24887 return UniqueDescriptorSetLayout( createDescriptorSetLayout( createInfo, allocator ), deleter );
24888 }
24889#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24890#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24891
24892 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator ) const
24893 {
24894 vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24895 }
24896#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24897 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator ) const
24898 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024899 vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024900 }
24901#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24902
24903 VULKAN_HPP_INLINE Result Device::createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool ) const
24904 {
24905 return static_cast<Result>( vkCreateDescriptorPool( m_device, reinterpret_cast<const VkDescriptorPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorPool*>( pDescriptorPool ) ) );
24906 }
24907#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24908 VULKAN_HPP_INLINE ResultValueType<DescriptorPool>::type Device::createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24909 {
24910 DescriptorPool descriptorPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024911 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 -070024912 return createResultValue( result, descriptorPool, "vk::Device::createDescriptorPool" );
24913 }
24914#ifndef VULKAN_HPP_NO_SMART_HANDLE
24915 VULKAN_HPP_INLINE UniqueDescriptorPool Device::createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
24916 {
24917 DescriptorPoolDeleter deleter( *this, allocator );
24918 return UniqueDescriptorPool( createDescriptorPool( createInfo, allocator ), deleter );
24919 }
24920#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24921#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24922
24923 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator ) const
24924 {
24925 vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
24926 }
24927#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24928 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator ) const
24929 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024930 vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024931 }
24932#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24933
24934#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24935 VULKAN_HPP_INLINE Result Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const
24936 {
24937 return static_cast<Result>( vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
24938 }
24939#else
24940 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const
24941 {
24942 Result result = static_cast<Result>( vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
24943 return createResultValue( result, "vk::Device::resetDescriptorPool" );
24944 }
24945#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24946
24947 VULKAN_HPP_INLINE Result Device::allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets ) const
24948 {
24949 return static_cast<Result>( vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkDescriptorSet*>( pDescriptorSets ) ) );
24950 }
24951#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24952 template <typename Allocator>
24953 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type Device::allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo ) const
24954 {
24955 std::vector<DescriptorSet,Allocator> descriptorSets( allocateInfo.descriptorSetCount );
24956 Result result = static_cast<Result>( vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkDescriptorSet*>( descriptorSets.data() ) ) );
24957 return createResultValue( result, descriptorSets, "vk::Device::allocateDescriptorSets" );
24958 }
24959#ifndef VULKAN_HPP_NO_SMART_HANDLE
24960 template <typename Allocator>
24961 VULKAN_HPP_INLINE std::vector<UniqueDescriptorSet> Device::allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo ) const
24962 {
24963 DescriptorSetDeleter deleter( *this, allocateInfo.descriptorPool );
24964 std::vector<DescriptorSet,Allocator> descriptorSets = allocateDescriptorSets( allocateInfo );
24965 std::vector<UniqueDescriptorSet> uniqueDescriptorSets;
24966 uniqueDescriptorSets.reserve( descriptorSets.size() );
24967 for ( auto descriptorSet : descriptorSets )
24968 {
24969 uniqueDescriptorSets.push_back( UniqueDescriptorSet( descriptorSet, deleter ) );
24970 }
24971 return uniqueDescriptorSets;
24972 }
24973#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
24974#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24975
24976 VULKAN_HPP_INLINE Result Device::freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets ) const
24977 {
24978 return static_cast<Result>( vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ) ) );
24979 }
24980#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24981 VULKAN_HPP_INLINE ResultValueType<void>::type Device::freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets ) const
24982 {
24983 Result result = static_cast<Result>( vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ) ) );
24984 return createResultValue( result, "vk::Device::freeDescriptorSets" );
24985 }
24986#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24987
24988 VULKAN_HPP_INLINE void Device::updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies ) const
24989 {
24990 vkUpdateDescriptorSets( m_device, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ), descriptorCopyCount, reinterpret_cast<const VkCopyDescriptorSet*>( pDescriptorCopies ) );
24991 }
24992#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24993 VULKAN_HPP_INLINE void Device::updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies ) const
24994 {
24995 vkUpdateDescriptorSets( m_device, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ), descriptorCopies.size() , reinterpret_cast<const VkCopyDescriptorSet*>( descriptorCopies.data() ) );
24996 }
24997#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24998
24999 VULKAN_HPP_INLINE Result Device::createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer ) const
25000 {
25001 return static_cast<Result>( vkCreateFramebuffer( m_device, reinterpret_cast<const VkFramebufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFramebuffer*>( pFramebuffer ) ) );
25002 }
25003#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25004 VULKAN_HPP_INLINE ResultValueType<Framebuffer>::type Device::createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25005 {
25006 Framebuffer framebuffer;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025007 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 -070025008 return createResultValue( result, framebuffer, "vk::Device::createFramebuffer" );
25009 }
25010#ifndef VULKAN_HPP_NO_SMART_HANDLE
25011 VULKAN_HPP_INLINE UniqueFramebuffer Device::createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25012 {
25013 FramebufferDeleter deleter( *this, allocator );
25014 return UniqueFramebuffer( createFramebuffer( createInfo, allocator ), deleter );
25015 }
25016#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25017#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25018
25019 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator ) const
25020 {
25021 vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25022 }
25023#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25024 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator ) const
25025 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025026 vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025027 }
25028#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25029
25030 VULKAN_HPP_INLINE Result Device::createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass ) const
25031 {
25032 return static_cast<Result>( vkCreateRenderPass( m_device, reinterpret_cast<const VkRenderPassCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkRenderPass*>( pRenderPass ) ) );
25033 }
25034#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25035 VULKAN_HPP_INLINE ResultValueType<RenderPass>::type Device::createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25036 {
25037 RenderPass renderPass;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025038 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 -070025039 return createResultValue( result, renderPass, "vk::Device::createRenderPass" );
25040 }
25041#ifndef VULKAN_HPP_NO_SMART_HANDLE
25042 VULKAN_HPP_INLINE UniqueRenderPass Device::createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25043 {
25044 RenderPassDeleter deleter( *this, allocator );
25045 return UniqueRenderPass( createRenderPass( createInfo, allocator ), deleter );
25046 }
25047#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25048#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25049
25050 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator ) const
25051 {
25052 vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25053 }
25054#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25055 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator ) const
25056 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025057 vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025058 }
25059#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25060
25061 VULKAN_HPP_INLINE void Device::getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity ) const
25062 {
25063 vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( pGranularity ) );
25064 }
25065#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25066 VULKAN_HPP_INLINE Extent2D Device::getRenderAreaGranularity( RenderPass renderPass ) const
25067 {
25068 Extent2D granularity;
25069 vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( &granularity ) );
25070 return granularity;
25071 }
25072#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25073
25074 VULKAN_HPP_INLINE Result Device::createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool ) const
25075 {
25076 return static_cast<Result>( vkCreateCommandPool( m_device, reinterpret_cast<const VkCommandPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkCommandPool*>( pCommandPool ) ) );
25077 }
25078#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25079 VULKAN_HPP_INLINE ResultValueType<CommandPool>::type Device::createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25080 {
25081 CommandPool commandPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025082 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 -070025083 return createResultValue( result, commandPool, "vk::Device::createCommandPool" );
25084 }
25085#ifndef VULKAN_HPP_NO_SMART_HANDLE
25086 VULKAN_HPP_INLINE UniqueCommandPool Device::createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
25087 {
25088 CommandPoolDeleter deleter( *this, allocator );
25089 return UniqueCommandPool( createCommandPool( createInfo, allocator ), deleter );
25090 }
25091#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25092#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25093
25094 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator ) const
25095 {
25096 vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25097 }
25098#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25099 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator ) const
25100 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025101 vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025102 }
25103#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25104
25105#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
25106 VULKAN_HPP_INLINE Result Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const
25107 {
25108 return static_cast<Result>( vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
25109 }
25110#else
25111 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const
25112 {
25113 Result result = static_cast<Result>( vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
25114 return createResultValue( result, "vk::Device::resetCommandPool" );
25115 }
25116#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25117
25118 VULKAN_HPP_INLINE Result Device::allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers ) const
25119 {
25120 return static_cast<Result>( vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkCommandBuffer*>( pCommandBuffers ) ) );
25121 }
25122#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25123 template <typename Allocator>
25124 VULKAN_HPP_INLINE typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type Device::allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo ) const
25125 {
25126 std::vector<CommandBuffer,Allocator> commandBuffers( allocateInfo.commandBufferCount );
25127 Result result = static_cast<Result>( vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkCommandBuffer*>( commandBuffers.data() ) ) );
25128 return createResultValue( result, commandBuffers, "vk::Device::allocateCommandBuffers" );
25129 }
25130#ifndef VULKAN_HPP_NO_SMART_HANDLE
25131 template <typename Allocator>
25132 VULKAN_HPP_INLINE std::vector<UniqueCommandBuffer> Device::allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo ) const
25133 {
25134 CommandBufferDeleter deleter( *this, allocateInfo.commandPool );
25135 std::vector<CommandBuffer,Allocator> commandBuffers = allocateCommandBuffers( allocateInfo );
25136 std::vector<UniqueCommandBuffer> uniqueCommandBuffers;
25137 uniqueCommandBuffers.reserve( commandBuffers.size() );
25138 for ( auto commandBuffer : commandBuffers )
25139 {
25140 uniqueCommandBuffers.push_back( UniqueCommandBuffer( commandBuffer, deleter ) );
25141 }
25142 return uniqueCommandBuffers;
25143 }
25144#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25145#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25146
25147 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const
25148 {
25149 vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
25150 }
25151#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25152 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers ) const
25153 {
25154 vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
25155 }
25156#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25157
25158 VULKAN_HPP_INLINE Result Device::createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains ) const
25159 {
25160 return static_cast<Result>( vkCreateSharedSwapchainsKHR( m_device, swapchainCount, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfos ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchains ) ) );
25161 }
25162#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25163 template <typename Allocator>
25164 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type Device::createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator ) const
25165 {
25166 std::vector<SwapchainKHR,Allocator> swapchains( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025167 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 -070025168 return createResultValue( result, swapchains, "vk::Device::createSharedSwapchainsKHR" );
25169 }
25170 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25171 {
25172 SwapchainKHR swapchain;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025173 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 -070025174 return createResultValue( result, swapchain, "vk::Device::createSharedSwapchainKHR" );
25175 }
25176#ifndef VULKAN_HPP_NO_SMART_HANDLE
25177 template <typename Allocator>
25178 VULKAN_HPP_INLINE std::vector<UniqueSwapchainKHR> Device::createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator ) const
25179 {
25180 SwapchainKHRDeleter deleter( *this, allocator );
25181 std::vector<SwapchainKHR,Allocator> swapchainKHRs = createSharedSwapchainsKHR( createInfos, allocator );
25182 std::vector<UniqueSwapchainKHR> uniqueSwapchainKHRs;
25183 uniqueSwapchainKHRs.reserve( swapchainKHRs.size() );
25184 for ( auto swapchainKHR : swapchainKHRs )
25185 {
25186 uniqueSwapchainKHRs.push_back( UniqueSwapchainKHR( swapchainKHR, deleter ) );
25187 }
25188 return uniqueSwapchainKHRs;
25189 }
25190 VULKAN_HPP_INLINE UniqueSwapchainKHR Device::createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25191 {
25192 SwapchainKHRDeleter deleter( *this, allocator );
25193 return UniqueSwapchainKHR( createSharedSwapchainKHR( createInfo, allocator ), deleter );
25194 }
25195#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25196#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25197
25198 VULKAN_HPP_INLINE Result Device::createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain ) const
25199 {
25200 return static_cast<Result>( vkCreateSwapchainKHR( m_device, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchain ) ) );
25201 }
25202#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25203 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25204 {
25205 SwapchainKHR swapchain;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025206 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 -070025207 return createResultValue( result, swapchain, "vk::Device::createSwapchainKHR" );
25208 }
25209#ifndef VULKAN_HPP_NO_SMART_HANDLE
25210 VULKAN_HPP_INLINE UniqueSwapchainKHR Device::createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25211 {
25212 SwapchainKHRDeleter deleter( *this, allocator );
25213 return UniqueSwapchainKHR( createSwapchainKHR( createInfo, allocator ), deleter );
25214 }
25215#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25216#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25217
25218 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator ) const
25219 {
25220 vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25221 }
25222#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25223 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator ) const
25224 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025225 vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025226 }
25227#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25228
25229 VULKAN_HPP_INLINE Result Device::getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages ) const
25230 {
25231 return static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), pSwapchainImageCount, reinterpret_cast<VkImage*>( pSwapchainImages ) ) );
25232 }
25233#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25234 template <typename Allocator>
25235 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Image,Allocator>>::type Device::getSwapchainImagesKHR( SwapchainKHR swapchain ) const
25236 {
25237 std::vector<Image,Allocator> swapchainImages;
25238 uint32_t swapchainImageCount;
25239 Result result;
25240 do
25241 {
25242 result = static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, nullptr ) );
25243 if ( ( result == Result::eSuccess ) && swapchainImageCount )
25244 {
25245 swapchainImages.resize( swapchainImageCount );
25246 result = static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, reinterpret_cast<VkImage*>( swapchainImages.data() ) ) );
25247 }
25248 } while ( result == Result::eIncomplete );
25249 assert( swapchainImageCount <= swapchainImages.size() );
25250 swapchainImages.resize( swapchainImageCount );
25251 return createResultValue( result, swapchainImages, "vk::Device::getSwapchainImagesKHR" );
25252 }
25253#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25254
25255 VULKAN_HPP_INLINE Result Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex ) const
25256 {
25257 return static_cast<Result>( vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), pImageIndex ) );
25258 }
25259#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25260 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence ) const
25261 {
25262 uint32_t imageIndex;
25263 Result result = static_cast<Result>( vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), &imageIndex ) );
25264 return createResultValue( result, imageIndex, "vk::Device::acquireNextImageKHR", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
25265 }
25266#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25267
25268 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectNameEXT( DebugMarkerObjectNameInfoEXT* pNameInfo ) const
25269 {
25270 return static_cast<Result>( vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<VkDebugMarkerObjectNameInfoEXT*>( pNameInfo ) ) );
25271 }
25272#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25273 VULKAN_HPP_INLINE ResultValueType<DebugMarkerObjectNameInfoEXT>::type Device::debugMarkerSetObjectNameEXT() const
25274 {
25275 DebugMarkerObjectNameInfoEXT nameInfo;
25276 Result result = static_cast<Result>( vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<VkDebugMarkerObjectNameInfoEXT*>( &nameInfo ) ) );
25277 return createResultValue( result, nameInfo, "vk::Device::debugMarkerSetObjectNameEXT" );
25278 }
25279#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25280
25281 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectTagEXT( DebugMarkerObjectTagInfoEXT* pTagInfo ) const
25282 {
25283 return static_cast<Result>( vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<VkDebugMarkerObjectTagInfoEXT*>( pTagInfo ) ) );
25284 }
25285#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25286 VULKAN_HPP_INLINE ResultValueType<DebugMarkerObjectTagInfoEXT>::type Device::debugMarkerSetObjectTagEXT() const
25287 {
25288 DebugMarkerObjectTagInfoEXT tagInfo;
25289 Result result = static_cast<Result>( vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<VkDebugMarkerObjectTagInfoEXT*>( &tagInfo ) ) );
25290 return createResultValue( result, tagInfo, "vk::Device::debugMarkerSetObjectTagEXT" );
25291 }
25292#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25293
25294#ifdef VK_USE_PLATFORM_WIN32_KHR
25295 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const
25296 {
25297 return static_cast<Result>( vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), pHandle ) );
25298 }
25299#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25300 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType ) const
25301 {
25302 HANDLE handle;
25303 Result result = static_cast<Result>( vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), &handle ) );
25304 return createResultValue( result, handle, "vk::Device::getMemoryWin32HandleNV" );
25305 }
25306#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25307#endif /*VK_USE_PLATFORM_WIN32_KHR*/
25308
25309 VULKAN_HPP_INLINE Result Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const
25310 {
25311 return static_cast<Result>( vkCreateIndirectCommandsLayoutNVX( m_device, reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkIndirectCommandsLayoutNVX*>( pIndirectCommandsLayout ) ) );
25312 }
25313#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25314 VULKAN_HPP_INLINE ResultValueType<IndirectCommandsLayoutNVX>::type Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
25315 {
25316 IndirectCommandsLayoutNVX indirectCommandsLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025317 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 -070025318 return createResultValue( result, indirectCommandsLayout, "vk::Device::createIndirectCommandsLayoutNVX" );
25319 }
25320#ifndef VULKAN_HPP_NO_SMART_HANDLE
25321 VULKAN_HPP_INLINE UniqueIndirectCommandsLayoutNVX Device::createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
25322 {
25323 IndirectCommandsLayoutNVXDeleter deleter( *this, allocator );
25324 return UniqueIndirectCommandsLayoutNVX( createIndirectCommandsLayoutNVX( createInfo, allocator ), deleter );
25325 }
25326#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25327#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25328
25329 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator ) const
25330 {
25331 vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25332 }
25333#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25334 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator ) const
25335 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025336 vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025337 }
25338#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25339
25340 VULKAN_HPP_INLINE Result Device::createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable ) const
25341 {
25342 return static_cast<Result>( vkCreateObjectTableNVX( m_device, reinterpret_cast<const VkObjectTableCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkObjectTableNVX*>( pObjectTable ) ) );
25343 }
25344#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25345 VULKAN_HPP_INLINE ResultValueType<ObjectTableNVX>::type Device::createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
25346 {
25347 ObjectTableNVX objectTable;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025348 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 -070025349 return createResultValue( result, objectTable, "vk::Device::createObjectTableNVX" );
25350 }
25351#ifndef VULKAN_HPP_NO_SMART_HANDLE
25352 VULKAN_HPP_INLINE UniqueObjectTableNVX Device::createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
25353 {
25354 ObjectTableNVXDeleter deleter( *this, allocator );
25355 return UniqueObjectTableNVX( createObjectTableNVX( createInfo, allocator ), deleter );
25356 }
25357#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25358#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25359
25360 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator ) const
25361 {
25362 vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25363 }
25364#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25365 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator ) const
25366 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025367 vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025368 }
25369#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25370
25371 VULKAN_HPP_INLINE Result Device::registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const
25372 {
25373 return static_cast<Result>( vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectTableEntryNVX* const*>( ppObjectTableEntries ), pObjectIndices ) );
25374 }
25375#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25376 VULKAN_HPP_INLINE ResultValueType<void>::type Device::registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices ) const
25377 {
25378#ifdef VULKAN_HPP_NO_EXCEPTIONS
25379 assert( pObjectTableEntries.size() == objectIndices.size() );
25380#else
25381 if ( pObjectTableEntries.size() != objectIndices.size() )
25382 {
25383 throw std::logic_error( "vk::Device::registerObjectsNVX: pObjectTableEntries.size() != objectIndices.size()" );
25384 }
25385#endif // VULKAN_HPP_NO_EXCEPTIONS
25386 Result result = static_cast<Result>( vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), pObjectTableEntries.size() , reinterpret_cast<const VkObjectTableEntryNVX* const*>( pObjectTableEntries.data() ), objectIndices.data() ) );
25387 return createResultValue( result, "vk::Device::registerObjectsNVX" );
25388 }
25389#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25390
25391 VULKAN_HPP_INLINE Result Device::unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const
25392 {
25393 return static_cast<Result>( vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectEntryTypeNVX*>( pObjectEntryTypes ), pObjectIndices ) );
25394 }
25395#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25396 VULKAN_HPP_INLINE ResultValueType<void>::type Device::unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices ) const
25397 {
25398#ifdef VULKAN_HPP_NO_EXCEPTIONS
25399 assert( objectEntryTypes.size() == objectIndices.size() );
25400#else
25401 if ( objectEntryTypes.size() != objectIndices.size() )
25402 {
25403 throw std::logic_error( "vk::Device::unregisterObjectsNVX: objectEntryTypes.size() != objectIndices.size()" );
25404 }
25405#endif // VULKAN_HPP_NO_EXCEPTIONS
25406 Result result = static_cast<Result>( vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectEntryTypes.size() , reinterpret_cast<const VkObjectEntryTypeNVX*>( objectEntryTypes.data() ), objectIndices.data() ) );
25407 return createResultValue( result, "vk::Device::unregisterObjectsNVX" );
25408 }
25409#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25410
25411 VULKAN_HPP_INLINE void Device::trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags ) const
25412 {
25413 vkTrimCommandPoolKHR( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolTrimFlagsKHR>( flags ) );
25414 }
25415
Mark Lobodzinski3289d762017-04-03 08:22:04 -060025416#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070025417 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE* pHandle ) const
25418 {
25419 return static_cast<Result>( vkGetMemoryWin32HandleKHX( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), pHandle ) );
25420 }
25421#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25422 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType ) const
25423 {
25424 HANDLE handle;
25425 Result result = static_cast<Result>( vkGetMemoryWin32HandleKHX( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), &handle ) );
25426 return createResultValue( result, handle, "vk::Device::getMemoryWin32HandleKHX" );
25427 }
25428#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski3289d762017-04-03 08:22:04 -060025429#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070025430
Mark Lobodzinski3289d762017-04-03 08:22:04 -060025431#ifdef VK_USE_PLATFORM_WIN32_KHX
Mark Young0f183a82017-02-28 09:58:04 -070025432 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandlePropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE handle, MemoryWin32HandlePropertiesKHX* pMemoryWin32HandleProperties ) const
25433 {
25434 return static_cast<Result>( vkGetMemoryWin32HandlePropertiesKHX( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHX*>( pMemoryWin32HandleProperties ) ) );
25435 }
25436#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25437 VULKAN_HPP_INLINE ResultValueType<MemoryWin32HandlePropertiesKHX>::type Device::getMemoryWin32HandlePropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, HANDLE handle ) const
25438 {
25439 MemoryWin32HandlePropertiesKHX memoryWin32HandleProperties;
25440 Result result = static_cast<Result>( vkGetMemoryWin32HandlePropertiesKHX( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHX*>( &memoryWin32HandleProperties ) ) );
25441 return createResultValue( result, memoryWin32HandleProperties, "vk::Device::getMemoryWin32HandlePropertiesKHX" );
25442 }
25443#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski3289d762017-04-03 08:22:04 -060025444#endif /*VK_USE_PLATFORM_WIN32_KHX*/
Mark Young0f183a82017-02-28 09:58:04 -070025445
25446 VULKAN_HPP_INLINE Result Device::getMemoryFdKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType, int* pFd ) const
25447 {
25448 return static_cast<Result>( vkGetMemoryFdKHX( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), pFd ) );
25449 }
25450#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25451 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getMemoryFdKHX( DeviceMemory memory, ExternalMemoryHandleTypeFlagBitsKHX handleType ) const
25452 {
25453 int fd;
25454 Result result = static_cast<Result>( vkGetMemoryFdKHX( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), &fd ) );
25455 return createResultValue( result, fd, "vk::Device::getMemoryFdKHX" );
25456 }
25457#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25458
25459 VULKAN_HPP_INLINE Result Device::getMemoryFdPropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, int fd, MemoryFdPropertiesKHX* pMemoryFdProperties ) const
25460 {
25461 return static_cast<Result>( vkGetMemoryFdPropertiesKHX( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHX*>( pMemoryFdProperties ) ) );
25462 }
25463#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25464 VULKAN_HPP_INLINE ResultValueType<MemoryFdPropertiesKHX>::type Device::getMemoryFdPropertiesKHX( ExternalMemoryHandleTypeFlagBitsKHX handleType, int fd ) const
25465 {
25466 MemoryFdPropertiesKHX memoryFdProperties;
25467 Result result = static_cast<Result>( vkGetMemoryFdPropertiesKHX( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHX>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHX*>( &memoryFdProperties ) ) );
25468 return createResultValue( result, memoryFdProperties, "vk::Device::getMemoryFdPropertiesKHX" );
25469 }
25470#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25471
25472#ifdef VK_USE_PLATFORM_WIN32_KHX
25473 VULKAN_HPP_INLINE Result Device::getSemaphoreWin32HandleKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType, HANDLE* pHandle ) const
25474 {
25475 return static_cast<Result>( vkGetSemaphoreWin32HandleKHX( m_device, static_cast<VkSemaphore>( semaphore ), static_cast<VkExternalSemaphoreHandleTypeFlagBitsKHX>( handleType ), pHandle ) );
25476 }
25477#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25478 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getSemaphoreWin32HandleKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType ) const
25479 {
25480 HANDLE handle;
25481 Result result = static_cast<Result>( vkGetSemaphoreWin32HandleKHX( m_device, static_cast<VkSemaphore>( semaphore ), static_cast<VkExternalSemaphoreHandleTypeFlagBitsKHX>( handleType ), &handle ) );
25482 return createResultValue( result, handle, "vk::Device::getSemaphoreWin32HandleKHX" );
25483 }
25484#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25485#endif /*VK_USE_PLATFORM_WIN32_KHX*/
25486
25487#ifdef VK_USE_PLATFORM_WIN32_KHX
25488 VULKAN_HPP_INLINE Result Device::importSemaphoreWin32HandleKHX( const ImportSemaphoreWin32HandleInfoKHX* pImportSemaphoreWin32HandleInfo ) const
25489 {
25490 return static_cast<Result>( vkImportSemaphoreWin32HandleKHX( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHX*>( pImportSemaphoreWin32HandleInfo ) ) );
25491 }
25492#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25493 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreWin32HandleKHX( const ImportSemaphoreWin32HandleInfoKHX & importSemaphoreWin32HandleInfo ) const
25494 {
25495 Result result = static_cast<Result>( vkImportSemaphoreWin32HandleKHX( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHX*>( &importSemaphoreWin32HandleInfo ) ) );
25496 return createResultValue( result, "vk::Device::importSemaphoreWin32HandleKHX" );
25497 }
25498#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25499#endif /*VK_USE_PLATFORM_WIN32_KHX*/
25500
25501 VULKAN_HPP_INLINE Result Device::getSemaphoreFdKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType, int* pFd ) const
25502 {
25503 return static_cast<Result>( vkGetSemaphoreFdKHX( m_device, static_cast<VkSemaphore>( semaphore ), static_cast<VkExternalSemaphoreHandleTypeFlagBitsKHX>( handleType ), pFd ) );
25504 }
25505#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25506 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getSemaphoreFdKHX( Semaphore semaphore, ExternalSemaphoreHandleTypeFlagBitsKHX handleType ) const
25507 {
25508 int fd;
25509 Result result = static_cast<Result>( vkGetSemaphoreFdKHX( m_device, static_cast<VkSemaphore>( semaphore ), static_cast<VkExternalSemaphoreHandleTypeFlagBitsKHX>( handleType ), &fd ) );
25510 return createResultValue( result, fd, "vk::Device::getSemaphoreFdKHX" );
25511 }
25512#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25513
25514 VULKAN_HPP_INLINE Result Device::importSemaphoreFdKHX( const ImportSemaphoreFdInfoKHX* pImportSemaphoreFdInfo ) const
25515 {
25516 return static_cast<Result>( vkImportSemaphoreFdKHX( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHX*>( pImportSemaphoreFdInfo ) ) );
25517 }
25518#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25519 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreFdKHX( const ImportSemaphoreFdInfoKHX & importSemaphoreFdInfo ) const
25520 {
25521 Result result = static_cast<Result>( vkImportSemaphoreFdKHX( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHX*>( &importSemaphoreFdInfo ) ) );
25522 return createResultValue( result, "vk::Device::importSemaphoreFdKHX" );
25523 }
25524#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25525
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025526 VULKAN_HPP_INLINE Result Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo ) const
25527 {
25528 return static_cast<Result>( vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( pDisplayPowerInfo ) ) );
25529 }
25530#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25531 VULKAN_HPP_INLINE ResultValueType<void>::type Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo ) const
25532 {
25533 Result result = static_cast<Result>( vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( &displayPowerInfo ) ) );
25534 return createResultValue( result, "vk::Device::displayPowerControlEXT" );
25535 }
25536#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25537
25538 VULKAN_HPP_INLINE Result Device::registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
25539 {
25540 return static_cast<Result>( vkRegisterDeviceEventEXT( m_device, reinterpret_cast<const VkDeviceEventInfoEXT*>( pDeviceEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
25541 }
25542#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25543 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, const AllocationCallbacks & allocator ) const
25544 {
25545 Fence fence;
25546 Result result = static_cast<Result>( vkRegisterDeviceEventEXT( m_device, reinterpret_cast<const VkDeviceEventInfoEXT*>( &deviceEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( &allocator ), reinterpret_cast<VkFence*>( &fence ) ) );
25547 return createResultValue( result, fence, "vk::Device::registerEventEXT" );
25548 }
25549#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25550
25551 VULKAN_HPP_INLINE Result Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
25552 {
25553 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 ) ) );
25554 }
25555#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25556 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, const AllocationCallbacks & allocator ) const
25557 {
25558 Fence fence;
25559 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 ) ) );
25560 return createResultValue( result, fence, "vk::Device::registerDisplayEventEXT" );
25561 }
25562#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25563
25564 VULKAN_HPP_INLINE Result Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const
25565 {
25566 return static_cast<Result>( vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), pCounterValue ) );
25567 }
25568#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25569 VULKAN_HPP_INLINE ResultValue<uint64_t> Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter ) const
25570 {
25571 uint64_t counterValue;
25572 Result result = static_cast<Result>( vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), &counterValue ) );
25573 return createResultValue( result, counterValue, "vk::Device::getSwapchainCounterEXT", { Result::eSuccess, Result::eErrorDeviceLost, Result::eErrorOutOfDateKHR } );
25574 }
25575#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070025576
25577 VULKAN_HPP_INLINE void Device::getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ) const
25578 {
25579 vkGetDeviceGroupPeerMemoryFeaturesKHX( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlagsKHX*>( pPeerMemoryFeatures ) );
25580 }
25581#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25582 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX Device::getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const
25583 {
25584 PeerMemoryFeatureFlagsKHX peerMemoryFeatures;
25585 vkGetDeviceGroupPeerMemoryFeaturesKHX( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlagsKHX*>( &peerMemoryFeatures ) );
25586 return peerMemoryFeatures;
25587 }
25588#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25589
25590 VULKAN_HPP_INLINE Result Device::bindBufferMemory2KHX( uint32_t bindInfoCount, const BindBufferMemoryInfoKHX* pBindInfos ) const
25591 {
25592 return static_cast<Result>( vkBindBufferMemory2KHX( m_device, bindInfoCount, reinterpret_cast<const VkBindBufferMemoryInfoKHX*>( pBindInfos ) ) );
25593 }
25594#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25595 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory2KHX( ArrayProxy<const BindBufferMemoryInfoKHX> bindInfos ) const
25596 {
25597 Result result = static_cast<Result>( vkBindBufferMemory2KHX( m_device, bindInfos.size() , reinterpret_cast<const VkBindBufferMemoryInfoKHX*>( bindInfos.data() ) ) );
25598 return createResultValue( result, "vk::Device::bindBufferMemory2KHX" );
25599 }
25600#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25601
25602 VULKAN_HPP_INLINE Result Device::bindImageMemory2KHX( uint32_t bindInfoCount, const BindImageMemoryInfoKHX* pBindInfos ) const
25603 {
25604 return static_cast<Result>( vkBindImageMemory2KHX( m_device, bindInfoCount, reinterpret_cast<const VkBindImageMemoryInfoKHX*>( pBindInfos ) ) );
25605 }
25606#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25607 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory2KHX( ArrayProxy<const BindImageMemoryInfoKHX> bindInfos ) const
25608 {
25609 Result result = static_cast<Result>( vkBindImageMemory2KHX( m_device, bindInfos.size() , reinterpret_cast<const VkBindImageMemoryInfoKHX*>( bindInfos.data() ) ) );
25610 return createResultValue( result, "vk::Device::bindImageMemory2KHX" );
25611 }
25612#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25613
25614 VULKAN_HPP_INLINE Result Device::getGroupPresentCapabilitiesKHX( DeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ) const
25615 {
25616 return static_cast<Result>( vkGetDeviceGroupPresentCapabilitiesKHX( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHX*>( pDeviceGroupPresentCapabilities ) ) );
25617 }
25618#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25619 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentCapabilitiesKHX>::type Device::getGroupPresentCapabilitiesKHX() const
25620 {
25621 DeviceGroupPresentCapabilitiesKHX deviceGroupPresentCapabilities;
25622 Result result = static_cast<Result>( vkGetDeviceGroupPresentCapabilitiesKHX( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHX*>( &deviceGroupPresentCapabilities ) ) );
25623 return createResultValue( result, deviceGroupPresentCapabilities, "vk::Device::getGroupPresentCapabilitiesKHX" );
25624 }
25625#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25626
25627 VULKAN_HPP_INLINE Result Device::getGroupSurfacePresentModesKHX( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHX* pModes ) const
25628 {
25629 return static_cast<Result>( vkGetDeviceGroupSurfacePresentModesKHX( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHX*>( pModes ) ) );
25630 }
25631#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25632 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentModeFlagsKHX>::type Device::getGroupSurfacePresentModesKHX( SurfaceKHR surface ) const
25633 {
25634 DeviceGroupPresentModeFlagsKHX modes;
25635 Result result = static_cast<Result>( vkGetDeviceGroupSurfacePresentModesKHX( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHX*>( &modes ) ) );
25636 return createResultValue( result, modes, "vk::Device::getGroupSurfacePresentModesKHX" );
25637 }
25638#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25639
25640 VULKAN_HPP_INLINE Result Device::acquireNextImage2KHX( const AcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex ) const
25641 {
25642 return static_cast<Result>( vkAcquireNextImage2KHX( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHX*>( pAcquireInfo ), pImageIndex ) );
25643 }
25644#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25645 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImage2KHX( const AcquireNextImageInfoKHX & acquireInfo ) const
25646 {
25647 uint32_t imageIndex;
25648 Result result = static_cast<Result>( vkAcquireNextImage2KHX( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHX*>( &acquireInfo ), &imageIndex ) );
25649 return createResultValue( result, imageIndex, "vk::Device::acquireNextImage2KHX", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
25650 }
25651#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25652
25653 VULKAN_HPP_INLINE Result Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) const
25654 {
25655 return static_cast<Result>( vkCreateDescriptorUpdateTemplateKHR( m_device, reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorUpdateTemplateKHR*>( pDescriptorUpdateTemplate ) ) );
25656 }
25657#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25658 VULKAN_HPP_INLINE ResultValueType<DescriptorUpdateTemplateKHR>::type Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25659 {
25660 DescriptorUpdateTemplateKHR descriptorUpdateTemplate;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025661 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 -070025662 return createResultValue( result, descriptorUpdateTemplate, "vk::Device::createDescriptorUpdateTemplateKHR" );
25663 }
25664#ifndef VULKAN_HPP_NO_SMART_HANDLE
25665 VULKAN_HPP_INLINE UniqueDescriptorUpdateTemplateKHR Device::createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
25666 {
25667 DescriptorUpdateTemplateKHRDeleter deleter( *this, allocator );
25668 return UniqueDescriptorUpdateTemplateKHR( createDescriptorUpdateTemplateKHR( createInfo, allocator ), deleter );
25669 }
25670#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25671#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25672
25673 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const AllocationCallbacks* pAllocator ) const
25674 {
25675 vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
25676 }
25677#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25678 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator ) const
25679 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025680 vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070025681 }
25682#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25683
25684 VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData ) const
25685 {
25686 vkUpdateDescriptorSetWithTemplateKHR( m_device, static_cast<VkDescriptorSet>( descriptorSet ), static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), pData );
25687 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025688
25689 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata ) const
25690 {
25691 vkSetHdrMetadataEXT( m_device, swapchainCount, reinterpret_cast<const VkSwapchainKHR*>( pSwapchains ), reinterpret_cast<const VkHdrMetadataEXT*>( pMetadata ) );
25692 }
25693#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25694 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata ) const
25695 {
25696#ifdef VULKAN_HPP_NO_EXCEPTIONS
25697 assert( swapchains.size() == metadata.size() );
25698#else
25699 if ( swapchains.size() != metadata.size() )
25700 {
25701 throw std::logic_error( "vk::Device::setHdrMetadataEXT: swapchains.size() != metadata.size()" );
25702 }
25703#endif // VULKAN_HPP_NO_EXCEPTIONS
25704 vkSetHdrMetadataEXT( m_device, swapchains.size() , reinterpret_cast<const VkSwapchainKHR*>( swapchains.data() ), reinterpret_cast<const VkHdrMetadataEXT*>( metadata.data() ) );
25705 }
25706#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25707
25708 VULKAN_HPP_INLINE Result Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const
25709 {
25710 return static_cast<Result>( vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( pDisplayTimingProperties ) ) );
25711 }
25712#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25713 VULKAN_HPP_INLINE ResultValueType<RefreshCycleDurationGOOGLE>::type Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain ) const
25714 {
25715 RefreshCycleDurationGOOGLE displayTimingProperties;
25716 Result result = static_cast<Result>( vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( &displayTimingProperties ) ) );
25717 return createResultValue( result, displayTimingProperties, "vk::Device::getRefreshCycleDurationGOOGLE" );
25718 }
25719#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25720
25721 VULKAN_HPP_INLINE Result Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings ) const
25722 {
25723 return static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), pPresentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( pPresentationTimings ) ) );
25724 }
25725#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25726 template <typename Allocator>
25727 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain ) const
25728 {
25729 std::vector<PastPresentationTimingGOOGLE,Allocator> presentationTimings;
25730 uint32_t presentationTimingCount;
25731 Result result = static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, nullptr ) );
25732 if ( ( result == Result::eSuccess ) && presentationTimingCount )
25733 {
25734 presentationTimings.resize( presentationTimingCount );
25735 result = static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( presentationTimings.data() ) ) );
25736 }
25737 return createResultValue( result, presentationTimings, "vk::Device::getPastPresentationTimingGOOGLE" );
25738 }
25739#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25740
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025741#ifndef VULKAN_HPP_NO_SMART_HANDLE
25742 class DeviceDeleter;
25743 using UniqueDevice = UniqueHandle<Device, DeviceDeleter>;
25744#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25745
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025746 class PhysicalDevice
25747 {
25748 public:
25749 PhysicalDevice()
25750 : m_physicalDevice(VK_NULL_HANDLE)
25751 {}
25752
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070025753 PhysicalDevice( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025754 : m_physicalDevice(VK_NULL_HANDLE)
25755 {}
25756
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070025757 VULKAN_HPP_TYPESAFE_EXPLICIT PhysicalDevice(VkPhysicalDevice physicalDevice)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025758 : m_physicalDevice(physicalDevice)
25759 {}
25760
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070025761#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025762 PhysicalDevice& operator=(VkPhysicalDevice physicalDevice)
25763 {
25764 m_physicalDevice = physicalDevice;
25765 return *this;
25766 }
25767#endif
25768
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070025769 PhysicalDevice& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025770 {
25771 m_physicalDevice = VK_NULL_HANDLE;
25772 return *this;
25773 }
25774
Lenny Komowebf33162016-08-26 14:10:08 -060025775 bool operator==(PhysicalDevice const &rhs) const
25776 {
25777 return m_physicalDevice == rhs.m_physicalDevice;
25778 }
25779
25780 bool operator!=(PhysicalDevice const &rhs) const
25781 {
25782 return m_physicalDevice != rhs.m_physicalDevice;
25783 }
25784
25785 bool operator<(PhysicalDevice const &rhs) const
25786 {
25787 return m_physicalDevice < rhs.m_physicalDevice;
25788 }
25789
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025790 void getProperties( PhysicalDeviceProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025791#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025792 PhysicalDeviceProperties getProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025793#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25794
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025795 void getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025796#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025797 template <typename Allocator = std::allocator<QueueFamilyProperties>>
25798 std::vector<QueueFamilyProperties,Allocator> getQueueFamilyProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025799#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25800
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025801 void getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025802#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025803 PhysicalDeviceMemoryProperties getMemoryProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025804#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25805
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025806 void getFeatures( PhysicalDeviceFeatures* pFeatures ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025807#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025808 PhysicalDeviceFeatures getFeatures() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025809#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25810
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025811 void getFormatProperties( Format format, FormatProperties* pFormatProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025812#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025813 FormatProperties getFormatProperties( Format format ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025814#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25815
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025816 Result getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025817#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025818 ResultValueType<ImageFormatProperties>::type getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025819#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25820
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025821 Result createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025822#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025823 ResultValueType<Device>::type createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25824#ifndef VULKAN_HPP_NO_SMART_HANDLE
25825 UniqueDevice createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25826#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025827#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25828
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025829 Result enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025830#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025831 template <typename Allocator = std::allocator<LayerProperties>>
25832 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateDeviceLayerProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025833#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25834
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025835 Result enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025836#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025837 template <typename Allocator = std::allocator<ExtensionProperties>>
25838 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateDeviceExtensionProperties( Optional<const std::string> layerName = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025839#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25840
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025841 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 -060025842#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025843 template <typename Allocator = std::allocator<SparseImageFormatProperties>>
25844 std::vector<SparseImageFormatProperties,Allocator> getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025845#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25846
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025847 Result getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025848#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025849 template <typename Allocator = std::allocator<DisplayPropertiesKHR>>
25850 typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type getDisplayPropertiesKHR() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025851#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25852
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025853 Result getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025854#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025855 template <typename Allocator = std::allocator<DisplayPlanePropertiesKHR>>
25856 typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type getDisplayPlanePropertiesKHR() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025857#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25858
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025859 Result getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025860#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025861 template <typename Allocator = std::allocator<DisplayKHR>>
25862 typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025863#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25864
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025865 Result getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025866#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025867 template <typename Allocator = std::allocator<DisplayModePropertiesKHR>>
25868 typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type getDisplayModePropertiesKHR( DisplayKHR display ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025869#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25870
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025871 Result createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025872#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025873 ResultValueType<DisplayModeKHR>::type createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025874#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25875
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025876 Result getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025877#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025878 ResultValueType<DisplayPlaneCapabilitiesKHR>::type getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025879#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25880
25881#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025882 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection ) const;
25883#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25884 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection ) const;
25885#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025886#endif /*VK_USE_PLATFORM_MIR_KHR*/
25887
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025888 Result getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025889#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025890 ResultValueType<Bool32>::type getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025891#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25892
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025893 Result getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025894#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025895 ResultValueType<SurfaceCapabilitiesKHR>::type getSurfaceCapabilitiesKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025896#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25897
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025898 Result getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025899#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025900 template <typename Allocator = std::allocator<SurfaceFormatKHR>>
25901 typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type getSurfaceFormatsKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025902#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25903
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025904 Result getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025905#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025906 template <typename Allocator = std::allocator<PresentModeKHR>>
25907 typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type getSurfacePresentModesKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025908#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25909
25910#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025911 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display ) const;
25912#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25913 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const;
25914#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025915#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
25916
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025917#ifdef VK_USE_PLATFORM_WIN32_KHR
25918 Bool32 getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const;
25919#endif /*VK_USE_PLATFORM_WIN32_KHR*/
25920
25921#ifdef VK_USE_PLATFORM_XLIB_KHR
25922 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025923#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025924 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const;
25925#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25926#endif /*VK_USE_PLATFORM_XLIB_KHR*/
25927
25928#ifdef VK_USE_PLATFORM_XCB_KHR
25929 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const;
25930#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25931 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const;
25932#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25933#endif /*VK_USE_PLATFORM_XCB_KHR*/
25934
25935 Result getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const;
25936#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25937 ResultValueType<ExternalImageFormatPropertiesNV>::type getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType ) const;
25938#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25939
25940 void getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits ) const;
25941#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25942 DeviceGeneratedCommandsLimitsNVX getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features ) const;
25943#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25944
25945 void getFeatures2KHR( PhysicalDeviceFeatures2KHR* pFeatures ) const;
25946#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25947 PhysicalDeviceFeatures2KHR getFeatures2KHR() const;
25948#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25949
25950 void getProperties2KHR( PhysicalDeviceProperties2KHR* pProperties ) const;
25951#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25952 PhysicalDeviceProperties2KHR getProperties2KHR() const;
25953#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25954
25955 void getFormatProperties2KHR( Format format, FormatProperties2KHR* pFormatProperties ) const;
25956#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25957 FormatProperties2KHR getFormatProperties2KHR( Format format ) const;
25958#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25959
25960 Result getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, ImageFormatProperties2KHR* pImageFormatProperties ) const;
25961#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25962 ResultValueType<ImageFormatProperties2KHR>::type getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const;
25963#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25964
25965 void getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2KHR* pQueueFamilyProperties ) const;
25966#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25967 template <typename Allocator = std::allocator<QueueFamilyProperties2KHR>>
25968 std::vector<QueueFamilyProperties2KHR,Allocator> getQueueFamilyProperties2KHR() const;
25969#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25970
25971 void getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2KHR* pMemoryProperties ) const;
25972#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25973 PhysicalDeviceMemoryProperties2KHR getMemoryProperties2KHR() const;
25974#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25975
25976 void getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2KHR* pProperties ) const;
25977#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25978 template <typename Allocator = std::allocator<SparseImageFormatProperties2KHR>>
25979 std::vector<SparseImageFormatProperties2KHR,Allocator> getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR & formatInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025980#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25981
Mark Young0f183a82017-02-28 09:58:04 -070025982 void getExternalBufferPropertiesKHX( const PhysicalDeviceExternalBufferInfoKHX* pExternalBufferInfo, ExternalBufferPropertiesKHX* pExternalBufferProperties ) const;
25983#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25984 ExternalBufferPropertiesKHX getExternalBufferPropertiesKHX( const PhysicalDeviceExternalBufferInfoKHX & externalBufferInfo ) const;
25985#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25986
25987 void getExternalSemaphorePropertiesKHX( const PhysicalDeviceExternalSemaphoreInfoKHX* pExternalSemaphoreInfo, ExternalSemaphorePropertiesKHX* pExternalSemaphoreProperties ) const;
25988#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25989 ExternalSemaphorePropertiesKHX getExternalSemaphorePropertiesKHX( const PhysicalDeviceExternalSemaphoreInfoKHX & externalSemaphoreInfo ) const;
25990#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25991
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025992#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025993 Result releaseDisplayEXT( DisplayKHR display ) const;
25994#else
25995 ResultValueType<void>::type releaseDisplayEXT( DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070025996#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25997
25998#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025999 Result acquireXlibDisplayEXT( Display* dpy, DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070026000#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026001 ResultValueType<Display>::type acquireXlibDisplayEXT( DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070026002#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young39389872017-01-19 21:10:49 -070026003#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
26004
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026005#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
26006 Result getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay ) const;
Mark Young39389872017-01-19 21:10:49 -070026007#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026008 ResultValueType<DisplayKHR>::type getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const;
Mark Young39389872017-01-19 21:10:49 -070026009#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026010#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
Mark Young39389872017-01-19 21:10:49 -070026011
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026012 Result getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities ) const;
Mark Young39389872017-01-19 21:10:49 -070026013#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026014 ResultValueType<SurfaceCapabilities2EXT>::type getSurfaceCapabilities2EXT( SurfaceKHR surface ) const;
Mark Young39389872017-01-19 21:10:49 -070026015#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26016
Mark Young0f183a82017-02-28 09:58:04 -070026017 Result getPresentRectanglesKHX( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects ) const;
26018#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26019 template <typename Allocator = std::allocator<Rect2D>>
26020 typename ResultValueType<std::vector<Rect2D,Allocator>>::type getPresentRectanglesKHX( SurfaceKHR surface ) const;
26021#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26022
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026023 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPhysicalDevice() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026024 {
26025 return m_physicalDevice;
26026 }
26027
26028 explicit operator bool() const
26029 {
26030 return m_physicalDevice != VK_NULL_HANDLE;
26031 }
26032
26033 bool operator!() const
26034 {
26035 return m_physicalDevice == VK_NULL_HANDLE;
26036 }
26037
26038 private:
26039 VkPhysicalDevice m_physicalDevice;
26040 };
26041 static_assert( sizeof( PhysicalDevice ) == sizeof( VkPhysicalDevice ), "handle and wrapper have different size!" );
26042
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026043#ifndef VULKAN_HPP_NO_SMART_HANDLE
26044 class DeviceDeleter
26045 {
26046 public:
26047 DeviceDeleter( Optional<const AllocationCallbacks> allocator = nullptr )
26048 : m_allocator( allocator )
26049 {}
26050
26051 void operator()( Device device )
26052 {
26053 device.destroy( m_allocator );
26054 }
26055
26056 private:
26057 Optional<const AllocationCallbacks> m_allocator;
26058 };
26059#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26060
26061 VULKAN_HPP_INLINE void PhysicalDevice::getProperties( PhysicalDeviceProperties* pProperties ) const
26062 {
26063 vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( pProperties ) );
26064 }
26065#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26066 VULKAN_HPP_INLINE PhysicalDeviceProperties PhysicalDevice::getProperties() const
26067 {
26068 PhysicalDeviceProperties properties;
26069 vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( &properties ) );
26070 return properties;
26071 }
26072#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26073
26074 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties ) const
26075 {
26076 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( pQueueFamilyProperties ) );
26077 }
26078#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26079 template <typename Allocator>
26080 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties,Allocator> PhysicalDevice::getQueueFamilyProperties() const
26081 {
26082 std::vector<QueueFamilyProperties,Allocator> queueFamilyProperties;
26083 uint32_t queueFamilyPropertyCount;
26084 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
26085 queueFamilyProperties.resize( queueFamilyPropertyCount );
26086 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( queueFamilyProperties.data() ) );
26087 return queueFamilyProperties;
26088 }
26089#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26090
26091 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties ) const
26092 {
26093 vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( pMemoryProperties ) );
26094 }
26095#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26096 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties PhysicalDevice::getMemoryProperties() const
26097 {
26098 PhysicalDeviceMemoryProperties memoryProperties;
26099 vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( &memoryProperties ) );
26100 return memoryProperties;
26101 }
26102#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26103
26104 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures( PhysicalDeviceFeatures* pFeatures ) const
26105 {
26106 vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( pFeatures ) );
26107 }
26108#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26109 VULKAN_HPP_INLINE PhysicalDeviceFeatures PhysicalDevice::getFeatures() const
26110 {
26111 PhysicalDeviceFeatures features;
26112 vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( &features ) );
26113 return features;
26114 }
26115#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26116
26117 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties( Format format, FormatProperties* pFormatProperties ) const
26118 {
26119 vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( pFormatProperties ) );
26120 }
26121#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26122 VULKAN_HPP_INLINE FormatProperties PhysicalDevice::getFormatProperties( Format format ) const
26123 {
26124 FormatProperties formatProperties;
26125 vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( &formatProperties ) );
26126 return formatProperties;
26127 }
26128#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26129
26130 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties ) const
26131 {
26132 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 ) ) );
26133 }
26134#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26135 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties>::type PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const
26136 {
26137 ImageFormatProperties imageFormatProperties;
26138 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 ) ) );
26139 return createResultValue( result, imageFormatProperties, "vk::PhysicalDevice::getImageFormatProperties" );
26140 }
26141#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26142
26143 VULKAN_HPP_INLINE Result PhysicalDevice::createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice ) const
26144 {
26145 return static_cast<Result>( vkCreateDevice( m_physicalDevice, reinterpret_cast<const VkDeviceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDevice*>( pDevice ) ) );
26146 }
26147#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26148 VULKAN_HPP_INLINE ResultValueType<Device>::type PhysicalDevice::createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26149 {
26150 Device device;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026151 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 -070026152 return createResultValue( result, device, "vk::PhysicalDevice::createDevice" );
26153 }
26154#ifndef VULKAN_HPP_NO_SMART_HANDLE
26155 VULKAN_HPP_INLINE UniqueDevice PhysicalDevice::createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
26156 {
26157 DeviceDeleter deleter( allocator );
26158 return UniqueDevice( createDevice( createInfo, allocator ), deleter );
26159 }
26160#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26161#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26162
26163 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties ) const
26164 {
26165 return static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
26166 }
26167#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26168 template <typename Allocator>
26169 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type PhysicalDevice::enumerateDeviceLayerProperties() const
26170 {
26171 std::vector<LayerProperties,Allocator> properties;
26172 uint32_t propertyCount;
26173 Result result;
26174 do
26175 {
26176 result = static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, nullptr ) );
26177 if ( ( result == Result::eSuccess ) && propertyCount )
26178 {
26179 properties.resize( propertyCount );
26180 result = static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
26181 }
26182 } while ( result == Result::eIncomplete );
26183 assert( propertyCount <= properties.size() );
26184 properties.resize( propertyCount );
26185 return createResultValue( result, properties, "vk::PhysicalDevice::enumerateDeviceLayerProperties" );
26186 }
26187#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26188
26189 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties ) const
26190 {
26191 return static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
26192 }
26193#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26194 template <typename Allocator>
26195 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type PhysicalDevice::enumerateDeviceExtensionProperties( Optional<const std::string> layerName ) const
26196 {
26197 std::vector<ExtensionProperties,Allocator> properties;
26198 uint32_t propertyCount;
26199 Result result;
26200 do
26201 {
26202 result = static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
26203 if ( ( result == Result::eSuccess ) && propertyCount )
26204 {
26205 properties.resize( propertyCount );
26206 result = static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
26207 }
26208 } while ( result == Result::eIncomplete );
26209 assert( propertyCount <= properties.size() );
26210 properties.resize( propertyCount );
26211 return createResultValue( result, properties, "vk::PhysicalDevice::enumerateDeviceExtensionProperties" );
26212 }
26213#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26214
26215 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling, uint32_t* pPropertyCount, SparseImageFormatProperties* pProperties ) const
26216 {
26217 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 ) );
26218 }
26219#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26220 template <typename Allocator>
26221 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties,Allocator> PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const
26222 {
26223 std::vector<SparseImageFormatProperties,Allocator> properties;
26224 uint32_t propertyCount;
26225 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 );
26226 properties.resize( propertyCount );
26227 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() ) );
26228 return properties;
26229 }
26230#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26231
26232 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties ) const
26233 {
26234 return static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( pProperties ) ) );
26235 }
26236#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26237 template <typename Allocator>
26238 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPropertiesKHR() const
26239 {
26240 std::vector<DisplayPropertiesKHR,Allocator> properties;
26241 uint32_t propertyCount;
26242 Result result;
26243 do
26244 {
26245 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
26246 if ( ( result == Result::eSuccess ) && propertyCount )
26247 {
26248 properties.resize( propertyCount );
26249 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( properties.data() ) ) );
26250 }
26251 } while ( result == Result::eIncomplete );
26252 assert( propertyCount <= properties.size() );
26253 properties.resize( propertyCount );
26254 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayPropertiesKHR" );
26255 }
26256#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26257
26258 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties ) const
26259 {
26260 return static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( pProperties ) ) );
26261 }
26262#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26263 template <typename Allocator>
26264 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPlanePropertiesKHR() const
26265 {
26266 std::vector<DisplayPlanePropertiesKHR,Allocator> properties;
26267 uint32_t propertyCount;
26268 Result result;
26269 do
26270 {
26271 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
26272 if ( ( result == Result::eSuccess ) && propertyCount )
26273 {
26274 properties.resize( propertyCount );
26275 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( properties.data() ) ) );
26276 }
26277 } while ( result == Result::eIncomplete );
26278 assert( propertyCount <= properties.size() );
26279 properties.resize( propertyCount );
26280 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayPlanePropertiesKHR" );
26281 }
26282#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26283
26284 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays ) const
26285 {
26286 return static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, pDisplayCount, reinterpret_cast<VkDisplayKHR*>( pDisplays ) ) );
26287 }
26288#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26289 template <typename Allocator>
26290 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const
26291 {
26292 std::vector<DisplayKHR,Allocator> displays;
26293 uint32_t displayCount;
26294 Result result;
26295 do
26296 {
26297 result = static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, nullptr ) );
26298 if ( ( result == Result::eSuccess ) && displayCount )
26299 {
26300 displays.resize( displayCount );
26301 result = static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, reinterpret_cast<VkDisplayKHR*>( displays.data() ) ) );
26302 }
26303 } while ( result == Result::eIncomplete );
26304 assert( displayCount <= displays.size() );
26305 displays.resize( displayCount );
26306 return createResultValue( result, displays, "vk::PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR" );
26307 }
26308#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26309
26310 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties ) const
26311 {
26312 return static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), pPropertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( pProperties ) ) );
26313 }
26314#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26315 template <typename Allocator>
26316 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display ) const
26317 {
26318 std::vector<DisplayModePropertiesKHR,Allocator> properties;
26319 uint32_t propertyCount;
26320 Result result;
26321 do
26322 {
26323 result = static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, nullptr ) );
26324 if ( ( result == Result::eSuccess ) && propertyCount )
26325 {
26326 properties.resize( propertyCount );
26327 result = static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( properties.data() ) ) );
26328 }
26329 } while ( result == Result::eIncomplete );
26330 assert( propertyCount <= properties.size() );
26331 properties.resize( propertyCount );
26332 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayModePropertiesKHR" );
26333 }
26334#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26335
26336 VULKAN_HPP_INLINE Result PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode ) const
26337 {
26338 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 ) ) );
26339 }
26340#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26341 VULKAN_HPP_INLINE ResultValueType<DisplayModeKHR>::type PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
26342 {
26343 DisplayModeKHR mode;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026344 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 -070026345 return createResultValue( result, mode, "vk::PhysicalDevice::createDisplayModeKHR" );
26346 }
26347#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26348
26349 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities ) const
26350 {
26351 return static_cast<Result>( vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( pCapabilities ) ) );
26352 }
26353#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26354 VULKAN_HPP_INLINE ResultValueType<DisplayPlaneCapabilitiesKHR>::type PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex ) const
26355 {
26356 DisplayPlaneCapabilitiesKHR capabilities;
26357 Result result = static_cast<Result>( vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( &capabilities ) ) );
26358 return createResultValue( result, capabilities, "vk::PhysicalDevice::getDisplayPlaneCapabilitiesKHR" );
26359 }
26360#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26361
26362#ifdef VK_USE_PLATFORM_MIR_KHR
26363 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection ) const
26364 {
26365 return vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection );
26366 }
26367#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26368 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection ) const
26369 {
26370 return vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection );
26371 }
26372#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26373#endif /*VK_USE_PLATFORM_MIR_KHR*/
26374
26375 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported ) const
26376 {
26377 return static_cast<Result>( vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), pSupported ) );
26378 }
26379#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26380 VULKAN_HPP_INLINE ResultValueType<Bool32>::type PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface ) const
26381 {
26382 Bool32 supported;
26383 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), &supported ) );
26384 return createResultValue( result, supported, "vk::PhysicalDevice::getSurfaceSupportKHR" );
26385 }
26386#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26387
26388 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities ) const
26389 {
26390 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( pSurfaceCapabilities ) ) );
26391 }
26392#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26393 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilitiesKHR>::type PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface ) const
26394 {
26395 SurfaceCapabilitiesKHR surfaceCapabilities;
26396 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( &surfaceCapabilities ) ) );
26397 return createResultValue( result, surfaceCapabilities, "vk::PhysicalDevice::getSurfaceCapabilitiesKHR" );
26398 }
26399#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26400
26401 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats ) const
26402 {
26403 return static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pSurfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( pSurfaceFormats ) ) );
26404 }
26405#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26406 template <typename Allocator>
26407 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface ) const
26408 {
26409 std::vector<SurfaceFormatKHR,Allocator> surfaceFormats;
26410 uint32_t surfaceFormatCount;
26411 Result result;
26412 do
26413 {
26414 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, nullptr ) );
26415 if ( ( result == Result::eSuccess ) && surfaceFormatCount )
26416 {
26417 surfaceFormats.resize( surfaceFormatCount );
26418 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( surfaceFormats.data() ) ) );
26419 }
26420 } while ( result == Result::eIncomplete );
26421 assert( surfaceFormatCount <= surfaceFormats.size() );
26422 surfaceFormats.resize( surfaceFormatCount );
26423 return createResultValue( result, surfaceFormats, "vk::PhysicalDevice::getSurfaceFormatsKHR" );
26424 }
26425#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26426
26427 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes ) const
26428 {
26429 return static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pPresentModeCount, reinterpret_cast<VkPresentModeKHR*>( pPresentModes ) ) );
26430 }
26431#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26432 template <typename Allocator>
26433 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface ) const
26434 {
26435 std::vector<PresentModeKHR,Allocator> presentModes;
26436 uint32_t presentModeCount;
26437 Result result;
26438 do
26439 {
26440 result = static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, nullptr ) );
26441 if ( ( result == Result::eSuccess ) && presentModeCount )
26442 {
26443 presentModes.resize( presentModeCount );
26444 result = static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, reinterpret_cast<VkPresentModeKHR*>( presentModes.data() ) ) );
26445 }
26446 } while ( result == Result::eIncomplete );
26447 assert( presentModeCount <= presentModes.size() );
26448 presentModes.resize( presentModeCount );
26449 return createResultValue( result, presentModes, "vk::PhysicalDevice::getSurfacePresentModesKHR" );
26450 }
26451#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26452
26453#ifdef VK_USE_PLATFORM_WAYLAND_KHR
26454 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display ) const
26455 {
26456 return vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, display );
26457 }
26458#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26459 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const
26460 {
26461 return vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &display );
26462 }
26463#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26464#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
26465
26466#ifdef VK_USE_PLATFORM_WIN32_KHR
26467 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const
26468 {
26469 return vkGetPhysicalDeviceWin32PresentationSupportKHR( m_physicalDevice, queueFamilyIndex );
26470 }
26471#endif /*VK_USE_PLATFORM_WIN32_KHR*/
26472
26473#ifdef VK_USE_PLATFORM_XLIB_KHR
26474 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const
26475 {
26476 return vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, dpy, visualID );
26477 }
26478#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26479 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const
26480 {
26481 return vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &dpy, visualID );
26482 }
26483#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26484#endif /*VK_USE_PLATFORM_XLIB_KHR*/
26485
26486#ifdef VK_USE_PLATFORM_XCB_KHR
26487 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const
26488 {
26489 return vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection, visual_id );
26490 }
26491#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26492 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const
26493 {
26494 return vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection, visual_id );
26495 }
26496#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26497#endif /*VK_USE_PLATFORM_XCB_KHR*/
26498
26499 VULKAN_HPP_INLINE Result PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const
26500 {
26501 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 ) ) );
26502 }
26503#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26504 VULKAN_HPP_INLINE ResultValueType<ExternalImageFormatPropertiesNV>::type PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType ) const
26505 {
26506 ExternalImageFormatPropertiesNV externalImageFormatProperties;
26507 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 ) ) );
26508 return createResultValue( result, externalImageFormatProperties, "vk::PhysicalDevice::getExternalImageFormatPropertiesNV" );
26509 }
26510#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26511
26512 VULKAN_HPP_INLINE void PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits ) const
26513 {
26514 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( pFeatures ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( pLimits ) );
26515 }
26516#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26517 VULKAN_HPP_INLINE DeviceGeneratedCommandsLimitsNVX PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features ) const
26518 {
26519 DeviceGeneratedCommandsLimitsNVX limits;
26520 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( &features ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( &limits ) );
26521 return limits;
26522 }
26523#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26524
26525 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures2KHR( PhysicalDeviceFeatures2KHR* pFeatures ) const
26526 {
26527 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( pFeatures ) );
26528 }
26529#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26530 VULKAN_HPP_INLINE PhysicalDeviceFeatures2KHR PhysicalDevice::getFeatures2KHR() const
26531 {
26532 PhysicalDeviceFeatures2KHR features;
26533 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( &features ) );
26534 return features;
26535 }
26536#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26537
26538 VULKAN_HPP_INLINE void PhysicalDevice::getProperties2KHR( PhysicalDeviceProperties2KHR* pProperties ) const
26539 {
26540 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( pProperties ) );
26541 }
26542#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26543 VULKAN_HPP_INLINE PhysicalDeviceProperties2KHR PhysicalDevice::getProperties2KHR() const
26544 {
26545 PhysicalDeviceProperties2KHR properties;
26546 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( &properties ) );
26547 return properties;
26548 }
26549#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26550
26551 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties2KHR( Format format, FormatProperties2KHR* pFormatProperties ) const
26552 {
26553 vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2KHR*>( pFormatProperties ) );
26554 }
26555#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26556 VULKAN_HPP_INLINE FormatProperties2KHR PhysicalDevice::getFormatProperties2KHR( Format format ) const
26557 {
26558 FormatProperties2KHR formatProperties;
26559 vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2KHR*>( &formatProperties ) );
26560 return formatProperties;
26561 }
26562#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26563
26564 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, ImageFormatProperties2KHR* pImageFormatProperties ) const
26565 {
26566 return static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( pImageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( pImageFormatProperties ) ) );
26567 }
26568#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26569 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties2KHR>::type PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const
26570 {
26571 ImageFormatProperties2KHR imageFormatProperties;
26572 Result result = static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( &imageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( &imageFormatProperties ) ) );
26573 return createResultValue( result, imageFormatProperties, "vk::PhysicalDevice::getImageFormatProperties2KHR" );
26574 }
26575#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26576
26577 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2KHR* pQueueFamilyProperties ) const
26578 {
26579 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2KHR*>( pQueueFamilyProperties ) );
26580 }
26581#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26582 template <typename Allocator>
26583 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties2KHR,Allocator> PhysicalDevice::getQueueFamilyProperties2KHR() const
26584 {
26585 std::vector<QueueFamilyProperties2KHR,Allocator> queueFamilyProperties;
26586 uint32_t queueFamilyPropertyCount;
26587 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
26588 queueFamilyProperties.resize( queueFamilyPropertyCount );
26589 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2KHR*>( queueFamilyProperties.data() ) );
26590 return queueFamilyProperties;
26591 }
26592#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26593
26594 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2KHR* pMemoryProperties ) const
26595 {
26596 vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2KHR*>( pMemoryProperties ) );
26597 }
26598#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26599 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties2KHR PhysicalDevice::getMemoryProperties2KHR() const
26600 {
26601 PhysicalDeviceMemoryProperties2KHR memoryProperties;
26602 vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2KHR*>( &memoryProperties ) );
26603 return memoryProperties;
26604 }
26605#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26606
26607 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2KHR* pProperties ) const
26608 {
26609 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( pFormatInfo ), pPropertyCount, reinterpret_cast<VkSparseImageFormatProperties2KHR*>( pProperties ) );
26610 }
26611#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26612 template <typename Allocator>
26613 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties2KHR,Allocator> PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR & formatInfo ) const
26614 {
26615 std::vector<SparseImageFormatProperties2KHR,Allocator> properties;
26616 uint32_t propertyCount;
26617 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( &formatInfo ), &propertyCount, nullptr );
26618 properties.resize( propertyCount );
26619 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( &formatInfo ), &propertyCount, reinterpret_cast<VkSparseImageFormatProperties2KHR*>( properties.data() ) );
26620 return properties;
26621 }
26622#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26623
Mark Young0f183a82017-02-28 09:58:04 -070026624 VULKAN_HPP_INLINE void PhysicalDevice::getExternalBufferPropertiesKHX( const PhysicalDeviceExternalBufferInfoKHX* pExternalBufferInfo, ExternalBufferPropertiesKHX* pExternalBufferProperties ) const
26625 {
26626 vkGetPhysicalDeviceExternalBufferPropertiesKHX( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHX*>( pExternalBufferInfo ), reinterpret_cast<VkExternalBufferPropertiesKHX*>( pExternalBufferProperties ) );
26627 }
26628#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26629 VULKAN_HPP_INLINE ExternalBufferPropertiesKHX PhysicalDevice::getExternalBufferPropertiesKHX( const PhysicalDeviceExternalBufferInfoKHX & externalBufferInfo ) const
26630 {
26631 ExternalBufferPropertiesKHX externalBufferProperties;
26632 vkGetPhysicalDeviceExternalBufferPropertiesKHX( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHX*>( &externalBufferInfo ), reinterpret_cast<VkExternalBufferPropertiesKHX*>( &externalBufferProperties ) );
26633 return externalBufferProperties;
26634 }
26635#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26636
26637 VULKAN_HPP_INLINE void PhysicalDevice::getExternalSemaphorePropertiesKHX( const PhysicalDeviceExternalSemaphoreInfoKHX* pExternalSemaphoreInfo, ExternalSemaphorePropertiesKHX* pExternalSemaphoreProperties ) const
26638 {
26639 vkGetPhysicalDeviceExternalSemaphorePropertiesKHX( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHX*>( pExternalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphorePropertiesKHX*>( pExternalSemaphoreProperties ) );
26640 }
26641#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26642 VULKAN_HPP_INLINE ExternalSemaphorePropertiesKHX PhysicalDevice::getExternalSemaphorePropertiesKHX( const PhysicalDeviceExternalSemaphoreInfoKHX & externalSemaphoreInfo ) const
26643 {
26644 ExternalSemaphorePropertiesKHX externalSemaphoreProperties;
26645 vkGetPhysicalDeviceExternalSemaphorePropertiesKHX( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHX*>( &externalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphorePropertiesKHX*>( &externalSemaphoreProperties ) );
26646 return externalSemaphoreProperties;
26647 }
26648#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26649
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026650#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26651 VULKAN_HPP_INLINE Result PhysicalDevice::releaseDisplayEXT( DisplayKHR display ) const
26652 {
26653 return static_cast<Result>( vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
26654 }
26655#else
26656 VULKAN_HPP_INLINE ResultValueType<void>::type PhysicalDevice::releaseDisplayEXT( DisplayKHR display ) const
26657 {
26658 Result result = static_cast<Result>( vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
26659 return createResultValue( result, "vk::PhysicalDevice::releaseDisplayEXT" );
26660 }
26661#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26662
26663#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
26664 VULKAN_HPP_INLINE Result PhysicalDevice::acquireXlibDisplayEXT( Display* dpy, DisplayKHR display ) const
26665 {
26666 return static_cast<Result>( vkAcquireXlibDisplayEXT( m_physicalDevice, dpy, static_cast<VkDisplayKHR>( display ) ) );
26667 }
26668#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26669 VULKAN_HPP_INLINE ResultValueType<Display>::type PhysicalDevice::acquireXlibDisplayEXT( DisplayKHR display ) const
26670 {
26671 Display dpy;
26672 Result result = static_cast<Result>( vkAcquireXlibDisplayEXT( m_physicalDevice, &dpy, static_cast<VkDisplayKHR>( display ) ) );
26673 return createResultValue( result, dpy, "vk::PhysicalDevice::acquireXlibDisplayEXT" );
26674 }
26675#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26676#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
26677
26678#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
26679 VULKAN_HPP_INLINE Result PhysicalDevice::getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay ) const
26680 {
26681 return static_cast<Result>( vkGetRandROutputDisplayEXT( m_physicalDevice, dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( pDisplay ) ) );
26682 }
26683#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26684 VULKAN_HPP_INLINE ResultValueType<DisplayKHR>::type PhysicalDevice::getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const
26685 {
26686 DisplayKHR display;
26687 Result result = static_cast<Result>( vkGetRandROutputDisplayEXT( m_physicalDevice, &dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( &display ) ) );
26688 return createResultValue( result, display, "vk::PhysicalDevice::getRandROutputDisplayEXT" );
26689 }
26690#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26691#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
26692
26693 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities ) const
26694 {
26695 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( pSurfaceCapabilities ) ) );
26696 }
26697#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26698 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilities2EXT>::type PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface ) const
26699 {
26700 SurfaceCapabilities2EXT surfaceCapabilities;
26701 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( &surfaceCapabilities ) ) );
26702 return createResultValue( result, surfaceCapabilities, "vk::PhysicalDevice::getSurfaceCapabilities2EXT" );
26703 }
26704#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070026705
26706 VULKAN_HPP_INLINE Result PhysicalDevice::getPresentRectanglesKHX( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects ) const
26707 {
26708 return static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pRectCount, reinterpret_cast<VkRect2D*>( pRects ) ) );
26709 }
26710#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26711 template <typename Allocator>
26712 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Rect2D,Allocator>>::type PhysicalDevice::getPresentRectanglesKHX( SurfaceKHR surface ) const
26713 {
26714 std::vector<Rect2D,Allocator> rects;
26715 uint32_t rectCount;
26716 Result result;
26717 do
26718 {
26719 result = static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, nullptr ) );
26720 if ( ( result == Result::eSuccess ) && rectCount )
26721 {
26722 rects.resize( rectCount );
26723 result = static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, reinterpret_cast<VkRect2D*>( rects.data() ) ) );
26724 }
26725 } while ( result == Result::eIncomplete );
26726 assert( rectCount <= rects.size() );
26727 rects.resize( rectCount );
26728 return createResultValue( result, rects, "vk::PhysicalDevice::getPresentRectanglesKHX" );
26729 }
26730#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026731
Mark Young0f183a82017-02-28 09:58:04 -070026732 struct CmdProcessCommandsInfoNVX
26733 {
26734 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 )
26735 : sType( StructureType::eCmdProcessCommandsInfoNVX )
26736 , pNext( nullptr )
26737 , objectTable( objectTable_ )
26738 , indirectCommandsLayout( indirectCommandsLayout_ )
26739 , indirectCommandsTokenCount( indirectCommandsTokenCount_ )
26740 , pIndirectCommandsTokens( pIndirectCommandsTokens_ )
26741 , maxSequencesCount( maxSequencesCount_ )
26742 , targetCommandBuffer( targetCommandBuffer_ )
26743 , sequencesCountBuffer( sequencesCountBuffer_ )
26744 , sequencesCountOffset( sequencesCountOffset_ )
26745 , sequencesIndexBuffer( sequencesIndexBuffer_ )
26746 , sequencesIndexOffset( sequencesIndexOffset_ )
26747 {
26748 }
26749
26750 CmdProcessCommandsInfoNVX( VkCmdProcessCommandsInfoNVX const & rhs )
26751 {
26752 memcpy( this, &rhs, sizeof(CmdProcessCommandsInfoNVX) );
26753 }
26754
26755 CmdProcessCommandsInfoNVX& operator=( VkCmdProcessCommandsInfoNVX const & rhs )
26756 {
26757 memcpy( this, &rhs, sizeof(CmdProcessCommandsInfoNVX) );
26758 return *this;
26759 }
26760
26761 CmdProcessCommandsInfoNVX& setPNext( const void* pNext_ )
26762 {
26763 pNext = pNext_;
26764 return *this;
26765 }
26766
26767 CmdProcessCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
26768 {
26769 objectTable = objectTable_;
26770 return *this;
26771 }
26772
26773 CmdProcessCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
26774 {
26775 indirectCommandsLayout = indirectCommandsLayout_;
26776 return *this;
26777 }
26778
26779 CmdProcessCommandsInfoNVX& setIndirectCommandsTokenCount( uint32_t indirectCommandsTokenCount_ )
26780 {
26781 indirectCommandsTokenCount = indirectCommandsTokenCount_;
26782 return *this;
26783 }
26784
26785 CmdProcessCommandsInfoNVX& setPIndirectCommandsTokens( const IndirectCommandsTokenNVX* pIndirectCommandsTokens_ )
26786 {
26787 pIndirectCommandsTokens = pIndirectCommandsTokens_;
26788 return *this;
26789 }
26790
26791 CmdProcessCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
26792 {
26793 maxSequencesCount = maxSequencesCount_;
26794 return *this;
26795 }
26796
26797 CmdProcessCommandsInfoNVX& setTargetCommandBuffer( CommandBuffer targetCommandBuffer_ )
26798 {
26799 targetCommandBuffer = targetCommandBuffer_;
26800 return *this;
26801 }
26802
26803 CmdProcessCommandsInfoNVX& setSequencesCountBuffer( Buffer sequencesCountBuffer_ )
26804 {
26805 sequencesCountBuffer = sequencesCountBuffer_;
26806 return *this;
26807 }
26808
26809 CmdProcessCommandsInfoNVX& setSequencesCountOffset( DeviceSize sequencesCountOffset_ )
26810 {
26811 sequencesCountOffset = sequencesCountOffset_;
26812 return *this;
26813 }
26814
26815 CmdProcessCommandsInfoNVX& setSequencesIndexBuffer( Buffer sequencesIndexBuffer_ )
26816 {
26817 sequencesIndexBuffer = sequencesIndexBuffer_;
26818 return *this;
26819 }
26820
26821 CmdProcessCommandsInfoNVX& setSequencesIndexOffset( DeviceSize sequencesIndexOffset_ )
26822 {
26823 sequencesIndexOffset = sequencesIndexOffset_;
26824 return *this;
26825 }
26826
26827 operator const VkCmdProcessCommandsInfoNVX&() const
26828 {
26829 return *reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>(this);
26830 }
26831
26832 bool operator==( CmdProcessCommandsInfoNVX const& rhs ) const
26833 {
26834 return ( sType == rhs.sType )
26835 && ( pNext == rhs.pNext )
26836 && ( objectTable == rhs.objectTable )
26837 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
26838 && ( indirectCommandsTokenCount == rhs.indirectCommandsTokenCount )
26839 && ( pIndirectCommandsTokens == rhs.pIndirectCommandsTokens )
26840 && ( maxSequencesCount == rhs.maxSequencesCount )
26841 && ( targetCommandBuffer == rhs.targetCommandBuffer )
26842 && ( sequencesCountBuffer == rhs.sequencesCountBuffer )
26843 && ( sequencesCountOffset == rhs.sequencesCountOffset )
26844 && ( sequencesIndexBuffer == rhs.sequencesIndexBuffer )
26845 && ( sequencesIndexOffset == rhs.sequencesIndexOffset );
26846 }
26847
26848 bool operator!=( CmdProcessCommandsInfoNVX const& rhs ) const
26849 {
26850 return !operator==( rhs );
26851 }
26852
26853 private:
26854 StructureType sType;
26855
26856 public:
26857 const void* pNext;
26858 ObjectTableNVX objectTable;
26859 IndirectCommandsLayoutNVX indirectCommandsLayout;
26860 uint32_t indirectCommandsTokenCount;
26861 const IndirectCommandsTokenNVX* pIndirectCommandsTokens;
26862 uint32_t maxSequencesCount;
26863 CommandBuffer targetCommandBuffer;
26864 Buffer sequencesCountBuffer;
26865 DeviceSize sequencesCountOffset;
26866 Buffer sequencesIndexBuffer;
26867 DeviceSize sequencesIndexOffset;
26868 };
26869 static_assert( sizeof( CmdProcessCommandsInfoNVX ) == sizeof( VkCmdProcessCommandsInfoNVX ), "struct and wrapper have different size!" );
26870
26871 struct PhysicalDeviceGroupPropertiesKHX
26872 {
26873 operator const VkPhysicalDeviceGroupPropertiesKHX&() const
26874 {
26875 return *reinterpret_cast<const VkPhysicalDeviceGroupPropertiesKHX*>(this);
26876 }
26877
26878 bool operator==( PhysicalDeviceGroupPropertiesKHX const& rhs ) const
26879 {
26880 return ( sType == rhs.sType )
26881 && ( pNext == rhs.pNext )
26882 && ( physicalDeviceCount == rhs.physicalDeviceCount )
26883 && ( memcmp( physicalDevices, rhs.physicalDevices, VK_MAX_DEVICE_GROUP_SIZE_KHX * sizeof( PhysicalDevice ) ) == 0 )
26884 && ( subsetAllocation == rhs.subsetAllocation );
26885 }
26886
26887 bool operator!=( PhysicalDeviceGroupPropertiesKHX const& rhs ) const
26888 {
26889 return !operator==( rhs );
26890 }
26891
26892 private:
26893 StructureType sType;
26894
26895 public:
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060026896 void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070026897 uint32_t physicalDeviceCount;
26898 PhysicalDevice physicalDevices[VK_MAX_DEVICE_GROUP_SIZE_KHX];
26899 Bool32 subsetAllocation;
26900 };
26901 static_assert( sizeof( PhysicalDeviceGroupPropertiesKHX ) == sizeof( VkPhysicalDeviceGroupPropertiesKHX ), "struct and wrapper have different size!" );
26902
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026903#ifndef VULKAN_HPP_NO_SMART_HANDLE
26904 class DebugReportCallbackEXTDeleter;
26905 using UniqueDebugReportCallbackEXT = UniqueHandle<DebugReportCallbackEXT, DebugReportCallbackEXTDeleter>;
26906 class SurfaceKHRDeleter;
26907 using UniqueSurfaceKHR = UniqueHandle<SurfaceKHR, SurfaceKHRDeleter>;
26908#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26909
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026910 class Instance
26911 {
26912 public:
26913 Instance()
26914 : m_instance(VK_NULL_HANDLE)
26915 {}
26916
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070026917 Instance( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026918 : m_instance(VK_NULL_HANDLE)
26919 {}
26920
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026921 VULKAN_HPP_TYPESAFE_EXPLICIT Instance(VkInstance instance)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026922 : m_instance(instance)
26923 {}
26924
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026925#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026926 Instance& operator=(VkInstance instance)
26927 {
26928 m_instance = instance;
26929 return *this;
26930 }
26931#endif
26932
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070026933 Instance& operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026934 {
26935 m_instance = VK_NULL_HANDLE;
26936 return *this;
26937 }
26938
Lenny Komowebf33162016-08-26 14:10:08 -060026939 bool operator==(Instance const &rhs) const
26940 {
26941 return m_instance == rhs.m_instance;
26942 }
26943
26944 bool operator!=(Instance const &rhs) const
26945 {
26946 return m_instance != rhs.m_instance;
26947 }
26948
26949 bool operator<(Instance const &rhs) const
26950 {
26951 return m_instance < rhs.m_instance;
26952 }
26953
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026954 void destroy( const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026955#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026956 void destroy( Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026957#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26958
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026959 Result enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026960#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026961 template <typename Allocator = std::allocator<PhysicalDevice>>
26962 typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type enumeratePhysicalDevices() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026963#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26964
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026965 PFN_vkVoidFunction getProcAddr( const char* pName ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026966#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026967 PFN_vkVoidFunction getProcAddr( const std::string & name ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026968#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26969
26970#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026971 Result createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026972#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026973 ResultValueType<SurfaceKHR>::type createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26974#ifndef VULKAN_HPP_NO_SMART_HANDLE
26975 UniqueSurfaceKHR createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26976#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026977#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026978#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026979
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026980 Result createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026981#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026982 ResultValueType<SurfaceKHR>::type createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26983#ifndef VULKAN_HPP_NO_SMART_HANDLE
26984 UniqueSurfaceKHR createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26985#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026986#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26987
26988#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026989 Result createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026990#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026991 ResultValueType<SurfaceKHR>::type createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26992#ifndef VULKAN_HPP_NO_SMART_HANDLE
26993 UniqueSurfaceKHR createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26994#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026995#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026996#endif /*VK_USE_PLATFORM_MIR_KHR*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026997
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026998 void destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026999#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027000 void destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027001#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27002
Mark Young39389872017-01-19 21:10:49 -070027003#ifdef VK_USE_PLATFORM_VI_NN
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027004 Result createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27005#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27006 ResultValueType<SurfaceKHR>::type createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27007#ifndef VULKAN_HPP_NO_SMART_HANDLE
27008 UniqueSurfaceKHR createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27009#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27010#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young39389872017-01-19 21:10:49 -070027011#endif /*VK_USE_PLATFORM_VI_NN*/
27012
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027013#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027014 Result createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27015#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27016 ResultValueType<SurfaceKHR>::type createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27017#ifndef VULKAN_HPP_NO_SMART_HANDLE
27018 UniqueSurfaceKHR createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27019#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27020#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027021#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
27022
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027023#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027024 Result createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27025#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27026 ResultValueType<SurfaceKHR>::type createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27027#ifndef VULKAN_HPP_NO_SMART_HANDLE
27028 UniqueSurfaceKHR createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27029#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27030#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027031#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27032
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027033#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027034 Result createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27035#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27036 ResultValueType<SurfaceKHR>::type createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27037#ifndef VULKAN_HPP_NO_SMART_HANDLE
27038 UniqueSurfaceKHR createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27039#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27040#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027041#endif /*VK_USE_PLATFORM_XLIB_KHR*/
27042
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027043#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027044 Result createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27045#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27046 ResultValueType<SurfaceKHR>::type createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27047#ifndef VULKAN_HPP_NO_SMART_HANDLE
27048 UniqueSurfaceKHR createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27049#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27050#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027051#endif /*VK_USE_PLATFORM_XCB_KHR*/
27052
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027053 Result createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027054#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027055 ResultValueType<DebugReportCallbackEXT>::type createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27056#ifndef VULKAN_HPP_NO_SMART_HANDLE
27057 UniqueDebugReportCallbackEXT createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27058#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027059#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27060
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027061 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027062#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027063 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027064#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27065
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027066 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 -060027067#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027068 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 -060027069#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27070
Mark Young0f183a82017-02-28 09:58:04 -070027071 Result enumeratePhysicalDeviceGroupsKHX( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ) const;
27072#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27073 template <typename Allocator = std::allocator<PhysicalDeviceGroupPropertiesKHX>>
27074 typename ResultValueType<std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator>>::type enumeratePhysicalDeviceGroupsKHX() const;
27075#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27076
27077#ifdef VK_USE_PLATFORM_IOS_MVK
27078 Result createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27079#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27080 ResultValueType<SurfaceKHR>::type createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27081#ifndef VULKAN_HPP_NO_SMART_HANDLE
27082 UniqueSurfaceKHR createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27083#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27084#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27085#endif /*VK_USE_PLATFORM_IOS_MVK*/
27086
27087#ifdef VK_USE_PLATFORM_MACOS_MVK
27088 Result createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
27089#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27090 ResultValueType<SurfaceKHR>::type createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27091#ifndef VULKAN_HPP_NO_SMART_HANDLE
27092 UniqueSurfaceKHR createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27093#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27094#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27095#endif /*VK_USE_PLATFORM_MACOS_MVK*/
27096
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070027097 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkInstance() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027098 {
27099 return m_instance;
27100 }
27101
27102 explicit operator bool() const
27103 {
27104 return m_instance != VK_NULL_HANDLE;
27105 }
27106
27107 bool operator!() const
27108 {
27109 return m_instance == VK_NULL_HANDLE;
27110 }
27111
27112 private:
27113 VkInstance m_instance;
27114 };
27115 static_assert( sizeof( Instance ) == sizeof( VkInstance ), "handle and wrapper have different size!" );
27116
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027117#ifndef VULKAN_HPP_NO_SMART_HANDLE
27118 class DebugReportCallbackEXTDeleter
27119 {
27120 public:
27121 DebugReportCallbackEXTDeleter( Instance instance = Instance(), Optional<const AllocationCallbacks> allocator = nullptr )
27122 : m_instance( instance )
27123 , m_allocator( allocator )
27124 {}
27125
27126 void operator()( DebugReportCallbackEXT debugReportCallbackEXT )
27127 {
27128 m_instance.destroyDebugReportCallbackEXT( debugReportCallbackEXT, m_allocator );
27129 }
27130
27131 private:
27132 Instance m_instance;
27133 Optional<const AllocationCallbacks> m_allocator;
27134 };
27135
27136 class SurfaceKHRDeleter
27137 {
27138 public:
27139 SurfaceKHRDeleter( Instance instance = Instance(), Optional<const AllocationCallbacks> allocator = nullptr )
27140 : m_instance( instance )
27141 , m_allocator( allocator )
27142 {}
27143
27144 void operator()( SurfaceKHR surfaceKHR )
27145 {
27146 m_instance.destroySurfaceKHR( surfaceKHR, m_allocator );
27147 }
27148
27149 private:
27150 Instance m_instance;
27151 Optional<const AllocationCallbacks> m_allocator;
27152 };
27153#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27154
27155 VULKAN_HPP_INLINE void Instance::destroy( const AllocationCallbacks* pAllocator ) const
27156 {
27157 vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27158 }
27159#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27160 VULKAN_HPP_INLINE void Instance::destroy( Optional<const AllocationCallbacks> allocator ) const
27161 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027162 vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027163 }
27164#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27165
27166 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices ) const
27167 {
27168 return static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, pPhysicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( pPhysicalDevices ) ) );
27169 }
27170#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27171 template <typename Allocator>
27172 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type Instance::enumeratePhysicalDevices() const
27173 {
27174 std::vector<PhysicalDevice,Allocator> physicalDevices;
27175 uint32_t physicalDeviceCount;
27176 Result result;
27177 do
27178 {
27179 result = static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, nullptr ) );
27180 if ( ( result == Result::eSuccess ) && physicalDeviceCount )
27181 {
27182 physicalDevices.resize( physicalDeviceCount );
27183 result = static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( physicalDevices.data() ) ) );
27184 }
27185 } while ( result == Result::eIncomplete );
27186 assert( physicalDeviceCount <= physicalDevices.size() );
27187 physicalDevices.resize( physicalDeviceCount );
27188 return createResultValue( result, physicalDevices, "vk::Instance::enumeratePhysicalDevices" );
27189 }
27190#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27191
27192 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const char* pName ) const
27193 {
27194 return vkGetInstanceProcAddr( m_instance, pName );
27195 }
27196#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27197 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const std::string & name ) const
27198 {
27199 return vkGetInstanceProcAddr( m_instance, name.c_str() );
27200 }
27201#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27202
27203#ifdef VK_USE_PLATFORM_ANDROID_KHR
27204 VULKAN_HPP_INLINE Result Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27205 {
27206 return static_cast<Result>( vkCreateAndroidSurfaceKHR( m_instance, reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27207 }
27208#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27209 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27210 {
27211 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027212 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 -070027213 return createResultValue( result, surface, "vk::Instance::createAndroidSurfaceKHR" );
27214 }
27215#ifndef VULKAN_HPP_NO_SMART_HANDLE
27216 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27217 {
27218 SurfaceKHRDeleter deleter( *this, allocator );
27219 return UniqueSurfaceKHR( createAndroidSurfaceKHR( createInfo, allocator ), deleter );
27220 }
27221#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27222#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27223#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
27224
27225 VULKAN_HPP_INLINE Result Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27226 {
27227 return static_cast<Result>( vkCreateDisplayPlaneSurfaceKHR( m_instance, reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27228 }
27229#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27230 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27231 {
27232 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027233 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 -070027234 return createResultValue( result, surface, "vk::Instance::createDisplayPlaneSurfaceKHR" );
27235 }
27236#ifndef VULKAN_HPP_NO_SMART_HANDLE
27237 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27238 {
27239 SurfaceKHRDeleter deleter( *this, allocator );
27240 return UniqueSurfaceKHR( createDisplayPlaneSurfaceKHR( createInfo, allocator ), deleter );
27241 }
27242#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27243#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27244
27245#ifdef VK_USE_PLATFORM_MIR_KHR
27246 VULKAN_HPP_INLINE Result Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27247 {
27248 return static_cast<Result>( vkCreateMirSurfaceKHR( m_instance, reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27249 }
27250#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27251 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27252 {
27253 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027254 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 -070027255 return createResultValue( result, surface, "vk::Instance::createMirSurfaceKHR" );
27256 }
27257#ifndef VULKAN_HPP_NO_SMART_HANDLE
27258 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27259 {
27260 SurfaceKHRDeleter deleter( *this, allocator );
27261 return UniqueSurfaceKHR( createMirSurfaceKHR( createInfo, allocator ), deleter );
27262 }
27263#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27264#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27265#endif /*VK_USE_PLATFORM_MIR_KHR*/
27266
27267 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator ) const
27268 {
27269 vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27270 }
27271#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27272 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator ) const
27273 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027274 vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027275 }
27276#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27277
27278#ifdef VK_USE_PLATFORM_VI_NN
27279 VULKAN_HPP_INLINE Result Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27280 {
27281 return static_cast<Result>( vkCreateViSurfaceNN( m_instance, reinterpret_cast<const VkViSurfaceCreateInfoNN*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27282 }
27283#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27284 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator ) const
27285 {
27286 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027287 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 -070027288 return createResultValue( result, surface, "vk::Instance::createViSurfaceNN" );
27289 }
27290#ifndef VULKAN_HPP_NO_SMART_HANDLE
27291 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator ) const
27292 {
27293 SurfaceKHRDeleter deleter( *this, allocator );
27294 return UniqueSurfaceKHR( createViSurfaceNN( createInfo, allocator ), deleter );
27295 }
27296#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27297#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27298#endif /*VK_USE_PLATFORM_VI_NN*/
27299
27300#ifdef VK_USE_PLATFORM_WAYLAND_KHR
27301 VULKAN_HPP_INLINE Result Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27302 {
27303 return static_cast<Result>( vkCreateWaylandSurfaceKHR( m_instance, reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27304 }
27305#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27306 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27307 {
27308 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027309 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 -070027310 return createResultValue( result, surface, "vk::Instance::createWaylandSurfaceKHR" );
27311 }
27312#ifndef VULKAN_HPP_NO_SMART_HANDLE
27313 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27314 {
27315 SurfaceKHRDeleter deleter( *this, allocator );
27316 return UniqueSurfaceKHR( createWaylandSurfaceKHR( createInfo, allocator ), deleter );
27317 }
27318#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27319#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27320#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
27321
27322#ifdef VK_USE_PLATFORM_WIN32_KHR
27323 VULKAN_HPP_INLINE Result Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27324 {
27325 return static_cast<Result>( vkCreateWin32SurfaceKHR( m_instance, reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27326 }
27327#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27328 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27329 {
27330 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027331 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 -070027332 return createResultValue( result, surface, "vk::Instance::createWin32SurfaceKHR" );
27333 }
27334#ifndef VULKAN_HPP_NO_SMART_HANDLE
27335 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27336 {
27337 SurfaceKHRDeleter deleter( *this, allocator );
27338 return UniqueSurfaceKHR( createWin32SurfaceKHR( createInfo, allocator ), deleter );
27339 }
27340#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27341#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27342#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27343
27344#ifdef VK_USE_PLATFORM_XLIB_KHR
27345 VULKAN_HPP_INLINE Result Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27346 {
27347 return static_cast<Result>( vkCreateXlibSurfaceKHR( m_instance, reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27348 }
27349#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27350 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27351 {
27352 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027353 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 -070027354 return createResultValue( result, surface, "vk::Instance::createXlibSurfaceKHR" );
27355 }
27356#ifndef VULKAN_HPP_NO_SMART_HANDLE
27357 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27358 {
27359 SurfaceKHRDeleter deleter( *this, allocator );
27360 return UniqueSurfaceKHR( createXlibSurfaceKHR( createInfo, allocator ), deleter );
27361 }
27362#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27363#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27364#endif /*VK_USE_PLATFORM_XLIB_KHR*/
27365
27366#ifdef VK_USE_PLATFORM_XCB_KHR
27367 VULKAN_HPP_INLINE Result Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27368 {
27369 return static_cast<Result>( vkCreateXcbSurfaceKHR( m_instance, reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27370 }
27371#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27372 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27373 {
27374 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027375 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 -070027376 return createResultValue( result, surface, "vk::Instance::createXcbSurfaceKHR" );
27377 }
27378#ifndef VULKAN_HPP_NO_SMART_HANDLE
27379 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
27380 {
27381 SurfaceKHRDeleter deleter( *this, allocator );
27382 return UniqueSurfaceKHR( createXcbSurfaceKHR( createInfo, allocator ), deleter );
27383 }
27384#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27385#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27386#endif /*VK_USE_PLATFORM_XCB_KHR*/
27387
27388 VULKAN_HPP_INLINE Result Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback ) const
27389 {
27390 return static_cast<Result>( vkCreateDebugReportCallbackEXT( m_instance, reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDebugReportCallbackEXT*>( pCallback ) ) );
27391 }
27392#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27393 VULKAN_HPP_INLINE ResultValueType<DebugReportCallbackEXT>::type Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
27394 {
27395 DebugReportCallbackEXT callback;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027396 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 -070027397 return createResultValue( result, callback, "vk::Instance::createDebugReportCallbackEXT" );
27398 }
27399#ifndef VULKAN_HPP_NO_SMART_HANDLE
27400 VULKAN_HPP_INLINE UniqueDebugReportCallbackEXT Instance::createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
27401 {
27402 DebugReportCallbackEXTDeleter deleter( *this, allocator );
27403 return UniqueDebugReportCallbackEXT( createDebugReportCallbackEXT( createInfo, allocator ), deleter );
27404 }
27405#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27406#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27407
27408 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator ) const
27409 {
27410 vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27411 }
27412#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27413 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator ) const
27414 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027415 vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027416 }
27417#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27418
27419 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
27420 {
27421 vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, pLayerPrefix, pMessage );
27422 }
27423#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27424 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
27425 {
27426#ifdef VULKAN_HPP_NO_EXCEPTIONS
27427 assert( layerPrefix.size() == message.size() );
27428#else
27429 if ( layerPrefix.size() != message.size() )
27430 {
27431 throw std::logic_error( "vk::Instance::debugReportMessageEXT: layerPrefix.size() != message.size()" );
27432 }
27433#endif // VULKAN_HPP_NO_EXCEPTIONS
27434 vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, layerPrefix.c_str(), message.c_str() );
27435 }
27436#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070027437
27438 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDeviceGroupsKHX( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ) const
Lenny Komow68432d72016-09-29 14:16:59 -060027439 {
Mark Young0f183a82017-02-28 09:58:04 -070027440 return static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, pPhysicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupPropertiesKHX*>( pPhysicalDeviceGroupProperties ) ) );
27441 }
27442#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27443 template <typename Allocator>
27444 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator>>::type Instance::enumeratePhysicalDeviceGroupsKHX() const
27445 {
27446 std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator> physicalDeviceGroupProperties;
27447 uint32_t physicalDeviceGroupCount;
27448 Result result;
27449 do
27450 {
27451 result = static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, &physicalDeviceGroupCount, nullptr ) );
27452 if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount )
27453 {
27454 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
27455 result = static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, &physicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupPropertiesKHX*>( physicalDeviceGroupProperties.data() ) ) );
27456 }
27457 } while ( result == Result::eIncomplete );
27458 assert( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() );
27459 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
27460 return createResultValue( result, physicalDeviceGroupProperties, "vk::Instance::enumeratePhysicalDeviceGroupsKHX" );
27461 }
27462#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27463
27464#ifdef VK_USE_PLATFORM_IOS_MVK
27465 VULKAN_HPP_INLINE Result Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27466 {
27467 return static_cast<Result>( vkCreateIOSSurfaceMVK( m_instance, reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27468 }
27469#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27470 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
27471 {
27472 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027473 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 -070027474 return createResultValue( result, surface, "vk::Instance::createIOSSurfaceMVK" );
27475 }
27476#ifndef VULKAN_HPP_NO_SMART_HANDLE
27477 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
27478 {
27479 SurfaceKHRDeleter deleter( *this, allocator );
27480 return UniqueSurfaceKHR( createIOSSurfaceMVK( createInfo, allocator ), deleter );
27481 }
27482#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27483#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27484#endif /*VK_USE_PLATFORM_IOS_MVK*/
27485
27486#ifdef VK_USE_PLATFORM_MACOS_MVK
27487 VULKAN_HPP_INLINE Result Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
27488 {
27489 return static_cast<Result>( vkCreateMacOSSurfaceMVK( m_instance, reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
27490 }
27491#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27492 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
27493 {
27494 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027495 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 -070027496 return createResultValue( result, surface, "vk::Instance::createMacOSSurfaceMVK" );
27497 }
27498#ifndef VULKAN_HPP_NO_SMART_HANDLE
27499 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
27500 {
27501 SurfaceKHRDeleter deleter( *this, allocator );
27502 return UniqueSurfaceKHR( createMacOSSurfaceMVK( createInfo, allocator ), deleter );
27503 }
27504#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27505#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27506#endif /*VK_USE_PLATFORM_MACOS_MVK*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027507
Mark Young0f183a82017-02-28 09:58:04 -070027508 struct DeviceGroupDeviceCreateInfoKHX
27509 {
27510 DeviceGroupDeviceCreateInfoKHX( uint32_t physicalDeviceCount_ = 0, const PhysicalDevice* pPhysicalDevices_ = nullptr )
27511 : sType( StructureType::eDeviceGroupDeviceCreateInfoKHX )
Lenny Komow68432d72016-09-29 14:16:59 -060027512 , pNext( nullptr )
Mark Young0f183a82017-02-28 09:58:04 -070027513 , physicalDeviceCount( physicalDeviceCount_ )
27514 , pPhysicalDevices( pPhysicalDevices_ )
Lenny Komow68432d72016-09-29 14:16:59 -060027515 {
27516 }
27517
Mark Young0f183a82017-02-28 09:58:04 -070027518 DeviceGroupDeviceCreateInfoKHX( VkDeviceGroupDeviceCreateInfoKHX const & rhs )
Lenny Komow68432d72016-09-29 14:16:59 -060027519 {
Mark Young0f183a82017-02-28 09:58:04 -070027520 memcpy( this, &rhs, sizeof(DeviceGroupDeviceCreateInfoKHX) );
Lenny Komow68432d72016-09-29 14:16:59 -060027521 }
27522
Mark Young0f183a82017-02-28 09:58:04 -070027523 DeviceGroupDeviceCreateInfoKHX& operator=( VkDeviceGroupDeviceCreateInfoKHX const & rhs )
Lenny Komow68432d72016-09-29 14:16:59 -060027524 {
Mark Young0f183a82017-02-28 09:58:04 -070027525 memcpy( this, &rhs, sizeof(DeviceGroupDeviceCreateInfoKHX) );
Lenny Komow68432d72016-09-29 14:16:59 -060027526 return *this;
27527 }
27528
Mark Young0f183a82017-02-28 09:58:04 -070027529 DeviceGroupDeviceCreateInfoKHX& setPNext( const void* pNext_ )
Lenny Komow68432d72016-09-29 14:16:59 -060027530 {
27531 pNext = pNext_;
27532 return *this;
27533 }
27534
Mark Young0f183a82017-02-28 09:58:04 -070027535 DeviceGroupDeviceCreateInfoKHX& setPhysicalDeviceCount( uint32_t physicalDeviceCount_ )
Lenny Komow68432d72016-09-29 14:16:59 -060027536 {
Mark Young0f183a82017-02-28 09:58:04 -070027537 physicalDeviceCount = physicalDeviceCount_;
Lenny Komow68432d72016-09-29 14:16:59 -060027538 return *this;
27539 }
27540
Mark Young0f183a82017-02-28 09:58:04 -070027541 DeviceGroupDeviceCreateInfoKHX& setPPhysicalDevices( const PhysicalDevice* pPhysicalDevices_ )
Lenny Komow68432d72016-09-29 14:16:59 -060027542 {
Mark Young0f183a82017-02-28 09:58:04 -070027543 pPhysicalDevices = pPhysicalDevices_;
Lenny Komow68432d72016-09-29 14:16:59 -060027544 return *this;
27545 }
27546
Mark Young0f183a82017-02-28 09:58:04 -070027547 operator const VkDeviceGroupDeviceCreateInfoKHX&() const
Lenny Komow68432d72016-09-29 14:16:59 -060027548 {
Mark Young0f183a82017-02-28 09:58:04 -070027549 return *reinterpret_cast<const VkDeviceGroupDeviceCreateInfoKHX*>(this);
Lenny Komow68432d72016-09-29 14:16:59 -060027550 }
27551
Mark Young0f183a82017-02-28 09:58:04 -070027552 bool operator==( DeviceGroupDeviceCreateInfoKHX const& rhs ) const
Lenny Komow68432d72016-09-29 14:16:59 -060027553 {
27554 return ( sType == rhs.sType )
27555 && ( pNext == rhs.pNext )
Mark Young0f183a82017-02-28 09:58:04 -070027556 && ( physicalDeviceCount == rhs.physicalDeviceCount )
27557 && ( pPhysicalDevices == rhs.pPhysicalDevices );
Lenny Komow68432d72016-09-29 14:16:59 -060027558 }
27559
Mark Young0f183a82017-02-28 09:58:04 -070027560 bool operator!=( DeviceGroupDeviceCreateInfoKHX const& rhs ) const
Lenny Komow68432d72016-09-29 14:16:59 -060027561 {
27562 return !operator==( rhs );
27563 }
27564
27565 private:
27566 StructureType sType;
27567
27568 public:
27569 const void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070027570 uint32_t physicalDeviceCount;
27571 const PhysicalDevice* pPhysicalDevices;
Lenny Komow68432d72016-09-29 14:16:59 -060027572 };
Mark Young0f183a82017-02-28 09:58:04 -070027573 static_assert( sizeof( DeviceGroupDeviceCreateInfoKHX ) == sizeof( VkDeviceGroupDeviceCreateInfoKHX ), "struct and wrapper have different size!" );
Lenny Komow68432d72016-09-29 14:16:59 -060027574
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027575#ifndef VULKAN_HPP_NO_SMART_HANDLE
27576 class InstanceDeleter;
27577 using UniqueInstance = UniqueHandle<Instance, InstanceDeleter>;
27578#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27579
27580 Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance );
27581#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27582 ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr );
27583#ifndef VULKAN_HPP_NO_SMART_HANDLE
27584 UniqueInstance createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr );
27585#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27586#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27587
27588#ifndef VULKAN_HPP_NO_SMART_HANDLE
27589 class InstanceDeleter
27590 {
27591 public:
27592 InstanceDeleter( Optional<const AllocationCallbacks> allocator = nullptr )
27593 : m_allocator( allocator )
27594 {}
27595
27596 void operator()( Instance instance )
27597 {
27598 instance.destroy( m_allocator );
27599 }
27600
27601 private:
27602 Optional<const AllocationCallbacks> m_allocator;
27603 };
27604#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27605
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027606 VULKAN_HPP_INLINE Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027607 {
27608 return static_cast<Result>( vkCreateInstance( reinterpret_cast<const VkInstanceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkInstance*>( pInstance ) ) );
27609 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027610#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027611 VULKAN_HPP_INLINE ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027612 {
27613 Instance instance;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027614 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 -060027615 return createResultValue( result, instance, "vk::createInstance" );
27616 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027617#ifndef VULKAN_HPP_NO_SMART_HANDLE
27618 VULKAN_HPP_INLINE UniqueInstance createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator )
27619 {
27620 InstanceDeleter deleter( allocator );
27621 return UniqueInstance( createInstance( createInfo, allocator ), deleter );
27622 }
27623#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027624#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27625
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027626
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027627 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027628 {
27629 return "(void)";
27630 }
27631
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027632 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027633 {
27634 return "{}";
27635 }
27636
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027637 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027638 {
27639 return "(void)";
27640 }
27641
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027642 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027643 {
27644 return "{}";
27645 }
27646
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027647 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027648 {
27649 return "(void)";
27650 }
27651
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027652 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027653 {
27654 return "{}";
27655 }
27656
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027657 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027658 {
27659 return "(void)";
27660 }
27661
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027662 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027663 {
27664 return "{}";
27665 }
27666
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027667 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027668 {
27669 return "(void)";
27670 }
27671
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027672 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027673 {
27674 return "{}";
27675 }
27676
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027677 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027678 {
27679 return "(void)";
27680 }
27681
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027682 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027683 {
27684 return "{}";
27685 }
27686
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027687 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027688 {
27689 return "(void)";
27690 }
27691
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027692 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027693 {
27694 return "{}";
27695 }
27696
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027697 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027698 {
27699 return "(void)";
27700 }
27701
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027702 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027703 {
27704 return "{}";
27705 }
27706
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027707 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027708 {
27709 return "(void)";
27710 }
27711
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027712 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027713 {
27714 return "{}";
27715 }
27716
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027717 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027718 {
27719 return "(void)";
27720 }
27721
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027722 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027723 {
27724 return "{}";
27725 }
27726
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027727 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027728 {
27729 return "(void)";
27730 }
27731
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027732 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027733 {
27734 return "{}";
27735 }
27736
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027737 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027738 {
27739 return "(void)";
27740 }
27741
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027742 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027743 {
27744 return "{}";
27745 }
27746
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027747 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027748 {
27749 return "(void)";
27750 }
27751
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027752 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027753 {
27754 return "{}";
27755 }
27756
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027757 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027758 {
27759 return "(void)";
27760 }
27761
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027762 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027763 {
27764 return "{}";
27765 }
27766
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027767 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027768 {
27769 return "(void)";
27770 }
27771
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027772 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027773 {
27774 return "{}";
27775 }
27776
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027777 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027778 {
27779 return "(void)";
27780 }
27781
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027782 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027783 {
27784 return "{}";
27785 }
27786
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027787 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027788 {
27789 return "(void)";
27790 }
27791
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027792 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027793 {
27794 return "{}";
27795 }
27796
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027797 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027798 {
27799 return "(void)";
27800 }
27801
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027802 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027803 {
27804 return "{}";
27805 }
27806
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027807 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027808 {
27809 return "(void)";
27810 }
27811
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027812 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027813 {
27814 return "{}";
27815 }
27816
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027817 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027818 {
27819 return "(void)";
27820 }
27821
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027822 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027823 {
27824 return "{}";
27825 }
27826
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027827 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027828 {
27829 return "(void)";
27830 }
27831
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027832 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027833 {
27834 return "{}";
27835 }
27836
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027837 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027838 {
27839 return "(void)";
27840 }
27841
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027842 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027843 {
27844 return "{}";
27845 }
27846
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027847 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027848 {
27849 return "(void)";
27850 }
27851
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027852 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027853 {
27854 return "{}";
27855 }
27856
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027857 VULKAN_HPP_INLINE std::string to_string(EventCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027858 {
27859 return "(void)";
27860 }
27861
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027862 VULKAN_HPP_INLINE std::string to_string(EventCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027863 {
27864 return "{}";
27865 }
27866
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027867 VULKAN_HPP_INLINE std::string to_string(MemoryMapFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027868 {
27869 return "(void)";
27870 }
27871
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027872 VULKAN_HPP_INLINE std::string to_string(MemoryMapFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027873 {
27874 return "{}";
27875 }
27876
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027877 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027878 {
27879 return "(void)";
27880 }
27881
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027882 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027883 {
27884 return "{}";
27885 }
27886
Mark Young0f183a82017-02-28 09:58:04 -070027887 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027888 {
27889 return "(void)";
27890 }
27891
Mark Young0f183a82017-02-28 09:58:04 -070027892 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027893 {
27894 return "{}";
27895 }
27896
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027897 VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027898 {
27899 return "(void)";
27900 }
27901
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027902 VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027903 {
27904 return "{}";
27905 }
27906
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027907 VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027908 {
27909 return "(void)";
27910 }
27911
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027912 VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027913 {
27914 return "{}";
27915 }
27916
27917#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027918 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027919 {
27920 return "(void)";
27921 }
27922#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
27923
27924#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027925 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027926 {
27927 return "{}";
27928 }
27929#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
27930
27931#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027932 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027933 {
27934 return "(void)";
27935 }
27936#endif /*VK_USE_PLATFORM_MIR_KHR*/
27937
27938#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027939 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027940 {
27941 return "{}";
27942 }
27943#endif /*VK_USE_PLATFORM_MIR_KHR*/
27944
Mark Young39389872017-01-19 21:10:49 -070027945#ifdef VK_USE_PLATFORM_VI_NN
27946 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagBitsNN)
27947 {
27948 return "(void)";
27949 }
27950#endif /*VK_USE_PLATFORM_VI_NN*/
27951
27952#ifdef VK_USE_PLATFORM_VI_NN
27953 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagsNN)
27954 {
27955 return "{}";
27956 }
27957#endif /*VK_USE_PLATFORM_VI_NN*/
27958
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027959#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027960 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027961 {
27962 return "(void)";
27963 }
27964#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
27965
27966#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027967 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027968 {
27969 return "{}";
27970 }
27971#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
27972
27973#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027974 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027975 {
27976 return "(void)";
27977 }
27978#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27979
27980#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027981 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027982 {
27983 return "{}";
27984 }
27985#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27986
27987#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027988 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027989 {
27990 return "(void)";
27991 }
27992#endif /*VK_USE_PLATFORM_XLIB_KHR*/
27993
27994#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027995 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027996 {
27997 return "{}";
27998 }
27999#endif /*VK_USE_PLATFORM_XLIB_KHR*/
28000
28001#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028002 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028003 {
28004 return "(void)";
28005 }
28006#endif /*VK_USE_PLATFORM_XCB_KHR*/
28007
28008#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028009 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028010 {
28011 return "{}";
28012 }
28013#endif /*VK_USE_PLATFORM_XCB_KHR*/
28014
Mark Young0f183a82017-02-28 09:58:04 -070028015#ifdef VK_USE_PLATFORM_IOS_MVK
28016 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagBitsMVK)
28017 {
28018 return "(void)";
28019 }
28020#endif /*VK_USE_PLATFORM_IOS_MVK*/
28021
28022#ifdef VK_USE_PLATFORM_IOS_MVK
28023 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagsMVK)
28024 {
28025 return "{}";
28026 }
28027#endif /*VK_USE_PLATFORM_IOS_MVK*/
28028
28029#ifdef VK_USE_PLATFORM_MACOS_MVK
28030 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagBitsMVK)
28031 {
28032 return "(void)";
28033 }
28034#endif /*VK_USE_PLATFORM_MACOS_MVK*/
28035
28036#ifdef VK_USE_PLATFORM_MACOS_MVK
28037 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagsMVK)
28038 {
28039 return "{}";
28040 }
28041#endif /*VK_USE_PLATFORM_MACOS_MVK*/
28042
Mark Young39389872017-01-19 21:10:49 -070028043 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagBitsKHR)
28044 {
28045 return "(void)";
28046 }
28047
28048 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagsKHR)
28049 {
28050 return "{}";
28051 }
28052
Mark Young0f183a82017-02-28 09:58:04 -070028053 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagBitsNV)
28054 {
28055 return "(void)";
28056 }
28057
28058 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagsNV)
28059 {
28060 return "{}";
28061 }
28062
28063 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagBitsEXT)
28064 {
28065 return "(void)";
28066 }
28067
28068 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagsEXT)
28069 {
28070 return "{}";
28071 }
28072
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028073 VULKAN_HPP_INLINE std::string to_string(ImageLayout value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028074 {
28075 switch (value)
28076 {
28077 case ImageLayout::eUndefined: return "Undefined";
28078 case ImageLayout::eGeneral: return "General";
28079 case ImageLayout::eColorAttachmentOptimal: return "ColorAttachmentOptimal";
28080 case ImageLayout::eDepthStencilAttachmentOptimal: return "DepthStencilAttachmentOptimal";
28081 case ImageLayout::eDepthStencilReadOnlyOptimal: return "DepthStencilReadOnlyOptimal";
28082 case ImageLayout::eShaderReadOnlyOptimal: return "ShaderReadOnlyOptimal";
28083 case ImageLayout::eTransferSrcOptimal: return "TransferSrcOptimal";
28084 case ImageLayout::eTransferDstOptimal: return "TransferDstOptimal";
28085 case ImageLayout::ePreinitialized: return "Preinitialized";
28086 case ImageLayout::ePresentSrcKHR: return "PresentSrcKHR";
28087 default: return "invalid";
28088 }
28089 }
28090
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028091 VULKAN_HPP_INLINE std::string to_string(AttachmentLoadOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028092 {
28093 switch (value)
28094 {
28095 case AttachmentLoadOp::eLoad: return "Load";
28096 case AttachmentLoadOp::eClear: return "Clear";
28097 case AttachmentLoadOp::eDontCare: return "DontCare";
28098 default: return "invalid";
28099 }
28100 }
28101
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028102 VULKAN_HPP_INLINE std::string to_string(AttachmentStoreOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028103 {
28104 switch (value)
28105 {
28106 case AttachmentStoreOp::eStore: return "Store";
28107 case AttachmentStoreOp::eDontCare: return "DontCare";
28108 default: return "invalid";
28109 }
28110 }
28111
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028112 VULKAN_HPP_INLINE std::string to_string(ImageType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028113 {
28114 switch (value)
28115 {
28116 case ImageType::e1D: return "1D";
28117 case ImageType::e2D: return "2D";
28118 case ImageType::e3D: return "3D";
28119 default: return "invalid";
28120 }
28121 }
28122
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028123 VULKAN_HPP_INLINE std::string to_string(ImageTiling value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028124 {
28125 switch (value)
28126 {
28127 case ImageTiling::eOptimal: return "Optimal";
28128 case ImageTiling::eLinear: return "Linear";
28129 default: return "invalid";
28130 }
28131 }
28132
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028133 VULKAN_HPP_INLINE std::string to_string(ImageViewType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028134 {
28135 switch (value)
28136 {
28137 case ImageViewType::e1D: return "1D";
28138 case ImageViewType::e2D: return "2D";
28139 case ImageViewType::e3D: return "3D";
28140 case ImageViewType::eCube: return "Cube";
28141 case ImageViewType::e1DArray: return "1DArray";
28142 case ImageViewType::e2DArray: return "2DArray";
28143 case ImageViewType::eCubeArray: return "CubeArray";
28144 default: return "invalid";
28145 }
28146 }
28147
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028148 VULKAN_HPP_INLINE std::string to_string(CommandBufferLevel value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028149 {
28150 switch (value)
28151 {
28152 case CommandBufferLevel::ePrimary: return "Primary";
28153 case CommandBufferLevel::eSecondary: return "Secondary";
28154 default: return "invalid";
28155 }
28156 }
28157
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028158 VULKAN_HPP_INLINE std::string to_string(ComponentSwizzle value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028159 {
28160 switch (value)
28161 {
28162 case ComponentSwizzle::eIdentity: return "Identity";
28163 case ComponentSwizzle::eZero: return "Zero";
28164 case ComponentSwizzle::eOne: return "One";
28165 case ComponentSwizzle::eR: return "R";
28166 case ComponentSwizzle::eG: return "G";
28167 case ComponentSwizzle::eB: return "B";
28168 case ComponentSwizzle::eA: return "A";
28169 default: return "invalid";
28170 }
28171 }
28172
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028173 VULKAN_HPP_INLINE std::string to_string(DescriptorType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028174 {
28175 switch (value)
28176 {
28177 case DescriptorType::eSampler: return "Sampler";
28178 case DescriptorType::eCombinedImageSampler: return "CombinedImageSampler";
28179 case DescriptorType::eSampledImage: return "SampledImage";
28180 case DescriptorType::eStorageImage: return "StorageImage";
28181 case DescriptorType::eUniformTexelBuffer: return "UniformTexelBuffer";
28182 case DescriptorType::eStorageTexelBuffer: return "StorageTexelBuffer";
28183 case DescriptorType::eUniformBuffer: return "UniformBuffer";
28184 case DescriptorType::eStorageBuffer: return "StorageBuffer";
28185 case DescriptorType::eUniformBufferDynamic: return "UniformBufferDynamic";
28186 case DescriptorType::eStorageBufferDynamic: return "StorageBufferDynamic";
28187 case DescriptorType::eInputAttachment: return "InputAttachment";
28188 default: return "invalid";
28189 }
28190 }
28191
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028192 VULKAN_HPP_INLINE std::string to_string(QueryType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028193 {
28194 switch (value)
28195 {
28196 case QueryType::eOcclusion: return "Occlusion";
28197 case QueryType::ePipelineStatistics: return "PipelineStatistics";
28198 case QueryType::eTimestamp: return "Timestamp";
28199 default: return "invalid";
28200 }
28201 }
28202
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028203 VULKAN_HPP_INLINE std::string to_string(BorderColor value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028204 {
28205 switch (value)
28206 {
28207 case BorderColor::eFloatTransparentBlack: return "FloatTransparentBlack";
28208 case BorderColor::eIntTransparentBlack: return "IntTransparentBlack";
28209 case BorderColor::eFloatOpaqueBlack: return "FloatOpaqueBlack";
28210 case BorderColor::eIntOpaqueBlack: return "IntOpaqueBlack";
28211 case BorderColor::eFloatOpaqueWhite: return "FloatOpaqueWhite";
28212 case BorderColor::eIntOpaqueWhite: return "IntOpaqueWhite";
28213 default: return "invalid";
28214 }
28215 }
28216
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028217 VULKAN_HPP_INLINE std::string to_string(PipelineBindPoint value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028218 {
28219 switch (value)
28220 {
28221 case PipelineBindPoint::eGraphics: return "Graphics";
28222 case PipelineBindPoint::eCompute: return "Compute";
28223 default: return "invalid";
28224 }
28225 }
28226
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028227 VULKAN_HPP_INLINE std::string to_string(PipelineCacheHeaderVersion value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028228 {
28229 switch (value)
28230 {
28231 case PipelineCacheHeaderVersion::eOne: return "One";
28232 default: return "invalid";
28233 }
28234 }
28235
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028236 VULKAN_HPP_INLINE std::string to_string(PrimitiveTopology value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028237 {
28238 switch (value)
28239 {
28240 case PrimitiveTopology::ePointList: return "PointList";
28241 case PrimitiveTopology::eLineList: return "LineList";
28242 case PrimitiveTopology::eLineStrip: return "LineStrip";
28243 case PrimitiveTopology::eTriangleList: return "TriangleList";
28244 case PrimitiveTopology::eTriangleStrip: return "TriangleStrip";
28245 case PrimitiveTopology::eTriangleFan: return "TriangleFan";
28246 case PrimitiveTopology::eLineListWithAdjacency: return "LineListWithAdjacency";
28247 case PrimitiveTopology::eLineStripWithAdjacency: return "LineStripWithAdjacency";
28248 case PrimitiveTopology::eTriangleListWithAdjacency: return "TriangleListWithAdjacency";
28249 case PrimitiveTopology::eTriangleStripWithAdjacency: return "TriangleStripWithAdjacency";
28250 case PrimitiveTopology::ePatchList: return "PatchList";
28251 default: return "invalid";
28252 }
28253 }
28254
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028255 VULKAN_HPP_INLINE std::string to_string(SharingMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028256 {
28257 switch (value)
28258 {
28259 case SharingMode::eExclusive: return "Exclusive";
28260 case SharingMode::eConcurrent: return "Concurrent";
28261 default: return "invalid";
28262 }
28263 }
28264
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028265 VULKAN_HPP_INLINE std::string to_string(IndexType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028266 {
28267 switch (value)
28268 {
28269 case IndexType::eUint16: return "Uint16";
28270 case IndexType::eUint32: return "Uint32";
28271 default: return "invalid";
28272 }
28273 }
28274
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028275 VULKAN_HPP_INLINE std::string to_string(Filter value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028276 {
28277 switch (value)
28278 {
28279 case Filter::eNearest: return "Nearest";
28280 case Filter::eLinear: return "Linear";
28281 case Filter::eCubicIMG: return "CubicIMG";
28282 default: return "invalid";
28283 }
28284 }
28285
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028286 VULKAN_HPP_INLINE std::string to_string(SamplerMipmapMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028287 {
28288 switch (value)
28289 {
28290 case SamplerMipmapMode::eNearest: return "Nearest";
28291 case SamplerMipmapMode::eLinear: return "Linear";
28292 default: return "invalid";
28293 }
28294 }
28295
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028296 VULKAN_HPP_INLINE std::string to_string(SamplerAddressMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028297 {
28298 switch (value)
28299 {
28300 case SamplerAddressMode::eRepeat: return "Repeat";
28301 case SamplerAddressMode::eMirroredRepeat: return "MirroredRepeat";
28302 case SamplerAddressMode::eClampToEdge: return "ClampToEdge";
28303 case SamplerAddressMode::eClampToBorder: return "ClampToBorder";
28304 case SamplerAddressMode::eMirrorClampToEdge: return "MirrorClampToEdge";
28305 default: return "invalid";
28306 }
28307 }
28308
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028309 VULKAN_HPP_INLINE std::string to_string(CompareOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028310 {
28311 switch (value)
28312 {
28313 case CompareOp::eNever: return "Never";
28314 case CompareOp::eLess: return "Less";
28315 case CompareOp::eEqual: return "Equal";
28316 case CompareOp::eLessOrEqual: return "LessOrEqual";
28317 case CompareOp::eGreater: return "Greater";
28318 case CompareOp::eNotEqual: return "NotEqual";
28319 case CompareOp::eGreaterOrEqual: return "GreaterOrEqual";
28320 case CompareOp::eAlways: return "Always";
28321 default: return "invalid";
28322 }
28323 }
28324
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028325 VULKAN_HPP_INLINE std::string to_string(PolygonMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028326 {
28327 switch (value)
28328 {
28329 case PolygonMode::eFill: return "Fill";
28330 case PolygonMode::eLine: return "Line";
28331 case PolygonMode::ePoint: return "Point";
28332 default: return "invalid";
28333 }
28334 }
28335
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028336 VULKAN_HPP_INLINE std::string to_string(CullModeFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028337 {
28338 switch (value)
28339 {
28340 case CullModeFlagBits::eNone: return "None";
28341 case CullModeFlagBits::eFront: return "Front";
28342 case CullModeFlagBits::eBack: return "Back";
28343 case CullModeFlagBits::eFrontAndBack: return "FrontAndBack";
28344 default: return "invalid";
28345 }
28346 }
28347
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028348 VULKAN_HPP_INLINE std::string to_string(CullModeFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028349 {
28350 if (!value) return "{}";
28351 std::string result;
28352 if (value & CullModeFlagBits::eNone) result += "None | ";
28353 if (value & CullModeFlagBits::eFront) result += "Front | ";
28354 if (value & CullModeFlagBits::eBack) result += "Back | ";
28355 if (value & CullModeFlagBits::eFrontAndBack) result += "FrontAndBack | ";
28356 return "{" + result.substr(0, result.size() - 3) + "}";
28357 }
28358
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028359 VULKAN_HPP_INLINE std::string to_string(FrontFace value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028360 {
28361 switch (value)
28362 {
28363 case FrontFace::eCounterClockwise: return "CounterClockwise";
28364 case FrontFace::eClockwise: return "Clockwise";
28365 default: return "invalid";
28366 }
28367 }
28368
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028369 VULKAN_HPP_INLINE std::string to_string(BlendFactor value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028370 {
28371 switch (value)
28372 {
28373 case BlendFactor::eZero: return "Zero";
28374 case BlendFactor::eOne: return "One";
28375 case BlendFactor::eSrcColor: return "SrcColor";
28376 case BlendFactor::eOneMinusSrcColor: return "OneMinusSrcColor";
28377 case BlendFactor::eDstColor: return "DstColor";
28378 case BlendFactor::eOneMinusDstColor: return "OneMinusDstColor";
28379 case BlendFactor::eSrcAlpha: return "SrcAlpha";
28380 case BlendFactor::eOneMinusSrcAlpha: return "OneMinusSrcAlpha";
28381 case BlendFactor::eDstAlpha: return "DstAlpha";
28382 case BlendFactor::eOneMinusDstAlpha: return "OneMinusDstAlpha";
28383 case BlendFactor::eConstantColor: return "ConstantColor";
28384 case BlendFactor::eOneMinusConstantColor: return "OneMinusConstantColor";
28385 case BlendFactor::eConstantAlpha: return "ConstantAlpha";
28386 case BlendFactor::eOneMinusConstantAlpha: return "OneMinusConstantAlpha";
28387 case BlendFactor::eSrcAlphaSaturate: return "SrcAlphaSaturate";
28388 case BlendFactor::eSrc1Color: return "Src1Color";
28389 case BlendFactor::eOneMinusSrc1Color: return "OneMinusSrc1Color";
28390 case BlendFactor::eSrc1Alpha: return "Src1Alpha";
28391 case BlendFactor::eOneMinusSrc1Alpha: return "OneMinusSrc1Alpha";
28392 default: return "invalid";
28393 }
28394 }
28395
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028396 VULKAN_HPP_INLINE std::string to_string(BlendOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028397 {
28398 switch (value)
28399 {
28400 case BlendOp::eAdd: return "Add";
28401 case BlendOp::eSubtract: return "Subtract";
28402 case BlendOp::eReverseSubtract: return "ReverseSubtract";
28403 case BlendOp::eMin: return "Min";
28404 case BlendOp::eMax: return "Max";
28405 default: return "invalid";
28406 }
28407 }
28408
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028409 VULKAN_HPP_INLINE std::string to_string(StencilOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028410 {
28411 switch (value)
28412 {
28413 case StencilOp::eKeep: return "Keep";
28414 case StencilOp::eZero: return "Zero";
28415 case StencilOp::eReplace: return "Replace";
28416 case StencilOp::eIncrementAndClamp: return "IncrementAndClamp";
28417 case StencilOp::eDecrementAndClamp: return "DecrementAndClamp";
28418 case StencilOp::eInvert: return "Invert";
28419 case StencilOp::eIncrementAndWrap: return "IncrementAndWrap";
28420 case StencilOp::eDecrementAndWrap: return "DecrementAndWrap";
28421 default: return "invalid";
28422 }
28423 }
28424
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028425 VULKAN_HPP_INLINE std::string to_string(LogicOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028426 {
28427 switch (value)
28428 {
28429 case LogicOp::eClear: return "Clear";
28430 case LogicOp::eAnd: return "And";
28431 case LogicOp::eAndReverse: return "AndReverse";
28432 case LogicOp::eCopy: return "Copy";
28433 case LogicOp::eAndInverted: return "AndInverted";
28434 case LogicOp::eNoOp: return "NoOp";
28435 case LogicOp::eXor: return "Xor";
28436 case LogicOp::eOr: return "Or";
28437 case LogicOp::eNor: return "Nor";
28438 case LogicOp::eEquivalent: return "Equivalent";
28439 case LogicOp::eInvert: return "Invert";
28440 case LogicOp::eOrReverse: return "OrReverse";
28441 case LogicOp::eCopyInverted: return "CopyInverted";
28442 case LogicOp::eOrInverted: return "OrInverted";
28443 case LogicOp::eNand: return "Nand";
28444 case LogicOp::eSet: return "Set";
28445 default: return "invalid";
28446 }
28447 }
28448
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028449 VULKAN_HPP_INLINE std::string to_string(InternalAllocationType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028450 {
28451 switch (value)
28452 {
28453 case InternalAllocationType::eExecutable: return "Executable";
28454 default: return "invalid";
28455 }
28456 }
28457
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028458 VULKAN_HPP_INLINE std::string to_string(SystemAllocationScope value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028459 {
28460 switch (value)
28461 {
28462 case SystemAllocationScope::eCommand: return "Command";
28463 case SystemAllocationScope::eObject: return "Object";
28464 case SystemAllocationScope::eCache: return "Cache";
28465 case SystemAllocationScope::eDevice: return "Device";
28466 case SystemAllocationScope::eInstance: return "Instance";
28467 default: return "invalid";
28468 }
28469 }
28470
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028471 VULKAN_HPP_INLINE std::string to_string(PhysicalDeviceType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028472 {
28473 switch (value)
28474 {
28475 case PhysicalDeviceType::eOther: return "Other";
28476 case PhysicalDeviceType::eIntegratedGpu: return "IntegratedGpu";
28477 case PhysicalDeviceType::eDiscreteGpu: return "DiscreteGpu";
28478 case PhysicalDeviceType::eVirtualGpu: return "VirtualGpu";
28479 case PhysicalDeviceType::eCpu: return "Cpu";
28480 default: return "invalid";
28481 }
28482 }
28483
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028484 VULKAN_HPP_INLINE std::string to_string(VertexInputRate value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028485 {
28486 switch (value)
28487 {
28488 case VertexInputRate::eVertex: return "Vertex";
28489 case VertexInputRate::eInstance: return "Instance";
28490 default: return "invalid";
28491 }
28492 }
28493
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028494 VULKAN_HPP_INLINE std::string to_string(Format value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028495 {
28496 switch (value)
28497 {
28498 case Format::eUndefined: return "Undefined";
28499 case Format::eR4G4UnormPack8: return "R4G4UnormPack8";
28500 case Format::eR4G4B4A4UnormPack16: return "R4G4B4A4UnormPack16";
28501 case Format::eB4G4R4A4UnormPack16: return "B4G4R4A4UnormPack16";
28502 case Format::eR5G6B5UnormPack16: return "R5G6B5UnormPack16";
28503 case Format::eB5G6R5UnormPack16: return "B5G6R5UnormPack16";
28504 case Format::eR5G5B5A1UnormPack16: return "R5G5B5A1UnormPack16";
28505 case Format::eB5G5R5A1UnormPack16: return "B5G5R5A1UnormPack16";
28506 case Format::eA1R5G5B5UnormPack16: return "A1R5G5B5UnormPack16";
28507 case Format::eR8Unorm: return "R8Unorm";
28508 case Format::eR8Snorm: return "R8Snorm";
28509 case Format::eR8Uscaled: return "R8Uscaled";
28510 case Format::eR8Sscaled: return "R8Sscaled";
28511 case Format::eR8Uint: return "R8Uint";
28512 case Format::eR8Sint: return "R8Sint";
28513 case Format::eR8Srgb: return "R8Srgb";
28514 case Format::eR8G8Unorm: return "R8G8Unorm";
28515 case Format::eR8G8Snorm: return "R8G8Snorm";
28516 case Format::eR8G8Uscaled: return "R8G8Uscaled";
28517 case Format::eR8G8Sscaled: return "R8G8Sscaled";
28518 case Format::eR8G8Uint: return "R8G8Uint";
28519 case Format::eR8G8Sint: return "R8G8Sint";
28520 case Format::eR8G8Srgb: return "R8G8Srgb";
28521 case Format::eR8G8B8Unorm: return "R8G8B8Unorm";
28522 case Format::eR8G8B8Snorm: return "R8G8B8Snorm";
28523 case Format::eR8G8B8Uscaled: return "R8G8B8Uscaled";
28524 case Format::eR8G8B8Sscaled: return "R8G8B8Sscaled";
28525 case Format::eR8G8B8Uint: return "R8G8B8Uint";
28526 case Format::eR8G8B8Sint: return "R8G8B8Sint";
28527 case Format::eR8G8B8Srgb: return "R8G8B8Srgb";
28528 case Format::eB8G8R8Unorm: return "B8G8R8Unorm";
28529 case Format::eB8G8R8Snorm: return "B8G8R8Snorm";
28530 case Format::eB8G8R8Uscaled: return "B8G8R8Uscaled";
28531 case Format::eB8G8R8Sscaled: return "B8G8R8Sscaled";
28532 case Format::eB8G8R8Uint: return "B8G8R8Uint";
28533 case Format::eB8G8R8Sint: return "B8G8R8Sint";
28534 case Format::eB8G8R8Srgb: return "B8G8R8Srgb";
28535 case Format::eR8G8B8A8Unorm: return "R8G8B8A8Unorm";
28536 case Format::eR8G8B8A8Snorm: return "R8G8B8A8Snorm";
28537 case Format::eR8G8B8A8Uscaled: return "R8G8B8A8Uscaled";
28538 case Format::eR8G8B8A8Sscaled: return "R8G8B8A8Sscaled";
28539 case Format::eR8G8B8A8Uint: return "R8G8B8A8Uint";
28540 case Format::eR8G8B8A8Sint: return "R8G8B8A8Sint";
28541 case Format::eR8G8B8A8Srgb: return "R8G8B8A8Srgb";
28542 case Format::eB8G8R8A8Unorm: return "B8G8R8A8Unorm";
28543 case Format::eB8G8R8A8Snorm: return "B8G8R8A8Snorm";
28544 case Format::eB8G8R8A8Uscaled: return "B8G8R8A8Uscaled";
28545 case Format::eB8G8R8A8Sscaled: return "B8G8R8A8Sscaled";
28546 case Format::eB8G8R8A8Uint: return "B8G8R8A8Uint";
28547 case Format::eB8G8R8A8Sint: return "B8G8R8A8Sint";
28548 case Format::eB8G8R8A8Srgb: return "B8G8R8A8Srgb";
28549 case Format::eA8B8G8R8UnormPack32: return "A8B8G8R8UnormPack32";
28550 case Format::eA8B8G8R8SnormPack32: return "A8B8G8R8SnormPack32";
28551 case Format::eA8B8G8R8UscaledPack32: return "A8B8G8R8UscaledPack32";
28552 case Format::eA8B8G8R8SscaledPack32: return "A8B8G8R8SscaledPack32";
28553 case Format::eA8B8G8R8UintPack32: return "A8B8G8R8UintPack32";
28554 case Format::eA8B8G8R8SintPack32: return "A8B8G8R8SintPack32";
28555 case Format::eA8B8G8R8SrgbPack32: return "A8B8G8R8SrgbPack32";
28556 case Format::eA2R10G10B10UnormPack32: return "A2R10G10B10UnormPack32";
28557 case Format::eA2R10G10B10SnormPack32: return "A2R10G10B10SnormPack32";
28558 case Format::eA2R10G10B10UscaledPack32: return "A2R10G10B10UscaledPack32";
28559 case Format::eA2R10G10B10SscaledPack32: return "A2R10G10B10SscaledPack32";
28560 case Format::eA2R10G10B10UintPack32: return "A2R10G10B10UintPack32";
28561 case Format::eA2R10G10B10SintPack32: return "A2R10G10B10SintPack32";
28562 case Format::eA2B10G10R10UnormPack32: return "A2B10G10R10UnormPack32";
28563 case Format::eA2B10G10R10SnormPack32: return "A2B10G10R10SnormPack32";
28564 case Format::eA2B10G10R10UscaledPack32: return "A2B10G10R10UscaledPack32";
28565 case Format::eA2B10G10R10SscaledPack32: return "A2B10G10R10SscaledPack32";
28566 case Format::eA2B10G10R10UintPack32: return "A2B10G10R10UintPack32";
28567 case Format::eA2B10G10R10SintPack32: return "A2B10G10R10SintPack32";
28568 case Format::eR16Unorm: return "R16Unorm";
28569 case Format::eR16Snorm: return "R16Snorm";
28570 case Format::eR16Uscaled: return "R16Uscaled";
28571 case Format::eR16Sscaled: return "R16Sscaled";
28572 case Format::eR16Uint: return "R16Uint";
28573 case Format::eR16Sint: return "R16Sint";
28574 case Format::eR16Sfloat: return "R16Sfloat";
28575 case Format::eR16G16Unorm: return "R16G16Unorm";
28576 case Format::eR16G16Snorm: return "R16G16Snorm";
28577 case Format::eR16G16Uscaled: return "R16G16Uscaled";
28578 case Format::eR16G16Sscaled: return "R16G16Sscaled";
28579 case Format::eR16G16Uint: return "R16G16Uint";
28580 case Format::eR16G16Sint: return "R16G16Sint";
28581 case Format::eR16G16Sfloat: return "R16G16Sfloat";
28582 case Format::eR16G16B16Unorm: return "R16G16B16Unorm";
28583 case Format::eR16G16B16Snorm: return "R16G16B16Snorm";
28584 case Format::eR16G16B16Uscaled: return "R16G16B16Uscaled";
28585 case Format::eR16G16B16Sscaled: return "R16G16B16Sscaled";
28586 case Format::eR16G16B16Uint: return "R16G16B16Uint";
28587 case Format::eR16G16B16Sint: return "R16G16B16Sint";
28588 case Format::eR16G16B16Sfloat: return "R16G16B16Sfloat";
28589 case Format::eR16G16B16A16Unorm: return "R16G16B16A16Unorm";
28590 case Format::eR16G16B16A16Snorm: return "R16G16B16A16Snorm";
28591 case Format::eR16G16B16A16Uscaled: return "R16G16B16A16Uscaled";
28592 case Format::eR16G16B16A16Sscaled: return "R16G16B16A16Sscaled";
28593 case Format::eR16G16B16A16Uint: return "R16G16B16A16Uint";
28594 case Format::eR16G16B16A16Sint: return "R16G16B16A16Sint";
28595 case Format::eR16G16B16A16Sfloat: return "R16G16B16A16Sfloat";
28596 case Format::eR32Uint: return "R32Uint";
28597 case Format::eR32Sint: return "R32Sint";
28598 case Format::eR32Sfloat: return "R32Sfloat";
28599 case Format::eR32G32Uint: return "R32G32Uint";
28600 case Format::eR32G32Sint: return "R32G32Sint";
28601 case Format::eR32G32Sfloat: return "R32G32Sfloat";
28602 case Format::eR32G32B32Uint: return "R32G32B32Uint";
28603 case Format::eR32G32B32Sint: return "R32G32B32Sint";
28604 case Format::eR32G32B32Sfloat: return "R32G32B32Sfloat";
28605 case Format::eR32G32B32A32Uint: return "R32G32B32A32Uint";
28606 case Format::eR32G32B32A32Sint: return "R32G32B32A32Sint";
28607 case Format::eR32G32B32A32Sfloat: return "R32G32B32A32Sfloat";
28608 case Format::eR64Uint: return "R64Uint";
28609 case Format::eR64Sint: return "R64Sint";
28610 case Format::eR64Sfloat: return "R64Sfloat";
28611 case Format::eR64G64Uint: return "R64G64Uint";
28612 case Format::eR64G64Sint: return "R64G64Sint";
28613 case Format::eR64G64Sfloat: return "R64G64Sfloat";
28614 case Format::eR64G64B64Uint: return "R64G64B64Uint";
28615 case Format::eR64G64B64Sint: return "R64G64B64Sint";
28616 case Format::eR64G64B64Sfloat: return "R64G64B64Sfloat";
28617 case Format::eR64G64B64A64Uint: return "R64G64B64A64Uint";
28618 case Format::eR64G64B64A64Sint: return "R64G64B64A64Sint";
28619 case Format::eR64G64B64A64Sfloat: return "R64G64B64A64Sfloat";
28620 case Format::eB10G11R11UfloatPack32: return "B10G11R11UfloatPack32";
28621 case Format::eE5B9G9R9UfloatPack32: return "E5B9G9R9UfloatPack32";
28622 case Format::eD16Unorm: return "D16Unorm";
28623 case Format::eX8D24UnormPack32: return "X8D24UnormPack32";
28624 case Format::eD32Sfloat: return "D32Sfloat";
28625 case Format::eS8Uint: return "S8Uint";
28626 case Format::eD16UnormS8Uint: return "D16UnormS8Uint";
28627 case Format::eD24UnormS8Uint: return "D24UnormS8Uint";
28628 case Format::eD32SfloatS8Uint: return "D32SfloatS8Uint";
28629 case Format::eBc1RgbUnormBlock: return "Bc1RgbUnormBlock";
28630 case Format::eBc1RgbSrgbBlock: return "Bc1RgbSrgbBlock";
28631 case Format::eBc1RgbaUnormBlock: return "Bc1RgbaUnormBlock";
28632 case Format::eBc1RgbaSrgbBlock: return "Bc1RgbaSrgbBlock";
28633 case Format::eBc2UnormBlock: return "Bc2UnormBlock";
28634 case Format::eBc2SrgbBlock: return "Bc2SrgbBlock";
28635 case Format::eBc3UnormBlock: return "Bc3UnormBlock";
28636 case Format::eBc3SrgbBlock: return "Bc3SrgbBlock";
28637 case Format::eBc4UnormBlock: return "Bc4UnormBlock";
28638 case Format::eBc4SnormBlock: return "Bc4SnormBlock";
28639 case Format::eBc5UnormBlock: return "Bc5UnormBlock";
28640 case Format::eBc5SnormBlock: return "Bc5SnormBlock";
28641 case Format::eBc6HUfloatBlock: return "Bc6HUfloatBlock";
28642 case Format::eBc6HSfloatBlock: return "Bc6HSfloatBlock";
28643 case Format::eBc7UnormBlock: return "Bc7UnormBlock";
28644 case Format::eBc7SrgbBlock: return "Bc7SrgbBlock";
28645 case Format::eEtc2R8G8B8UnormBlock: return "Etc2R8G8B8UnormBlock";
28646 case Format::eEtc2R8G8B8SrgbBlock: return "Etc2R8G8B8SrgbBlock";
28647 case Format::eEtc2R8G8B8A1UnormBlock: return "Etc2R8G8B8A1UnormBlock";
28648 case Format::eEtc2R8G8B8A1SrgbBlock: return "Etc2R8G8B8A1SrgbBlock";
28649 case Format::eEtc2R8G8B8A8UnormBlock: return "Etc2R8G8B8A8UnormBlock";
28650 case Format::eEtc2R8G8B8A8SrgbBlock: return "Etc2R8G8B8A8SrgbBlock";
28651 case Format::eEacR11UnormBlock: return "EacR11UnormBlock";
28652 case Format::eEacR11SnormBlock: return "EacR11SnormBlock";
28653 case Format::eEacR11G11UnormBlock: return "EacR11G11UnormBlock";
28654 case Format::eEacR11G11SnormBlock: return "EacR11G11SnormBlock";
28655 case Format::eAstc4x4UnormBlock: return "Astc4x4UnormBlock";
28656 case Format::eAstc4x4SrgbBlock: return "Astc4x4SrgbBlock";
28657 case Format::eAstc5x4UnormBlock: return "Astc5x4UnormBlock";
28658 case Format::eAstc5x4SrgbBlock: return "Astc5x4SrgbBlock";
28659 case Format::eAstc5x5UnormBlock: return "Astc5x5UnormBlock";
28660 case Format::eAstc5x5SrgbBlock: return "Astc5x5SrgbBlock";
28661 case Format::eAstc6x5UnormBlock: return "Astc6x5UnormBlock";
28662 case Format::eAstc6x5SrgbBlock: return "Astc6x5SrgbBlock";
28663 case Format::eAstc6x6UnormBlock: return "Astc6x6UnormBlock";
28664 case Format::eAstc6x6SrgbBlock: return "Astc6x6SrgbBlock";
28665 case Format::eAstc8x5UnormBlock: return "Astc8x5UnormBlock";
28666 case Format::eAstc8x5SrgbBlock: return "Astc8x5SrgbBlock";
28667 case Format::eAstc8x6UnormBlock: return "Astc8x6UnormBlock";
28668 case Format::eAstc8x6SrgbBlock: return "Astc8x6SrgbBlock";
28669 case Format::eAstc8x8UnormBlock: return "Astc8x8UnormBlock";
28670 case Format::eAstc8x8SrgbBlock: return "Astc8x8SrgbBlock";
28671 case Format::eAstc10x5UnormBlock: return "Astc10x5UnormBlock";
28672 case Format::eAstc10x5SrgbBlock: return "Astc10x5SrgbBlock";
28673 case Format::eAstc10x6UnormBlock: return "Astc10x6UnormBlock";
28674 case Format::eAstc10x6SrgbBlock: return "Astc10x6SrgbBlock";
28675 case Format::eAstc10x8UnormBlock: return "Astc10x8UnormBlock";
28676 case Format::eAstc10x8SrgbBlock: return "Astc10x8SrgbBlock";
28677 case Format::eAstc10x10UnormBlock: return "Astc10x10UnormBlock";
28678 case Format::eAstc10x10SrgbBlock: return "Astc10x10SrgbBlock";
28679 case Format::eAstc12x10UnormBlock: return "Astc12x10UnormBlock";
28680 case Format::eAstc12x10SrgbBlock: return "Astc12x10SrgbBlock";
28681 case Format::eAstc12x12UnormBlock: return "Astc12x12UnormBlock";
28682 case Format::eAstc12x12SrgbBlock: return "Astc12x12SrgbBlock";
Lenny Komowebf33162016-08-26 14:10:08 -060028683 case Format::ePvrtc12BppUnormBlockIMG: return "Pvrtc12BppUnormBlockIMG";
28684 case Format::ePvrtc14BppUnormBlockIMG: return "Pvrtc14BppUnormBlockIMG";
28685 case Format::ePvrtc22BppUnormBlockIMG: return "Pvrtc22BppUnormBlockIMG";
28686 case Format::ePvrtc24BppUnormBlockIMG: return "Pvrtc24BppUnormBlockIMG";
28687 case Format::ePvrtc12BppSrgbBlockIMG: return "Pvrtc12BppSrgbBlockIMG";
28688 case Format::ePvrtc14BppSrgbBlockIMG: return "Pvrtc14BppSrgbBlockIMG";
28689 case Format::ePvrtc22BppSrgbBlockIMG: return "Pvrtc22BppSrgbBlockIMG";
28690 case Format::ePvrtc24BppSrgbBlockIMG: return "Pvrtc24BppSrgbBlockIMG";
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(StructureType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028696 {
28697 switch (value)
28698 {
28699 case StructureType::eApplicationInfo: return "ApplicationInfo";
28700 case StructureType::eInstanceCreateInfo: return "InstanceCreateInfo";
28701 case StructureType::eDeviceQueueCreateInfo: return "DeviceQueueCreateInfo";
28702 case StructureType::eDeviceCreateInfo: return "DeviceCreateInfo";
28703 case StructureType::eSubmitInfo: return "SubmitInfo";
28704 case StructureType::eMemoryAllocateInfo: return "MemoryAllocateInfo";
28705 case StructureType::eMappedMemoryRange: return "MappedMemoryRange";
28706 case StructureType::eBindSparseInfo: return "BindSparseInfo";
28707 case StructureType::eFenceCreateInfo: return "FenceCreateInfo";
28708 case StructureType::eSemaphoreCreateInfo: return "SemaphoreCreateInfo";
28709 case StructureType::eEventCreateInfo: return "EventCreateInfo";
28710 case StructureType::eQueryPoolCreateInfo: return "QueryPoolCreateInfo";
28711 case StructureType::eBufferCreateInfo: return "BufferCreateInfo";
28712 case StructureType::eBufferViewCreateInfo: return "BufferViewCreateInfo";
28713 case StructureType::eImageCreateInfo: return "ImageCreateInfo";
28714 case StructureType::eImageViewCreateInfo: return "ImageViewCreateInfo";
28715 case StructureType::eShaderModuleCreateInfo: return "ShaderModuleCreateInfo";
28716 case StructureType::ePipelineCacheCreateInfo: return "PipelineCacheCreateInfo";
28717 case StructureType::ePipelineShaderStageCreateInfo: return "PipelineShaderStageCreateInfo";
28718 case StructureType::ePipelineVertexInputStateCreateInfo: return "PipelineVertexInputStateCreateInfo";
28719 case StructureType::ePipelineInputAssemblyStateCreateInfo: return "PipelineInputAssemblyStateCreateInfo";
28720 case StructureType::ePipelineTessellationStateCreateInfo: return "PipelineTessellationStateCreateInfo";
28721 case StructureType::ePipelineViewportStateCreateInfo: return "PipelineViewportStateCreateInfo";
28722 case StructureType::ePipelineRasterizationStateCreateInfo: return "PipelineRasterizationStateCreateInfo";
28723 case StructureType::ePipelineMultisampleStateCreateInfo: return "PipelineMultisampleStateCreateInfo";
28724 case StructureType::ePipelineDepthStencilStateCreateInfo: return "PipelineDepthStencilStateCreateInfo";
28725 case StructureType::ePipelineColorBlendStateCreateInfo: return "PipelineColorBlendStateCreateInfo";
28726 case StructureType::ePipelineDynamicStateCreateInfo: return "PipelineDynamicStateCreateInfo";
28727 case StructureType::eGraphicsPipelineCreateInfo: return "GraphicsPipelineCreateInfo";
28728 case StructureType::eComputePipelineCreateInfo: return "ComputePipelineCreateInfo";
28729 case StructureType::ePipelineLayoutCreateInfo: return "PipelineLayoutCreateInfo";
28730 case StructureType::eSamplerCreateInfo: return "SamplerCreateInfo";
28731 case StructureType::eDescriptorSetLayoutCreateInfo: return "DescriptorSetLayoutCreateInfo";
28732 case StructureType::eDescriptorPoolCreateInfo: return "DescriptorPoolCreateInfo";
28733 case StructureType::eDescriptorSetAllocateInfo: return "DescriptorSetAllocateInfo";
28734 case StructureType::eWriteDescriptorSet: return "WriteDescriptorSet";
28735 case StructureType::eCopyDescriptorSet: return "CopyDescriptorSet";
28736 case StructureType::eFramebufferCreateInfo: return "FramebufferCreateInfo";
28737 case StructureType::eRenderPassCreateInfo: return "RenderPassCreateInfo";
28738 case StructureType::eCommandPoolCreateInfo: return "CommandPoolCreateInfo";
28739 case StructureType::eCommandBufferAllocateInfo: return "CommandBufferAllocateInfo";
28740 case StructureType::eCommandBufferInheritanceInfo: return "CommandBufferInheritanceInfo";
28741 case StructureType::eCommandBufferBeginInfo: return "CommandBufferBeginInfo";
28742 case StructureType::eRenderPassBeginInfo: return "RenderPassBeginInfo";
28743 case StructureType::eBufferMemoryBarrier: return "BufferMemoryBarrier";
28744 case StructureType::eImageMemoryBarrier: return "ImageMemoryBarrier";
28745 case StructureType::eMemoryBarrier: return "MemoryBarrier";
28746 case StructureType::eLoaderInstanceCreateInfo: return "LoaderInstanceCreateInfo";
28747 case StructureType::eLoaderDeviceCreateInfo: return "LoaderDeviceCreateInfo";
28748 case StructureType::eSwapchainCreateInfoKHR: return "SwapchainCreateInfoKHR";
28749 case StructureType::ePresentInfoKHR: return "PresentInfoKHR";
28750 case StructureType::eDisplayModeCreateInfoKHR: return "DisplayModeCreateInfoKHR";
28751 case StructureType::eDisplaySurfaceCreateInfoKHR: return "DisplaySurfaceCreateInfoKHR";
28752 case StructureType::eDisplayPresentInfoKHR: return "DisplayPresentInfoKHR";
28753 case StructureType::eXlibSurfaceCreateInfoKHR: return "XlibSurfaceCreateInfoKHR";
28754 case StructureType::eXcbSurfaceCreateInfoKHR: return "XcbSurfaceCreateInfoKHR";
28755 case StructureType::eWaylandSurfaceCreateInfoKHR: return "WaylandSurfaceCreateInfoKHR";
28756 case StructureType::eMirSurfaceCreateInfoKHR: return "MirSurfaceCreateInfoKHR";
28757 case StructureType::eAndroidSurfaceCreateInfoKHR: return "AndroidSurfaceCreateInfoKHR";
28758 case StructureType::eWin32SurfaceCreateInfoKHR: return "Win32SurfaceCreateInfoKHR";
28759 case StructureType::eDebugReportCallbackCreateInfoEXT: return "DebugReportCallbackCreateInfoEXT";
28760 case StructureType::ePipelineRasterizationStateRasterizationOrderAMD: return "PipelineRasterizationStateRasterizationOrderAMD";
28761 case StructureType::eDebugMarkerObjectNameInfoEXT: return "DebugMarkerObjectNameInfoEXT";
28762 case StructureType::eDebugMarkerObjectTagInfoEXT: return "DebugMarkerObjectTagInfoEXT";
28763 case StructureType::eDebugMarkerMarkerInfoEXT: return "DebugMarkerMarkerInfoEXT";
28764 case StructureType::eDedicatedAllocationImageCreateInfoNV: return "DedicatedAllocationImageCreateInfoNV";
28765 case StructureType::eDedicatedAllocationBufferCreateInfoNV: return "DedicatedAllocationBufferCreateInfoNV";
28766 case StructureType::eDedicatedAllocationMemoryAllocateInfoNV: return "DedicatedAllocationMemoryAllocateInfoNV";
Mark Young0f183a82017-02-28 09:58:04 -070028767 case StructureType::eRenderPassMultiviewCreateInfoKHX: return "RenderPassMultiviewCreateInfoKHX";
28768 case StructureType::ePhysicalDeviceMultiviewFeaturesKHX: return "PhysicalDeviceMultiviewFeaturesKHX";
28769 case StructureType::ePhysicalDeviceMultiviewPropertiesKHX: return "PhysicalDeviceMultiviewPropertiesKHX";
Lenny Komow6501c122016-08-31 15:03:49 -060028770 case StructureType::eExternalMemoryImageCreateInfoNV: return "ExternalMemoryImageCreateInfoNV";
28771 case StructureType::eExportMemoryAllocateInfoNV: return "ExportMemoryAllocateInfoNV";
28772 case StructureType::eImportMemoryWin32HandleInfoNV: return "ImportMemoryWin32HandleInfoNV";
28773 case StructureType::eExportMemoryWin32HandleInfoNV: return "ExportMemoryWin32HandleInfoNV";
28774 case StructureType::eWin32KeyedMutexAcquireReleaseInfoNV: return "Win32KeyedMutexAcquireReleaseInfoNV";
Mark Young39389872017-01-19 21:10:49 -070028775 case StructureType::ePhysicalDeviceFeatures2KHR: return "PhysicalDeviceFeatures2KHR";
28776 case StructureType::ePhysicalDeviceProperties2KHR: return "PhysicalDeviceProperties2KHR";
28777 case StructureType::eFormatProperties2KHR: return "FormatProperties2KHR";
28778 case StructureType::eImageFormatProperties2KHR: return "ImageFormatProperties2KHR";
28779 case StructureType::ePhysicalDeviceImageFormatInfo2KHR: return "PhysicalDeviceImageFormatInfo2KHR";
28780 case StructureType::eQueueFamilyProperties2KHR: return "QueueFamilyProperties2KHR";
28781 case StructureType::ePhysicalDeviceMemoryProperties2KHR: return "PhysicalDeviceMemoryProperties2KHR";
28782 case StructureType::eSparseImageFormatProperties2KHR: return "SparseImageFormatProperties2KHR";
28783 case StructureType::ePhysicalDeviceSparseImageFormatInfo2KHR: return "PhysicalDeviceSparseImageFormatInfo2KHR";
Mark Young0f183a82017-02-28 09:58:04 -070028784 case StructureType::eMemoryAllocateFlagsInfoKHX: return "MemoryAllocateFlagsInfoKHX";
28785 case StructureType::eBindBufferMemoryInfoKHX: return "BindBufferMemoryInfoKHX";
28786 case StructureType::eBindImageMemoryInfoKHX: return "BindImageMemoryInfoKHX";
28787 case StructureType::eDeviceGroupRenderPassBeginInfoKHX: return "DeviceGroupRenderPassBeginInfoKHX";
28788 case StructureType::eDeviceGroupCommandBufferBeginInfoKHX: return "DeviceGroupCommandBufferBeginInfoKHX";
28789 case StructureType::eDeviceGroupSubmitInfoKHX: return "DeviceGroupSubmitInfoKHX";
28790 case StructureType::eDeviceGroupBindSparseInfoKHX: return "DeviceGroupBindSparseInfoKHX";
28791 case StructureType::eDeviceGroupPresentCapabilitiesKHX: return "DeviceGroupPresentCapabilitiesKHX";
28792 case StructureType::eImageSwapchainCreateInfoKHX: return "ImageSwapchainCreateInfoKHX";
28793 case StructureType::eBindImageMemorySwapchainInfoKHX: return "BindImageMemorySwapchainInfoKHX";
28794 case StructureType::eAcquireNextImageInfoKHX: return "AcquireNextImageInfoKHX";
28795 case StructureType::eDeviceGroupPresentInfoKHX: return "DeviceGroupPresentInfoKHX";
28796 case StructureType::eDeviceGroupSwapchainCreateInfoKHX: return "DeviceGroupSwapchainCreateInfoKHX";
Lenny Komow68432d72016-09-29 14:16:59 -060028797 case StructureType::eValidationFlagsEXT: return "ValidationFlagsEXT";
Mark Young39389872017-01-19 21:10:49 -070028798 case StructureType::eViSurfaceCreateInfoNN: return "ViSurfaceCreateInfoNN";
Mark Young0f183a82017-02-28 09:58:04 -070028799 case StructureType::ePhysicalDeviceGroupPropertiesKHX: return "PhysicalDeviceGroupPropertiesKHX";
28800 case StructureType::eDeviceGroupDeviceCreateInfoKHX: return "DeviceGroupDeviceCreateInfoKHX";
28801 case StructureType::ePhysicalDeviceExternalImageFormatInfoKHX: return "PhysicalDeviceExternalImageFormatInfoKHX";
28802 case StructureType::eExternalImageFormatPropertiesKHX: return "ExternalImageFormatPropertiesKHX";
28803 case StructureType::ePhysicalDeviceExternalBufferInfoKHX: return "PhysicalDeviceExternalBufferInfoKHX";
28804 case StructureType::eExternalBufferPropertiesKHX: return "ExternalBufferPropertiesKHX";
28805 case StructureType::ePhysicalDeviceIdPropertiesKHX: return "PhysicalDeviceIdPropertiesKHX";
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060028806 case StructureType::ePhysicalDeviceProperties2KHX: return "PhysicalDeviceProperties2KHX";
28807 case StructureType::eImageFormatProperties2KHX: return "ImageFormatProperties2KHX";
28808 case StructureType::ePhysicalDeviceImageFormatInfo2KHX: return "PhysicalDeviceImageFormatInfo2KHX";
Mark Young0f183a82017-02-28 09:58:04 -070028809 case StructureType::eExternalMemoryBufferCreateInfoKHX: return "ExternalMemoryBufferCreateInfoKHX";
28810 case StructureType::eExternalMemoryImageCreateInfoKHX: return "ExternalMemoryImageCreateInfoKHX";
28811 case StructureType::eExportMemoryAllocateInfoKHX: return "ExportMemoryAllocateInfoKHX";
28812 case StructureType::eImportMemoryWin32HandleInfoKHX: return "ImportMemoryWin32HandleInfoKHX";
28813 case StructureType::eExportMemoryWin32HandleInfoKHX: return "ExportMemoryWin32HandleInfoKHX";
28814 case StructureType::eMemoryWin32HandlePropertiesKHX: return "MemoryWin32HandlePropertiesKHX";
28815 case StructureType::eImportMemoryFdInfoKHX: return "ImportMemoryFdInfoKHX";
28816 case StructureType::eMemoryFdPropertiesKHX: return "MemoryFdPropertiesKHX";
28817 case StructureType::eWin32KeyedMutexAcquireReleaseInfoKHX: return "Win32KeyedMutexAcquireReleaseInfoKHX";
28818 case StructureType::ePhysicalDeviceExternalSemaphoreInfoKHX: return "PhysicalDeviceExternalSemaphoreInfoKHX";
28819 case StructureType::eExternalSemaphorePropertiesKHX: return "ExternalSemaphorePropertiesKHX";
28820 case StructureType::eExportSemaphoreCreateInfoKHX: return "ExportSemaphoreCreateInfoKHX";
28821 case StructureType::eImportSemaphoreWin32HandleInfoKHX: return "ImportSemaphoreWin32HandleInfoKHX";
28822 case StructureType::eExportSemaphoreWin32HandleInfoKHX: return "ExportSemaphoreWin32HandleInfoKHX";
28823 case StructureType::eD3D12FenceSubmitInfoKHX: return "D3D12FenceSubmitInfoKHX";
28824 case StructureType::eImportSemaphoreFdInfoKHX: return "ImportSemaphoreFdInfoKHX";
28825 case StructureType::ePhysicalDevicePushDescriptorPropertiesKHR: return "PhysicalDevicePushDescriptorPropertiesKHR";
Mark Lobodzinski3289d762017-04-03 08:22:04 -060028826 case StructureType::ePresentRegionsKHR: return "PresentRegionsKHR";
Mark Young0f183a82017-02-28 09:58:04 -070028827 case StructureType::eDescriptorUpdateTemplateCreateInfoKHR: return "DescriptorUpdateTemplateCreateInfoKHR";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028828 case StructureType::eObjectTableCreateInfoNVX: return "ObjectTableCreateInfoNVX";
28829 case StructureType::eIndirectCommandsLayoutCreateInfoNVX: return "IndirectCommandsLayoutCreateInfoNVX";
28830 case StructureType::eCmdProcessCommandsInfoNVX: return "CmdProcessCommandsInfoNVX";
28831 case StructureType::eCmdReserveSpaceForCommandsInfoNVX: return "CmdReserveSpaceForCommandsInfoNVX";
28832 case StructureType::eDeviceGeneratedCommandsLimitsNVX: return "DeviceGeneratedCommandsLimitsNVX";
28833 case StructureType::eDeviceGeneratedCommandsFeaturesNVX: return "DeviceGeneratedCommandsFeaturesNVX";
Mark Young0f183a82017-02-28 09:58:04 -070028834 case StructureType::ePipelineViewportWScalingStateCreateInfoNV: return "PipelineViewportWScalingStateCreateInfoNV";
Mark Young39389872017-01-19 21:10:49 -070028835 case StructureType::eSurfaceCapabilities2EXT: return "SurfaceCapabilities2EXT";
28836 case StructureType::eDisplayPowerInfoEXT: return "DisplayPowerInfoEXT";
28837 case StructureType::eDeviceEventInfoEXT: return "DeviceEventInfoEXT";
28838 case StructureType::eDisplayEventInfoEXT: return "DisplayEventInfoEXT";
28839 case StructureType::eSwapchainCounterCreateInfoEXT: return "SwapchainCounterCreateInfoEXT";
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028840 case StructureType::ePresentTimesInfoGOOGLE: return "PresentTimesInfoGOOGLE";
Mark Young0f183a82017-02-28 09:58:04 -070028841 case StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX: return "PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX";
28842 case StructureType::ePipelineViewportSwizzleStateCreateInfoNV: return "PipelineViewportSwizzleStateCreateInfoNV";
28843 case StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT: return "PhysicalDeviceDiscardRectanglePropertiesEXT";
28844 case StructureType::ePipelineDiscardRectangleStateCreateInfoEXT: return "PipelineDiscardRectangleStateCreateInfoEXT";
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028845 case StructureType::eHdrMetadataEXT: return "HdrMetadataEXT";
Mark Young0f183a82017-02-28 09:58:04 -070028846 case StructureType::eIosSurfaceCreateInfoMVK: return "IosSurfaceCreateInfoMVK";
28847 case StructureType::eMacosSurfaceCreateInfoMVK: return "MacosSurfaceCreateInfoMVK";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028848 default: return "invalid";
28849 }
28850 }
28851
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028852 VULKAN_HPP_INLINE std::string to_string(SubpassContents value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028853 {
28854 switch (value)
28855 {
28856 case SubpassContents::eInline: return "Inline";
28857 case SubpassContents::eSecondaryCommandBuffers: return "SecondaryCommandBuffers";
28858 default: return "invalid";
28859 }
28860 }
28861
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028862 VULKAN_HPP_INLINE std::string to_string(DynamicState value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028863 {
28864 switch (value)
28865 {
28866 case DynamicState::eViewport: return "Viewport";
28867 case DynamicState::eScissor: return "Scissor";
28868 case DynamicState::eLineWidth: return "LineWidth";
28869 case DynamicState::eDepthBias: return "DepthBias";
28870 case DynamicState::eBlendConstants: return "BlendConstants";
28871 case DynamicState::eDepthBounds: return "DepthBounds";
28872 case DynamicState::eStencilCompareMask: return "StencilCompareMask";
28873 case DynamicState::eStencilWriteMask: return "StencilWriteMask";
28874 case DynamicState::eStencilReference: return "StencilReference";
Mark Young0f183a82017-02-28 09:58:04 -070028875 case DynamicState::eViewportWScalingNV: return "ViewportWScalingNV";
28876 case DynamicState::eDiscardRectangleEXT: return "DiscardRectangleEXT";
28877 default: return "invalid";
28878 }
28879 }
28880
28881 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateTypeKHR value)
28882 {
28883 switch (value)
28884 {
28885 case DescriptorUpdateTemplateTypeKHR::eDescriptorSet: return "DescriptorSet";
28886 case DescriptorUpdateTemplateTypeKHR::ePushDescriptors: return "PushDescriptors";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028887 default: return "invalid";
28888 }
28889 }
28890
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028891 VULKAN_HPP_INLINE std::string to_string(QueueFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028892 {
28893 switch (value)
28894 {
28895 case QueueFlagBits::eGraphics: return "Graphics";
28896 case QueueFlagBits::eCompute: return "Compute";
28897 case QueueFlagBits::eTransfer: return "Transfer";
28898 case QueueFlagBits::eSparseBinding: return "SparseBinding";
28899 default: return "invalid";
28900 }
28901 }
28902
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028903 VULKAN_HPP_INLINE std::string to_string(QueueFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028904 {
28905 if (!value) return "{}";
28906 std::string result;
28907 if (value & QueueFlagBits::eGraphics) result += "Graphics | ";
28908 if (value & QueueFlagBits::eCompute) result += "Compute | ";
28909 if (value & QueueFlagBits::eTransfer) result += "Transfer | ";
28910 if (value & QueueFlagBits::eSparseBinding) result += "SparseBinding | ";
28911 return "{" + result.substr(0, result.size() - 3) + "}";
28912 }
28913
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028914 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028915 {
28916 switch (value)
28917 {
28918 case MemoryPropertyFlagBits::eDeviceLocal: return "DeviceLocal";
28919 case MemoryPropertyFlagBits::eHostVisible: return "HostVisible";
28920 case MemoryPropertyFlagBits::eHostCoherent: return "HostCoherent";
28921 case MemoryPropertyFlagBits::eHostCached: return "HostCached";
28922 case MemoryPropertyFlagBits::eLazilyAllocated: return "LazilyAllocated";
28923 default: return "invalid";
28924 }
28925 }
28926
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028927 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028928 {
28929 if (!value) return "{}";
28930 std::string result;
28931 if (value & MemoryPropertyFlagBits::eDeviceLocal) result += "DeviceLocal | ";
28932 if (value & MemoryPropertyFlagBits::eHostVisible) result += "HostVisible | ";
28933 if (value & MemoryPropertyFlagBits::eHostCoherent) result += "HostCoherent | ";
28934 if (value & MemoryPropertyFlagBits::eHostCached) result += "HostCached | ";
28935 if (value & MemoryPropertyFlagBits::eLazilyAllocated) result += "LazilyAllocated | ";
28936 return "{" + result.substr(0, result.size() - 3) + "}";
28937 }
28938
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028939 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028940 {
28941 switch (value)
28942 {
28943 case MemoryHeapFlagBits::eDeviceLocal: return "DeviceLocal";
Mark Young0f183a82017-02-28 09:58:04 -070028944 case MemoryHeapFlagBits::eMultiInstanceKHX: return "MultiInstanceKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028945 default: return "invalid";
28946 }
28947 }
28948
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028949 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028950 {
28951 if (!value) return "{}";
28952 std::string result;
28953 if (value & MemoryHeapFlagBits::eDeviceLocal) result += "DeviceLocal | ";
Mark Young0f183a82017-02-28 09:58:04 -070028954 if (value & MemoryHeapFlagBits::eMultiInstanceKHX) result += "MultiInstanceKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028955 return "{" + result.substr(0, result.size() - 3) + "}";
28956 }
28957
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028958 VULKAN_HPP_INLINE std::string to_string(AccessFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028959 {
28960 switch (value)
28961 {
28962 case AccessFlagBits::eIndirectCommandRead: return "IndirectCommandRead";
28963 case AccessFlagBits::eIndexRead: return "IndexRead";
28964 case AccessFlagBits::eVertexAttributeRead: return "VertexAttributeRead";
28965 case AccessFlagBits::eUniformRead: return "UniformRead";
28966 case AccessFlagBits::eInputAttachmentRead: return "InputAttachmentRead";
28967 case AccessFlagBits::eShaderRead: return "ShaderRead";
28968 case AccessFlagBits::eShaderWrite: return "ShaderWrite";
28969 case AccessFlagBits::eColorAttachmentRead: return "ColorAttachmentRead";
28970 case AccessFlagBits::eColorAttachmentWrite: return "ColorAttachmentWrite";
28971 case AccessFlagBits::eDepthStencilAttachmentRead: return "DepthStencilAttachmentRead";
28972 case AccessFlagBits::eDepthStencilAttachmentWrite: return "DepthStencilAttachmentWrite";
28973 case AccessFlagBits::eTransferRead: return "TransferRead";
28974 case AccessFlagBits::eTransferWrite: return "TransferWrite";
28975 case AccessFlagBits::eHostRead: return "HostRead";
28976 case AccessFlagBits::eHostWrite: return "HostWrite";
28977 case AccessFlagBits::eMemoryRead: return "MemoryRead";
28978 case AccessFlagBits::eMemoryWrite: return "MemoryWrite";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028979 case AccessFlagBits::eCommandProcessReadNVX: return "CommandProcessReadNVX";
28980 case AccessFlagBits::eCommandProcessWriteNVX: return "CommandProcessWriteNVX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028981 default: return "invalid";
28982 }
28983 }
28984
Mark Lobodzinski2d589822016-12-12 09:44:34 -070028985 VULKAN_HPP_INLINE std::string to_string(AccessFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028986 {
28987 if (!value) return "{}";
28988 std::string result;
28989 if (value & AccessFlagBits::eIndirectCommandRead) result += "IndirectCommandRead | ";
28990 if (value & AccessFlagBits::eIndexRead) result += "IndexRead | ";
28991 if (value & AccessFlagBits::eVertexAttributeRead) result += "VertexAttributeRead | ";
28992 if (value & AccessFlagBits::eUniformRead) result += "UniformRead | ";
28993 if (value & AccessFlagBits::eInputAttachmentRead) result += "InputAttachmentRead | ";
28994 if (value & AccessFlagBits::eShaderRead) result += "ShaderRead | ";
28995 if (value & AccessFlagBits::eShaderWrite) result += "ShaderWrite | ";
28996 if (value & AccessFlagBits::eColorAttachmentRead) result += "ColorAttachmentRead | ";
28997 if (value & AccessFlagBits::eColorAttachmentWrite) result += "ColorAttachmentWrite | ";
28998 if (value & AccessFlagBits::eDepthStencilAttachmentRead) result += "DepthStencilAttachmentRead | ";
28999 if (value & AccessFlagBits::eDepthStencilAttachmentWrite) result += "DepthStencilAttachmentWrite | ";
29000 if (value & AccessFlagBits::eTransferRead) result += "TransferRead | ";
29001 if (value & AccessFlagBits::eTransferWrite) result += "TransferWrite | ";
29002 if (value & AccessFlagBits::eHostRead) result += "HostRead | ";
29003 if (value & AccessFlagBits::eHostWrite) result += "HostWrite | ";
29004 if (value & AccessFlagBits::eMemoryRead) result += "MemoryRead | ";
29005 if (value & AccessFlagBits::eMemoryWrite) result += "MemoryWrite | ";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029006 if (value & AccessFlagBits::eCommandProcessReadNVX) result += "CommandProcessReadNVX | ";
29007 if (value & AccessFlagBits::eCommandProcessWriteNVX) result += "CommandProcessWriteNVX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029008 return "{" + result.substr(0, result.size() - 3) + "}";
29009 }
29010
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029011 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029012 {
29013 switch (value)
29014 {
29015 case BufferUsageFlagBits::eTransferSrc: return "TransferSrc";
29016 case BufferUsageFlagBits::eTransferDst: return "TransferDst";
29017 case BufferUsageFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
29018 case BufferUsageFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
29019 case BufferUsageFlagBits::eUniformBuffer: return "UniformBuffer";
29020 case BufferUsageFlagBits::eStorageBuffer: return "StorageBuffer";
29021 case BufferUsageFlagBits::eIndexBuffer: return "IndexBuffer";
29022 case BufferUsageFlagBits::eVertexBuffer: return "VertexBuffer";
29023 case BufferUsageFlagBits::eIndirectBuffer: return "IndirectBuffer";
29024 default: return "invalid";
29025 }
29026 }
29027
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029028 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029029 {
29030 if (!value) return "{}";
29031 std::string result;
29032 if (value & BufferUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
29033 if (value & BufferUsageFlagBits::eTransferDst) result += "TransferDst | ";
29034 if (value & BufferUsageFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
29035 if (value & BufferUsageFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
29036 if (value & BufferUsageFlagBits::eUniformBuffer) result += "UniformBuffer | ";
29037 if (value & BufferUsageFlagBits::eStorageBuffer) result += "StorageBuffer | ";
29038 if (value & BufferUsageFlagBits::eIndexBuffer) result += "IndexBuffer | ";
29039 if (value & BufferUsageFlagBits::eVertexBuffer) result += "VertexBuffer | ";
29040 if (value & BufferUsageFlagBits::eIndirectBuffer) result += "IndirectBuffer | ";
29041 return "{" + result.substr(0, result.size() - 3) + "}";
29042 }
29043
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029044 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029045 {
29046 switch (value)
29047 {
29048 case BufferCreateFlagBits::eSparseBinding: return "SparseBinding";
29049 case BufferCreateFlagBits::eSparseResidency: return "SparseResidency";
29050 case BufferCreateFlagBits::eSparseAliased: return "SparseAliased";
29051 default: return "invalid";
29052 }
29053 }
29054
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029055 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029056 {
29057 if (!value) return "{}";
29058 std::string result;
29059 if (value & BufferCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
29060 if (value & BufferCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
29061 if (value & BufferCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
29062 return "{" + result.substr(0, result.size() - 3) + "}";
29063 }
29064
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029065 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029066 {
29067 switch (value)
29068 {
29069 case ShaderStageFlagBits::eVertex: return "Vertex";
29070 case ShaderStageFlagBits::eTessellationControl: return "TessellationControl";
29071 case ShaderStageFlagBits::eTessellationEvaluation: return "TessellationEvaluation";
29072 case ShaderStageFlagBits::eGeometry: return "Geometry";
29073 case ShaderStageFlagBits::eFragment: return "Fragment";
29074 case ShaderStageFlagBits::eCompute: return "Compute";
29075 case ShaderStageFlagBits::eAllGraphics: return "AllGraphics";
29076 case ShaderStageFlagBits::eAll: return "All";
29077 default: return "invalid";
29078 }
29079 }
29080
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029081 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029082 {
29083 if (!value) return "{}";
29084 std::string result;
29085 if (value & ShaderStageFlagBits::eVertex) result += "Vertex | ";
29086 if (value & ShaderStageFlagBits::eTessellationControl) result += "TessellationControl | ";
29087 if (value & ShaderStageFlagBits::eTessellationEvaluation) result += "TessellationEvaluation | ";
29088 if (value & ShaderStageFlagBits::eGeometry) result += "Geometry | ";
29089 if (value & ShaderStageFlagBits::eFragment) result += "Fragment | ";
29090 if (value & ShaderStageFlagBits::eCompute) result += "Compute | ";
29091 if (value & ShaderStageFlagBits::eAllGraphics) result += "AllGraphics | ";
29092 if (value & ShaderStageFlagBits::eAll) result += "All | ";
29093 return "{" + result.substr(0, result.size() - 3) + "}";
29094 }
29095
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029096 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029097 {
29098 switch (value)
29099 {
29100 case ImageUsageFlagBits::eTransferSrc: return "TransferSrc";
29101 case ImageUsageFlagBits::eTransferDst: return "TransferDst";
29102 case ImageUsageFlagBits::eSampled: return "Sampled";
29103 case ImageUsageFlagBits::eStorage: return "Storage";
29104 case ImageUsageFlagBits::eColorAttachment: return "ColorAttachment";
29105 case ImageUsageFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
29106 case ImageUsageFlagBits::eTransientAttachment: return "TransientAttachment";
29107 case ImageUsageFlagBits::eInputAttachment: return "InputAttachment";
29108 default: return "invalid";
29109 }
29110 }
29111
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029112 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029113 {
29114 if (!value) return "{}";
29115 std::string result;
29116 if (value & ImageUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
29117 if (value & ImageUsageFlagBits::eTransferDst) result += "TransferDst | ";
29118 if (value & ImageUsageFlagBits::eSampled) result += "Sampled | ";
29119 if (value & ImageUsageFlagBits::eStorage) result += "Storage | ";
29120 if (value & ImageUsageFlagBits::eColorAttachment) result += "ColorAttachment | ";
29121 if (value & ImageUsageFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
29122 if (value & ImageUsageFlagBits::eTransientAttachment) result += "TransientAttachment | ";
29123 if (value & ImageUsageFlagBits::eInputAttachment) result += "InputAttachment | ";
29124 return "{" + result.substr(0, result.size() - 3) + "}";
29125 }
29126
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029127 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029128 {
29129 switch (value)
29130 {
29131 case ImageCreateFlagBits::eSparseBinding: return "SparseBinding";
29132 case ImageCreateFlagBits::eSparseResidency: return "SparseResidency";
29133 case ImageCreateFlagBits::eSparseAliased: return "SparseAliased";
29134 case ImageCreateFlagBits::eMutableFormat: return "MutableFormat";
29135 case ImageCreateFlagBits::eCubeCompatible: return "CubeCompatible";
Mark Young0f183a82017-02-28 09:58:04 -070029136 case ImageCreateFlagBits::eBindSfrKHX: return "BindSfrKHX";
Mark Young39389872017-01-19 21:10:49 -070029137 case ImageCreateFlagBits::e2DArrayCompatibleKHR: return "2DArrayCompatibleKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029138 default: return "invalid";
29139 }
29140 }
29141
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029142 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029143 {
29144 if (!value) return "{}";
29145 std::string result;
29146 if (value & ImageCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
29147 if (value & ImageCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
29148 if (value & ImageCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
29149 if (value & ImageCreateFlagBits::eMutableFormat) result += "MutableFormat | ";
29150 if (value & ImageCreateFlagBits::eCubeCompatible) result += "CubeCompatible | ";
Mark Young0f183a82017-02-28 09:58:04 -070029151 if (value & ImageCreateFlagBits::eBindSfrKHX) result += "BindSfrKHX | ";
Mark Young39389872017-01-19 21:10:49 -070029152 if (value & ImageCreateFlagBits::e2DArrayCompatibleKHR) result += "2DArrayCompatibleKHR | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029153 return "{" + result.substr(0, result.size() - 3) + "}";
29154 }
29155
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029156 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029157 {
29158 switch (value)
29159 {
29160 case PipelineCreateFlagBits::eDisableOptimization: return "DisableOptimization";
29161 case PipelineCreateFlagBits::eAllowDerivatives: return "AllowDerivatives";
29162 case PipelineCreateFlagBits::eDerivative: return "Derivative";
Mark Young0f183a82017-02-28 09:58:04 -070029163 case PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX: return "ViewIndexFromDeviceIndexKHX";
29164 case PipelineCreateFlagBits::eDispatchBaseKHX: return "DispatchBaseKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029165 default: return "invalid";
29166 }
29167 }
29168
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029169 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029170 {
29171 if (!value) return "{}";
29172 std::string result;
29173 if (value & PipelineCreateFlagBits::eDisableOptimization) result += "DisableOptimization | ";
29174 if (value & PipelineCreateFlagBits::eAllowDerivatives) result += "AllowDerivatives | ";
29175 if (value & PipelineCreateFlagBits::eDerivative) result += "Derivative | ";
Mark Young0f183a82017-02-28 09:58:04 -070029176 if (value & PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX) result += "ViewIndexFromDeviceIndexKHX | ";
29177 if (value & PipelineCreateFlagBits::eDispatchBaseKHX) result += "DispatchBaseKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029178 return "{" + result.substr(0, result.size() - 3) + "}";
29179 }
29180
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029181 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029182 {
29183 switch (value)
29184 {
29185 case ColorComponentFlagBits::eR: return "R";
29186 case ColorComponentFlagBits::eG: return "G";
29187 case ColorComponentFlagBits::eB: return "B";
29188 case ColorComponentFlagBits::eA: return "A";
29189 default: return "invalid";
29190 }
29191 }
29192
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029193 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029194 {
29195 if (!value) return "{}";
29196 std::string result;
29197 if (value & ColorComponentFlagBits::eR) result += "R | ";
29198 if (value & ColorComponentFlagBits::eG) result += "G | ";
29199 if (value & ColorComponentFlagBits::eB) result += "B | ";
29200 if (value & ColorComponentFlagBits::eA) result += "A | ";
29201 return "{" + result.substr(0, result.size() - 3) + "}";
29202 }
29203
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029204 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029205 {
29206 switch (value)
29207 {
29208 case FenceCreateFlagBits::eSignaled: return "Signaled";
29209 default: return "invalid";
29210 }
29211 }
29212
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029213 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029214 {
29215 if (!value) return "{}";
29216 std::string result;
29217 if (value & FenceCreateFlagBits::eSignaled) result += "Signaled | ";
29218 return "{" + result.substr(0, result.size() - 3) + "}";
29219 }
29220
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029221 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029222 {
29223 switch (value)
29224 {
29225 case FormatFeatureFlagBits::eSampledImage: return "SampledImage";
29226 case FormatFeatureFlagBits::eStorageImage: return "StorageImage";
29227 case FormatFeatureFlagBits::eStorageImageAtomic: return "StorageImageAtomic";
29228 case FormatFeatureFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
29229 case FormatFeatureFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
29230 case FormatFeatureFlagBits::eStorageTexelBufferAtomic: return "StorageTexelBufferAtomic";
29231 case FormatFeatureFlagBits::eVertexBuffer: return "VertexBuffer";
29232 case FormatFeatureFlagBits::eColorAttachment: return "ColorAttachment";
29233 case FormatFeatureFlagBits::eColorAttachmentBlend: return "ColorAttachmentBlend";
29234 case FormatFeatureFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
29235 case FormatFeatureFlagBits::eBlitSrc: return "BlitSrc";
29236 case FormatFeatureFlagBits::eBlitDst: return "BlitDst";
29237 case FormatFeatureFlagBits::eSampledImageFilterLinear: return "SampledImageFilterLinear";
29238 case FormatFeatureFlagBits::eSampledImageFilterCubicIMG: return "SampledImageFilterCubicIMG";
Mark Young39389872017-01-19 21:10:49 -070029239 case FormatFeatureFlagBits::eTransferSrcKHR: return "TransferSrcKHR";
29240 case FormatFeatureFlagBits::eTransferDstKHR: return "TransferDstKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029241 default: return "invalid";
29242 }
29243 }
29244
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029245 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029246 {
29247 if (!value) return "{}";
29248 std::string result;
29249 if (value & FormatFeatureFlagBits::eSampledImage) result += "SampledImage | ";
29250 if (value & FormatFeatureFlagBits::eStorageImage) result += "StorageImage | ";
29251 if (value & FormatFeatureFlagBits::eStorageImageAtomic) result += "StorageImageAtomic | ";
29252 if (value & FormatFeatureFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
29253 if (value & FormatFeatureFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
29254 if (value & FormatFeatureFlagBits::eStorageTexelBufferAtomic) result += "StorageTexelBufferAtomic | ";
29255 if (value & FormatFeatureFlagBits::eVertexBuffer) result += "VertexBuffer | ";
29256 if (value & FormatFeatureFlagBits::eColorAttachment) result += "ColorAttachment | ";
29257 if (value & FormatFeatureFlagBits::eColorAttachmentBlend) result += "ColorAttachmentBlend | ";
29258 if (value & FormatFeatureFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
29259 if (value & FormatFeatureFlagBits::eBlitSrc) result += "BlitSrc | ";
29260 if (value & FormatFeatureFlagBits::eBlitDst) result += "BlitDst | ";
29261 if (value & FormatFeatureFlagBits::eSampledImageFilterLinear) result += "SampledImageFilterLinear | ";
29262 if (value & FormatFeatureFlagBits::eSampledImageFilterCubicIMG) result += "SampledImageFilterCubicIMG | ";
Mark Young39389872017-01-19 21:10:49 -070029263 if (value & FormatFeatureFlagBits::eTransferSrcKHR) result += "TransferSrcKHR | ";
29264 if (value & FormatFeatureFlagBits::eTransferDstKHR) result += "TransferDstKHR | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029265 return "{" + result.substr(0, result.size() - 3) + "}";
29266 }
29267
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029268 VULKAN_HPP_INLINE std::string to_string(QueryControlFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029269 {
29270 switch (value)
29271 {
29272 case QueryControlFlagBits::ePrecise: return "Precise";
29273 default: return "invalid";
29274 }
29275 }
29276
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029277 VULKAN_HPP_INLINE std::string to_string(QueryControlFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029278 {
29279 if (!value) return "{}";
29280 std::string result;
29281 if (value & QueryControlFlagBits::ePrecise) result += "Precise | ";
29282 return "{" + result.substr(0, result.size() - 3) + "}";
29283 }
29284
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029285 VULKAN_HPP_INLINE std::string to_string(QueryResultFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029286 {
29287 switch (value)
29288 {
29289 case QueryResultFlagBits::e64: return "64";
29290 case QueryResultFlagBits::eWait: return "Wait";
29291 case QueryResultFlagBits::eWithAvailability: return "WithAvailability";
29292 case QueryResultFlagBits::ePartial: return "Partial";
29293 default: return "invalid";
29294 }
29295 }
29296
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029297 VULKAN_HPP_INLINE std::string to_string(QueryResultFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029298 {
29299 if (!value) return "{}";
29300 std::string result;
29301 if (value & QueryResultFlagBits::e64) result += "64 | ";
29302 if (value & QueryResultFlagBits::eWait) result += "Wait | ";
29303 if (value & QueryResultFlagBits::eWithAvailability) result += "WithAvailability | ";
29304 if (value & QueryResultFlagBits::ePartial) result += "Partial | ";
29305 return "{" + result.substr(0, result.size() - 3) + "}";
29306 }
29307
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029308 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029309 {
29310 switch (value)
29311 {
29312 case CommandBufferUsageFlagBits::eOneTimeSubmit: return "OneTimeSubmit";
29313 case CommandBufferUsageFlagBits::eRenderPassContinue: return "RenderPassContinue";
29314 case CommandBufferUsageFlagBits::eSimultaneousUse: return "SimultaneousUse";
29315 default: return "invalid";
29316 }
29317 }
29318
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029319 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029320 {
29321 if (!value) return "{}";
29322 std::string result;
29323 if (value & CommandBufferUsageFlagBits::eOneTimeSubmit) result += "OneTimeSubmit | ";
29324 if (value & CommandBufferUsageFlagBits::eRenderPassContinue) result += "RenderPassContinue | ";
29325 if (value & CommandBufferUsageFlagBits::eSimultaneousUse) result += "SimultaneousUse | ";
29326 return "{" + result.substr(0, result.size() - 3) + "}";
29327 }
29328
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029329 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029330 {
29331 switch (value)
29332 {
29333 case QueryPipelineStatisticFlagBits::eInputAssemblyVertices: return "InputAssemblyVertices";
29334 case QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives: return "InputAssemblyPrimitives";
29335 case QueryPipelineStatisticFlagBits::eVertexShaderInvocations: return "VertexShaderInvocations";
29336 case QueryPipelineStatisticFlagBits::eGeometryShaderInvocations: return "GeometryShaderInvocations";
29337 case QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives: return "GeometryShaderPrimitives";
29338 case QueryPipelineStatisticFlagBits::eClippingInvocations: return "ClippingInvocations";
29339 case QueryPipelineStatisticFlagBits::eClippingPrimitives: return "ClippingPrimitives";
29340 case QueryPipelineStatisticFlagBits::eFragmentShaderInvocations: return "FragmentShaderInvocations";
29341 case QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches: return "TessellationControlShaderPatches";
29342 case QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations: return "TessellationEvaluationShaderInvocations";
29343 case QueryPipelineStatisticFlagBits::eComputeShaderInvocations: return "ComputeShaderInvocations";
29344 default: return "invalid";
29345 }
29346 }
29347
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029348 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029349 {
29350 if (!value) return "{}";
29351 std::string result;
29352 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyVertices) result += "InputAssemblyVertices | ";
29353 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives) result += "InputAssemblyPrimitives | ";
29354 if (value & QueryPipelineStatisticFlagBits::eVertexShaderInvocations) result += "VertexShaderInvocations | ";
29355 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderInvocations) result += "GeometryShaderInvocations | ";
29356 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives) result += "GeometryShaderPrimitives | ";
29357 if (value & QueryPipelineStatisticFlagBits::eClippingInvocations) result += "ClippingInvocations | ";
29358 if (value & QueryPipelineStatisticFlagBits::eClippingPrimitives) result += "ClippingPrimitives | ";
29359 if (value & QueryPipelineStatisticFlagBits::eFragmentShaderInvocations) result += "FragmentShaderInvocations | ";
29360 if (value & QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches) result += "TessellationControlShaderPatches | ";
29361 if (value & QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations) result += "TessellationEvaluationShaderInvocations | ";
29362 if (value & QueryPipelineStatisticFlagBits::eComputeShaderInvocations) result += "ComputeShaderInvocations | ";
29363 return "{" + result.substr(0, result.size() - 3) + "}";
29364 }
29365
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029366 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029367 {
29368 switch (value)
29369 {
29370 case ImageAspectFlagBits::eColor: return "Color";
29371 case ImageAspectFlagBits::eDepth: return "Depth";
29372 case ImageAspectFlagBits::eStencil: return "Stencil";
29373 case ImageAspectFlagBits::eMetadata: return "Metadata";
29374 default: return "invalid";
29375 }
29376 }
29377
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029378 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029379 {
29380 if (!value) return "{}";
29381 std::string result;
29382 if (value & ImageAspectFlagBits::eColor) result += "Color | ";
29383 if (value & ImageAspectFlagBits::eDepth) result += "Depth | ";
29384 if (value & ImageAspectFlagBits::eStencil) result += "Stencil | ";
29385 if (value & ImageAspectFlagBits::eMetadata) result += "Metadata | ";
29386 return "{" + result.substr(0, result.size() - 3) + "}";
29387 }
29388
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029389 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029390 {
29391 switch (value)
29392 {
29393 case SparseImageFormatFlagBits::eSingleMiptail: return "SingleMiptail";
29394 case SparseImageFormatFlagBits::eAlignedMipSize: return "AlignedMipSize";
29395 case SparseImageFormatFlagBits::eNonstandardBlockSize: return "NonstandardBlockSize";
29396 default: return "invalid";
29397 }
29398 }
29399
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029400 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029401 {
29402 if (!value) return "{}";
29403 std::string result;
29404 if (value & SparseImageFormatFlagBits::eSingleMiptail) result += "SingleMiptail | ";
29405 if (value & SparseImageFormatFlagBits::eAlignedMipSize) result += "AlignedMipSize | ";
29406 if (value & SparseImageFormatFlagBits::eNonstandardBlockSize) result += "NonstandardBlockSize | ";
29407 return "{" + result.substr(0, result.size() - 3) + "}";
29408 }
29409
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029410 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029411 {
29412 switch (value)
29413 {
29414 case SparseMemoryBindFlagBits::eMetadata: return "Metadata";
29415 default: return "invalid";
29416 }
29417 }
29418
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029419 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029420 {
29421 if (!value) return "{}";
29422 std::string result;
29423 if (value & SparseMemoryBindFlagBits::eMetadata) result += "Metadata | ";
29424 return "{" + result.substr(0, result.size() - 3) + "}";
29425 }
29426
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029427 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029428 {
29429 switch (value)
29430 {
29431 case PipelineStageFlagBits::eTopOfPipe: return "TopOfPipe";
29432 case PipelineStageFlagBits::eDrawIndirect: return "DrawIndirect";
29433 case PipelineStageFlagBits::eVertexInput: return "VertexInput";
29434 case PipelineStageFlagBits::eVertexShader: return "VertexShader";
29435 case PipelineStageFlagBits::eTessellationControlShader: return "TessellationControlShader";
29436 case PipelineStageFlagBits::eTessellationEvaluationShader: return "TessellationEvaluationShader";
29437 case PipelineStageFlagBits::eGeometryShader: return "GeometryShader";
29438 case PipelineStageFlagBits::eFragmentShader: return "FragmentShader";
29439 case PipelineStageFlagBits::eEarlyFragmentTests: return "EarlyFragmentTests";
29440 case PipelineStageFlagBits::eLateFragmentTests: return "LateFragmentTests";
29441 case PipelineStageFlagBits::eColorAttachmentOutput: return "ColorAttachmentOutput";
29442 case PipelineStageFlagBits::eComputeShader: return "ComputeShader";
29443 case PipelineStageFlagBits::eTransfer: return "Transfer";
29444 case PipelineStageFlagBits::eBottomOfPipe: return "BottomOfPipe";
29445 case PipelineStageFlagBits::eHost: return "Host";
29446 case PipelineStageFlagBits::eAllGraphics: return "AllGraphics";
29447 case PipelineStageFlagBits::eAllCommands: return "AllCommands";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029448 case PipelineStageFlagBits::eCommandProcessNVX: return "CommandProcessNVX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029449 default: return "invalid";
29450 }
29451 }
29452
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029453 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029454 {
29455 if (!value) return "{}";
29456 std::string result;
29457 if (value & PipelineStageFlagBits::eTopOfPipe) result += "TopOfPipe | ";
29458 if (value & PipelineStageFlagBits::eDrawIndirect) result += "DrawIndirect | ";
29459 if (value & PipelineStageFlagBits::eVertexInput) result += "VertexInput | ";
29460 if (value & PipelineStageFlagBits::eVertexShader) result += "VertexShader | ";
29461 if (value & PipelineStageFlagBits::eTessellationControlShader) result += "TessellationControlShader | ";
29462 if (value & PipelineStageFlagBits::eTessellationEvaluationShader) result += "TessellationEvaluationShader | ";
29463 if (value & PipelineStageFlagBits::eGeometryShader) result += "GeometryShader | ";
29464 if (value & PipelineStageFlagBits::eFragmentShader) result += "FragmentShader | ";
29465 if (value & PipelineStageFlagBits::eEarlyFragmentTests) result += "EarlyFragmentTests | ";
29466 if (value & PipelineStageFlagBits::eLateFragmentTests) result += "LateFragmentTests | ";
29467 if (value & PipelineStageFlagBits::eColorAttachmentOutput) result += "ColorAttachmentOutput | ";
29468 if (value & PipelineStageFlagBits::eComputeShader) result += "ComputeShader | ";
29469 if (value & PipelineStageFlagBits::eTransfer) result += "Transfer | ";
29470 if (value & PipelineStageFlagBits::eBottomOfPipe) result += "BottomOfPipe | ";
29471 if (value & PipelineStageFlagBits::eHost) result += "Host | ";
29472 if (value & PipelineStageFlagBits::eAllGraphics) result += "AllGraphics | ";
29473 if (value & PipelineStageFlagBits::eAllCommands) result += "AllCommands | ";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029474 if (value & PipelineStageFlagBits::eCommandProcessNVX) result += "CommandProcessNVX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029475 return "{" + result.substr(0, result.size() - 3) + "}";
29476 }
29477
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029478 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029479 {
29480 switch (value)
29481 {
29482 case CommandPoolCreateFlagBits::eTransient: return "Transient";
29483 case CommandPoolCreateFlagBits::eResetCommandBuffer: return "ResetCommandBuffer";
29484 default: return "invalid";
29485 }
29486 }
29487
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029488 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029489 {
29490 if (!value) return "{}";
29491 std::string result;
29492 if (value & CommandPoolCreateFlagBits::eTransient) result += "Transient | ";
29493 if (value & CommandPoolCreateFlagBits::eResetCommandBuffer) result += "ResetCommandBuffer | ";
29494 return "{" + result.substr(0, result.size() - 3) + "}";
29495 }
29496
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029497 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029498 {
29499 switch (value)
29500 {
29501 case CommandPoolResetFlagBits::eReleaseResources: return "ReleaseResources";
29502 default: return "invalid";
29503 }
29504 }
29505
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029506 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029507 {
29508 if (!value) return "{}";
29509 std::string result;
29510 if (value & CommandPoolResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
29511 return "{" + result.substr(0, result.size() - 3) + "}";
29512 }
29513
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029514 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029515 {
29516 switch (value)
29517 {
29518 case CommandBufferResetFlagBits::eReleaseResources: return "ReleaseResources";
29519 default: return "invalid";
29520 }
29521 }
29522
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029523 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029524 {
29525 if (!value) return "{}";
29526 std::string result;
29527 if (value & CommandBufferResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
29528 return "{" + result.substr(0, result.size() - 3) + "}";
29529 }
29530
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029531 VULKAN_HPP_INLINE std::string to_string(SampleCountFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029532 {
29533 switch (value)
29534 {
29535 case SampleCountFlagBits::e1: return "1";
29536 case SampleCountFlagBits::e2: return "2";
29537 case SampleCountFlagBits::e4: return "4";
29538 case SampleCountFlagBits::e8: return "8";
29539 case SampleCountFlagBits::e16: return "16";
29540 case SampleCountFlagBits::e32: return "32";
29541 case SampleCountFlagBits::e64: return "64";
29542 default: return "invalid";
29543 }
29544 }
29545
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029546 VULKAN_HPP_INLINE std::string to_string(SampleCountFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029547 {
29548 if (!value) return "{}";
29549 std::string result;
29550 if (value & SampleCountFlagBits::e1) result += "1 | ";
29551 if (value & SampleCountFlagBits::e2) result += "2 | ";
29552 if (value & SampleCountFlagBits::e4) result += "4 | ";
29553 if (value & SampleCountFlagBits::e8) result += "8 | ";
29554 if (value & SampleCountFlagBits::e16) result += "16 | ";
29555 if (value & SampleCountFlagBits::e32) result += "32 | ";
29556 if (value & SampleCountFlagBits::e64) result += "64 | ";
29557 return "{" + result.substr(0, result.size() - 3) + "}";
29558 }
29559
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029560 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029561 {
29562 switch (value)
29563 {
29564 case AttachmentDescriptionFlagBits::eMayAlias: return "MayAlias";
29565 default: return "invalid";
29566 }
29567 }
29568
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029569 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029570 {
29571 if (!value) return "{}";
29572 std::string result;
29573 if (value & AttachmentDescriptionFlagBits::eMayAlias) result += "MayAlias | ";
29574 return "{" + result.substr(0, result.size() - 3) + "}";
29575 }
29576
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029577 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029578 {
29579 switch (value)
29580 {
29581 case StencilFaceFlagBits::eFront: return "Front";
29582 case StencilFaceFlagBits::eBack: return "Back";
29583 case StencilFaceFlagBits::eVkStencilFrontAndBack: return "VkStencilFrontAndBack";
29584 default: return "invalid";
29585 }
29586 }
29587
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029588 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029589 {
29590 if (!value) return "{}";
29591 std::string result;
29592 if (value & StencilFaceFlagBits::eFront) result += "Front | ";
29593 if (value & StencilFaceFlagBits::eBack) result += "Back | ";
29594 if (value & StencilFaceFlagBits::eVkStencilFrontAndBack) result += "VkStencilFrontAndBack | ";
29595 return "{" + result.substr(0, result.size() - 3) + "}";
29596 }
29597
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029598 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029599 {
29600 switch (value)
29601 {
29602 case DescriptorPoolCreateFlagBits::eFreeDescriptorSet: return "FreeDescriptorSet";
29603 default: return "invalid";
29604 }
29605 }
29606
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029607 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029608 {
29609 if (!value) return "{}";
29610 std::string result;
29611 if (value & DescriptorPoolCreateFlagBits::eFreeDescriptorSet) result += "FreeDescriptorSet | ";
29612 return "{" + result.substr(0, result.size() - 3) + "}";
29613 }
29614
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029615 VULKAN_HPP_INLINE std::string to_string(DependencyFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029616 {
29617 switch (value)
29618 {
29619 case DependencyFlagBits::eByRegion: return "ByRegion";
Mark Young0f183a82017-02-28 09:58:04 -070029620 case DependencyFlagBits::eViewLocalKHX: return "ViewLocalKHX";
29621 case DependencyFlagBits::eDeviceGroupKHX: return "DeviceGroupKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029622 default: return "invalid";
29623 }
29624 }
29625
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029626 VULKAN_HPP_INLINE std::string to_string(DependencyFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029627 {
29628 if (!value) return "{}";
29629 std::string result;
29630 if (value & DependencyFlagBits::eByRegion) result += "ByRegion | ";
Mark Young0f183a82017-02-28 09:58:04 -070029631 if (value & DependencyFlagBits::eViewLocalKHX) result += "ViewLocalKHX | ";
29632 if (value & DependencyFlagBits::eDeviceGroupKHX) result += "DeviceGroupKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029633 return "{" + result.substr(0, result.size() - 3) + "}";
29634 }
29635
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029636 VULKAN_HPP_INLINE std::string to_string(PresentModeKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029637 {
29638 switch (value)
29639 {
29640 case PresentModeKHR::eImmediate: return "Immediate";
29641 case PresentModeKHR::eMailbox: return "Mailbox";
29642 case PresentModeKHR::eFifo: return "Fifo";
29643 case PresentModeKHR::eFifoRelaxed: return "FifoRelaxed";
29644 default: return "invalid";
29645 }
29646 }
29647
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029648 VULKAN_HPP_INLINE std::string to_string(ColorSpaceKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029649 {
29650 switch (value)
29651 {
29652 case ColorSpaceKHR::eSrgbNonlinear: return "SrgbNonlinear";
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060029653 case ColorSpaceKHR::eDisplayP3NonlinearEXT: return "DisplayP3NonlinearEXT";
29654 case ColorSpaceKHR::eExtendedSrgbLinearEXT: return "ExtendedSrgbLinearEXT";
29655 case ColorSpaceKHR::eDciP3LinearEXT: return "DciP3LinearEXT";
29656 case ColorSpaceKHR::eDciP3NonlinearEXT: return "DciP3NonlinearEXT";
29657 case ColorSpaceKHR::eBt709LinearEXT: return "Bt709LinearEXT";
29658 case ColorSpaceKHR::eBt709NonlinearEXT: return "Bt709NonlinearEXT";
29659 case ColorSpaceKHR::eBt2020LinearEXT: return "Bt2020LinearEXT";
29660 case ColorSpaceKHR::eHdr10St2084EXT: return "Hdr10St2084EXT";
29661 case ColorSpaceKHR::eDolbyvisionEXT: return "DolbyvisionEXT";
29662 case ColorSpaceKHR::eHdr10HlgEXT: return "Hdr10HlgEXT";
29663 case ColorSpaceKHR::eAdobergbLinearEXT: return "AdobergbLinearEXT";
29664 case ColorSpaceKHR::eAdobergbNonlinearEXT: return "AdobergbNonlinearEXT";
29665 case ColorSpaceKHR::ePassThroughEXT: return "PassThroughEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029666 default: return "invalid";
29667 }
29668 }
29669
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029670 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029671 {
29672 switch (value)
29673 {
29674 case DisplayPlaneAlphaFlagBitsKHR::eOpaque: return "Opaque";
29675 case DisplayPlaneAlphaFlagBitsKHR::eGlobal: return "Global";
29676 case DisplayPlaneAlphaFlagBitsKHR::ePerPixel: return "PerPixel";
29677 case DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied: return "PerPixelPremultiplied";
29678 default: return "invalid";
29679 }
29680 }
29681
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029682 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029683 {
29684 if (!value) return "{}";
29685 std::string result;
29686 if (value & DisplayPlaneAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
29687 if (value & DisplayPlaneAlphaFlagBitsKHR::eGlobal) result += "Global | ";
29688 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixel) result += "PerPixel | ";
29689 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied) result += "PerPixelPremultiplied | ";
29690 return "{" + result.substr(0, result.size() - 3) + "}";
29691 }
29692
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029693 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029694 {
29695 switch (value)
29696 {
29697 case CompositeAlphaFlagBitsKHR::eOpaque: return "Opaque";
29698 case CompositeAlphaFlagBitsKHR::ePreMultiplied: return "PreMultiplied";
29699 case CompositeAlphaFlagBitsKHR::ePostMultiplied: return "PostMultiplied";
29700 case CompositeAlphaFlagBitsKHR::eInherit: return "Inherit";
29701 default: return "invalid";
29702 }
29703 }
29704
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029705 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029706 {
29707 if (!value) return "{}";
29708 std::string result;
29709 if (value & CompositeAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
29710 if (value & CompositeAlphaFlagBitsKHR::ePreMultiplied) result += "PreMultiplied | ";
29711 if (value & CompositeAlphaFlagBitsKHR::ePostMultiplied) result += "PostMultiplied | ";
29712 if (value & CompositeAlphaFlagBitsKHR::eInherit) result += "Inherit | ";
29713 return "{" + result.substr(0, result.size() - 3) + "}";
29714 }
29715
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029716 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029717 {
29718 switch (value)
29719 {
29720 case SurfaceTransformFlagBitsKHR::eIdentity: return "Identity";
29721 case SurfaceTransformFlagBitsKHR::eRotate90: return "Rotate90";
29722 case SurfaceTransformFlagBitsKHR::eRotate180: return "Rotate180";
29723 case SurfaceTransformFlagBitsKHR::eRotate270: return "Rotate270";
29724 case SurfaceTransformFlagBitsKHR::eHorizontalMirror: return "HorizontalMirror";
29725 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90: return "HorizontalMirrorRotate90";
29726 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180: return "HorizontalMirrorRotate180";
29727 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270: return "HorizontalMirrorRotate270";
29728 case SurfaceTransformFlagBitsKHR::eInherit: return "Inherit";
29729 default: return "invalid";
29730 }
29731 }
29732
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029733 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029734 {
29735 if (!value) return "{}";
29736 std::string result;
29737 if (value & SurfaceTransformFlagBitsKHR::eIdentity) result += "Identity | ";
29738 if (value & SurfaceTransformFlagBitsKHR::eRotate90) result += "Rotate90 | ";
29739 if (value & SurfaceTransformFlagBitsKHR::eRotate180) result += "Rotate180 | ";
29740 if (value & SurfaceTransformFlagBitsKHR::eRotate270) result += "Rotate270 | ";
29741 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirror) result += "HorizontalMirror | ";
29742 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90) result += "HorizontalMirrorRotate90 | ";
29743 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180) result += "HorizontalMirrorRotate180 | ";
29744 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270) result += "HorizontalMirrorRotate270 | ";
29745 if (value & SurfaceTransformFlagBitsKHR::eInherit) result += "Inherit | ";
29746 return "{" + result.substr(0, result.size() - 3) + "}";
29747 }
29748
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029749 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagBitsEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029750 {
29751 switch (value)
29752 {
29753 case DebugReportFlagBitsEXT::eInformation: return "Information";
29754 case DebugReportFlagBitsEXT::eWarning: return "Warning";
29755 case DebugReportFlagBitsEXT::ePerformanceWarning: return "PerformanceWarning";
29756 case DebugReportFlagBitsEXT::eError: return "Error";
29757 case DebugReportFlagBitsEXT::eDebug: return "Debug";
29758 default: return "invalid";
29759 }
29760 }
29761
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029762 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagsEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029763 {
29764 if (!value) return "{}";
29765 std::string result;
29766 if (value & DebugReportFlagBitsEXT::eInformation) result += "Information | ";
29767 if (value & DebugReportFlagBitsEXT::eWarning) result += "Warning | ";
29768 if (value & DebugReportFlagBitsEXT::ePerformanceWarning) result += "PerformanceWarning | ";
29769 if (value & DebugReportFlagBitsEXT::eError) result += "Error | ";
29770 if (value & DebugReportFlagBitsEXT::eDebug) result += "Debug | ";
29771 return "{" + result.substr(0, result.size() - 3) + "}";
29772 }
29773
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029774 VULKAN_HPP_INLINE std::string to_string(DebugReportObjectTypeEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029775 {
29776 switch (value)
29777 {
29778 case DebugReportObjectTypeEXT::eUnknown: return "Unknown";
29779 case DebugReportObjectTypeEXT::eInstance: return "Instance";
29780 case DebugReportObjectTypeEXT::ePhysicalDevice: return "PhysicalDevice";
29781 case DebugReportObjectTypeEXT::eDevice: return "Device";
29782 case DebugReportObjectTypeEXT::eQueue: return "Queue";
29783 case DebugReportObjectTypeEXT::eSemaphore: return "Semaphore";
29784 case DebugReportObjectTypeEXT::eCommandBuffer: return "CommandBuffer";
29785 case DebugReportObjectTypeEXT::eFence: return "Fence";
29786 case DebugReportObjectTypeEXT::eDeviceMemory: return "DeviceMemory";
29787 case DebugReportObjectTypeEXT::eBuffer: return "Buffer";
29788 case DebugReportObjectTypeEXT::eImage: return "Image";
29789 case DebugReportObjectTypeEXT::eEvent: return "Event";
29790 case DebugReportObjectTypeEXT::eQueryPool: return "QueryPool";
29791 case DebugReportObjectTypeEXT::eBufferView: return "BufferView";
29792 case DebugReportObjectTypeEXT::eImageView: return "ImageView";
29793 case DebugReportObjectTypeEXT::eShaderModule: return "ShaderModule";
29794 case DebugReportObjectTypeEXT::ePipelineCache: return "PipelineCache";
29795 case DebugReportObjectTypeEXT::ePipelineLayout: return "PipelineLayout";
29796 case DebugReportObjectTypeEXT::eRenderPass: return "RenderPass";
29797 case DebugReportObjectTypeEXT::ePipeline: return "Pipeline";
29798 case DebugReportObjectTypeEXT::eDescriptorSetLayout: return "DescriptorSetLayout";
29799 case DebugReportObjectTypeEXT::eSampler: return "Sampler";
29800 case DebugReportObjectTypeEXT::eDescriptorPool: return "DescriptorPool";
29801 case DebugReportObjectTypeEXT::eDescriptorSet: return "DescriptorSet";
29802 case DebugReportObjectTypeEXT::eFramebuffer: return "Framebuffer";
29803 case DebugReportObjectTypeEXT::eCommandPool: return "CommandPool";
29804 case DebugReportObjectTypeEXT::eSurfaceKhr: return "SurfaceKhr";
29805 case DebugReportObjectTypeEXT::eSwapchainKhr: return "SwapchainKhr";
29806 case DebugReportObjectTypeEXT::eDebugReport: return "DebugReport";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029807 case DebugReportObjectTypeEXT::eDisplayKhr: return "DisplayKhr";
29808 case DebugReportObjectTypeEXT::eDisplayModeKhr: return "DisplayModeKhr";
29809 case DebugReportObjectTypeEXT::eObjectTableNvx: return "ObjectTableNvx";
29810 case DebugReportObjectTypeEXT::eIndirectCommandsLayoutNvx: return "IndirectCommandsLayoutNvx";
Mark Lobodzinski3289d762017-04-03 08:22:04 -060029811 case DebugReportObjectTypeEXT::eDescriptorUpdateTemplateKhrKHR: return "DescriptorUpdateTemplateKhrKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029812 default: return "invalid";
29813 }
29814 }
29815
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029816 VULKAN_HPP_INLINE std::string to_string(DebugReportErrorEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029817 {
29818 switch (value)
29819 {
29820 case DebugReportErrorEXT::eNone: return "None";
29821 case DebugReportErrorEXT::eCallbackRef: return "CallbackRef";
29822 default: return "invalid";
29823 }
29824 }
29825
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029826 VULKAN_HPP_INLINE std::string to_string(RasterizationOrderAMD value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029827 {
29828 switch (value)
29829 {
29830 case RasterizationOrderAMD::eStrict: return "Strict";
29831 case RasterizationOrderAMD::eRelaxed: return "Relaxed";
29832 default: return "invalid";
29833 }
29834 }
29835
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029836 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060029837 {
29838 switch (value)
29839 {
29840 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32: return "OpaqueWin32";
29841 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
29842 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image: return "D3D11Image";
29843 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt: return "D3D11ImageKmt";
29844 default: return "invalid";
29845 }
29846 }
29847
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029848 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060029849 {
29850 if (!value) return "{}";
29851 std::string result;
29852 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) result += "OpaqueWin32 | ";
29853 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
29854 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) result += "D3D11Image | ";
29855 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt) result += "D3D11ImageKmt | ";
29856 return "{" + result.substr(0, result.size() - 3) + "}";
29857 }
29858
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029859 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060029860 {
29861 switch (value)
29862 {
29863 case ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly: return "DedicatedOnly";
29864 case ExternalMemoryFeatureFlagBitsNV::eExportable: return "Exportable";
29865 case ExternalMemoryFeatureFlagBitsNV::eImportable: return "Importable";
29866 default: return "invalid";
29867 }
29868 }
29869
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029870 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060029871 {
29872 if (!value) return "{}";
29873 std::string result;
29874 if (value & ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) result += "DedicatedOnly | ";
29875 if (value & ExternalMemoryFeatureFlagBitsNV::eExportable) result += "Exportable | ";
29876 if (value & ExternalMemoryFeatureFlagBitsNV::eImportable) result += "Importable | ";
29877 return "{" + result.substr(0, result.size() - 3) + "}";
29878 }
29879
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029880 VULKAN_HPP_INLINE std::string to_string(ValidationCheckEXT value)
Lenny Komow68432d72016-09-29 14:16:59 -060029881 {
29882 switch (value)
29883 {
29884 case ValidationCheckEXT::eAll: return "All";
29885 default: return "invalid";
29886 }
29887 }
29888
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029889 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagBitsNVX value)
29890 {
29891 switch (value)
29892 {
29893 case IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences: return "UnorderedSequences";
29894 case IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences: return "SparseSequences";
29895 case IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions: return "EmptyExecutions";
29896 case IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences: return "IndexedSequences";
29897 default: return "invalid";
29898 }
29899 }
29900
29901 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagsNVX value)
29902 {
29903 if (!value) return "{}";
29904 std::string result;
29905 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) result += "UnorderedSequences | ";
29906 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) result += "SparseSequences | ";
29907 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) result += "EmptyExecutions | ";
29908 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences) result += "IndexedSequences | ";
29909 return "{" + result.substr(0, result.size() - 3) + "}";
29910 }
29911
29912 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagBitsNVX value)
29913 {
29914 switch (value)
29915 {
29916 case ObjectEntryUsageFlagBitsNVX::eGraphics: return "Graphics";
29917 case ObjectEntryUsageFlagBitsNVX::eCompute: return "Compute";
29918 default: return "invalid";
29919 }
29920 }
29921
29922 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagsNVX value)
29923 {
29924 if (!value) return "{}";
29925 std::string result;
29926 if (value & ObjectEntryUsageFlagBitsNVX::eGraphics) result += "Graphics | ";
29927 if (value & ObjectEntryUsageFlagBitsNVX::eCompute) result += "Compute | ";
29928 return "{" + result.substr(0, result.size() - 3) + "}";
29929 }
29930
29931 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsTokenTypeNVX value)
29932 {
29933 switch (value)
29934 {
29935 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenPipeline: return "VkIndirectCommandsTokenPipeline";
29936 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenDescriptorSet: return "VkIndirectCommandsTokenDescriptorSet";
29937 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenIndexBuffer: return "VkIndirectCommandsTokenIndexBuffer";
29938 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenVertexBuffer: return "VkIndirectCommandsTokenVertexBuffer";
29939 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenPushConstant: return "VkIndirectCommandsTokenPushConstant";
29940 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenDrawIndexed: return "VkIndirectCommandsTokenDrawIndexed";
29941 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenDraw: return "VkIndirectCommandsTokenDraw";
29942 case IndirectCommandsTokenTypeNVX::eVkIndirectCommandsTokenDispatch: return "VkIndirectCommandsTokenDispatch";
29943 default: return "invalid";
29944 }
29945 }
29946
29947 VULKAN_HPP_INLINE std::string to_string(ObjectEntryTypeNVX value)
29948 {
29949 switch (value)
29950 {
29951 case ObjectEntryTypeNVX::eVkObjectEntryDescriptorSet: return "VkObjectEntryDescriptorSet";
29952 case ObjectEntryTypeNVX::eVkObjectEntryPipeline: return "VkObjectEntryPipeline";
29953 case ObjectEntryTypeNVX::eVkObjectEntryIndexBuffer: return "VkObjectEntryIndexBuffer";
29954 case ObjectEntryTypeNVX::eVkObjectEntryVertexBuffer: return "VkObjectEntryVertexBuffer";
29955 case ObjectEntryTypeNVX::eVkObjectEntryPushConstant: return "VkObjectEntryPushConstant";
29956 default: return "invalid";
29957 }
29958 }
29959
Mark Young0f183a82017-02-28 09:58:04 -070029960 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlagBits value)
29961 {
29962 switch (value)
29963 {
29964 case DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR: return "PushDescriptorKHR";
29965 default: return "invalid";
29966 }
29967 }
29968
29969 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlags value)
29970 {
29971 if (!value) return "{}";
29972 std::string result;
29973 if (value & DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR) result += "PushDescriptorKHR | ";
29974 return "{" + result.substr(0, result.size() - 3) + "}";
29975 }
29976
29977 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsKHX value)
29978 {
29979 switch (value)
29980 {
29981 case ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd: return "OpaqueFd";
29982 case ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32: return "OpaqueWin32";
29983 case ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
29984 case ExternalMemoryHandleTypeFlagBitsKHX::eD3D11Texture: return "D3D11Texture";
29985 case ExternalMemoryHandleTypeFlagBitsKHX::eD3D11TextureKmt: return "D3D11TextureKmt";
29986 case ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Heap: return "D3D12Heap";
29987 case ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Resource: return "D3D12Resource";
29988 default: return "invalid";
29989 }
29990 }
29991
29992 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsKHX value)
29993 {
29994 if (!value) return "{}";
29995 std::string result;
29996 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueFd) result += "OpaqueFd | ";
29997 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32) result += "OpaqueWin32 | ";
29998 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
29999 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eD3D11Texture) result += "D3D11Texture | ";
30000 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eD3D11TextureKmt) result += "D3D11TextureKmt | ";
30001 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Heap) result += "D3D12Heap | ";
30002 if (value & ExternalMemoryHandleTypeFlagBitsKHX::eD3D12Resource) result += "D3D12Resource | ";
30003 return "{" + result.substr(0, result.size() - 3) + "}";
30004 }
30005
30006 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsKHX value)
30007 {
30008 switch (value)
30009 {
30010 case ExternalMemoryFeatureFlagBitsKHX::eDedicatedOnly: return "DedicatedOnly";
30011 case ExternalMemoryFeatureFlagBitsKHX::eExportable: return "Exportable";
30012 case ExternalMemoryFeatureFlagBitsKHX::eImportable: return "Importable";
30013 default: return "invalid";
30014 }
30015 }
30016
30017 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsKHX value)
30018 {
30019 if (!value) return "{}";
30020 std::string result;
30021 if (value & ExternalMemoryFeatureFlagBitsKHX::eDedicatedOnly) result += "DedicatedOnly | ";
30022 if (value & ExternalMemoryFeatureFlagBitsKHX::eExportable) result += "Exportable | ";
30023 if (value & ExternalMemoryFeatureFlagBitsKHX::eImportable) result += "Importable | ";
30024 return "{" + result.substr(0, result.size() - 3) + "}";
30025 }
30026
30027 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagBitsKHX value)
30028 {
30029 switch (value)
30030 {
30031 case ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd: return "OpaqueFd";
30032 case ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32: return "OpaqueWin32";
30033 case ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
30034 case ExternalSemaphoreHandleTypeFlagBitsKHX::eD3D12Fence: return "D3D12Fence";
30035 case ExternalSemaphoreHandleTypeFlagBitsKHX::eFenceFd: return "FenceFd";
30036 default: return "invalid";
30037 }
30038 }
30039
30040 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagsKHX value)
30041 {
30042 if (!value) return "{}";
30043 std::string result;
30044 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueFd) result += "OpaqueFd | ";
30045 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32) result += "OpaqueWin32 | ";
30046 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
30047 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eD3D12Fence) result += "D3D12Fence | ";
30048 if (value & ExternalSemaphoreHandleTypeFlagBitsKHX::eFenceFd) result += "FenceFd | ";
30049 return "{" + result.substr(0, result.size() - 3) + "}";
30050 }
30051
30052 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagBitsKHX value)
30053 {
30054 switch (value)
30055 {
30056 case ExternalSemaphoreFeatureFlagBitsKHX::eExportable: return "Exportable";
30057 case ExternalSemaphoreFeatureFlagBitsKHX::eImportable: return "Importable";
30058 default: return "invalid";
30059 }
30060 }
30061
30062 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagsKHX value)
30063 {
30064 if (!value) return "{}";
30065 std::string result;
30066 if (value & ExternalSemaphoreFeatureFlagBitsKHX::eExportable) result += "Exportable | ";
30067 if (value & ExternalSemaphoreFeatureFlagBitsKHX::eImportable) result += "Importable | ";
30068 return "{" + result.substr(0, result.size() - 3) + "}";
30069 }
30070
Mark Young39389872017-01-19 21:10:49 -070030071 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagBitsEXT value)
30072 {
30073 switch (value)
30074 {
30075 case SurfaceCounterFlagBitsEXT::eVblankExt: return "VblankExt";
30076 default: return "invalid";
30077 }
30078 }
30079
30080 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagsEXT value)
30081 {
30082 if (!value) return "{}";
30083 std::string result;
30084 if (value & SurfaceCounterFlagBitsEXT::eVblankExt) result += "VblankExt | ";
30085 return "{" + result.substr(0, result.size() - 3) + "}";
30086 }
30087
30088 VULKAN_HPP_INLINE std::string to_string(DisplayPowerStateEXT value)
30089 {
30090 switch (value)
30091 {
30092 case DisplayPowerStateEXT::eOff: return "Off";
30093 case DisplayPowerStateEXT::eSuspend: return "Suspend";
30094 case DisplayPowerStateEXT::eOn: return "On";
30095 default: return "invalid";
30096 }
30097 }
30098
30099 VULKAN_HPP_INLINE std::string to_string(DeviceEventTypeEXT value)
30100 {
30101 switch (value)
30102 {
30103 case DeviceEventTypeEXT::eDisplayHotplug: return "DisplayHotplug";
30104 default: return "invalid";
30105 }
30106 }
30107
30108 VULKAN_HPP_INLINE std::string to_string(DisplayEventTypeEXT value)
30109 {
30110 switch (value)
30111 {
30112 case DisplayEventTypeEXT::eFirstPixelOut: return "FirstPixelOut";
30113 default: return "invalid";
30114 }
30115 }
30116
Mark Young0f183a82017-02-28 09:58:04 -070030117 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagBitsKHX value)
30118 {
30119 switch (value)
30120 {
30121 case PeerMemoryFeatureFlagBitsKHX::eCopySrc: return "CopySrc";
30122 case PeerMemoryFeatureFlagBitsKHX::eCopyDst: return "CopyDst";
30123 case PeerMemoryFeatureFlagBitsKHX::eGenericSrc: return "GenericSrc";
30124 case PeerMemoryFeatureFlagBitsKHX::eGenericDst: return "GenericDst";
30125 default: return "invalid";
30126 }
30127 }
30128
30129 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagsKHX value)
30130 {
30131 if (!value) return "{}";
30132 std::string result;
30133 if (value & PeerMemoryFeatureFlagBitsKHX::eCopySrc) result += "CopySrc | ";
30134 if (value & PeerMemoryFeatureFlagBitsKHX::eCopyDst) result += "CopyDst | ";
30135 if (value & PeerMemoryFeatureFlagBitsKHX::eGenericSrc) result += "GenericSrc | ";
30136 if (value & PeerMemoryFeatureFlagBitsKHX::eGenericDst) result += "GenericDst | ";
30137 return "{" + result.substr(0, result.size() - 3) + "}";
30138 }
30139
30140 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagBitsKHX value)
30141 {
30142 switch (value)
30143 {
30144 case MemoryAllocateFlagBitsKHX::eDeviceMask: return "DeviceMask";
30145 default: return "invalid";
30146 }
30147 }
30148
30149 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagsKHX value)
30150 {
30151 if (!value) return "{}";
30152 std::string result;
30153 if (value & MemoryAllocateFlagBitsKHX::eDeviceMask) result += "DeviceMask | ";
30154 return "{" + result.substr(0, result.size() - 3) + "}";
30155 }
30156
30157 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagBitsKHX value)
30158 {
30159 switch (value)
30160 {
30161 case DeviceGroupPresentModeFlagBitsKHX::eLocal: return "Local";
30162 case DeviceGroupPresentModeFlagBitsKHX::eRemote: return "Remote";
30163 case DeviceGroupPresentModeFlagBitsKHX::eSum: return "Sum";
30164 case DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice: return "LocalMultiDevice";
30165 default: return "invalid";
30166 }
30167 }
30168
30169 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagsKHX value)
30170 {
30171 if (!value) return "{}";
30172 std::string result;
30173 if (value & DeviceGroupPresentModeFlagBitsKHX::eLocal) result += "Local | ";
30174 if (value & DeviceGroupPresentModeFlagBitsKHX::eRemote) result += "Remote | ";
30175 if (value & DeviceGroupPresentModeFlagBitsKHX::eSum) result += "Sum | ";
30176 if (value & DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice) result += "LocalMultiDevice | ";
30177 return "{" + result.substr(0, result.size() - 3) + "}";
30178 }
30179
30180 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagBitsKHR value)
30181 {
30182 switch (value)
30183 {
30184 case SwapchainCreateFlagBitsKHR::eBindSfrKHX: return "BindSfrKHX";
30185 default: return "invalid";
30186 }
30187 }
30188
30189 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagsKHR value)
30190 {
30191 if (!value) return "{}";
30192 std::string result;
30193 if (value & SwapchainCreateFlagBitsKHR::eBindSfrKHX) result += "BindSfrKHX | ";
30194 return "{" + result.substr(0, result.size() - 3) + "}";
30195 }
30196
30197 VULKAN_HPP_INLINE std::string to_string(ViewportCoordinateSwizzleNV value)
30198 {
30199 switch (value)
30200 {
30201 case ViewportCoordinateSwizzleNV::ePositiveX: return "PositiveX";
30202 case ViewportCoordinateSwizzleNV::eNegativeX: return "NegativeX";
30203 case ViewportCoordinateSwizzleNV::ePositiveY: return "PositiveY";
30204 case ViewportCoordinateSwizzleNV::eNegativeY: return "NegativeY";
30205 case ViewportCoordinateSwizzleNV::ePositiveZ: return "PositiveZ";
30206 case ViewportCoordinateSwizzleNV::eNegativeZ: return "NegativeZ";
30207 case ViewportCoordinateSwizzleNV::ePositiveW: return "PositiveW";
30208 case ViewportCoordinateSwizzleNV::eNegativeW: return "NegativeW";
30209 default: return "invalid";
30210 }
30211 }
30212
30213 VULKAN_HPP_INLINE std::string to_string(DiscardRectangleModeEXT value)
30214 {
30215 switch (value)
30216 {
30217 case DiscardRectangleModeEXT::eInclusive: return "Inclusive";
30218 case DiscardRectangleModeEXT::eExclusive: return "Exclusive";
30219 default: return "invalid";
30220 }
30221 }
30222
30223 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlagBits value)
30224 {
30225 switch (value)
30226 {
30227 case SubpassDescriptionFlagBits::ePerViewAttributesNVX: return "PerViewAttributesNVX";
30228 case SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX: return "PerViewPositionXOnlyNVX";
30229 default: return "invalid";
30230 }
30231 }
30232
30233 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlags value)
30234 {
30235 if (!value) return "{}";
30236 std::string result;
30237 if (value & SubpassDescriptionFlagBits::ePerViewAttributesNVX) result += "PerViewAttributesNVX | ";
30238 if (value & SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX) result += "PerViewPositionXOnlyNVX | ";
30239 return "{" + result.substr(0, result.size() - 3) + "}";
30240 }
30241
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030242} // namespace vk
30243
30244#endif