blob: fdd4f72b1440e10c56de08d7a38e6dd7346f620f [file] [log] [blame]
Mark Young39389872017-01-19 21:10:49 -07001// Copyright (c) 2015-2017 The Khronos Group Inc.
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002//
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06003// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006//
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06007// http://www.apache.org/licenses/LICENSE-2.0
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008//
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06009// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014
15// This header is generated from the Khronos Vulkan XML API Registry.
16
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017#ifndef VULKAN_HPP
18#define VULKAN_HPP
19
20#include <algorithm>
21#include <array>
22#include <cassert>
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070023#include <cstddef>
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024#include <cstdint>
25#include <cstring>
26#include <initializer_list>
27#include <string>
28#include <system_error>
Mark Lobodzinski2d589822016-12-12 09:44:34 -070029#include <tuple>
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030#include <type_traits>
31#include <vulkan/vulkan.h>
32#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
33# include <memory>
34# include <vector>
35#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski417d5702017-11-27 12:00:45 -070036static_assert( VK_HEADER_VERSION == 66 , "Wrong VK_HEADER_VERSION!" );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060037
38// 32-bit vulkan is not typesafe for handles, so don't allow copy constructors on this platform by default.
39// To enable this feature on 32-bit platforms please define VULKAN_HPP_TYPESAFE_CONVERSION
Endre Oma5d2c7ec2016-09-01 17:56:41 +020040#if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
Mark Lobodzinski36c33862017-02-13 10:15:53 -070041# if !defined( VULKAN_HPP_TYPESAFE_CONVERSION )
42# define VULKAN_HPP_TYPESAFE_CONVERSION
43# endif
Lenny Komowbed9b5c2016-08-11 11:23:15 -060044#endif
45
46#if !defined(VULKAN_HPP_HAS_UNRESTRICTED_UNIONS)
47# if defined(__clang__)
48# if __has_feature(cxx_unrestricted_unions)
49# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
50# endif
51# elif defined(__GNUC__)
Lenny Komow6501c122016-08-31 15:03:49 -060052# define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060053# if 40600 <= GCC_VERSION
54# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
55# endif
56# elif defined(_MSC_VER)
57# if 1900 <= _MSC_VER
58# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
59# endif
60# endif
61#endif
62
Mark Lobodzinski2d589822016-12-12 09:44:34 -070063#if !defined(VULKAN_HPP_INLINE)
64# if defined(__clang___)
65# if __has_attribute(always_inline)
66# define VULKAN_HPP_INLINE __attribute__((always_inline)) __inline__
67# else
68# define VULKAN_HPP_INLINE inline
69# endif
70# elif defined(__GNUC__)
71# define VULKAN_HPP_INLINE __attribute__((always_inline)) __inline__
72# elif defined(_MSC_VER)
73# define VULKAN_HPP_INLINE __forceinline
74# else
75# define VULKAN_HPP_INLINE inline
76# endif
77#endif
78
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070079#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
80# define VULKAN_HPP_TYPESAFE_EXPLICIT
81#else
82# define VULKAN_HPP_TYPESAFE_EXPLICIT explicit
83#endif
84
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060085
86#if !defined(VULKAN_HPP_NAMESPACE)
87#define VULKAN_HPP_NAMESPACE vk
88#endif
89
90namespace VULKAN_HPP_NAMESPACE
Lenny Komowbed9b5c2016-08-11 11:23:15 -060091{
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060092
Mark Lobodzinski2d589822016-12-12 09:44:34 -070093 template <typename FlagBitsType> struct FlagTraits
94 {
95 enum { allFlags = 0 };
96 };
97
Lenny Komowbed9b5c2016-08-11 11:23:15 -060098 template <typename BitType, typename MaskType = VkFlags>
99 class Flags
100 {
101 public:
102 Flags()
103 : m_mask(0)
104 {
105 }
106
107 Flags(BitType bit)
108 : m_mask(static_cast<MaskType>(bit))
109 {
110 }
111
112 Flags(Flags<BitType> const& rhs)
113 : m_mask(rhs.m_mask)
114 {
115 }
116
117 Flags<BitType> & operator=(Flags<BitType> const& rhs)
118 {
119 m_mask = rhs.m_mask;
120 return *this;
121 }
122
123 Flags<BitType> & operator|=(Flags<BitType> const& rhs)
124 {
125 m_mask |= rhs.m_mask;
126 return *this;
127 }
128
129 Flags<BitType> & operator&=(Flags<BitType> const& rhs)
130 {
131 m_mask &= rhs.m_mask;
132 return *this;
133 }
134
135 Flags<BitType> & operator^=(Flags<BitType> const& rhs)
136 {
137 m_mask ^= rhs.m_mask;
138 return *this;
139 }
140
141 Flags<BitType> operator|(Flags<BitType> const& rhs) const
142 {
143 Flags<BitType> result(*this);
144 result |= rhs;
145 return result;
146 }
147
148 Flags<BitType> operator&(Flags<BitType> const& rhs) const
149 {
150 Flags<BitType> result(*this);
151 result &= rhs;
152 return result;
153 }
154
155 Flags<BitType> operator^(Flags<BitType> const& rhs) const
156 {
157 Flags<BitType> result(*this);
158 result ^= rhs;
159 return result;
160 }
161
162 bool operator!() const
163 {
164 return !m_mask;
165 }
166
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700167 Flags<BitType> operator~() const
168 {
169 Flags<BitType> result(*this);
170 result.m_mask ^= FlagTraits<BitType>::allFlags;
171 return result;
172 }
173
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600174 bool operator==(Flags<BitType> const& rhs) const
175 {
176 return m_mask == rhs.m_mask;
177 }
178
179 bool operator!=(Flags<BitType> const& rhs) const
180 {
181 return m_mask != rhs.m_mask;
182 }
183
184 explicit operator bool() const
185 {
186 return !!m_mask;
187 }
188
189 explicit operator MaskType() const
190 {
191 return m_mask;
192 }
193
194 private:
195 MaskType m_mask;
196 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600197
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600198 template <typename BitType>
199 Flags<BitType> operator|(BitType bit, Flags<BitType> const& flags)
200 {
201 return flags | bit;
202 }
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600203
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600204 template <typename BitType>
205 Flags<BitType> operator&(BitType bit, Flags<BitType> const& flags)
206 {
207 return flags & bit;
208 }
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600209
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600210 template <typename BitType>
211 Flags<BitType> operator^(BitType bit, Flags<BitType> const& flags)
212 {
213 return flags ^ bit;
214 }
215
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700216
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600217 template <typename RefType>
218 class Optional
219 {
220 public:
221 Optional(RefType & reference) { m_ptr = &reference; }
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700222 Optional(RefType * ptr) { m_ptr = ptr; }
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600223 Optional(std::nullptr_t) { m_ptr = nullptr; }
224
225 operator RefType*() const { return m_ptr; }
226 RefType const* operator->() const { return m_ptr; }
227 explicit operator bool() const { return !!m_ptr; }
228
229 private:
230 RefType *m_ptr;
231 };
232
233#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
234 template <typename T>
235 class ArrayProxy
236 {
237 public:
238 ArrayProxy(std::nullptr_t)
239 : m_count(0)
240 , m_ptr(nullptr)
241 {}
242
243 ArrayProxy(T & ptr)
244 : m_count(1)
245 , m_ptr(&ptr)
246 {}
247
248 ArrayProxy(uint32_t count, T * ptr)
249 : m_count(count)
250 , m_ptr(ptr)
251 {}
252
253 template <size_t N>
254 ArrayProxy(std::array<typename std::remove_const<T>::type, N> & data)
255 : m_count(N)
256 , m_ptr(data.data())
257 {}
258
259 template <size_t N>
260 ArrayProxy(std::array<typename std::remove_const<T>::type, N> const& data)
261 : m_count(N)
262 , m_ptr(data.data())
263 {}
264
265 template <class Allocator = std::allocator<typename std::remove_const<T>::type>>
266 ArrayProxy(std::vector<typename std::remove_const<T>::type, Allocator> & data)
267 : m_count(static_cast<uint32_t>(data.size()))
268 , m_ptr(data.data())
269 {}
270
271 template <class Allocator = std::allocator<typename std::remove_const<T>::type>>
272 ArrayProxy(std::vector<typename std::remove_const<T>::type, Allocator> const& data)
273 : m_count(static_cast<uint32_t>(data.size()))
274 , m_ptr(data.data())
275 {}
276
277 ArrayProxy(std::initializer_list<T> const& data)
278 : m_count(static_cast<uint32_t>(data.end() - data.begin()))
279 , m_ptr(data.begin())
280 {}
281
282 const T * begin() const
283 {
284 return m_ptr;
285 }
286
287 const T * end() const
288 {
289 return m_ptr + m_count;
290 }
291
292 const T & front() const
293 {
294 assert(m_count && m_ptr);
295 return *m_ptr;
296 }
297
298 const T & back() const
299 {
300 assert(m_count && m_ptr);
301 return *(m_ptr + m_count - 1);
302 }
303
304 bool empty() const
305 {
306 return (m_count == 0);
307 }
308
309 uint32_t size() const
310 {
311 return m_count;
312 }
313
314 T * data() const
315 {
316 return m_ptr;
317 }
318
319 private:
320 uint32_t m_count;
321 T * m_ptr;
322 };
323#endif
324
Mark Lobodzinski36c33862017-02-13 10:15:53 -0700325#ifndef VULKAN_HPP_NO_SMART_HANDLE
326 template <typename Type, typename Deleter>
327 class UniqueHandle
328 {
329 public:
330 explicit UniqueHandle( Type const& value = Type(), Deleter const& deleter = Deleter() )
331 : m_value( value )
332 , m_deleter( deleter )
333 {}
334
335 UniqueHandle( UniqueHandle const& ) = delete;
336
337 UniqueHandle( UniqueHandle && other )
338 : m_value( other.release() )
339 , m_deleter( std::move( other.m_deleter ) )
340 {}
341
342 ~UniqueHandle()
343 {
344 destroy();
345 }
346
347 UniqueHandle & operator=( UniqueHandle const& ) = delete;
348
349 UniqueHandle & operator=( UniqueHandle && other )
350 {
351 reset( other.release() );
352 m_deleter = std::move( other.m_deleter );
353 return *this;
354 }
355
356 explicit operator bool() const
357 {
358 return m_value.operator bool();
359 }
360
361 Type const* operator->() const
362 {
363 return &m_value;
364 }
365
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -0600366 Type * operator->()
367 {
368 return &m_value;
369 }
370
Mark Lobodzinski36c33862017-02-13 10:15:53 -0700371 Type const& operator*() const
372 {
373 return m_value;
374 }
375
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -0600376 Type & operator*()
377 {
378 return m_value;
379 }
380
381 const Type & get() const
382 {
383 return m_value;
384 }
385
386 Type & get()
Mark Lobodzinski36c33862017-02-13 10:15:53 -0700387 {
388 return m_value;
389 }
390
391 Deleter & getDeleter()
392 {
393 return m_deleter;
394 }
395
396 Deleter const& getDeleter() const
397 {
398 return m_deleter;
399 }
400
401 void reset( Type const& value = Type() )
402 {
403 if ( m_value != value )
404 {
405 destroy();
406 m_value = value;
407 }
408 }
409
410 Type release()
411 {
412 Type value = m_value;
413 m_value = nullptr;
414 return value;
415 }
416
417 void swap( UniqueHandle<Type, Deleter> & rhs )
418 {
419 std::swap(m_value, rhs.m_value);
420 std::swap(m_deleter, rhs.m_deleter);
421 }
422
423 private:
424 void destroy()
425 {
426 if ( m_value )
427 {
428 m_deleter( m_value );
429 }
430 }
431
432 private:
433 Type m_value;
434 Deleter m_deleter;
435 };
436
437 template <typename Type, typename Deleter>
438 VULKAN_HPP_INLINE void swap( UniqueHandle<Type,Deleter> & lhs, UniqueHandle<Type,Deleter> & rhs )
439 {
440 lhs.swap( rhs );
441 }
442#endif
443
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -0600444
Mark Lobodzinski417d5702017-11-27 12:00:45 -0700445 template <typename X, typename Y> struct isStructureChainValid { enum { value = false }; };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -0600446
447 template <class Element>
448 class StructureChainElement
449 {
450 public:
451 explicit operator Element&() { return value; }
452 explicit operator const Element&() const { return value; }
453 private:
454 Element value;
455 };
456
457 template<typename ...StructureElements>
458 class StructureChain : private StructureChainElement<StructureElements>...
459 {
460 public:
461 StructureChain()
462 {
463 link<StructureElements...>();
464 }
465
466 StructureChain(StructureChain const &rhs)
467 {
468 linkAndCopy<StructureElements...>(rhs);
469 }
470
471 StructureChain& operator=(StructureChain const &rhs)
472 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -0600473 linkAndCopy<StructureElements...>(rhs);
474 return *this;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -0600475 }
476
477 template<typename ClassType> ClassType& get() { return static_cast<ClassType&>(*this);}
478
479 private:
480 template<typename X>
481 void link()
482 {
483 }
484
485 template<typename X, typename Y, typename ...Z>
486 void link()
487 {
Mark Lobodzinski417d5702017-11-27 12:00:45 -0700488 static_assert(isStructureChainValid<X,Y>::value, "The structure chain is not valid!");
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -0600489 X& x = static_cast<X&>(*this);
490 Y& y = static_cast<Y&>(*this);
491 x.pNext = &y;
492 link<Y, Z...>();
493 }
494
495 template<typename X>
496 void linkAndCopy(StructureChain const &rhs)
497 {
498 static_cast<X&>(*this) = static_cast<X const &>(rhs);
499 }
500
501 template<typename X, typename Y, typename ...Z>
502 void linkAndCopy(StructureChain const &rhs)
503 {
Mark Lobodzinski417d5702017-11-27 12:00:45 -0700504 static_assert(isStructureChainValid<X,Y>::value, "The structure chain is not valid!");
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -0600505 X& x = static_cast<X&>(*this);
506 Y& y = static_cast<Y&>(*this);
507 x = static_cast<X const &>(rhs);
508 x.pNext = &y;
509 linkAndCopy<Y, Z...>(rhs);
510 }
511
512};
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600513 enum class Result
514 {
515 eSuccess = VK_SUCCESS,
516 eNotReady = VK_NOT_READY,
517 eTimeout = VK_TIMEOUT,
518 eEventSet = VK_EVENT_SET,
519 eEventReset = VK_EVENT_RESET,
520 eIncomplete = VK_INCOMPLETE,
521 eErrorOutOfHostMemory = VK_ERROR_OUT_OF_HOST_MEMORY,
522 eErrorOutOfDeviceMemory = VK_ERROR_OUT_OF_DEVICE_MEMORY,
523 eErrorInitializationFailed = VK_ERROR_INITIALIZATION_FAILED,
524 eErrorDeviceLost = VK_ERROR_DEVICE_LOST,
525 eErrorMemoryMapFailed = VK_ERROR_MEMORY_MAP_FAILED,
526 eErrorLayerNotPresent = VK_ERROR_LAYER_NOT_PRESENT,
527 eErrorExtensionNotPresent = VK_ERROR_EXTENSION_NOT_PRESENT,
528 eErrorFeatureNotPresent = VK_ERROR_FEATURE_NOT_PRESENT,
529 eErrorIncompatibleDriver = VK_ERROR_INCOMPATIBLE_DRIVER,
530 eErrorTooManyObjects = VK_ERROR_TOO_MANY_OBJECTS,
531 eErrorFormatNotSupported = VK_ERROR_FORMAT_NOT_SUPPORTED,
Lenny Komowebf33162016-08-26 14:10:08 -0600532 eErrorFragmentedPool = VK_ERROR_FRAGMENTED_POOL,
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600533 eErrorSurfaceLostKHR = VK_ERROR_SURFACE_LOST_KHR,
534 eErrorNativeWindowInUseKHR = VK_ERROR_NATIVE_WINDOW_IN_USE_KHR,
535 eSuboptimalKHR = VK_SUBOPTIMAL_KHR,
536 eErrorOutOfDateKHR = VK_ERROR_OUT_OF_DATE_KHR,
537 eErrorIncompatibleDisplayKHR = VK_ERROR_INCOMPATIBLE_DISPLAY_KHR,
538 eErrorValidationFailedEXT = VK_ERROR_VALIDATION_FAILED_EXT,
Mark Young39389872017-01-19 21:10:49 -0700539 eErrorInvalidShaderNV = VK_ERROR_INVALID_SHADER_NV,
Mark Young0f183a82017-02-28 09:58:04 -0700540 eErrorOutOfPoolMemoryKHR = VK_ERROR_OUT_OF_POOL_MEMORY_KHR,
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -0600541 eErrorInvalidExternalHandleKHR = VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR,
542 eErrorNotPermittedEXT = VK_ERROR_NOT_PERMITTED_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600543 };
544
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700545 VULKAN_HPP_INLINE std::string to_string(Result value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600546 {
547 switch (value)
548 {
549 case Result::eSuccess: return "Success";
550 case Result::eNotReady: return "NotReady";
551 case Result::eTimeout: return "Timeout";
552 case Result::eEventSet: return "EventSet";
553 case Result::eEventReset: return "EventReset";
554 case Result::eIncomplete: return "Incomplete";
555 case Result::eErrorOutOfHostMemory: return "ErrorOutOfHostMemory";
556 case Result::eErrorOutOfDeviceMemory: return "ErrorOutOfDeviceMemory";
557 case Result::eErrorInitializationFailed: return "ErrorInitializationFailed";
558 case Result::eErrorDeviceLost: return "ErrorDeviceLost";
559 case Result::eErrorMemoryMapFailed: return "ErrorMemoryMapFailed";
560 case Result::eErrorLayerNotPresent: return "ErrorLayerNotPresent";
561 case Result::eErrorExtensionNotPresent: return "ErrorExtensionNotPresent";
562 case Result::eErrorFeatureNotPresent: return "ErrorFeatureNotPresent";
563 case Result::eErrorIncompatibleDriver: return "ErrorIncompatibleDriver";
564 case Result::eErrorTooManyObjects: return "ErrorTooManyObjects";
565 case Result::eErrorFormatNotSupported: return "ErrorFormatNotSupported";
Lenny Komowebf33162016-08-26 14:10:08 -0600566 case Result::eErrorFragmentedPool: return "ErrorFragmentedPool";
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600567 case Result::eErrorSurfaceLostKHR: return "ErrorSurfaceLostKHR";
568 case Result::eErrorNativeWindowInUseKHR: return "ErrorNativeWindowInUseKHR";
569 case Result::eSuboptimalKHR: return "SuboptimalKHR";
570 case Result::eErrorOutOfDateKHR: return "ErrorOutOfDateKHR";
571 case Result::eErrorIncompatibleDisplayKHR: return "ErrorIncompatibleDisplayKHR";
572 case Result::eErrorValidationFailedEXT: return "ErrorValidationFailedEXT";
573 case Result::eErrorInvalidShaderNV: return "ErrorInvalidShaderNV";
Mark Young39389872017-01-19 21:10:49 -0700574 case Result::eErrorOutOfPoolMemoryKHR: return "ErrorOutOfPoolMemoryKHR";
Mark Youngabc2d6e2017-07-07 07:59:56 -0600575 case Result::eErrorInvalidExternalHandleKHR: return "ErrorInvalidExternalHandleKHR";
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -0600576 case Result::eErrorNotPermittedEXT: return "ErrorNotPermittedEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600577 default: return "invalid";
578 }
579 }
580
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -0600581#ifndef VULKAN_HPP_NO_EXCEPTIONS
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600582#if defined(_MSC_VER) && (_MSC_VER == 1800)
583# define noexcept _NOEXCEPT
584#endif
585
586 class ErrorCategoryImpl : public std::error_category
587 {
588 public:
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -0600589 virtual const char* name() const noexcept override { return "VULKAN_HPP_NAMESPACE::Result"; }
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600590 virtual std::string message(int ev) const override { return to_string(static_cast<Result>(ev)); }
591 };
592
593#if defined(_MSC_VER) && (_MSC_VER == 1800)
594# undef noexcept
595#endif
596
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700597 VULKAN_HPP_INLINE const std::error_category& errorCategory()
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600598 {
599 static ErrorCategoryImpl instance;
600 return instance;
601 }
602
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700603 VULKAN_HPP_INLINE std::error_code make_error_code(Result e)
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600604 {
605 return std::error_code(static_cast<int>(e), errorCategory());
606 }
607
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700608 VULKAN_HPP_INLINE std::error_condition make_error_condition(Result e)
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600609 {
610 return std::error_condition(static_cast<int>(e), errorCategory());
611 }
612
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600613#if defined(_MSC_VER) && (_MSC_VER == 1800)
614# define noexcept _NOEXCEPT
615#endif
616
617 class Error
618 {
619 public:
620 virtual ~Error() = default;
621
622 virtual const char* what() const noexcept = 0;
623 };
624
625 class LogicError : public Error, public std::logic_error
626 {
627 public:
628 explicit LogicError( const std::string& what )
629 : Error(), std::logic_error(what) {}
630 explicit LogicError( char const * what )
631 : Error(), std::logic_error(what) {}
632 virtual ~LogicError() = default;
633
634 virtual const char* what() const noexcept { return std::logic_error::what(); }
635 };
636
637 class SystemError : public Error, public std::system_error
638 {
639 public:
640 SystemError( std::error_code ec )
641 : Error(), std::system_error(ec) {}
642 SystemError( std::error_code ec, std::string const& what )
643 : Error(), std::system_error(ec, what) {}
644 SystemError( std::error_code ec, char const * what )
645 : Error(), std::system_error(ec, what) {}
646 SystemError( int ev, std::error_category const& ecat )
647 : Error(), std::system_error(ev, ecat) {}
648 SystemError( int ev, std::error_category const& ecat, std::string const& what)
649 : Error(), std::system_error(ev, ecat, what) {}
650 SystemError( int ev, std::error_category const& ecat, char const * what)
651 : Error(), std::system_error(ev, ecat, what) {}
652 virtual ~SystemError() = default;
653
654 virtual const char* what() const noexcept { return std::system_error::what(); }
655 };
656
657#if defined(_MSC_VER) && (_MSC_VER == 1800)
658# undef noexcept
659#endif
660
661 class OutOfHostMemoryError : public SystemError
662 {
663 public:
664 OutOfHostMemoryError( std::string const& message )
665 : SystemError( make_error_code( Result::eErrorOutOfHostMemory ), message ) {}
666 OutOfHostMemoryError( char const * message )
667 : SystemError( make_error_code( Result::eErrorOutOfHostMemory ), message ) {}
668 };
669 class OutOfDeviceMemoryError : public SystemError
670 {
671 public:
672 OutOfDeviceMemoryError( std::string const& message )
673 : SystemError( make_error_code( Result::eErrorOutOfDeviceMemory ), message ) {}
674 OutOfDeviceMemoryError( char const * message )
675 : SystemError( make_error_code( Result::eErrorOutOfDeviceMemory ), message ) {}
676 };
677 class InitializationFailedError : public SystemError
678 {
679 public:
680 InitializationFailedError( std::string const& message )
681 : SystemError( make_error_code( Result::eErrorInitializationFailed ), message ) {}
682 InitializationFailedError( char const * message )
683 : SystemError( make_error_code( Result::eErrorInitializationFailed ), message ) {}
684 };
685 class DeviceLostError : public SystemError
686 {
687 public:
688 DeviceLostError( std::string const& message )
689 : SystemError( make_error_code( Result::eErrorDeviceLost ), message ) {}
690 DeviceLostError( char const * message )
691 : SystemError( make_error_code( Result::eErrorDeviceLost ), message ) {}
692 };
693 class MemoryMapFailedError : public SystemError
694 {
695 public:
696 MemoryMapFailedError( std::string const& message )
697 : SystemError( make_error_code( Result::eErrorMemoryMapFailed ), message ) {}
698 MemoryMapFailedError( char const * message )
699 : SystemError( make_error_code( Result::eErrorMemoryMapFailed ), message ) {}
700 };
701 class LayerNotPresentError : public SystemError
702 {
703 public:
704 LayerNotPresentError( std::string const& message )
705 : SystemError( make_error_code( Result::eErrorLayerNotPresent ), message ) {}
706 LayerNotPresentError( char const * message )
707 : SystemError( make_error_code( Result::eErrorLayerNotPresent ), message ) {}
708 };
709 class ExtensionNotPresentError : public SystemError
710 {
711 public:
712 ExtensionNotPresentError( std::string const& message )
713 : SystemError( make_error_code( Result::eErrorExtensionNotPresent ), message ) {}
714 ExtensionNotPresentError( char const * message )
715 : SystemError( make_error_code( Result::eErrorExtensionNotPresent ), message ) {}
716 };
717 class FeatureNotPresentError : public SystemError
718 {
719 public:
720 FeatureNotPresentError( std::string const& message )
721 : SystemError( make_error_code( Result::eErrorFeatureNotPresent ), message ) {}
722 FeatureNotPresentError( char const * message )
723 : SystemError( make_error_code( Result::eErrorFeatureNotPresent ), message ) {}
724 };
725 class IncompatibleDriverError : public SystemError
726 {
727 public:
728 IncompatibleDriverError( std::string const& message )
729 : SystemError( make_error_code( Result::eErrorIncompatibleDriver ), message ) {}
730 IncompatibleDriverError( char const * message )
731 : SystemError( make_error_code( Result::eErrorIncompatibleDriver ), message ) {}
732 };
733 class TooManyObjectsError : public SystemError
734 {
735 public:
736 TooManyObjectsError( std::string const& message )
737 : SystemError( make_error_code( Result::eErrorTooManyObjects ), message ) {}
738 TooManyObjectsError( char const * message )
739 : SystemError( make_error_code( Result::eErrorTooManyObjects ), message ) {}
740 };
741 class FormatNotSupportedError : public SystemError
742 {
743 public:
744 FormatNotSupportedError( std::string const& message )
745 : SystemError( make_error_code( Result::eErrorFormatNotSupported ), message ) {}
746 FormatNotSupportedError( char const * message )
747 : SystemError( make_error_code( Result::eErrorFormatNotSupported ), message ) {}
748 };
749 class FragmentedPoolError : public SystemError
750 {
751 public:
752 FragmentedPoolError( std::string const& message )
753 : SystemError( make_error_code( Result::eErrorFragmentedPool ), message ) {}
754 FragmentedPoolError( char const * message )
755 : SystemError( make_error_code( Result::eErrorFragmentedPool ), message ) {}
756 };
757 class SurfaceLostKHRError : public SystemError
758 {
759 public:
760 SurfaceLostKHRError( std::string const& message )
761 : SystemError( make_error_code( Result::eErrorSurfaceLostKHR ), message ) {}
762 SurfaceLostKHRError( char const * message )
763 : SystemError( make_error_code( Result::eErrorSurfaceLostKHR ), message ) {}
764 };
765 class NativeWindowInUseKHRError : public SystemError
766 {
767 public:
768 NativeWindowInUseKHRError( std::string const& message )
769 : SystemError( make_error_code( Result::eErrorNativeWindowInUseKHR ), message ) {}
770 NativeWindowInUseKHRError( char const * message )
771 : SystemError( make_error_code( Result::eErrorNativeWindowInUseKHR ), message ) {}
772 };
773 class OutOfDateKHRError : public SystemError
774 {
775 public:
776 OutOfDateKHRError( std::string const& message )
777 : SystemError( make_error_code( Result::eErrorOutOfDateKHR ), message ) {}
778 OutOfDateKHRError( char const * message )
779 : SystemError( make_error_code( Result::eErrorOutOfDateKHR ), message ) {}
780 };
781 class IncompatibleDisplayKHRError : public SystemError
782 {
783 public:
784 IncompatibleDisplayKHRError( std::string const& message )
785 : SystemError( make_error_code( Result::eErrorIncompatibleDisplayKHR ), message ) {}
786 IncompatibleDisplayKHRError( char const * message )
787 : SystemError( make_error_code( Result::eErrorIncompatibleDisplayKHR ), message ) {}
788 };
789 class ValidationFailedEXTError : public SystemError
790 {
791 public:
792 ValidationFailedEXTError( std::string const& message )
793 : SystemError( make_error_code( Result::eErrorValidationFailedEXT ), message ) {}
794 ValidationFailedEXTError( char const * message )
795 : SystemError( make_error_code( Result::eErrorValidationFailedEXT ), message ) {}
796 };
797 class InvalidShaderNVError : public SystemError
798 {
799 public:
800 InvalidShaderNVError( std::string const& message )
801 : SystemError( make_error_code( Result::eErrorInvalidShaderNV ), message ) {}
802 InvalidShaderNVError( char const * message )
803 : SystemError( make_error_code( Result::eErrorInvalidShaderNV ), message ) {}
804 };
805 class OutOfPoolMemoryKHRError : public SystemError
806 {
807 public:
808 OutOfPoolMemoryKHRError( std::string const& message )
809 : SystemError( make_error_code( Result::eErrorOutOfPoolMemoryKHR ), message ) {}
810 OutOfPoolMemoryKHRError( char const * message )
811 : SystemError( make_error_code( Result::eErrorOutOfPoolMemoryKHR ), message ) {}
812 };
Mark Youngabc2d6e2017-07-07 07:59:56 -0600813 class InvalidExternalHandleKHRError : public SystemError
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600814 {
815 public:
Mark Youngabc2d6e2017-07-07 07:59:56 -0600816 InvalidExternalHandleKHRError( std::string const& message )
817 : SystemError( make_error_code( Result::eErrorInvalidExternalHandleKHR ), message ) {}
818 InvalidExternalHandleKHRError( char const * message )
819 : SystemError( make_error_code( Result::eErrorInvalidExternalHandleKHR ), message ) {}
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600820 };
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -0600821 class NotPermittedEXTError : public SystemError
822 {
823 public:
824 NotPermittedEXTError( std::string const& message )
825 : SystemError( make_error_code( Result::eErrorNotPermittedEXT ), message ) {}
826 NotPermittedEXTError( char const * message )
827 : SystemError( make_error_code( Result::eErrorNotPermittedEXT ), message ) {}
828 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600829
830 VULKAN_HPP_INLINE void throwResultException( Result result, char const * message )
831 {
832 assert ( static_cast<long long int>(result) < 0 );
833 switch ( result )
834 {
835 case Result::eErrorOutOfHostMemory: throw OutOfHostMemoryError ( message );
836 case Result::eErrorOutOfDeviceMemory: throw OutOfDeviceMemoryError ( message );
837 case Result::eErrorInitializationFailed: throw InitializationFailedError ( message );
838 case Result::eErrorDeviceLost: throw DeviceLostError ( message );
839 case Result::eErrorMemoryMapFailed: throw MemoryMapFailedError ( message );
840 case Result::eErrorLayerNotPresent: throw LayerNotPresentError ( message );
841 case Result::eErrorExtensionNotPresent: throw ExtensionNotPresentError ( message );
842 case Result::eErrorFeatureNotPresent: throw FeatureNotPresentError ( message );
843 case Result::eErrorIncompatibleDriver: throw IncompatibleDriverError ( message );
844 case Result::eErrorTooManyObjects: throw TooManyObjectsError ( message );
845 case Result::eErrorFormatNotSupported: throw FormatNotSupportedError ( message );
846 case Result::eErrorFragmentedPool: throw FragmentedPoolError ( message );
847 case Result::eErrorSurfaceLostKHR: throw SurfaceLostKHRError ( message );
848 case Result::eErrorNativeWindowInUseKHR: throw NativeWindowInUseKHRError ( message );
849 case Result::eErrorOutOfDateKHR: throw OutOfDateKHRError ( message );
850 case Result::eErrorIncompatibleDisplayKHR: throw IncompatibleDisplayKHRError ( message );
851 case Result::eErrorValidationFailedEXT: throw ValidationFailedEXTError ( message );
852 case Result::eErrorInvalidShaderNV: throw InvalidShaderNVError ( message );
853 case Result::eErrorOutOfPoolMemoryKHR: throw OutOfPoolMemoryKHRError ( message );
Mark Youngabc2d6e2017-07-07 07:59:56 -0600854 case Result::eErrorInvalidExternalHandleKHR: throw InvalidExternalHandleKHRError ( message );
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -0600855 case Result::eErrorNotPermittedEXT: throw NotPermittedEXTError ( message );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600856 default: throw SystemError( make_error_code( result ) );
857 }
858 }
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -0600859#endif
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -0600860} // namespace VULKAN_HPP_NAMESPACE
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600861
862namespace std
863{
864 template <>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -0600865 struct is_error_code_enum<VULKAN_HPP_NAMESPACE::Result> : public true_type
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600866 {};
867}
868
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -0600869namespace VULKAN_HPP_NAMESPACE
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600870{
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600871
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600872 template <typename T>
873 struct ResultValue
874 {
875 ResultValue( Result r, T & v )
876 : result( r )
877 , value( v )
878 {}
879
880 Result result;
881 T value;
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700882
883 operator std::tuple<Result&, T&>() { return std::tuple<Result&, T&>(result, value); }
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600884 };
885
886 template <typename T>
887 struct ResultValueType
888 {
889#ifdef VULKAN_HPP_NO_EXCEPTIONS
890 typedef ResultValue<T> type;
891#else
892 typedef T type;
893#endif
894 };
895
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600896 template <>
897 struct ResultValueType<void>
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600898 {
899#ifdef VULKAN_HPP_NO_EXCEPTIONS
900 typedef Result type;
901#else
902 typedef void type;
903#endif
904 };
905
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700906 VULKAN_HPP_INLINE ResultValueType<void>::type createResultValue( Result result, char const * message )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600907 {
908#ifdef VULKAN_HPP_NO_EXCEPTIONS
909 assert( result == Result::eSuccess );
910 return result;
911#else
912 if ( result != Result::eSuccess )
913 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600914 throwResultException( result, message );
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600915 }
916#endif
917 }
918
919 template <typename T>
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700920 VULKAN_HPP_INLINE typename ResultValueType<T>::type createResultValue( Result result, T & data, char const * message )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600921 {
922#ifdef VULKAN_HPP_NO_EXCEPTIONS
923 assert( result == Result::eSuccess );
924 return ResultValue<T>( result, data );
925#else
926 if ( result != Result::eSuccess )
927 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600928 throwResultException( result, message );
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600929 }
930 return data;
931#endif
932 }
933
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700934 VULKAN_HPP_INLINE Result createResultValue( Result result, char const * message, std::initializer_list<Result> successCodes )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600935 {
936#ifdef VULKAN_HPP_NO_EXCEPTIONS
937 assert( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() );
938#else
939 if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() )
940 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600941 throwResultException( result, message );
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600942 }
943#endif
944 return result;
945 }
946
947 template <typename T>
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700948 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 -0600949 {
950#ifdef VULKAN_HPP_NO_EXCEPTIONS
951 assert( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() );
952#else
953 if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() )
954 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600955 throwResultException( result, message );
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600956 }
957#endif
958 return ResultValue<T>( result, data );
959 }
960
961 using SampleMask = uint32_t;
962
963 using Bool32 = uint32_t;
964
965 using DeviceSize = uint64_t;
966
967 enum class FramebufferCreateFlagBits
968 {
969 };
970
971 using FramebufferCreateFlags = Flags<FramebufferCreateFlagBits, VkFramebufferCreateFlags>;
972
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600973 enum class QueryPoolCreateFlagBits
974 {
975 };
976
977 using QueryPoolCreateFlags = Flags<QueryPoolCreateFlagBits, VkQueryPoolCreateFlags>;
978
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600979 enum class RenderPassCreateFlagBits
980 {
981 };
982
983 using RenderPassCreateFlags = Flags<RenderPassCreateFlagBits, VkRenderPassCreateFlags>;
984
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600985 enum class SamplerCreateFlagBits
986 {
987 };
988
989 using SamplerCreateFlags = Flags<SamplerCreateFlagBits, VkSamplerCreateFlags>;
990
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600991 enum class PipelineLayoutCreateFlagBits
992 {
993 };
994
995 using PipelineLayoutCreateFlags = Flags<PipelineLayoutCreateFlagBits, VkPipelineLayoutCreateFlags>;
996
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600997 enum class PipelineCacheCreateFlagBits
998 {
999 };
1000
1001 using PipelineCacheCreateFlags = Flags<PipelineCacheCreateFlagBits, VkPipelineCacheCreateFlags>;
1002
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001003 enum class PipelineDepthStencilStateCreateFlagBits
1004 {
1005 };
1006
1007 using PipelineDepthStencilStateCreateFlags = Flags<PipelineDepthStencilStateCreateFlagBits, VkPipelineDepthStencilStateCreateFlags>;
1008
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001009 enum class PipelineDynamicStateCreateFlagBits
1010 {
1011 };
1012
1013 using PipelineDynamicStateCreateFlags = Flags<PipelineDynamicStateCreateFlagBits, VkPipelineDynamicStateCreateFlags>;
1014
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001015 enum class PipelineColorBlendStateCreateFlagBits
1016 {
1017 };
1018
1019 using PipelineColorBlendStateCreateFlags = Flags<PipelineColorBlendStateCreateFlagBits, VkPipelineColorBlendStateCreateFlags>;
1020
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001021 enum class PipelineMultisampleStateCreateFlagBits
1022 {
1023 };
1024
1025 using PipelineMultisampleStateCreateFlags = Flags<PipelineMultisampleStateCreateFlagBits, VkPipelineMultisampleStateCreateFlags>;
1026
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001027 enum class PipelineRasterizationStateCreateFlagBits
1028 {
1029 };
1030
1031 using PipelineRasterizationStateCreateFlags = Flags<PipelineRasterizationStateCreateFlagBits, VkPipelineRasterizationStateCreateFlags>;
1032
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001033 enum class PipelineViewportStateCreateFlagBits
1034 {
1035 };
1036
1037 using PipelineViewportStateCreateFlags = Flags<PipelineViewportStateCreateFlagBits, VkPipelineViewportStateCreateFlags>;
1038
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001039 enum class PipelineTessellationStateCreateFlagBits
1040 {
1041 };
1042
1043 using PipelineTessellationStateCreateFlags = Flags<PipelineTessellationStateCreateFlagBits, VkPipelineTessellationStateCreateFlags>;
1044
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001045 enum class PipelineInputAssemblyStateCreateFlagBits
1046 {
1047 };
1048
1049 using PipelineInputAssemblyStateCreateFlags = Flags<PipelineInputAssemblyStateCreateFlagBits, VkPipelineInputAssemblyStateCreateFlags>;
1050
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001051 enum class PipelineVertexInputStateCreateFlagBits
1052 {
1053 };
1054
1055 using PipelineVertexInputStateCreateFlags = Flags<PipelineVertexInputStateCreateFlagBits, VkPipelineVertexInputStateCreateFlags>;
1056
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001057 enum class PipelineShaderStageCreateFlagBits
1058 {
1059 };
1060
1061 using PipelineShaderStageCreateFlags = Flags<PipelineShaderStageCreateFlagBits, VkPipelineShaderStageCreateFlags>;
1062
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001063 enum class BufferViewCreateFlagBits
1064 {
1065 };
1066
1067 using BufferViewCreateFlags = Flags<BufferViewCreateFlagBits, VkBufferViewCreateFlags>;
1068
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001069 enum class InstanceCreateFlagBits
1070 {
1071 };
1072
1073 using InstanceCreateFlags = Flags<InstanceCreateFlagBits, VkInstanceCreateFlags>;
1074
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001075 enum class DeviceCreateFlagBits
1076 {
1077 };
1078
1079 using DeviceCreateFlags = Flags<DeviceCreateFlagBits, VkDeviceCreateFlags>;
1080
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001081 enum class DeviceQueueCreateFlagBits
1082 {
1083 };
1084
1085 using DeviceQueueCreateFlags = Flags<DeviceQueueCreateFlagBits, VkDeviceQueueCreateFlags>;
1086
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001087 enum class ImageViewCreateFlagBits
1088 {
1089 };
1090
1091 using ImageViewCreateFlags = Flags<ImageViewCreateFlagBits, VkImageViewCreateFlags>;
1092
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001093 enum class SemaphoreCreateFlagBits
1094 {
1095 };
1096
1097 using SemaphoreCreateFlags = Flags<SemaphoreCreateFlagBits, VkSemaphoreCreateFlags>;
1098
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001099 enum class ShaderModuleCreateFlagBits
1100 {
1101 };
1102
1103 using ShaderModuleCreateFlags = Flags<ShaderModuleCreateFlagBits, VkShaderModuleCreateFlags>;
1104
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001105 enum class EventCreateFlagBits
1106 {
1107 };
1108
1109 using EventCreateFlags = Flags<EventCreateFlagBits, VkEventCreateFlags>;
1110
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001111 enum class MemoryMapFlagBits
1112 {
1113 };
1114
1115 using MemoryMapFlags = Flags<MemoryMapFlagBits, VkMemoryMapFlags>;
1116
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001117 enum class DescriptorPoolResetFlagBits
1118 {
1119 };
1120
1121 using DescriptorPoolResetFlags = Flags<DescriptorPoolResetFlagBits, VkDescriptorPoolResetFlags>;
1122
Mark Young0f183a82017-02-28 09:58:04 -07001123 enum class DescriptorUpdateTemplateCreateFlagBitsKHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001124 {
1125 };
1126
Mark Young0f183a82017-02-28 09:58:04 -07001127 using DescriptorUpdateTemplateCreateFlagsKHR = Flags<DescriptorUpdateTemplateCreateFlagBitsKHR, VkDescriptorUpdateTemplateCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001128
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001129 enum class DisplayModeCreateFlagBitsKHR
1130 {
1131 };
1132
1133 using DisplayModeCreateFlagsKHR = Flags<DisplayModeCreateFlagBitsKHR, VkDisplayModeCreateFlagsKHR>;
1134
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001135 enum class DisplaySurfaceCreateFlagBitsKHR
1136 {
1137 };
1138
1139 using DisplaySurfaceCreateFlagsKHR = Flags<DisplaySurfaceCreateFlagBitsKHR, VkDisplaySurfaceCreateFlagsKHR>;
1140
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001141#ifdef VK_USE_PLATFORM_ANDROID_KHR
1142 enum class AndroidSurfaceCreateFlagBitsKHR
1143 {
1144 };
1145#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
1146
1147#ifdef VK_USE_PLATFORM_ANDROID_KHR
1148 using AndroidSurfaceCreateFlagsKHR = Flags<AndroidSurfaceCreateFlagBitsKHR, VkAndroidSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001149#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
1150
1151#ifdef VK_USE_PLATFORM_MIR_KHR
1152 enum class MirSurfaceCreateFlagBitsKHR
1153 {
1154 };
1155#endif /*VK_USE_PLATFORM_MIR_KHR*/
1156
1157#ifdef VK_USE_PLATFORM_MIR_KHR
1158 using MirSurfaceCreateFlagsKHR = Flags<MirSurfaceCreateFlagBitsKHR, VkMirSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001159#endif /*VK_USE_PLATFORM_MIR_KHR*/
1160
Mark Young39389872017-01-19 21:10:49 -07001161#ifdef VK_USE_PLATFORM_VI_NN
1162 enum class ViSurfaceCreateFlagBitsNN
1163 {
1164 };
1165#endif /*VK_USE_PLATFORM_VI_NN*/
1166
1167#ifdef VK_USE_PLATFORM_VI_NN
1168 using ViSurfaceCreateFlagsNN = Flags<ViSurfaceCreateFlagBitsNN, VkViSurfaceCreateFlagsNN>;
Mark Young39389872017-01-19 21:10:49 -07001169#endif /*VK_USE_PLATFORM_VI_NN*/
1170
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001171#ifdef VK_USE_PLATFORM_WAYLAND_KHR
1172 enum class WaylandSurfaceCreateFlagBitsKHR
1173 {
1174 };
1175#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
1176
1177#ifdef VK_USE_PLATFORM_WAYLAND_KHR
1178 using WaylandSurfaceCreateFlagsKHR = Flags<WaylandSurfaceCreateFlagBitsKHR, VkWaylandSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001179#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
1180
1181#ifdef VK_USE_PLATFORM_WIN32_KHR
1182 enum class Win32SurfaceCreateFlagBitsKHR
1183 {
1184 };
1185#endif /*VK_USE_PLATFORM_WIN32_KHR*/
1186
1187#ifdef VK_USE_PLATFORM_WIN32_KHR
1188 using Win32SurfaceCreateFlagsKHR = Flags<Win32SurfaceCreateFlagBitsKHR, VkWin32SurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001189#endif /*VK_USE_PLATFORM_WIN32_KHR*/
1190
1191#ifdef VK_USE_PLATFORM_XLIB_KHR
1192 enum class XlibSurfaceCreateFlagBitsKHR
1193 {
1194 };
1195#endif /*VK_USE_PLATFORM_XLIB_KHR*/
1196
1197#ifdef VK_USE_PLATFORM_XLIB_KHR
1198 using XlibSurfaceCreateFlagsKHR = Flags<XlibSurfaceCreateFlagBitsKHR, VkXlibSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001199#endif /*VK_USE_PLATFORM_XLIB_KHR*/
1200
1201#ifdef VK_USE_PLATFORM_XCB_KHR
1202 enum class XcbSurfaceCreateFlagBitsKHR
1203 {
1204 };
1205#endif /*VK_USE_PLATFORM_XCB_KHR*/
1206
1207#ifdef VK_USE_PLATFORM_XCB_KHR
1208 using XcbSurfaceCreateFlagsKHR = Flags<XcbSurfaceCreateFlagBitsKHR, VkXcbSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001209#endif /*VK_USE_PLATFORM_XCB_KHR*/
1210
Mark Young0f183a82017-02-28 09:58:04 -07001211#ifdef VK_USE_PLATFORM_IOS_MVK
1212 enum class IOSSurfaceCreateFlagBitsMVK
1213 {
1214 };
1215#endif /*VK_USE_PLATFORM_IOS_MVK*/
1216
1217#ifdef VK_USE_PLATFORM_IOS_MVK
1218 using IOSSurfaceCreateFlagsMVK = Flags<IOSSurfaceCreateFlagBitsMVK, VkIOSSurfaceCreateFlagsMVK>;
Mark Young0f183a82017-02-28 09:58:04 -07001219#endif /*VK_USE_PLATFORM_IOS_MVK*/
1220
1221#ifdef VK_USE_PLATFORM_MACOS_MVK
1222 enum class MacOSSurfaceCreateFlagBitsMVK
1223 {
1224 };
1225#endif /*VK_USE_PLATFORM_MACOS_MVK*/
1226
1227#ifdef VK_USE_PLATFORM_MACOS_MVK
1228 using MacOSSurfaceCreateFlagsMVK = Flags<MacOSSurfaceCreateFlagBitsMVK, VkMacOSSurfaceCreateFlagsMVK>;
Mark Young0f183a82017-02-28 09:58:04 -07001229#endif /*VK_USE_PLATFORM_MACOS_MVK*/
1230
Mark Young39389872017-01-19 21:10:49 -07001231 enum class CommandPoolTrimFlagBitsKHR
1232 {
1233 };
1234
1235 using CommandPoolTrimFlagsKHR = Flags<CommandPoolTrimFlagBitsKHR, VkCommandPoolTrimFlagsKHR>;
1236
Mark Young0f183a82017-02-28 09:58:04 -07001237 enum class PipelineViewportSwizzleStateCreateFlagBitsNV
1238 {
1239 };
1240
1241 using PipelineViewportSwizzleStateCreateFlagsNV = Flags<PipelineViewportSwizzleStateCreateFlagBitsNV, VkPipelineViewportSwizzleStateCreateFlagsNV>;
1242
Mark Young0f183a82017-02-28 09:58:04 -07001243 enum class PipelineDiscardRectangleStateCreateFlagBitsEXT
1244 {
1245 };
1246
1247 using PipelineDiscardRectangleStateCreateFlagsEXT = Flags<PipelineDiscardRectangleStateCreateFlagBitsEXT, VkPipelineDiscardRectangleStateCreateFlagsEXT>;
1248
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06001249 enum class PipelineCoverageToColorStateCreateFlagBitsNV
1250 {
1251 };
1252
1253 using PipelineCoverageToColorStateCreateFlagsNV = Flags<PipelineCoverageToColorStateCreateFlagBitsNV, VkPipelineCoverageToColorStateCreateFlagsNV>;
1254
1255 enum class PipelineCoverageModulationStateCreateFlagBitsNV
1256 {
1257 };
1258
1259 using PipelineCoverageModulationStateCreateFlagsNV = Flags<PipelineCoverageModulationStateCreateFlagBitsNV, VkPipelineCoverageModulationStateCreateFlagsNV>;
1260
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06001261 enum class ValidationCacheCreateFlagBitsEXT
1262 {
1263 };
1264
1265 using ValidationCacheCreateFlagsEXT = Flags<ValidationCacheCreateFlagBitsEXT, VkValidationCacheCreateFlagsEXT>;
1266
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001267 class DeviceMemory
1268 {
1269 public:
1270 DeviceMemory()
1271 : m_deviceMemory(VK_NULL_HANDLE)
1272 {}
1273
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001274 DeviceMemory( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001275 : m_deviceMemory(VK_NULL_HANDLE)
1276 {}
1277
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001278 VULKAN_HPP_TYPESAFE_EXPLICIT DeviceMemory( VkDeviceMemory deviceMemory )
1279 : m_deviceMemory( deviceMemory )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001280 {}
1281
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001282#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001283 DeviceMemory & operator=(VkDeviceMemory deviceMemory)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001284 {
1285 m_deviceMemory = deviceMemory;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001286 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001287 }
1288#endif
1289
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001290 DeviceMemory & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001291 {
1292 m_deviceMemory = VK_NULL_HANDLE;
1293 return *this;
1294 }
1295
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001296 bool operator==( DeviceMemory const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001297 {
1298 return m_deviceMemory == rhs.m_deviceMemory;
1299 }
1300
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001301 bool operator!=(DeviceMemory const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001302 {
1303 return m_deviceMemory != rhs.m_deviceMemory;
1304 }
1305
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001306 bool operator<(DeviceMemory const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001307 {
1308 return m_deviceMemory < rhs.m_deviceMemory;
1309 }
1310
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001311
1312
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001313 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDeviceMemory() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001314 {
1315 return m_deviceMemory;
1316 }
1317
1318 explicit operator bool() const
1319 {
1320 return m_deviceMemory != VK_NULL_HANDLE;
1321 }
1322
1323 bool operator!() const
1324 {
1325 return m_deviceMemory == VK_NULL_HANDLE;
1326 }
1327
1328 private:
1329 VkDeviceMemory m_deviceMemory;
1330 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001331
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001332 static_assert( sizeof( DeviceMemory ) == sizeof( VkDeviceMemory ), "handle and wrapper have different size!" );
1333
1334 class CommandPool
1335 {
1336 public:
1337 CommandPool()
1338 : m_commandPool(VK_NULL_HANDLE)
1339 {}
1340
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001341 CommandPool( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001342 : m_commandPool(VK_NULL_HANDLE)
1343 {}
1344
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001345 VULKAN_HPP_TYPESAFE_EXPLICIT CommandPool( VkCommandPool commandPool )
1346 : m_commandPool( commandPool )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001347 {}
1348
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001349#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001350 CommandPool & operator=(VkCommandPool commandPool)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001351 {
1352 m_commandPool = commandPool;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001353 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001354 }
1355#endif
1356
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001357 CommandPool & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001358 {
1359 m_commandPool = VK_NULL_HANDLE;
1360 return *this;
1361 }
1362
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001363 bool operator==( CommandPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001364 {
1365 return m_commandPool == rhs.m_commandPool;
1366 }
1367
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001368 bool operator!=(CommandPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001369 {
1370 return m_commandPool != rhs.m_commandPool;
1371 }
1372
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001373 bool operator<(CommandPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001374 {
1375 return m_commandPool < rhs.m_commandPool;
1376 }
1377
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001378
1379
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001380 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandPool() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001381 {
1382 return m_commandPool;
1383 }
1384
1385 explicit operator bool() const
1386 {
1387 return m_commandPool != VK_NULL_HANDLE;
1388 }
1389
1390 bool operator!() const
1391 {
1392 return m_commandPool == VK_NULL_HANDLE;
1393 }
1394
1395 private:
1396 VkCommandPool m_commandPool;
1397 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001398
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001399 static_assert( sizeof( CommandPool ) == sizeof( VkCommandPool ), "handle and wrapper have different size!" );
1400
1401 class Buffer
1402 {
1403 public:
1404 Buffer()
1405 : m_buffer(VK_NULL_HANDLE)
1406 {}
1407
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001408 Buffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001409 : m_buffer(VK_NULL_HANDLE)
1410 {}
1411
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001412 VULKAN_HPP_TYPESAFE_EXPLICIT Buffer( VkBuffer buffer )
1413 : m_buffer( buffer )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001414 {}
1415
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001416#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001417 Buffer & operator=(VkBuffer buffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001418 {
1419 m_buffer = buffer;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001420 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001421 }
1422#endif
1423
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001424 Buffer & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001425 {
1426 m_buffer = VK_NULL_HANDLE;
1427 return *this;
1428 }
1429
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001430 bool operator==( Buffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001431 {
1432 return m_buffer == rhs.m_buffer;
1433 }
1434
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001435 bool operator!=(Buffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001436 {
1437 return m_buffer != rhs.m_buffer;
1438 }
1439
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001440 bool operator<(Buffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001441 {
1442 return m_buffer < rhs.m_buffer;
1443 }
1444
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001445
1446
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001447 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkBuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001448 {
1449 return m_buffer;
1450 }
1451
1452 explicit operator bool() const
1453 {
1454 return m_buffer != VK_NULL_HANDLE;
1455 }
1456
1457 bool operator!() const
1458 {
1459 return m_buffer == VK_NULL_HANDLE;
1460 }
1461
1462 private:
1463 VkBuffer m_buffer;
1464 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001465
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001466 static_assert( sizeof( Buffer ) == sizeof( VkBuffer ), "handle and wrapper have different size!" );
1467
1468 class BufferView
1469 {
1470 public:
1471 BufferView()
1472 : m_bufferView(VK_NULL_HANDLE)
1473 {}
1474
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001475 BufferView( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001476 : m_bufferView(VK_NULL_HANDLE)
1477 {}
1478
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001479 VULKAN_HPP_TYPESAFE_EXPLICIT BufferView( VkBufferView bufferView )
1480 : m_bufferView( bufferView )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001481 {}
1482
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001483#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001484 BufferView & operator=(VkBufferView bufferView)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001485 {
1486 m_bufferView = bufferView;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001487 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001488 }
1489#endif
1490
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001491 BufferView & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001492 {
1493 m_bufferView = VK_NULL_HANDLE;
1494 return *this;
1495 }
1496
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001497 bool operator==( BufferView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001498 {
1499 return m_bufferView == rhs.m_bufferView;
1500 }
1501
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001502 bool operator!=(BufferView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001503 {
1504 return m_bufferView != rhs.m_bufferView;
1505 }
1506
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001507 bool operator<(BufferView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001508 {
1509 return m_bufferView < rhs.m_bufferView;
1510 }
1511
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001512
1513
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001514 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkBufferView() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001515 {
1516 return m_bufferView;
1517 }
1518
1519 explicit operator bool() const
1520 {
1521 return m_bufferView != VK_NULL_HANDLE;
1522 }
1523
1524 bool operator!() const
1525 {
1526 return m_bufferView == VK_NULL_HANDLE;
1527 }
1528
1529 private:
1530 VkBufferView m_bufferView;
1531 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001532
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001533 static_assert( sizeof( BufferView ) == sizeof( VkBufferView ), "handle and wrapper have different size!" );
1534
1535 class Image
1536 {
1537 public:
1538 Image()
1539 : m_image(VK_NULL_HANDLE)
1540 {}
1541
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001542 Image( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001543 : m_image(VK_NULL_HANDLE)
1544 {}
1545
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001546 VULKAN_HPP_TYPESAFE_EXPLICIT Image( VkImage image )
1547 : m_image( image )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001548 {}
1549
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001550#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001551 Image & operator=(VkImage image)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001552 {
1553 m_image = image;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001554 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001555 }
1556#endif
1557
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001558 Image & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001559 {
1560 m_image = VK_NULL_HANDLE;
1561 return *this;
1562 }
1563
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001564 bool operator==( Image const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001565 {
1566 return m_image == rhs.m_image;
1567 }
1568
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001569 bool operator!=(Image const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001570 {
1571 return m_image != rhs.m_image;
1572 }
1573
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001574 bool operator<(Image const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001575 {
1576 return m_image < rhs.m_image;
1577 }
1578
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001579
1580
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001581 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkImage() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001582 {
1583 return m_image;
1584 }
1585
1586 explicit operator bool() const
1587 {
1588 return m_image != VK_NULL_HANDLE;
1589 }
1590
1591 bool operator!() const
1592 {
1593 return m_image == VK_NULL_HANDLE;
1594 }
1595
1596 private:
1597 VkImage m_image;
1598 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001599
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001600 static_assert( sizeof( Image ) == sizeof( VkImage ), "handle and wrapper have different size!" );
1601
1602 class ImageView
1603 {
1604 public:
1605 ImageView()
1606 : m_imageView(VK_NULL_HANDLE)
1607 {}
1608
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001609 ImageView( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001610 : m_imageView(VK_NULL_HANDLE)
1611 {}
1612
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001613 VULKAN_HPP_TYPESAFE_EXPLICIT ImageView( VkImageView imageView )
1614 : m_imageView( imageView )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001615 {}
1616
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001617#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001618 ImageView & operator=(VkImageView imageView)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001619 {
1620 m_imageView = imageView;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001621 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001622 }
1623#endif
1624
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001625 ImageView & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001626 {
1627 m_imageView = VK_NULL_HANDLE;
1628 return *this;
1629 }
1630
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001631 bool operator==( ImageView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001632 {
1633 return m_imageView == rhs.m_imageView;
1634 }
1635
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001636 bool operator!=(ImageView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001637 {
1638 return m_imageView != rhs.m_imageView;
1639 }
1640
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001641 bool operator<(ImageView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001642 {
1643 return m_imageView < rhs.m_imageView;
1644 }
1645
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001646
1647
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001648 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkImageView() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001649 {
1650 return m_imageView;
1651 }
1652
1653 explicit operator bool() const
1654 {
1655 return m_imageView != VK_NULL_HANDLE;
1656 }
1657
1658 bool operator!() const
1659 {
1660 return m_imageView == VK_NULL_HANDLE;
1661 }
1662
1663 private:
1664 VkImageView m_imageView;
1665 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001666
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001667 static_assert( sizeof( ImageView ) == sizeof( VkImageView ), "handle and wrapper have different size!" );
1668
1669 class ShaderModule
1670 {
1671 public:
1672 ShaderModule()
1673 : m_shaderModule(VK_NULL_HANDLE)
1674 {}
1675
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001676 ShaderModule( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001677 : m_shaderModule(VK_NULL_HANDLE)
1678 {}
1679
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001680 VULKAN_HPP_TYPESAFE_EXPLICIT ShaderModule( VkShaderModule shaderModule )
1681 : m_shaderModule( shaderModule )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001682 {}
1683
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001684#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001685 ShaderModule & operator=(VkShaderModule shaderModule)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001686 {
1687 m_shaderModule = shaderModule;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001688 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001689 }
1690#endif
1691
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001692 ShaderModule & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001693 {
1694 m_shaderModule = VK_NULL_HANDLE;
1695 return *this;
1696 }
1697
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001698 bool operator==( ShaderModule const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001699 {
1700 return m_shaderModule == rhs.m_shaderModule;
1701 }
1702
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001703 bool operator!=(ShaderModule const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001704 {
1705 return m_shaderModule != rhs.m_shaderModule;
1706 }
1707
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001708 bool operator<(ShaderModule const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001709 {
1710 return m_shaderModule < rhs.m_shaderModule;
1711 }
1712
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001713
1714
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001715 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkShaderModule() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001716 {
1717 return m_shaderModule;
1718 }
1719
1720 explicit operator bool() const
1721 {
1722 return m_shaderModule != VK_NULL_HANDLE;
1723 }
1724
1725 bool operator!() const
1726 {
1727 return m_shaderModule == VK_NULL_HANDLE;
1728 }
1729
1730 private:
1731 VkShaderModule m_shaderModule;
1732 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001733
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001734 static_assert( sizeof( ShaderModule ) == sizeof( VkShaderModule ), "handle and wrapper have different size!" );
1735
1736 class Pipeline
1737 {
1738 public:
1739 Pipeline()
1740 : m_pipeline(VK_NULL_HANDLE)
1741 {}
1742
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001743 Pipeline( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001744 : m_pipeline(VK_NULL_HANDLE)
1745 {}
1746
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001747 VULKAN_HPP_TYPESAFE_EXPLICIT Pipeline( VkPipeline pipeline )
1748 : m_pipeline( pipeline )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001749 {}
1750
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001751#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001752 Pipeline & operator=(VkPipeline pipeline)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001753 {
1754 m_pipeline = pipeline;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001755 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001756 }
1757#endif
1758
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001759 Pipeline & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001760 {
1761 m_pipeline = VK_NULL_HANDLE;
1762 return *this;
1763 }
1764
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001765 bool operator==( Pipeline const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001766 {
1767 return m_pipeline == rhs.m_pipeline;
1768 }
1769
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001770 bool operator!=(Pipeline const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001771 {
1772 return m_pipeline != rhs.m_pipeline;
1773 }
1774
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001775 bool operator<(Pipeline const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001776 {
1777 return m_pipeline < rhs.m_pipeline;
1778 }
1779
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001780
1781
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001782 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipeline() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001783 {
1784 return m_pipeline;
1785 }
1786
1787 explicit operator bool() const
1788 {
1789 return m_pipeline != VK_NULL_HANDLE;
1790 }
1791
1792 bool operator!() const
1793 {
1794 return m_pipeline == VK_NULL_HANDLE;
1795 }
1796
1797 private:
1798 VkPipeline m_pipeline;
1799 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001800
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001801 static_assert( sizeof( Pipeline ) == sizeof( VkPipeline ), "handle and wrapper have different size!" );
1802
1803 class PipelineLayout
1804 {
1805 public:
1806 PipelineLayout()
1807 : m_pipelineLayout(VK_NULL_HANDLE)
1808 {}
1809
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001810 PipelineLayout( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001811 : m_pipelineLayout(VK_NULL_HANDLE)
1812 {}
1813
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001814 VULKAN_HPP_TYPESAFE_EXPLICIT PipelineLayout( VkPipelineLayout pipelineLayout )
1815 : m_pipelineLayout( pipelineLayout )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001816 {}
1817
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001818#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001819 PipelineLayout & operator=(VkPipelineLayout pipelineLayout)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001820 {
1821 m_pipelineLayout = pipelineLayout;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001822 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001823 }
1824#endif
1825
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001826 PipelineLayout & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001827 {
1828 m_pipelineLayout = VK_NULL_HANDLE;
1829 return *this;
1830 }
1831
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001832 bool operator==( PipelineLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001833 {
1834 return m_pipelineLayout == rhs.m_pipelineLayout;
1835 }
1836
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001837 bool operator!=(PipelineLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001838 {
1839 return m_pipelineLayout != rhs.m_pipelineLayout;
1840 }
1841
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001842 bool operator<(PipelineLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001843 {
1844 return m_pipelineLayout < rhs.m_pipelineLayout;
1845 }
1846
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001847
1848
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001849 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipelineLayout() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001850 {
1851 return m_pipelineLayout;
1852 }
1853
1854 explicit operator bool() const
1855 {
1856 return m_pipelineLayout != VK_NULL_HANDLE;
1857 }
1858
1859 bool operator!() const
1860 {
1861 return m_pipelineLayout == VK_NULL_HANDLE;
1862 }
1863
1864 private:
1865 VkPipelineLayout m_pipelineLayout;
1866 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001867
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001868 static_assert( sizeof( PipelineLayout ) == sizeof( VkPipelineLayout ), "handle and wrapper have different size!" );
1869
1870 class Sampler
1871 {
1872 public:
1873 Sampler()
1874 : m_sampler(VK_NULL_HANDLE)
1875 {}
1876
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001877 Sampler( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001878 : m_sampler(VK_NULL_HANDLE)
1879 {}
1880
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001881 VULKAN_HPP_TYPESAFE_EXPLICIT Sampler( VkSampler sampler )
1882 : m_sampler( sampler )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001883 {}
1884
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001885#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001886 Sampler & operator=(VkSampler sampler)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001887 {
1888 m_sampler = sampler;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001889 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001890 }
1891#endif
1892
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001893 Sampler & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001894 {
1895 m_sampler = VK_NULL_HANDLE;
1896 return *this;
1897 }
1898
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001899 bool operator==( Sampler const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001900 {
1901 return m_sampler == rhs.m_sampler;
1902 }
1903
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001904 bool operator!=(Sampler const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001905 {
1906 return m_sampler != rhs.m_sampler;
1907 }
1908
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001909 bool operator<(Sampler const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001910 {
1911 return m_sampler < rhs.m_sampler;
1912 }
1913
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001914
1915
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001916 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSampler() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001917 {
1918 return m_sampler;
1919 }
1920
1921 explicit operator bool() const
1922 {
1923 return m_sampler != VK_NULL_HANDLE;
1924 }
1925
1926 bool operator!() const
1927 {
1928 return m_sampler == VK_NULL_HANDLE;
1929 }
1930
1931 private:
1932 VkSampler m_sampler;
1933 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001934
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001935 static_assert( sizeof( Sampler ) == sizeof( VkSampler ), "handle and wrapper have different size!" );
1936
1937 class DescriptorSet
1938 {
1939 public:
1940 DescriptorSet()
1941 : m_descriptorSet(VK_NULL_HANDLE)
1942 {}
1943
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001944 DescriptorSet( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001945 : m_descriptorSet(VK_NULL_HANDLE)
1946 {}
1947
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001948 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorSet( VkDescriptorSet descriptorSet )
1949 : m_descriptorSet( descriptorSet )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001950 {}
1951
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001952#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001953 DescriptorSet & operator=(VkDescriptorSet descriptorSet)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001954 {
1955 m_descriptorSet = descriptorSet;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001956 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001957 }
1958#endif
1959
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001960 DescriptorSet & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001961 {
1962 m_descriptorSet = VK_NULL_HANDLE;
1963 return *this;
1964 }
1965
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001966 bool operator==( DescriptorSet const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001967 {
1968 return m_descriptorSet == rhs.m_descriptorSet;
1969 }
1970
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001971 bool operator!=(DescriptorSet const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001972 {
1973 return m_descriptorSet != rhs.m_descriptorSet;
1974 }
1975
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001976 bool operator<(DescriptorSet const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001977 {
1978 return m_descriptorSet < rhs.m_descriptorSet;
1979 }
1980
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001981
1982
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001983 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorSet() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001984 {
1985 return m_descriptorSet;
1986 }
1987
1988 explicit operator bool() const
1989 {
1990 return m_descriptorSet != VK_NULL_HANDLE;
1991 }
1992
1993 bool operator!() const
1994 {
1995 return m_descriptorSet == VK_NULL_HANDLE;
1996 }
1997
1998 private:
1999 VkDescriptorSet m_descriptorSet;
2000 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002001
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002002 static_assert( sizeof( DescriptorSet ) == sizeof( VkDescriptorSet ), "handle and wrapper have different size!" );
2003
2004 class DescriptorSetLayout
2005 {
2006 public:
2007 DescriptorSetLayout()
2008 : m_descriptorSetLayout(VK_NULL_HANDLE)
2009 {}
2010
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002011 DescriptorSetLayout( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002012 : m_descriptorSetLayout(VK_NULL_HANDLE)
2013 {}
2014
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002015 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorSetLayout( VkDescriptorSetLayout descriptorSetLayout )
2016 : m_descriptorSetLayout( descriptorSetLayout )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002017 {}
2018
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002019#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002020 DescriptorSetLayout & operator=(VkDescriptorSetLayout descriptorSetLayout)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002021 {
2022 m_descriptorSetLayout = descriptorSetLayout;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002023 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002024 }
2025#endif
2026
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002027 DescriptorSetLayout & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002028 {
2029 m_descriptorSetLayout = VK_NULL_HANDLE;
2030 return *this;
2031 }
2032
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002033 bool operator==( DescriptorSetLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002034 {
2035 return m_descriptorSetLayout == rhs.m_descriptorSetLayout;
2036 }
2037
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002038 bool operator!=(DescriptorSetLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002039 {
2040 return m_descriptorSetLayout != rhs.m_descriptorSetLayout;
2041 }
2042
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002043 bool operator<(DescriptorSetLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002044 {
2045 return m_descriptorSetLayout < rhs.m_descriptorSetLayout;
2046 }
2047
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002048
2049
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002050 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorSetLayout() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002051 {
2052 return m_descriptorSetLayout;
2053 }
2054
2055 explicit operator bool() const
2056 {
2057 return m_descriptorSetLayout != VK_NULL_HANDLE;
2058 }
2059
2060 bool operator!() const
2061 {
2062 return m_descriptorSetLayout == VK_NULL_HANDLE;
2063 }
2064
2065 private:
2066 VkDescriptorSetLayout m_descriptorSetLayout;
2067 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002068
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002069 static_assert( sizeof( DescriptorSetLayout ) == sizeof( VkDescriptorSetLayout ), "handle and wrapper have different size!" );
2070
2071 class DescriptorPool
2072 {
2073 public:
2074 DescriptorPool()
2075 : m_descriptorPool(VK_NULL_HANDLE)
2076 {}
2077
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002078 DescriptorPool( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002079 : m_descriptorPool(VK_NULL_HANDLE)
2080 {}
2081
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002082 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorPool( VkDescriptorPool descriptorPool )
2083 : m_descriptorPool( descriptorPool )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002084 {}
2085
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002086#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002087 DescriptorPool & operator=(VkDescriptorPool descriptorPool)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002088 {
2089 m_descriptorPool = descriptorPool;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002090 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002091 }
2092#endif
2093
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002094 DescriptorPool & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002095 {
2096 m_descriptorPool = VK_NULL_HANDLE;
2097 return *this;
2098 }
2099
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002100 bool operator==( DescriptorPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002101 {
2102 return m_descriptorPool == rhs.m_descriptorPool;
2103 }
2104
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002105 bool operator!=(DescriptorPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002106 {
2107 return m_descriptorPool != rhs.m_descriptorPool;
2108 }
2109
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002110 bool operator<(DescriptorPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002111 {
2112 return m_descriptorPool < rhs.m_descriptorPool;
2113 }
2114
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002115
2116
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002117 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorPool() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002118 {
2119 return m_descriptorPool;
2120 }
2121
2122 explicit operator bool() const
2123 {
2124 return m_descriptorPool != VK_NULL_HANDLE;
2125 }
2126
2127 bool operator!() const
2128 {
2129 return m_descriptorPool == VK_NULL_HANDLE;
2130 }
2131
2132 private:
2133 VkDescriptorPool m_descriptorPool;
2134 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002135
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002136 static_assert( sizeof( DescriptorPool ) == sizeof( VkDescriptorPool ), "handle and wrapper have different size!" );
2137
2138 class Fence
2139 {
2140 public:
2141 Fence()
2142 : m_fence(VK_NULL_HANDLE)
2143 {}
2144
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002145 Fence( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002146 : m_fence(VK_NULL_HANDLE)
2147 {}
2148
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002149 VULKAN_HPP_TYPESAFE_EXPLICIT Fence( VkFence fence )
2150 : m_fence( fence )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002151 {}
2152
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002153#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002154 Fence & operator=(VkFence fence)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002155 {
2156 m_fence = fence;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002157 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002158 }
2159#endif
2160
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002161 Fence & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002162 {
2163 m_fence = VK_NULL_HANDLE;
2164 return *this;
2165 }
2166
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002167 bool operator==( Fence const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002168 {
2169 return m_fence == rhs.m_fence;
2170 }
2171
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002172 bool operator!=(Fence const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002173 {
2174 return m_fence != rhs.m_fence;
2175 }
2176
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002177 bool operator<(Fence const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002178 {
2179 return m_fence < rhs.m_fence;
2180 }
2181
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002182
2183
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002184 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkFence() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002185 {
2186 return m_fence;
2187 }
2188
2189 explicit operator bool() const
2190 {
2191 return m_fence != VK_NULL_HANDLE;
2192 }
2193
2194 bool operator!() const
2195 {
2196 return m_fence == VK_NULL_HANDLE;
2197 }
2198
2199 private:
2200 VkFence m_fence;
2201 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002202
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002203 static_assert( sizeof( Fence ) == sizeof( VkFence ), "handle and wrapper have different size!" );
2204
2205 class Semaphore
2206 {
2207 public:
2208 Semaphore()
2209 : m_semaphore(VK_NULL_HANDLE)
2210 {}
2211
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002212 Semaphore( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002213 : m_semaphore(VK_NULL_HANDLE)
2214 {}
2215
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002216 VULKAN_HPP_TYPESAFE_EXPLICIT Semaphore( VkSemaphore semaphore )
2217 : m_semaphore( semaphore )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002218 {}
2219
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002220#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002221 Semaphore & operator=(VkSemaphore semaphore)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002222 {
2223 m_semaphore = semaphore;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002224 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002225 }
2226#endif
2227
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002228 Semaphore & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002229 {
2230 m_semaphore = VK_NULL_HANDLE;
2231 return *this;
2232 }
2233
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002234 bool operator==( Semaphore const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002235 {
2236 return m_semaphore == rhs.m_semaphore;
2237 }
2238
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002239 bool operator!=(Semaphore const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002240 {
2241 return m_semaphore != rhs.m_semaphore;
2242 }
2243
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002244 bool operator<(Semaphore const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002245 {
2246 return m_semaphore < rhs.m_semaphore;
2247 }
2248
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002249
2250
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002251 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSemaphore() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002252 {
2253 return m_semaphore;
2254 }
2255
2256 explicit operator bool() const
2257 {
2258 return m_semaphore != VK_NULL_HANDLE;
2259 }
2260
2261 bool operator!() const
2262 {
2263 return m_semaphore == VK_NULL_HANDLE;
2264 }
2265
2266 private:
2267 VkSemaphore m_semaphore;
2268 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002269
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002270 static_assert( sizeof( Semaphore ) == sizeof( VkSemaphore ), "handle and wrapper have different size!" );
2271
2272 class Event
2273 {
2274 public:
2275 Event()
2276 : m_event(VK_NULL_HANDLE)
2277 {}
2278
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002279 Event( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002280 : m_event(VK_NULL_HANDLE)
2281 {}
2282
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002283 VULKAN_HPP_TYPESAFE_EXPLICIT Event( VkEvent event )
2284 : m_event( event )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002285 {}
2286
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002287#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002288 Event & operator=(VkEvent event)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002289 {
2290 m_event = event;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002291 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002292 }
2293#endif
2294
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002295 Event & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002296 {
2297 m_event = VK_NULL_HANDLE;
2298 return *this;
2299 }
2300
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002301 bool operator==( Event const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002302 {
2303 return m_event == rhs.m_event;
2304 }
2305
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002306 bool operator!=(Event const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002307 {
2308 return m_event != rhs.m_event;
2309 }
2310
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002311 bool operator<(Event const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002312 {
2313 return m_event < rhs.m_event;
2314 }
2315
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002316
2317
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002318 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkEvent() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002319 {
2320 return m_event;
2321 }
2322
2323 explicit operator bool() const
2324 {
2325 return m_event != VK_NULL_HANDLE;
2326 }
2327
2328 bool operator!() const
2329 {
2330 return m_event == VK_NULL_HANDLE;
2331 }
2332
2333 private:
2334 VkEvent m_event;
2335 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002336
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002337 static_assert( sizeof( Event ) == sizeof( VkEvent ), "handle and wrapper have different size!" );
2338
2339 class QueryPool
2340 {
2341 public:
2342 QueryPool()
2343 : m_queryPool(VK_NULL_HANDLE)
2344 {}
2345
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002346 QueryPool( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002347 : m_queryPool(VK_NULL_HANDLE)
2348 {}
2349
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002350 VULKAN_HPP_TYPESAFE_EXPLICIT QueryPool( VkQueryPool queryPool )
2351 : m_queryPool( queryPool )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002352 {}
2353
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002354#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002355 QueryPool & operator=(VkQueryPool queryPool)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002356 {
2357 m_queryPool = queryPool;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002358 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002359 }
2360#endif
2361
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002362 QueryPool & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002363 {
2364 m_queryPool = VK_NULL_HANDLE;
2365 return *this;
2366 }
2367
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002368 bool operator==( QueryPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002369 {
2370 return m_queryPool == rhs.m_queryPool;
2371 }
2372
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002373 bool operator!=(QueryPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002374 {
2375 return m_queryPool != rhs.m_queryPool;
2376 }
2377
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002378 bool operator<(QueryPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002379 {
2380 return m_queryPool < rhs.m_queryPool;
2381 }
2382
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002383
2384
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002385 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueryPool() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002386 {
2387 return m_queryPool;
2388 }
2389
2390 explicit operator bool() const
2391 {
2392 return m_queryPool != VK_NULL_HANDLE;
2393 }
2394
2395 bool operator!() const
2396 {
2397 return m_queryPool == VK_NULL_HANDLE;
2398 }
2399
2400 private:
2401 VkQueryPool m_queryPool;
2402 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002403
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002404 static_assert( sizeof( QueryPool ) == sizeof( VkQueryPool ), "handle and wrapper have different size!" );
2405
2406 class Framebuffer
2407 {
2408 public:
2409 Framebuffer()
2410 : m_framebuffer(VK_NULL_HANDLE)
2411 {}
2412
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002413 Framebuffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002414 : m_framebuffer(VK_NULL_HANDLE)
2415 {}
2416
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002417 VULKAN_HPP_TYPESAFE_EXPLICIT Framebuffer( VkFramebuffer framebuffer )
2418 : m_framebuffer( framebuffer )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002419 {}
2420
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002421#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002422 Framebuffer & operator=(VkFramebuffer framebuffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002423 {
2424 m_framebuffer = framebuffer;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002425 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002426 }
2427#endif
2428
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002429 Framebuffer & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002430 {
2431 m_framebuffer = VK_NULL_HANDLE;
2432 return *this;
2433 }
2434
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002435 bool operator==( Framebuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002436 {
2437 return m_framebuffer == rhs.m_framebuffer;
2438 }
2439
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002440 bool operator!=(Framebuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002441 {
2442 return m_framebuffer != rhs.m_framebuffer;
2443 }
2444
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002445 bool operator<(Framebuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002446 {
2447 return m_framebuffer < rhs.m_framebuffer;
2448 }
2449
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002450
2451
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002452 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkFramebuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002453 {
2454 return m_framebuffer;
2455 }
2456
2457 explicit operator bool() const
2458 {
2459 return m_framebuffer != VK_NULL_HANDLE;
2460 }
2461
2462 bool operator!() const
2463 {
2464 return m_framebuffer == VK_NULL_HANDLE;
2465 }
2466
2467 private:
2468 VkFramebuffer m_framebuffer;
2469 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002470
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002471 static_assert( sizeof( Framebuffer ) == sizeof( VkFramebuffer ), "handle and wrapper have different size!" );
2472
2473 class RenderPass
2474 {
2475 public:
2476 RenderPass()
2477 : m_renderPass(VK_NULL_HANDLE)
2478 {}
2479
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002480 RenderPass( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002481 : m_renderPass(VK_NULL_HANDLE)
2482 {}
2483
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002484 VULKAN_HPP_TYPESAFE_EXPLICIT RenderPass( VkRenderPass renderPass )
2485 : m_renderPass( renderPass )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002486 {}
2487
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002488#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002489 RenderPass & operator=(VkRenderPass renderPass)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002490 {
2491 m_renderPass = renderPass;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002492 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002493 }
2494#endif
2495
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002496 RenderPass & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002497 {
2498 m_renderPass = VK_NULL_HANDLE;
2499 return *this;
2500 }
2501
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002502 bool operator==( RenderPass const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002503 {
2504 return m_renderPass == rhs.m_renderPass;
2505 }
2506
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002507 bool operator!=(RenderPass const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002508 {
2509 return m_renderPass != rhs.m_renderPass;
2510 }
2511
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002512 bool operator<(RenderPass const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002513 {
2514 return m_renderPass < rhs.m_renderPass;
2515 }
2516
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002517
2518
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002519 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkRenderPass() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002520 {
2521 return m_renderPass;
2522 }
2523
2524 explicit operator bool() const
2525 {
2526 return m_renderPass != VK_NULL_HANDLE;
2527 }
2528
2529 bool operator!() const
2530 {
2531 return m_renderPass == VK_NULL_HANDLE;
2532 }
2533
2534 private:
2535 VkRenderPass m_renderPass;
2536 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002537
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002538 static_assert( sizeof( RenderPass ) == sizeof( VkRenderPass ), "handle and wrapper have different size!" );
2539
2540 class PipelineCache
2541 {
2542 public:
2543 PipelineCache()
2544 : m_pipelineCache(VK_NULL_HANDLE)
2545 {}
2546
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002547 PipelineCache( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002548 : m_pipelineCache(VK_NULL_HANDLE)
2549 {}
2550
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002551 VULKAN_HPP_TYPESAFE_EXPLICIT PipelineCache( VkPipelineCache pipelineCache )
2552 : m_pipelineCache( pipelineCache )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002553 {}
2554
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002555#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002556 PipelineCache & operator=(VkPipelineCache pipelineCache)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002557 {
2558 m_pipelineCache = pipelineCache;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002559 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002560 }
2561#endif
2562
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002563 PipelineCache & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002564 {
2565 m_pipelineCache = VK_NULL_HANDLE;
2566 return *this;
2567 }
2568
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002569 bool operator==( PipelineCache const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002570 {
2571 return m_pipelineCache == rhs.m_pipelineCache;
2572 }
2573
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002574 bool operator!=(PipelineCache const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002575 {
2576 return m_pipelineCache != rhs.m_pipelineCache;
2577 }
2578
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002579 bool operator<(PipelineCache const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002580 {
2581 return m_pipelineCache < rhs.m_pipelineCache;
2582 }
2583
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002584
2585
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002586 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipelineCache() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002587 {
2588 return m_pipelineCache;
2589 }
2590
2591 explicit operator bool() const
2592 {
2593 return m_pipelineCache != VK_NULL_HANDLE;
2594 }
2595
2596 bool operator!() const
2597 {
2598 return m_pipelineCache == VK_NULL_HANDLE;
2599 }
2600
2601 private:
2602 VkPipelineCache m_pipelineCache;
2603 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002604
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002605 static_assert( sizeof( PipelineCache ) == sizeof( VkPipelineCache ), "handle and wrapper have different size!" );
2606
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002607 class ObjectTableNVX
2608 {
2609 public:
2610 ObjectTableNVX()
2611 : m_objectTableNVX(VK_NULL_HANDLE)
2612 {}
2613
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002614 ObjectTableNVX( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002615 : m_objectTableNVX(VK_NULL_HANDLE)
2616 {}
2617
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002618 VULKAN_HPP_TYPESAFE_EXPLICIT ObjectTableNVX( VkObjectTableNVX objectTableNVX )
2619 : m_objectTableNVX( objectTableNVX )
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002620 {}
2621
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002622#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002623 ObjectTableNVX & operator=(VkObjectTableNVX objectTableNVX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002624 {
2625 m_objectTableNVX = objectTableNVX;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002626 return *this;
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002627 }
2628#endif
2629
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002630 ObjectTableNVX & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002631 {
2632 m_objectTableNVX = VK_NULL_HANDLE;
2633 return *this;
2634 }
2635
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002636 bool operator==( ObjectTableNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002637 {
2638 return m_objectTableNVX == rhs.m_objectTableNVX;
2639 }
2640
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002641 bool operator!=(ObjectTableNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002642 {
2643 return m_objectTableNVX != rhs.m_objectTableNVX;
2644 }
2645
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002646 bool operator<(ObjectTableNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002647 {
2648 return m_objectTableNVX < rhs.m_objectTableNVX;
2649 }
2650
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002651
2652
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002653 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkObjectTableNVX() const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002654 {
2655 return m_objectTableNVX;
2656 }
2657
2658 explicit operator bool() const
2659 {
2660 return m_objectTableNVX != VK_NULL_HANDLE;
2661 }
2662
2663 bool operator!() const
2664 {
2665 return m_objectTableNVX == VK_NULL_HANDLE;
2666 }
2667
2668 private:
2669 VkObjectTableNVX m_objectTableNVX;
2670 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002671
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002672 static_assert( sizeof( ObjectTableNVX ) == sizeof( VkObjectTableNVX ), "handle and wrapper have different size!" );
2673
2674 class IndirectCommandsLayoutNVX
2675 {
2676 public:
2677 IndirectCommandsLayoutNVX()
2678 : m_indirectCommandsLayoutNVX(VK_NULL_HANDLE)
2679 {}
2680
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002681 IndirectCommandsLayoutNVX( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002682 : m_indirectCommandsLayoutNVX(VK_NULL_HANDLE)
2683 {}
2684
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002685 VULKAN_HPP_TYPESAFE_EXPLICIT IndirectCommandsLayoutNVX( VkIndirectCommandsLayoutNVX indirectCommandsLayoutNVX )
2686 : m_indirectCommandsLayoutNVX( indirectCommandsLayoutNVX )
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002687 {}
2688
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002689#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002690 IndirectCommandsLayoutNVX & operator=(VkIndirectCommandsLayoutNVX indirectCommandsLayoutNVX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002691 {
2692 m_indirectCommandsLayoutNVX = indirectCommandsLayoutNVX;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002693 return *this;
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002694 }
2695#endif
2696
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002697 IndirectCommandsLayoutNVX & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002698 {
2699 m_indirectCommandsLayoutNVX = VK_NULL_HANDLE;
2700 return *this;
2701 }
2702
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002703 bool operator==( IndirectCommandsLayoutNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002704 {
2705 return m_indirectCommandsLayoutNVX == rhs.m_indirectCommandsLayoutNVX;
2706 }
2707
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002708 bool operator!=(IndirectCommandsLayoutNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002709 {
2710 return m_indirectCommandsLayoutNVX != rhs.m_indirectCommandsLayoutNVX;
2711 }
2712
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002713 bool operator<(IndirectCommandsLayoutNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002714 {
2715 return m_indirectCommandsLayoutNVX < rhs.m_indirectCommandsLayoutNVX;
2716 }
2717
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002718
2719
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002720 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkIndirectCommandsLayoutNVX() const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002721 {
2722 return m_indirectCommandsLayoutNVX;
2723 }
2724
2725 explicit operator bool() const
2726 {
2727 return m_indirectCommandsLayoutNVX != VK_NULL_HANDLE;
2728 }
2729
2730 bool operator!() const
2731 {
2732 return m_indirectCommandsLayoutNVX == VK_NULL_HANDLE;
2733 }
2734
2735 private:
2736 VkIndirectCommandsLayoutNVX m_indirectCommandsLayoutNVX;
2737 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002738
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002739 static_assert( sizeof( IndirectCommandsLayoutNVX ) == sizeof( VkIndirectCommandsLayoutNVX ), "handle and wrapper have different size!" );
2740
Mark Young0f183a82017-02-28 09:58:04 -07002741 class DescriptorUpdateTemplateKHR
2742 {
2743 public:
2744 DescriptorUpdateTemplateKHR()
2745 : m_descriptorUpdateTemplateKHR(VK_NULL_HANDLE)
2746 {}
2747
2748 DescriptorUpdateTemplateKHR( std::nullptr_t )
2749 : m_descriptorUpdateTemplateKHR(VK_NULL_HANDLE)
2750 {}
2751
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002752 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorUpdateTemplateKHR( VkDescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR )
2753 : m_descriptorUpdateTemplateKHR( descriptorUpdateTemplateKHR )
Mark Young0f183a82017-02-28 09:58:04 -07002754 {}
2755
2756#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002757 DescriptorUpdateTemplateKHR & operator=(VkDescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR)
Mark Young0f183a82017-02-28 09:58:04 -07002758 {
2759 m_descriptorUpdateTemplateKHR = descriptorUpdateTemplateKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002760 return *this;
Mark Young0f183a82017-02-28 09:58:04 -07002761 }
2762#endif
2763
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002764 DescriptorUpdateTemplateKHR & operator=( std::nullptr_t )
Mark Young0f183a82017-02-28 09:58:04 -07002765 {
2766 m_descriptorUpdateTemplateKHR = VK_NULL_HANDLE;
2767 return *this;
2768 }
2769
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002770 bool operator==( DescriptorUpdateTemplateKHR const & rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -07002771 {
2772 return m_descriptorUpdateTemplateKHR == rhs.m_descriptorUpdateTemplateKHR;
2773 }
2774
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002775 bool operator!=(DescriptorUpdateTemplateKHR const & rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -07002776 {
2777 return m_descriptorUpdateTemplateKHR != rhs.m_descriptorUpdateTemplateKHR;
2778 }
2779
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002780 bool operator<(DescriptorUpdateTemplateKHR const & rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -07002781 {
2782 return m_descriptorUpdateTemplateKHR < rhs.m_descriptorUpdateTemplateKHR;
2783 }
2784
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002785
2786
Mark Young0f183a82017-02-28 09:58:04 -07002787 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorUpdateTemplateKHR() const
2788 {
2789 return m_descriptorUpdateTemplateKHR;
2790 }
2791
2792 explicit operator bool() const
2793 {
2794 return m_descriptorUpdateTemplateKHR != VK_NULL_HANDLE;
2795 }
2796
2797 bool operator!() const
2798 {
2799 return m_descriptorUpdateTemplateKHR == VK_NULL_HANDLE;
2800 }
2801
2802 private:
2803 VkDescriptorUpdateTemplateKHR m_descriptorUpdateTemplateKHR;
2804 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002805
Mark Young0f183a82017-02-28 09:58:04 -07002806 static_assert( sizeof( DescriptorUpdateTemplateKHR ) == sizeof( VkDescriptorUpdateTemplateKHR ), "handle and wrapper have different size!" );
2807
Lenny Komowb79f04a2017-09-18 17:07:00 -06002808 class SamplerYcbcrConversionKHR
2809 {
2810 public:
2811 SamplerYcbcrConversionKHR()
2812 : m_samplerYcbcrConversionKHR(VK_NULL_HANDLE)
2813 {}
2814
2815 SamplerYcbcrConversionKHR( std::nullptr_t )
2816 : m_samplerYcbcrConversionKHR(VK_NULL_HANDLE)
2817 {}
2818
2819 VULKAN_HPP_TYPESAFE_EXPLICIT SamplerYcbcrConversionKHR( VkSamplerYcbcrConversionKHR samplerYcbcrConversionKHR )
2820 : m_samplerYcbcrConversionKHR( samplerYcbcrConversionKHR )
2821 {}
2822
2823#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
2824 SamplerYcbcrConversionKHR & operator=(VkSamplerYcbcrConversionKHR samplerYcbcrConversionKHR)
2825 {
2826 m_samplerYcbcrConversionKHR = samplerYcbcrConversionKHR;
2827 return *this;
2828 }
2829#endif
2830
2831 SamplerYcbcrConversionKHR & operator=( std::nullptr_t )
2832 {
2833 m_samplerYcbcrConversionKHR = VK_NULL_HANDLE;
2834 return *this;
2835 }
2836
2837 bool operator==( SamplerYcbcrConversionKHR const & rhs ) const
2838 {
2839 return m_samplerYcbcrConversionKHR == rhs.m_samplerYcbcrConversionKHR;
2840 }
2841
2842 bool operator!=(SamplerYcbcrConversionKHR const & rhs ) const
2843 {
2844 return m_samplerYcbcrConversionKHR != rhs.m_samplerYcbcrConversionKHR;
2845 }
2846
2847 bool operator<(SamplerYcbcrConversionKHR const & rhs ) const
2848 {
2849 return m_samplerYcbcrConversionKHR < rhs.m_samplerYcbcrConversionKHR;
2850 }
2851
2852
2853
2854 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSamplerYcbcrConversionKHR() const
2855 {
2856 return m_samplerYcbcrConversionKHR;
2857 }
2858
2859 explicit operator bool() const
2860 {
2861 return m_samplerYcbcrConversionKHR != VK_NULL_HANDLE;
2862 }
2863
2864 bool operator!() const
2865 {
2866 return m_samplerYcbcrConversionKHR == VK_NULL_HANDLE;
2867 }
2868
2869 private:
2870 VkSamplerYcbcrConversionKHR m_samplerYcbcrConversionKHR;
2871 };
2872
2873 static_assert( sizeof( SamplerYcbcrConversionKHR ) == sizeof( VkSamplerYcbcrConversionKHR ), "handle and wrapper have different size!" );
2874
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06002875 class ValidationCacheEXT
2876 {
2877 public:
2878 ValidationCacheEXT()
2879 : m_validationCacheEXT(VK_NULL_HANDLE)
2880 {}
2881
2882 ValidationCacheEXT( std::nullptr_t )
2883 : m_validationCacheEXT(VK_NULL_HANDLE)
2884 {}
2885
2886 VULKAN_HPP_TYPESAFE_EXPLICIT ValidationCacheEXT( VkValidationCacheEXT validationCacheEXT )
2887 : m_validationCacheEXT( validationCacheEXT )
2888 {}
2889
2890#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
2891 ValidationCacheEXT & operator=(VkValidationCacheEXT validationCacheEXT)
2892 {
2893 m_validationCacheEXT = validationCacheEXT;
2894 return *this;
2895 }
2896#endif
2897
2898 ValidationCacheEXT & operator=( std::nullptr_t )
2899 {
2900 m_validationCacheEXT = VK_NULL_HANDLE;
2901 return *this;
2902 }
2903
2904 bool operator==( ValidationCacheEXT const & rhs ) const
2905 {
2906 return m_validationCacheEXT == rhs.m_validationCacheEXT;
2907 }
2908
2909 bool operator!=(ValidationCacheEXT const & rhs ) const
2910 {
2911 return m_validationCacheEXT != rhs.m_validationCacheEXT;
2912 }
2913
2914 bool operator<(ValidationCacheEXT const & rhs ) const
2915 {
2916 return m_validationCacheEXT < rhs.m_validationCacheEXT;
2917 }
2918
2919
2920
2921 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkValidationCacheEXT() const
2922 {
2923 return m_validationCacheEXT;
2924 }
2925
2926 explicit operator bool() const
2927 {
2928 return m_validationCacheEXT != VK_NULL_HANDLE;
2929 }
2930
2931 bool operator!() const
2932 {
2933 return m_validationCacheEXT == VK_NULL_HANDLE;
2934 }
2935
2936 private:
2937 VkValidationCacheEXT m_validationCacheEXT;
2938 };
2939
2940 static_assert( sizeof( ValidationCacheEXT ) == sizeof( VkValidationCacheEXT ), "handle and wrapper have different size!" );
2941
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002942 class DisplayKHR
2943 {
2944 public:
2945 DisplayKHR()
2946 : m_displayKHR(VK_NULL_HANDLE)
2947 {}
2948
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002949 DisplayKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002950 : m_displayKHR(VK_NULL_HANDLE)
2951 {}
2952
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002953 VULKAN_HPP_TYPESAFE_EXPLICIT DisplayKHR( VkDisplayKHR displayKHR )
2954 : m_displayKHR( displayKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002955 {}
2956
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002957#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002958 DisplayKHR & operator=(VkDisplayKHR displayKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002959 {
2960 m_displayKHR = displayKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002961 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002962 }
2963#endif
2964
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002965 DisplayKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002966 {
2967 m_displayKHR = VK_NULL_HANDLE;
2968 return *this;
2969 }
2970
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002971 bool operator==( DisplayKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002972 {
2973 return m_displayKHR == rhs.m_displayKHR;
2974 }
2975
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002976 bool operator!=(DisplayKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002977 {
2978 return m_displayKHR != rhs.m_displayKHR;
2979 }
2980
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002981 bool operator<(DisplayKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002982 {
2983 return m_displayKHR < rhs.m_displayKHR;
2984 }
2985
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002986
2987
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002988 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDisplayKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002989 {
2990 return m_displayKHR;
2991 }
2992
2993 explicit operator bool() const
2994 {
2995 return m_displayKHR != VK_NULL_HANDLE;
2996 }
2997
2998 bool operator!() const
2999 {
3000 return m_displayKHR == VK_NULL_HANDLE;
3001 }
3002
3003 private:
3004 VkDisplayKHR m_displayKHR;
3005 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003006
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003007 static_assert( sizeof( DisplayKHR ) == sizeof( VkDisplayKHR ), "handle and wrapper have different size!" );
3008
3009 class DisplayModeKHR
3010 {
3011 public:
3012 DisplayModeKHR()
3013 : m_displayModeKHR(VK_NULL_HANDLE)
3014 {}
3015
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07003016 DisplayModeKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003017 : m_displayModeKHR(VK_NULL_HANDLE)
3018 {}
3019
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003020 VULKAN_HPP_TYPESAFE_EXPLICIT DisplayModeKHR( VkDisplayModeKHR displayModeKHR )
3021 : m_displayModeKHR( displayModeKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003022 {}
3023
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003024#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003025 DisplayModeKHR & operator=(VkDisplayModeKHR displayModeKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003026 {
3027 m_displayModeKHR = displayModeKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003028 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003029 }
3030#endif
3031
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003032 DisplayModeKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003033 {
3034 m_displayModeKHR = VK_NULL_HANDLE;
3035 return *this;
3036 }
3037
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003038 bool operator==( DisplayModeKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003039 {
3040 return m_displayModeKHR == rhs.m_displayModeKHR;
3041 }
3042
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003043 bool operator!=(DisplayModeKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003044 {
3045 return m_displayModeKHR != rhs.m_displayModeKHR;
3046 }
3047
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003048 bool operator<(DisplayModeKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003049 {
3050 return m_displayModeKHR < rhs.m_displayModeKHR;
3051 }
3052
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003053
3054
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003055 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDisplayModeKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003056 {
3057 return m_displayModeKHR;
3058 }
3059
3060 explicit operator bool() const
3061 {
3062 return m_displayModeKHR != VK_NULL_HANDLE;
3063 }
3064
3065 bool operator!() const
3066 {
3067 return m_displayModeKHR == VK_NULL_HANDLE;
3068 }
3069
3070 private:
3071 VkDisplayModeKHR m_displayModeKHR;
3072 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003073
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003074 static_assert( sizeof( DisplayModeKHR ) == sizeof( VkDisplayModeKHR ), "handle and wrapper have different size!" );
3075
3076 class SurfaceKHR
3077 {
3078 public:
3079 SurfaceKHR()
3080 : m_surfaceKHR(VK_NULL_HANDLE)
3081 {}
3082
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07003083 SurfaceKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003084 : m_surfaceKHR(VK_NULL_HANDLE)
3085 {}
3086
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003087 VULKAN_HPP_TYPESAFE_EXPLICIT SurfaceKHR( VkSurfaceKHR surfaceKHR )
3088 : m_surfaceKHR( surfaceKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003089 {}
3090
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003091#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003092 SurfaceKHR & operator=(VkSurfaceKHR surfaceKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003093 {
3094 m_surfaceKHR = surfaceKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003095 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003096 }
3097#endif
3098
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003099 SurfaceKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003100 {
3101 m_surfaceKHR = VK_NULL_HANDLE;
3102 return *this;
3103 }
3104
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003105 bool operator==( SurfaceKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003106 {
3107 return m_surfaceKHR == rhs.m_surfaceKHR;
3108 }
3109
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003110 bool operator!=(SurfaceKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003111 {
3112 return m_surfaceKHR != rhs.m_surfaceKHR;
3113 }
3114
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003115 bool operator<(SurfaceKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003116 {
3117 return m_surfaceKHR < rhs.m_surfaceKHR;
3118 }
3119
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003120
3121
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003122 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSurfaceKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003123 {
3124 return m_surfaceKHR;
3125 }
3126
3127 explicit operator bool() const
3128 {
3129 return m_surfaceKHR != VK_NULL_HANDLE;
3130 }
3131
3132 bool operator!() const
3133 {
3134 return m_surfaceKHR == VK_NULL_HANDLE;
3135 }
3136
3137 private:
3138 VkSurfaceKHR m_surfaceKHR;
3139 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003140
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003141 static_assert( sizeof( SurfaceKHR ) == sizeof( VkSurfaceKHR ), "handle and wrapper have different size!" );
3142
3143 class SwapchainKHR
3144 {
3145 public:
3146 SwapchainKHR()
3147 : m_swapchainKHR(VK_NULL_HANDLE)
3148 {}
3149
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07003150 SwapchainKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003151 : m_swapchainKHR(VK_NULL_HANDLE)
3152 {}
3153
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003154 VULKAN_HPP_TYPESAFE_EXPLICIT SwapchainKHR( VkSwapchainKHR swapchainKHR )
3155 : m_swapchainKHR( swapchainKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003156 {}
3157
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003158#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003159 SwapchainKHR & operator=(VkSwapchainKHR swapchainKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003160 {
3161 m_swapchainKHR = swapchainKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003162 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003163 }
3164#endif
3165
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003166 SwapchainKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003167 {
3168 m_swapchainKHR = VK_NULL_HANDLE;
3169 return *this;
3170 }
3171
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003172 bool operator==( SwapchainKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003173 {
3174 return m_swapchainKHR == rhs.m_swapchainKHR;
3175 }
3176
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003177 bool operator!=(SwapchainKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003178 {
3179 return m_swapchainKHR != rhs.m_swapchainKHR;
3180 }
3181
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003182 bool operator<(SwapchainKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003183 {
3184 return m_swapchainKHR < rhs.m_swapchainKHR;
3185 }
3186
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003187
3188
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003189 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSwapchainKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003190 {
3191 return m_swapchainKHR;
3192 }
3193
3194 explicit operator bool() const
3195 {
3196 return m_swapchainKHR != VK_NULL_HANDLE;
3197 }
3198
3199 bool operator!() const
3200 {
3201 return m_swapchainKHR == VK_NULL_HANDLE;
3202 }
3203
3204 private:
3205 VkSwapchainKHR m_swapchainKHR;
3206 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003207
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003208 static_assert( sizeof( SwapchainKHR ) == sizeof( VkSwapchainKHR ), "handle and wrapper have different size!" );
3209
3210 class DebugReportCallbackEXT
3211 {
3212 public:
3213 DebugReportCallbackEXT()
3214 : m_debugReportCallbackEXT(VK_NULL_HANDLE)
3215 {}
3216
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07003217 DebugReportCallbackEXT( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003218 : m_debugReportCallbackEXT(VK_NULL_HANDLE)
3219 {}
3220
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003221 VULKAN_HPP_TYPESAFE_EXPLICIT DebugReportCallbackEXT( VkDebugReportCallbackEXT debugReportCallbackEXT )
3222 : m_debugReportCallbackEXT( debugReportCallbackEXT )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003223 {}
3224
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003225#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003226 DebugReportCallbackEXT & operator=(VkDebugReportCallbackEXT debugReportCallbackEXT)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003227 {
3228 m_debugReportCallbackEXT = debugReportCallbackEXT;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003229 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003230 }
3231#endif
3232
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003233 DebugReportCallbackEXT & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003234 {
3235 m_debugReportCallbackEXT = VK_NULL_HANDLE;
3236 return *this;
3237 }
3238
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003239 bool operator==( DebugReportCallbackEXT const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003240 {
3241 return m_debugReportCallbackEXT == rhs.m_debugReportCallbackEXT;
3242 }
3243
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003244 bool operator!=(DebugReportCallbackEXT const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003245 {
3246 return m_debugReportCallbackEXT != rhs.m_debugReportCallbackEXT;
3247 }
3248
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003249 bool operator<(DebugReportCallbackEXT const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003250 {
3251 return m_debugReportCallbackEXT < rhs.m_debugReportCallbackEXT;
3252 }
3253
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003254
3255
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003256 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDebugReportCallbackEXT() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003257 {
3258 return m_debugReportCallbackEXT;
3259 }
3260
3261 explicit operator bool() const
3262 {
3263 return m_debugReportCallbackEXT != VK_NULL_HANDLE;
3264 }
3265
3266 bool operator!() const
3267 {
3268 return m_debugReportCallbackEXT == VK_NULL_HANDLE;
3269 }
3270
3271 private:
3272 VkDebugReportCallbackEXT m_debugReportCallbackEXT;
3273 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003274
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003275 static_assert( sizeof( DebugReportCallbackEXT ) == sizeof( VkDebugReportCallbackEXT ), "handle and wrapper have different size!" );
3276
3277 struct Offset2D
3278 {
3279 Offset2D( int32_t x_ = 0, int32_t y_ = 0 )
3280 : x( x_ )
3281 , y( y_ )
3282 {
3283 }
3284
3285 Offset2D( VkOffset2D const & rhs )
3286 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003287 memcpy( this, &rhs, sizeof( Offset2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003288 }
3289
3290 Offset2D& operator=( VkOffset2D const & rhs )
3291 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003292 memcpy( this, &rhs, sizeof( Offset2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003293 return *this;
3294 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003295 Offset2D& setX( int32_t x_ )
3296 {
3297 x = x_;
3298 return *this;
3299 }
3300
3301 Offset2D& setY( int32_t y_ )
3302 {
3303 y = y_;
3304 return *this;
3305 }
3306
3307 operator const VkOffset2D&() const
3308 {
3309 return *reinterpret_cast<const VkOffset2D*>(this);
3310 }
3311
3312 bool operator==( Offset2D const& rhs ) const
3313 {
3314 return ( x == rhs.x )
3315 && ( y == rhs.y );
3316 }
3317
3318 bool operator!=( Offset2D const& rhs ) const
3319 {
3320 return !operator==( rhs );
3321 }
3322
3323 int32_t x;
3324 int32_t y;
3325 };
3326 static_assert( sizeof( Offset2D ) == sizeof( VkOffset2D ), "struct and wrapper have different size!" );
3327
3328 struct Offset3D
3329 {
3330 Offset3D( int32_t x_ = 0, int32_t y_ = 0, int32_t z_ = 0 )
3331 : x( x_ )
3332 , y( y_ )
3333 , z( z_ )
3334 {
3335 }
3336
3337 Offset3D( VkOffset3D const & rhs )
3338 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003339 memcpy( this, &rhs, sizeof( Offset3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003340 }
3341
3342 Offset3D& operator=( VkOffset3D const & rhs )
3343 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003344 memcpy( this, &rhs, sizeof( Offset3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003345 return *this;
3346 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003347 Offset3D& setX( int32_t x_ )
3348 {
3349 x = x_;
3350 return *this;
3351 }
3352
3353 Offset3D& setY( int32_t y_ )
3354 {
3355 y = y_;
3356 return *this;
3357 }
3358
3359 Offset3D& setZ( int32_t z_ )
3360 {
3361 z = z_;
3362 return *this;
3363 }
3364
3365 operator const VkOffset3D&() const
3366 {
3367 return *reinterpret_cast<const VkOffset3D*>(this);
3368 }
3369
3370 bool operator==( Offset3D const& rhs ) const
3371 {
3372 return ( x == rhs.x )
3373 && ( y == rhs.y )
3374 && ( z == rhs.z );
3375 }
3376
3377 bool operator!=( Offset3D const& rhs ) const
3378 {
3379 return !operator==( rhs );
3380 }
3381
3382 int32_t x;
3383 int32_t y;
3384 int32_t z;
3385 };
3386 static_assert( sizeof( Offset3D ) == sizeof( VkOffset3D ), "struct and wrapper have different size!" );
3387
3388 struct Extent2D
3389 {
3390 Extent2D( uint32_t width_ = 0, uint32_t height_ = 0 )
3391 : width( width_ )
3392 , height( height_ )
3393 {
3394 }
3395
3396 Extent2D( VkExtent2D const & rhs )
3397 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003398 memcpy( this, &rhs, sizeof( Extent2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003399 }
3400
3401 Extent2D& operator=( VkExtent2D const & rhs )
3402 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003403 memcpy( this, &rhs, sizeof( Extent2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003404 return *this;
3405 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003406 Extent2D& setWidth( uint32_t width_ )
3407 {
3408 width = width_;
3409 return *this;
3410 }
3411
3412 Extent2D& setHeight( uint32_t height_ )
3413 {
3414 height = height_;
3415 return *this;
3416 }
3417
3418 operator const VkExtent2D&() const
3419 {
3420 return *reinterpret_cast<const VkExtent2D*>(this);
3421 }
3422
3423 bool operator==( Extent2D const& rhs ) const
3424 {
3425 return ( width == rhs.width )
3426 && ( height == rhs.height );
3427 }
3428
3429 bool operator!=( Extent2D const& rhs ) const
3430 {
3431 return !operator==( rhs );
3432 }
3433
3434 uint32_t width;
3435 uint32_t height;
3436 };
3437 static_assert( sizeof( Extent2D ) == sizeof( VkExtent2D ), "struct and wrapper have different size!" );
3438
3439 struct Extent3D
3440 {
3441 Extent3D( uint32_t width_ = 0, uint32_t height_ = 0, uint32_t depth_ = 0 )
3442 : width( width_ )
3443 , height( height_ )
3444 , depth( depth_ )
3445 {
3446 }
3447
3448 Extent3D( VkExtent3D const & rhs )
3449 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003450 memcpy( this, &rhs, sizeof( Extent3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003451 }
3452
3453 Extent3D& operator=( VkExtent3D const & rhs )
3454 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003455 memcpy( this, &rhs, sizeof( Extent3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003456 return *this;
3457 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003458 Extent3D& setWidth( uint32_t width_ )
3459 {
3460 width = width_;
3461 return *this;
3462 }
3463
3464 Extent3D& setHeight( uint32_t height_ )
3465 {
3466 height = height_;
3467 return *this;
3468 }
3469
3470 Extent3D& setDepth( uint32_t depth_ )
3471 {
3472 depth = depth_;
3473 return *this;
3474 }
3475
3476 operator const VkExtent3D&() const
3477 {
3478 return *reinterpret_cast<const VkExtent3D*>(this);
3479 }
3480
3481 bool operator==( Extent3D const& rhs ) const
3482 {
3483 return ( width == rhs.width )
3484 && ( height == rhs.height )
3485 && ( depth == rhs.depth );
3486 }
3487
3488 bool operator!=( Extent3D const& rhs ) const
3489 {
3490 return !operator==( rhs );
3491 }
3492
3493 uint32_t width;
3494 uint32_t height;
3495 uint32_t depth;
3496 };
3497 static_assert( sizeof( Extent3D ) == sizeof( VkExtent3D ), "struct and wrapper have different size!" );
3498
3499 struct Viewport
3500 {
3501 Viewport( float x_ = 0, float y_ = 0, float width_ = 0, float height_ = 0, float minDepth_ = 0, float maxDepth_ = 0 )
3502 : x( x_ )
3503 , y( y_ )
3504 , width( width_ )
3505 , height( height_ )
3506 , minDepth( minDepth_ )
3507 , maxDepth( maxDepth_ )
3508 {
3509 }
3510
3511 Viewport( VkViewport const & rhs )
3512 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003513 memcpy( this, &rhs, sizeof( Viewport ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003514 }
3515
3516 Viewport& operator=( VkViewport const & rhs )
3517 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003518 memcpy( this, &rhs, sizeof( Viewport ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003519 return *this;
3520 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003521 Viewport& setX( float x_ )
3522 {
3523 x = x_;
3524 return *this;
3525 }
3526
3527 Viewport& setY( float y_ )
3528 {
3529 y = y_;
3530 return *this;
3531 }
3532
3533 Viewport& setWidth( float width_ )
3534 {
3535 width = width_;
3536 return *this;
3537 }
3538
3539 Viewport& setHeight( float height_ )
3540 {
3541 height = height_;
3542 return *this;
3543 }
3544
3545 Viewport& setMinDepth( float minDepth_ )
3546 {
3547 minDepth = minDepth_;
3548 return *this;
3549 }
3550
3551 Viewport& setMaxDepth( float maxDepth_ )
3552 {
3553 maxDepth = maxDepth_;
3554 return *this;
3555 }
3556
3557 operator const VkViewport&() const
3558 {
3559 return *reinterpret_cast<const VkViewport*>(this);
3560 }
3561
3562 bool operator==( Viewport const& rhs ) const
3563 {
3564 return ( x == rhs.x )
3565 && ( y == rhs.y )
3566 && ( width == rhs.width )
3567 && ( height == rhs.height )
3568 && ( minDepth == rhs.minDepth )
3569 && ( maxDepth == rhs.maxDepth );
3570 }
3571
3572 bool operator!=( Viewport const& rhs ) const
3573 {
3574 return !operator==( rhs );
3575 }
3576
3577 float x;
3578 float y;
3579 float width;
3580 float height;
3581 float minDepth;
3582 float maxDepth;
3583 };
3584 static_assert( sizeof( Viewport ) == sizeof( VkViewport ), "struct and wrapper have different size!" );
3585
3586 struct Rect2D
3587 {
3588 Rect2D( Offset2D offset_ = Offset2D(), Extent2D extent_ = Extent2D() )
3589 : offset( offset_ )
3590 , extent( extent_ )
3591 {
3592 }
3593
3594 Rect2D( VkRect2D const & rhs )
3595 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003596 memcpy( this, &rhs, sizeof( Rect2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003597 }
3598
3599 Rect2D& operator=( VkRect2D const & rhs )
3600 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003601 memcpy( this, &rhs, sizeof( Rect2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003602 return *this;
3603 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003604 Rect2D& setOffset( Offset2D offset_ )
3605 {
3606 offset = offset_;
3607 return *this;
3608 }
3609
3610 Rect2D& setExtent( Extent2D extent_ )
3611 {
3612 extent = extent_;
3613 return *this;
3614 }
3615
3616 operator const VkRect2D&() const
3617 {
3618 return *reinterpret_cast<const VkRect2D*>(this);
3619 }
3620
3621 bool operator==( Rect2D const& rhs ) const
3622 {
3623 return ( offset == rhs.offset )
3624 && ( extent == rhs.extent );
3625 }
3626
3627 bool operator!=( Rect2D const& rhs ) const
3628 {
3629 return !operator==( rhs );
3630 }
3631
3632 Offset2D offset;
3633 Extent2D extent;
3634 };
3635 static_assert( sizeof( Rect2D ) == sizeof( VkRect2D ), "struct and wrapper have different size!" );
3636
3637 struct ClearRect
3638 {
3639 ClearRect( Rect2D rect_ = Rect2D(), uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
3640 : rect( rect_ )
3641 , baseArrayLayer( baseArrayLayer_ )
3642 , layerCount( layerCount_ )
3643 {
3644 }
3645
3646 ClearRect( VkClearRect const & rhs )
3647 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003648 memcpy( this, &rhs, sizeof( ClearRect ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003649 }
3650
3651 ClearRect& operator=( VkClearRect const & rhs )
3652 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003653 memcpy( this, &rhs, sizeof( ClearRect ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003654 return *this;
3655 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003656 ClearRect& setRect( Rect2D rect_ )
3657 {
3658 rect = rect_;
3659 return *this;
3660 }
3661
3662 ClearRect& setBaseArrayLayer( uint32_t baseArrayLayer_ )
3663 {
3664 baseArrayLayer = baseArrayLayer_;
3665 return *this;
3666 }
3667
3668 ClearRect& setLayerCount( uint32_t layerCount_ )
3669 {
3670 layerCount = layerCount_;
3671 return *this;
3672 }
3673
3674 operator const VkClearRect&() const
3675 {
3676 return *reinterpret_cast<const VkClearRect*>(this);
3677 }
3678
3679 bool operator==( ClearRect const& rhs ) const
3680 {
3681 return ( rect == rhs.rect )
3682 && ( baseArrayLayer == rhs.baseArrayLayer )
3683 && ( layerCount == rhs.layerCount );
3684 }
3685
3686 bool operator!=( ClearRect const& rhs ) const
3687 {
3688 return !operator==( rhs );
3689 }
3690
3691 Rect2D rect;
3692 uint32_t baseArrayLayer;
3693 uint32_t layerCount;
3694 };
3695 static_assert( sizeof( ClearRect ) == sizeof( VkClearRect ), "struct and wrapper have different size!" );
3696
3697 struct ExtensionProperties
3698 {
3699 operator const VkExtensionProperties&() const
3700 {
3701 return *reinterpret_cast<const VkExtensionProperties*>(this);
3702 }
3703
3704 bool operator==( ExtensionProperties const& rhs ) const
3705 {
3706 return ( memcmp( extensionName, rhs.extensionName, VK_MAX_EXTENSION_NAME_SIZE * sizeof( char ) ) == 0 )
3707 && ( specVersion == rhs.specVersion );
3708 }
3709
3710 bool operator!=( ExtensionProperties const& rhs ) const
3711 {
3712 return !operator==( rhs );
3713 }
3714
3715 char extensionName[VK_MAX_EXTENSION_NAME_SIZE];
3716 uint32_t specVersion;
3717 };
3718 static_assert( sizeof( ExtensionProperties ) == sizeof( VkExtensionProperties ), "struct and wrapper have different size!" );
3719
3720 struct LayerProperties
3721 {
3722 operator const VkLayerProperties&() const
3723 {
3724 return *reinterpret_cast<const VkLayerProperties*>(this);
3725 }
3726
3727 bool operator==( LayerProperties const& rhs ) const
3728 {
3729 return ( memcmp( layerName, rhs.layerName, VK_MAX_EXTENSION_NAME_SIZE * sizeof( char ) ) == 0 )
3730 && ( specVersion == rhs.specVersion )
3731 && ( implementationVersion == rhs.implementationVersion )
3732 && ( memcmp( description, rhs.description, VK_MAX_DESCRIPTION_SIZE * sizeof( char ) ) == 0 );
3733 }
3734
3735 bool operator!=( LayerProperties const& rhs ) const
3736 {
3737 return !operator==( rhs );
3738 }
3739
3740 char layerName[VK_MAX_EXTENSION_NAME_SIZE];
3741 uint32_t specVersion;
3742 uint32_t implementationVersion;
3743 char description[VK_MAX_DESCRIPTION_SIZE];
3744 };
3745 static_assert( sizeof( LayerProperties ) == sizeof( VkLayerProperties ), "struct and wrapper have different size!" );
3746
3747 struct AllocationCallbacks
3748 {
3749 AllocationCallbacks( void* pUserData_ = nullptr, PFN_vkAllocationFunction pfnAllocation_ = nullptr, PFN_vkReallocationFunction pfnReallocation_ = nullptr, PFN_vkFreeFunction pfnFree_ = nullptr, PFN_vkInternalAllocationNotification pfnInternalAllocation_ = nullptr, PFN_vkInternalFreeNotification pfnInternalFree_ = nullptr )
3750 : pUserData( pUserData_ )
3751 , pfnAllocation( pfnAllocation_ )
3752 , pfnReallocation( pfnReallocation_ )
3753 , pfnFree( pfnFree_ )
3754 , pfnInternalAllocation( pfnInternalAllocation_ )
3755 , pfnInternalFree( pfnInternalFree_ )
3756 {
3757 }
3758
3759 AllocationCallbacks( VkAllocationCallbacks const & rhs )
3760 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003761 memcpy( this, &rhs, sizeof( AllocationCallbacks ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003762 }
3763
3764 AllocationCallbacks& operator=( VkAllocationCallbacks const & rhs )
3765 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003766 memcpy( this, &rhs, sizeof( AllocationCallbacks ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003767 return *this;
3768 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003769 AllocationCallbacks& setPUserData( void* pUserData_ )
3770 {
3771 pUserData = pUserData_;
3772 return *this;
3773 }
3774
3775 AllocationCallbacks& setPfnAllocation( PFN_vkAllocationFunction pfnAllocation_ )
3776 {
3777 pfnAllocation = pfnAllocation_;
3778 return *this;
3779 }
3780
3781 AllocationCallbacks& setPfnReallocation( PFN_vkReallocationFunction pfnReallocation_ )
3782 {
3783 pfnReallocation = pfnReallocation_;
3784 return *this;
3785 }
3786
3787 AllocationCallbacks& setPfnFree( PFN_vkFreeFunction pfnFree_ )
3788 {
3789 pfnFree = pfnFree_;
3790 return *this;
3791 }
3792
3793 AllocationCallbacks& setPfnInternalAllocation( PFN_vkInternalAllocationNotification pfnInternalAllocation_ )
3794 {
3795 pfnInternalAllocation = pfnInternalAllocation_;
3796 return *this;
3797 }
3798
3799 AllocationCallbacks& setPfnInternalFree( PFN_vkInternalFreeNotification pfnInternalFree_ )
3800 {
3801 pfnInternalFree = pfnInternalFree_;
3802 return *this;
3803 }
3804
3805 operator const VkAllocationCallbacks&() const
3806 {
3807 return *reinterpret_cast<const VkAllocationCallbacks*>(this);
3808 }
3809
3810 bool operator==( AllocationCallbacks const& rhs ) const
3811 {
3812 return ( pUserData == rhs.pUserData )
3813 && ( pfnAllocation == rhs.pfnAllocation )
3814 && ( pfnReallocation == rhs.pfnReallocation )
3815 && ( pfnFree == rhs.pfnFree )
3816 && ( pfnInternalAllocation == rhs.pfnInternalAllocation )
3817 && ( pfnInternalFree == rhs.pfnInternalFree );
3818 }
3819
3820 bool operator!=( AllocationCallbacks const& rhs ) const
3821 {
3822 return !operator==( rhs );
3823 }
3824
3825 void* pUserData;
3826 PFN_vkAllocationFunction pfnAllocation;
3827 PFN_vkReallocationFunction pfnReallocation;
3828 PFN_vkFreeFunction pfnFree;
3829 PFN_vkInternalAllocationNotification pfnInternalAllocation;
3830 PFN_vkInternalFreeNotification pfnInternalFree;
3831 };
3832 static_assert( sizeof( AllocationCallbacks ) == sizeof( VkAllocationCallbacks ), "struct and wrapper have different size!" );
3833
3834 struct MemoryRequirements
3835 {
3836 operator const VkMemoryRequirements&() const
3837 {
3838 return *reinterpret_cast<const VkMemoryRequirements*>(this);
3839 }
3840
3841 bool operator==( MemoryRequirements const& rhs ) const
3842 {
3843 return ( size == rhs.size )
3844 && ( alignment == rhs.alignment )
3845 && ( memoryTypeBits == rhs.memoryTypeBits );
3846 }
3847
3848 bool operator!=( MemoryRequirements const& rhs ) const
3849 {
3850 return !operator==( rhs );
3851 }
3852
3853 DeviceSize size;
3854 DeviceSize alignment;
3855 uint32_t memoryTypeBits;
3856 };
3857 static_assert( sizeof( MemoryRequirements ) == sizeof( VkMemoryRequirements ), "struct and wrapper have different size!" );
3858
3859 struct DescriptorBufferInfo
3860 {
3861 DescriptorBufferInfo( Buffer buffer_ = Buffer(), DeviceSize offset_ = 0, DeviceSize range_ = 0 )
3862 : buffer( buffer_ )
3863 , offset( offset_ )
3864 , range( range_ )
3865 {
3866 }
3867
3868 DescriptorBufferInfo( VkDescriptorBufferInfo const & rhs )
3869 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003870 memcpy( this, &rhs, sizeof( DescriptorBufferInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003871 }
3872
3873 DescriptorBufferInfo& operator=( VkDescriptorBufferInfo const & rhs )
3874 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003875 memcpy( this, &rhs, sizeof( DescriptorBufferInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003876 return *this;
3877 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003878 DescriptorBufferInfo& setBuffer( Buffer buffer_ )
3879 {
3880 buffer = buffer_;
3881 return *this;
3882 }
3883
3884 DescriptorBufferInfo& setOffset( DeviceSize offset_ )
3885 {
3886 offset = offset_;
3887 return *this;
3888 }
3889
3890 DescriptorBufferInfo& setRange( DeviceSize range_ )
3891 {
3892 range = range_;
3893 return *this;
3894 }
3895
3896 operator const VkDescriptorBufferInfo&() const
3897 {
3898 return *reinterpret_cast<const VkDescriptorBufferInfo*>(this);
3899 }
3900
3901 bool operator==( DescriptorBufferInfo const& rhs ) const
3902 {
3903 return ( buffer == rhs.buffer )
3904 && ( offset == rhs.offset )
3905 && ( range == rhs.range );
3906 }
3907
3908 bool operator!=( DescriptorBufferInfo const& rhs ) const
3909 {
3910 return !operator==( rhs );
3911 }
3912
3913 Buffer buffer;
3914 DeviceSize offset;
3915 DeviceSize range;
3916 };
3917 static_assert( sizeof( DescriptorBufferInfo ) == sizeof( VkDescriptorBufferInfo ), "struct and wrapper have different size!" );
3918
3919 struct SubresourceLayout
3920 {
3921 operator const VkSubresourceLayout&() const
3922 {
3923 return *reinterpret_cast<const VkSubresourceLayout*>(this);
3924 }
3925
3926 bool operator==( SubresourceLayout const& rhs ) const
3927 {
3928 return ( offset == rhs.offset )
3929 && ( size == rhs.size )
3930 && ( rowPitch == rhs.rowPitch )
3931 && ( arrayPitch == rhs.arrayPitch )
3932 && ( depthPitch == rhs.depthPitch );
3933 }
3934
3935 bool operator!=( SubresourceLayout const& rhs ) const
3936 {
3937 return !operator==( rhs );
3938 }
3939
3940 DeviceSize offset;
3941 DeviceSize size;
3942 DeviceSize rowPitch;
3943 DeviceSize arrayPitch;
3944 DeviceSize depthPitch;
3945 };
3946 static_assert( sizeof( SubresourceLayout ) == sizeof( VkSubresourceLayout ), "struct and wrapper have different size!" );
3947
3948 struct BufferCopy
3949 {
3950 BufferCopy( DeviceSize srcOffset_ = 0, DeviceSize dstOffset_ = 0, DeviceSize size_ = 0 )
3951 : srcOffset( srcOffset_ )
3952 , dstOffset( dstOffset_ )
3953 , size( size_ )
3954 {
3955 }
3956
3957 BufferCopy( VkBufferCopy const & rhs )
3958 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003959 memcpy( this, &rhs, sizeof( BufferCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003960 }
3961
3962 BufferCopy& operator=( VkBufferCopy const & rhs )
3963 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003964 memcpy( this, &rhs, sizeof( BufferCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003965 return *this;
3966 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003967 BufferCopy& setSrcOffset( DeviceSize srcOffset_ )
3968 {
3969 srcOffset = srcOffset_;
3970 return *this;
3971 }
3972
3973 BufferCopy& setDstOffset( DeviceSize dstOffset_ )
3974 {
3975 dstOffset = dstOffset_;
3976 return *this;
3977 }
3978
3979 BufferCopy& setSize( DeviceSize size_ )
3980 {
3981 size = size_;
3982 return *this;
3983 }
3984
3985 operator const VkBufferCopy&() const
3986 {
3987 return *reinterpret_cast<const VkBufferCopy*>(this);
3988 }
3989
3990 bool operator==( BufferCopy const& rhs ) const
3991 {
3992 return ( srcOffset == rhs.srcOffset )
3993 && ( dstOffset == rhs.dstOffset )
3994 && ( size == rhs.size );
3995 }
3996
3997 bool operator!=( BufferCopy const& rhs ) const
3998 {
3999 return !operator==( rhs );
4000 }
4001
4002 DeviceSize srcOffset;
4003 DeviceSize dstOffset;
4004 DeviceSize size;
4005 };
4006 static_assert( sizeof( BufferCopy ) == sizeof( VkBufferCopy ), "struct and wrapper have different size!" );
4007
4008 struct SpecializationMapEntry
4009 {
4010 SpecializationMapEntry( uint32_t constantID_ = 0, uint32_t offset_ = 0, size_t size_ = 0 )
4011 : constantID( constantID_ )
4012 , offset( offset_ )
4013 , size( size_ )
4014 {
4015 }
4016
4017 SpecializationMapEntry( VkSpecializationMapEntry const & rhs )
4018 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004019 memcpy( this, &rhs, sizeof( SpecializationMapEntry ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004020 }
4021
4022 SpecializationMapEntry& operator=( VkSpecializationMapEntry const & rhs )
4023 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004024 memcpy( this, &rhs, sizeof( SpecializationMapEntry ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004025 return *this;
4026 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004027 SpecializationMapEntry& setConstantID( uint32_t constantID_ )
4028 {
4029 constantID = constantID_;
4030 return *this;
4031 }
4032
4033 SpecializationMapEntry& setOffset( uint32_t offset_ )
4034 {
4035 offset = offset_;
4036 return *this;
4037 }
4038
4039 SpecializationMapEntry& setSize( size_t size_ )
4040 {
4041 size = size_;
4042 return *this;
4043 }
4044
4045 operator const VkSpecializationMapEntry&() const
4046 {
4047 return *reinterpret_cast<const VkSpecializationMapEntry*>(this);
4048 }
4049
4050 bool operator==( SpecializationMapEntry const& rhs ) const
4051 {
4052 return ( constantID == rhs.constantID )
4053 && ( offset == rhs.offset )
4054 && ( size == rhs.size );
4055 }
4056
4057 bool operator!=( SpecializationMapEntry const& rhs ) const
4058 {
4059 return !operator==( rhs );
4060 }
4061
4062 uint32_t constantID;
4063 uint32_t offset;
4064 size_t size;
4065 };
4066 static_assert( sizeof( SpecializationMapEntry ) == sizeof( VkSpecializationMapEntry ), "struct and wrapper have different size!" );
4067
4068 struct SpecializationInfo
4069 {
4070 SpecializationInfo( uint32_t mapEntryCount_ = 0, const SpecializationMapEntry* pMapEntries_ = nullptr, size_t dataSize_ = 0, const void* pData_ = nullptr )
4071 : mapEntryCount( mapEntryCount_ )
4072 , pMapEntries( pMapEntries_ )
4073 , dataSize( dataSize_ )
4074 , pData( pData_ )
4075 {
4076 }
4077
4078 SpecializationInfo( VkSpecializationInfo const & rhs )
4079 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004080 memcpy( this, &rhs, sizeof( SpecializationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004081 }
4082
4083 SpecializationInfo& operator=( VkSpecializationInfo const & rhs )
4084 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004085 memcpy( this, &rhs, sizeof( SpecializationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004086 return *this;
4087 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004088 SpecializationInfo& setMapEntryCount( uint32_t mapEntryCount_ )
4089 {
4090 mapEntryCount = mapEntryCount_;
4091 return *this;
4092 }
4093
4094 SpecializationInfo& setPMapEntries( const SpecializationMapEntry* pMapEntries_ )
4095 {
4096 pMapEntries = pMapEntries_;
4097 return *this;
4098 }
4099
4100 SpecializationInfo& setDataSize( size_t dataSize_ )
4101 {
4102 dataSize = dataSize_;
4103 return *this;
4104 }
4105
4106 SpecializationInfo& setPData( const void* pData_ )
4107 {
4108 pData = pData_;
4109 return *this;
4110 }
4111
4112 operator const VkSpecializationInfo&() const
4113 {
4114 return *reinterpret_cast<const VkSpecializationInfo*>(this);
4115 }
4116
4117 bool operator==( SpecializationInfo const& rhs ) const
4118 {
4119 return ( mapEntryCount == rhs.mapEntryCount )
4120 && ( pMapEntries == rhs.pMapEntries )
4121 && ( dataSize == rhs.dataSize )
4122 && ( pData == rhs.pData );
4123 }
4124
4125 bool operator!=( SpecializationInfo const& rhs ) const
4126 {
4127 return !operator==( rhs );
4128 }
4129
4130 uint32_t mapEntryCount;
4131 const SpecializationMapEntry* pMapEntries;
4132 size_t dataSize;
4133 const void* pData;
4134 };
4135 static_assert( sizeof( SpecializationInfo ) == sizeof( VkSpecializationInfo ), "struct and wrapper have different size!" );
4136
4137 union ClearColorValue
4138 {
4139 ClearColorValue( const std::array<float,4>& float32_ = { {0} } )
4140 {
4141 memcpy( &float32, float32_.data(), 4 * sizeof( float ) );
4142 }
4143
4144 ClearColorValue( const std::array<int32_t,4>& int32_ )
4145 {
4146 memcpy( &int32, int32_.data(), 4 * sizeof( int32_t ) );
4147 }
4148
4149 ClearColorValue( const std::array<uint32_t,4>& uint32_ )
4150 {
4151 memcpy( &uint32, uint32_.data(), 4 * sizeof( uint32_t ) );
4152 }
4153
4154 ClearColorValue& setFloat32( std::array<float,4> float32_ )
4155 {
4156 memcpy( &float32, float32_.data(), 4 * sizeof( float ) );
4157 return *this;
4158 }
4159
4160 ClearColorValue& setInt32( std::array<int32_t,4> int32_ )
4161 {
4162 memcpy( &int32, int32_.data(), 4 * sizeof( int32_t ) );
4163 return *this;
4164 }
4165
4166 ClearColorValue& setUint32( std::array<uint32_t,4> uint32_ )
4167 {
4168 memcpy( &uint32, uint32_.data(), 4 * sizeof( uint32_t ) );
4169 return *this;
4170 }
4171
4172 operator VkClearColorValue const& () const
4173 {
4174 return *reinterpret_cast<const VkClearColorValue*>(this);
4175 }
4176
4177 float float32[4];
4178 int32_t int32[4];
4179 uint32_t uint32[4];
4180 };
4181
4182 struct ClearDepthStencilValue
4183 {
4184 ClearDepthStencilValue( float depth_ = 0, uint32_t stencil_ = 0 )
4185 : depth( depth_ )
4186 , stencil( stencil_ )
4187 {
4188 }
4189
4190 ClearDepthStencilValue( VkClearDepthStencilValue const & rhs )
4191 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004192 memcpy( this, &rhs, sizeof( ClearDepthStencilValue ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004193 }
4194
4195 ClearDepthStencilValue& operator=( VkClearDepthStencilValue const & rhs )
4196 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004197 memcpy( this, &rhs, sizeof( ClearDepthStencilValue ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004198 return *this;
4199 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004200 ClearDepthStencilValue& setDepth( float depth_ )
4201 {
4202 depth = depth_;
4203 return *this;
4204 }
4205
4206 ClearDepthStencilValue& setStencil( uint32_t stencil_ )
4207 {
4208 stencil = stencil_;
4209 return *this;
4210 }
4211
4212 operator const VkClearDepthStencilValue&() const
4213 {
4214 return *reinterpret_cast<const VkClearDepthStencilValue*>(this);
4215 }
4216
4217 bool operator==( ClearDepthStencilValue const& rhs ) const
4218 {
4219 return ( depth == rhs.depth )
4220 && ( stencil == rhs.stencil );
4221 }
4222
4223 bool operator!=( ClearDepthStencilValue const& rhs ) const
4224 {
4225 return !operator==( rhs );
4226 }
4227
4228 float depth;
4229 uint32_t stencil;
4230 };
4231 static_assert( sizeof( ClearDepthStencilValue ) == sizeof( VkClearDepthStencilValue ), "struct and wrapper have different size!" );
4232
4233 union ClearValue
4234 {
4235 ClearValue( ClearColorValue color_ = ClearColorValue() )
4236 {
4237 color = color_;
4238 }
4239
4240 ClearValue( ClearDepthStencilValue depthStencil_ )
4241 {
4242 depthStencil = depthStencil_;
4243 }
4244
4245 ClearValue& setColor( ClearColorValue color_ )
4246 {
4247 color = color_;
4248 return *this;
4249 }
4250
4251 ClearValue& setDepthStencil( ClearDepthStencilValue depthStencil_ )
4252 {
4253 depthStencil = depthStencil_;
4254 return *this;
4255 }
4256
4257 operator VkClearValue const& () const
4258 {
4259 return *reinterpret_cast<const VkClearValue*>(this);
4260 }
4261
4262#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
4263 ClearColorValue color;
4264 ClearDepthStencilValue depthStencil;
4265#else
4266 VkClearColorValue color;
4267 VkClearDepthStencilValue depthStencil;
4268#endif // VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
4269 };
4270
4271 struct PhysicalDeviceFeatures
4272 {
4273 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 )
4274 : robustBufferAccess( robustBufferAccess_ )
4275 , fullDrawIndexUint32( fullDrawIndexUint32_ )
4276 , imageCubeArray( imageCubeArray_ )
4277 , independentBlend( independentBlend_ )
4278 , geometryShader( geometryShader_ )
4279 , tessellationShader( tessellationShader_ )
4280 , sampleRateShading( sampleRateShading_ )
4281 , dualSrcBlend( dualSrcBlend_ )
4282 , logicOp( logicOp_ )
4283 , multiDrawIndirect( multiDrawIndirect_ )
4284 , drawIndirectFirstInstance( drawIndirectFirstInstance_ )
4285 , depthClamp( depthClamp_ )
4286 , depthBiasClamp( depthBiasClamp_ )
4287 , fillModeNonSolid( fillModeNonSolid_ )
4288 , depthBounds( depthBounds_ )
4289 , wideLines( wideLines_ )
4290 , largePoints( largePoints_ )
4291 , alphaToOne( alphaToOne_ )
4292 , multiViewport( multiViewport_ )
4293 , samplerAnisotropy( samplerAnisotropy_ )
4294 , textureCompressionETC2( textureCompressionETC2_ )
4295 , textureCompressionASTC_LDR( textureCompressionASTC_LDR_ )
4296 , textureCompressionBC( textureCompressionBC_ )
4297 , occlusionQueryPrecise( occlusionQueryPrecise_ )
4298 , pipelineStatisticsQuery( pipelineStatisticsQuery_ )
4299 , vertexPipelineStoresAndAtomics( vertexPipelineStoresAndAtomics_ )
4300 , fragmentStoresAndAtomics( fragmentStoresAndAtomics_ )
4301 , shaderTessellationAndGeometryPointSize( shaderTessellationAndGeometryPointSize_ )
4302 , shaderImageGatherExtended( shaderImageGatherExtended_ )
4303 , shaderStorageImageExtendedFormats( shaderStorageImageExtendedFormats_ )
4304 , shaderStorageImageMultisample( shaderStorageImageMultisample_ )
4305 , shaderStorageImageReadWithoutFormat( shaderStorageImageReadWithoutFormat_ )
4306 , shaderStorageImageWriteWithoutFormat( shaderStorageImageWriteWithoutFormat_ )
4307 , shaderUniformBufferArrayDynamicIndexing( shaderUniformBufferArrayDynamicIndexing_ )
4308 , shaderSampledImageArrayDynamicIndexing( shaderSampledImageArrayDynamicIndexing_ )
4309 , shaderStorageBufferArrayDynamicIndexing( shaderStorageBufferArrayDynamicIndexing_ )
4310 , shaderStorageImageArrayDynamicIndexing( shaderStorageImageArrayDynamicIndexing_ )
4311 , shaderClipDistance( shaderClipDistance_ )
4312 , shaderCullDistance( shaderCullDistance_ )
4313 , shaderFloat64( shaderFloat64_ )
4314 , shaderInt64( shaderInt64_ )
4315 , shaderInt16( shaderInt16_ )
4316 , shaderResourceResidency( shaderResourceResidency_ )
4317 , shaderResourceMinLod( shaderResourceMinLod_ )
4318 , sparseBinding( sparseBinding_ )
4319 , sparseResidencyBuffer( sparseResidencyBuffer_ )
4320 , sparseResidencyImage2D( sparseResidencyImage2D_ )
4321 , sparseResidencyImage3D( sparseResidencyImage3D_ )
4322 , sparseResidency2Samples( sparseResidency2Samples_ )
4323 , sparseResidency4Samples( sparseResidency4Samples_ )
4324 , sparseResidency8Samples( sparseResidency8Samples_ )
4325 , sparseResidency16Samples( sparseResidency16Samples_ )
4326 , sparseResidencyAliased( sparseResidencyAliased_ )
4327 , variableMultisampleRate( variableMultisampleRate_ )
4328 , inheritedQueries( inheritedQueries_ )
4329 {
4330 }
4331
4332 PhysicalDeviceFeatures( VkPhysicalDeviceFeatures const & rhs )
4333 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004334 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004335 }
4336
4337 PhysicalDeviceFeatures& operator=( VkPhysicalDeviceFeatures const & rhs )
4338 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004339 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004340 return *this;
4341 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004342 PhysicalDeviceFeatures& setRobustBufferAccess( Bool32 robustBufferAccess_ )
4343 {
4344 robustBufferAccess = robustBufferAccess_;
4345 return *this;
4346 }
4347
4348 PhysicalDeviceFeatures& setFullDrawIndexUint32( Bool32 fullDrawIndexUint32_ )
4349 {
4350 fullDrawIndexUint32 = fullDrawIndexUint32_;
4351 return *this;
4352 }
4353
4354 PhysicalDeviceFeatures& setImageCubeArray( Bool32 imageCubeArray_ )
4355 {
4356 imageCubeArray = imageCubeArray_;
4357 return *this;
4358 }
4359
4360 PhysicalDeviceFeatures& setIndependentBlend( Bool32 independentBlend_ )
4361 {
4362 independentBlend = independentBlend_;
4363 return *this;
4364 }
4365
4366 PhysicalDeviceFeatures& setGeometryShader( Bool32 geometryShader_ )
4367 {
4368 geometryShader = geometryShader_;
4369 return *this;
4370 }
4371
4372 PhysicalDeviceFeatures& setTessellationShader( Bool32 tessellationShader_ )
4373 {
4374 tessellationShader = tessellationShader_;
4375 return *this;
4376 }
4377
4378 PhysicalDeviceFeatures& setSampleRateShading( Bool32 sampleRateShading_ )
4379 {
4380 sampleRateShading = sampleRateShading_;
4381 return *this;
4382 }
4383
4384 PhysicalDeviceFeatures& setDualSrcBlend( Bool32 dualSrcBlend_ )
4385 {
4386 dualSrcBlend = dualSrcBlend_;
4387 return *this;
4388 }
4389
4390 PhysicalDeviceFeatures& setLogicOp( Bool32 logicOp_ )
4391 {
4392 logicOp = logicOp_;
4393 return *this;
4394 }
4395
4396 PhysicalDeviceFeatures& setMultiDrawIndirect( Bool32 multiDrawIndirect_ )
4397 {
4398 multiDrawIndirect = multiDrawIndirect_;
4399 return *this;
4400 }
4401
4402 PhysicalDeviceFeatures& setDrawIndirectFirstInstance( Bool32 drawIndirectFirstInstance_ )
4403 {
4404 drawIndirectFirstInstance = drawIndirectFirstInstance_;
4405 return *this;
4406 }
4407
4408 PhysicalDeviceFeatures& setDepthClamp( Bool32 depthClamp_ )
4409 {
4410 depthClamp = depthClamp_;
4411 return *this;
4412 }
4413
4414 PhysicalDeviceFeatures& setDepthBiasClamp( Bool32 depthBiasClamp_ )
4415 {
4416 depthBiasClamp = depthBiasClamp_;
4417 return *this;
4418 }
4419
4420 PhysicalDeviceFeatures& setFillModeNonSolid( Bool32 fillModeNonSolid_ )
4421 {
4422 fillModeNonSolid = fillModeNonSolid_;
4423 return *this;
4424 }
4425
4426 PhysicalDeviceFeatures& setDepthBounds( Bool32 depthBounds_ )
4427 {
4428 depthBounds = depthBounds_;
4429 return *this;
4430 }
4431
4432 PhysicalDeviceFeatures& setWideLines( Bool32 wideLines_ )
4433 {
4434 wideLines = wideLines_;
4435 return *this;
4436 }
4437
4438 PhysicalDeviceFeatures& setLargePoints( Bool32 largePoints_ )
4439 {
4440 largePoints = largePoints_;
4441 return *this;
4442 }
4443
4444 PhysicalDeviceFeatures& setAlphaToOne( Bool32 alphaToOne_ )
4445 {
4446 alphaToOne = alphaToOne_;
4447 return *this;
4448 }
4449
4450 PhysicalDeviceFeatures& setMultiViewport( Bool32 multiViewport_ )
4451 {
4452 multiViewport = multiViewport_;
4453 return *this;
4454 }
4455
4456 PhysicalDeviceFeatures& setSamplerAnisotropy( Bool32 samplerAnisotropy_ )
4457 {
4458 samplerAnisotropy = samplerAnisotropy_;
4459 return *this;
4460 }
4461
4462 PhysicalDeviceFeatures& setTextureCompressionETC2( Bool32 textureCompressionETC2_ )
4463 {
4464 textureCompressionETC2 = textureCompressionETC2_;
4465 return *this;
4466 }
4467
4468 PhysicalDeviceFeatures& setTextureCompressionASTC_LDR( Bool32 textureCompressionASTC_LDR_ )
4469 {
4470 textureCompressionASTC_LDR = textureCompressionASTC_LDR_;
4471 return *this;
4472 }
4473
4474 PhysicalDeviceFeatures& setTextureCompressionBC( Bool32 textureCompressionBC_ )
4475 {
4476 textureCompressionBC = textureCompressionBC_;
4477 return *this;
4478 }
4479
4480 PhysicalDeviceFeatures& setOcclusionQueryPrecise( Bool32 occlusionQueryPrecise_ )
4481 {
4482 occlusionQueryPrecise = occlusionQueryPrecise_;
4483 return *this;
4484 }
4485
4486 PhysicalDeviceFeatures& setPipelineStatisticsQuery( Bool32 pipelineStatisticsQuery_ )
4487 {
4488 pipelineStatisticsQuery = pipelineStatisticsQuery_;
4489 return *this;
4490 }
4491
4492 PhysicalDeviceFeatures& setVertexPipelineStoresAndAtomics( Bool32 vertexPipelineStoresAndAtomics_ )
4493 {
4494 vertexPipelineStoresAndAtomics = vertexPipelineStoresAndAtomics_;
4495 return *this;
4496 }
4497
4498 PhysicalDeviceFeatures& setFragmentStoresAndAtomics( Bool32 fragmentStoresAndAtomics_ )
4499 {
4500 fragmentStoresAndAtomics = fragmentStoresAndAtomics_;
4501 return *this;
4502 }
4503
4504 PhysicalDeviceFeatures& setShaderTessellationAndGeometryPointSize( Bool32 shaderTessellationAndGeometryPointSize_ )
4505 {
4506 shaderTessellationAndGeometryPointSize = shaderTessellationAndGeometryPointSize_;
4507 return *this;
4508 }
4509
4510 PhysicalDeviceFeatures& setShaderImageGatherExtended( Bool32 shaderImageGatherExtended_ )
4511 {
4512 shaderImageGatherExtended = shaderImageGatherExtended_;
4513 return *this;
4514 }
4515
4516 PhysicalDeviceFeatures& setShaderStorageImageExtendedFormats( Bool32 shaderStorageImageExtendedFormats_ )
4517 {
4518 shaderStorageImageExtendedFormats = shaderStorageImageExtendedFormats_;
4519 return *this;
4520 }
4521
4522 PhysicalDeviceFeatures& setShaderStorageImageMultisample( Bool32 shaderStorageImageMultisample_ )
4523 {
4524 shaderStorageImageMultisample = shaderStorageImageMultisample_;
4525 return *this;
4526 }
4527
4528 PhysicalDeviceFeatures& setShaderStorageImageReadWithoutFormat( Bool32 shaderStorageImageReadWithoutFormat_ )
4529 {
4530 shaderStorageImageReadWithoutFormat = shaderStorageImageReadWithoutFormat_;
4531 return *this;
4532 }
4533
4534 PhysicalDeviceFeatures& setShaderStorageImageWriteWithoutFormat( Bool32 shaderStorageImageWriteWithoutFormat_ )
4535 {
4536 shaderStorageImageWriteWithoutFormat = shaderStorageImageWriteWithoutFormat_;
4537 return *this;
4538 }
4539
4540 PhysicalDeviceFeatures& setShaderUniformBufferArrayDynamicIndexing( Bool32 shaderUniformBufferArrayDynamicIndexing_ )
4541 {
4542 shaderUniformBufferArrayDynamicIndexing = shaderUniformBufferArrayDynamicIndexing_;
4543 return *this;
4544 }
4545
4546 PhysicalDeviceFeatures& setShaderSampledImageArrayDynamicIndexing( Bool32 shaderSampledImageArrayDynamicIndexing_ )
4547 {
4548 shaderSampledImageArrayDynamicIndexing = shaderSampledImageArrayDynamicIndexing_;
4549 return *this;
4550 }
4551
4552 PhysicalDeviceFeatures& setShaderStorageBufferArrayDynamicIndexing( Bool32 shaderStorageBufferArrayDynamicIndexing_ )
4553 {
4554 shaderStorageBufferArrayDynamicIndexing = shaderStorageBufferArrayDynamicIndexing_;
4555 return *this;
4556 }
4557
4558 PhysicalDeviceFeatures& setShaderStorageImageArrayDynamicIndexing( Bool32 shaderStorageImageArrayDynamicIndexing_ )
4559 {
4560 shaderStorageImageArrayDynamicIndexing = shaderStorageImageArrayDynamicIndexing_;
4561 return *this;
4562 }
4563
4564 PhysicalDeviceFeatures& setShaderClipDistance( Bool32 shaderClipDistance_ )
4565 {
4566 shaderClipDistance = shaderClipDistance_;
4567 return *this;
4568 }
4569
4570 PhysicalDeviceFeatures& setShaderCullDistance( Bool32 shaderCullDistance_ )
4571 {
4572 shaderCullDistance = shaderCullDistance_;
4573 return *this;
4574 }
4575
4576 PhysicalDeviceFeatures& setShaderFloat64( Bool32 shaderFloat64_ )
4577 {
4578 shaderFloat64 = shaderFloat64_;
4579 return *this;
4580 }
4581
4582 PhysicalDeviceFeatures& setShaderInt64( Bool32 shaderInt64_ )
4583 {
4584 shaderInt64 = shaderInt64_;
4585 return *this;
4586 }
4587
4588 PhysicalDeviceFeatures& setShaderInt16( Bool32 shaderInt16_ )
4589 {
4590 shaderInt16 = shaderInt16_;
4591 return *this;
4592 }
4593
4594 PhysicalDeviceFeatures& setShaderResourceResidency( Bool32 shaderResourceResidency_ )
4595 {
4596 shaderResourceResidency = shaderResourceResidency_;
4597 return *this;
4598 }
4599
4600 PhysicalDeviceFeatures& setShaderResourceMinLod( Bool32 shaderResourceMinLod_ )
4601 {
4602 shaderResourceMinLod = shaderResourceMinLod_;
4603 return *this;
4604 }
4605
4606 PhysicalDeviceFeatures& setSparseBinding( Bool32 sparseBinding_ )
4607 {
4608 sparseBinding = sparseBinding_;
4609 return *this;
4610 }
4611
4612 PhysicalDeviceFeatures& setSparseResidencyBuffer( Bool32 sparseResidencyBuffer_ )
4613 {
4614 sparseResidencyBuffer = sparseResidencyBuffer_;
4615 return *this;
4616 }
4617
4618 PhysicalDeviceFeatures& setSparseResidencyImage2D( Bool32 sparseResidencyImage2D_ )
4619 {
4620 sparseResidencyImage2D = sparseResidencyImage2D_;
4621 return *this;
4622 }
4623
4624 PhysicalDeviceFeatures& setSparseResidencyImage3D( Bool32 sparseResidencyImage3D_ )
4625 {
4626 sparseResidencyImage3D = sparseResidencyImage3D_;
4627 return *this;
4628 }
4629
4630 PhysicalDeviceFeatures& setSparseResidency2Samples( Bool32 sparseResidency2Samples_ )
4631 {
4632 sparseResidency2Samples = sparseResidency2Samples_;
4633 return *this;
4634 }
4635
4636 PhysicalDeviceFeatures& setSparseResidency4Samples( Bool32 sparseResidency4Samples_ )
4637 {
4638 sparseResidency4Samples = sparseResidency4Samples_;
4639 return *this;
4640 }
4641
4642 PhysicalDeviceFeatures& setSparseResidency8Samples( Bool32 sparseResidency8Samples_ )
4643 {
4644 sparseResidency8Samples = sparseResidency8Samples_;
4645 return *this;
4646 }
4647
4648 PhysicalDeviceFeatures& setSparseResidency16Samples( Bool32 sparseResidency16Samples_ )
4649 {
4650 sparseResidency16Samples = sparseResidency16Samples_;
4651 return *this;
4652 }
4653
4654 PhysicalDeviceFeatures& setSparseResidencyAliased( Bool32 sparseResidencyAliased_ )
4655 {
4656 sparseResidencyAliased = sparseResidencyAliased_;
4657 return *this;
4658 }
4659
4660 PhysicalDeviceFeatures& setVariableMultisampleRate( Bool32 variableMultisampleRate_ )
4661 {
4662 variableMultisampleRate = variableMultisampleRate_;
4663 return *this;
4664 }
4665
4666 PhysicalDeviceFeatures& setInheritedQueries( Bool32 inheritedQueries_ )
4667 {
4668 inheritedQueries = inheritedQueries_;
4669 return *this;
4670 }
4671
4672 operator const VkPhysicalDeviceFeatures&() const
4673 {
4674 return *reinterpret_cast<const VkPhysicalDeviceFeatures*>(this);
4675 }
4676
4677 bool operator==( PhysicalDeviceFeatures const& rhs ) const
4678 {
4679 return ( robustBufferAccess == rhs.robustBufferAccess )
4680 && ( fullDrawIndexUint32 == rhs.fullDrawIndexUint32 )
4681 && ( imageCubeArray == rhs.imageCubeArray )
4682 && ( independentBlend == rhs.independentBlend )
4683 && ( geometryShader == rhs.geometryShader )
4684 && ( tessellationShader == rhs.tessellationShader )
4685 && ( sampleRateShading == rhs.sampleRateShading )
4686 && ( dualSrcBlend == rhs.dualSrcBlend )
4687 && ( logicOp == rhs.logicOp )
4688 && ( multiDrawIndirect == rhs.multiDrawIndirect )
4689 && ( drawIndirectFirstInstance == rhs.drawIndirectFirstInstance )
4690 && ( depthClamp == rhs.depthClamp )
4691 && ( depthBiasClamp == rhs.depthBiasClamp )
4692 && ( fillModeNonSolid == rhs.fillModeNonSolid )
4693 && ( depthBounds == rhs.depthBounds )
4694 && ( wideLines == rhs.wideLines )
4695 && ( largePoints == rhs.largePoints )
4696 && ( alphaToOne == rhs.alphaToOne )
4697 && ( multiViewport == rhs.multiViewport )
4698 && ( samplerAnisotropy == rhs.samplerAnisotropy )
4699 && ( textureCompressionETC2 == rhs.textureCompressionETC2 )
4700 && ( textureCompressionASTC_LDR == rhs.textureCompressionASTC_LDR )
4701 && ( textureCompressionBC == rhs.textureCompressionBC )
4702 && ( occlusionQueryPrecise == rhs.occlusionQueryPrecise )
4703 && ( pipelineStatisticsQuery == rhs.pipelineStatisticsQuery )
4704 && ( vertexPipelineStoresAndAtomics == rhs.vertexPipelineStoresAndAtomics )
4705 && ( fragmentStoresAndAtomics == rhs.fragmentStoresAndAtomics )
4706 && ( shaderTessellationAndGeometryPointSize == rhs.shaderTessellationAndGeometryPointSize )
4707 && ( shaderImageGatherExtended == rhs.shaderImageGatherExtended )
4708 && ( shaderStorageImageExtendedFormats == rhs.shaderStorageImageExtendedFormats )
4709 && ( shaderStorageImageMultisample == rhs.shaderStorageImageMultisample )
4710 && ( shaderStorageImageReadWithoutFormat == rhs.shaderStorageImageReadWithoutFormat )
4711 && ( shaderStorageImageWriteWithoutFormat == rhs.shaderStorageImageWriteWithoutFormat )
4712 && ( shaderUniformBufferArrayDynamicIndexing == rhs.shaderUniformBufferArrayDynamicIndexing )
4713 && ( shaderSampledImageArrayDynamicIndexing == rhs.shaderSampledImageArrayDynamicIndexing )
4714 && ( shaderStorageBufferArrayDynamicIndexing == rhs.shaderStorageBufferArrayDynamicIndexing )
4715 && ( shaderStorageImageArrayDynamicIndexing == rhs.shaderStorageImageArrayDynamicIndexing )
4716 && ( shaderClipDistance == rhs.shaderClipDistance )
4717 && ( shaderCullDistance == rhs.shaderCullDistance )
4718 && ( shaderFloat64 == rhs.shaderFloat64 )
4719 && ( shaderInt64 == rhs.shaderInt64 )
4720 && ( shaderInt16 == rhs.shaderInt16 )
4721 && ( shaderResourceResidency == rhs.shaderResourceResidency )
4722 && ( shaderResourceMinLod == rhs.shaderResourceMinLod )
4723 && ( sparseBinding == rhs.sparseBinding )
4724 && ( sparseResidencyBuffer == rhs.sparseResidencyBuffer )
4725 && ( sparseResidencyImage2D == rhs.sparseResidencyImage2D )
4726 && ( sparseResidencyImage3D == rhs.sparseResidencyImage3D )
4727 && ( sparseResidency2Samples == rhs.sparseResidency2Samples )
4728 && ( sparseResidency4Samples == rhs.sparseResidency4Samples )
4729 && ( sparseResidency8Samples == rhs.sparseResidency8Samples )
4730 && ( sparseResidency16Samples == rhs.sparseResidency16Samples )
4731 && ( sparseResidencyAliased == rhs.sparseResidencyAliased )
4732 && ( variableMultisampleRate == rhs.variableMultisampleRate )
4733 && ( inheritedQueries == rhs.inheritedQueries );
4734 }
4735
4736 bool operator!=( PhysicalDeviceFeatures const& rhs ) const
4737 {
4738 return !operator==( rhs );
4739 }
4740
4741 Bool32 robustBufferAccess;
4742 Bool32 fullDrawIndexUint32;
4743 Bool32 imageCubeArray;
4744 Bool32 independentBlend;
4745 Bool32 geometryShader;
4746 Bool32 tessellationShader;
4747 Bool32 sampleRateShading;
4748 Bool32 dualSrcBlend;
4749 Bool32 logicOp;
4750 Bool32 multiDrawIndirect;
4751 Bool32 drawIndirectFirstInstance;
4752 Bool32 depthClamp;
4753 Bool32 depthBiasClamp;
4754 Bool32 fillModeNonSolid;
4755 Bool32 depthBounds;
4756 Bool32 wideLines;
4757 Bool32 largePoints;
4758 Bool32 alphaToOne;
4759 Bool32 multiViewport;
4760 Bool32 samplerAnisotropy;
4761 Bool32 textureCompressionETC2;
4762 Bool32 textureCompressionASTC_LDR;
4763 Bool32 textureCompressionBC;
4764 Bool32 occlusionQueryPrecise;
4765 Bool32 pipelineStatisticsQuery;
4766 Bool32 vertexPipelineStoresAndAtomics;
4767 Bool32 fragmentStoresAndAtomics;
4768 Bool32 shaderTessellationAndGeometryPointSize;
4769 Bool32 shaderImageGatherExtended;
4770 Bool32 shaderStorageImageExtendedFormats;
4771 Bool32 shaderStorageImageMultisample;
4772 Bool32 shaderStorageImageReadWithoutFormat;
4773 Bool32 shaderStorageImageWriteWithoutFormat;
4774 Bool32 shaderUniformBufferArrayDynamicIndexing;
4775 Bool32 shaderSampledImageArrayDynamicIndexing;
4776 Bool32 shaderStorageBufferArrayDynamicIndexing;
4777 Bool32 shaderStorageImageArrayDynamicIndexing;
4778 Bool32 shaderClipDistance;
4779 Bool32 shaderCullDistance;
4780 Bool32 shaderFloat64;
4781 Bool32 shaderInt64;
4782 Bool32 shaderInt16;
4783 Bool32 shaderResourceResidency;
4784 Bool32 shaderResourceMinLod;
4785 Bool32 sparseBinding;
4786 Bool32 sparseResidencyBuffer;
4787 Bool32 sparseResidencyImage2D;
4788 Bool32 sparseResidencyImage3D;
4789 Bool32 sparseResidency2Samples;
4790 Bool32 sparseResidency4Samples;
4791 Bool32 sparseResidency8Samples;
4792 Bool32 sparseResidency16Samples;
4793 Bool32 sparseResidencyAliased;
4794 Bool32 variableMultisampleRate;
4795 Bool32 inheritedQueries;
4796 };
4797 static_assert( sizeof( PhysicalDeviceFeatures ) == sizeof( VkPhysicalDeviceFeatures ), "struct and wrapper have different size!" );
4798
4799 struct PhysicalDeviceSparseProperties
4800 {
4801 operator const VkPhysicalDeviceSparseProperties&() const
4802 {
4803 return *reinterpret_cast<const VkPhysicalDeviceSparseProperties*>(this);
4804 }
4805
4806 bool operator==( PhysicalDeviceSparseProperties const& rhs ) const
4807 {
4808 return ( residencyStandard2DBlockShape == rhs.residencyStandard2DBlockShape )
4809 && ( residencyStandard2DMultisampleBlockShape == rhs.residencyStandard2DMultisampleBlockShape )
4810 && ( residencyStandard3DBlockShape == rhs.residencyStandard3DBlockShape )
4811 && ( residencyAlignedMipSize == rhs.residencyAlignedMipSize )
4812 && ( residencyNonResidentStrict == rhs.residencyNonResidentStrict );
4813 }
4814
4815 bool operator!=( PhysicalDeviceSparseProperties const& rhs ) const
4816 {
4817 return !operator==( rhs );
4818 }
4819
4820 Bool32 residencyStandard2DBlockShape;
4821 Bool32 residencyStandard2DMultisampleBlockShape;
4822 Bool32 residencyStandard3DBlockShape;
4823 Bool32 residencyAlignedMipSize;
4824 Bool32 residencyNonResidentStrict;
4825 };
4826 static_assert( sizeof( PhysicalDeviceSparseProperties ) == sizeof( VkPhysicalDeviceSparseProperties ), "struct and wrapper have different size!" );
4827
4828 struct DrawIndirectCommand
4829 {
4830 DrawIndirectCommand( uint32_t vertexCount_ = 0, uint32_t instanceCount_ = 0, uint32_t firstVertex_ = 0, uint32_t firstInstance_ = 0 )
4831 : vertexCount( vertexCount_ )
4832 , instanceCount( instanceCount_ )
4833 , firstVertex( firstVertex_ )
4834 , firstInstance( firstInstance_ )
4835 {
4836 }
4837
4838 DrawIndirectCommand( VkDrawIndirectCommand const & rhs )
4839 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004840 memcpy( this, &rhs, sizeof( DrawIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004841 }
4842
4843 DrawIndirectCommand& operator=( VkDrawIndirectCommand const & rhs )
4844 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004845 memcpy( this, &rhs, sizeof( DrawIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004846 return *this;
4847 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004848 DrawIndirectCommand& setVertexCount( uint32_t vertexCount_ )
4849 {
4850 vertexCount = vertexCount_;
4851 return *this;
4852 }
4853
4854 DrawIndirectCommand& setInstanceCount( uint32_t instanceCount_ )
4855 {
4856 instanceCount = instanceCount_;
4857 return *this;
4858 }
4859
4860 DrawIndirectCommand& setFirstVertex( uint32_t firstVertex_ )
4861 {
4862 firstVertex = firstVertex_;
4863 return *this;
4864 }
4865
4866 DrawIndirectCommand& setFirstInstance( uint32_t firstInstance_ )
4867 {
4868 firstInstance = firstInstance_;
4869 return *this;
4870 }
4871
4872 operator const VkDrawIndirectCommand&() const
4873 {
4874 return *reinterpret_cast<const VkDrawIndirectCommand*>(this);
4875 }
4876
4877 bool operator==( DrawIndirectCommand const& rhs ) const
4878 {
4879 return ( vertexCount == rhs.vertexCount )
4880 && ( instanceCount == rhs.instanceCount )
4881 && ( firstVertex == rhs.firstVertex )
4882 && ( firstInstance == rhs.firstInstance );
4883 }
4884
4885 bool operator!=( DrawIndirectCommand const& rhs ) const
4886 {
4887 return !operator==( rhs );
4888 }
4889
4890 uint32_t vertexCount;
4891 uint32_t instanceCount;
4892 uint32_t firstVertex;
4893 uint32_t firstInstance;
4894 };
4895 static_assert( sizeof( DrawIndirectCommand ) == sizeof( VkDrawIndirectCommand ), "struct and wrapper have different size!" );
4896
4897 struct DrawIndexedIndirectCommand
4898 {
4899 DrawIndexedIndirectCommand( uint32_t indexCount_ = 0, uint32_t instanceCount_ = 0, uint32_t firstIndex_ = 0, int32_t vertexOffset_ = 0, uint32_t firstInstance_ = 0 )
4900 : indexCount( indexCount_ )
4901 , instanceCount( instanceCount_ )
4902 , firstIndex( firstIndex_ )
4903 , vertexOffset( vertexOffset_ )
4904 , firstInstance( firstInstance_ )
4905 {
4906 }
4907
4908 DrawIndexedIndirectCommand( VkDrawIndexedIndirectCommand const & rhs )
4909 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004910 memcpy( this, &rhs, sizeof( DrawIndexedIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004911 }
4912
4913 DrawIndexedIndirectCommand& operator=( VkDrawIndexedIndirectCommand const & rhs )
4914 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004915 memcpy( this, &rhs, sizeof( DrawIndexedIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004916 return *this;
4917 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004918 DrawIndexedIndirectCommand& setIndexCount( uint32_t indexCount_ )
4919 {
4920 indexCount = indexCount_;
4921 return *this;
4922 }
4923
4924 DrawIndexedIndirectCommand& setInstanceCount( uint32_t instanceCount_ )
4925 {
4926 instanceCount = instanceCount_;
4927 return *this;
4928 }
4929
4930 DrawIndexedIndirectCommand& setFirstIndex( uint32_t firstIndex_ )
4931 {
4932 firstIndex = firstIndex_;
4933 return *this;
4934 }
4935
4936 DrawIndexedIndirectCommand& setVertexOffset( int32_t vertexOffset_ )
4937 {
4938 vertexOffset = vertexOffset_;
4939 return *this;
4940 }
4941
4942 DrawIndexedIndirectCommand& setFirstInstance( uint32_t firstInstance_ )
4943 {
4944 firstInstance = firstInstance_;
4945 return *this;
4946 }
4947
4948 operator const VkDrawIndexedIndirectCommand&() const
4949 {
4950 return *reinterpret_cast<const VkDrawIndexedIndirectCommand*>(this);
4951 }
4952
4953 bool operator==( DrawIndexedIndirectCommand const& rhs ) const
4954 {
4955 return ( indexCount == rhs.indexCount )
4956 && ( instanceCount == rhs.instanceCount )
4957 && ( firstIndex == rhs.firstIndex )
4958 && ( vertexOffset == rhs.vertexOffset )
4959 && ( firstInstance == rhs.firstInstance );
4960 }
4961
4962 bool operator!=( DrawIndexedIndirectCommand const& rhs ) const
4963 {
4964 return !operator==( rhs );
4965 }
4966
4967 uint32_t indexCount;
4968 uint32_t instanceCount;
4969 uint32_t firstIndex;
4970 int32_t vertexOffset;
4971 uint32_t firstInstance;
4972 };
4973 static_assert( sizeof( DrawIndexedIndirectCommand ) == sizeof( VkDrawIndexedIndirectCommand ), "struct and wrapper have different size!" );
4974
4975 struct DispatchIndirectCommand
4976 {
4977 DispatchIndirectCommand( uint32_t x_ = 0, uint32_t y_ = 0, uint32_t z_ = 0 )
4978 : x( x_ )
4979 , y( y_ )
4980 , z( z_ )
4981 {
4982 }
4983
4984 DispatchIndirectCommand( VkDispatchIndirectCommand const & rhs )
4985 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004986 memcpy( this, &rhs, sizeof( DispatchIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004987 }
4988
4989 DispatchIndirectCommand& operator=( VkDispatchIndirectCommand const & rhs )
4990 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004991 memcpy( this, &rhs, sizeof( DispatchIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004992 return *this;
4993 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004994 DispatchIndirectCommand& setX( uint32_t x_ )
4995 {
4996 x = x_;
4997 return *this;
4998 }
4999
5000 DispatchIndirectCommand& setY( uint32_t y_ )
5001 {
5002 y = y_;
5003 return *this;
5004 }
5005
5006 DispatchIndirectCommand& setZ( uint32_t z_ )
5007 {
5008 z = z_;
5009 return *this;
5010 }
5011
5012 operator const VkDispatchIndirectCommand&() const
5013 {
5014 return *reinterpret_cast<const VkDispatchIndirectCommand*>(this);
5015 }
5016
5017 bool operator==( DispatchIndirectCommand const& rhs ) const
5018 {
5019 return ( x == rhs.x )
5020 && ( y == rhs.y )
5021 && ( z == rhs.z );
5022 }
5023
5024 bool operator!=( DispatchIndirectCommand const& rhs ) const
5025 {
5026 return !operator==( rhs );
5027 }
5028
5029 uint32_t x;
5030 uint32_t y;
5031 uint32_t z;
5032 };
5033 static_assert( sizeof( DispatchIndirectCommand ) == sizeof( VkDispatchIndirectCommand ), "struct and wrapper have different size!" );
5034
5035 struct DisplayPlanePropertiesKHR
5036 {
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005037 operator const VkDisplayPlanePropertiesKHR&() const
5038 {
5039 return *reinterpret_cast<const VkDisplayPlanePropertiesKHR*>(this);
5040 }
5041
5042 bool operator==( DisplayPlanePropertiesKHR const& rhs ) const
5043 {
5044 return ( currentDisplay == rhs.currentDisplay )
5045 && ( currentStackIndex == rhs.currentStackIndex );
5046 }
5047
5048 bool operator!=( DisplayPlanePropertiesKHR const& rhs ) const
5049 {
5050 return !operator==( rhs );
5051 }
5052
5053 DisplayKHR currentDisplay;
5054 uint32_t currentStackIndex;
5055 };
5056 static_assert( sizeof( DisplayPlanePropertiesKHR ) == sizeof( VkDisplayPlanePropertiesKHR ), "struct and wrapper have different size!" );
5057
5058 struct DisplayModeParametersKHR
5059 {
5060 DisplayModeParametersKHR( Extent2D visibleRegion_ = Extent2D(), uint32_t refreshRate_ = 0 )
5061 : visibleRegion( visibleRegion_ )
5062 , refreshRate( refreshRate_ )
5063 {
5064 }
5065
5066 DisplayModeParametersKHR( VkDisplayModeParametersKHR const & rhs )
5067 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005068 memcpy( this, &rhs, sizeof( DisplayModeParametersKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005069 }
5070
5071 DisplayModeParametersKHR& operator=( VkDisplayModeParametersKHR const & rhs )
5072 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005073 memcpy( this, &rhs, sizeof( DisplayModeParametersKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005074 return *this;
5075 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005076 DisplayModeParametersKHR& setVisibleRegion( Extent2D visibleRegion_ )
5077 {
5078 visibleRegion = visibleRegion_;
5079 return *this;
5080 }
5081
5082 DisplayModeParametersKHR& setRefreshRate( uint32_t refreshRate_ )
5083 {
5084 refreshRate = refreshRate_;
5085 return *this;
5086 }
5087
5088 operator const VkDisplayModeParametersKHR&() const
5089 {
5090 return *reinterpret_cast<const VkDisplayModeParametersKHR*>(this);
5091 }
5092
5093 bool operator==( DisplayModeParametersKHR const& rhs ) const
5094 {
5095 return ( visibleRegion == rhs.visibleRegion )
5096 && ( refreshRate == rhs.refreshRate );
5097 }
5098
5099 bool operator!=( DisplayModeParametersKHR const& rhs ) const
5100 {
5101 return !operator==( rhs );
5102 }
5103
5104 Extent2D visibleRegion;
5105 uint32_t refreshRate;
5106 };
5107 static_assert( sizeof( DisplayModeParametersKHR ) == sizeof( VkDisplayModeParametersKHR ), "struct and wrapper have different size!" );
5108
5109 struct DisplayModePropertiesKHR
5110 {
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005111 operator const VkDisplayModePropertiesKHR&() const
5112 {
5113 return *reinterpret_cast<const VkDisplayModePropertiesKHR*>(this);
5114 }
5115
5116 bool operator==( DisplayModePropertiesKHR const& rhs ) const
5117 {
5118 return ( displayMode == rhs.displayMode )
5119 && ( parameters == rhs.parameters );
5120 }
5121
5122 bool operator!=( DisplayModePropertiesKHR const& rhs ) const
5123 {
5124 return !operator==( rhs );
5125 }
5126
5127 DisplayModeKHR displayMode;
5128 DisplayModeParametersKHR parameters;
5129 };
5130 static_assert( sizeof( DisplayModePropertiesKHR ) == sizeof( VkDisplayModePropertiesKHR ), "struct and wrapper have different size!" );
5131
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005132 struct RectLayerKHR
5133 {
5134 RectLayerKHR( Offset2D offset_ = Offset2D(), Extent2D extent_ = Extent2D(), uint32_t layer_ = 0 )
5135 : offset( offset_ )
5136 , extent( extent_ )
5137 , layer( layer_ )
5138 {
5139 }
5140
5141 RectLayerKHR( VkRectLayerKHR const & rhs )
5142 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005143 memcpy( this, &rhs, sizeof( RectLayerKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005144 }
5145
5146 RectLayerKHR& operator=( VkRectLayerKHR const & rhs )
5147 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005148 memcpy( this, &rhs, sizeof( RectLayerKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005149 return *this;
5150 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005151 RectLayerKHR& setOffset( Offset2D offset_ )
5152 {
5153 offset = offset_;
5154 return *this;
5155 }
5156
5157 RectLayerKHR& setExtent( Extent2D extent_ )
5158 {
5159 extent = extent_;
5160 return *this;
5161 }
5162
5163 RectLayerKHR& setLayer( uint32_t layer_ )
5164 {
5165 layer = layer_;
5166 return *this;
5167 }
5168
5169 operator const VkRectLayerKHR&() const
5170 {
5171 return *reinterpret_cast<const VkRectLayerKHR*>(this);
5172 }
5173
5174 bool operator==( RectLayerKHR const& rhs ) const
5175 {
5176 return ( offset == rhs.offset )
5177 && ( extent == rhs.extent )
5178 && ( layer == rhs.layer );
5179 }
5180
5181 bool operator!=( RectLayerKHR const& rhs ) const
5182 {
5183 return !operator==( rhs );
5184 }
5185
5186 Offset2D offset;
5187 Extent2D extent;
5188 uint32_t layer;
5189 };
5190 static_assert( sizeof( RectLayerKHR ) == sizeof( VkRectLayerKHR ), "struct and wrapper have different size!" );
5191
5192 struct PresentRegionKHR
5193 {
5194 PresentRegionKHR( uint32_t rectangleCount_ = 0, const RectLayerKHR* pRectangles_ = nullptr )
5195 : rectangleCount( rectangleCount_ )
5196 , pRectangles( pRectangles_ )
5197 {
5198 }
5199
5200 PresentRegionKHR( VkPresentRegionKHR const & rhs )
5201 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005202 memcpy( this, &rhs, sizeof( PresentRegionKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005203 }
5204
5205 PresentRegionKHR& operator=( VkPresentRegionKHR const & rhs )
5206 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005207 memcpy( this, &rhs, sizeof( PresentRegionKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005208 return *this;
5209 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005210 PresentRegionKHR& setRectangleCount( uint32_t rectangleCount_ )
5211 {
5212 rectangleCount = rectangleCount_;
5213 return *this;
5214 }
5215
5216 PresentRegionKHR& setPRectangles( const RectLayerKHR* pRectangles_ )
5217 {
5218 pRectangles = pRectangles_;
5219 return *this;
5220 }
5221
5222 operator const VkPresentRegionKHR&() const
5223 {
5224 return *reinterpret_cast<const VkPresentRegionKHR*>(this);
5225 }
5226
5227 bool operator==( PresentRegionKHR const& rhs ) const
5228 {
5229 return ( rectangleCount == rhs.rectangleCount )
5230 && ( pRectangles == rhs.pRectangles );
5231 }
5232
5233 bool operator!=( PresentRegionKHR const& rhs ) const
5234 {
5235 return !operator==( rhs );
5236 }
5237
5238 uint32_t rectangleCount;
5239 const RectLayerKHR* pRectangles;
5240 };
5241 static_assert( sizeof( PresentRegionKHR ) == sizeof( VkPresentRegionKHR ), "struct and wrapper have different size!" );
5242
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005243 struct XYColorEXT
5244 {
5245 XYColorEXT( float x_ = 0, float y_ = 0 )
5246 : x( x_ )
5247 , y( y_ )
5248 {
5249 }
5250
5251 XYColorEXT( VkXYColorEXT const & rhs )
5252 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005253 memcpy( this, &rhs, sizeof( XYColorEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005254 }
5255
5256 XYColorEXT& operator=( VkXYColorEXT const & rhs )
5257 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005258 memcpy( this, &rhs, sizeof( XYColorEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005259 return *this;
5260 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005261 XYColorEXT& setX( float x_ )
5262 {
5263 x = x_;
5264 return *this;
5265 }
5266
5267 XYColorEXT& setY( float y_ )
5268 {
5269 y = y_;
5270 return *this;
5271 }
5272
5273 operator const VkXYColorEXT&() const
5274 {
5275 return *reinterpret_cast<const VkXYColorEXT*>(this);
5276 }
5277
5278 bool operator==( XYColorEXT const& rhs ) const
5279 {
5280 return ( x == rhs.x )
5281 && ( y == rhs.y );
5282 }
5283
5284 bool operator!=( XYColorEXT const& rhs ) const
5285 {
5286 return !operator==( rhs );
5287 }
5288
5289 float x;
5290 float y;
5291 };
5292 static_assert( sizeof( XYColorEXT ) == sizeof( VkXYColorEXT ), "struct and wrapper have different size!" );
5293
5294 struct RefreshCycleDurationGOOGLE
5295 {
5296 RefreshCycleDurationGOOGLE( uint64_t refreshDuration_ = 0 )
5297 : refreshDuration( refreshDuration_ )
5298 {
5299 }
5300
5301 RefreshCycleDurationGOOGLE( VkRefreshCycleDurationGOOGLE const & rhs )
5302 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005303 memcpy( this, &rhs, sizeof( RefreshCycleDurationGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005304 }
5305
5306 RefreshCycleDurationGOOGLE& operator=( VkRefreshCycleDurationGOOGLE const & rhs )
5307 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005308 memcpy( this, &rhs, sizeof( RefreshCycleDurationGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005309 return *this;
5310 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005311 RefreshCycleDurationGOOGLE& setRefreshDuration( uint64_t refreshDuration_ )
5312 {
5313 refreshDuration = refreshDuration_;
5314 return *this;
5315 }
5316
5317 operator const VkRefreshCycleDurationGOOGLE&() const
5318 {
5319 return *reinterpret_cast<const VkRefreshCycleDurationGOOGLE*>(this);
5320 }
5321
5322 bool operator==( RefreshCycleDurationGOOGLE const& rhs ) const
5323 {
5324 return ( refreshDuration == rhs.refreshDuration );
5325 }
5326
5327 bool operator!=( RefreshCycleDurationGOOGLE const& rhs ) const
5328 {
5329 return !operator==( rhs );
5330 }
5331
5332 uint64_t refreshDuration;
5333 };
5334 static_assert( sizeof( RefreshCycleDurationGOOGLE ) == sizeof( VkRefreshCycleDurationGOOGLE ), "struct and wrapper have different size!" );
5335
5336 struct PastPresentationTimingGOOGLE
5337 {
5338 PastPresentationTimingGOOGLE( uint32_t presentID_ = 0, uint64_t desiredPresentTime_ = 0, uint64_t actualPresentTime_ = 0, uint64_t earliestPresentTime_ = 0, uint64_t presentMargin_ = 0 )
5339 : presentID( presentID_ )
5340 , desiredPresentTime( desiredPresentTime_ )
5341 , actualPresentTime( actualPresentTime_ )
5342 , earliestPresentTime( earliestPresentTime_ )
5343 , presentMargin( presentMargin_ )
5344 {
5345 }
5346
5347 PastPresentationTimingGOOGLE( VkPastPresentationTimingGOOGLE const & rhs )
5348 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005349 memcpy( this, &rhs, sizeof( PastPresentationTimingGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005350 }
5351
5352 PastPresentationTimingGOOGLE& operator=( VkPastPresentationTimingGOOGLE const & rhs )
5353 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005354 memcpy( this, &rhs, sizeof( PastPresentationTimingGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005355 return *this;
5356 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005357 PastPresentationTimingGOOGLE& setPresentID( uint32_t presentID_ )
5358 {
5359 presentID = presentID_;
5360 return *this;
5361 }
5362
5363 PastPresentationTimingGOOGLE& setDesiredPresentTime( uint64_t desiredPresentTime_ )
5364 {
5365 desiredPresentTime = desiredPresentTime_;
5366 return *this;
5367 }
5368
5369 PastPresentationTimingGOOGLE& setActualPresentTime( uint64_t actualPresentTime_ )
5370 {
5371 actualPresentTime = actualPresentTime_;
5372 return *this;
5373 }
5374
5375 PastPresentationTimingGOOGLE& setEarliestPresentTime( uint64_t earliestPresentTime_ )
5376 {
5377 earliestPresentTime = earliestPresentTime_;
5378 return *this;
5379 }
5380
5381 PastPresentationTimingGOOGLE& setPresentMargin( uint64_t presentMargin_ )
5382 {
5383 presentMargin = presentMargin_;
5384 return *this;
5385 }
5386
5387 operator const VkPastPresentationTimingGOOGLE&() const
5388 {
5389 return *reinterpret_cast<const VkPastPresentationTimingGOOGLE*>(this);
5390 }
5391
5392 bool operator==( PastPresentationTimingGOOGLE const& rhs ) const
5393 {
5394 return ( presentID == rhs.presentID )
5395 && ( desiredPresentTime == rhs.desiredPresentTime )
5396 && ( actualPresentTime == rhs.actualPresentTime )
5397 && ( earliestPresentTime == rhs.earliestPresentTime )
5398 && ( presentMargin == rhs.presentMargin );
5399 }
5400
5401 bool operator!=( PastPresentationTimingGOOGLE const& rhs ) const
5402 {
5403 return !operator==( rhs );
5404 }
5405
5406 uint32_t presentID;
5407 uint64_t desiredPresentTime;
5408 uint64_t actualPresentTime;
5409 uint64_t earliestPresentTime;
5410 uint64_t presentMargin;
5411 };
5412 static_assert( sizeof( PastPresentationTimingGOOGLE ) == sizeof( VkPastPresentationTimingGOOGLE ), "struct and wrapper have different size!" );
5413
5414 struct PresentTimeGOOGLE
5415 {
5416 PresentTimeGOOGLE( uint32_t presentID_ = 0, uint64_t desiredPresentTime_ = 0 )
5417 : presentID( presentID_ )
5418 , desiredPresentTime( desiredPresentTime_ )
5419 {
5420 }
5421
5422 PresentTimeGOOGLE( VkPresentTimeGOOGLE const & rhs )
5423 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005424 memcpy( this, &rhs, sizeof( PresentTimeGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005425 }
5426
5427 PresentTimeGOOGLE& operator=( VkPresentTimeGOOGLE const & rhs )
5428 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005429 memcpy( this, &rhs, sizeof( PresentTimeGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005430 return *this;
5431 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005432 PresentTimeGOOGLE& setPresentID( uint32_t presentID_ )
5433 {
5434 presentID = presentID_;
5435 return *this;
5436 }
5437
5438 PresentTimeGOOGLE& setDesiredPresentTime( uint64_t desiredPresentTime_ )
5439 {
5440 desiredPresentTime = desiredPresentTime_;
5441 return *this;
5442 }
5443
5444 operator const VkPresentTimeGOOGLE&() const
5445 {
5446 return *reinterpret_cast<const VkPresentTimeGOOGLE*>(this);
5447 }
5448
5449 bool operator==( PresentTimeGOOGLE const& rhs ) const
5450 {
5451 return ( presentID == rhs.presentID )
5452 && ( desiredPresentTime == rhs.desiredPresentTime );
5453 }
5454
5455 bool operator!=( PresentTimeGOOGLE const& rhs ) const
5456 {
5457 return !operator==( rhs );
5458 }
5459
5460 uint32_t presentID;
5461 uint64_t desiredPresentTime;
5462 };
5463 static_assert( sizeof( PresentTimeGOOGLE ) == sizeof( VkPresentTimeGOOGLE ), "struct and wrapper have different size!" );
5464
Mark Young0f183a82017-02-28 09:58:04 -07005465 struct ViewportWScalingNV
5466 {
5467 ViewportWScalingNV( float xcoeff_ = 0, float ycoeff_ = 0 )
5468 : xcoeff( xcoeff_ )
5469 , ycoeff( ycoeff_ )
5470 {
5471 }
5472
5473 ViewportWScalingNV( VkViewportWScalingNV const & rhs )
5474 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005475 memcpy( this, &rhs, sizeof( ViewportWScalingNV ) );
Mark Young0f183a82017-02-28 09:58:04 -07005476 }
5477
5478 ViewportWScalingNV& operator=( VkViewportWScalingNV const & rhs )
5479 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005480 memcpy( this, &rhs, sizeof( ViewportWScalingNV ) );
Mark Young0f183a82017-02-28 09:58:04 -07005481 return *this;
5482 }
Mark Young0f183a82017-02-28 09:58:04 -07005483 ViewportWScalingNV& setXcoeff( float xcoeff_ )
5484 {
5485 xcoeff = xcoeff_;
5486 return *this;
5487 }
5488
5489 ViewportWScalingNV& setYcoeff( float ycoeff_ )
5490 {
5491 ycoeff = ycoeff_;
5492 return *this;
5493 }
5494
5495 operator const VkViewportWScalingNV&() const
5496 {
5497 return *reinterpret_cast<const VkViewportWScalingNV*>(this);
5498 }
5499
5500 bool operator==( ViewportWScalingNV const& rhs ) const
5501 {
5502 return ( xcoeff == rhs.xcoeff )
5503 && ( ycoeff == rhs.ycoeff );
5504 }
5505
5506 bool operator!=( ViewportWScalingNV const& rhs ) const
5507 {
5508 return !operator==( rhs );
5509 }
5510
5511 float xcoeff;
5512 float ycoeff;
5513 };
5514 static_assert( sizeof( ViewportWScalingNV ) == sizeof( VkViewportWScalingNV ), "struct and wrapper have different size!" );
5515
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06005516 struct SampleLocationEXT
5517 {
5518 SampleLocationEXT( float x_ = 0, float y_ = 0 )
5519 : x( x_ )
5520 , y( y_ )
5521 {
5522 }
5523
5524 SampleLocationEXT( VkSampleLocationEXT const & rhs )
5525 {
5526 memcpy( this, &rhs, sizeof( SampleLocationEXT ) );
5527 }
5528
5529 SampleLocationEXT& operator=( VkSampleLocationEXT const & rhs )
5530 {
5531 memcpy( this, &rhs, sizeof( SampleLocationEXT ) );
5532 return *this;
5533 }
5534 SampleLocationEXT& setX( float x_ )
5535 {
5536 x = x_;
5537 return *this;
5538 }
5539
5540 SampleLocationEXT& setY( float y_ )
5541 {
5542 y = y_;
5543 return *this;
5544 }
5545
5546 operator const VkSampleLocationEXT&() const
5547 {
5548 return *reinterpret_cast<const VkSampleLocationEXT*>(this);
5549 }
5550
5551 bool operator==( SampleLocationEXT const& rhs ) const
5552 {
5553 return ( x == rhs.x )
5554 && ( y == rhs.y );
5555 }
5556
5557 bool operator!=( SampleLocationEXT const& rhs ) const
5558 {
5559 return !operator==( rhs );
5560 }
5561
5562 float x;
5563 float y;
5564 };
5565 static_assert( sizeof( SampleLocationEXT ) == sizeof( VkSampleLocationEXT ), "struct and wrapper have different size!" );
5566
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -06005567 struct ShaderResourceUsageAMD
5568 {
5569 operator const VkShaderResourceUsageAMD&() const
5570 {
5571 return *reinterpret_cast<const VkShaderResourceUsageAMD*>(this);
5572 }
5573
5574 bool operator==( ShaderResourceUsageAMD const& rhs ) const
5575 {
5576 return ( numUsedVgprs == rhs.numUsedVgprs )
5577 && ( numUsedSgprs == rhs.numUsedSgprs )
5578 && ( ldsSizePerLocalWorkGroup == rhs.ldsSizePerLocalWorkGroup )
5579 && ( ldsUsageSizeInBytes == rhs.ldsUsageSizeInBytes )
5580 && ( scratchMemUsageInBytes == rhs.scratchMemUsageInBytes );
5581 }
5582
5583 bool operator!=( ShaderResourceUsageAMD const& rhs ) const
5584 {
5585 return !operator==( rhs );
5586 }
5587
5588 uint32_t numUsedVgprs;
5589 uint32_t numUsedSgprs;
5590 uint32_t ldsSizePerLocalWorkGroup;
5591 size_t ldsUsageSizeInBytes;
5592 size_t scratchMemUsageInBytes;
5593 };
5594 static_assert( sizeof( ShaderResourceUsageAMD ) == sizeof( VkShaderResourceUsageAMD ), "struct and wrapper have different size!" );
5595
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005596 enum class ImageLayout
5597 {
5598 eUndefined = VK_IMAGE_LAYOUT_UNDEFINED,
5599 eGeneral = VK_IMAGE_LAYOUT_GENERAL,
5600 eColorAttachmentOptimal = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
5601 eDepthStencilAttachmentOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
5602 eDepthStencilReadOnlyOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,
5603 eShaderReadOnlyOptimal = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
5604 eTransferSrcOptimal = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
5605 eTransferDstOptimal = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
5606 ePreinitialized = VK_IMAGE_LAYOUT_PREINITIALIZED,
Mark Lobodzinski54385432017-05-15 10:27:52 -06005607 ePresentSrcKHR = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR,
Lenny Komowb79f04a2017-09-18 17:07:00 -06005608 eSharedPresentKHR = VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR,
5609 eDepthReadOnlyStencilAttachmentOptimalKHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR,
5610 eDepthAttachmentStencilReadOnlyOptimalKHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005611 };
5612
5613 struct DescriptorImageInfo
5614 {
5615 DescriptorImageInfo( Sampler sampler_ = Sampler(), ImageView imageView_ = ImageView(), ImageLayout imageLayout_ = ImageLayout::eUndefined )
5616 : sampler( sampler_ )
5617 , imageView( imageView_ )
5618 , imageLayout( imageLayout_ )
5619 {
5620 }
5621
5622 DescriptorImageInfo( VkDescriptorImageInfo const & rhs )
5623 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005624 memcpy( this, &rhs, sizeof( DescriptorImageInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005625 }
5626
5627 DescriptorImageInfo& operator=( VkDescriptorImageInfo const & rhs )
5628 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005629 memcpy( this, &rhs, sizeof( DescriptorImageInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005630 return *this;
5631 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005632 DescriptorImageInfo& setSampler( Sampler sampler_ )
5633 {
5634 sampler = sampler_;
5635 return *this;
5636 }
5637
5638 DescriptorImageInfo& setImageView( ImageView imageView_ )
5639 {
5640 imageView = imageView_;
5641 return *this;
5642 }
5643
5644 DescriptorImageInfo& setImageLayout( ImageLayout imageLayout_ )
5645 {
5646 imageLayout = imageLayout_;
5647 return *this;
5648 }
5649
5650 operator const VkDescriptorImageInfo&() const
5651 {
5652 return *reinterpret_cast<const VkDescriptorImageInfo*>(this);
5653 }
5654
5655 bool operator==( DescriptorImageInfo const& rhs ) const
5656 {
5657 return ( sampler == rhs.sampler )
5658 && ( imageView == rhs.imageView )
5659 && ( imageLayout == rhs.imageLayout );
5660 }
5661
5662 bool operator!=( DescriptorImageInfo const& rhs ) const
5663 {
5664 return !operator==( rhs );
5665 }
5666
5667 Sampler sampler;
5668 ImageView imageView;
5669 ImageLayout imageLayout;
5670 };
5671 static_assert( sizeof( DescriptorImageInfo ) == sizeof( VkDescriptorImageInfo ), "struct and wrapper have different size!" );
5672
5673 struct AttachmentReference
5674 {
5675 AttachmentReference( uint32_t attachment_ = 0, ImageLayout layout_ = ImageLayout::eUndefined )
5676 : attachment( attachment_ )
5677 , layout( layout_ )
5678 {
5679 }
5680
5681 AttachmentReference( VkAttachmentReference const & rhs )
5682 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005683 memcpy( this, &rhs, sizeof( AttachmentReference ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005684 }
5685
5686 AttachmentReference& operator=( VkAttachmentReference const & rhs )
5687 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005688 memcpy( this, &rhs, sizeof( AttachmentReference ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005689 return *this;
5690 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005691 AttachmentReference& setAttachment( uint32_t attachment_ )
5692 {
5693 attachment = attachment_;
5694 return *this;
5695 }
5696
5697 AttachmentReference& setLayout( ImageLayout layout_ )
5698 {
5699 layout = layout_;
5700 return *this;
5701 }
5702
5703 operator const VkAttachmentReference&() const
5704 {
5705 return *reinterpret_cast<const VkAttachmentReference*>(this);
5706 }
5707
5708 bool operator==( AttachmentReference const& rhs ) const
5709 {
5710 return ( attachment == rhs.attachment )
5711 && ( layout == rhs.layout );
5712 }
5713
5714 bool operator!=( AttachmentReference const& rhs ) const
5715 {
5716 return !operator==( rhs );
5717 }
5718
5719 uint32_t attachment;
5720 ImageLayout layout;
5721 };
5722 static_assert( sizeof( AttachmentReference ) == sizeof( VkAttachmentReference ), "struct and wrapper have different size!" );
5723
5724 enum class AttachmentLoadOp
5725 {
5726 eLoad = VK_ATTACHMENT_LOAD_OP_LOAD,
5727 eClear = VK_ATTACHMENT_LOAD_OP_CLEAR,
5728 eDontCare = VK_ATTACHMENT_LOAD_OP_DONT_CARE
5729 };
5730
5731 enum class AttachmentStoreOp
5732 {
5733 eStore = VK_ATTACHMENT_STORE_OP_STORE,
5734 eDontCare = VK_ATTACHMENT_STORE_OP_DONT_CARE
5735 };
5736
5737 enum class ImageType
5738 {
5739 e1D = VK_IMAGE_TYPE_1D,
5740 e2D = VK_IMAGE_TYPE_2D,
5741 e3D = VK_IMAGE_TYPE_3D
5742 };
5743
5744 enum class ImageTiling
5745 {
5746 eOptimal = VK_IMAGE_TILING_OPTIMAL,
5747 eLinear = VK_IMAGE_TILING_LINEAR
5748 };
5749
5750 enum class ImageViewType
5751 {
5752 e1D = VK_IMAGE_VIEW_TYPE_1D,
5753 e2D = VK_IMAGE_VIEW_TYPE_2D,
5754 e3D = VK_IMAGE_VIEW_TYPE_3D,
5755 eCube = VK_IMAGE_VIEW_TYPE_CUBE,
5756 e1DArray = VK_IMAGE_VIEW_TYPE_1D_ARRAY,
5757 e2DArray = VK_IMAGE_VIEW_TYPE_2D_ARRAY,
5758 eCubeArray = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
5759 };
5760
5761 enum class CommandBufferLevel
5762 {
5763 ePrimary = VK_COMMAND_BUFFER_LEVEL_PRIMARY,
5764 eSecondary = VK_COMMAND_BUFFER_LEVEL_SECONDARY
5765 };
5766
5767 enum class ComponentSwizzle
5768 {
5769 eIdentity = VK_COMPONENT_SWIZZLE_IDENTITY,
5770 eZero = VK_COMPONENT_SWIZZLE_ZERO,
5771 eOne = VK_COMPONENT_SWIZZLE_ONE,
5772 eR = VK_COMPONENT_SWIZZLE_R,
5773 eG = VK_COMPONENT_SWIZZLE_G,
5774 eB = VK_COMPONENT_SWIZZLE_B,
5775 eA = VK_COMPONENT_SWIZZLE_A
5776 };
5777
5778 struct ComponentMapping
5779 {
5780 ComponentMapping( ComponentSwizzle r_ = ComponentSwizzle::eIdentity, ComponentSwizzle g_ = ComponentSwizzle::eIdentity, ComponentSwizzle b_ = ComponentSwizzle::eIdentity, ComponentSwizzle a_ = ComponentSwizzle::eIdentity )
5781 : r( r_ )
5782 , g( g_ )
5783 , b( b_ )
5784 , a( a_ )
5785 {
5786 }
5787
5788 ComponentMapping( VkComponentMapping const & rhs )
5789 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005790 memcpy( this, &rhs, sizeof( ComponentMapping ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005791 }
5792
5793 ComponentMapping& operator=( VkComponentMapping const & rhs )
5794 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005795 memcpy( this, &rhs, sizeof( ComponentMapping ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005796 return *this;
5797 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005798 ComponentMapping& setR( ComponentSwizzle r_ )
5799 {
5800 r = r_;
5801 return *this;
5802 }
5803
5804 ComponentMapping& setG( ComponentSwizzle g_ )
5805 {
5806 g = g_;
5807 return *this;
5808 }
5809
5810 ComponentMapping& setB( ComponentSwizzle b_ )
5811 {
5812 b = b_;
5813 return *this;
5814 }
5815
5816 ComponentMapping& setA( ComponentSwizzle a_ )
5817 {
5818 a = a_;
5819 return *this;
5820 }
5821
5822 operator const VkComponentMapping&() const
5823 {
5824 return *reinterpret_cast<const VkComponentMapping*>(this);
5825 }
5826
5827 bool operator==( ComponentMapping const& rhs ) const
5828 {
5829 return ( r == rhs.r )
5830 && ( g == rhs.g )
5831 && ( b == rhs.b )
5832 && ( a == rhs.a );
5833 }
5834
5835 bool operator!=( ComponentMapping const& rhs ) const
5836 {
5837 return !operator==( rhs );
5838 }
5839
5840 ComponentSwizzle r;
5841 ComponentSwizzle g;
5842 ComponentSwizzle b;
5843 ComponentSwizzle a;
5844 };
5845 static_assert( sizeof( ComponentMapping ) == sizeof( VkComponentMapping ), "struct and wrapper have different size!" );
5846
5847 enum class DescriptorType
5848 {
5849 eSampler = VK_DESCRIPTOR_TYPE_SAMPLER,
5850 eCombinedImageSampler = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
5851 eSampledImage = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
5852 eStorageImage = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,
5853 eUniformTexelBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER,
5854 eStorageTexelBuffer = VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER,
5855 eUniformBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
5856 eStorageBuffer = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
5857 eUniformBufferDynamic = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
5858 eStorageBufferDynamic = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC,
5859 eInputAttachment = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
5860 };
5861
5862 struct DescriptorPoolSize
5863 {
5864 DescriptorPoolSize( DescriptorType type_ = DescriptorType::eSampler, uint32_t descriptorCount_ = 0 )
5865 : type( type_ )
5866 , descriptorCount( descriptorCount_ )
5867 {
5868 }
5869
5870 DescriptorPoolSize( VkDescriptorPoolSize const & rhs )
5871 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005872 memcpy( this, &rhs, sizeof( DescriptorPoolSize ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005873 }
5874
5875 DescriptorPoolSize& operator=( VkDescriptorPoolSize const & rhs )
5876 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005877 memcpy( this, &rhs, sizeof( DescriptorPoolSize ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005878 return *this;
5879 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005880 DescriptorPoolSize& setType( DescriptorType type_ )
5881 {
5882 type = type_;
5883 return *this;
5884 }
5885
5886 DescriptorPoolSize& setDescriptorCount( uint32_t descriptorCount_ )
5887 {
5888 descriptorCount = descriptorCount_;
5889 return *this;
5890 }
5891
5892 operator const VkDescriptorPoolSize&() const
5893 {
5894 return *reinterpret_cast<const VkDescriptorPoolSize*>(this);
5895 }
5896
5897 bool operator==( DescriptorPoolSize const& rhs ) const
5898 {
5899 return ( type == rhs.type )
5900 && ( descriptorCount == rhs.descriptorCount );
5901 }
5902
5903 bool operator!=( DescriptorPoolSize const& rhs ) const
5904 {
5905 return !operator==( rhs );
5906 }
5907
5908 DescriptorType type;
5909 uint32_t descriptorCount;
5910 };
5911 static_assert( sizeof( DescriptorPoolSize ) == sizeof( VkDescriptorPoolSize ), "struct and wrapper have different size!" );
5912
Mark Young0f183a82017-02-28 09:58:04 -07005913 struct DescriptorUpdateTemplateEntryKHR
5914 {
5915 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 )
5916 : dstBinding( dstBinding_ )
5917 , dstArrayElement( dstArrayElement_ )
5918 , descriptorCount( descriptorCount_ )
5919 , descriptorType( descriptorType_ )
5920 , offset( offset_ )
5921 , stride( stride_ )
5922 {
5923 }
5924
5925 DescriptorUpdateTemplateEntryKHR( VkDescriptorUpdateTemplateEntryKHR const & rhs )
5926 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005927 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateEntryKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -07005928 }
5929
5930 DescriptorUpdateTemplateEntryKHR& operator=( VkDescriptorUpdateTemplateEntryKHR const & rhs )
5931 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005932 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateEntryKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -07005933 return *this;
5934 }
Mark Young0f183a82017-02-28 09:58:04 -07005935 DescriptorUpdateTemplateEntryKHR& setDstBinding( uint32_t dstBinding_ )
5936 {
5937 dstBinding = dstBinding_;
5938 return *this;
5939 }
5940
5941 DescriptorUpdateTemplateEntryKHR& setDstArrayElement( uint32_t dstArrayElement_ )
5942 {
5943 dstArrayElement = dstArrayElement_;
5944 return *this;
5945 }
5946
5947 DescriptorUpdateTemplateEntryKHR& setDescriptorCount( uint32_t descriptorCount_ )
5948 {
5949 descriptorCount = descriptorCount_;
5950 return *this;
5951 }
5952
5953 DescriptorUpdateTemplateEntryKHR& setDescriptorType( DescriptorType descriptorType_ )
5954 {
5955 descriptorType = descriptorType_;
5956 return *this;
5957 }
5958
5959 DescriptorUpdateTemplateEntryKHR& setOffset( size_t offset_ )
5960 {
5961 offset = offset_;
5962 return *this;
5963 }
5964
5965 DescriptorUpdateTemplateEntryKHR& setStride( size_t stride_ )
5966 {
5967 stride = stride_;
5968 return *this;
5969 }
5970
5971 operator const VkDescriptorUpdateTemplateEntryKHR&() const
5972 {
5973 return *reinterpret_cast<const VkDescriptorUpdateTemplateEntryKHR*>(this);
5974 }
5975
5976 bool operator==( DescriptorUpdateTemplateEntryKHR const& rhs ) const
5977 {
5978 return ( dstBinding == rhs.dstBinding )
5979 && ( dstArrayElement == rhs.dstArrayElement )
5980 && ( descriptorCount == rhs.descriptorCount )
5981 && ( descriptorType == rhs.descriptorType )
5982 && ( offset == rhs.offset )
5983 && ( stride == rhs.stride );
5984 }
5985
5986 bool operator!=( DescriptorUpdateTemplateEntryKHR const& rhs ) const
5987 {
5988 return !operator==( rhs );
5989 }
5990
5991 uint32_t dstBinding;
5992 uint32_t dstArrayElement;
5993 uint32_t descriptorCount;
5994 DescriptorType descriptorType;
5995 size_t offset;
5996 size_t stride;
5997 };
5998 static_assert( sizeof( DescriptorUpdateTemplateEntryKHR ) == sizeof( VkDescriptorUpdateTemplateEntryKHR ), "struct and wrapper have different size!" );
5999
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006000 enum class QueryType
6001 {
6002 eOcclusion = VK_QUERY_TYPE_OCCLUSION,
6003 ePipelineStatistics = VK_QUERY_TYPE_PIPELINE_STATISTICS,
6004 eTimestamp = VK_QUERY_TYPE_TIMESTAMP
6005 };
6006
6007 enum class BorderColor
6008 {
6009 eFloatTransparentBlack = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,
6010 eIntTransparentBlack = VK_BORDER_COLOR_INT_TRANSPARENT_BLACK,
6011 eFloatOpaqueBlack = VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK,
6012 eIntOpaqueBlack = VK_BORDER_COLOR_INT_OPAQUE_BLACK,
6013 eFloatOpaqueWhite = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE,
6014 eIntOpaqueWhite = VK_BORDER_COLOR_INT_OPAQUE_WHITE
6015 };
6016
6017 enum class PipelineBindPoint
6018 {
6019 eGraphics = VK_PIPELINE_BIND_POINT_GRAPHICS,
6020 eCompute = VK_PIPELINE_BIND_POINT_COMPUTE
6021 };
6022
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006023 enum class PipelineCacheHeaderVersion
6024 {
6025 eOne = VK_PIPELINE_CACHE_HEADER_VERSION_ONE
6026 };
6027
6028 enum class PrimitiveTopology
6029 {
6030 ePointList = VK_PRIMITIVE_TOPOLOGY_POINT_LIST,
6031 eLineList = VK_PRIMITIVE_TOPOLOGY_LINE_LIST,
6032 eLineStrip = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP,
6033 eTriangleList = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,
6034 eTriangleStrip = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP,
6035 eTriangleFan = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN,
6036 eLineListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY,
6037 eLineStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY,
6038 eTriangleListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY,
6039 eTriangleStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY,
6040 ePatchList = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
6041 };
6042
6043 enum class SharingMode
6044 {
6045 eExclusive = VK_SHARING_MODE_EXCLUSIVE,
6046 eConcurrent = VK_SHARING_MODE_CONCURRENT
6047 };
6048
6049 enum class IndexType
6050 {
6051 eUint16 = VK_INDEX_TYPE_UINT16,
6052 eUint32 = VK_INDEX_TYPE_UINT32
6053 };
6054
6055 enum class Filter
6056 {
6057 eNearest = VK_FILTER_NEAREST,
6058 eLinear = VK_FILTER_LINEAR,
6059 eCubicIMG = VK_FILTER_CUBIC_IMG
6060 };
6061
6062 enum class SamplerMipmapMode
6063 {
6064 eNearest = VK_SAMPLER_MIPMAP_MODE_NEAREST,
6065 eLinear = VK_SAMPLER_MIPMAP_MODE_LINEAR
6066 };
6067
6068 enum class SamplerAddressMode
6069 {
6070 eRepeat = VK_SAMPLER_ADDRESS_MODE_REPEAT,
6071 eMirroredRepeat = VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT,
6072 eClampToEdge = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
6073 eClampToBorder = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER,
6074 eMirrorClampToEdge = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE
6075 };
6076
6077 enum class CompareOp
6078 {
6079 eNever = VK_COMPARE_OP_NEVER,
6080 eLess = VK_COMPARE_OP_LESS,
6081 eEqual = VK_COMPARE_OP_EQUAL,
6082 eLessOrEqual = VK_COMPARE_OP_LESS_OR_EQUAL,
6083 eGreater = VK_COMPARE_OP_GREATER,
6084 eNotEqual = VK_COMPARE_OP_NOT_EQUAL,
6085 eGreaterOrEqual = VK_COMPARE_OP_GREATER_OR_EQUAL,
6086 eAlways = VK_COMPARE_OP_ALWAYS
6087 };
6088
6089 enum class PolygonMode
6090 {
6091 eFill = VK_POLYGON_MODE_FILL,
6092 eLine = VK_POLYGON_MODE_LINE,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006093 ePoint = VK_POLYGON_MODE_POINT,
6094 eFillRectangleNV = VK_POLYGON_MODE_FILL_RECTANGLE_NV
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006095 };
6096
6097 enum class CullModeFlagBits
6098 {
6099 eNone = VK_CULL_MODE_NONE,
6100 eFront = VK_CULL_MODE_FRONT_BIT,
6101 eBack = VK_CULL_MODE_BACK_BIT,
6102 eFrontAndBack = VK_CULL_MODE_FRONT_AND_BACK
6103 };
6104
6105 using CullModeFlags = Flags<CullModeFlagBits, VkCullModeFlags>;
6106
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006107 VULKAN_HPP_INLINE CullModeFlags operator|( CullModeFlagBits bit0, CullModeFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006108 {
6109 return CullModeFlags( bit0 ) | bit1;
6110 }
6111
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006112 VULKAN_HPP_INLINE CullModeFlags operator~( CullModeFlagBits bits )
6113 {
6114 return ~( CullModeFlags( bits ) );
6115 }
6116
6117 template <> struct FlagTraits<CullModeFlagBits>
6118 {
6119 enum
6120 {
6121 allFlags = VkFlags(CullModeFlagBits::eNone) | VkFlags(CullModeFlagBits::eFront) | VkFlags(CullModeFlagBits::eBack) | VkFlags(CullModeFlagBits::eFrontAndBack)
6122 };
6123 };
6124
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006125 enum class FrontFace
6126 {
6127 eCounterClockwise = VK_FRONT_FACE_COUNTER_CLOCKWISE,
6128 eClockwise = VK_FRONT_FACE_CLOCKWISE
6129 };
6130
6131 enum class BlendFactor
6132 {
6133 eZero = VK_BLEND_FACTOR_ZERO,
6134 eOne = VK_BLEND_FACTOR_ONE,
6135 eSrcColor = VK_BLEND_FACTOR_SRC_COLOR,
6136 eOneMinusSrcColor = VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR,
6137 eDstColor = VK_BLEND_FACTOR_DST_COLOR,
6138 eOneMinusDstColor = VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR,
6139 eSrcAlpha = VK_BLEND_FACTOR_SRC_ALPHA,
6140 eOneMinusSrcAlpha = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA,
6141 eDstAlpha = VK_BLEND_FACTOR_DST_ALPHA,
6142 eOneMinusDstAlpha = VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA,
6143 eConstantColor = VK_BLEND_FACTOR_CONSTANT_COLOR,
6144 eOneMinusConstantColor = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR,
6145 eConstantAlpha = VK_BLEND_FACTOR_CONSTANT_ALPHA,
6146 eOneMinusConstantAlpha = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,
6147 eSrcAlphaSaturate = VK_BLEND_FACTOR_SRC_ALPHA_SATURATE,
6148 eSrc1Color = VK_BLEND_FACTOR_SRC1_COLOR,
6149 eOneMinusSrc1Color = VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,
6150 eSrc1Alpha = VK_BLEND_FACTOR_SRC1_ALPHA,
6151 eOneMinusSrc1Alpha = VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
6152 };
6153
6154 enum class BlendOp
6155 {
6156 eAdd = VK_BLEND_OP_ADD,
6157 eSubtract = VK_BLEND_OP_SUBTRACT,
6158 eReverseSubtract = VK_BLEND_OP_REVERSE_SUBTRACT,
6159 eMin = VK_BLEND_OP_MIN,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006160 eMax = VK_BLEND_OP_MAX,
6161 eZeroEXT = VK_BLEND_OP_ZERO_EXT,
6162 eSrcEXT = VK_BLEND_OP_SRC_EXT,
6163 eDstEXT = VK_BLEND_OP_DST_EXT,
6164 eSrcOverEXT = VK_BLEND_OP_SRC_OVER_EXT,
6165 eDstOverEXT = VK_BLEND_OP_DST_OVER_EXT,
6166 eSrcInEXT = VK_BLEND_OP_SRC_IN_EXT,
6167 eDstInEXT = VK_BLEND_OP_DST_IN_EXT,
6168 eSrcOutEXT = VK_BLEND_OP_SRC_OUT_EXT,
6169 eDstOutEXT = VK_BLEND_OP_DST_OUT_EXT,
6170 eSrcAtopEXT = VK_BLEND_OP_SRC_ATOP_EXT,
6171 eDstAtopEXT = VK_BLEND_OP_DST_ATOP_EXT,
6172 eXorEXT = VK_BLEND_OP_XOR_EXT,
6173 eMultiplyEXT = VK_BLEND_OP_MULTIPLY_EXT,
6174 eScreenEXT = VK_BLEND_OP_SCREEN_EXT,
6175 eOverlayEXT = VK_BLEND_OP_OVERLAY_EXT,
6176 eDarkenEXT = VK_BLEND_OP_DARKEN_EXT,
6177 eLightenEXT = VK_BLEND_OP_LIGHTEN_EXT,
6178 eColordodgeEXT = VK_BLEND_OP_COLORDODGE_EXT,
6179 eColorburnEXT = VK_BLEND_OP_COLORBURN_EXT,
6180 eHardlightEXT = VK_BLEND_OP_HARDLIGHT_EXT,
6181 eSoftlightEXT = VK_BLEND_OP_SOFTLIGHT_EXT,
6182 eDifferenceEXT = VK_BLEND_OP_DIFFERENCE_EXT,
6183 eExclusionEXT = VK_BLEND_OP_EXCLUSION_EXT,
6184 eInvertEXT = VK_BLEND_OP_INVERT_EXT,
6185 eInvertRgbEXT = VK_BLEND_OP_INVERT_RGB_EXT,
6186 eLineardodgeEXT = VK_BLEND_OP_LINEARDODGE_EXT,
6187 eLinearburnEXT = VK_BLEND_OP_LINEARBURN_EXT,
6188 eVividlightEXT = VK_BLEND_OP_VIVIDLIGHT_EXT,
6189 eLinearlightEXT = VK_BLEND_OP_LINEARLIGHT_EXT,
6190 ePinlightEXT = VK_BLEND_OP_PINLIGHT_EXT,
6191 eHardmixEXT = VK_BLEND_OP_HARDMIX_EXT,
6192 eHslHueEXT = VK_BLEND_OP_HSL_HUE_EXT,
6193 eHslSaturationEXT = VK_BLEND_OP_HSL_SATURATION_EXT,
6194 eHslColorEXT = VK_BLEND_OP_HSL_COLOR_EXT,
6195 eHslLuminosityEXT = VK_BLEND_OP_HSL_LUMINOSITY_EXT,
6196 ePlusEXT = VK_BLEND_OP_PLUS_EXT,
6197 ePlusClampedEXT = VK_BLEND_OP_PLUS_CLAMPED_EXT,
6198 ePlusClampedAlphaEXT = VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT,
6199 ePlusDarkerEXT = VK_BLEND_OP_PLUS_DARKER_EXT,
6200 eMinusEXT = VK_BLEND_OP_MINUS_EXT,
6201 eMinusClampedEXT = VK_BLEND_OP_MINUS_CLAMPED_EXT,
6202 eContrastEXT = VK_BLEND_OP_CONTRAST_EXT,
6203 eInvertOvgEXT = VK_BLEND_OP_INVERT_OVG_EXT,
6204 eRedEXT = VK_BLEND_OP_RED_EXT,
6205 eGreenEXT = VK_BLEND_OP_GREEN_EXT,
6206 eBlueEXT = VK_BLEND_OP_BLUE_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006207 };
6208
6209 enum class StencilOp
6210 {
6211 eKeep = VK_STENCIL_OP_KEEP,
6212 eZero = VK_STENCIL_OP_ZERO,
6213 eReplace = VK_STENCIL_OP_REPLACE,
6214 eIncrementAndClamp = VK_STENCIL_OP_INCREMENT_AND_CLAMP,
6215 eDecrementAndClamp = VK_STENCIL_OP_DECREMENT_AND_CLAMP,
6216 eInvert = VK_STENCIL_OP_INVERT,
6217 eIncrementAndWrap = VK_STENCIL_OP_INCREMENT_AND_WRAP,
6218 eDecrementAndWrap = VK_STENCIL_OP_DECREMENT_AND_WRAP
6219 };
6220
6221 struct StencilOpState
6222 {
6223 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 )
6224 : failOp( failOp_ )
6225 , passOp( passOp_ )
6226 , depthFailOp( depthFailOp_ )
6227 , compareOp( compareOp_ )
6228 , compareMask( compareMask_ )
6229 , writeMask( writeMask_ )
6230 , reference( reference_ )
6231 {
6232 }
6233
6234 StencilOpState( VkStencilOpState const & rhs )
6235 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006236 memcpy( this, &rhs, sizeof( StencilOpState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006237 }
6238
6239 StencilOpState& operator=( VkStencilOpState const & rhs )
6240 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006241 memcpy( this, &rhs, sizeof( StencilOpState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006242 return *this;
6243 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006244 StencilOpState& setFailOp( StencilOp failOp_ )
6245 {
6246 failOp = failOp_;
6247 return *this;
6248 }
6249
6250 StencilOpState& setPassOp( StencilOp passOp_ )
6251 {
6252 passOp = passOp_;
6253 return *this;
6254 }
6255
6256 StencilOpState& setDepthFailOp( StencilOp depthFailOp_ )
6257 {
6258 depthFailOp = depthFailOp_;
6259 return *this;
6260 }
6261
6262 StencilOpState& setCompareOp( CompareOp compareOp_ )
6263 {
6264 compareOp = compareOp_;
6265 return *this;
6266 }
6267
6268 StencilOpState& setCompareMask( uint32_t compareMask_ )
6269 {
6270 compareMask = compareMask_;
6271 return *this;
6272 }
6273
6274 StencilOpState& setWriteMask( uint32_t writeMask_ )
6275 {
6276 writeMask = writeMask_;
6277 return *this;
6278 }
6279
6280 StencilOpState& setReference( uint32_t reference_ )
6281 {
6282 reference = reference_;
6283 return *this;
6284 }
6285
6286 operator const VkStencilOpState&() const
6287 {
6288 return *reinterpret_cast<const VkStencilOpState*>(this);
6289 }
6290
6291 bool operator==( StencilOpState const& rhs ) const
6292 {
6293 return ( failOp == rhs.failOp )
6294 && ( passOp == rhs.passOp )
6295 && ( depthFailOp == rhs.depthFailOp )
6296 && ( compareOp == rhs.compareOp )
6297 && ( compareMask == rhs.compareMask )
6298 && ( writeMask == rhs.writeMask )
6299 && ( reference == rhs.reference );
6300 }
6301
6302 bool operator!=( StencilOpState const& rhs ) const
6303 {
6304 return !operator==( rhs );
6305 }
6306
6307 StencilOp failOp;
6308 StencilOp passOp;
6309 StencilOp depthFailOp;
6310 CompareOp compareOp;
6311 uint32_t compareMask;
6312 uint32_t writeMask;
6313 uint32_t reference;
6314 };
6315 static_assert( sizeof( StencilOpState ) == sizeof( VkStencilOpState ), "struct and wrapper have different size!" );
6316
6317 enum class LogicOp
6318 {
6319 eClear = VK_LOGIC_OP_CLEAR,
6320 eAnd = VK_LOGIC_OP_AND,
6321 eAndReverse = VK_LOGIC_OP_AND_REVERSE,
6322 eCopy = VK_LOGIC_OP_COPY,
6323 eAndInverted = VK_LOGIC_OP_AND_INVERTED,
6324 eNoOp = VK_LOGIC_OP_NO_OP,
6325 eXor = VK_LOGIC_OP_XOR,
6326 eOr = VK_LOGIC_OP_OR,
6327 eNor = VK_LOGIC_OP_NOR,
6328 eEquivalent = VK_LOGIC_OP_EQUIVALENT,
6329 eInvert = VK_LOGIC_OP_INVERT,
6330 eOrReverse = VK_LOGIC_OP_OR_REVERSE,
6331 eCopyInverted = VK_LOGIC_OP_COPY_INVERTED,
6332 eOrInverted = VK_LOGIC_OP_OR_INVERTED,
6333 eNand = VK_LOGIC_OP_NAND,
6334 eSet = VK_LOGIC_OP_SET
6335 };
6336
6337 enum class InternalAllocationType
6338 {
6339 eExecutable = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE
6340 };
6341
6342 enum class SystemAllocationScope
6343 {
6344 eCommand = VK_SYSTEM_ALLOCATION_SCOPE_COMMAND,
6345 eObject = VK_SYSTEM_ALLOCATION_SCOPE_OBJECT,
6346 eCache = VK_SYSTEM_ALLOCATION_SCOPE_CACHE,
6347 eDevice = VK_SYSTEM_ALLOCATION_SCOPE_DEVICE,
6348 eInstance = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE
6349 };
6350
6351 enum class PhysicalDeviceType
6352 {
6353 eOther = VK_PHYSICAL_DEVICE_TYPE_OTHER,
6354 eIntegratedGpu = VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU,
6355 eDiscreteGpu = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU,
6356 eVirtualGpu = VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU,
6357 eCpu = VK_PHYSICAL_DEVICE_TYPE_CPU
6358 };
6359
6360 enum class VertexInputRate
6361 {
6362 eVertex = VK_VERTEX_INPUT_RATE_VERTEX,
6363 eInstance = VK_VERTEX_INPUT_RATE_INSTANCE
6364 };
6365
6366 struct VertexInputBindingDescription
6367 {
6368 VertexInputBindingDescription( uint32_t binding_ = 0, uint32_t stride_ = 0, VertexInputRate inputRate_ = VertexInputRate::eVertex )
6369 : binding( binding_ )
6370 , stride( stride_ )
6371 , inputRate( inputRate_ )
6372 {
6373 }
6374
6375 VertexInputBindingDescription( VkVertexInputBindingDescription const & rhs )
6376 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006377 memcpy( this, &rhs, sizeof( VertexInputBindingDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006378 }
6379
6380 VertexInputBindingDescription& operator=( VkVertexInputBindingDescription const & rhs )
6381 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006382 memcpy( this, &rhs, sizeof( VertexInputBindingDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006383 return *this;
6384 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006385 VertexInputBindingDescription& setBinding( uint32_t binding_ )
6386 {
6387 binding = binding_;
6388 return *this;
6389 }
6390
6391 VertexInputBindingDescription& setStride( uint32_t stride_ )
6392 {
6393 stride = stride_;
6394 return *this;
6395 }
6396
6397 VertexInputBindingDescription& setInputRate( VertexInputRate inputRate_ )
6398 {
6399 inputRate = inputRate_;
6400 return *this;
6401 }
6402
6403 operator const VkVertexInputBindingDescription&() const
6404 {
6405 return *reinterpret_cast<const VkVertexInputBindingDescription*>(this);
6406 }
6407
6408 bool operator==( VertexInputBindingDescription const& rhs ) const
6409 {
6410 return ( binding == rhs.binding )
6411 && ( stride == rhs.stride )
6412 && ( inputRate == rhs.inputRate );
6413 }
6414
6415 bool operator!=( VertexInputBindingDescription const& rhs ) const
6416 {
6417 return !operator==( rhs );
6418 }
6419
6420 uint32_t binding;
6421 uint32_t stride;
6422 VertexInputRate inputRate;
6423 };
6424 static_assert( sizeof( VertexInputBindingDescription ) == sizeof( VkVertexInputBindingDescription ), "struct and wrapper have different size!" );
6425
6426 enum class Format
6427 {
6428 eUndefined = VK_FORMAT_UNDEFINED,
6429 eR4G4UnormPack8 = VK_FORMAT_R4G4_UNORM_PACK8,
6430 eR4G4B4A4UnormPack16 = VK_FORMAT_R4G4B4A4_UNORM_PACK16,
6431 eB4G4R4A4UnormPack16 = VK_FORMAT_B4G4R4A4_UNORM_PACK16,
6432 eR5G6B5UnormPack16 = VK_FORMAT_R5G6B5_UNORM_PACK16,
6433 eB5G6R5UnormPack16 = VK_FORMAT_B5G6R5_UNORM_PACK16,
6434 eR5G5B5A1UnormPack16 = VK_FORMAT_R5G5B5A1_UNORM_PACK16,
6435 eB5G5R5A1UnormPack16 = VK_FORMAT_B5G5R5A1_UNORM_PACK16,
6436 eA1R5G5B5UnormPack16 = VK_FORMAT_A1R5G5B5_UNORM_PACK16,
6437 eR8Unorm = VK_FORMAT_R8_UNORM,
6438 eR8Snorm = VK_FORMAT_R8_SNORM,
6439 eR8Uscaled = VK_FORMAT_R8_USCALED,
6440 eR8Sscaled = VK_FORMAT_R8_SSCALED,
6441 eR8Uint = VK_FORMAT_R8_UINT,
6442 eR8Sint = VK_FORMAT_R8_SINT,
6443 eR8Srgb = VK_FORMAT_R8_SRGB,
6444 eR8G8Unorm = VK_FORMAT_R8G8_UNORM,
6445 eR8G8Snorm = VK_FORMAT_R8G8_SNORM,
6446 eR8G8Uscaled = VK_FORMAT_R8G8_USCALED,
6447 eR8G8Sscaled = VK_FORMAT_R8G8_SSCALED,
6448 eR8G8Uint = VK_FORMAT_R8G8_UINT,
6449 eR8G8Sint = VK_FORMAT_R8G8_SINT,
6450 eR8G8Srgb = VK_FORMAT_R8G8_SRGB,
6451 eR8G8B8Unorm = VK_FORMAT_R8G8B8_UNORM,
6452 eR8G8B8Snorm = VK_FORMAT_R8G8B8_SNORM,
6453 eR8G8B8Uscaled = VK_FORMAT_R8G8B8_USCALED,
6454 eR8G8B8Sscaled = VK_FORMAT_R8G8B8_SSCALED,
6455 eR8G8B8Uint = VK_FORMAT_R8G8B8_UINT,
6456 eR8G8B8Sint = VK_FORMAT_R8G8B8_SINT,
6457 eR8G8B8Srgb = VK_FORMAT_R8G8B8_SRGB,
6458 eB8G8R8Unorm = VK_FORMAT_B8G8R8_UNORM,
6459 eB8G8R8Snorm = VK_FORMAT_B8G8R8_SNORM,
6460 eB8G8R8Uscaled = VK_FORMAT_B8G8R8_USCALED,
6461 eB8G8R8Sscaled = VK_FORMAT_B8G8R8_SSCALED,
6462 eB8G8R8Uint = VK_FORMAT_B8G8R8_UINT,
6463 eB8G8R8Sint = VK_FORMAT_B8G8R8_SINT,
6464 eB8G8R8Srgb = VK_FORMAT_B8G8R8_SRGB,
6465 eR8G8B8A8Unorm = VK_FORMAT_R8G8B8A8_UNORM,
6466 eR8G8B8A8Snorm = VK_FORMAT_R8G8B8A8_SNORM,
6467 eR8G8B8A8Uscaled = VK_FORMAT_R8G8B8A8_USCALED,
6468 eR8G8B8A8Sscaled = VK_FORMAT_R8G8B8A8_SSCALED,
6469 eR8G8B8A8Uint = VK_FORMAT_R8G8B8A8_UINT,
6470 eR8G8B8A8Sint = VK_FORMAT_R8G8B8A8_SINT,
6471 eR8G8B8A8Srgb = VK_FORMAT_R8G8B8A8_SRGB,
6472 eB8G8R8A8Unorm = VK_FORMAT_B8G8R8A8_UNORM,
6473 eB8G8R8A8Snorm = VK_FORMAT_B8G8R8A8_SNORM,
6474 eB8G8R8A8Uscaled = VK_FORMAT_B8G8R8A8_USCALED,
6475 eB8G8R8A8Sscaled = VK_FORMAT_B8G8R8A8_SSCALED,
6476 eB8G8R8A8Uint = VK_FORMAT_B8G8R8A8_UINT,
6477 eB8G8R8A8Sint = VK_FORMAT_B8G8R8A8_SINT,
6478 eB8G8R8A8Srgb = VK_FORMAT_B8G8R8A8_SRGB,
6479 eA8B8G8R8UnormPack32 = VK_FORMAT_A8B8G8R8_UNORM_PACK32,
6480 eA8B8G8R8SnormPack32 = VK_FORMAT_A8B8G8R8_SNORM_PACK32,
6481 eA8B8G8R8UscaledPack32 = VK_FORMAT_A8B8G8R8_USCALED_PACK32,
6482 eA8B8G8R8SscaledPack32 = VK_FORMAT_A8B8G8R8_SSCALED_PACK32,
6483 eA8B8G8R8UintPack32 = VK_FORMAT_A8B8G8R8_UINT_PACK32,
6484 eA8B8G8R8SintPack32 = VK_FORMAT_A8B8G8R8_SINT_PACK32,
6485 eA8B8G8R8SrgbPack32 = VK_FORMAT_A8B8G8R8_SRGB_PACK32,
6486 eA2R10G10B10UnormPack32 = VK_FORMAT_A2R10G10B10_UNORM_PACK32,
6487 eA2R10G10B10SnormPack32 = VK_FORMAT_A2R10G10B10_SNORM_PACK32,
6488 eA2R10G10B10UscaledPack32 = VK_FORMAT_A2R10G10B10_USCALED_PACK32,
6489 eA2R10G10B10SscaledPack32 = VK_FORMAT_A2R10G10B10_SSCALED_PACK32,
6490 eA2R10G10B10UintPack32 = VK_FORMAT_A2R10G10B10_UINT_PACK32,
6491 eA2R10G10B10SintPack32 = VK_FORMAT_A2R10G10B10_SINT_PACK32,
6492 eA2B10G10R10UnormPack32 = VK_FORMAT_A2B10G10R10_UNORM_PACK32,
6493 eA2B10G10R10SnormPack32 = VK_FORMAT_A2B10G10R10_SNORM_PACK32,
6494 eA2B10G10R10UscaledPack32 = VK_FORMAT_A2B10G10R10_USCALED_PACK32,
6495 eA2B10G10R10SscaledPack32 = VK_FORMAT_A2B10G10R10_SSCALED_PACK32,
6496 eA2B10G10R10UintPack32 = VK_FORMAT_A2B10G10R10_UINT_PACK32,
6497 eA2B10G10R10SintPack32 = VK_FORMAT_A2B10G10R10_SINT_PACK32,
6498 eR16Unorm = VK_FORMAT_R16_UNORM,
6499 eR16Snorm = VK_FORMAT_R16_SNORM,
6500 eR16Uscaled = VK_FORMAT_R16_USCALED,
6501 eR16Sscaled = VK_FORMAT_R16_SSCALED,
6502 eR16Uint = VK_FORMAT_R16_UINT,
6503 eR16Sint = VK_FORMAT_R16_SINT,
6504 eR16Sfloat = VK_FORMAT_R16_SFLOAT,
6505 eR16G16Unorm = VK_FORMAT_R16G16_UNORM,
6506 eR16G16Snorm = VK_FORMAT_R16G16_SNORM,
6507 eR16G16Uscaled = VK_FORMAT_R16G16_USCALED,
6508 eR16G16Sscaled = VK_FORMAT_R16G16_SSCALED,
6509 eR16G16Uint = VK_FORMAT_R16G16_UINT,
6510 eR16G16Sint = VK_FORMAT_R16G16_SINT,
6511 eR16G16Sfloat = VK_FORMAT_R16G16_SFLOAT,
6512 eR16G16B16Unorm = VK_FORMAT_R16G16B16_UNORM,
6513 eR16G16B16Snorm = VK_FORMAT_R16G16B16_SNORM,
6514 eR16G16B16Uscaled = VK_FORMAT_R16G16B16_USCALED,
6515 eR16G16B16Sscaled = VK_FORMAT_R16G16B16_SSCALED,
6516 eR16G16B16Uint = VK_FORMAT_R16G16B16_UINT,
6517 eR16G16B16Sint = VK_FORMAT_R16G16B16_SINT,
6518 eR16G16B16Sfloat = VK_FORMAT_R16G16B16_SFLOAT,
6519 eR16G16B16A16Unorm = VK_FORMAT_R16G16B16A16_UNORM,
6520 eR16G16B16A16Snorm = VK_FORMAT_R16G16B16A16_SNORM,
6521 eR16G16B16A16Uscaled = VK_FORMAT_R16G16B16A16_USCALED,
6522 eR16G16B16A16Sscaled = VK_FORMAT_R16G16B16A16_SSCALED,
6523 eR16G16B16A16Uint = VK_FORMAT_R16G16B16A16_UINT,
6524 eR16G16B16A16Sint = VK_FORMAT_R16G16B16A16_SINT,
6525 eR16G16B16A16Sfloat = VK_FORMAT_R16G16B16A16_SFLOAT,
6526 eR32Uint = VK_FORMAT_R32_UINT,
6527 eR32Sint = VK_FORMAT_R32_SINT,
6528 eR32Sfloat = VK_FORMAT_R32_SFLOAT,
6529 eR32G32Uint = VK_FORMAT_R32G32_UINT,
6530 eR32G32Sint = VK_FORMAT_R32G32_SINT,
6531 eR32G32Sfloat = VK_FORMAT_R32G32_SFLOAT,
6532 eR32G32B32Uint = VK_FORMAT_R32G32B32_UINT,
6533 eR32G32B32Sint = VK_FORMAT_R32G32B32_SINT,
6534 eR32G32B32Sfloat = VK_FORMAT_R32G32B32_SFLOAT,
6535 eR32G32B32A32Uint = VK_FORMAT_R32G32B32A32_UINT,
6536 eR32G32B32A32Sint = VK_FORMAT_R32G32B32A32_SINT,
6537 eR32G32B32A32Sfloat = VK_FORMAT_R32G32B32A32_SFLOAT,
6538 eR64Uint = VK_FORMAT_R64_UINT,
6539 eR64Sint = VK_FORMAT_R64_SINT,
6540 eR64Sfloat = VK_FORMAT_R64_SFLOAT,
6541 eR64G64Uint = VK_FORMAT_R64G64_UINT,
6542 eR64G64Sint = VK_FORMAT_R64G64_SINT,
6543 eR64G64Sfloat = VK_FORMAT_R64G64_SFLOAT,
6544 eR64G64B64Uint = VK_FORMAT_R64G64B64_UINT,
6545 eR64G64B64Sint = VK_FORMAT_R64G64B64_SINT,
6546 eR64G64B64Sfloat = VK_FORMAT_R64G64B64_SFLOAT,
6547 eR64G64B64A64Uint = VK_FORMAT_R64G64B64A64_UINT,
6548 eR64G64B64A64Sint = VK_FORMAT_R64G64B64A64_SINT,
6549 eR64G64B64A64Sfloat = VK_FORMAT_R64G64B64A64_SFLOAT,
6550 eB10G11R11UfloatPack32 = VK_FORMAT_B10G11R11_UFLOAT_PACK32,
6551 eE5B9G9R9UfloatPack32 = VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,
6552 eD16Unorm = VK_FORMAT_D16_UNORM,
6553 eX8D24UnormPack32 = VK_FORMAT_X8_D24_UNORM_PACK32,
6554 eD32Sfloat = VK_FORMAT_D32_SFLOAT,
6555 eS8Uint = VK_FORMAT_S8_UINT,
6556 eD16UnormS8Uint = VK_FORMAT_D16_UNORM_S8_UINT,
6557 eD24UnormS8Uint = VK_FORMAT_D24_UNORM_S8_UINT,
6558 eD32SfloatS8Uint = VK_FORMAT_D32_SFLOAT_S8_UINT,
6559 eBc1RgbUnormBlock = VK_FORMAT_BC1_RGB_UNORM_BLOCK,
6560 eBc1RgbSrgbBlock = VK_FORMAT_BC1_RGB_SRGB_BLOCK,
6561 eBc1RgbaUnormBlock = VK_FORMAT_BC1_RGBA_UNORM_BLOCK,
6562 eBc1RgbaSrgbBlock = VK_FORMAT_BC1_RGBA_SRGB_BLOCK,
6563 eBc2UnormBlock = VK_FORMAT_BC2_UNORM_BLOCK,
6564 eBc2SrgbBlock = VK_FORMAT_BC2_SRGB_BLOCK,
6565 eBc3UnormBlock = VK_FORMAT_BC3_UNORM_BLOCK,
6566 eBc3SrgbBlock = VK_FORMAT_BC3_SRGB_BLOCK,
6567 eBc4UnormBlock = VK_FORMAT_BC4_UNORM_BLOCK,
6568 eBc4SnormBlock = VK_FORMAT_BC4_SNORM_BLOCK,
6569 eBc5UnormBlock = VK_FORMAT_BC5_UNORM_BLOCK,
6570 eBc5SnormBlock = VK_FORMAT_BC5_SNORM_BLOCK,
6571 eBc6HUfloatBlock = VK_FORMAT_BC6H_UFLOAT_BLOCK,
6572 eBc6HSfloatBlock = VK_FORMAT_BC6H_SFLOAT_BLOCK,
6573 eBc7UnormBlock = VK_FORMAT_BC7_UNORM_BLOCK,
6574 eBc7SrgbBlock = VK_FORMAT_BC7_SRGB_BLOCK,
6575 eEtc2R8G8B8UnormBlock = VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK,
6576 eEtc2R8G8B8SrgbBlock = VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK,
6577 eEtc2R8G8B8A1UnormBlock = VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK,
6578 eEtc2R8G8B8A1SrgbBlock = VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK,
6579 eEtc2R8G8B8A8UnormBlock = VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK,
6580 eEtc2R8G8B8A8SrgbBlock = VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK,
6581 eEacR11UnormBlock = VK_FORMAT_EAC_R11_UNORM_BLOCK,
6582 eEacR11SnormBlock = VK_FORMAT_EAC_R11_SNORM_BLOCK,
6583 eEacR11G11UnormBlock = VK_FORMAT_EAC_R11G11_UNORM_BLOCK,
6584 eEacR11G11SnormBlock = VK_FORMAT_EAC_R11G11_SNORM_BLOCK,
6585 eAstc4x4UnormBlock = VK_FORMAT_ASTC_4x4_UNORM_BLOCK,
6586 eAstc4x4SrgbBlock = VK_FORMAT_ASTC_4x4_SRGB_BLOCK,
6587 eAstc5x4UnormBlock = VK_FORMAT_ASTC_5x4_UNORM_BLOCK,
6588 eAstc5x4SrgbBlock = VK_FORMAT_ASTC_5x4_SRGB_BLOCK,
6589 eAstc5x5UnormBlock = VK_FORMAT_ASTC_5x5_UNORM_BLOCK,
6590 eAstc5x5SrgbBlock = VK_FORMAT_ASTC_5x5_SRGB_BLOCK,
6591 eAstc6x5UnormBlock = VK_FORMAT_ASTC_6x5_UNORM_BLOCK,
6592 eAstc6x5SrgbBlock = VK_FORMAT_ASTC_6x5_SRGB_BLOCK,
6593 eAstc6x6UnormBlock = VK_FORMAT_ASTC_6x6_UNORM_BLOCK,
6594 eAstc6x6SrgbBlock = VK_FORMAT_ASTC_6x6_SRGB_BLOCK,
6595 eAstc8x5UnormBlock = VK_FORMAT_ASTC_8x5_UNORM_BLOCK,
6596 eAstc8x5SrgbBlock = VK_FORMAT_ASTC_8x5_SRGB_BLOCK,
6597 eAstc8x6UnormBlock = VK_FORMAT_ASTC_8x6_UNORM_BLOCK,
6598 eAstc8x6SrgbBlock = VK_FORMAT_ASTC_8x6_SRGB_BLOCK,
6599 eAstc8x8UnormBlock = VK_FORMAT_ASTC_8x8_UNORM_BLOCK,
6600 eAstc8x8SrgbBlock = VK_FORMAT_ASTC_8x8_SRGB_BLOCK,
6601 eAstc10x5UnormBlock = VK_FORMAT_ASTC_10x5_UNORM_BLOCK,
6602 eAstc10x5SrgbBlock = VK_FORMAT_ASTC_10x5_SRGB_BLOCK,
6603 eAstc10x6UnormBlock = VK_FORMAT_ASTC_10x6_UNORM_BLOCK,
6604 eAstc10x6SrgbBlock = VK_FORMAT_ASTC_10x6_SRGB_BLOCK,
6605 eAstc10x8UnormBlock = VK_FORMAT_ASTC_10x8_UNORM_BLOCK,
6606 eAstc10x8SrgbBlock = VK_FORMAT_ASTC_10x8_SRGB_BLOCK,
6607 eAstc10x10UnormBlock = VK_FORMAT_ASTC_10x10_UNORM_BLOCK,
6608 eAstc10x10SrgbBlock = VK_FORMAT_ASTC_10x10_SRGB_BLOCK,
6609 eAstc12x10UnormBlock = VK_FORMAT_ASTC_12x10_UNORM_BLOCK,
6610 eAstc12x10SrgbBlock = VK_FORMAT_ASTC_12x10_SRGB_BLOCK,
6611 eAstc12x12UnormBlock = VK_FORMAT_ASTC_12x12_UNORM_BLOCK,
Lenny Komowebf33162016-08-26 14:10:08 -06006612 eAstc12x12SrgbBlock = VK_FORMAT_ASTC_12x12_SRGB_BLOCK,
6613 ePvrtc12BppUnormBlockIMG = VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG,
6614 ePvrtc14BppUnormBlockIMG = VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG,
6615 ePvrtc22BppUnormBlockIMG = VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG,
6616 ePvrtc24BppUnormBlockIMG = VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG,
6617 ePvrtc12BppSrgbBlockIMG = VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG,
6618 ePvrtc14BppSrgbBlockIMG = VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG,
6619 ePvrtc22BppSrgbBlockIMG = VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG,
Lenny Komowb79f04a2017-09-18 17:07:00 -06006620 ePvrtc24BppSrgbBlockIMG = VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG,
6621 eG8B8G8R8422UnormKHR = VK_FORMAT_G8B8G8R8_422_UNORM_KHR,
6622 eB8G8R8G8422UnormKHR = VK_FORMAT_B8G8R8G8_422_UNORM_KHR,
6623 eG8B8R83Plane420UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR,
6624 eG8B8R82Plane420UnormKHR = VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR,
6625 eG8B8R83Plane422UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR,
6626 eG8B8R82Plane422UnormKHR = VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR,
6627 eG8B8R83Plane444UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR,
6628 eR10X6UnormPack16KHR = VK_FORMAT_R10X6_UNORM_PACK16_KHR,
6629 eR10X6G10X6Unorm2Pack16KHR = VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR,
6630 eR10X6G10X6B10X6A10X6Unorm4Pack16KHR = VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR,
6631 eG10X6B10X6G10X6R10X6422Unorm4Pack16KHR = VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR,
6632 eB10X6G10X6R10X6G10X6422Unorm4Pack16KHR = VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR,
6633 eG10X6B10X6R10X63Plane420Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR,
6634 eG10X6B10X6R10X62Plane420Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR,
6635 eG10X6B10X6R10X63Plane422Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR,
6636 eG10X6B10X6R10X62Plane422Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR,
6637 eG10X6B10X6R10X63Plane444Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR,
6638 eR12X4UnormPack16KHR = VK_FORMAT_R12X4_UNORM_PACK16_KHR,
6639 eR12X4G12X4Unorm2Pack16KHR = VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR,
6640 eR12X4G12X4B12X4A12X4Unorm4Pack16KHR = VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR,
6641 eG12X4B12X4G12X4R12X4422Unorm4Pack16KHR = VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR,
6642 eB12X4G12X4R12X4G12X4422Unorm4Pack16KHR = VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR,
6643 eG12X4B12X4R12X43Plane420Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR,
6644 eG12X4B12X4R12X42Plane420Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR,
6645 eG12X4B12X4R12X43Plane422Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR,
6646 eG12X4B12X4R12X42Plane422Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR,
6647 eG12X4B12X4R12X43Plane444Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR,
6648 eG16B16G16R16422UnormKHR = VK_FORMAT_G16B16G16R16_422_UNORM_KHR,
6649 eB16G16R16G16422UnormKHR = VK_FORMAT_B16G16R16G16_422_UNORM_KHR,
6650 eG16B16R163Plane420UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR,
6651 eG16B16R162Plane420UnormKHR = VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR,
6652 eG16B16R163Plane422UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR,
6653 eG16B16R162Plane422UnormKHR = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR,
6654 eG16B16R163Plane444UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006655 };
6656
6657 struct VertexInputAttributeDescription
6658 {
6659 VertexInputAttributeDescription( uint32_t location_ = 0, uint32_t binding_ = 0, Format format_ = Format::eUndefined, uint32_t offset_ = 0 )
6660 : location( location_ )
6661 , binding( binding_ )
6662 , format( format_ )
6663 , offset( offset_ )
6664 {
6665 }
6666
6667 VertexInputAttributeDescription( VkVertexInputAttributeDescription const & rhs )
6668 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006669 memcpy( this, &rhs, sizeof( VertexInputAttributeDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006670 }
6671
6672 VertexInputAttributeDescription& operator=( VkVertexInputAttributeDescription const & rhs )
6673 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006674 memcpy( this, &rhs, sizeof( VertexInputAttributeDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006675 return *this;
6676 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006677 VertexInputAttributeDescription& setLocation( uint32_t location_ )
6678 {
6679 location = location_;
6680 return *this;
6681 }
6682
6683 VertexInputAttributeDescription& setBinding( uint32_t binding_ )
6684 {
6685 binding = binding_;
6686 return *this;
6687 }
6688
6689 VertexInputAttributeDescription& setFormat( Format format_ )
6690 {
6691 format = format_;
6692 return *this;
6693 }
6694
6695 VertexInputAttributeDescription& setOffset( uint32_t offset_ )
6696 {
6697 offset = offset_;
6698 return *this;
6699 }
6700
6701 operator const VkVertexInputAttributeDescription&() const
6702 {
6703 return *reinterpret_cast<const VkVertexInputAttributeDescription*>(this);
6704 }
6705
6706 bool operator==( VertexInputAttributeDescription const& rhs ) const
6707 {
6708 return ( location == rhs.location )
6709 && ( binding == rhs.binding )
6710 && ( format == rhs.format )
6711 && ( offset == rhs.offset );
6712 }
6713
6714 bool operator!=( VertexInputAttributeDescription const& rhs ) const
6715 {
6716 return !operator==( rhs );
6717 }
6718
6719 uint32_t location;
6720 uint32_t binding;
6721 Format format;
6722 uint32_t offset;
6723 };
6724 static_assert( sizeof( VertexInputAttributeDescription ) == sizeof( VkVertexInputAttributeDescription ), "struct and wrapper have different size!" );
6725
6726 enum class StructureType
6727 {
6728 eApplicationInfo = VK_STRUCTURE_TYPE_APPLICATION_INFO,
6729 eInstanceCreateInfo = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
6730 eDeviceQueueCreateInfo = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO,
6731 eDeviceCreateInfo = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,
6732 eSubmitInfo = VK_STRUCTURE_TYPE_SUBMIT_INFO,
6733 eMemoryAllocateInfo = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
6734 eMappedMemoryRange = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE,
6735 eBindSparseInfo = VK_STRUCTURE_TYPE_BIND_SPARSE_INFO,
6736 eFenceCreateInfo = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO,
6737 eSemaphoreCreateInfo = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO,
6738 eEventCreateInfo = VK_STRUCTURE_TYPE_EVENT_CREATE_INFO,
6739 eQueryPoolCreateInfo = VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO,
6740 eBufferCreateInfo = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO,
6741 eBufferViewCreateInfo = VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO,
6742 eImageCreateInfo = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
6743 eImageViewCreateInfo = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
6744 eShaderModuleCreateInfo = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO,
6745 ePipelineCacheCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO,
6746 ePipelineShaderStageCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
6747 ePipelineVertexInputStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,
6748 ePipelineInputAssemblyStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,
6749 ePipelineTessellationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO,
6750 ePipelineViewportStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO,
6751 ePipelineRasterizationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO,
6752 ePipelineMultisampleStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,
6753 ePipelineDepthStencilStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO,
6754 ePipelineColorBlendStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,
6755 ePipelineDynamicStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO,
6756 eGraphicsPipelineCreateInfo = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO,
6757 eComputePipelineCreateInfo = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO,
6758 ePipelineLayoutCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO,
6759 eSamplerCreateInfo = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO,
6760 eDescriptorSetLayoutCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
6761 eDescriptorPoolCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO,
6762 eDescriptorSetAllocateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO,
6763 eWriteDescriptorSet = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET,
6764 eCopyDescriptorSet = VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET,
6765 eFramebufferCreateInfo = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO,
6766 eRenderPassCreateInfo = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
6767 eCommandPoolCreateInfo = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO,
6768 eCommandBufferAllocateInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO,
6769 eCommandBufferInheritanceInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO,
6770 eCommandBufferBeginInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
6771 eRenderPassBeginInfo = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,
6772 eBufferMemoryBarrier = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,
6773 eImageMemoryBarrier = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
6774 eMemoryBarrier = VK_STRUCTURE_TYPE_MEMORY_BARRIER,
6775 eLoaderInstanceCreateInfo = VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO,
6776 eLoaderDeviceCreateInfo = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
6777 eSwapchainCreateInfoKHR = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR,
6778 ePresentInfoKHR = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR,
6779 eDisplayModeCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR,
6780 eDisplaySurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR,
6781 eDisplayPresentInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR,
6782 eXlibSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR,
6783 eXcbSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR,
6784 eWaylandSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR,
6785 eMirSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR,
6786 eAndroidSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR,
6787 eWin32SurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR,
6788 eDebugReportCallbackCreateInfoEXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
6789 ePipelineRasterizationStateRasterizationOrderAMD = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD,
6790 eDebugMarkerObjectNameInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT,
6791 eDebugMarkerObjectTagInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT,
6792 eDebugMarkerMarkerInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT,
6793 eDedicatedAllocationImageCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,
6794 eDedicatedAllocationBufferCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV,
Lenny Komow6501c122016-08-31 15:03:49 -06006795 eDedicatedAllocationMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006796 eTextureLodGatherFormatPropertiesAMD = VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD,
Mark Young0f183a82017-02-28 09:58:04 -07006797 eRenderPassMultiviewCreateInfoKHX = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX,
6798 ePhysicalDeviceMultiviewFeaturesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHX,
6799 ePhysicalDeviceMultiviewPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHX,
Lenny Komow6501c122016-08-31 15:03:49 -06006800 eExternalMemoryImageCreateInfoNV = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,
6801 eExportMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV,
6802 eImportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV,
6803 eExportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV,
Lenny Komow68432d72016-09-29 14:16:59 -06006804 eWin32KeyedMutexAcquireReleaseInfoNV = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV,
Mark Young39389872017-01-19 21:10:49 -07006805 ePhysicalDeviceFeatures2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR,
6806 ePhysicalDeviceProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR,
6807 eFormatProperties2KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR,
6808 eImageFormatProperties2KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR,
6809 ePhysicalDeviceImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR,
6810 eQueueFamilyProperties2KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR,
6811 ePhysicalDeviceMemoryProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR,
6812 eSparseImageFormatProperties2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR,
6813 ePhysicalDeviceSparseImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006814 eMemoryAllocateFlagsInfoKHX = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHX,
Mark Young0f183a82017-02-28 09:58:04 -07006815 eDeviceGroupRenderPassBeginInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHX,
6816 eDeviceGroupCommandBufferBeginInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX,
6817 eDeviceGroupSubmitInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX,
6818 eDeviceGroupBindSparseInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06006819 eAcquireNextImageInfoKHX = VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX,
Lenny Komowb79f04a2017-09-18 17:07:00 -06006820 eBindBufferMemoryDeviceGroupInfoKHX = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHX,
6821 eBindImageMemoryDeviceGroupInfoKHX = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHX,
Mark Young0f183a82017-02-28 09:58:04 -07006822 eDeviceGroupPresentCapabilitiesKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX,
6823 eImageSwapchainCreateInfoKHX = VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX,
6824 eBindImageMemorySwapchainInfoKHX = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX,
Mark Young0f183a82017-02-28 09:58:04 -07006825 eDeviceGroupPresentInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX,
6826 eDeviceGroupSwapchainCreateInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX,
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006827 eValidationFlagsEXT = VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT,
Mark Young39389872017-01-19 21:10:49 -07006828 eViSurfaceCreateInfoNN = VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN,
Mark Young0f183a82017-02-28 09:58:04 -07006829 ePhysicalDeviceGroupPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHX,
6830 eDeviceGroupDeviceCreateInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHX,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006831 ePhysicalDeviceExternalImageFormatInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR,
6832 eExternalImageFormatPropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR,
6833 ePhysicalDeviceExternalBufferInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR,
6834 eExternalBufferPropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR,
6835 ePhysicalDeviceIdPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR,
6836 eExternalMemoryBufferCreateInfoKHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR,
6837 eExternalMemoryImageCreateInfoKHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR,
6838 eExportMemoryAllocateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR,
6839 eImportMemoryWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
6840 eExportMemoryWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
6841 eMemoryWin32HandlePropertiesKHR = VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR,
6842 eMemoryGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR,
6843 eImportMemoryFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR,
6844 eMemoryFdPropertiesKHR = VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR,
6845 eMemoryGetFdInfoKHR = VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR,
6846 eWin32KeyedMutexAcquireReleaseInfoKHR = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR,
6847 ePhysicalDeviceExternalSemaphoreInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR,
6848 eExternalSemaphorePropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR,
6849 eExportSemaphoreCreateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR,
6850 eImportSemaphoreWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
6851 eExportSemaphoreWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
6852 eD3D12FenceSubmitInfoKHR = VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR,
6853 eSemaphoreGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR,
6854 eImportSemaphoreFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR,
6855 eSemaphoreGetFdInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006856 ePhysicalDevicePushDescriptorPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006857 ePhysicalDevice16BitStorageFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR,
Mark Lobodzinski3289d762017-04-03 08:22:04 -06006858 ePresentRegionsKHR = VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006859 eDescriptorUpdateTemplateCreateInfoKHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR,
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006860 eObjectTableCreateInfoNVX = VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX,
6861 eIndirectCommandsLayoutCreateInfoNVX = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX,
6862 eCmdProcessCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX,
6863 eCmdReserveSpaceForCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX,
6864 eDeviceGeneratedCommandsLimitsNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX,
Mark Young39389872017-01-19 21:10:49 -07006865 eDeviceGeneratedCommandsFeaturesNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX,
Mark Young0f183a82017-02-28 09:58:04 -07006866 ePipelineViewportWScalingStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV,
Mark Lobodzinski11a1a342017-08-21 10:34:38 -06006867 eSurfaceCapabilities2EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT,
Mark Young39389872017-01-19 21:10:49 -07006868 eDisplayPowerInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT,
6869 eDeviceEventInfoEXT = VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT,
6870 eDisplayEventInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT,
Mark Young0f183a82017-02-28 09:58:04 -07006871 eSwapchainCounterCreateInfoEXT = VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT,
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06006872 ePresentTimesInfoGOOGLE = VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE,
Mark Young0f183a82017-02-28 09:58:04 -07006873 ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX,
6874 ePipelineViewportSwizzleStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV,
6875 ePhysicalDeviceDiscardRectanglePropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT,
6876 ePipelineDiscardRectangleStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT,
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06006877 eHdrMetadataEXT = VK_STRUCTURE_TYPE_HDR_METADATA_EXT,
Mark Lobodzinski54385432017-05-15 10:27:52 -06006878 eSharedPresentSurfaceCapabilitiesKHR = VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006879 ePhysicalDeviceExternalFenceInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR,
6880 eExternalFencePropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR,
6881 eExportFenceCreateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR,
6882 eImportFenceWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR,
6883 eExportFenceWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR,
6884 eFenceGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR,
6885 eImportFenceFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR,
6886 eFenceGetFdInfoKHR = VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR,
Lenny Komowb79f04a2017-09-18 17:07:00 -06006887 ePhysicalDevicePointClippingPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR,
6888 eRenderPassInputAttachmentAspectCreateInfoKHR = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR,
6889 eImageViewUsageCreateInfoKHR = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR,
6890 ePipelineTessellationDomainOriginStateCreateInfoKHR = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR,
Mark Lobodzinski54385432017-05-15 10:27:52 -06006891 ePhysicalDeviceSurfaceInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR,
6892 eSurfaceCapabilities2KHR = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR,
6893 eSurfaceFormat2KHR = VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006894 ePhysicalDeviceVariablePointerFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006895 eIosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006896 eMacosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006897 eMemoryDedicatedRequirementsKHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR,
6898 eMemoryDedicatedAllocateInfoKHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006899 ePhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT,
6900 eSamplerReductionModeCreateInfoEXT = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06006901 eSampleLocationsInfoEXT = VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT,
6902 eRenderPassSampleLocationsBeginInfoEXT = VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT,
6903 ePipelineSampleLocationsStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT,
6904 ePhysicalDeviceSampleLocationsPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT,
6905 eMultisamplePropertiesEXT = VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006906 eBufferMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR,
6907 eImageMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR,
6908 eImageSparseMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR,
6909 eMemoryRequirements2KHR = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR,
6910 eSparseImageMemoryRequirements2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR,
Lenny Komowb79f04a2017-09-18 17:07:00 -06006911 eImageFormatListCreateInfoKHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006912 ePhysicalDeviceBlendOperationAdvancedFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT,
6913 ePhysicalDeviceBlendOperationAdvancedPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT,
6914 ePipelineColorBlendAdvancedStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT,
6915 ePipelineCoverageToColorStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06006916 ePipelineCoverageModulationStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV,
Lenny Komowb79f04a2017-09-18 17:07:00 -06006917 eSamplerYcbcrConversionCreateInfoKHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR,
6918 eSamplerYcbcrConversionInfoKHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR,
6919 eBindImagePlaneMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR,
6920 eImagePlaneMemoryRequirementsInfoKHR = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR,
6921 ePhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR,
6922 eSamplerYcbcrConversionImageFormatPropertiesKHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR,
6923 eBindBufferMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR,
6924 eBindImageMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06006925 eValidationCacheCreateInfoEXT = VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT,
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -06006926 eShaderModuleValidationCacheCreateInfoEXT = VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT,
Mark Lobodzinski417d5702017-11-27 12:00:45 -07006927 eDeviceQueueGlobalPriorityCreateInfoEXT = VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT,
6928 eImportMemoryHostPointerInfoEXT = VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT,
6929 eMemoryHostPointerPropertiesEXT = VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT,
6930 ePhysicalDeviceExternalMemoryHostPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006931 };
6932
6933 struct ApplicationInfo
6934 {
6935 ApplicationInfo( const char* pApplicationName_ = nullptr, uint32_t applicationVersion_ = 0, const char* pEngineName_ = nullptr, uint32_t engineVersion_ = 0, uint32_t apiVersion_ = 0 )
6936 : sType( StructureType::eApplicationInfo )
6937 , pNext( nullptr )
6938 , pApplicationName( pApplicationName_ )
6939 , applicationVersion( applicationVersion_ )
6940 , pEngineName( pEngineName_ )
6941 , engineVersion( engineVersion_ )
6942 , apiVersion( apiVersion_ )
6943 {
6944 }
6945
6946 ApplicationInfo( VkApplicationInfo const & rhs )
6947 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006948 memcpy( this, &rhs, sizeof( ApplicationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006949 }
6950
6951 ApplicationInfo& operator=( VkApplicationInfo const & rhs )
6952 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006953 memcpy( this, &rhs, sizeof( ApplicationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006954 return *this;
6955 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006956 ApplicationInfo& setPNext( const void* pNext_ )
6957 {
6958 pNext = pNext_;
6959 return *this;
6960 }
6961
6962 ApplicationInfo& setPApplicationName( const char* pApplicationName_ )
6963 {
6964 pApplicationName = pApplicationName_;
6965 return *this;
6966 }
6967
6968 ApplicationInfo& setApplicationVersion( uint32_t applicationVersion_ )
6969 {
6970 applicationVersion = applicationVersion_;
6971 return *this;
6972 }
6973
6974 ApplicationInfo& setPEngineName( const char* pEngineName_ )
6975 {
6976 pEngineName = pEngineName_;
6977 return *this;
6978 }
6979
6980 ApplicationInfo& setEngineVersion( uint32_t engineVersion_ )
6981 {
6982 engineVersion = engineVersion_;
6983 return *this;
6984 }
6985
6986 ApplicationInfo& setApiVersion( uint32_t apiVersion_ )
6987 {
6988 apiVersion = apiVersion_;
6989 return *this;
6990 }
6991
6992 operator const VkApplicationInfo&() const
6993 {
6994 return *reinterpret_cast<const VkApplicationInfo*>(this);
6995 }
6996
6997 bool operator==( ApplicationInfo const& rhs ) const
6998 {
6999 return ( sType == rhs.sType )
7000 && ( pNext == rhs.pNext )
7001 && ( pApplicationName == rhs.pApplicationName )
7002 && ( applicationVersion == rhs.applicationVersion )
7003 && ( pEngineName == rhs.pEngineName )
7004 && ( engineVersion == rhs.engineVersion )
7005 && ( apiVersion == rhs.apiVersion );
7006 }
7007
7008 bool operator!=( ApplicationInfo const& rhs ) const
7009 {
7010 return !operator==( rhs );
7011 }
7012
7013 private:
7014 StructureType sType;
7015
7016 public:
7017 const void* pNext;
7018 const char* pApplicationName;
7019 uint32_t applicationVersion;
7020 const char* pEngineName;
7021 uint32_t engineVersion;
7022 uint32_t apiVersion;
7023 };
7024 static_assert( sizeof( ApplicationInfo ) == sizeof( VkApplicationInfo ), "struct and wrapper have different size!" );
7025
7026 struct DeviceQueueCreateInfo
7027 {
7028 DeviceQueueCreateInfo( DeviceQueueCreateFlags flags_ = DeviceQueueCreateFlags(), uint32_t queueFamilyIndex_ = 0, uint32_t queueCount_ = 0, const float* pQueuePriorities_ = nullptr )
7029 : sType( StructureType::eDeviceQueueCreateInfo )
7030 , pNext( nullptr )
7031 , flags( flags_ )
7032 , queueFamilyIndex( queueFamilyIndex_ )
7033 , queueCount( queueCount_ )
7034 , pQueuePriorities( pQueuePriorities_ )
7035 {
7036 }
7037
7038 DeviceQueueCreateInfo( VkDeviceQueueCreateInfo const & rhs )
7039 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007040 memcpy( this, &rhs, sizeof( DeviceQueueCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007041 }
7042
7043 DeviceQueueCreateInfo& operator=( VkDeviceQueueCreateInfo const & rhs )
7044 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007045 memcpy( this, &rhs, sizeof( DeviceQueueCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007046 return *this;
7047 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007048 DeviceQueueCreateInfo& setPNext( const void* pNext_ )
7049 {
7050 pNext = pNext_;
7051 return *this;
7052 }
7053
7054 DeviceQueueCreateInfo& setFlags( DeviceQueueCreateFlags flags_ )
7055 {
7056 flags = flags_;
7057 return *this;
7058 }
7059
7060 DeviceQueueCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
7061 {
7062 queueFamilyIndex = queueFamilyIndex_;
7063 return *this;
7064 }
7065
7066 DeviceQueueCreateInfo& setQueueCount( uint32_t queueCount_ )
7067 {
7068 queueCount = queueCount_;
7069 return *this;
7070 }
7071
7072 DeviceQueueCreateInfo& setPQueuePriorities( const float* pQueuePriorities_ )
7073 {
7074 pQueuePriorities = pQueuePriorities_;
7075 return *this;
7076 }
7077
7078 operator const VkDeviceQueueCreateInfo&() const
7079 {
7080 return *reinterpret_cast<const VkDeviceQueueCreateInfo*>(this);
7081 }
7082
7083 bool operator==( DeviceQueueCreateInfo const& rhs ) const
7084 {
7085 return ( sType == rhs.sType )
7086 && ( pNext == rhs.pNext )
7087 && ( flags == rhs.flags )
7088 && ( queueFamilyIndex == rhs.queueFamilyIndex )
7089 && ( queueCount == rhs.queueCount )
7090 && ( pQueuePriorities == rhs.pQueuePriorities );
7091 }
7092
7093 bool operator!=( DeviceQueueCreateInfo const& rhs ) const
7094 {
7095 return !operator==( rhs );
7096 }
7097
7098 private:
7099 StructureType sType;
7100
7101 public:
7102 const void* pNext;
7103 DeviceQueueCreateFlags flags;
7104 uint32_t queueFamilyIndex;
7105 uint32_t queueCount;
7106 const float* pQueuePriorities;
7107 };
7108 static_assert( sizeof( DeviceQueueCreateInfo ) == sizeof( VkDeviceQueueCreateInfo ), "struct and wrapper have different size!" );
7109
7110 struct DeviceCreateInfo
7111 {
7112 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 )
7113 : sType( StructureType::eDeviceCreateInfo )
7114 , pNext( nullptr )
7115 , flags( flags_ )
7116 , queueCreateInfoCount( queueCreateInfoCount_ )
7117 , pQueueCreateInfos( pQueueCreateInfos_ )
7118 , enabledLayerCount( enabledLayerCount_ )
7119 , ppEnabledLayerNames( ppEnabledLayerNames_ )
7120 , enabledExtensionCount( enabledExtensionCount_ )
7121 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
7122 , pEnabledFeatures( pEnabledFeatures_ )
7123 {
7124 }
7125
7126 DeviceCreateInfo( VkDeviceCreateInfo const & rhs )
7127 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007128 memcpy( this, &rhs, sizeof( DeviceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007129 }
7130
7131 DeviceCreateInfo& operator=( VkDeviceCreateInfo const & rhs )
7132 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007133 memcpy( this, &rhs, sizeof( DeviceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007134 return *this;
7135 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007136 DeviceCreateInfo& setPNext( const void* pNext_ )
7137 {
7138 pNext = pNext_;
7139 return *this;
7140 }
7141
7142 DeviceCreateInfo& setFlags( DeviceCreateFlags flags_ )
7143 {
7144 flags = flags_;
7145 return *this;
7146 }
7147
7148 DeviceCreateInfo& setQueueCreateInfoCount( uint32_t queueCreateInfoCount_ )
7149 {
7150 queueCreateInfoCount = queueCreateInfoCount_;
7151 return *this;
7152 }
7153
7154 DeviceCreateInfo& setPQueueCreateInfos( const DeviceQueueCreateInfo* pQueueCreateInfos_ )
7155 {
7156 pQueueCreateInfos = pQueueCreateInfos_;
7157 return *this;
7158 }
7159
7160 DeviceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
7161 {
7162 enabledLayerCount = enabledLayerCount_;
7163 return *this;
7164 }
7165
7166 DeviceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
7167 {
7168 ppEnabledLayerNames = ppEnabledLayerNames_;
7169 return *this;
7170 }
7171
7172 DeviceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
7173 {
7174 enabledExtensionCount = enabledExtensionCount_;
7175 return *this;
7176 }
7177
7178 DeviceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
7179 {
7180 ppEnabledExtensionNames = ppEnabledExtensionNames_;
7181 return *this;
7182 }
7183
7184 DeviceCreateInfo& setPEnabledFeatures( const PhysicalDeviceFeatures* pEnabledFeatures_ )
7185 {
7186 pEnabledFeatures = pEnabledFeatures_;
7187 return *this;
7188 }
7189
7190 operator const VkDeviceCreateInfo&() const
7191 {
7192 return *reinterpret_cast<const VkDeviceCreateInfo*>(this);
7193 }
7194
7195 bool operator==( DeviceCreateInfo const& rhs ) const
7196 {
7197 return ( sType == rhs.sType )
7198 && ( pNext == rhs.pNext )
7199 && ( flags == rhs.flags )
7200 && ( queueCreateInfoCount == rhs.queueCreateInfoCount )
7201 && ( pQueueCreateInfos == rhs.pQueueCreateInfos )
7202 && ( enabledLayerCount == rhs.enabledLayerCount )
7203 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
7204 && ( enabledExtensionCount == rhs.enabledExtensionCount )
7205 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames )
7206 && ( pEnabledFeatures == rhs.pEnabledFeatures );
7207 }
7208
7209 bool operator!=( DeviceCreateInfo const& rhs ) const
7210 {
7211 return !operator==( rhs );
7212 }
7213
7214 private:
7215 StructureType sType;
7216
7217 public:
7218 const void* pNext;
7219 DeviceCreateFlags flags;
7220 uint32_t queueCreateInfoCount;
7221 const DeviceQueueCreateInfo* pQueueCreateInfos;
7222 uint32_t enabledLayerCount;
7223 const char* const* ppEnabledLayerNames;
7224 uint32_t enabledExtensionCount;
7225 const char* const* ppEnabledExtensionNames;
7226 const PhysicalDeviceFeatures* pEnabledFeatures;
7227 };
7228 static_assert( sizeof( DeviceCreateInfo ) == sizeof( VkDeviceCreateInfo ), "struct and wrapper have different size!" );
7229
7230 struct InstanceCreateInfo
7231 {
7232 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 )
7233 : sType( StructureType::eInstanceCreateInfo )
7234 , pNext( nullptr )
7235 , flags( flags_ )
7236 , pApplicationInfo( pApplicationInfo_ )
7237 , enabledLayerCount( enabledLayerCount_ )
7238 , ppEnabledLayerNames( ppEnabledLayerNames_ )
7239 , enabledExtensionCount( enabledExtensionCount_ )
7240 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
7241 {
7242 }
7243
7244 InstanceCreateInfo( VkInstanceCreateInfo const & rhs )
7245 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007246 memcpy( this, &rhs, sizeof( InstanceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007247 }
7248
7249 InstanceCreateInfo& operator=( VkInstanceCreateInfo const & rhs )
7250 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007251 memcpy( this, &rhs, sizeof( InstanceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007252 return *this;
7253 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007254 InstanceCreateInfo& setPNext( const void* pNext_ )
7255 {
7256 pNext = pNext_;
7257 return *this;
7258 }
7259
7260 InstanceCreateInfo& setFlags( InstanceCreateFlags flags_ )
7261 {
7262 flags = flags_;
7263 return *this;
7264 }
7265
7266 InstanceCreateInfo& setPApplicationInfo( const ApplicationInfo* pApplicationInfo_ )
7267 {
7268 pApplicationInfo = pApplicationInfo_;
7269 return *this;
7270 }
7271
7272 InstanceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
7273 {
7274 enabledLayerCount = enabledLayerCount_;
7275 return *this;
7276 }
7277
7278 InstanceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
7279 {
7280 ppEnabledLayerNames = ppEnabledLayerNames_;
7281 return *this;
7282 }
7283
7284 InstanceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
7285 {
7286 enabledExtensionCount = enabledExtensionCount_;
7287 return *this;
7288 }
7289
7290 InstanceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
7291 {
7292 ppEnabledExtensionNames = ppEnabledExtensionNames_;
7293 return *this;
7294 }
7295
7296 operator const VkInstanceCreateInfo&() const
7297 {
7298 return *reinterpret_cast<const VkInstanceCreateInfo*>(this);
7299 }
7300
7301 bool operator==( InstanceCreateInfo const& rhs ) const
7302 {
7303 return ( sType == rhs.sType )
7304 && ( pNext == rhs.pNext )
7305 && ( flags == rhs.flags )
7306 && ( pApplicationInfo == rhs.pApplicationInfo )
7307 && ( enabledLayerCount == rhs.enabledLayerCount )
7308 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
7309 && ( enabledExtensionCount == rhs.enabledExtensionCount )
7310 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames );
7311 }
7312
7313 bool operator!=( InstanceCreateInfo const& rhs ) const
7314 {
7315 return !operator==( rhs );
7316 }
7317
7318 private:
7319 StructureType sType;
7320
7321 public:
7322 const void* pNext;
7323 InstanceCreateFlags flags;
7324 const ApplicationInfo* pApplicationInfo;
7325 uint32_t enabledLayerCount;
7326 const char* const* ppEnabledLayerNames;
7327 uint32_t enabledExtensionCount;
7328 const char* const* ppEnabledExtensionNames;
7329 };
7330 static_assert( sizeof( InstanceCreateInfo ) == sizeof( VkInstanceCreateInfo ), "struct and wrapper have different size!" );
7331
7332 struct MemoryAllocateInfo
7333 {
7334 MemoryAllocateInfo( DeviceSize allocationSize_ = 0, uint32_t memoryTypeIndex_ = 0 )
7335 : sType( StructureType::eMemoryAllocateInfo )
7336 , pNext( nullptr )
7337 , allocationSize( allocationSize_ )
7338 , memoryTypeIndex( memoryTypeIndex_ )
7339 {
7340 }
7341
7342 MemoryAllocateInfo( VkMemoryAllocateInfo const & rhs )
7343 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007344 memcpy( this, &rhs, sizeof( MemoryAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007345 }
7346
7347 MemoryAllocateInfo& operator=( VkMemoryAllocateInfo const & rhs )
7348 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007349 memcpy( this, &rhs, sizeof( MemoryAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007350 return *this;
7351 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007352 MemoryAllocateInfo& setPNext( const void* pNext_ )
7353 {
7354 pNext = pNext_;
7355 return *this;
7356 }
7357
7358 MemoryAllocateInfo& setAllocationSize( DeviceSize allocationSize_ )
7359 {
7360 allocationSize = allocationSize_;
7361 return *this;
7362 }
7363
7364 MemoryAllocateInfo& setMemoryTypeIndex( uint32_t memoryTypeIndex_ )
7365 {
7366 memoryTypeIndex = memoryTypeIndex_;
7367 return *this;
7368 }
7369
7370 operator const VkMemoryAllocateInfo&() const
7371 {
7372 return *reinterpret_cast<const VkMemoryAllocateInfo*>(this);
7373 }
7374
7375 bool operator==( MemoryAllocateInfo const& rhs ) const
7376 {
7377 return ( sType == rhs.sType )
7378 && ( pNext == rhs.pNext )
7379 && ( allocationSize == rhs.allocationSize )
7380 && ( memoryTypeIndex == rhs.memoryTypeIndex );
7381 }
7382
7383 bool operator!=( MemoryAllocateInfo const& rhs ) const
7384 {
7385 return !operator==( rhs );
7386 }
7387
7388 private:
7389 StructureType sType;
7390
7391 public:
7392 const void* pNext;
7393 DeviceSize allocationSize;
7394 uint32_t memoryTypeIndex;
7395 };
7396 static_assert( sizeof( MemoryAllocateInfo ) == sizeof( VkMemoryAllocateInfo ), "struct and wrapper have different size!" );
7397
7398 struct MappedMemoryRange
7399 {
7400 MappedMemoryRange( DeviceMemory memory_ = DeviceMemory(), DeviceSize offset_ = 0, DeviceSize size_ = 0 )
7401 : sType( StructureType::eMappedMemoryRange )
7402 , pNext( nullptr )
7403 , memory( memory_ )
7404 , offset( offset_ )
7405 , size( size_ )
7406 {
7407 }
7408
7409 MappedMemoryRange( VkMappedMemoryRange const & rhs )
7410 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007411 memcpy( this, &rhs, sizeof( MappedMemoryRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007412 }
7413
7414 MappedMemoryRange& operator=( VkMappedMemoryRange const & rhs )
7415 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007416 memcpy( this, &rhs, sizeof( MappedMemoryRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007417 return *this;
7418 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007419 MappedMemoryRange& setPNext( const void* pNext_ )
7420 {
7421 pNext = pNext_;
7422 return *this;
7423 }
7424
7425 MappedMemoryRange& setMemory( DeviceMemory memory_ )
7426 {
7427 memory = memory_;
7428 return *this;
7429 }
7430
7431 MappedMemoryRange& setOffset( DeviceSize offset_ )
7432 {
7433 offset = offset_;
7434 return *this;
7435 }
7436
7437 MappedMemoryRange& setSize( DeviceSize size_ )
7438 {
7439 size = size_;
7440 return *this;
7441 }
7442
7443 operator const VkMappedMemoryRange&() const
7444 {
7445 return *reinterpret_cast<const VkMappedMemoryRange*>(this);
7446 }
7447
7448 bool operator==( MappedMemoryRange const& rhs ) const
7449 {
7450 return ( sType == rhs.sType )
7451 && ( pNext == rhs.pNext )
7452 && ( memory == rhs.memory )
7453 && ( offset == rhs.offset )
7454 && ( size == rhs.size );
7455 }
7456
7457 bool operator!=( MappedMemoryRange const& rhs ) const
7458 {
7459 return !operator==( rhs );
7460 }
7461
7462 private:
7463 StructureType sType;
7464
7465 public:
7466 const void* pNext;
7467 DeviceMemory memory;
7468 DeviceSize offset;
7469 DeviceSize size;
7470 };
7471 static_assert( sizeof( MappedMemoryRange ) == sizeof( VkMappedMemoryRange ), "struct and wrapper have different size!" );
7472
7473 struct WriteDescriptorSet
7474 {
7475 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 )
7476 : sType( StructureType::eWriteDescriptorSet )
7477 , pNext( nullptr )
7478 , dstSet( dstSet_ )
7479 , dstBinding( dstBinding_ )
7480 , dstArrayElement( dstArrayElement_ )
7481 , descriptorCount( descriptorCount_ )
7482 , descriptorType( descriptorType_ )
7483 , pImageInfo( pImageInfo_ )
7484 , pBufferInfo( pBufferInfo_ )
7485 , pTexelBufferView( pTexelBufferView_ )
7486 {
7487 }
7488
7489 WriteDescriptorSet( VkWriteDescriptorSet const & rhs )
7490 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007491 memcpy( this, &rhs, sizeof( WriteDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007492 }
7493
7494 WriteDescriptorSet& operator=( VkWriteDescriptorSet const & rhs )
7495 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007496 memcpy( this, &rhs, sizeof( WriteDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007497 return *this;
7498 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007499 WriteDescriptorSet& setPNext( const void* pNext_ )
7500 {
7501 pNext = pNext_;
7502 return *this;
7503 }
7504
7505 WriteDescriptorSet& setDstSet( DescriptorSet dstSet_ )
7506 {
7507 dstSet = dstSet_;
7508 return *this;
7509 }
7510
7511 WriteDescriptorSet& setDstBinding( uint32_t dstBinding_ )
7512 {
7513 dstBinding = dstBinding_;
7514 return *this;
7515 }
7516
7517 WriteDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
7518 {
7519 dstArrayElement = dstArrayElement_;
7520 return *this;
7521 }
7522
7523 WriteDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
7524 {
7525 descriptorCount = descriptorCount_;
7526 return *this;
7527 }
7528
7529 WriteDescriptorSet& setDescriptorType( DescriptorType descriptorType_ )
7530 {
7531 descriptorType = descriptorType_;
7532 return *this;
7533 }
7534
7535 WriteDescriptorSet& setPImageInfo( const DescriptorImageInfo* pImageInfo_ )
7536 {
7537 pImageInfo = pImageInfo_;
7538 return *this;
7539 }
7540
7541 WriteDescriptorSet& setPBufferInfo( const DescriptorBufferInfo* pBufferInfo_ )
7542 {
7543 pBufferInfo = pBufferInfo_;
7544 return *this;
7545 }
7546
7547 WriteDescriptorSet& setPTexelBufferView( const BufferView* pTexelBufferView_ )
7548 {
7549 pTexelBufferView = pTexelBufferView_;
7550 return *this;
7551 }
7552
7553 operator const VkWriteDescriptorSet&() const
7554 {
7555 return *reinterpret_cast<const VkWriteDescriptorSet*>(this);
7556 }
7557
7558 bool operator==( WriteDescriptorSet const& rhs ) const
7559 {
7560 return ( sType == rhs.sType )
7561 && ( pNext == rhs.pNext )
7562 && ( dstSet == rhs.dstSet )
7563 && ( dstBinding == rhs.dstBinding )
7564 && ( dstArrayElement == rhs.dstArrayElement )
7565 && ( descriptorCount == rhs.descriptorCount )
7566 && ( descriptorType == rhs.descriptorType )
7567 && ( pImageInfo == rhs.pImageInfo )
7568 && ( pBufferInfo == rhs.pBufferInfo )
7569 && ( pTexelBufferView == rhs.pTexelBufferView );
7570 }
7571
7572 bool operator!=( WriteDescriptorSet const& rhs ) const
7573 {
7574 return !operator==( rhs );
7575 }
7576
7577 private:
7578 StructureType sType;
7579
7580 public:
7581 const void* pNext;
7582 DescriptorSet dstSet;
7583 uint32_t dstBinding;
7584 uint32_t dstArrayElement;
7585 uint32_t descriptorCount;
7586 DescriptorType descriptorType;
7587 const DescriptorImageInfo* pImageInfo;
7588 const DescriptorBufferInfo* pBufferInfo;
7589 const BufferView* pTexelBufferView;
7590 };
7591 static_assert( sizeof( WriteDescriptorSet ) == sizeof( VkWriteDescriptorSet ), "struct and wrapper have different size!" );
7592
7593 struct CopyDescriptorSet
7594 {
7595 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 )
7596 : sType( StructureType::eCopyDescriptorSet )
7597 , pNext( nullptr )
7598 , srcSet( srcSet_ )
7599 , srcBinding( srcBinding_ )
7600 , srcArrayElement( srcArrayElement_ )
7601 , dstSet( dstSet_ )
7602 , dstBinding( dstBinding_ )
7603 , dstArrayElement( dstArrayElement_ )
7604 , descriptorCount( descriptorCount_ )
7605 {
7606 }
7607
7608 CopyDescriptorSet( VkCopyDescriptorSet const & rhs )
7609 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007610 memcpy( this, &rhs, sizeof( CopyDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007611 }
7612
7613 CopyDescriptorSet& operator=( VkCopyDescriptorSet const & rhs )
7614 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007615 memcpy( this, &rhs, sizeof( CopyDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007616 return *this;
7617 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007618 CopyDescriptorSet& setPNext( const void* pNext_ )
7619 {
7620 pNext = pNext_;
7621 return *this;
7622 }
7623
7624 CopyDescriptorSet& setSrcSet( DescriptorSet srcSet_ )
7625 {
7626 srcSet = srcSet_;
7627 return *this;
7628 }
7629
7630 CopyDescriptorSet& setSrcBinding( uint32_t srcBinding_ )
7631 {
7632 srcBinding = srcBinding_;
7633 return *this;
7634 }
7635
7636 CopyDescriptorSet& setSrcArrayElement( uint32_t srcArrayElement_ )
7637 {
7638 srcArrayElement = srcArrayElement_;
7639 return *this;
7640 }
7641
7642 CopyDescriptorSet& setDstSet( DescriptorSet dstSet_ )
7643 {
7644 dstSet = dstSet_;
7645 return *this;
7646 }
7647
7648 CopyDescriptorSet& setDstBinding( uint32_t dstBinding_ )
7649 {
7650 dstBinding = dstBinding_;
7651 return *this;
7652 }
7653
7654 CopyDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
7655 {
7656 dstArrayElement = dstArrayElement_;
7657 return *this;
7658 }
7659
7660 CopyDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
7661 {
7662 descriptorCount = descriptorCount_;
7663 return *this;
7664 }
7665
7666 operator const VkCopyDescriptorSet&() const
7667 {
7668 return *reinterpret_cast<const VkCopyDescriptorSet*>(this);
7669 }
7670
7671 bool operator==( CopyDescriptorSet const& rhs ) const
7672 {
7673 return ( sType == rhs.sType )
7674 && ( pNext == rhs.pNext )
7675 && ( srcSet == rhs.srcSet )
7676 && ( srcBinding == rhs.srcBinding )
7677 && ( srcArrayElement == rhs.srcArrayElement )
7678 && ( dstSet == rhs.dstSet )
7679 && ( dstBinding == rhs.dstBinding )
7680 && ( dstArrayElement == rhs.dstArrayElement )
7681 && ( descriptorCount == rhs.descriptorCount );
7682 }
7683
7684 bool operator!=( CopyDescriptorSet const& rhs ) const
7685 {
7686 return !operator==( rhs );
7687 }
7688
7689 private:
7690 StructureType sType;
7691
7692 public:
7693 const void* pNext;
7694 DescriptorSet srcSet;
7695 uint32_t srcBinding;
7696 uint32_t srcArrayElement;
7697 DescriptorSet dstSet;
7698 uint32_t dstBinding;
7699 uint32_t dstArrayElement;
7700 uint32_t descriptorCount;
7701 };
7702 static_assert( sizeof( CopyDescriptorSet ) == sizeof( VkCopyDescriptorSet ), "struct and wrapper have different size!" );
7703
7704 struct BufferViewCreateInfo
7705 {
7706 BufferViewCreateInfo( BufferViewCreateFlags flags_ = BufferViewCreateFlags(), Buffer buffer_ = Buffer(), Format format_ = Format::eUndefined, DeviceSize offset_ = 0, DeviceSize range_ = 0 )
7707 : sType( StructureType::eBufferViewCreateInfo )
7708 , pNext( nullptr )
7709 , flags( flags_ )
7710 , buffer( buffer_ )
7711 , format( format_ )
7712 , offset( offset_ )
7713 , range( range_ )
7714 {
7715 }
7716
7717 BufferViewCreateInfo( VkBufferViewCreateInfo const & rhs )
7718 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007719 memcpy( this, &rhs, sizeof( BufferViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007720 }
7721
7722 BufferViewCreateInfo& operator=( VkBufferViewCreateInfo const & rhs )
7723 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007724 memcpy( this, &rhs, sizeof( BufferViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007725 return *this;
7726 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007727 BufferViewCreateInfo& setPNext( const void* pNext_ )
7728 {
7729 pNext = pNext_;
7730 return *this;
7731 }
7732
7733 BufferViewCreateInfo& setFlags( BufferViewCreateFlags flags_ )
7734 {
7735 flags = flags_;
7736 return *this;
7737 }
7738
7739 BufferViewCreateInfo& setBuffer( Buffer buffer_ )
7740 {
7741 buffer = buffer_;
7742 return *this;
7743 }
7744
7745 BufferViewCreateInfo& setFormat( Format format_ )
7746 {
7747 format = format_;
7748 return *this;
7749 }
7750
7751 BufferViewCreateInfo& setOffset( DeviceSize offset_ )
7752 {
7753 offset = offset_;
7754 return *this;
7755 }
7756
7757 BufferViewCreateInfo& setRange( DeviceSize range_ )
7758 {
7759 range = range_;
7760 return *this;
7761 }
7762
7763 operator const VkBufferViewCreateInfo&() const
7764 {
7765 return *reinterpret_cast<const VkBufferViewCreateInfo*>(this);
7766 }
7767
7768 bool operator==( BufferViewCreateInfo const& rhs ) const
7769 {
7770 return ( sType == rhs.sType )
7771 && ( pNext == rhs.pNext )
7772 && ( flags == rhs.flags )
7773 && ( buffer == rhs.buffer )
7774 && ( format == rhs.format )
7775 && ( offset == rhs.offset )
7776 && ( range == rhs.range );
7777 }
7778
7779 bool operator!=( BufferViewCreateInfo const& rhs ) const
7780 {
7781 return !operator==( rhs );
7782 }
7783
7784 private:
7785 StructureType sType;
7786
7787 public:
7788 const void* pNext;
7789 BufferViewCreateFlags flags;
7790 Buffer buffer;
7791 Format format;
7792 DeviceSize offset;
7793 DeviceSize range;
7794 };
7795 static_assert( sizeof( BufferViewCreateInfo ) == sizeof( VkBufferViewCreateInfo ), "struct and wrapper have different size!" );
7796
7797 struct ShaderModuleCreateInfo
7798 {
7799 ShaderModuleCreateInfo( ShaderModuleCreateFlags flags_ = ShaderModuleCreateFlags(), size_t codeSize_ = 0, const uint32_t* pCode_ = nullptr )
7800 : sType( StructureType::eShaderModuleCreateInfo )
7801 , pNext( nullptr )
7802 , flags( flags_ )
7803 , codeSize( codeSize_ )
7804 , pCode( pCode_ )
7805 {
7806 }
7807
7808 ShaderModuleCreateInfo( VkShaderModuleCreateInfo const & rhs )
7809 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007810 memcpy( this, &rhs, sizeof( ShaderModuleCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007811 }
7812
7813 ShaderModuleCreateInfo& operator=( VkShaderModuleCreateInfo const & rhs )
7814 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007815 memcpy( this, &rhs, sizeof( ShaderModuleCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007816 return *this;
7817 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007818 ShaderModuleCreateInfo& setPNext( const void* pNext_ )
7819 {
7820 pNext = pNext_;
7821 return *this;
7822 }
7823
7824 ShaderModuleCreateInfo& setFlags( ShaderModuleCreateFlags flags_ )
7825 {
7826 flags = flags_;
7827 return *this;
7828 }
7829
7830 ShaderModuleCreateInfo& setCodeSize( size_t codeSize_ )
7831 {
7832 codeSize = codeSize_;
7833 return *this;
7834 }
7835
7836 ShaderModuleCreateInfo& setPCode( const uint32_t* pCode_ )
7837 {
7838 pCode = pCode_;
7839 return *this;
7840 }
7841
7842 operator const VkShaderModuleCreateInfo&() const
7843 {
7844 return *reinterpret_cast<const VkShaderModuleCreateInfo*>(this);
7845 }
7846
7847 bool operator==( ShaderModuleCreateInfo const& rhs ) const
7848 {
7849 return ( sType == rhs.sType )
7850 && ( pNext == rhs.pNext )
7851 && ( flags == rhs.flags )
7852 && ( codeSize == rhs.codeSize )
7853 && ( pCode == rhs.pCode );
7854 }
7855
7856 bool operator!=( ShaderModuleCreateInfo const& rhs ) const
7857 {
7858 return !operator==( rhs );
7859 }
7860
7861 private:
7862 StructureType sType;
7863
7864 public:
7865 const void* pNext;
7866 ShaderModuleCreateFlags flags;
7867 size_t codeSize;
7868 const uint32_t* pCode;
7869 };
7870 static_assert( sizeof( ShaderModuleCreateInfo ) == sizeof( VkShaderModuleCreateInfo ), "struct and wrapper have different size!" );
7871
7872 struct DescriptorSetAllocateInfo
7873 {
7874 DescriptorSetAllocateInfo( DescriptorPool descriptorPool_ = DescriptorPool(), uint32_t descriptorSetCount_ = 0, const DescriptorSetLayout* pSetLayouts_ = nullptr )
7875 : sType( StructureType::eDescriptorSetAllocateInfo )
7876 , pNext( nullptr )
7877 , descriptorPool( descriptorPool_ )
7878 , descriptorSetCount( descriptorSetCount_ )
7879 , pSetLayouts( pSetLayouts_ )
7880 {
7881 }
7882
7883 DescriptorSetAllocateInfo( VkDescriptorSetAllocateInfo const & rhs )
7884 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007885 memcpy( this, &rhs, sizeof( DescriptorSetAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007886 }
7887
7888 DescriptorSetAllocateInfo& operator=( VkDescriptorSetAllocateInfo const & rhs )
7889 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007890 memcpy( this, &rhs, sizeof( DescriptorSetAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007891 return *this;
7892 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007893 DescriptorSetAllocateInfo& setPNext( const void* pNext_ )
7894 {
7895 pNext = pNext_;
7896 return *this;
7897 }
7898
7899 DescriptorSetAllocateInfo& setDescriptorPool( DescriptorPool descriptorPool_ )
7900 {
7901 descriptorPool = descriptorPool_;
7902 return *this;
7903 }
7904
7905 DescriptorSetAllocateInfo& setDescriptorSetCount( uint32_t descriptorSetCount_ )
7906 {
7907 descriptorSetCount = descriptorSetCount_;
7908 return *this;
7909 }
7910
7911 DescriptorSetAllocateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
7912 {
7913 pSetLayouts = pSetLayouts_;
7914 return *this;
7915 }
7916
7917 operator const VkDescriptorSetAllocateInfo&() const
7918 {
7919 return *reinterpret_cast<const VkDescriptorSetAllocateInfo*>(this);
7920 }
7921
7922 bool operator==( DescriptorSetAllocateInfo const& rhs ) const
7923 {
7924 return ( sType == rhs.sType )
7925 && ( pNext == rhs.pNext )
7926 && ( descriptorPool == rhs.descriptorPool )
7927 && ( descriptorSetCount == rhs.descriptorSetCount )
7928 && ( pSetLayouts == rhs.pSetLayouts );
7929 }
7930
7931 bool operator!=( DescriptorSetAllocateInfo const& rhs ) const
7932 {
7933 return !operator==( rhs );
7934 }
7935
7936 private:
7937 StructureType sType;
7938
7939 public:
7940 const void* pNext;
7941 DescriptorPool descriptorPool;
7942 uint32_t descriptorSetCount;
7943 const DescriptorSetLayout* pSetLayouts;
7944 };
7945 static_assert( sizeof( DescriptorSetAllocateInfo ) == sizeof( VkDescriptorSetAllocateInfo ), "struct and wrapper have different size!" );
7946
7947 struct PipelineVertexInputStateCreateInfo
7948 {
7949 PipelineVertexInputStateCreateInfo( PipelineVertexInputStateCreateFlags flags_ = PipelineVertexInputStateCreateFlags(), uint32_t vertexBindingDescriptionCount_ = 0, const VertexInputBindingDescription* pVertexBindingDescriptions_ = nullptr, uint32_t vertexAttributeDescriptionCount_ = 0, const VertexInputAttributeDescription* pVertexAttributeDescriptions_ = nullptr )
7950 : sType( StructureType::ePipelineVertexInputStateCreateInfo )
7951 , pNext( nullptr )
7952 , flags( flags_ )
7953 , vertexBindingDescriptionCount( vertexBindingDescriptionCount_ )
7954 , pVertexBindingDescriptions( pVertexBindingDescriptions_ )
7955 , vertexAttributeDescriptionCount( vertexAttributeDescriptionCount_ )
7956 , pVertexAttributeDescriptions( pVertexAttributeDescriptions_ )
7957 {
7958 }
7959
7960 PipelineVertexInputStateCreateInfo( VkPipelineVertexInputStateCreateInfo const & rhs )
7961 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007962 memcpy( this, &rhs, sizeof( PipelineVertexInputStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007963 }
7964
7965 PipelineVertexInputStateCreateInfo& operator=( VkPipelineVertexInputStateCreateInfo const & rhs )
7966 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007967 memcpy( this, &rhs, sizeof( PipelineVertexInputStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007968 return *this;
7969 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007970 PipelineVertexInputStateCreateInfo& setPNext( const void* pNext_ )
7971 {
7972 pNext = pNext_;
7973 return *this;
7974 }
7975
7976 PipelineVertexInputStateCreateInfo& setFlags( PipelineVertexInputStateCreateFlags flags_ )
7977 {
7978 flags = flags_;
7979 return *this;
7980 }
7981
7982 PipelineVertexInputStateCreateInfo& setVertexBindingDescriptionCount( uint32_t vertexBindingDescriptionCount_ )
7983 {
7984 vertexBindingDescriptionCount = vertexBindingDescriptionCount_;
7985 return *this;
7986 }
7987
7988 PipelineVertexInputStateCreateInfo& setPVertexBindingDescriptions( const VertexInputBindingDescription* pVertexBindingDescriptions_ )
7989 {
7990 pVertexBindingDescriptions = pVertexBindingDescriptions_;
7991 return *this;
7992 }
7993
7994 PipelineVertexInputStateCreateInfo& setVertexAttributeDescriptionCount( uint32_t vertexAttributeDescriptionCount_ )
7995 {
7996 vertexAttributeDescriptionCount = vertexAttributeDescriptionCount_;
7997 return *this;
7998 }
7999
8000 PipelineVertexInputStateCreateInfo& setPVertexAttributeDescriptions( const VertexInputAttributeDescription* pVertexAttributeDescriptions_ )
8001 {
8002 pVertexAttributeDescriptions = pVertexAttributeDescriptions_;
8003 return *this;
8004 }
8005
8006 operator const VkPipelineVertexInputStateCreateInfo&() const
8007 {
8008 return *reinterpret_cast<const VkPipelineVertexInputStateCreateInfo*>(this);
8009 }
8010
8011 bool operator==( PipelineVertexInputStateCreateInfo const& rhs ) const
8012 {
8013 return ( sType == rhs.sType )
8014 && ( pNext == rhs.pNext )
8015 && ( flags == rhs.flags )
8016 && ( vertexBindingDescriptionCount == rhs.vertexBindingDescriptionCount )
8017 && ( pVertexBindingDescriptions == rhs.pVertexBindingDescriptions )
8018 && ( vertexAttributeDescriptionCount == rhs.vertexAttributeDescriptionCount )
8019 && ( pVertexAttributeDescriptions == rhs.pVertexAttributeDescriptions );
8020 }
8021
8022 bool operator!=( PipelineVertexInputStateCreateInfo const& rhs ) const
8023 {
8024 return !operator==( rhs );
8025 }
8026
8027 private:
8028 StructureType sType;
8029
8030 public:
8031 const void* pNext;
8032 PipelineVertexInputStateCreateFlags flags;
8033 uint32_t vertexBindingDescriptionCount;
8034 const VertexInputBindingDescription* pVertexBindingDescriptions;
8035 uint32_t vertexAttributeDescriptionCount;
8036 const VertexInputAttributeDescription* pVertexAttributeDescriptions;
8037 };
8038 static_assert( sizeof( PipelineVertexInputStateCreateInfo ) == sizeof( VkPipelineVertexInputStateCreateInfo ), "struct and wrapper have different size!" );
8039
8040 struct PipelineInputAssemblyStateCreateInfo
8041 {
8042 PipelineInputAssemblyStateCreateInfo( PipelineInputAssemblyStateCreateFlags flags_ = PipelineInputAssemblyStateCreateFlags(), PrimitiveTopology topology_ = PrimitiveTopology::ePointList, Bool32 primitiveRestartEnable_ = 0 )
8043 : sType( StructureType::ePipelineInputAssemblyStateCreateInfo )
8044 , pNext( nullptr )
8045 , flags( flags_ )
8046 , topology( topology_ )
8047 , primitiveRestartEnable( primitiveRestartEnable_ )
8048 {
8049 }
8050
8051 PipelineInputAssemblyStateCreateInfo( VkPipelineInputAssemblyStateCreateInfo const & rhs )
8052 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008053 memcpy( this, &rhs, sizeof( PipelineInputAssemblyStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008054 }
8055
8056 PipelineInputAssemblyStateCreateInfo& operator=( VkPipelineInputAssemblyStateCreateInfo const & rhs )
8057 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008058 memcpy( this, &rhs, sizeof( PipelineInputAssemblyStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008059 return *this;
8060 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008061 PipelineInputAssemblyStateCreateInfo& setPNext( const void* pNext_ )
8062 {
8063 pNext = pNext_;
8064 return *this;
8065 }
8066
8067 PipelineInputAssemblyStateCreateInfo& setFlags( PipelineInputAssemblyStateCreateFlags flags_ )
8068 {
8069 flags = flags_;
8070 return *this;
8071 }
8072
8073 PipelineInputAssemblyStateCreateInfo& setTopology( PrimitiveTopology topology_ )
8074 {
8075 topology = topology_;
8076 return *this;
8077 }
8078
8079 PipelineInputAssemblyStateCreateInfo& setPrimitiveRestartEnable( Bool32 primitiveRestartEnable_ )
8080 {
8081 primitiveRestartEnable = primitiveRestartEnable_;
8082 return *this;
8083 }
8084
8085 operator const VkPipelineInputAssemblyStateCreateInfo&() const
8086 {
8087 return *reinterpret_cast<const VkPipelineInputAssemblyStateCreateInfo*>(this);
8088 }
8089
8090 bool operator==( PipelineInputAssemblyStateCreateInfo const& rhs ) const
8091 {
8092 return ( sType == rhs.sType )
8093 && ( pNext == rhs.pNext )
8094 && ( flags == rhs.flags )
8095 && ( topology == rhs.topology )
8096 && ( primitiveRestartEnable == rhs.primitiveRestartEnable );
8097 }
8098
8099 bool operator!=( PipelineInputAssemblyStateCreateInfo const& rhs ) const
8100 {
8101 return !operator==( rhs );
8102 }
8103
8104 private:
8105 StructureType sType;
8106
8107 public:
8108 const void* pNext;
8109 PipelineInputAssemblyStateCreateFlags flags;
8110 PrimitiveTopology topology;
8111 Bool32 primitiveRestartEnable;
8112 };
8113 static_assert( sizeof( PipelineInputAssemblyStateCreateInfo ) == sizeof( VkPipelineInputAssemblyStateCreateInfo ), "struct and wrapper have different size!" );
8114
8115 struct PipelineTessellationStateCreateInfo
8116 {
8117 PipelineTessellationStateCreateInfo( PipelineTessellationStateCreateFlags flags_ = PipelineTessellationStateCreateFlags(), uint32_t patchControlPoints_ = 0 )
8118 : sType( StructureType::ePipelineTessellationStateCreateInfo )
8119 , pNext( nullptr )
8120 , flags( flags_ )
8121 , patchControlPoints( patchControlPoints_ )
8122 {
8123 }
8124
8125 PipelineTessellationStateCreateInfo( VkPipelineTessellationStateCreateInfo const & rhs )
8126 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008127 memcpy( this, &rhs, sizeof( PipelineTessellationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008128 }
8129
8130 PipelineTessellationStateCreateInfo& operator=( VkPipelineTessellationStateCreateInfo const & rhs )
8131 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008132 memcpy( this, &rhs, sizeof( PipelineTessellationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008133 return *this;
8134 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008135 PipelineTessellationStateCreateInfo& setPNext( const void* pNext_ )
8136 {
8137 pNext = pNext_;
8138 return *this;
8139 }
8140
8141 PipelineTessellationStateCreateInfo& setFlags( PipelineTessellationStateCreateFlags flags_ )
8142 {
8143 flags = flags_;
8144 return *this;
8145 }
8146
8147 PipelineTessellationStateCreateInfo& setPatchControlPoints( uint32_t patchControlPoints_ )
8148 {
8149 patchControlPoints = patchControlPoints_;
8150 return *this;
8151 }
8152
8153 operator const VkPipelineTessellationStateCreateInfo&() const
8154 {
8155 return *reinterpret_cast<const VkPipelineTessellationStateCreateInfo*>(this);
8156 }
8157
8158 bool operator==( PipelineTessellationStateCreateInfo const& rhs ) const
8159 {
8160 return ( sType == rhs.sType )
8161 && ( pNext == rhs.pNext )
8162 && ( flags == rhs.flags )
8163 && ( patchControlPoints == rhs.patchControlPoints );
8164 }
8165
8166 bool operator!=( PipelineTessellationStateCreateInfo const& rhs ) const
8167 {
8168 return !operator==( rhs );
8169 }
8170
8171 private:
8172 StructureType sType;
8173
8174 public:
8175 const void* pNext;
8176 PipelineTessellationStateCreateFlags flags;
8177 uint32_t patchControlPoints;
8178 };
8179 static_assert( sizeof( PipelineTessellationStateCreateInfo ) == sizeof( VkPipelineTessellationStateCreateInfo ), "struct and wrapper have different size!" );
8180
8181 struct PipelineViewportStateCreateInfo
8182 {
8183 PipelineViewportStateCreateInfo( PipelineViewportStateCreateFlags flags_ = PipelineViewportStateCreateFlags(), uint32_t viewportCount_ = 0, const Viewport* pViewports_ = nullptr, uint32_t scissorCount_ = 0, const Rect2D* pScissors_ = nullptr )
8184 : sType( StructureType::ePipelineViewportStateCreateInfo )
8185 , pNext( nullptr )
8186 , flags( flags_ )
8187 , viewportCount( viewportCount_ )
8188 , pViewports( pViewports_ )
8189 , scissorCount( scissorCount_ )
8190 , pScissors( pScissors_ )
8191 {
8192 }
8193
8194 PipelineViewportStateCreateInfo( VkPipelineViewportStateCreateInfo const & rhs )
8195 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008196 memcpy( this, &rhs, sizeof( PipelineViewportStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008197 }
8198
8199 PipelineViewportStateCreateInfo& operator=( VkPipelineViewportStateCreateInfo const & rhs )
8200 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008201 memcpy( this, &rhs, sizeof( PipelineViewportStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008202 return *this;
8203 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008204 PipelineViewportStateCreateInfo& setPNext( const void* pNext_ )
8205 {
8206 pNext = pNext_;
8207 return *this;
8208 }
8209
8210 PipelineViewportStateCreateInfo& setFlags( PipelineViewportStateCreateFlags flags_ )
8211 {
8212 flags = flags_;
8213 return *this;
8214 }
8215
8216 PipelineViewportStateCreateInfo& setViewportCount( uint32_t viewportCount_ )
8217 {
8218 viewportCount = viewportCount_;
8219 return *this;
8220 }
8221
8222 PipelineViewportStateCreateInfo& setPViewports( const Viewport* pViewports_ )
8223 {
8224 pViewports = pViewports_;
8225 return *this;
8226 }
8227
8228 PipelineViewportStateCreateInfo& setScissorCount( uint32_t scissorCount_ )
8229 {
8230 scissorCount = scissorCount_;
8231 return *this;
8232 }
8233
8234 PipelineViewportStateCreateInfo& setPScissors( const Rect2D* pScissors_ )
8235 {
8236 pScissors = pScissors_;
8237 return *this;
8238 }
8239
8240 operator const VkPipelineViewportStateCreateInfo&() const
8241 {
8242 return *reinterpret_cast<const VkPipelineViewportStateCreateInfo*>(this);
8243 }
8244
8245 bool operator==( PipelineViewportStateCreateInfo const& rhs ) const
8246 {
8247 return ( sType == rhs.sType )
8248 && ( pNext == rhs.pNext )
8249 && ( flags == rhs.flags )
8250 && ( viewportCount == rhs.viewportCount )
8251 && ( pViewports == rhs.pViewports )
8252 && ( scissorCount == rhs.scissorCount )
8253 && ( pScissors == rhs.pScissors );
8254 }
8255
8256 bool operator!=( PipelineViewportStateCreateInfo const& rhs ) const
8257 {
8258 return !operator==( rhs );
8259 }
8260
8261 private:
8262 StructureType sType;
8263
8264 public:
8265 const void* pNext;
8266 PipelineViewportStateCreateFlags flags;
8267 uint32_t viewportCount;
8268 const Viewport* pViewports;
8269 uint32_t scissorCount;
8270 const Rect2D* pScissors;
8271 };
8272 static_assert( sizeof( PipelineViewportStateCreateInfo ) == sizeof( VkPipelineViewportStateCreateInfo ), "struct and wrapper have different size!" );
8273
8274 struct PipelineRasterizationStateCreateInfo
8275 {
8276 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 )
8277 : sType( StructureType::ePipelineRasterizationStateCreateInfo )
8278 , pNext( nullptr )
8279 , flags( flags_ )
8280 , depthClampEnable( depthClampEnable_ )
8281 , rasterizerDiscardEnable( rasterizerDiscardEnable_ )
8282 , polygonMode( polygonMode_ )
8283 , cullMode( cullMode_ )
8284 , frontFace( frontFace_ )
8285 , depthBiasEnable( depthBiasEnable_ )
8286 , depthBiasConstantFactor( depthBiasConstantFactor_ )
8287 , depthBiasClamp( depthBiasClamp_ )
8288 , depthBiasSlopeFactor( depthBiasSlopeFactor_ )
8289 , lineWidth( lineWidth_ )
8290 {
8291 }
8292
8293 PipelineRasterizationStateCreateInfo( VkPipelineRasterizationStateCreateInfo const & rhs )
8294 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008295 memcpy( this, &rhs, sizeof( PipelineRasterizationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008296 }
8297
8298 PipelineRasterizationStateCreateInfo& operator=( VkPipelineRasterizationStateCreateInfo const & rhs )
8299 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008300 memcpy( this, &rhs, sizeof( PipelineRasterizationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008301 return *this;
8302 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008303 PipelineRasterizationStateCreateInfo& setPNext( const void* pNext_ )
8304 {
8305 pNext = pNext_;
8306 return *this;
8307 }
8308
8309 PipelineRasterizationStateCreateInfo& setFlags( PipelineRasterizationStateCreateFlags flags_ )
8310 {
8311 flags = flags_;
8312 return *this;
8313 }
8314
8315 PipelineRasterizationStateCreateInfo& setDepthClampEnable( Bool32 depthClampEnable_ )
8316 {
8317 depthClampEnable = depthClampEnable_;
8318 return *this;
8319 }
8320
8321 PipelineRasterizationStateCreateInfo& setRasterizerDiscardEnable( Bool32 rasterizerDiscardEnable_ )
8322 {
8323 rasterizerDiscardEnable = rasterizerDiscardEnable_;
8324 return *this;
8325 }
8326
8327 PipelineRasterizationStateCreateInfo& setPolygonMode( PolygonMode polygonMode_ )
8328 {
8329 polygonMode = polygonMode_;
8330 return *this;
8331 }
8332
8333 PipelineRasterizationStateCreateInfo& setCullMode( CullModeFlags cullMode_ )
8334 {
8335 cullMode = cullMode_;
8336 return *this;
8337 }
8338
8339 PipelineRasterizationStateCreateInfo& setFrontFace( FrontFace frontFace_ )
8340 {
8341 frontFace = frontFace_;
8342 return *this;
8343 }
8344
8345 PipelineRasterizationStateCreateInfo& setDepthBiasEnable( Bool32 depthBiasEnable_ )
8346 {
8347 depthBiasEnable = depthBiasEnable_;
8348 return *this;
8349 }
8350
8351 PipelineRasterizationStateCreateInfo& setDepthBiasConstantFactor( float depthBiasConstantFactor_ )
8352 {
8353 depthBiasConstantFactor = depthBiasConstantFactor_;
8354 return *this;
8355 }
8356
8357 PipelineRasterizationStateCreateInfo& setDepthBiasClamp( float depthBiasClamp_ )
8358 {
8359 depthBiasClamp = depthBiasClamp_;
8360 return *this;
8361 }
8362
8363 PipelineRasterizationStateCreateInfo& setDepthBiasSlopeFactor( float depthBiasSlopeFactor_ )
8364 {
8365 depthBiasSlopeFactor = depthBiasSlopeFactor_;
8366 return *this;
8367 }
8368
8369 PipelineRasterizationStateCreateInfo& setLineWidth( float lineWidth_ )
8370 {
8371 lineWidth = lineWidth_;
8372 return *this;
8373 }
8374
8375 operator const VkPipelineRasterizationStateCreateInfo&() const
8376 {
8377 return *reinterpret_cast<const VkPipelineRasterizationStateCreateInfo*>(this);
8378 }
8379
8380 bool operator==( PipelineRasterizationStateCreateInfo const& rhs ) const
8381 {
8382 return ( sType == rhs.sType )
8383 && ( pNext == rhs.pNext )
8384 && ( flags == rhs.flags )
8385 && ( depthClampEnable == rhs.depthClampEnable )
8386 && ( rasterizerDiscardEnable == rhs.rasterizerDiscardEnable )
8387 && ( polygonMode == rhs.polygonMode )
8388 && ( cullMode == rhs.cullMode )
8389 && ( frontFace == rhs.frontFace )
8390 && ( depthBiasEnable == rhs.depthBiasEnable )
8391 && ( depthBiasConstantFactor == rhs.depthBiasConstantFactor )
8392 && ( depthBiasClamp == rhs.depthBiasClamp )
8393 && ( depthBiasSlopeFactor == rhs.depthBiasSlopeFactor )
8394 && ( lineWidth == rhs.lineWidth );
8395 }
8396
8397 bool operator!=( PipelineRasterizationStateCreateInfo const& rhs ) const
8398 {
8399 return !operator==( rhs );
8400 }
8401
8402 private:
8403 StructureType sType;
8404
8405 public:
8406 const void* pNext;
8407 PipelineRasterizationStateCreateFlags flags;
8408 Bool32 depthClampEnable;
8409 Bool32 rasterizerDiscardEnable;
8410 PolygonMode polygonMode;
8411 CullModeFlags cullMode;
8412 FrontFace frontFace;
8413 Bool32 depthBiasEnable;
8414 float depthBiasConstantFactor;
8415 float depthBiasClamp;
8416 float depthBiasSlopeFactor;
8417 float lineWidth;
8418 };
8419 static_assert( sizeof( PipelineRasterizationStateCreateInfo ) == sizeof( VkPipelineRasterizationStateCreateInfo ), "struct and wrapper have different size!" );
8420
8421 struct PipelineDepthStencilStateCreateInfo
8422 {
8423 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 )
8424 : sType( StructureType::ePipelineDepthStencilStateCreateInfo )
8425 , pNext( nullptr )
8426 , flags( flags_ )
8427 , depthTestEnable( depthTestEnable_ )
8428 , depthWriteEnable( depthWriteEnable_ )
8429 , depthCompareOp( depthCompareOp_ )
8430 , depthBoundsTestEnable( depthBoundsTestEnable_ )
8431 , stencilTestEnable( stencilTestEnable_ )
8432 , front( front_ )
8433 , back( back_ )
8434 , minDepthBounds( minDepthBounds_ )
8435 , maxDepthBounds( maxDepthBounds_ )
8436 {
8437 }
8438
8439 PipelineDepthStencilStateCreateInfo( VkPipelineDepthStencilStateCreateInfo const & rhs )
8440 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008441 memcpy( this, &rhs, sizeof( PipelineDepthStencilStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008442 }
8443
8444 PipelineDepthStencilStateCreateInfo& operator=( VkPipelineDepthStencilStateCreateInfo const & rhs )
8445 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008446 memcpy( this, &rhs, sizeof( PipelineDepthStencilStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008447 return *this;
8448 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008449 PipelineDepthStencilStateCreateInfo& setPNext( const void* pNext_ )
8450 {
8451 pNext = pNext_;
8452 return *this;
8453 }
8454
8455 PipelineDepthStencilStateCreateInfo& setFlags( PipelineDepthStencilStateCreateFlags flags_ )
8456 {
8457 flags = flags_;
8458 return *this;
8459 }
8460
8461 PipelineDepthStencilStateCreateInfo& setDepthTestEnable( Bool32 depthTestEnable_ )
8462 {
8463 depthTestEnable = depthTestEnable_;
8464 return *this;
8465 }
8466
8467 PipelineDepthStencilStateCreateInfo& setDepthWriteEnable( Bool32 depthWriteEnable_ )
8468 {
8469 depthWriteEnable = depthWriteEnable_;
8470 return *this;
8471 }
8472
8473 PipelineDepthStencilStateCreateInfo& setDepthCompareOp( CompareOp depthCompareOp_ )
8474 {
8475 depthCompareOp = depthCompareOp_;
8476 return *this;
8477 }
8478
8479 PipelineDepthStencilStateCreateInfo& setDepthBoundsTestEnable( Bool32 depthBoundsTestEnable_ )
8480 {
8481 depthBoundsTestEnable = depthBoundsTestEnable_;
8482 return *this;
8483 }
8484
8485 PipelineDepthStencilStateCreateInfo& setStencilTestEnable( Bool32 stencilTestEnable_ )
8486 {
8487 stencilTestEnable = stencilTestEnable_;
8488 return *this;
8489 }
8490
8491 PipelineDepthStencilStateCreateInfo& setFront( StencilOpState front_ )
8492 {
8493 front = front_;
8494 return *this;
8495 }
8496
8497 PipelineDepthStencilStateCreateInfo& setBack( StencilOpState back_ )
8498 {
8499 back = back_;
8500 return *this;
8501 }
8502
8503 PipelineDepthStencilStateCreateInfo& setMinDepthBounds( float minDepthBounds_ )
8504 {
8505 minDepthBounds = minDepthBounds_;
8506 return *this;
8507 }
8508
8509 PipelineDepthStencilStateCreateInfo& setMaxDepthBounds( float maxDepthBounds_ )
8510 {
8511 maxDepthBounds = maxDepthBounds_;
8512 return *this;
8513 }
8514
8515 operator const VkPipelineDepthStencilStateCreateInfo&() const
8516 {
8517 return *reinterpret_cast<const VkPipelineDepthStencilStateCreateInfo*>(this);
8518 }
8519
8520 bool operator==( PipelineDepthStencilStateCreateInfo const& rhs ) const
8521 {
8522 return ( sType == rhs.sType )
8523 && ( pNext == rhs.pNext )
8524 && ( flags == rhs.flags )
8525 && ( depthTestEnable == rhs.depthTestEnable )
8526 && ( depthWriteEnable == rhs.depthWriteEnable )
8527 && ( depthCompareOp == rhs.depthCompareOp )
8528 && ( depthBoundsTestEnable == rhs.depthBoundsTestEnable )
8529 && ( stencilTestEnable == rhs.stencilTestEnable )
8530 && ( front == rhs.front )
8531 && ( back == rhs.back )
8532 && ( minDepthBounds == rhs.minDepthBounds )
8533 && ( maxDepthBounds == rhs.maxDepthBounds );
8534 }
8535
8536 bool operator!=( PipelineDepthStencilStateCreateInfo const& rhs ) const
8537 {
8538 return !operator==( rhs );
8539 }
8540
8541 private:
8542 StructureType sType;
8543
8544 public:
8545 const void* pNext;
8546 PipelineDepthStencilStateCreateFlags flags;
8547 Bool32 depthTestEnable;
8548 Bool32 depthWriteEnable;
8549 CompareOp depthCompareOp;
8550 Bool32 depthBoundsTestEnable;
8551 Bool32 stencilTestEnable;
8552 StencilOpState front;
8553 StencilOpState back;
8554 float minDepthBounds;
8555 float maxDepthBounds;
8556 };
8557 static_assert( sizeof( PipelineDepthStencilStateCreateInfo ) == sizeof( VkPipelineDepthStencilStateCreateInfo ), "struct and wrapper have different size!" );
8558
8559 struct PipelineCacheCreateInfo
8560 {
8561 PipelineCacheCreateInfo( PipelineCacheCreateFlags flags_ = PipelineCacheCreateFlags(), size_t initialDataSize_ = 0, const void* pInitialData_ = nullptr )
8562 : sType( StructureType::ePipelineCacheCreateInfo )
8563 , pNext( nullptr )
8564 , flags( flags_ )
8565 , initialDataSize( initialDataSize_ )
8566 , pInitialData( pInitialData_ )
8567 {
8568 }
8569
8570 PipelineCacheCreateInfo( VkPipelineCacheCreateInfo const & rhs )
8571 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008572 memcpy( this, &rhs, sizeof( PipelineCacheCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008573 }
8574
8575 PipelineCacheCreateInfo& operator=( VkPipelineCacheCreateInfo const & rhs )
8576 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008577 memcpy( this, &rhs, sizeof( PipelineCacheCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008578 return *this;
8579 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008580 PipelineCacheCreateInfo& setPNext( const void* pNext_ )
8581 {
8582 pNext = pNext_;
8583 return *this;
8584 }
8585
8586 PipelineCacheCreateInfo& setFlags( PipelineCacheCreateFlags flags_ )
8587 {
8588 flags = flags_;
8589 return *this;
8590 }
8591
8592 PipelineCacheCreateInfo& setInitialDataSize( size_t initialDataSize_ )
8593 {
8594 initialDataSize = initialDataSize_;
8595 return *this;
8596 }
8597
8598 PipelineCacheCreateInfo& setPInitialData( const void* pInitialData_ )
8599 {
8600 pInitialData = pInitialData_;
8601 return *this;
8602 }
8603
8604 operator const VkPipelineCacheCreateInfo&() const
8605 {
8606 return *reinterpret_cast<const VkPipelineCacheCreateInfo*>(this);
8607 }
8608
8609 bool operator==( PipelineCacheCreateInfo const& rhs ) const
8610 {
8611 return ( sType == rhs.sType )
8612 && ( pNext == rhs.pNext )
8613 && ( flags == rhs.flags )
8614 && ( initialDataSize == rhs.initialDataSize )
8615 && ( pInitialData == rhs.pInitialData );
8616 }
8617
8618 bool operator!=( PipelineCacheCreateInfo const& rhs ) const
8619 {
8620 return !operator==( rhs );
8621 }
8622
8623 private:
8624 StructureType sType;
8625
8626 public:
8627 const void* pNext;
8628 PipelineCacheCreateFlags flags;
8629 size_t initialDataSize;
8630 const void* pInitialData;
8631 };
8632 static_assert( sizeof( PipelineCacheCreateInfo ) == sizeof( VkPipelineCacheCreateInfo ), "struct and wrapper have different size!" );
8633
8634 struct SamplerCreateInfo
8635 {
8636 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 )
8637 : sType( StructureType::eSamplerCreateInfo )
8638 , pNext( nullptr )
8639 , flags( flags_ )
8640 , magFilter( magFilter_ )
8641 , minFilter( minFilter_ )
8642 , mipmapMode( mipmapMode_ )
8643 , addressModeU( addressModeU_ )
8644 , addressModeV( addressModeV_ )
8645 , addressModeW( addressModeW_ )
8646 , mipLodBias( mipLodBias_ )
8647 , anisotropyEnable( anisotropyEnable_ )
8648 , maxAnisotropy( maxAnisotropy_ )
8649 , compareEnable( compareEnable_ )
8650 , compareOp( compareOp_ )
8651 , minLod( minLod_ )
8652 , maxLod( maxLod_ )
8653 , borderColor( borderColor_ )
8654 , unnormalizedCoordinates( unnormalizedCoordinates_ )
8655 {
8656 }
8657
8658 SamplerCreateInfo( VkSamplerCreateInfo const & rhs )
8659 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008660 memcpy( this, &rhs, sizeof( SamplerCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008661 }
8662
8663 SamplerCreateInfo& operator=( VkSamplerCreateInfo const & rhs )
8664 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008665 memcpy( this, &rhs, sizeof( SamplerCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008666 return *this;
8667 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008668 SamplerCreateInfo& setPNext( const void* pNext_ )
8669 {
8670 pNext = pNext_;
8671 return *this;
8672 }
8673
8674 SamplerCreateInfo& setFlags( SamplerCreateFlags flags_ )
8675 {
8676 flags = flags_;
8677 return *this;
8678 }
8679
8680 SamplerCreateInfo& setMagFilter( Filter magFilter_ )
8681 {
8682 magFilter = magFilter_;
8683 return *this;
8684 }
8685
8686 SamplerCreateInfo& setMinFilter( Filter minFilter_ )
8687 {
8688 minFilter = minFilter_;
8689 return *this;
8690 }
8691
8692 SamplerCreateInfo& setMipmapMode( SamplerMipmapMode mipmapMode_ )
8693 {
8694 mipmapMode = mipmapMode_;
8695 return *this;
8696 }
8697
8698 SamplerCreateInfo& setAddressModeU( SamplerAddressMode addressModeU_ )
8699 {
8700 addressModeU = addressModeU_;
8701 return *this;
8702 }
8703
8704 SamplerCreateInfo& setAddressModeV( SamplerAddressMode addressModeV_ )
8705 {
8706 addressModeV = addressModeV_;
8707 return *this;
8708 }
8709
8710 SamplerCreateInfo& setAddressModeW( SamplerAddressMode addressModeW_ )
8711 {
8712 addressModeW = addressModeW_;
8713 return *this;
8714 }
8715
8716 SamplerCreateInfo& setMipLodBias( float mipLodBias_ )
8717 {
8718 mipLodBias = mipLodBias_;
8719 return *this;
8720 }
8721
8722 SamplerCreateInfo& setAnisotropyEnable( Bool32 anisotropyEnable_ )
8723 {
8724 anisotropyEnable = anisotropyEnable_;
8725 return *this;
8726 }
8727
8728 SamplerCreateInfo& setMaxAnisotropy( float maxAnisotropy_ )
8729 {
8730 maxAnisotropy = maxAnisotropy_;
8731 return *this;
8732 }
8733
8734 SamplerCreateInfo& setCompareEnable( Bool32 compareEnable_ )
8735 {
8736 compareEnable = compareEnable_;
8737 return *this;
8738 }
8739
8740 SamplerCreateInfo& setCompareOp( CompareOp compareOp_ )
8741 {
8742 compareOp = compareOp_;
8743 return *this;
8744 }
8745
8746 SamplerCreateInfo& setMinLod( float minLod_ )
8747 {
8748 minLod = minLod_;
8749 return *this;
8750 }
8751
8752 SamplerCreateInfo& setMaxLod( float maxLod_ )
8753 {
8754 maxLod = maxLod_;
8755 return *this;
8756 }
8757
8758 SamplerCreateInfo& setBorderColor( BorderColor borderColor_ )
8759 {
8760 borderColor = borderColor_;
8761 return *this;
8762 }
8763
8764 SamplerCreateInfo& setUnnormalizedCoordinates( Bool32 unnormalizedCoordinates_ )
8765 {
8766 unnormalizedCoordinates = unnormalizedCoordinates_;
8767 return *this;
8768 }
8769
8770 operator const VkSamplerCreateInfo&() const
8771 {
8772 return *reinterpret_cast<const VkSamplerCreateInfo*>(this);
8773 }
8774
8775 bool operator==( SamplerCreateInfo const& rhs ) const
8776 {
8777 return ( sType == rhs.sType )
8778 && ( pNext == rhs.pNext )
8779 && ( flags == rhs.flags )
8780 && ( magFilter == rhs.magFilter )
8781 && ( minFilter == rhs.minFilter )
8782 && ( mipmapMode == rhs.mipmapMode )
8783 && ( addressModeU == rhs.addressModeU )
8784 && ( addressModeV == rhs.addressModeV )
8785 && ( addressModeW == rhs.addressModeW )
8786 && ( mipLodBias == rhs.mipLodBias )
8787 && ( anisotropyEnable == rhs.anisotropyEnable )
8788 && ( maxAnisotropy == rhs.maxAnisotropy )
8789 && ( compareEnable == rhs.compareEnable )
8790 && ( compareOp == rhs.compareOp )
8791 && ( minLod == rhs.minLod )
8792 && ( maxLod == rhs.maxLod )
8793 && ( borderColor == rhs.borderColor )
8794 && ( unnormalizedCoordinates == rhs.unnormalizedCoordinates );
8795 }
8796
8797 bool operator!=( SamplerCreateInfo const& rhs ) const
8798 {
8799 return !operator==( rhs );
8800 }
8801
8802 private:
8803 StructureType sType;
8804
8805 public:
8806 const void* pNext;
8807 SamplerCreateFlags flags;
8808 Filter magFilter;
8809 Filter minFilter;
8810 SamplerMipmapMode mipmapMode;
8811 SamplerAddressMode addressModeU;
8812 SamplerAddressMode addressModeV;
8813 SamplerAddressMode addressModeW;
8814 float mipLodBias;
8815 Bool32 anisotropyEnable;
8816 float maxAnisotropy;
8817 Bool32 compareEnable;
8818 CompareOp compareOp;
8819 float minLod;
8820 float maxLod;
8821 BorderColor borderColor;
8822 Bool32 unnormalizedCoordinates;
8823 };
8824 static_assert( sizeof( SamplerCreateInfo ) == sizeof( VkSamplerCreateInfo ), "struct and wrapper have different size!" );
8825
8826 struct CommandBufferAllocateInfo
8827 {
8828 CommandBufferAllocateInfo( CommandPool commandPool_ = CommandPool(), CommandBufferLevel level_ = CommandBufferLevel::ePrimary, uint32_t commandBufferCount_ = 0 )
8829 : sType( StructureType::eCommandBufferAllocateInfo )
8830 , pNext( nullptr )
8831 , commandPool( commandPool_ )
8832 , level( level_ )
8833 , commandBufferCount( commandBufferCount_ )
8834 {
8835 }
8836
8837 CommandBufferAllocateInfo( VkCommandBufferAllocateInfo const & rhs )
8838 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008839 memcpy( this, &rhs, sizeof( CommandBufferAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008840 }
8841
8842 CommandBufferAllocateInfo& operator=( VkCommandBufferAllocateInfo const & rhs )
8843 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008844 memcpy( this, &rhs, sizeof( CommandBufferAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008845 return *this;
8846 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008847 CommandBufferAllocateInfo& setPNext( const void* pNext_ )
8848 {
8849 pNext = pNext_;
8850 return *this;
8851 }
8852
8853 CommandBufferAllocateInfo& setCommandPool( CommandPool commandPool_ )
8854 {
8855 commandPool = commandPool_;
8856 return *this;
8857 }
8858
8859 CommandBufferAllocateInfo& setLevel( CommandBufferLevel level_ )
8860 {
8861 level = level_;
8862 return *this;
8863 }
8864
8865 CommandBufferAllocateInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
8866 {
8867 commandBufferCount = commandBufferCount_;
8868 return *this;
8869 }
8870
8871 operator const VkCommandBufferAllocateInfo&() const
8872 {
8873 return *reinterpret_cast<const VkCommandBufferAllocateInfo*>(this);
8874 }
8875
8876 bool operator==( CommandBufferAllocateInfo const& rhs ) const
8877 {
8878 return ( sType == rhs.sType )
8879 && ( pNext == rhs.pNext )
8880 && ( commandPool == rhs.commandPool )
8881 && ( level == rhs.level )
8882 && ( commandBufferCount == rhs.commandBufferCount );
8883 }
8884
8885 bool operator!=( CommandBufferAllocateInfo const& rhs ) const
8886 {
8887 return !operator==( rhs );
8888 }
8889
8890 private:
8891 StructureType sType;
8892
8893 public:
8894 const void* pNext;
8895 CommandPool commandPool;
8896 CommandBufferLevel level;
8897 uint32_t commandBufferCount;
8898 };
8899 static_assert( sizeof( CommandBufferAllocateInfo ) == sizeof( VkCommandBufferAllocateInfo ), "struct and wrapper have different size!" );
8900
8901 struct RenderPassBeginInfo
8902 {
8903 RenderPassBeginInfo( RenderPass renderPass_ = RenderPass(), Framebuffer framebuffer_ = Framebuffer(), Rect2D renderArea_ = Rect2D(), uint32_t clearValueCount_ = 0, const ClearValue* pClearValues_ = nullptr )
8904 : sType( StructureType::eRenderPassBeginInfo )
8905 , pNext( nullptr )
8906 , renderPass( renderPass_ )
8907 , framebuffer( framebuffer_ )
8908 , renderArea( renderArea_ )
8909 , clearValueCount( clearValueCount_ )
8910 , pClearValues( pClearValues_ )
8911 {
8912 }
8913
8914 RenderPassBeginInfo( VkRenderPassBeginInfo const & rhs )
8915 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008916 memcpy( this, &rhs, sizeof( RenderPassBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008917 }
8918
8919 RenderPassBeginInfo& operator=( VkRenderPassBeginInfo const & rhs )
8920 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008921 memcpy( this, &rhs, sizeof( RenderPassBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008922 return *this;
8923 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008924 RenderPassBeginInfo& setPNext( const void* pNext_ )
8925 {
8926 pNext = pNext_;
8927 return *this;
8928 }
8929
8930 RenderPassBeginInfo& setRenderPass( RenderPass renderPass_ )
8931 {
8932 renderPass = renderPass_;
8933 return *this;
8934 }
8935
8936 RenderPassBeginInfo& setFramebuffer( Framebuffer framebuffer_ )
8937 {
8938 framebuffer = framebuffer_;
8939 return *this;
8940 }
8941
8942 RenderPassBeginInfo& setRenderArea( Rect2D renderArea_ )
8943 {
8944 renderArea = renderArea_;
8945 return *this;
8946 }
8947
8948 RenderPassBeginInfo& setClearValueCount( uint32_t clearValueCount_ )
8949 {
8950 clearValueCount = clearValueCount_;
8951 return *this;
8952 }
8953
8954 RenderPassBeginInfo& setPClearValues( const ClearValue* pClearValues_ )
8955 {
8956 pClearValues = pClearValues_;
8957 return *this;
8958 }
8959
8960 operator const VkRenderPassBeginInfo&() const
8961 {
8962 return *reinterpret_cast<const VkRenderPassBeginInfo*>(this);
8963 }
8964
8965 bool operator==( RenderPassBeginInfo const& rhs ) const
8966 {
8967 return ( sType == rhs.sType )
8968 && ( pNext == rhs.pNext )
8969 && ( renderPass == rhs.renderPass )
8970 && ( framebuffer == rhs.framebuffer )
8971 && ( renderArea == rhs.renderArea )
8972 && ( clearValueCount == rhs.clearValueCount )
8973 && ( pClearValues == rhs.pClearValues );
8974 }
8975
8976 bool operator!=( RenderPassBeginInfo const& rhs ) const
8977 {
8978 return !operator==( rhs );
8979 }
8980
8981 private:
8982 StructureType sType;
8983
8984 public:
8985 const void* pNext;
8986 RenderPass renderPass;
8987 Framebuffer framebuffer;
8988 Rect2D renderArea;
8989 uint32_t clearValueCount;
8990 const ClearValue* pClearValues;
8991 };
8992 static_assert( sizeof( RenderPassBeginInfo ) == sizeof( VkRenderPassBeginInfo ), "struct and wrapper have different size!" );
8993
8994 struct EventCreateInfo
8995 {
8996 EventCreateInfo( EventCreateFlags flags_ = EventCreateFlags() )
8997 : sType( StructureType::eEventCreateInfo )
8998 , pNext( nullptr )
8999 , flags( flags_ )
9000 {
9001 }
9002
9003 EventCreateInfo( VkEventCreateInfo const & rhs )
9004 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009005 memcpy( this, &rhs, sizeof( EventCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009006 }
9007
9008 EventCreateInfo& operator=( VkEventCreateInfo const & rhs )
9009 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009010 memcpy( this, &rhs, sizeof( EventCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009011 return *this;
9012 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009013 EventCreateInfo& setPNext( const void* pNext_ )
9014 {
9015 pNext = pNext_;
9016 return *this;
9017 }
9018
9019 EventCreateInfo& setFlags( EventCreateFlags flags_ )
9020 {
9021 flags = flags_;
9022 return *this;
9023 }
9024
9025 operator const VkEventCreateInfo&() const
9026 {
9027 return *reinterpret_cast<const VkEventCreateInfo*>(this);
9028 }
9029
9030 bool operator==( EventCreateInfo const& rhs ) const
9031 {
9032 return ( sType == rhs.sType )
9033 && ( pNext == rhs.pNext )
9034 && ( flags == rhs.flags );
9035 }
9036
9037 bool operator!=( EventCreateInfo const& rhs ) const
9038 {
9039 return !operator==( rhs );
9040 }
9041
9042 private:
9043 StructureType sType;
9044
9045 public:
9046 const void* pNext;
9047 EventCreateFlags flags;
9048 };
9049 static_assert( sizeof( EventCreateInfo ) == sizeof( VkEventCreateInfo ), "struct and wrapper have different size!" );
9050
9051 struct SemaphoreCreateInfo
9052 {
9053 SemaphoreCreateInfo( SemaphoreCreateFlags flags_ = SemaphoreCreateFlags() )
9054 : sType( StructureType::eSemaphoreCreateInfo )
9055 , pNext( nullptr )
9056 , flags( flags_ )
9057 {
9058 }
9059
9060 SemaphoreCreateInfo( VkSemaphoreCreateInfo const & rhs )
9061 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009062 memcpy( this, &rhs, sizeof( SemaphoreCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009063 }
9064
9065 SemaphoreCreateInfo& operator=( VkSemaphoreCreateInfo const & rhs )
9066 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009067 memcpy( this, &rhs, sizeof( SemaphoreCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009068 return *this;
9069 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009070 SemaphoreCreateInfo& setPNext( const void* pNext_ )
9071 {
9072 pNext = pNext_;
9073 return *this;
9074 }
9075
9076 SemaphoreCreateInfo& setFlags( SemaphoreCreateFlags flags_ )
9077 {
9078 flags = flags_;
9079 return *this;
9080 }
9081
9082 operator const VkSemaphoreCreateInfo&() const
9083 {
9084 return *reinterpret_cast<const VkSemaphoreCreateInfo*>(this);
9085 }
9086
9087 bool operator==( SemaphoreCreateInfo const& rhs ) const
9088 {
9089 return ( sType == rhs.sType )
9090 && ( pNext == rhs.pNext )
9091 && ( flags == rhs.flags );
9092 }
9093
9094 bool operator!=( SemaphoreCreateInfo const& rhs ) const
9095 {
9096 return !operator==( rhs );
9097 }
9098
9099 private:
9100 StructureType sType;
9101
9102 public:
9103 const void* pNext;
9104 SemaphoreCreateFlags flags;
9105 };
9106 static_assert( sizeof( SemaphoreCreateInfo ) == sizeof( VkSemaphoreCreateInfo ), "struct and wrapper have different size!" );
9107
9108 struct FramebufferCreateInfo
9109 {
9110 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 )
9111 : sType( StructureType::eFramebufferCreateInfo )
9112 , pNext( nullptr )
9113 , flags( flags_ )
9114 , renderPass( renderPass_ )
9115 , attachmentCount( attachmentCount_ )
9116 , pAttachments( pAttachments_ )
9117 , width( width_ )
9118 , height( height_ )
9119 , layers( layers_ )
9120 {
9121 }
9122
9123 FramebufferCreateInfo( VkFramebufferCreateInfo const & rhs )
9124 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009125 memcpy( this, &rhs, sizeof( FramebufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009126 }
9127
9128 FramebufferCreateInfo& operator=( VkFramebufferCreateInfo const & rhs )
9129 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009130 memcpy( this, &rhs, sizeof( FramebufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009131 return *this;
9132 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009133 FramebufferCreateInfo& setPNext( const void* pNext_ )
9134 {
9135 pNext = pNext_;
9136 return *this;
9137 }
9138
9139 FramebufferCreateInfo& setFlags( FramebufferCreateFlags flags_ )
9140 {
9141 flags = flags_;
9142 return *this;
9143 }
9144
9145 FramebufferCreateInfo& setRenderPass( RenderPass renderPass_ )
9146 {
9147 renderPass = renderPass_;
9148 return *this;
9149 }
9150
9151 FramebufferCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
9152 {
9153 attachmentCount = attachmentCount_;
9154 return *this;
9155 }
9156
9157 FramebufferCreateInfo& setPAttachments( const ImageView* pAttachments_ )
9158 {
9159 pAttachments = pAttachments_;
9160 return *this;
9161 }
9162
9163 FramebufferCreateInfo& setWidth( uint32_t width_ )
9164 {
9165 width = width_;
9166 return *this;
9167 }
9168
9169 FramebufferCreateInfo& setHeight( uint32_t height_ )
9170 {
9171 height = height_;
9172 return *this;
9173 }
9174
9175 FramebufferCreateInfo& setLayers( uint32_t layers_ )
9176 {
9177 layers = layers_;
9178 return *this;
9179 }
9180
9181 operator const VkFramebufferCreateInfo&() const
9182 {
9183 return *reinterpret_cast<const VkFramebufferCreateInfo*>(this);
9184 }
9185
9186 bool operator==( FramebufferCreateInfo const& rhs ) const
9187 {
9188 return ( sType == rhs.sType )
9189 && ( pNext == rhs.pNext )
9190 && ( flags == rhs.flags )
9191 && ( renderPass == rhs.renderPass )
9192 && ( attachmentCount == rhs.attachmentCount )
9193 && ( pAttachments == rhs.pAttachments )
9194 && ( width == rhs.width )
9195 && ( height == rhs.height )
9196 && ( layers == rhs.layers );
9197 }
9198
9199 bool operator!=( FramebufferCreateInfo const& rhs ) const
9200 {
9201 return !operator==( rhs );
9202 }
9203
9204 private:
9205 StructureType sType;
9206
9207 public:
9208 const void* pNext;
9209 FramebufferCreateFlags flags;
9210 RenderPass renderPass;
9211 uint32_t attachmentCount;
9212 const ImageView* pAttachments;
9213 uint32_t width;
9214 uint32_t height;
9215 uint32_t layers;
9216 };
9217 static_assert( sizeof( FramebufferCreateInfo ) == sizeof( VkFramebufferCreateInfo ), "struct and wrapper have different size!" );
9218
9219 struct DisplayModeCreateInfoKHR
9220 {
9221 DisplayModeCreateInfoKHR( DisplayModeCreateFlagsKHR flags_ = DisplayModeCreateFlagsKHR(), DisplayModeParametersKHR parameters_ = DisplayModeParametersKHR() )
9222 : sType( StructureType::eDisplayModeCreateInfoKHR )
9223 , pNext( nullptr )
9224 , flags( flags_ )
9225 , parameters( parameters_ )
9226 {
9227 }
9228
9229 DisplayModeCreateInfoKHR( VkDisplayModeCreateInfoKHR const & rhs )
9230 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009231 memcpy( this, &rhs, sizeof( DisplayModeCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009232 }
9233
9234 DisplayModeCreateInfoKHR& operator=( VkDisplayModeCreateInfoKHR const & rhs )
9235 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009236 memcpy( this, &rhs, sizeof( DisplayModeCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009237 return *this;
9238 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009239 DisplayModeCreateInfoKHR& setPNext( const void* pNext_ )
9240 {
9241 pNext = pNext_;
9242 return *this;
9243 }
9244
9245 DisplayModeCreateInfoKHR& setFlags( DisplayModeCreateFlagsKHR flags_ )
9246 {
9247 flags = flags_;
9248 return *this;
9249 }
9250
9251 DisplayModeCreateInfoKHR& setParameters( DisplayModeParametersKHR parameters_ )
9252 {
9253 parameters = parameters_;
9254 return *this;
9255 }
9256
9257 operator const VkDisplayModeCreateInfoKHR&() const
9258 {
9259 return *reinterpret_cast<const VkDisplayModeCreateInfoKHR*>(this);
9260 }
9261
9262 bool operator==( DisplayModeCreateInfoKHR const& rhs ) const
9263 {
9264 return ( sType == rhs.sType )
9265 && ( pNext == rhs.pNext )
9266 && ( flags == rhs.flags )
9267 && ( parameters == rhs.parameters );
9268 }
9269
9270 bool operator!=( DisplayModeCreateInfoKHR const& rhs ) const
9271 {
9272 return !operator==( rhs );
9273 }
9274
9275 private:
9276 StructureType sType;
9277
9278 public:
9279 const void* pNext;
9280 DisplayModeCreateFlagsKHR flags;
9281 DisplayModeParametersKHR parameters;
9282 };
9283 static_assert( sizeof( DisplayModeCreateInfoKHR ) == sizeof( VkDisplayModeCreateInfoKHR ), "struct and wrapper have different size!" );
9284
9285 struct DisplayPresentInfoKHR
9286 {
9287 DisplayPresentInfoKHR( Rect2D srcRect_ = Rect2D(), Rect2D dstRect_ = Rect2D(), Bool32 persistent_ = 0 )
9288 : sType( StructureType::eDisplayPresentInfoKHR )
9289 , pNext( nullptr )
9290 , srcRect( srcRect_ )
9291 , dstRect( dstRect_ )
9292 , persistent( persistent_ )
9293 {
9294 }
9295
9296 DisplayPresentInfoKHR( VkDisplayPresentInfoKHR const & rhs )
9297 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009298 memcpy( this, &rhs, sizeof( DisplayPresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009299 }
9300
9301 DisplayPresentInfoKHR& operator=( VkDisplayPresentInfoKHR const & rhs )
9302 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009303 memcpy( this, &rhs, sizeof( DisplayPresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009304 return *this;
9305 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009306 DisplayPresentInfoKHR& setPNext( const void* pNext_ )
9307 {
9308 pNext = pNext_;
9309 return *this;
9310 }
9311
9312 DisplayPresentInfoKHR& setSrcRect( Rect2D srcRect_ )
9313 {
9314 srcRect = srcRect_;
9315 return *this;
9316 }
9317
9318 DisplayPresentInfoKHR& setDstRect( Rect2D dstRect_ )
9319 {
9320 dstRect = dstRect_;
9321 return *this;
9322 }
9323
9324 DisplayPresentInfoKHR& setPersistent( Bool32 persistent_ )
9325 {
9326 persistent = persistent_;
9327 return *this;
9328 }
9329
9330 operator const VkDisplayPresentInfoKHR&() const
9331 {
9332 return *reinterpret_cast<const VkDisplayPresentInfoKHR*>(this);
9333 }
9334
9335 bool operator==( DisplayPresentInfoKHR const& rhs ) const
9336 {
9337 return ( sType == rhs.sType )
9338 && ( pNext == rhs.pNext )
9339 && ( srcRect == rhs.srcRect )
9340 && ( dstRect == rhs.dstRect )
9341 && ( persistent == rhs.persistent );
9342 }
9343
9344 bool operator!=( DisplayPresentInfoKHR const& rhs ) const
9345 {
9346 return !operator==( rhs );
9347 }
9348
9349 private:
9350 StructureType sType;
9351
9352 public:
9353 const void* pNext;
9354 Rect2D srcRect;
9355 Rect2D dstRect;
9356 Bool32 persistent;
9357 };
9358 static_assert( sizeof( DisplayPresentInfoKHR ) == sizeof( VkDisplayPresentInfoKHR ), "struct and wrapper have different size!" );
9359
9360#ifdef VK_USE_PLATFORM_ANDROID_KHR
9361 struct AndroidSurfaceCreateInfoKHR
9362 {
9363 AndroidSurfaceCreateInfoKHR( AndroidSurfaceCreateFlagsKHR flags_ = AndroidSurfaceCreateFlagsKHR(), ANativeWindow* window_ = nullptr )
9364 : sType( StructureType::eAndroidSurfaceCreateInfoKHR )
9365 , pNext( nullptr )
9366 , flags( flags_ )
9367 , window( window_ )
9368 {
9369 }
9370
9371 AndroidSurfaceCreateInfoKHR( VkAndroidSurfaceCreateInfoKHR const & rhs )
9372 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009373 memcpy( this, &rhs, sizeof( AndroidSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009374 }
9375
9376 AndroidSurfaceCreateInfoKHR& operator=( VkAndroidSurfaceCreateInfoKHR const & rhs )
9377 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009378 memcpy( this, &rhs, sizeof( AndroidSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009379 return *this;
9380 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009381 AndroidSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9382 {
9383 pNext = pNext_;
9384 return *this;
9385 }
9386
9387 AndroidSurfaceCreateInfoKHR& setFlags( AndroidSurfaceCreateFlagsKHR flags_ )
9388 {
9389 flags = flags_;
9390 return *this;
9391 }
9392
9393 AndroidSurfaceCreateInfoKHR& setWindow( ANativeWindow* window_ )
9394 {
9395 window = window_;
9396 return *this;
9397 }
9398
9399 operator const VkAndroidSurfaceCreateInfoKHR&() const
9400 {
9401 return *reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>(this);
9402 }
9403
9404 bool operator==( AndroidSurfaceCreateInfoKHR const& rhs ) const
9405 {
9406 return ( sType == rhs.sType )
9407 && ( pNext == rhs.pNext )
9408 && ( flags == rhs.flags )
9409 && ( window == rhs.window );
9410 }
9411
9412 bool operator!=( AndroidSurfaceCreateInfoKHR const& rhs ) const
9413 {
9414 return !operator==( rhs );
9415 }
9416
9417 private:
9418 StructureType sType;
9419
9420 public:
9421 const void* pNext;
9422 AndroidSurfaceCreateFlagsKHR flags;
9423 ANativeWindow* window;
9424 };
9425 static_assert( sizeof( AndroidSurfaceCreateInfoKHR ) == sizeof( VkAndroidSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9426#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
9427
9428#ifdef VK_USE_PLATFORM_MIR_KHR
9429 struct MirSurfaceCreateInfoKHR
9430 {
9431 MirSurfaceCreateInfoKHR( MirSurfaceCreateFlagsKHR flags_ = MirSurfaceCreateFlagsKHR(), MirConnection* connection_ = nullptr, MirSurface* mirSurface_ = nullptr )
9432 : sType( StructureType::eMirSurfaceCreateInfoKHR )
9433 , pNext( nullptr )
9434 , flags( flags_ )
9435 , connection( connection_ )
9436 , mirSurface( mirSurface_ )
9437 {
9438 }
9439
9440 MirSurfaceCreateInfoKHR( VkMirSurfaceCreateInfoKHR const & rhs )
9441 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009442 memcpy( this, &rhs, sizeof( MirSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009443 }
9444
9445 MirSurfaceCreateInfoKHR& operator=( VkMirSurfaceCreateInfoKHR const & rhs )
9446 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009447 memcpy( this, &rhs, sizeof( MirSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009448 return *this;
9449 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009450 MirSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9451 {
9452 pNext = pNext_;
9453 return *this;
9454 }
9455
9456 MirSurfaceCreateInfoKHR& setFlags( MirSurfaceCreateFlagsKHR flags_ )
9457 {
9458 flags = flags_;
9459 return *this;
9460 }
9461
9462 MirSurfaceCreateInfoKHR& setConnection( MirConnection* connection_ )
9463 {
9464 connection = connection_;
9465 return *this;
9466 }
9467
9468 MirSurfaceCreateInfoKHR& setMirSurface( MirSurface* mirSurface_ )
9469 {
9470 mirSurface = mirSurface_;
9471 return *this;
9472 }
9473
9474 operator const VkMirSurfaceCreateInfoKHR&() const
9475 {
9476 return *reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>(this);
9477 }
9478
9479 bool operator==( MirSurfaceCreateInfoKHR const& rhs ) const
9480 {
9481 return ( sType == rhs.sType )
9482 && ( pNext == rhs.pNext )
9483 && ( flags == rhs.flags )
9484 && ( connection == rhs.connection )
9485 && ( mirSurface == rhs.mirSurface );
9486 }
9487
9488 bool operator!=( MirSurfaceCreateInfoKHR const& rhs ) const
9489 {
9490 return !operator==( rhs );
9491 }
9492
9493 private:
9494 StructureType sType;
9495
9496 public:
9497 const void* pNext;
9498 MirSurfaceCreateFlagsKHR flags;
9499 MirConnection* connection;
9500 MirSurface* mirSurface;
9501 };
9502 static_assert( sizeof( MirSurfaceCreateInfoKHR ) == sizeof( VkMirSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9503#endif /*VK_USE_PLATFORM_MIR_KHR*/
9504
Mark Young39389872017-01-19 21:10:49 -07009505#ifdef VK_USE_PLATFORM_VI_NN
9506 struct ViSurfaceCreateInfoNN
9507 {
9508 ViSurfaceCreateInfoNN( ViSurfaceCreateFlagsNN flags_ = ViSurfaceCreateFlagsNN(), void* window_ = nullptr )
9509 : sType( StructureType::eViSurfaceCreateInfoNN )
9510 , pNext( nullptr )
9511 , flags( flags_ )
9512 , window( window_ )
9513 {
9514 }
9515
9516 ViSurfaceCreateInfoNN( VkViSurfaceCreateInfoNN const & rhs )
9517 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009518 memcpy( this, &rhs, sizeof( ViSurfaceCreateInfoNN ) );
Mark Young39389872017-01-19 21:10:49 -07009519 }
9520
9521 ViSurfaceCreateInfoNN& operator=( VkViSurfaceCreateInfoNN const & rhs )
9522 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009523 memcpy( this, &rhs, sizeof( ViSurfaceCreateInfoNN ) );
Mark Young39389872017-01-19 21:10:49 -07009524 return *this;
9525 }
Mark Young39389872017-01-19 21:10:49 -07009526 ViSurfaceCreateInfoNN& setPNext( const void* pNext_ )
9527 {
9528 pNext = pNext_;
9529 return *this;
9530 }
9531
9532 ViSurfaceCreateInfoNN& setFlags( ViSurfaceCreateFlagsNN flags_ )
9533 {
9534 flags = flags_;
9535 return *this;
9536 }
9537
9538 ViSurfaceCreateInfoNN& setWindow( void* window_ )
9539 {
9540 window = window_;
9541 return *this;
9542 }
9543
9544 operator const VkViSurfaceCreateInfoNN&() const
9545 {
9546 return *reinterpret_cast<const VkViSurfaceCreateInfoNN*>(this);
9547 }
9548
9549 bool operator==( ViSurfaceCreateInfoNN const& rhs ) const
9550 {
9551 return ( sType == rhs.sType )
9552 && ( pNext == rhs.pNext )
9553 && ( flags == rhs.flags )
9554 && ( window == rhs.window );
9555 }
9556
9557 bool operator!=( ViSurfaceCreateInfoNN const& rhs ) const
9558 {
9559 return !operator==( rhs );
9560 }
9561
9562 private:
9563 StructureType sType;
9564
9565 public:
9566 const void* pNext;
9567 ViSurfaceCreateFlagsNN flags;
9568 void* window;
9569 };
9570 static_assert( sizeof( ViSurfaceCreateInfoNN ) == sizeof( VkViSurfaceCreateInfoNN ), "struct and wrapper have different size!" );
9571#endif /*VK_USE_PLATFORM_VI_NN*/
9572
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009573#ifdef VK_USE_PLATFORM_WAYLAND_KHR
9574 struct WaylandSurfaceCreateInfoKHR
9575 {
9576 WaylandSurfaceCreateInfoKHR( WaylandSurfaceCreateFlagsKHR flags_ = WaylandSurfaceCreateFlagsKHR(), struct wl_display* display_ = nullptr, struct wl_surface* surface_ = nullptr )
9577 : sType( StructureType::eWaylandSurfaceCreateInfoKHR )
9578 , pNext( nullptr )
9579 , flags( flags_ )
9580 , display( display_ )
9581 , surface( surface_ )
9582 {
9583 }
9584
9585 WaylandSurfaceCreateInfoKHR( VkWaylandSurfaceCreateInfoKHR const & rhs )
9586 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009587 memcpy( this, &rhs, sizeof( WaylandSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009588 }
9589
9590 WaylandSurfaceCreateInfoKHR& operator=( VkWaylandSurfaceCreateInfoKHR const & rhs )
9591 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009592 memcpy( this, &rhs, sizeof( WaylandSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009593 return *this;
9594 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009595 WaylandSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9596 {
9597 pNext = pNext_;
9598 return *this;
9599 }
9600
9601 WaylandSurfaceCreateInfoKHR& setFlags( WaylandSurfaceCreateFlagsKHR flags_ )
9602 {
9603 flags = flags_;
9604 return *this;
9605 }
9606
9607 WaylandSurfaceCreateInfoKHR& setDisplay( struct wl_display* display_ )
9608 {
9609 display = display_;
9610 return *this;
9611 }
9612
9613 WaylandSurfaceCreateInfoKHR& setSurface( struct wl_surface* surface_ )
9614 {
9615 surface = surface_;
9616 return *this;
9617 }
9618
9619 operator const VkWaylandSurfaceCreateInfoKHR&() const
9620 {
9621 return *reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>(this);
9622 }
9623
9624 bool operator==( WaylandSurfaceCreateInfoKHR const& rhs ) const
9625 {
9626 return ( sType == rhs.sType )
9627 && ( pNext == rhs.pNext )
9628 && ( flags == rhs.flags )
9629 && ( display == rhs.display )
9630 && ( surface == rhs.surface );
9631 }
9632
9633 bool operator!=( WaylandSurfaceCreateInfoKHR const& rhs ) const
9634 {
9635 return !operator==( rhs );
9636 }
9637
9638 private:
9639 StructureType sType;
9640
9641 public:
9642 const void* pNext;
9643 WaylandSurfaceCreateFlagsKHR flags;
9644 struct wl_display* display;
9645 struct wl_surface* surface;
9646 };
9647 static_assert( sizeof( WaylandSurfaceCreateInfoKHR ) == sizeof( VkWaylandSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9648#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
9649
9650#ifdef VK_USE_PLATFORM_WIN32_KHR
9651 struct Win32SurfaceCreateInfoKHR
9652 {
9653 Win32SurfaceCreateInfoKHR( Win32SurfaceCreateFlagsKHR flags_ = Win32SurfaceCreateFlagsKHR(), HINSTANCE hinstance_ = 0, HWND hwnd_ = 0 )
9654 : sType( StructureType::eWin32SurfaceCreateInfoKHR )
9655 , pNext( nullptr )
9656 , flags( flags_ )
9657 , hinstance( hinstance_ )
9658 , hwnd( hwnd_ )
9659 {
9660 }
9661
9662 Win32SurfaceCreateInfoKHR( VkWin32SurfaceCreateInfoKHR const & rhs )
9663 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009664 memcpy( this, &rhs, sizeof( Win32SurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009665 }
9666
9667 Win32SurfaceCreateInfoKHR& operator=( VkWin32SurfaceCreateInfoKHR const & rhs )
9668 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009669 memcpy( this, &rhs, sizeof( Win32SurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009670 return *this;
9671 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009672 Win32SurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9673 {
9674 pNext = pNext_;
9675 return *this;
9676 }
9677
9678 Win32SurfaceCreateInfoKHR& setFlags( Win32SurfaceCreateFlagsKHR flags_ )
9679 {
9680 flags = flags_;
9681 return *this;
9682 }
9683
9684 Win32SurfaceCreateInfoKHR& setHinstance( HINSTANCE hinstance_ )
9685 {
9686 hinstance = hinstance_;
9687 return *this;
9688 }
9689
9690 Win32SurfaceCreateInfoKHR& setHwnd( HWND hwnd_ )
9691 {
9692 hwnd = hwnd_;
9693 return *this;
9694 }
9695
9696 operator const VkWin32SurfaceCreateInfoKHR&() const
9697 {
9698 return *reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>(this);
9699 }
9700
9701 bool operator==( Win32SurfaceCreateInfoKHR const& rhs ) const
9702 {
9703 return ( sType == rhs.sType )
9704 && ( pNext == rhs.pNext )
9705 && ( flags == rhs.flags )
9706 && ( hinstance == rhs.hinstance )
9707 && ( hwnd == rhs.hwnd );
9708 }
9709
9710 bool operator!=( Win32SurfaceCreateInfoKHR const& rhs ) const
9711 {
9712 return !operator==( rhs );
9713 }
9714
9715 private:
9716 StructureType sType;
9717
9718 public:
9719 const void* pNext;
9720 Win32SurfaceCreateFlagsKHR flags;
9721 HINSTANCE hinstance;
9722 HWND hwnd;
9723 };
9724 static_assert( sizeof( Win32SurfaceCreateInfoKHR ) == sizeof( VkWin32SurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9725#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9726
9727#ifdef VK_USE_PLATFORM_XLIB_KHR
9728 struct XlibSurfaceCreateInfoKHR
9729 {
9730 XlibSurfaceCreateInfoKHR( XlibSurfaceCreateFlagsKHR flags_ = XlibSurfaceCreateFlagsKHR(), Display* dpy_ = nullptr, Window window_ = 0 )
9731 : sType( StructureType::eXlibSurfaceCreateInfoKHR )
9732 , pNext( nullptr )
9733 , flags( flags_ )
9734 , dpy( dpy_ )
9735 , window( window_ )
9736 {
9737 }
9738
9739 XlibSurfaceCreateInfoKHR( VkXlibSurfaceCreateInfoKHR const & rhs )
9740 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009741 memcpy( this, &rhs, sizeof( XlibSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009742 }
9743
9744 XlibSurfaceCreateInfoKHR& operator=( VkXlibSurfaceCreateInfoKHR const & rhs )
9745 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009746 memcpy( this, &rhs, sizeof( XlibSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009747 return *this;
9748 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009749 XlibSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9750 {
9751 pNext = pNext_;
9752 return *this;
9753 }
9754
9755 XlibSurfaceCreateInfoKHR& setFlags( XlibSurfaceCreateFlagsKHR flags_ )
9756 {
9757 flags = flags_;
9758 return *this;
9759 }
9760
9761 XlibSurfaceCreateInfoKHR& setDpy( Display* dpy_ )
9762 {
9763 dpy = dpy_;
9764 return *this;
9765 }
9766
9767 XlibSurfaceCreateInfoKHR& setWindow( Window window_ )
9768 {
9769 window = window_;
9770 return *this;
9771 }
9772
9773 operator const VkXlibSurfaceCreateInfoKHR&() const
9774 {
9775 return *reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>(this);
9776 }
9777
9778 bool operator==( XlibSurfaceCreateInfoKHR const& rhs ) const
9779 {
9780 return ( sType == rhs.sType )
9781 && ( pNext == rhs.pNext )
9782 && ( flags == rhs.flags )
9783 && ( dpy == rhs.dpy )
9784 && ( window == rhs.window );
9785 }
9786
9787 bool operator!=( XlibSurfaceCreateInfoKHR const& rhs ) const
9788 {
9789 return !operator==( rhs );
9790 }
9791
9792 private:
9793 StructureType sType;
9794
9795 public:
9796 const void* pNext;
9797 XlibSurfaceCreateFlagsKHR flags;
9798 Display* dpy;
9799 Window window;
9800 };
9801 static_assert( sizeof( XlibSurfaceCreateInfoKHR ) == sizeof( VkXlibSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9802#endif /*VK_USE_PLATFORM_XLIB_KHR*/
9803
9804#ifdef VK_USE_PLATFORM_XCB_KHR
9805 struct XcbSurfaceCreateInfoKHR
9806 {
9807 XcbSurfaceCreateInfoKHR( XcbSurfaceCreateFlagsKHR flags_ = XcbSurfaceCreateFlagsKHR(), xcb_connection_t* connection_ = nullptr, xcb_window_t window_ = 0 )
9808 : sType( StructureType::eXcbSurfaceCreateInfoKHR )
9809 , pNext( nullptr )
9810 , flags( flags_ )
9811 , connection( connection_ )
9812 , window( window_ )
9813 {
9814 }
9815
9816 XcbSurfaceCreateInfoKHR( VkXcbSurfaceCreateInfoKHR const & rhs )
9817 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009818 memcpy( this, &rhs, sizeof( XcbSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009819 }
9820
9821 XcbSurfaceCreateInfoKHR& operator=( VkXcbSurfaceCreateInfoKHR const & rhs )
9822 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009823 memcpy( this, &rhs, sizeof( XcbSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009824 return *this;
9825 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009826 XcbSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9827 {
9828 pNext = pNext_;
9829 return *this;
9830 }
9831
9832 XcbSurfaceCreateInfoKHR& setFlags( XcbSurfaceCreateFlagsKHR flags_ )
9833 {
9834 flags = flags_;
9835 return *this;
9836 }
9837
9838 XcbSurfaceCreateInfoKHR& setConnection( xcb_connection_t* connection_ )
9839 {
9840 connection = connection_;
9841 return *this;
9842 }
9843
9844 XcbSurfaceCreateInfoKHR& setWindow( xcb_window_t window_ )
9845 {
9846 window = window_;
9847 return *this;
9848 }
9849
9850 operator const VkXcbSurfaceCreateInfoKHR&() const
9851 {
9852 return *reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>(this);
9853 }
9854
9855 bool operator==( XcbSurfaceCreateInfoKHR const& rhs ) const
9856 {
9857 return ( sType == rhs.sType )
9858 && ( pNext == rhs.pNext )
9859 && ( flags == rhs.flags )
9860 && ( connection == rhs.connection )
9861 && ( window == rhs.window );
9862 }
9863
9864 bool operator!=( XcbSurfaceCreateInfoKHR const& rhs ) const
9865 {
9866 return !operator==( rhs );
9867 }
9868
9869 private:
9870 StructureType sType;
9871
9872 public:
9873 const void* pNext;
9874 XcbSurfaceCreateFlagsKHR flags;
9875 xcb_connection_t* connection;
9876 xcb_window_t window;
9877 };
9878 static_assert( sizeof( XcbSurfaceCreateInfoKHR ) == sizeof( VkXcbSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9879#endif /*VK_USE_PLATFORM_XCB_KHR*/
9880
9881 struct DebugMarkerMarkerInfoEXT
9882 {
9883 DebugMarkerMarkerInfoEXT( const char* pMarkerName_ = nullptr, std::array<float,4> const& color_ = { { 0, 0, 0, 0 } } )
9884 : sType( StructureType::eDebugMarkerMarkerInfoEXT )
9885 , pNext( nullptr )
9886 , pMarkerName( pMarkerName_ )
9887 {
9888 memcpy( &color, color_.data(), 4 * sizeof( float ) );
9889 }
9890
9891 DebugMarkerMarkerInfoEXT( VkDebugMarkerMarkerInfoEXT const & rhs )
9892 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009893 memcpy( this, &rhs, sizeof( DebugMarkerMarkerInfoEXT ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009894 }
9895
9896 DebugMarkerMarkerInfoEXT& operator=( VkDebugMarkerMarkerInfoEXT const & rhs )
9897 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009898 memcpy( this, &rhs, sizeof( DebugMarkerMarkerInfoEXT ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009899 return *this;
9900 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009901 DebugMarkerMarkerInfoEXT& setPNext( const void* pNext_ )
9902 {
9903 pNext = pNext_;
9904 return *this;
9905 }
9906
9907 DebugMarkerMarkerInfoEXT& setPMarkerName( const char* pMarkerName_ )
9908 {
9909 pMarkerName = pMarkerName_;
9910 return *this;
9911 }
9912
9913 DebugMarkerMarkerInfoEXT& setColor( std::array<float,4> color_ )
9914 {
9915 memcpy( &color, color_.data(), 4 * sizeof( float ) );
9916 return *this;
9917 }
9918
9919 operator const VkDebugMarkerMarkerInfoEXT&() const
9920 {
9921 return *reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>(this);
9922 }
9923
9924 bool operator==( DebugMarkerMarkerInfoEXT const& rhs ) const
9925 {
9926 return ( sType == rhs.sType )
9927 && ( pNext == rhs.pNext )
9928 && ( pMarkerName == rhs.pMarkerName )
9929 && ( memcmp( color, rhs.color, 4 * sizeof( float ) ) == 0 );
9930 }
9931
9932 bool operator!=( DebugMarkerMarkerInfoEXT const& rhs ) const
9933 {
9934 return !operator==( rhs );
9935 }
9936
9937 private:
9938 StructureType sType;
9939
9940 public:
9941 const void* pNext;
9942 const char* pMarkerName;
9943 float color[4];
9944 };
9945 static_assert( sizeof( DebugMarkerMarkerInfoEXT ) == sizeof( VkDebugMarkerMarkerInfoEXT ), "struct and wrapper have different size!" );
9946
9947 struct DedicatedAllocationImageCreateInfoNV
9948 {
9949 DedicatedAllocationImageCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
9950 : sType( StructureType::eDedicatedAllocationImageCreateInfoNV )
9951 , pNext( nullptr )
9952 , dedicatedAllocation( dedicatedAllocation_ )
9953 {
9954 }
9955
9956 DedicatedAllocationImageCreateInfoNV( VkDedicatedAllocationImageCreateInfoNV const & rhs )
9957 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009958 memcpy( this, &rhs, sizeof( DedicatedAllocationImageCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009959 }
9960
9961 DedicatedAllocationImageCreateInfoNV& operator=( VkDedicatedAllocationImageCreateInfoNV const & rhs )
9962 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009963 memcpy( this, &rhs, sizeof( DedicatedAllocationImageCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009964 return *this;
9965 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009966 DedicatedAllocationImageCreateInfoNV& setPNext( const void* pNext_ )
9967 {
9968 pNext = pNext_;
9969 return *this;
9970 }
9971
9972 DedicatedAllocationImageCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
9973 {
9974 dedicatedAllocation = dedicatedAllocation_;
9975 return *this;
9976 }
9977
9978 operator const VkDedicatedAllocationImageCreateInfoNV&() const
9979 {
9980 return *reinterpret_cast<const VkDedicatedAllocationImageCreateInfoNV*>(this);
9981 }
9982
9983 bool operator==( DedicatedAllocationImageCreateInfoNV const& rhs ) const
9984 {
9985 return ( sType == rhs.sType )
9986 && ( pNext == rhs.pNext )
9987 && ( dedicatedAllocation == rhs.dedicatedAllocation );
9988 }
9989
9990 bool operator!=( DedicatedAllocationImageCreateInfoNV const& rhs ) const
9991 {
9992 return !operator==( rhs );
9993 }
9994
9995 private:
9996 StructureType sType;
9997
9998 public:
9999 const void* pNext;
10000 Bool32 dedicatedAllocation;
10001 };
10002 static_assert( sizeof( DedicatedAllocationImageCreateInfoNV ) == sizeof( VkDedicatedAllocationImageCreateInfoNV ), "struct and wrapper have different size!" );
10003
10004 struct DedicatedAllocationBufferCreateInfoNV
10005 {
10006 DedicatedAllocationBufferCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
10007 : sType( StructureType::eDedicatedAllocationBufferCreateInfoNV )
10008 , pNext( nullptr )
10009 , dedicatedAllocation( dedicatedAllocation_ )
10010 {
10011 }
10012
10013 DedicatedAllocationBufferCreateInfoNV( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
10014 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010015 memcpy( this, &rhs, sizeof( DedicatedAllocationBufferCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060010016 }
10017
10018 DedicatedAllocationBufferCreateInfoNV& operator=( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
10019 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010020 memcpy( this, &rhs, sizeof( DedicatedAllocationBufferCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060010021 return *this;
10022 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060010023 DedicatedAllocationBufferCreateInfoNV& setPNext( const void* pNext_ )
10024 {
10025 pNext = pNext_;
10026 return *this;
10027 }
10028
10029 DedicatedAllocationBufferCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
10030 {
10031 dedicatedAllocation = dedicatedAllocation_;
10032 return *this;
10033 }
10034
10035 operator const VkDedicatedAllocationBufferCreateInfoNV&() const
10036 {
10037 return *reinterpret_cast<const VkDedicatedAllocationBufferCreateInfoNV*>(this);
10038 }
10039
10040 bool operator==( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
10041 {
10042 return ( sType == rhs.sType )
10043 && ( pNext == rhs.pNext )
10044 && ( dedicatedAllocation == rhs.dedicatedAllocation );
10045 }
10046
10047 bool operator!=( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
10048 {
10049 return !operator==( rhs );
10050 }
10051
10052 private:
10053 StructureType sType;
10054
10055 public:
10056 const void* pNext;
10057 Bool32 dedicatedAllocation;
10058 };
10059 static_assert( sizeof( DedicatedAllocationBufferCreateInfoNV ) == sizeof( VkDedicatedAllocationBufferCreateInfoNV ), "struct and wrapper have different size!" );
10060
10061 struct DedicatedAllocationMemoryAllocateInfoNV
10062 {
10063 DedicatedAllocationMemoryAllocateInfoNV( Image image_ = Image(), Buffer buffer_ = Buffer() )
10064 : sType( StructureType::eDedicatedAllocationMemoryAllocateInfoNV )
10065 , pNext( nullptr )
10066 , image( image_ )
10067 , buffer( buffer_ )
10068 {
10069 }
10070
10071 DedicatedAllocationMemoryAllocateInfoNV( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
10072 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010073 memcpy( this, &rhs, sizeof( DedicatedAllocationMemoryAllocateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060010074 }
10075
10076 DedicatedAllocationMemoryAllocateInfoNV& operator=( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
10077 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010078 memcpy( this, &rhs, sizeof( DedicatedAllocationMemoryAllocateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060010079 return *this;
10080 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060010081 DedicatedAllocationMemoryAllocateInfoNV& setPNext( const void* pNext_ )
10082 {
10083 pNext = pNext_;
10084 return *this;
10085 }
10086
10087 DedicatedAllocationMemoryAllocateInfoNV& setImage( Image image_ )
10088 {
10089 image = image_;
10090 return *this;
10091 }
10092
10093 DedicatedAllocationMemoryAllocateInfoNV& setBuffer( Buffer buffer_ )
10094 {
10095 buffer = buffer_;
10096 return *this;
10097 }
10098
10099 operator const VkDedicatedAllocationMemoryAllocateInfoNV&() const
10100 {
10101 return *reinterpret_cast<const VkDedicatedAllocationMemoryAllocateInfoNV*>(this);
10102 }
10103
10104 bool operator==( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
10105 {
10106 return ( sType == rhs.sType )
10107 && ( pNext == rhs.pNext )
10108 && ( image == rhs.image )
10109 && ( buffer == rhs.buffer );
10110 }
10111
10112 bool operator!=( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
10113 {
10114 return !operator==( rhs );
10115 }
10116
10117 private:
10118 StructureType sType;
10119
10120 public:
10121 const void* pNext;
10122 Image image;
10123 Buffer buffer;
10124 };
10125 static_assert( sizeof( DedicatedAllocationMemoryAllocateInfoNV ) == sizeof( VkDedicatedAllocationMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
10126
Lenny Komow6501c122016-08-31 15:03:49 -060010127#ifdef VK_USE_PLATFORM_WIN32_KHR
10128 struct ExportMemoryWin32HandleInfoNV
10129 {
10130 ExportMemoryWin32HandleInfoNV( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0 )
10131 : sType( StructureType::eExportMemoryWin32HandleInfoNV )
10132 , pNext( nullptr )
10133 , pAttributes( pAttributes_ )
10134 , dwAccess( dwAccess_ )
10135 {
10136 }
10137
10138 ExportMemoryWin32HandleInfoNV( VkExportMemoryWin32HandleInfoNV const & rhs )
10139 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010140 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -060010141 }
10142
10143 ExportMemoryWin32HandleInfoNV& operator=( VkExportMemoryWin32HandleInfoNV const & rhs )
10144 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010145 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -060010146 return *this;
10147 }
Lenny Komow6501c122016-08-31 15:03:49 -060010148 ExportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
10149 {
10150 pNext = pNext_;
10151 return *this;
10152 }
10153
10154 ExportMemoryWin32HandleInfoNV& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
10155 {
10156 pAttributes = pAttributes_;
10157 return *this;
10158 }
10159
10160 ExportMemoryWin32HandleInfoNV& setDwAccess( DWORD dwAccess_ )
10161 {
10162 dwAccess = dwAccess_;
10163 return *this;
10164 }
10165
10166 operator const VkExportMemoryWin32HandleInfoNV&() const
10167 {
10168 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoNV*>(this);
10169 }
10170
10171 bool operator==( ExportMemoryWin32HandleInfoNV const& rhs ) const
10172 {
10173 return ( sType == rhs.sType )
10174 && ( pNext == rhs.pNext )
10175 && ( pAttributes == rhs.pAttributes )
10176 && ( dwAccess == rhs.dwAccess );
10177 }
10178
10179 bool operator!=( ExportMemoryWin32HandleInfoNV const& rhs ) const
10180 {
10181 return !operator==( rhs );
10182 }
10183
10184 private:
10185 StructureType sType;
10186
10187 public:
10188 const void* pNext;
10189 const SECURITY_ATTRIBUTES* pAttributes;
10190 DWORD dwAccess;
10191 };
10192 static_assert( sizeof( ExportMemoryWin32HandleInfoNV ) == sizeof( VkExportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
10193#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10194
10195#ifdef VK_USE_PLATFORM_WIN32_KHR
10196 struct Win32KeyedMutexAcquireReleaseInfoNV
10197 {
10198 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 )
10199 : sType( StructureType::eWin32KeyedMutexAcquireReleaseInfoNV )
10200 , pNext( nullptr )
10201 , acquireCount( acquireCount_ )
10202 , pAcquireSyncs( pAcquireSyncs_ )
10203 , pAcquireKeys( pAcquireKeys_ )
10204 , pAcquireTimeoutMilliseconds( pAcquireTimeoutMilliseconds_ )
10205 , releaseCount( releaseCount_ )
10206 , pReleaseSyncs( pReleaseSyncs_ )
10207 , pReleaseKeys( pReleaseKeys_ )
10208 {
10209 }
10210
10211 Win32KeyedMutexAcquireReleaseInfoNV( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
10212 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010213 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -060010214 }
10215
10216 Win32KeyedMutexAcquireReleaseInfoNV& operator=( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
10217 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010218 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -060010219 return *this;
10220 }
Lenny Komow6501c122016-08-31 15:03:49 -060010221 Win32KeyedMutexAcquireReleaseInfoNV& setPNext( const void* pNext_ )
10222 {
10223 pNext = pNext_;
10224 return *this;
10225 }
10226
10227 Win32KeyedMutexAcquireReleaseInfoNV& setAcquireCount( uint32_t acquireCount_ )
10228 {
10229 acquireCount = acquireCount_;
10230 return *this;
10231 }
10232
10233 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
10234 {
10235 pAcquireSyncs = pAcquireSyncs_;
10236 return *this;
10237 }
10238
10239 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
10240 {
10241 pAcquireKeys = pAcquireKeys_;
10242 return *this;
10243 }
10244
10245 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireTimeoutMilliseconds( const uint32_t* pAcquireTimeoutMilliseconds_ )
10246 {
10247 pAcquireTimeoutMilliseconds = pAcquireTimeoutMilliseconds_;
10248 return *this;
10249 }
10250
10251 Win32KeyedMutexAcquireReleaseInfoNV& setReleaseCount( uint32_t releaseCount_ )
10252 {
10253 releaseCount = releaseCount_;
10254 return *this;
10255 }
10256
10257 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
10258 {
10259 pReleaseSyncs = pReleaseSyncs_;
10260 return *this;
10261 }
10262
10263 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
10264 {
10265 pReleaseKeys = pReleaseKeys_;
10266 return *this;
10267 }
10268
10269 operator const VkWin32KeyedMutexAcquireReleaseInfoNV&() const
10270 {
10271 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoNV*>(this);
10272 }
10273
10274 bool operator==( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
10275 {
10276 return ( sType == rhs.sType )
10277 && ( pNext == rhs.pNext )
10278 && ( acquireCount == rhs.acquireCount )
10279 && ( pAcquireSyncs == rhs.pAcquireSyncs )
10280 && ( pAcquireKeys == rhs.pAcquireKeys )
10281 && ( pAcquireTimeoutMilliseconds == rhs.pAcquireTimeoutMilliseconds )
10282 && ( releaseCount == rhs.releaseCount )
10283 && ( pReleaseSyncs == rhs.pReleaseSyncs )
10284 && ( pReleaseKeys == rhs.pReleaseKeys );
10285 }
10286
10287 bool operator!=( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
10288 {
10289 return !operator==( rhs );
10290 }
10291
10292 private:
10293 StructureType sType;
10294
10295 public:
10296 const void* pNext;
10297 uint32_t acquireCount;
10298 const DeviceMemory* pAcquireSyncs;
10299 const uint64_t* pAcquireKeys;
10300 const uint32_t* pAcquireTimeoutMilliseconds;
10301 uint32_t releaseCount;
10302 const DeviceMemory* pReleaseSyncs;
10303 const uint64_t* pReleaseKeys;
10304 };
10305 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoNV ), "struct and wrapper have different size!" );
10306#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10307
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010308 struct DeviceGeneratedCommandsFeaturesNVX
10309 {
10310 DeviceGeneratedCommandsFeaturesNVX( Bool32 computeBindingPointSupport_ = 0 )
10311 : sType( StructureType::eDeviceGeneratedCommandsFeaturesNVX )
10312 , pNext( nullptr )
10313 , computeBindingPointSupport( computeBindingPointSupport_ )
10314 {
10315 }
10316
10317 DeviceGeneratedCommandsFeaturesNVX( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
10318 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010319 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsFeaturesNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010320 }
10321
10322 DeviceGeneratedCommandsFeaturesNVX& operator=( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
10323 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010324 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsFeaturesNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010325 return *this;
10326 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010327 DeviceGeneratedCommandsFeaturesNVX& setPNext( const void* pNext_ )
10328 {
10329 pNext = pNext_;
10330 return *this;
10331 }
10332
10333 DeviceGeneratedCommandsFeaturesNVX& setComputeBindingPointSupport( Bool32 computeBindingPointSupport_ )
10334 {
10335 computeBindingPointSupport = computeBindingPointSupport_;
10336 return *this;
10337 }
10338
10339 operator const VkDeviceGeneratedCommandsFeaturesNVX&() const
10340 {
10341 return *reinterpret_cast<const VkDeviceGeneratedCommandsFeaturesNVX*>(this);
10342 }
10343
10344 bool operator==( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
10345 {
10346 return ( sType == rhs.sType )
10347 && ( pNext == rhs.pNext )
10348 && ( computeBindingPointSupport == rhs.computeBindingPointSupport );
10349 }
10350
10351 bool operator!=( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
10352 {
10353 return !operator==( rhs );
10354 }
10355
10356 private:
10357 StructureType sType;
10358
10359 public:
10360 const void* pNext;
10361 Bool32 computeBindingPointSupport;
10362 };
10363 static_assert( sizeof( DeviceGeneratedCommandsFeaturesNVX ) == sizeof( VkDeviceGeneratedCommandsFeaturesNVX ), "struct and wrapper have different size!" );
10364
10365 struct DeviceGeneratedCommandsLimitsNVX
10366 {
10367 DeviceGeneratedCommandsLimitsNVX( uint32_t maxIndirectCommandsLayoutTokenCount_ = 0, uint32_t maxObjectEntryCounts_ = 0, uint32_t minSequenceCountBufferOffsetAlignment_ = 0, uint32_t minSequenceIndexBufferOffsetAlignment_ = 0, uint32_t minCommandsTokenBufferOffsetAlignment_ = 0 )
10368 : sType( StructureType::eDeviceGeneratedCommandsLimitsNVX )
10369 , pNext( nullptr )
10370 , maxIndirectCommandsLayoutTokenCount( maxIndirectCommandsLayoutTokenCount_ )
10371 , maxObjectEntryCounts( maxObjectEntryCounts_ )
10372 , minSequenceCountBufferOffsetAlignment( minSequenceCountBufferOffsetAlignment_ )
10373 , minSequenceIndexBufferOffsetAlignment( minSequenceIndexBufferOffsetAlignment_ )
10374 , minCommandsTokenBufferOffsetAlignment( minCommandsTokenBufferOffsetAlignment_ )
10375 {
10376 }
10377
10378 DeviceGeneratedCommandsLimitsNVX( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
10379 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010380 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsLimitsNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010381 }
10382
10383 DeviceGeneratedCommandsLimitsNVX& operator=( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
10384 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010385 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsLimitsNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010386 return *this;
10387 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010388 DeviceGeneratedCommandsLimitsNVX& setPNext( const void* pNext_ )
10389 {
10390 pNext = pNext_;
10391 return *this;
10392 }
10393
10394 DeviceGeneratedCommandsLimitsNVX& setMaxIndirectCommandsLayoutTokenCount( uint32_t maxIndirectCommandsLayoutTokenCount_ )
10395 {
10396 maxIndirectCommandsLayoutTokenCount = maxIndirectCommandsLayoutTokenCount_;
10397 return *this;
10398 }
10399
10400 DeviceGeneratedCommandsLimitsNVX& setMaxObjectEntryCounts( uint32_t maxObjectEntryCounts_ )
10401 {
10402 maxObjectEntryCounts = maxObjectEntryCounts_;
10403 return *this;
10404 }
10405
10406 DeviceGeneratedCommandsLimitsNVX& setMinSequenceCountBufferOffsetAlignment( uint32_t minSequenceCountBufferOffsetAlignment_ )
10407 {
10408 minSequenceCountBufferOffsetAlignment = minSequenceCountBufferOffsetAlignment_;
10409 return *this;
10410 }
10411
10412 DeviceGeneratedCommandsLimitsNVX& setMinSequenceIndexBufferOffsetAlignment( uint32_t minSequenceIndexBufferOffsetAlignment_ )
10413 {
10414 minSequenceIndexBufferOffsetAlignment = minSequenceIndexBufferOffsetAlignment_;
10415 return *this;
10416 }
10417
10418 DeviceGeneratedCommandsLimitsNVX& setMinCommandsTokenBufferOffsetAlignment( uint32_t minCommandsTokenBufferOffsetAlignment_ )
10419 {
10420 minCommandsTokenBufferOffsetAlignment = minCommandsTokenBufferOffsetAlignment_;
10421 return *this;
10422 }
10423
10424 operator const VkDeviceGeneratedCommandsLimitsNVX&() const
10425 {
10426 return *reinterpret_cast<const VkDeviceGeneratedCommandsLimitsNVX*>(this);
10427 }
10428
10429 bool operator==( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
10430 {
10431 return ( sType == rhs.sType )
10432 && ( pNext == rhs.pNext )
10433 && ( maxIndirectCommandsLayoutTokenCount == rhs.maxIndirectCommandsLayoutTokenCount )
10434 && ( maxObjectEntryCounts == rhs.maxObjectEntryCounts )
10435 && ( minSequenceCountBufferOffsetAlignment == rhs.minSequenceCountBufferOffsetAlignment )
10436 && ( minSequenceIndexBufferOffsetAlignment == rhs.minSequenceIndexBufferOffsetAlignment )
10437 && ( minCommandsTokenBufferOffsetAlignment == rhs.minCommandsTokenBufferOffsetAlignment );
10438 }
10439
10440 bool operator!=( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
10441 {
10442 return !operator==( rhs );
10443 }
10444
10445 private:
10446 StructureType sType;
10447
10448 public:
10449 const void* pNext;
10450 uint32_t maxIndirectCommandsLayoutTokenCount;
10451 uint32_t maxObjectEntryCounts;
10452 uint32_t minSequenceCountBufferOffsetAlignment;
10453 uint32_t minSequenceIndexBufferOffsetAlignment;
10454 uint32_t minCommandsTokenBufferOffsetAlignment;
10455 };
10456 static_assert( sizeof( DeviceGeneratedCommandsLimitsNVX ) == sizeof( VkDeviceGeneratedCommandsLimitsNVX ), "struct and wrapper have different size!" );
10457
10458 struct CmdReserveSpaceForCommandsInfoNVX
10459 {
10460 CmdReserveSpaceForCommandsInfoNVX( ObjectTableNVX objectTable_ = ObjectTableNVX(), IndirectCommandsLayoutNVX indirectCommandsLayout_ = IndirectCommandsLayoutNVX(), uint32_t maxSequencesCount_ = 0 )
10461 : sType( StructureType::eCmdReserveSpaceForCommandsInfoNVX )
10462 , pNext( nullptr )
10463 , objectTable( objectTable_ )
10464 , indirectCommandsLayout( indirectCommandsLayout_ )
10465 , maxSequencesCount( maxSequencesCount_ )
10466 {
10467 }
10468
10469 CmdReserveSpaceForCommandsInfoNVX( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
10470 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010471 memcpy( this, &rhs, sizeof( CmdReserveSpaceForCommandsInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010472 }
10473
10474 CmdReserveSpaceForCommandsInfoNVX& operator=( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
10475 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010476 memcpy( this, &rhs, sizeof( CmdReserveSpaceForCommandsInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010477 return *this;
10478 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010479 CmdReserveSpaceForCommandsInfoNVX& setPNext( const void* pNext_ )
10480 {
10481 pNext = pNext_;
10482 return *this;
10483 }
10484
10485 CmdReserveSpaceForCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
10486 {
10487 objectTable = objectTable_;
10488 return *this;
10489 }
10490
10491 CmdReserveSpaceForCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
10492 {
10493 indirectCommandsLayout = indirectCommandsLayout_;
10494 return *this;
10495 }
10496
10497 CmdReserveSpaceForCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
10498 {
10499 maxSequencesCount = maxSequencesCount_;
10500 return *this;
10501 }
10502
10503 operator const VkCmdReserveSpaceForCommandsInfoNVX&() const
10504 {
10505 return *reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>(this);
10506 }
10507
10508 bool operator==( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
10509 {
10510 return ( sType == rhs.sType )
10511 && ( pNext == rhs.pNext )
10512 && ( objectTable == rhs.objectTable )
10513 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
10514 && ( maxSequencesCount == rhs.maxSequencesCount );
10515 }
10516
10517 bool operator!=( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
10518 {
10519 return !operator==( rhs );
10520 }
10521
10522 private:
10523 StructureType sType;
10524
10525 public:
10526 const void* pNext;
10527 ObjectTableNVX objectTable;
10528 IndirectCommandsLayoutNVX indirectCommandsLayout;
10529 uint32_t maxSequencesCount;
10530 };
10531 static_assert( sizeof( CmdReserveSpaceForCommandsInfoNVX ) == sizeof( VkCmdReserveSpaceForCommandsInfoNVX ), "struct and wrapper have different size!" );
10532
Mark Young39389872017-01-19 21:10:49 -070010533 struct PhysicalDeviceFeatures2KHR
10534 {
10535 PhysicalDeviceFeatures2KHR( PhysicalDeviceFeatures features_ = PhysicalDeviceFeatures() )
10536 : sType( StructureType::ePhysicalDeviceFeatures2KHR )
10537 , pNext( nullptr )
10538 , features( features_ )
10539 {
10540 }
10541
10542 PhysicalDeviceFeatures2KHR( VkPhysicalDeviceFeatures2KHR const & rhs )
10543 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010544 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070010545 }
10546
10547 PhysicalDeviceFeatures2KHR& operator=( VkPhysicalDeviceFeatures2KHR const & rhs )
10548 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010549 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070010550 return *this;
10551 }
Mark Young39389872017-01-19 21:10:49 -070010552 PhysicalDeviceFeatures2KHR& setPNext( void* pNext_ )
10553 {
10554 pNext = pNext_;
10555 return *this;
10556 }
10557
10558 PhysicalDeviceFeatures2KHR& setFeatures( PhysicalDeviceFeatures features_ )
10559 {
10560 features = features_;
10561 return *this;
10562 }
10563
10564 operator const VkPhysicalDeviceFeatures2KHR&() const
10565 {
10566 return *reinterpret_cast<const VkPhysicalDeviceFeatures2KHR*>(this);
10567 }
10568
10569 bool operator==( PhysicalDeviceFeatures2KHR const& rhs ) const
10570 {
10571 return ( sType == rhs.sType )
10572 && ( pNext == rhs.pNext )
10573 && ( features == rhs.features );
10574 }
10575
10576 bool operator!=( PhysicalDeviceFeatures2KHR const& rhs ) const
10577 {
10578 return !operator==( rhs );
10579 }
10580
10581 private:
10582 StructureType sType;
10583
10584 public:
10585 void* pNext;
10586 PhysicalDeviceFeatures features;
10587 };
10588 static_assert( sizeof( PhysicalDeviceFeatures2KHR ) == sizeof( VkPhysicalDeviceFeatures2KHR ), "struct and wrapper have different size!" );
10589
Mark Young0f183a82017-02-28 09:58:04 -070010590 struct PhysicalDevicePushDescriptorPropertiesKHR
10591 {
10592 PhysicalDevicePushDescriptorPropertiesKHR( uint32_t maxPushDescriptors_ = 0 )
10593 : sType( StructureType::ePhysicalDevicePushDescriptorPropertiesKHR )
10594 , pNext( nullptr )
10595 , maxPushDescriptors( maxPushDescriptors_ )
10596 {
10597 }
10598
10599 PhysicalDevicePushDescriptorPropertiesKHR( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
10600 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010601 memcpy( this, &rhs, sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010602 }
10603
10604 PhysicalDevicePushDescriptorPropertiesKHR& operator=( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
10605 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010606 memcpy( this, &rhs, sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010607 return *this;
10608 }
Mark Young0f183a82017-02-28 09:58:04 -070010609 PhysicalDevicePushDescriptorPropertiesKHR& setPNext( void* pNext_ )
10610 {
10611 pNext = pNext_;
10612 return *this;
10613 }
10614
10615 PhysicalDevicePushDescriptorPropertiesKHR& setMaxPushDescriptors( uint32_t maxPushDescriptors_ )
10616 {
10617 maxPushDescriptors = maxPushDescriptors_;
10618 return *this;
10619 }
10620
10621 operator const VkPhysicalDevicePushDescriptorPropertiesKHR&() const
10622 {
10623 return *reinterpret_cast<const VkPhysicalDevicePushDescriptorPropertiesKHR*>(this);
10624 }
10625
10626 bool operator==( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
10627 {
10628 return ( sType == rhs.sType )
10629 && ( pNext == rhs.pNext )
10630 && ( maxPushDescriptors == rhs.maxPushDescriptors );
10631 }
10632
10633 bool operator!=( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
10634 {
10635 return !operator==( rhs );
10636 }
10637
10638 private:
10639 StructureType sType;
10640
10641 public:
10642 void* pNext;
10643 uint32_t maxPushDescriptors;
10644 };
10645 static_assert( sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) == sizeof( VkPhysicalDevicePushDescriptorPropertiesKHR ), "struct and wrapper have different size!" );
10646
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010647 struct PresentRegionsKHR
10648 {
10649 PresentRegionsKHR( uint32_t swapchainCount_ = 0, const PresentRegionKHR* pRegions_ = nullptr )
10650 : sType( StructureType::ePresentRegionsKHR )
10651 , pNext( nullptr )
10652 , swapchainCount( swapchainCount_ )
10653 , pRegions( pRegions_ )
10654 {
10655 }
10656
10657 PresentRegionsKHR( VkPresentRegionsKHR const & rhs )
10658 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010659 memcpy( this, &rhs, sizeof( PresentRegionsKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010660 }
10661
10662 PresentRegionsKHR& operator=( VkPresentRegionsKHR const & rhs )
10663 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010664 memcpy( this, &rhs, sizeof( PresentRegionsKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010665 return *this;
10666 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010667 PresentRegionsKHR& setPNext( const void* pNext_ )
10668 {
10669 pNext = pNext_;
10670 return *this;
10671 }
10672
10673 PresentRegionsKHR& setSwapchainCount( uint32_t swapchainCount_ )
10674 {
10675 swapchainCount = swapchainCount_;
10676 return *this;
10677 }
10678
10679 PresentRegionsKHR& setPRegions( const PresentRegionKHR* pRegions_ )
10680 {
10681 pRegions = pRegions_;
10682 return *this;
10683 }
10684
10685 operator const VkPresentRegionsKHR&() const
10686 {
10687 return *reinterpret_cast<const VkPresentRegionsKHR*>(this);
10688 }
10689
10690 bool operator==( PresentRegionsKHR const& rhs ) const
10691 {
10692 return ( sType == rhs.sType )
10693 && ( pNext == rhs.pNext )
10694 && ( swapchainCount == rhs.swapchainCount )
10695 && ( pRegions == rhs.pRegions );
10696 }
10697
10698 bool operator!=( PresentRegionsKHR const& rhs ) const
10699 {
10700 return !operator==( rhs );
10701 }
10702
10703 private:
10704 StructureType sType;
10705
10706 public:
10707 const void* pNext;
10708 uint32_t swapchainCount;
10709 const PresentRegionKHR* pRegions;
10710 };
10711 static_assert( sizeof( PresentRegionsKHR ) == sizeof( VkPresentRegionsKHR ), "struct and wrapper have different size!" );
10712
Mark Youngabc2d6e2017-07-07 07:59:56 -060010713 struct PhysicalDeviceVariablePointerFeaturesKHR
Mark Young0f183a82017-02-28 09:58:04 -070010714 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010715 PhysicalDeviceVariablePointerFeaturesKHR( Bool32 variablePointersStorageBuffer_ = 0, Bool32 variablePointers_ = 0 )
10716 : sType( StructureType::ePhysicalDeviceVariablePointerFeaturesKHR )
10717 , pNext( nullptr )
10718 , variablePointersStorageBuffer( variablePointersStorageBuffer_ )
10719 , variablePointers( variablePointers_ )
Mark Young0f183a82017-02-28 09:58:04 -070010720 {
Mark Young0f183a82017-02-28 09:58:04 -070010721 }
10722
Mark Youngabc2d6e2017-07-07 07:59:56 -060010723 PhysicalDeviceVariablePointerFeaturesKHR( VkPhysicalDeviceVariablePointerFeaturesKHR const & rhs )
10724 {
10725 memcpy( this, &rhs, sizeof( PhysicalDeviceVariablePointerFeaturesKHR ) );
10726 }
10727
10728 PhysicalDeviceVariablePointerFeaturesKHR& operator=( VkPhysicalDeviceVariablePointerFeaturesKHR const & rhs )
10729 {
10730 memcpy( this, &rhs, sizeof( PhysicalDeviceVariablePointerFeaturesKHR ) );
10731 return *this;
10732 }
10733 PhysicalDeviceVariablePointerFeaturesKHR& setPNext( void* pNext_ )
10734 {
10735 pNext = pNext_;
10736 return *this;
10737 }
10738
10739 PhysicalDeviceVariablePointerFeaturesKHR& setVariablePointersStorageBuffer( Bool32 variablePointersStorageBuffer_ )
10740 {
10741 variablePointersStorageBuffer = variablePointersStorageBuffer_;
10742 return *this;
10743 }
10744
10745 PhysicalDeviceVariablePointerFeaturesKHR& setVariablePointers( Bool32 variablePointers_ )
10746 {
10747 variablePointers = variablePointers_;
10748 return *this;
10749 }
10750
10751 operator const VkPhysicalDeviceVariablePointerFeaturesKHR&() const
10752 {
10753 return *reinterpret_cast<const VkPhysicalDeviceVariablePointerFeaturesKHR*>(this);
10754 }
10755
10756 bool operator==( PhysicalDeviceVariablePointerFeaturesKHR const& rhs ) const
10757 {
10758 return ( sType == rhs.sType )
10759 && ( pNext == rhs.pNext )
10760 && ( variablePointersStorageBuffer == rhs.variablePointersStorageBuffer )
10761 && ( variablePointers == rhs.variablePointers );
10762 }
10763
10764 bool operator!=( PhysicalDeviceVariablePointerFeaturesKHR const& rhs ) const
10765 {
10766 return !operator==( rhs );
10767 }
10768
10769 private:
10770 StructureType sType;
10771
10772 public:
10773 void* pNext;
10774 Bool32 variablePointersStorageBuffer;
10775 Bool32 variablePointers;
10776 };
10777 static_assert( sizeof( PhysicalDeviceVariablePointerFeaturesKHR ) == sizeof( VkPhysicalDeviceVariablePointerFeaturesKHR ), "struct and wrapper have different size!" );
10778
10779 struct PhysicalDeviceIDPropertiesKHR
10780 {
10781 operator const VkPhysicalDeviceIDPropertiesKHR&() const
10782 {
10783 return *reinterpret_cast<const VkPhysicalDeviceIDPropertiesKHR*>(this);
10784 }
10785
10786 bool operator==( PhysicalDeviceIDPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010787 {
10788 return ( sType == rhs.sType )
10789 && ( pNext == rhs.pNext )
10790 && ( memcmp( deviceUUID, rhs.deviceUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
10791 && ( memcmp( driverUUID, rhs.driverUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
Mark Youngabc2d6e2017-07-07 07:59:56 -060010792 && ( memcmp( deviceLUID, rhs.deviceLUID, VK_LUID_SIZE_KHR * sizeof( uint8_t ) ) == 0 )
10793 && ( deviceNodeMask == rhs.deviceNodeMask )
Mark Young0f183a82017-02-28 09:58:04 -070010794 && ( deviceLUIDValid == rhs.deviceLUIDValid );
10795 }
10796
Mark Youngabc2d6e2017-07-07 07:59:56 -060010797 bool operator!=( PhysicalDeviceIDPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010798 {
10799 return !operator==( rhs );
10800 }
10801
10802 private:
10803 StructureType sType;
10804
10805 public:
10806 void* pNext;
10807 uint8_t deviceUUID[VK_UUID_SIZE];
10808 uint8_t driverUUID[VK_UUID_SIZE];
Mark Youngabc2d6e2017-07-07 07:59:56 -060010809 uint8_t deviceLUID[VK_LUID_SIZE_KHR];
10810 uint32_t deviceNodeMask;
Mark Young0f183a82017-02-28 09:58:04 -070010811 Bool32 deviceLUIDValid;
10812 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060010813 static_assert( sizeof( PhysicalDeviceIDPropertiesKHR ) == sizeof( VkPhysicalDeviceIDPropertiesKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070010814
Mark Youngabc2d6e2017-07-07 07:59:56 -060010815#ifdef VK_USE_PLATFORM_WIN32_KHR
10816 struct ExportMemoryWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070010817 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010818 ExportMemoryWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
10819 : sType( StructureType::eExportMemoryWin32HandleInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070010820 , pNext( nullptr )
10821 , pAttributes( pAttributes_ )
10822 , dwAccess( dwAccess_ )
10823 , name( name_ )
10824 {
10825 }
10826
Mark Youngabc2d6e2017-07-07 07:59:56 -060010827 ExportMemoryWin32HandleInfoKHR( VkExportMemoryWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010828 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010829 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010830 }
10831
Mark Youngabc2d6e2017-07-07 07:59:56 -060010832 ExportMemoryWin32HandleInfoKHR& operator=( VkExportMemoryWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010833 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010834 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010835 return *this;
10836 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060010837 ExportMemoryWin32HandleInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070010838 {
10839 pNext = pNext_;
10840 return *this;
10841 }
10842
Mark Youngabc2d6e2017-07-07 07:59:56 -060010843 ExportMemoryWin32HandleInfoKHR& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
Mark Young0f183a82017-02-28 09:58:04 -070010844 {
10845 pAttributes = pAttributes_;
10846 return *this;
10847 }
10848
Mark Youngabc2d6e2017-07-07 07:59:56 -060010849 ExportMemoryWin32HandleInfoKHR& setDwAccess( DWORD dwAccess_ )
Mark Young0f183a82017-02-28 09:58:04 -070010850 {
10851 dwAccess = dwAccess_;
10852 return *this;
10853 }
10854
Mark Youngabc2d6e2017-07-07 07:59:56 -060010855 ExportMemoryWin32HandleInfoKHR& setName( LPCWSTR name_ )
Mark Young0f183a82017-02-28 09:58:04 -070010856 {
10857 name = name_;
10858 return *this;
10859 }
10860
Mark Youngabc2d6e2017-07-07 07:59:56 -060010861 operator const VkExportMemoryWin32HandleInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070010862 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010863 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070010864 }
10865
Mark Youngabc2d6e2017-07-07 07:59:56 -060010866 bool operator==( ExportMemoryWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010867 {
10868 return ( sType == rhs.sType )
10869 && ( pNext == rhs.pNext )
10870 && ( pAttributes == rhs.pAttributes )
10871 && ( dwAccess == rhs.dwAccess )
10872 && ( name == rhs.name );
10873 }
10874
Mark Youngabc2d6e2017-07-07 07:59:56 -060010875 bool operator!=( ExportMemoryWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010876 {
10877 return !operator==( rhs );
10878 }
10879
10880 private:
10881 StructureType sType;
10882
10883 public:
10884 const void* pNext;
10885 const SECURITY_ATTRIBUTES* pAttributes;
10886 DWORD dwAccess;
10887 LPCWSTR name;
10888 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060010889 static_assert( sizeof( ExportMemoryWin32HandleInfoKHR ) == sizeof( VkExportMemoryWin32HandleInfoKHR ), "struct and wrapper have different size!" );
10890#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070010891
10892#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Youngabc2d6e2017-07-07 07:59:56 -060010893 struct MemoryWin32HandlePropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070010894 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010895 operator const VkMemoryWin32HandlePropertiesKHR&() const
10896 {
10897 return *reinterpret_cast<const VkMemoryWin32HandlePropertiesKHR*>(this);
10898 }
10899
10900 bool operator==( MemoryWin32HandlePropertiesKHR const& rhs ) const
10901 {
10902 return ( sType == rhs.sType )
10903 && ( pNext == rhs.pNext )
10904 && ( memoryTypeBits == rhs.memoryTypeBits );
10905 }
10906
10907 bool operator!=( MemoryWin32HandlePropertiesKHR const& rhs ) const
10908 {
10909 return !operator==( rhs );
10910 }
10911
10912 private:
10913 StructureType sType;
10914
10915 public:
10916 void* pNext;
10917 uint32_t memoryTypeBits;
10918 };
10919 static_assert( sizeof( MemoryWin32HandlePropertiesKHR ) == sizeof( VkMemoryWin32HandlePropertiesKHR ), "struct and wrapper have different size!" );
10920#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10921
10922 struct MemoryFdPropertiesKHR
10923 {
10924 operator const VkMemoryFdPropertiesKHR&() const
10925 {
10926 return *reinterpret_cast<const VkMemoryFdPropertiesKHR*>(this);
10927 }
10928
10929 bool operator==( MemoryFdPropertiesKHR const& rhs ) const
10930 {
10931 return ( sType == rhs.sType )
10932 && ( pNext == rhs.pNext )
10933 && ( memoryTypeBits == rhs.memoryTypeBits );
10934 }
10935
10936 bool operator!=( MemoryFdPropertiesKHR const& rhs ) const
10937 {
10938 return !operator==( rhs );
10939 }
10940
10941 private:
10942 StructureType sType;
10943
10944 public:
10945 void* pNext;
10946 uint32_t memoryTypeBits;
10947 };
10948 static_assert( sizeof( MemoryFdPropertiesKHR ) == sizeof( VkMemoryFdPropertiesKHR ), "struct and wrapper have different size!" );
10949
10950#ifdef VK_USE_PLATFORM_WIN32_KHR
10951 struct Win32KeyedMutexAcquireReleaseInfoKHR
10952 {
10953 Win32KeyedMutexAcquireReleaseInfoKHR( uint32_t acquireCount_ = 0, const DeviceMemory* pAcquireSyncs_ = nullptr, const uint64_t* pAcquireKeys_ = nullptr, const uint32_t* pAcquireTimeouts_ = nullptr, uint32_t releaseCount_ = 0, const DeviceMemory* pReleaseSyncs_ = nullptr, const uint64_t* pReleaseKeys_ = nullptr )
10954 : sType( StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070010955 , pNext( nullptr )
10956 , acquireCount( acquireCount_ )
10957 , pAcquireSyncs( pAcquireSyncs_ )
10958 , pAcquireKeys( pAcquireKeys_ )
10959 , pAcquireTimeouts( pAcquireTimeouts_ )
10960 , releaseCount( releaseCount_ )
10961 , pReleaseSyncs( pReleaseSyncs_ )
10962 , pReleaseKeys( pReleaseKeys_ )
10963 {
10964 }
10965
Mark Youngabc2d6e2017-07-07 07:59:56 -060010966 Win32KeyedMutexAcquireReleaseInfoKHR( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010967 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010968 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010969 }
10970
Mark Youngabc2d6e2017-07-07 07:59:56 -060010971 Win32KeyedMutexAcquireReleaseInfoKHR& operator=( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010972 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010973 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010974 return *this;
10975 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060010976 Win32KeyedMutexAcquireReleaseInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070010977 {
10978 pNext = pNext_;
10979 return *this;
10980 }
10981
Mark Youngabc2d6e2017-07-07 07:59:56 -060010982 Win32KeyedMutexAcquireReleaseInfoKHR& setAcquireCount( uint32_t acquireCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070010983 {
10984 acquireCount = acquireCount_;
10985 return *this;
10986 }
10987
Mark Youngabc2d6e2017-07-07 07:59:56 -060010988 Win32KeyedMutexAcquireReleaseInfoKHR& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
Mark Young0f183a82017-02-28 09:58:04 -070010989 {
10990 pAcquireSyncs = pAcquireSyncs_;
10991 return *this;
10992 }
10993
Mark Youngabc2d6e2017-07-07 07:59:56 -060010994 Win32KeyedMutexAcquireReleaseInfoKHR& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
Mark Young0f183a82017-02-28 09:58:04 -070010995 {
10996 pAcquireKeys = pAcquireKeys_;
10997 return *this;
10998 }
10999
Mark Youngabc2d6e2017-07-07 07:59:56 -060011000 Win32KeyedMutexAcquireReleaseInfoKHR& setPAcquireTimeouts( const uint32_t* pAcquireTimeouts_ )
Mark Young0f183a82017-02-28 09:58:04 -070011001 {
11002 pAcquireTimeouts = pAcquireTimeouts_;
11003 return *this;
11004 }
11005
Mark Youngabc2d6e2017-07-07 07:59:56 -060011006 Win32KeyedMutexAcquireReleaseInfoKHR& setReleaseCount( uint32_t releaseCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070011007 {
11008 releaseCount = releaseCount_;
11009 return *this;
11010 }
11011
Mark Youngabc2d6e2017-07-07 07:59:56 -060011012 Win32KeyedMutexAcquireReleaseInfoKHR& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
Mark Young0f183a82017-02-28 09:58:04 -070011013 {
11014 pReleaseSyncs = pReleaseSyncs_;
11015 return *this;
11016 }
11017
Mark Youngabc2d6e2017-07-07 07:59:56 -060011018 Win32KeyedMutexAcquireReleaseInfoKHR& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
Mark Young0f183a82017-02-28 09:58:04 -070011019 {
11020 pReleaseKeys = pReleaseKeys_;
11021 return *this;
11022 }
11023
Mark Youngabc2d6e2017-07-07 07:59:56 -060011024 operator const VkWin32KeyedMutexAcquireReleaseInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070011025 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011026 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070011027 }
11028
Mark Youngabc2d6e2017-07-07 07:59:56 -060011029 bool operator==( Win32KeyedMutexAcquireReleaseInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011030 {
11031 return ( sType == rhs.sType )
11032 && ( pNext == rhs.pNext )
11033 && ( acquireCount == rhs.acquireCount )
11034 && ( pAcquireSyncs == rhs.pAcquireSyncs )
11035 && ( pAcquireKeys == rhs.pAcquireKeys )
11036 && ( pAcquireTimeouts == rhs.pAcquireTimeouts )
11037 && ( releaseCount == rhs.releaseCount )
11038 && ( pReleaseSyncs == rhs.pReleaseSyncs )
11039 && ( pReleaseKeys == rhs.pReleaseKeys );
11040 }
11041
Mark Youngabc2d6e2017-07-07 07:59:56 -060011042 bool operator!=( Win32KeyedMutexAcquireReleaseInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011043 {
11044 return !operator==( rhs );
11045 }
11046
11047 private:
11048 StructureType sType;
11049
11050 public:
11051 const void* pNext;
11052 uint32_t acquireCount;
11053 const DeviceMemory* pAcquireSyncs;
11054 const uint64_t* pAcquireKeys;
11055 const uint32_t* pAcquireTimeouts;
11056 uint32_t releaseCount;
11057 const DeviceMemory* pReleaseSyncs;
11058 const uint64_t* pReleaseKeys;
11059 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060011060 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070011061#endif /*VK_USE_PLATFORM_WIN32_KHR*/
11062
Mark Youngabc2d6e2017-07-07 07:59:56 -060011063#ifdef VK_USE_PLATFORM_WIN32_KHR
11064 struct ExportSemaphoreWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070011065 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011066 ExportSemaphoreWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
11067 : sType( StructureType::eExportSemaphoreWin32HandleInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070011068 , pNext( nullptr )
11069 , pAttributes( pAttributes_ )
11070 , dwAccess( dwAccess_ )
11071 , name( name_ )
11072 {
11073 }
11074
Mark Youngabc2d6e2017-07-07 07:59:56 -060011075 ExportSemaphoreWin32HandleInfoKHR( VkExportSemaphoreWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011076 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011077 memcpy( this, &rhs, sizeof( ExportSemaphoreWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070011078 }
11079
Mark Youngabc2d6e2017-07-07 07:59:56 -060011080 ExportSemaphoreWin32HandleInfoKHR& operator=( VkExportSemaphoreWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011081 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011082 memcpy( this, &rhs, sizeof( ExportSemaphoreWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070011083 return *this;
11084 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060011085 ExportSemaphoreWin32HandleInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070011086 {
11087 pNext = pNext_;
11088 return *this;
11089 }
11090
Mark Youngabc2d6e2017-07-07 07:59:56 -060011091 ExportSemaphoreWin32HandleInfoKHR& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
Mark Young0f183a82017-02-28 09:58:04 -070011092 {
11093 pAttributes = pAttributes_;
11094 return *this;
11095 }
11096
Mark Youngabc2d6e2017-07-07 07:59:56 -060011097 ExportSemaphoreWin32HandleInfoKHR& setDwAccess( DWORD dwAccess_ )
Mark Young0f183a82017-02-28 09:58:04 -070011098 {
11099 dwAccess = dwAccess_;
11100 return *this;
11101 }
11102
Mark Youngabc2d6e2017-07-07 07:59:56 -060011103 ExportSemaphoreWin32HandleInfoKHR& setName( LPCWSTR name_ )
Mark Young0f183a82017-02-28 09:58:04 -070011104 {
11105 name = name_;
11106 return *this;
11107 }
11108
Mark Youngabc2d6e2017-07-07 07:59:56 -060011109 operator const VkExportSemaphoreWin32HandleInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070011110 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011111 return *reinterpret_cast<const VkExportSemaphoreWin32HandleInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070011112 }
11113
Mark Youngabc2d6e2017-07-07 07:59:56 -060011114 bool operator==( ExportSemaphoreWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011115 {
11116 return ( sType == rhs.sType )
11117 && ( pNext == rhs.pNext )
11118 && ( pAttributes == rhs.pAttributes )
11119 && ( dwAccess == rhs.dwAccess )
11120 && ( name == rhs.name );
11121 }
11122
Mark Youngabc2d6e2017-07-07 07:59:56 -060011123 bool operator!=( ExportSemaphoreWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011124 {
11125 return !operator==( rhs );
11126 }
11127
11128 private:
11129 StructureType sType;
11130
11131 public:
11132 const void* pNext;
11133 const SECURITY_ATTRIBUTES* pAttributes;
11134 DWORD dwAccess;
11135 LPCWSTR name;
11136 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060011137 static_assert( sizeof( ExportSemaphoreWin32HandleInfoKHR ) == sizeof( VkExportSemaphoreWin32HandleInfoKHR ), "struct and wrapper have different size!" );
11138#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070011139
Mark Youngabc2d6e2017-07-07 07:59:56 -060011140#ifdef VK_USE_PLATFORM_WIN32_KHR
11141 struct D3D12FenceSubmitInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070011142 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011143 D3D12FenceSubmitInfoKHR( uint32_t waitSemaphoreValuesCount_ = 0, const uint64_t* pWaitSemaphoreValues_ = nullptr, uint32_t signalSemaphoreValuesCount_ = 0, const uint64_t* pSignalSemaphoreValues_ = nullptr )
11144 : sType( StructureType::eD3D12FenceSubmitInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070011145 , pNext( nullptr )
11146 , waitSemaphoreValuesCount( waitSemaphoreValuesCount_ )
11147 , pWaitSemaphoreValues( pWaitSemaphoreValues_ )
11148 , signalSemaphoreValuesCount( signalSemaphoreValuesCount_ )
11149 , pSignalSemaphoreValues( pSignalSemaphoreValues_ )
11150 {
11151 }
11152
Mark Youngabc2d6e2017-07-07 07:59:56 -060011153 D3D12FenceSubmitInfoKHR( VkD3D12FenceSubmitInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011154 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011155 memcpy( this, &rhs, sizeof( D3D12FenceSubmitInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070011156 }
11157
Mark Youngabc2d6e2017-07-07 07:59:56 -060011158 D3D12FenceSubmitInfoKHR& operator=( VkD3D12FenceSubmitInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011159 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011160 memcpy( this, &rhs, sizeof( D3D12FenceSubmitInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070011161 return *this;
11162 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060011163 D3D12FenceSubmitInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070011164 {
11165 pNext = pNext_;
11166 return *this;
11167 }
11168
Mark Youngabc2d6e2017-07-07 07:59:56 -060011169 D3D12FenceSubmitInfoKHR& setWaitSemaphoreValuesCount( uint32_t waitSemaphoreValuesCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070011170 {
11171 waitSemaphoreValuesCount = waitSemaphoreValuesCount_;
11172 return *this;
11173 }
11174
Mark Youngabc2d6e2017-07-07 07:59:56 -060011175 D3D12FenceSubmitInfoKHR& setPWaitSemaphoreValues( const uint64_t* pWaitSemaphoreValues_ )
Mark Young0f183a82017-02-28 09:58:04 -070011176 {
11177 pWaitSemaphoreValues = pWaitSemaphoreValues_;
11178 return *this;
11179 }
11180
Mark Youngabc2d6e2017-07-07 07:59:56 -060011181 D3D12FenceSubmitInfoKHR& setSignalSemaphoreValuesCount( uint32_t signalSemaphoreValuesCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070011182 {
11183 signalSemaphoreValuesCount = signalSemaphoreValuesCount_;
11184 return *this;
11185 }
11186
Mark Youngabc2d6e2017-07-07 07:59:56 -060011187 D3D12FenceSubmitInfoKHR& setPSignalSemaphoreValues( const uint64_t* pSignalSemaphoreValues_ )
Mark Young0f183a82017-02-28 09:58:04 -070011188 {
11189 pSignalSemaphoreValues = pSignalSemaphoreValues_;
11190 return *this;
11191 }
11192
Mark Youngabc2d6e2017-07-07 07:59:56 -060011193 operator const VkD3D12FenceSubmitInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070011194 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011195 return *reinterpret_cast<const VkD3D12FenceSubmitInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070011196 }
11197
Mark Youngabc2d6e2017-07-07 07:59:56 -060011198 bool operator==( D3D12FenceSubmitInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011199 {
11200 return ( sType == rhs.sType )
11201 && ( pNext == rhs.pNext )
11202 && ( waitSemaphoreValuesCount == rhs.waitSemaphoreValuesCount )
11203 && ( pWaitSemaphoreValues == rhs.pWaitSemaphoreValues )
11204 && ( signalSemaphoreValuesCount == rhs.signalSemaphoreValuesCount )
11205 && ( pSignalSemaphoreValues == rhs.pSignalSemaphoreValues );
11206 }
11207
Mark Youngabc2d6e2017-07-07 07:59:56 -060011208 bool operator!=( D3D12FenceSubmitInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011209 {
11210 return !operator==( rhs );
11211 }
11212
11213 private:
11214 StructureType sType;
11215
11216 public:
11217 const void* pNext;
11218 uint32_t waitSemaphoreValuesCount;
11219 const uint64_t* pWaitSemaphoreValues;
11220 uint32_t signalSemaphoreValuesCount;
11221 const uint64_t* pSignalSemaphoreValues;
11222 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060011223 static_assert( sizeof( D3D12FenceSubmitInfoKHR ) == sizeof( VkD3D12FenceSubmitInfoKHR ), "struct and wrapper have different size!" );
11224#endif /*VK_USE_PLATFORM_WIN32_KHR*/
11225
11226#ifdef VK_USE_PLATFORM_WIN32_KHR
11227 struct ExportFenceWin32HandleInfoKHR
11228 {
11229 ExportFenceWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
11230 : sType( StructureType::eExportFenceWin32HandleInfoKHR )
11231 , pNext( nullptr )
11232 , pAttributes( pAttributes_ )
11233 , dwAccess( dwAccess_ )
11234 , name( name_ )
11235 {
11236 }
11237
11238 ExportFenceWin32HandleInfoKHR( VkExportFenceWin32HandleInfoKHR const & rhs )
11239 {
11240 memcpy( this, &rhs, sizeof( ExportFenceWin32HandleInfoKHR ) );
11241 }
11242
11243 ExportFenceWin32HandleInfoKHR& operator=( VkExportFenceWin32HandleInfoKHR const & rhs )
11244 {
11245 memcpy( this, &rhs, sizeof( ExportFenceWin32HandleInfoKHR ) );
11246 return *this;
11247 }
11248 ExportFenceWin32HandleInfoKHR& setPNext( const void* pNext_ )
11249 {
11250 pNext = pNext_;
11251 return *this;
11252 }
11253
11254 ExportFenceWin32HandleInfoKHR& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
11255 {
11256 pAttributes = pAttributes_;
11257 return *this;
11258 }
11259
11260 ExportFenceWin32HandleInfoKHR& setDwAccess( DWORD dwAccess_ )
11261 {
11262 dwAccess = dwAccess_;
11263 return *this;
11264 }
11265
11266 ExportFenceWin32HandleInfoKHR& setName( LPCWSTR name_ )
11267 {
11268 name = name_;
11269 return *this;
11270 }
11271
11272 operator const VkExportFenceWin32HandleInfoKHR&() const
11273 {
11274 return *reinterpret_cast<const VkExportFenceWin32HandleInfoKHR*>(this);
11275 }
11276
11277 bool operator==( ExportFenceWin32HandleInfoKHR const& rhs ) const
11278 {
11279 return ( sType == rhs.sType )
11280 && ( pNext == rhs.pNext )
11281 && ( pAttributes == rhs.pAttributes )
11282 && ( dwAccess == rhs.dwAccess )
11283 && ( name == rhs.name );
11284 }
11285
11286 bool operator!=( ExportFenceWin32HandleInfoKHR const& rhs ) const
11287 {
11288 return !operator==( rhs );
11289 }
11290
11291 private:
11292 StructureType sType;
11293
11294 public:
11295 const void* pNext;
11296 const SECURITY_ATTRIBUTES* pAttributes;
11297 DWORD dwAccess;
11298 LPCWSTR name;
11299 };
11300 static_assert( sizeof( ExportFenceWin32HandleInfoKHR ) == sizeof( VkExportFenceWin32HandleInfoKHR ), "struct and wrapper have different size!" );
11301#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070011302
11303 struct PhysicalDeviceMultiviewFeaturesKHX
11304 {
11305 PhysicalDeviceMultiviewFeaturesKHX( Bool32 multiview_ = 0, Bool32 multiviewGeometryShader_ = 0, Bool32 multiviewTessellationShader_ = 0 )
11306 : sType( StructureType::ePhysicalDeviceMultiviewFeaturesKHX )
11307 , pNext( nullptr )
11308 , multiview( multiview_ )
11309 , multiviewGeometryShader( multiviewGeometryShader_ )
11310 , multiviewTessellationShader( multiviewTessellationShader_ )
11311 {
11312 }
11313
11314 PhysicalDeviceMultiviewFeaturesKHX( VkPhysicalDeviceMultiviewFeaturesKHX const & rhs )
11315 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011316 memcpy( this, &rhs, sizeof( PhysicalDeviceMultiviewFeaturesKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011317 }
11318
11319 PhysicalDeviceMultiviewFeaturesKHX& operator=( VkPhysicalDeviceMultiviewFeaturesKHX const & rhs )
11320 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011321 memcpy( this, &rhs, sizeof( PhysicalDeviceMultiviewFeaturesKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011322 return *this;
11323 }
Mark Young0f183a82017-02-28 09:58:04 -070011324 PhysicalDeviceMultiviewFeaturesKHX& setPNext( void* pNext_ )
11325 {
11326 pNext = pNext_;
11327 return *this;
11328 }
11329
11330 PhysicalDeviceMultiviewFeaturesKHX& setMultiview( Bool32 multiview_ )
11331 {
11332 multiview = multiview_;
11333 return *this;
11334 }
11335
11336 PhysicalDeviceMultiviewFeaturesKHX& setMultiviewGeometryShader( Bool32 multiviewGeometryShader_ )
11337 {
11338 multiviewGeometryShader = multiviewGeometryShader_;
11339 return *this;
11340 }
11341
11342 PhysicalDeviceMultiviewFeaturesKHX& setMultiviewTessellationShader( Bool32 multiviewTessellationShader_ )
11343 {
11344 multiviewTessellationShader = multiviewTessellationShader_;
11345 return *this;
11346 }
11347
11348 operator const VkPhysicalDeviceMultiviewFeaturesKHX&() const
11349 {
11350 return *reinterpret_cast<const VkPhysicalDeviceMultiviewFeaturesKHX*>(this);
11351 }
11352
11353 bool operator==( PhysicalDeviceMultiviewFeaturesKHX const& rhs ) const
11354 {
11355 return ( sType == rhs.sType )
11356 && ( pNext == rhs.pNext )
11357 && ( multiview == rhs.multiview )
11358 && ( multiviewGeometryShader == rhs.multiviewGeometryShader )
11359 && ( multiviewTessellationShader == rhs.multiviewTessellationShader );
11360 }
11361
11362 bool operator!=( PhysicalDeviceMultiviewFeaturesKHX const& rhs ) const
11363 {
11364 return !operator==( rhs );
11365 }
11366
11367 private:
11368 StructureType sType;
11369
11370 public:
11371 void* pNext;
11372 Bool32 multiview;
11373 Bool32 multiviewGeometryShader;
11374 Bool32 multiviewTessellationShader;
11375 };
11376 static_assert( sizeof( PhysicalDeviceMultiviewFeaturesKHX ) == sizeof( VkPhysicalDeviceMultiviewFeaturesKHX ), "struct and wrapper have different size!" );
11377
11378 struct PhysicalDeviceMultiviewPropertiesKHX
11379 {
11380 operator const VkPhysicalDeviceMultiviewPropertiesKHX&() const
11381 {
11382 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPropertiesKHX*>(this);
11383 }
11384
11385 bool operator==( PhysicalDeviceMultiviewPropertiesKHX const& rhs ) const
11386 {
11387 return ( sType == rhs.sType )
11388 && ( pNext == rhs.pNext )
11389 && ( maxMultiviewViewCount == rhs.maxMultiviewViewCount )
11390 && ( maxMultiviewInstanceIndex == rhs.maxMultiviewInstanceIndex );
11391 }
11392
11393 bool operator!=( PhysicalDeviceMultiviewPropertiesKHX const& rhs ) const
11394 {
11395 return !operator==( rhs );
11396 }
11397
11398 private:
11399 StructureType sType;
11400
11401 public:
11402 void* pNext;
11403 uint32_t maxMultiviewViewCount;
11404 uint32_t maxMultiviewInstanceIndex;
11405 };
11406 static_assert( sizeof( PhysicalDeviceMultiviewPropertiesKHX ) == sizeof( VkPhysicalDeviceMultiviewPropertiesKHX ), "struct and wrapper have different size!" );
11407
11408 struct RenderPassMultiviewCreateInfoKHX
11409 {
11410 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 )
11411 : sType( StructureType::eRenderPassMultiviewCreateInfoKHX )
11412 , pNext( nullptr )
11413 , subpassCount( subpassCount_ )
11414 , pViewMasks( pViewMasks_ )
11415 , dependencyCount( dependencyCount_ )
11416 , pViewOffsets( pViewOffsets_ )
11417 , correlationMaskCount( correlationMaskCount_ )
11418 , pCorrelationMasks( pCorrelationMasks_ )
11419 {
11420 }
11421
11422 RenderPassMultiviewCreateInfoKHX( VkRenderPassMultiviewCreateInfoKHX const & rhs )
11423 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011424 memcpy( this, &rhs, sizeof( RenderPassMultiviewCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011425 }
11426
11427 RenderPassMultiviewCreateInfoKHX& operator=( VkRenderPassMultiviewCreateInfoKHX const & rhs )
11428 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011429 memcpy( this, &rhs, sizeof( RenderPassMultiviewCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011430 return *this;
11431 }
Mark Young0f183a82017-02-28 09:58:04 -070011432 RenderPassMultiviewCreateInfoKHX& setPNext( const void* pNext_ )
11433 {
11434 pNext = pNext_;
11435 return *this;
11436 }
11437
11438 RenderPassMultiviewCreateInfoKHX& setSubpassCount( uint32_t subpassCount_ )
11439 {
11440 subpassCount = subpassCount_;
11441 return *this;
11442 }
11443
11444 RenderPassMultiviewCreateInfoKHX& setPViewMasks( const uint32_t* pViewMasks_ )
11445 {
11446 pViewMasks = pViewMasks_;
11447 return *this;
11448 }
11449
11450 RenderPassMultiviewCreateInfoKHX& setDependencyCount( uint32_t dependencyCount_ )
11451 {
11452 dependencyCount = dependencyCount_;
11453 return *this;
11454 }
11455
11456 RenderPassMultiviewCreateInfoKHX& setPViewOffsets( const int32_t* pViewOffsets_ )
11457 {
11458 pViewOffsets = pViewOffsets_;
11459 return *this;
11460 }
11461
11462 RenderPassMultiviewCreateInfoKHX& setCorrelationMaskCount( uint32_t correlationMaskCount_ )
11463 {
11464 correlationMaskCount = correlationMaskCount_;
11465 return *this;
11466 }
11467
11468 RenderPassMultiviewCreateInfoKHX& setPCorrelationMasks( const uint32_t* pCorrelationMasks_ )
11469 {
11470 pCorrelationMasks = pCorrelationMasks_;
11471 return *this;
11472 }
11473
11474 operator const VkRenderPassMultiviewCreateInfoKHX&() const
11475 {
11476 return *reinterpret_cast<const VkRenderPassMultiviewCreateInfoKHX*>(this);
11477 }
11478
11479 bool operator==( RenderPassMultiviewCreateInfoKHX const& rhs ) const
11480 {
11481 return ( sType == rhs.sType )
11482 && ( pNext == rhs.pNext )
11483 && ( subpassCount == rhs.subpassCount )
11484 && ( pViewMasks == rhs.pViewMasks )
11485 && ( dependencyCount == rhs.dependencyCount )
11486 && ( pViewOffsets == rhs.pViewOffsets )
11487 && ( correlationMaskCount == rhs.correlationMaskCount )
11488 && ( pCorrelationMasks == rhs.pCorrelationMasks );
11489 }
11490
11491 bool operator!=( RenderPassMultiviewCreateInfoKHX const& rhs ) const
11492 {
11493 return !operator==( rhs );
11494 }
11495
11496 private:
11497 StructureType sType;
11498
11499 public:
11500 const void* pNext;
11501 uint32_t subpassCount;
11502 const uint32_t* pViewMasks;
11503 uint32_t dependencyCount;
11504 const int32_t* pViewOffsets;
11505 uint32_t correlationMaskCount;
11506 const uint32_t* pCorrelationMasks;
11507 };
11508 static_assert( sizeof( RenderPassMultiviewCreateInfoKHX ) == sizeof( VkRenderPassMultiviewCreateInfoKHX ), "struct and wrapper have different size!" );
11509
Lenny Komowb79f04a2017-09-18 17:07:00 -060011510 struct BindBufferMemoryInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070011511 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011512 BindBufferMemoryInfoKHR( Buffer buffer_ = Buffer(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0 )
11513 : sType( StructureType::eBindBufferMemoryInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070011514 , pNext( nullptr )
11515 , buffer( buffer_ )
11516 , memory( memory_ )
11517 , memoryOffset( memoryOffset_ )
Mark Young0f183a82017-02-28 09:58:04 -070011518 {
11519 }
11520
Lenny Komowb79f04a2017-09-18 17:07:00 -060011521 BindBufferMemoryInfoKHR( VkBindBufferMemoryInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011522 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011523 memcpy( this, &rhs, sizeof( BindBufferMemoryInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070011524 }
11525
Lenny Komowb79f04a2017-09-18 17:07:00 -060011526 BindBufferMemoryInfoKHR& operator=( VkBindBufferMemoryInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011527 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011528 memcpy( this, &rhs, sizeof( BindBufferMemoryInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070011529 return *this;
11530 }
Lenny Komowb79f04a2017-09-18 17:07:00 -060011531 BindBufferMemoryInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070011532 {
11533 pNext = pNext_;
11534 return *this;
11535 }
11536
Lenny Komowb79f04a2017-09-18 17:07:00 -060011537 BindBufferMemoryInfoKHR& setBuffer( Buffer buffer_ )
Mark Young0f183a82017-02-28 09:58:04 -070011538 {
11539 buffer = buffer_;
11540 return *this;
11541 }
11542
Lenny Komowb79f04a2017-09-18 17:07:00 -060011543 BindBufferMemoryInfoKHR& setMemory( DeviceMemory memory_ )
Mark Young0f183a82017-02-28 09:58:04 -070011544 {
11545 memory = memory_;
11546 return *this;
11547 }
11548
Lenny Komowb79f04a2017-09-18 17:07:00 -060011549 BindBufferMemoryInfoKHR& setMemoryOffset( DeviceSize memoryOffset_ )
Mark Young0f183a82017-02-28 09:58:04 -070011550 {
11551 memoryOffset = memoryOffset_;
11552 return *this;
11553 }
11554
Lenny Komowb79f04a2017-09-18 17:07:00 -060011555 operator const VkBindBufferMemoryInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070011556 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011557 return *reinterpret_cast<const VkBindBufferMemoryInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070011558 }
11559
Lenny Komowb79f04a2017-09-18 17:07:00 -060011560 bool operator==( BindBufferMemoryInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011561 {
11562 return ( sType == rhs.sType )
11563 && ( pNext == rhs.pNext )
11564 && ( buffer == rhs.buffer )
11565 && ( memory == rhs.memory )
Lenny Komowb79f04a2017-09-18 17:07:00 -060011566 && ( memoryOffset == rhs.memoryOffset );
Mark Young0f183a82017-02-28 09:58:04 -070011567 }
11568
Lenny Komowb79f04a2017-09-18 17:07:00 -060011569 bool operator!=( BindBufferMemoryInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011570 {
11571 return !operator==( rhs );
11572 }
11573
11574 private:
11575 StructureType sType;
11576
11577 public:
11578 const void* pNext;
11579 Buffer buffer;
11580 DeviceMemory memory;
11581 DeviceSize memoryOffset;
Mark Young0f183a82017-02-28 09:58:04 -070011582 };
Lenny Komowb79f04a2017-09-18 17:07:00 -060011583 static_assert( sizeof( BindBufferMemoryInfoKHR ) == sizeof( VkBindBufferMemoryInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070011584
Lenny Komowb79f04a2017-09-18 17:07:00 -060011585 struct BindBufferMemoryDeviceGroupInfoKHX
Mark Young0f183a82017-02-28 09:58:04 -070011586 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011587 BindBufferMemoryDeviceGroupInfoKHX( uint32_t deviceIndexCount_ = 0, const uint32_t* pDeviceIndices_ = nullptr )
11588 : sType( StructureType::eBindBufferMemoryDeviceGroupInfoKHX )
Mark Young0f183a82017-02-28 09:58:04 -070011589 , pNext( nullptr )
Mark Young0f183a82017-02-28 09:58:04 -070011590 , deviceIndexCount( deviceIndexCount_ )
11591 , pDeviceIndices( pDeviceIndices_ )
Mark Young0f183a82017-02-28 09:58:04 -070011592 {
11593 }
11594
Lenny Komowb79f04a2017-09-18 17:07:00 -060011595 BindBufferMemoryDeviceGroupInfoKHX( VkBindBufferMemoryDeviceGroupInfoKHX const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011596 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011597 memcpy( this, &rhs, sizeof( BindBufferMemoryDeviceGroupInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011598 }
11599
Lenny Komowb79f04a2017-09-18 17:07:00 -060011600 BindBufferMemoryDeviceGroupInfoKHX& operator=( VkBindBufferMemoryDeviceGroupInfoKHX const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011601 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011602 memcpy( this, &rhs, sizeof( BindBufferMemoryDeviceGroupInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011603 return *this;
11604 }
Lenny Komowb79f04a2017-09-18 17:07:00 -060011605 BindBufferMemoryDeviceGroupInfoKHX& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070011606 {
11607 pNext = pNext_;
11608 return *this;
11609 }
11610
Lenny Komowb79f04a2017-09-18 17:07:00 -060011611 BindBufferMemoryDeviceGroupInfoKHX& setDeviceIndexCount( uint32_t deviceIndexCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070011612 {
11613 deviceIndexCount = deviceIndexCount_;
11614 return *this;
11615 }
11616
Lenny Komowb79f04a2017-09-18 17:07:00 -060011617 BindBufferMemoryDeviceGroupInfoKHX& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
Mark Young0f183a82017-02-28 09:58:04 -070011618 {
11619 pDeviceIndices = pDeviceIndices_;
11620 return *this;
11621 }
11622
Lenny Komowb79f04a2017-09-18 17:07:00 -060011623 operator const VkBindBufferMemoryDeviceGroupInfoKHX&() const
Mark Young0f183a82017-02-28 09:58:04 -070011624 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011625 return *reinterpret_cast<const VkBindBufferMemoryDeviceGroupInfoKHX*>(this);
11626 }
11627
11628 bool operator==( BindBufferMemoryDeviceGroupInfoKHX const& rhs ) const
11629 {
11630 return ( sType == rhs.sType )
11631 && ( pNext == rhs.pNext )
11632 && ( deviceIndexCount == rhs.deviceIndexCount )
11633 && ( pDeviceIndices == rhs.pDeviceIndices );
11634 }
11635
11636 bool operator!=( BindBufferMemoryDeviceGroupInfoKHX const& rhs ) const
11637 {
11638 return !operator==( rhs );
11639 }
11640
11641 private:
11642 StructureType sType;
11643
11644 public:
11645 const void* pNext;
11646 uint32_t deviceIndexCount;
11647 const uint32_t* pDeviceIndices;
11648 };
11649 static_assert( sizeof( BindBufferMemoryDeviceGroupInfoKHX ) == sizeof( VkBindBufferMemoryDeviceGroupInfoKHX ), "struct and wrapper have different size!" );
11650
11651 struct BindImageMemoryInfoKHR
11652 {
11653 BindImageMemoryInfoKHR( Image image_ = Image(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0 )
11654 : sType( StructureType::eBindImageMemoryInfoKHR )
11655 , pNext( nullptr )
11656 , image( image_ )
11657 , memory( memory_ )
11658 , memoryOffset( memoryOffset_ )
11659 {
11660 }
11661
11662 BindImageMemoryInfoKHR( VkBindImageMemoryInfoKHR const & rhs )
11663 {
11664 memcpy( this, &rhs, sizeof( BindImageMemoryInfoKHR ) );
11665 }
11666
11667 BindImageMemoryInfoKHR& operator=( VkBindImageMemoryInfoKHR const & rhs )
11668 {
11669 memcpy( this, &rhs, sizeof( BindImageMemoryInfoKHR ) );
11670 return *this;
11671 }
11672 BindImageMemoryInfoKHR& setPNext( const void* pNext_ )
11673 {
11674 pNext = pNext_;
Mark Young0f183a82017-02-28 09:58:04 -070011675 return *this;
11676 }
11677
Lenny Komowb79f04a2017-09-18 17:07:00 -060011678 BindImageMemoryInfoKHR& setImage( Image image_ )
Mark Young0f183a82017-02-28 09:58:04 -070011679 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011680 image = image_;
Mark Young0f183a82017-02-28 09:58:04 -070011681 return *this;
11682 }
11683
Lenny Komowb79f04a2017-09-18 17:07:00 -060011684 BindImageMemoryInfoKHR& setMemory( DeviceMemory memory_ )
Mark Young0f183a82017-02-28 09:58:04 -070011685 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011686 memory = memory_;
11687 return *this;
Mark Young0f183a82017-02-28 09:58:04 -070011688 }
11689
Lenny Komowb79f04a2017-09-18 17:07:00 -060011690 BindImageMemoryInfoKHR& setMemoryOffset( DeviceSize memoryOffset_ )
11691 {
11692 memoryOffset = memoryOffset_;
11693 return *this;
11694 }
11695
11696 operator const VkBindImageMemoryInfoKHR&() const
11697 {
11698 return *reinterpret_cast<const VkBindImageMemoryInfoKHR*>(this);
11699 }
11700
11701 bool operator==( BindImageMemoryInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011702 {
11703 return ( sType == rhs.sType )
11704 && ( pNext == rhs.pNext )
11705 && ( image == rhs.image )
11706 && ( memory == rhs.memory )
Lenny Komowb79f04a2017-09-18 17:07:00 -060011707 && ( memoryOffset == rhs.memoryOffset );
Mark Young0f183a82017-02-28 09:58:04 -070011708 }
11709
Lenny Komowb79f04a2017-09-18 17:07:00 -060011710 bool operator!=( BindImageMemoryInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011711 {
11712 return !operator==( rhs );
11713 }
11714
11715 private:
11716 StructureType sType;
11717
11718 public:
11719 const void* pNext;
11720 Image image;
11721 DeviceMemory memory;
11722 DeviceSize memoryOffset;
Lenny Komowb79f04a2017-09-18 17:07:00 -060011723 };
11724 static_assert( sizeof( BindImageMemoryInfoKHR ) == sizeof( VkBindImageMemoryInfoKHR ), "struct and wrapper have different size!" );
11725
11726 struct BindImageMemoryDeviceGroupInfoKHX
11727 {
11728 BindImageMemoryDeviceGroupInfoKHX( uint32_t deviceIndexCount_ = 0, const uint32_t* pDeviceIndices_ = nullptr, uint32_t SFRRectCount_ = 0, const Rect2D* pSFRRects_ = nullptr )
11729 : sType( StructureType::eBindImageMemoryDeviceGroupInfoKHX )
11730 , pNext( nullptr )
11731 , deviceIndexCount( deviceIndexCount_ )
11732 , pDeviceIndices( pDeviceIndices_ )
11733 , SFRRectCount( SFRRectCount_ )
11734 , pSFRRects( pSFRRects_ )
11735 {
11736 }
11737
11738 BindImageMemoryDeviceGroupInfoKHX( VkBindImageMemoryDeviceGroupInfoKHX const & rhs )
11739 {
11740 memcpy( this, &rhs, sizeof( BindImageMemoryDeviceGroupInfoKHX ) );
11741 }
11742
11743 BindImageMemoryDeviceGroupInfoKHX& operator=( VkBindImageMemoryDeviceGroupInfoKHX const & rhs )
11744 {
11745 memcpy( this, &rhs, sizeof( BindImageMemoryDeviceGroupInfoKHX ) );
11746 return *this;
11747 }
11748 BindImageMemoryDeviceGroupInfoKHX& setPNext( const void* pNext_ )
11749 {
11750 pNext = pNext_;
11751 return *this;
11752 }
11753
11754 BindImageMemoryDeviceGroupInfoKHX& setDeviceIndexCount( uint32_t deviceIndexCount_ )
11755 {
11756 deviceIndexCount = deviceIndexCount_;
11757 return *this;
11758 }
11759
11760 BindImageMemoryDeviceGroupInfoKHX& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
11761 {
11762 pDeviceIndices = pDeviceIndices_;
11763 return *this;
11764 }
11765
11766 BindImageMemoryDeviceGroupInfoKHX& setSFRRectCount( uint32_t SFRRectCount_ )
11767 {
11768 SFRRectCount = SFRRectCount_;
11769 return *this;
11770 }
11771
11772 BindImageMemoryDeviceGroupInfoKHX& setPSFRRects( const Rect2D* pSFRRects_ )
11773 {
11774 pSFRRects = pSFRRects_;
11775 return *this;
11776 }
11777
11778 operator const VkBindImageMemoryDeviceGroupInfoKHX&() const
11779 {
11780 return *reinterpret_cast<const VkBindImageMemoryDeviceGroupInfoKHX*>(this);
11781 }
11782
11783 bool operator==( BindImageMemoryDeviceGroupInfoKHX const& rhs ) const
11784 {
11785 return ( sType == rhs.sType )
11786 && ( pNext == rhs.pNext )
11787 && ( deviceIndexCount == rhs.deviceIndexCount )
11788 && ( pDeviceIndices == rhs.pDeviceIndices )
11789 && ( SFRRectCount == rhs.SFRRectCount )
11790 && ( pSFRRects == rhs.pSFRRects );
11791 }
11792
11793 bool operator!=( BindImageMemoryDeviceGroupInfoKHX const& rhs ) const
11794 {
11795 return !operator==( rhs );
11796 }
11797
11798 private:
11799 StructureType sType;
11800
11801 public:
11802 const void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070011803 uint32_t deviceIndexCount;
11804 const uint32_t* pDeviceIndices;
11805 uint32_t SFRRectCount;
11806 const Rect2D* pSFRRects;
11807 };
Lenny Komowb79f04a2017-09-18 17:07:00 -060011808 static_assert( sizeof( BindImageMemoryDeviceGroupInfoKHX ) == sizeof( VkBindImageMemoryDeviceGroupInfoKHX ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070011809
11810 struct DeviceGroupRenderPassBeginInfoKHX
11811 {
11812 DeviceGroupRenderPassBeginInfoKHX( uint32_t deviceMask_ = 0, uint32_t deviceRenderAreaCount_ = 0, const Rect2D* pDeviceRenderAreas_ = nullptr )
11813 : sType( StructureType::eDeviceGroupRenderPassBeginInfoKHX )
11814 , pNext( nullptr )
11815 , deviceMask( deviceMask_ )
11816 , deviceRenderAreaCount( deviceRenderAreaCount_ )
11817 , pDeviceRenderAreas( pDeviceRenderAreas_ )
11818 {
11819 }
11820
11821 DeviceGroupRenderPassBeginInfoKHX( VkDeviceGroupRenderPassBeginInfoKHX const & rhs )
11822 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011823 memcpy( this, &rhs, sizeof( DeviceGroupRenderPassBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011824 }
11825
11826 DeviceGroupRenderPassBeginInfoKHX& operator=( VkDeviceGroupRenderPassBeginInfoKHX const & rhs )
11827 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011828 memcpy( this, &rhs, sizeof( DeviceGroupRenderPassBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011829 return *this;
11830 }
Mark Young0f183a82017-02-28 09:58:04 -070011831 DeviceGroupRenderPassBeginInfoKHX& setPNext( const void* pNext_ )
11832 {
11833 pNext = pNext_;
11834 return *this;
11835 }
11836
11837 DeviceGroupRenderPassBeginInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11838 {
11839 deviceMask = deviceMask_;
11840 return *this;
11841 }
11842
11843 DeviceGroupRenderPassBeginInfoKHX& setDeviceRenderAreaCount( uint32_t deviceRenderAreaCount_ )
11844 {
11845 deviceRenderAreaCount = deviceRenderAreaCount_;
11846 return *this;
11847 }
11848
11849 DeviceGroupRenderPassBeginInfoKHX& setPDeviceRenderAreas( const Rect2D* pDeviceRenderAreas_ )
11850 {
11851 pDeviceRenderAreas = pDeviceRenderAreas_;
11852 return *this;
11853 }
11854
11855 operator const VkDeviceGroupRenderPassBeginInfoKHX&() const
11856 {
11857 return *reinterpret_cast<const VkDeviceGroupRenderPassBeginInfoKHX*>(this);
11858 }
11859
11860 bool operator==( DeviceGroupRenderPassBeginInfoKHX const& rhs ) const
11861 {
11862 return ( sType == rhs.sType )
11863 && ( pNext == rhs.pNext )
11864 && ( deviceMask == rhs.deviceMask )
11865 && ( deviceRenderAreaCount == rhs.deviceRenderAreaCount )
11866 && ( pDeviceRenderAreas == rhs.pDeviceRenderAreas );
11867 }
11868
11869 bool operator!=( DeviceGroupRenderPassBeginInfoKHX const& rhs ) const
11870 {
11871 return !operator==( rhs );
11872 }
11873
11874 private:
11875 StructureType sType;
11876
11877 public:
11878 const void* pNext;
11879 uint32_t deviceMask;
11880 uint32_t deviceRenderAreaCount;
11881 const Rect2D* pDeviceRenderAreas;
11882 };
11883 static_assert( sizeof( DeviceGroupRenderPassBeginInfoKHX ) == sizeof( VkDeviceGroupRenderPassBeginInfoKHX ), "struct and wrapper have different size!" );
11884
11885 struct DeviceGroupCommandBufferBeginInfoKHX
11886 {
11887 DeviceGroupCommandBufferBeginInfoKHX( uint32_t deviceMask_ = 0 )
11888 : sType( StructureType::eDeviceGroupCommandBufferBeginInfoKHX )
11889 , pNext( nullptr )
11890 , deviceMask( deviceMask_ )
11891 {
11892 }
11893
11894 DeviceGroupCommandBufferBeginInfoKHX( VkDeviceGroupCommandBufferBeginInfoKHX const & rhs )
11895 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011896 memcpy( this, &rhs, sizeof( DeviceGroupCommandBufferBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011897 }
11898
11899 DeviceGroupCommandBufferBeginInfoKHX& operator=( VkDeviceGroupCommandBufferBeginInfoKHX const & rhs )
11900 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011901 memcpy( this, &rhs, sizeof( DeviceGroupCommandBufferBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011902 return *this;
11903 }
Mark Young0f183a82017-02-28 09:58:04 -070011904 DeviceGroupCommandBufferBeginInfoKHX& setPNext( const void* pNext_ )
11905 {
11906 pNext = pNext_;
11907 return *this;
11908 }
11909
11910 DeviceGroupCommandBufferBeginInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11911 {
11912 deviceMask = deviceMask_;
11913 return *this;
11914 }
11915
11916 operator const VkDeviceGroupCommandBufferBeginInfoKHX&() const
11917 {
11918 return *reinterpret_cast<const VkDeviceGroupCommandBufferBeginInfoKHX*>(this);
11919 }
11920
11921 bool operator==( DeviceGroupCommandBufferBeginInfoKHX const& rhs ) const
11922 {
11923 return ( sType == rhs.sType )
11924 && ( pNext == rhs.pNext )
11925 && ( deviceMask == rhs.deviceMask );
11926 }
11927
11928 bool operator!=( DeviceGroupCommandBufferBeginInfoKHX const& rhs ) const
11929 {
11930 return !operator==( rhs );
11931 }
11932
11933 private:
11934 StructureType sType;
11935
11936 public:
11937 const void* pNext;
11938 uint32_t deviceMask;
11939 };
11940 static_assert( sizeof( DeviceGroupCommandBufferBeginInfoKHX ) == sizeof( VkDeviceGroupCommandBufferBeginInfoKHX ), "struct and wrapper have different size!" );
11941
11942 struct DeviceGroupSubmitInfoKHX
11943 {
11944 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 )
11945 : sType( StructureType::eDeviceGroupSubmitInfoKHX )
11946 , pNext( nullptr )
11947 , waitSemaphoreCount( waitSemaphoreCount_ )
11948 , pWaitSemaphoreDeviceIndices( pWaitSemaphoreDeviceIndices_ )
11949 , commandBufferCount( commandBufferCount_ )
11950 , pCommandBufferDeviceMasks( pCommandBufferDeviceMasks_ )
11951 , signalSemaphoreCount( signalSemaphoreCount_ )
11952 , pSignalSemaphoreDeviceIndices( pSignalSemaphoreDeviceIndices_ )
11953 {
11954 }
11955
11956 DeviceGroupSubmitInfoKHX( VkDeviceGroupSubmitInfoKHX const & rhs )
11957 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011958 memcpy( this, &rhs, sizeof( DeviceGroupSubmitInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011959 }
11960
11961 DeviceGroupSubmitInfoKHX& operator=( VkDeviceGroupSubmitInfoKHX const & rhs )
11962 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011963 memcpy( this, &rhs, sizeof( DeviceGroupSubmitInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011964 return *this;
11965 }
Mark Young0f183a82017-02-28 09:58:04 -070011966 DeviceGroupSubmitInfoKHX& setPNext( const void* pNext_ )
11967 {
11968 pNext = pNext_;
11969 return *this;
11970 }
11971
11972 DeviceGroupSubmitInfoKHX& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
11973 {
11974 waitSemaphoreCount = waitSemaphoreCount_;
11975 return *this;
11976 }
11977
11978 DeviceGroupSubmitInfoKHX& setPWaitSemaphoreDeviceIndices( const uint32_t* pWaitSemaphoreDeviceIndices_ )
11979 {
11980 pWaitSemaphoreDeviceIndices = pWaitSemaphoreDeviceIndices_;
11981 return *this;
11982 }
11983
11984 DeviceGroupSubmitInfoKHX& setCommandBufferCount( uint32_t commandBufferCount_ )
11985 {
11986 commandBufferCount = commandBufferCount_;
11987 return *this;
11988 }
11989
11990 DeviceGroupSubmitInfoKHX& setPCommandBufferDeviceMasks( const uint32_t* pCommandBufferDeviceMasks_ )
11991 {
11992 pCommandBufferDeviceMasks = pCommandBufferDeviceMasks_;
11993 return *this;
11994 }
11995
11996 DeviceGroupSubmitInfoKHX& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
11997 {
11998 signalSemaphoreCount = signalSemaphoreCount_;
11999 return *this;
12000 }
12001
12002 DeviceGroupSubmitInfoKHX& setPSignalSemaphoreDeviceIndices( const uint32_t* pSignalSemaphoreDeviceIndices_ )
12003 {
12004 pSignalSemaphoreDeviceIndices = pSignalSemaphoreDeviceIndices_;
12005 return *this;
12006 }
12007
12008 operator const VkDeviceGroupSubmitInfoKHX&() const
12009 {
12010 return *reinterpret_cast<const VkDeviceGroupSubmitInfoKHX*>(this);
12011 }
12012
12013 bool operator==( DeviceGroupSubmitInfoKHX const& rhs ) const
12014 {
12015 return ( sType == rhs.sType )
12016 && ( pNext == rhs.pNext )
12017 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
12018 && ( pWaitSemaphoreDeviceIndices == rhs.pWaitSemaphoreDeviceIndices )
12019 && ( commandBufferCount == rhs.commandBufferCount )
12020 && ( pCommandBufferDeviceMasks == rhs.pCommandBufferDeviceMasks )
12021 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
12022 && ( pSignalSemaphoreDeviceIndices == rhs.pSignalSemaphoreDeviceIndices );
12023 }
12024
12025 bool operator!=( DeviceGroupSubmitInfoKHX const& rhs ) const
12026 {
12027 return !operator==( rhs );
12028 }
12029
12030 private:
12031 StructureType sType;
12032
12033 public:
12034 const void* pNext;
12035 uint32_t waitSemaphoreCount;
12036 const uint32_t* pWaitSemaphoreDeviceIndices;
12037 uint32_t commandBufferCount;
12038 const uint32_t* pCommandBufferDeviceMasks;
12039 uint32_t signalSemaphoreCount;
12040 const uint32_t* pSignalSemaphoreDeviceIndices;
12041 };
12042 static_assert( sizeof( DeviceGroupSubmitInfoKHX ) == sizeof( VkDeviceGroupSubmitInfoKHX ), "struct and wrapper have different size!" );
12043
12044 struct DeviceGroupBindSparseInfoKHX
12045 {
12046 DeviceGroupBindSparseInfoKHX( uint32_t resourceDeviceIndex_ = 0, uint32_t memoryDeviceIndex_ = 0 )
12047 : sType( StructureType::eDeviceGroupBindSparseInfoKHX )
12048 , pNext( nullptr )
12049 , resourceDeviceIndex( resourceDeviceIndex_ )
12050 , memoryDeviceIndex( memoryDeviceIndex_ )
12051 {
12052 }
12053
12054 DeviceGroupBindSparseInfoKHX( VkDeviceGroupBindSparseInfoKHX const & rhs )
12055 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012056 memcpy( this, &rhs, sizeof( DeviceGroupBindSparseInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012057 }
12058
12059 DeviceGroupBindSparseInfoKHX& operator=( VkDeviceGroupBindSparseInfoKHX const & rhs )
12060 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012061 memcpy( this, &rhs, sizeof( DeviceGroupBindSparseInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012062 return *this;
12063 }
Mark Young0f183a82017-02-28 09:58:04 -070012064 DeviceGroupBindSparseInfoKHX& setPNext( const void* pNext_ )
12065 {
12066 pNext = pNext_;
12067 return *this;
12068 }
12069
12070 DeviceGroupBindSparseInfoKHX& setResourceDeviceIndex( uint32_t resourceDeviceIndex_ )
12071 {
12072 resourceDeviceIndex = resourceDeviceIndex_;
12073 return *this;
12074 }
12075
12076 DeviceGroupBindSparseInfoKHX& setMemoryDeviceIndex( uint32_t memoryDeviceIndex_ )
12077 {
12078 memoryDeviceIndex = memoryDeviceIndex_;
12079 return *this;
12080 }
12081
12082 operator const VkDeviceGroupBindSparseInfoKHX&() const
12083 {
12084 return *reinterpret_cast<const VkDeviceGroupBindSparseInfoKHX*>(this);
12085 }
12086
12087 bool operator==( DeviceGroupBindSparseInfoKHX const& rhs ) const
12088 {
12089 return ( sType == rhs.sType )
12090 && ( pNext == rhs.pNext )
12091 && ( resourceDeviceIndex == rhs.resourceDeviceIndex )
12092 && ( memoryDeviceIndex == rhs.memoryDeviceIndex );
12093 }
12094
12095 bool operator!=( DeviceGroupBindSparseInfoKHX const& rhs ) const
12096 {
12097 return !operator==( rhs );
12098 }
12099
12100 private:
12101 StructureType sType;
12102
12103 public:
12104 const void* pNext;
12105 uint32_t resourceDeviceIndex;
12106 uint32_t memoryDeviceIndex;
12107 };
12108 static_assert( sizeof( DeviceGroupBindSparseInfoKHX ) == sizeof( VkDeviceGroupBindSparseInfoKHX ), "struct and wrapper have different size!" );
12109
12110 struct ImageSwapchainCreateInfoKHX
12111 {
12112 ImageSwapchainCreateInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR() )
12113 : sType( StructureType::eImageSwapchainCreateInfoKHX )
12114 , pNext( nullptr )
12115 , swapchain( swapchain_ )
12116 {
12117 }
12118
12119 ImageSwapchainCreateInfoKHX( VkImageSwapchainCreateInfoKHX const & rhs )
12120 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012121 memcpy( this, &rhs, sizeof( ImageSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012122 }
12123
12124 ImageSwapchainCreateInfoKHX& operator=( VkImageSwapchainCreateInfoKHX const & rhs )
12125 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012126 memcpy( this, &rhs, sizeof( ImageSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012127 return *this;
12128 }
Mark Young0f183a82017-02-28 09:58:04 -070012129 ImageSwapchainCreateInfoKHX& setPNext( const void* pNext_ )
12130 {
12131 pNext = pNext_;
12132 return *this;
12133 }
12134
12135 ImageSwapchainCreateInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
12136 {
12137 swapchain = swapchain_;
12138 return *this;
12139 }
12140
12141 operator const VkImageSwapchainCreateInfoKHX&() const
12142 {
12143 return *reinterpret_cast<const VkImageSwapchainCreateInfoKHX*>(this);
12144 }
12145
12146 bool operator==( ImageSwapchainCreateInfoKHX const& rhs ) const
12147 {
12148 return ( sType == rhs.sType )
12149 && ( pNext == rhs.pNext )
12150 && ( swapchain == rhs.swapchain );
12151 }
12152
12153 bool operator!=( ImageSwapchainCreateInfoKHX const& rhs ) const
12154 {
12155 return !operator==( rhs );
12156 }
12157
12158 private:
12159 StructureType sType;
12160
12161 public:
12162 const void* pNext;
12163 SwapchainKHR swapchain;
12164 };
12165 static_assert( sizeof( ImageSwapchainCreateInfoKHX ) == sizeof( VkImageSwapchainCreateInfoKHX ), "struct and wrapper have different size!" );
12166
12167 struct BindImageMemorySwapchainInfoKHX
12168 {
12169 BindImageMemorySwapchainInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR(), uint32_t imageIndex_ = 0 )
12170 : sType( StructureType::eBindImageMemorySwapchainInfoKHX )
12171 , pNext( nullptr )
12172 , swapchain( swapchain_ )
12173 , imageIndex( imageIndex_ )
12174 {
12175 }
12176
12177 BindImageMemorySwapchainInfoKHX( VkBindImageMemorySwapchainInfoKHX const & rhs )
12178 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012179 memcpy( this, &rhs, sizeof( BindImageMemorySwapchainInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012180 }
12181
12182 BindImageMemorySwapchainInfoKHX& operator=( VkBindImageMemorySwapchainInfoKHX const & rhs )
12183 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012184 memcpy( this, &rhs, sizeof( BindImageMemorySwapchainInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012185 return *this;
12186 }
Mark Young0f183a82017-02-28 09:58:04 -070012187 BindImageMemorySwapchainInfoKHX& setPNext( const void* pNext_ )
12188 {
12189 pNext = pNext_;
12190 return *this;
12191 }
12192
12193 BindImageMemorySwapchainInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
12194 {
12195 swapchain = swapchain_;
12196 return *this;
12197 }
12198
12199 BindImageMemorySwapchainInfoKHX& setImageIndex( uint32_t imageIndex_ )
12200 {
12201 imageIndex = imageIndex_;
12202 return *this;
12203 }
12204
12205 operator const VkBindImageMemorySwapchainInfoKHX&() const
12206 {
12207 return *reinterpret_cast<const VkBindImageMemorySwapchainInfoKHX*>(this);
12208 }
12209
12210 bool operator==( BindImageMemorySwapchainInfoKHX const& rhs ) const
12211 {
12212 return ( sType == rhs.sType )
12213 && ( pNext == rhs.pNext )
12214 && ( swapchain == rhs.swapchain )
12215 && ( imageIndex == rhs.imageIndex );
12216 }
12217
12218 bool operator!=( BindImageMemorySwapchainInfoKHX const& rhs ) const
12219 {
12220 return !operator==( rhs );
12221 }
12222
12223 private:
12224 StructureType sType;
12225
12226 public:
12227 const void* pNext;
12228 SwapchainKHR swapchain;
12229 uint32_t imageIndex;
12230 };
12231 static_assert( sizeof( BindImageMemorySwapchainInfoKHX ) == sizeof( VkBindImageMemorySwapchainInfoKHX ), "struct and wrapper have different size!" );
12232
12233 struct AcquireNextImageInfoKHX
12234 {
12235 AcquireNextImageInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR(), uint64_t timeout_ = 0, Semaphore semaphore_ = Semaphore(), Fence fence_ = Fence(), uint32_t deviceMask_ = 0 )
12236 : sType( StructureType::eAcquireNextImageInfoKHX )
12237 , pNext( nullptr )
12238 , swapchain( swapchain_ )
12239 , timeout( timeout_ )
12240 , semaphore( semaphore_ )
12241 , fence( fence_ )
12242 , deviceMask( deviceMask_ )
12243 {
12244 }
12245
12246 AcquireNextImageInfoKHX( VkAcquireNextImageInfoKHX const & rhs )
12247 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012248 memcpy( this, &rhs, sizeof( AcquireNextImageInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012249 }
12250
12251 AcquireNextImageInfoKHX& operator=( VkAcquireNextImageInfoKHX const & rhs )
12252 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012253 memcpy( this, &rhs, sizeof( AcquireNextImageInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012254 return *this;
12255 }
Mark Young0f183a82017-02-28 09:58:04 -070012256 AcquireNextImageInfoKHX& setPNext( const void* pNext_ )
12257 {
12258 pNext = pNext_;
12259 return *this;
12260 }
12261
12262 AcquireNextImageInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
12263 {
12264 swapchain = swapchain_;
12265 return *this;
12266 }
12267
12268 AcquireNextImageInfoKHX& setTimeout( uint64_t timeout_ )
12269 {
12270 timeout = timeout_;
12271 return *this;
12272 }
12273
12274 AcquireNextImageInfoKHX& setSemaphore( Semaphore semaphore_ )
12275 {
12276 semaphore = semaphore_;
12277 return *this;
12278 }
12279
12280 AcquireNextImageInfoKHX& setFence( Fence fence_ )
12281 {
12282 fence = fence_;
12283 return *this;
12284 }
12285
12286 AcquireNextImageInfoKHX& setDeviceMask( uint32_t deviceMask_ )
12287 {
12288 deviceMask = deviceMask_;
12289 return *this;
12290 }
12291
12292 operator const VkAcquireNextImageInfoKHX&() const
12293 {
12294 return *reinterpret_cast<const VkAcquireNextImageInfoKHX*>(this);
12295 }
12296
12297 bool operator==( AcquireNextImageInfoKHX const& rhs ) const
12298 {
12299 return ( sType == rhs.sType )
12300 && ( pNext == rhs.pNext )
12301 && ( swapchain == rhs.swapchain )
12302 && ( timeout == rhs.timeout )
12303 && ( semaphore == rhs.semaphore )
12304 && ( fence == rhs.fence )
12305 && ( deviceMask == rhs.deviceMask );
12306 }
12307
12308 bool operator!=( AcquireNextImageInfoKHX const& rhs ) const
12309 {
12310 return !operator==( rhs );
12311 }
12312
12313 private:
12314 StructureType sType;
12315
12316 public:
12317 const void* pNext;
12318 SwapchainKHR swapchain;
12319 uint64_t timeout;
12320 Semaphore semaphore;
12321 Fence fence;
12322 uint32_t deviceMask;
12323 };
12324 static_assert( sizeof( AcquireNextImageInfoKHX ) == sizeof( VkAcquireNextImageInfoKHX ), "struct and wrapper have different size!" );
12325
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012326 struct HdrMetadataEXT
12327 {
12328 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 )
12329 : sType( StructureType::eHdrMetadataEXT )
12330 , pNext( nullptr )
12331 , displayPrimaryRed( displayPrimaryRed_ )
12332 , displayPrimaryGreen( displayPrimaryGreen_ )
12333 , displayPrimaryBlue( displayPrimaryBlue_ )
12334 , whitePoint( whitePoint_ )
12335 , maxLuminance( maxLuminance_ )
12336 , minLuminance( minLuminance_ )
12337 , maxContentLightLevel( maxContentLightLevel_ )
12338 , maxFrameAverageLightLevel( maxFrameAverageLightLevel_ )
12339 {
12340 }
12341
12342 HdrMetadataEXT( VkHdrMetadataEXT const & rhs )
12343 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012344 memcpy( this, &rhs, sizeof( HdrMetadataEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012345 }
12346
12347 HdrMetadataEXT& operator=( VkHdrMetadataEXT const & rhs )
12348 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012349 memcpy( this, &rhs, sizeof( HdrMetadataEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012350 return *this;
12351 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012352 HdrMetadataEXT& setPNext( const void* pNext_ )
12353 {
12354 pNext = pNext_;
12355 return *this;
12356 }
12357
12358 HdrMetadataEXT& setDisplayPrimaryRed( XYColorEXT displayPrimaryRed_ )
12359 {
12360 displayPrimaryRed = displayPrimaryRed_;
12361 return *this;
12362 }
12363
12364 HdrMetadataEXT& setDisplayPrimaryGreen( XYColorEXT displayPrimaryGreen_ )
12365 {
12366 displayPrimaryGreen = displayPrimaryGreen_;
12367 return *this;
12368 }
12369
12370 HdrMetadataEXT& setDisplayPrimaryBlue( XYColorEXT displayPrimaryBlue_ )
12371 {
12372 displayPrimaryBlue = displayPrimaryBlue_;
12373 return *this;
12374 }
12375
12376 HdrMetadataEXT& setWhitePoint( XYColorEXT whitePoint_ )
12377 {
12378 whitePoint = whitePoint_;
12379 return *this;
12380 }
12381
12382 HdrMetadataEXT& setMaxLuminance( float maxLuminance_ )
12383 {
12384 maxLuminance = maxLuminance_;
12385 return *this;
12386 }
12387
12388 HdrMetadataEXT& setMinLuminance( float minLuminance_ )
12389 {
12390 minLuminance = minLuminance_;
12391 return *this;
12392 }
12393
12394 HdrMetadataEXT& setMaxContentLightLevel( float maxContentLightLevel_ )
12395 {
12396 maxContentLightLevel = maxContentLightLevel_;
12397 return *this;
12398 }
12399
12400 HdrMetadataEXT& setMaxFrameAverageLightLevel( float maxFrameAverageLightLevel_ )
12401 {
12402 maxFrameAverageLightLevel = maxFrameAverageLightLevel_;
12403 return *this;
12404 }
12405
12406 operator const VkHdrMetadataEXT&() const
12407 {
12408 return *reinterpret_cast<const VkHdrMetadataEXT*>(this);
12409 }
12410
12411 bool operator==( HdrMetadataEXT const& rhs ) const
12412 {
12413 return ( sType == rhs.sType )
12414 && ( pNext == rhs.pNext )
12415 && ( displayPrimaryRed == rhs.displayPrimaryRed )
12416 && ( displayPrimaryGreen == rhs.displayPrimaryGreen )
12417 && ( displayPrimaryBlue == rhs.displayPrimaryBlue )
12418 && ( whitePoint == rhs.whitePoint )
12419 && ( maxLuminance == rhs.maxLuminance )
12420 && ( minLuminance == rhs.minLuminance )
12421 && ( maxContentLightLevel == rhs.maxContentLightLevel )
12422 && ( maxFrameAverageLightLevel == rhs.maxFrameAverageLightLevel );
12423 }
12424
12425 bool operator!=( HdrMetadataEXT const& rhs ) const
12426 {
12427 return !operator==( rhs );
12428 }
12429
12430 private:
12431 StructureType sType;
12432
12433 public:
12434 const void* pNext;
12435 XYColorEXT displayPrimaryRed;
12436 XYColorEXT displayPrimaryGreen;
12437 XYColorEXT displayPrimaryBlue;
12438 XYColorEXT whitePoint;
12439 float maxLuminance;
12440 float minLuminance;
12441 float maxContentLightLevel;
12442 float maxFrameAverageLightLevel;
12443 };
12444 static_assert( sizeof( HdrMetadataEXT ) == sizeof( VkHdrMetadataEXT ), "struct and wrapper have different size!" );
12445
12446 struct PresentTimesInfoGOOGLE
12447 {
12448 PresentTimesInfoGOOGLE( uint32_t swapchainCount_ = 0, const PresentTimeGOOGLE* pTimes_ = nullptr )
12449 : sType( StructureType::ePresentTimesInfoGOOGLE )
12450 , pNext( nullptr )
12451 , swapchainCount( swapchainCount_ )
12452 , pTimes( pTimes_ )
12453 {
12454 }
12455
12456 PresentTimesInfoGOOGLE( VkPresentTimesInfoGOOGLE const & rhs )
12457 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012458 memcpy( this, &rhs, sizeof( PresentTimesInfoGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012459 }
12460
12461 PresentTimesInfoGOOGLE& operator=( VkPresentTimesInfoGOOGLE const & rhs )
12462 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012463 memcpy( this, &rhs, sizeof( PresentTimesInfoGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012464 return *this;
12465 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012466 PresentTimesInfoGOOGLE& setPNext( const void* pNext_ )
12467 {
12468 pNext = pNext_;
12469 return *this;
12470 }
12471
12472 PresentTimesInfoGOOGLE& setSwapchainCount( uint32_t swapchainCount_ )
12473 {
12474 swapchainCount = swapchainCount_;
12475 return *this;
12476 }
12477
12478 PresentTimesInfoGOOGLE& setPTimes( const PresentTimeGOOGLE* pTimes_ )
12479 {
12480 pTimes = pTimes_;
12481 return *this;
12482 }
12483
12484 operator const VkPresentTimesInfoGOOGLE&() const
12485 {
12486 return *reinterpret_cast<const VkPresentTimesInfoGOOGLE*>(this);
12487 }
12488
12489 bool operator==( PresentTimesInfoGOOGLE const& rhs ) const
12490 {
12491 return ( sType == rhs.sType )
12492 && ( pNext == rhs.pNext )
12493 && ( swapchainCount == rhs.swapchainCount )
12494 && ( pTimes == rhs.pTimes );
12495 }
12496
12497 bool operator!=( PresentTimesInfoGOOGLE const& rhs ) const
12498 {
12499 return !operator==( rhs );
12500 }
12501
12502 private:
12503 StructureType sType;
12504
12505 public:
12506 const void* pNext;
12507 uint32_t swapchainCount;
12508 const PresentTimeGOOGLE* pTimes;
12509 };
12510 static_assert( sizeof( PresentTimesInfoGOOGLE ) == sizeof( VkPresentTimesInfoGOOGLE ), "struct and wrapper have different size!" );
12511
Mark Young0f183a82017-02-28 09:58:04 -070012512#ifdef VK_USE_PLATFORM_IOS_MVK
12513 struct IOSSurfaceCreateInfoMVK
12514 {
12515 IOSSurfaceCreateInfoMVK( IOSSurfaceCreateFlagsMVK flags_ = IOSSurfaceCreateFlagsMVK(), const void* pView_ = nullptr )
12516 : sType( StructureType::eIOSSurfaceCreateInfoMVK )
12517 , pNext( nullptr )
12518 , flags( flags_ )
12519 , pView( pView_ )
12520 {
12521 }
12522
12523 IOSSurfaceCreateInfoMVK( VkIOSSurfaceCreateInfoMVK const & rhs )
12524 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012525 memcpy( this, &rhs, sizeof( IOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070012526 }
12527
12528 IOSSurfaceCreateInfoMVK& operator=( VkIOSSurfaceCreateInfoMVK const & rhs )
12529 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012530 memcpy( this, &rhs, sizeof( IOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070012531 return *this;
12532 }
Mark Young0f183a82017-02-28 09:58:04 -070012533 IOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
12534 {
12535 pNext = pNext_;
12536 return *this;
12537 }
12538
12539 IOSSurfaceCreateInfoMVK& setFlags( IOSSurfaceCreateFlagsMVK flags_ )
12540 {
12541 flags = flags_;
12542 return *this;
12543 }
12544
12545 IOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
12546 {
12547 pView = pView_;
12548 return *this;
12549 }
12550
12551 operator const VkIOSSurfaceCreateInfoMVK&() const
12552 {
12553 return *reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>(this);
12554 }
12555
12556 bool operator==( IOSSurfaceCreateInfoMVK const& rhs ) const
12557 {
12558 return ( sType == rhs.sType )
12559 && ( pNext == rhs.pNext )
12560 && ( flags == rhs.flags )
12561 && ( pView == rhs.pView );
12562 }
12563
12564 bool operator!=( IOSSurfaceCreateInfoMVK const& rhs ) const
12565 {
12566 return !operator==( rhs );
12567 }
12568
12569 private:
12570 StructureType sType;
12571
12572 public:
12573 const void* pNext;
12574 IOSSurfaceCreateFlagsMVK flags;
12575 const void* pView;
12576 };
12577 static_assert( sizeof( IOSSurfaceCreateInfoMVK ) == sizeof( VkIOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
12578#endif /*VK_USE_PLATFORM_IOS_MVK*/
12579
12580#ifdef VK_USE_PLATFORM_MACOS_MVK
12581 struct MacOSSurfaceCreateInfoMVK
12582 {
12583 MacOSSurfaceCreateInfoMVK( MacOSSurfaceCreateFlagsMVK flags_ = MacOSSurfaceCreateFlagsMVK(), const void* pView_ = nullptr )
12584 : sType( StructureType::eMacOSSurfaceCreateInfoMVK )
12585 , pNext( nullptr )
12586 , flags( flags_ )
12587 , pView( pView_ )
12588 {
12589 }
12590
12591 MacOSSurfaceCreateInfoMVK( VkMacOSSurfaceCreateInfoMVK const & rhs )
12592 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012593 memcpy( this, &rhs, sizeof( MacOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070012594 }
12595
12596 MacOSSurfaceCreateInfoMVK& operator=( VkMacOSSurfaceCreateInfoMVK const & rhs )
12597 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012598 memcpy( this, &rhs, sizeof( MacOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070012599 return *this;
12600 }
Mark Young0f183a82017-02-28 09:58:04 -070012601 MacOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
12602 {
12603 pNext = pNext_;
12604 return *this;
12605 }
12606
12607 MacOSSurfaceCreateInfoMVK& setFlags( MacOSSurfaceCreateFlagsMVK flags_ )
12608 {
12609 flags = flags_;
12610 return *this;
12611 }
12612
12613 MacOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
12614 {
12615 pView = pView_;
12616 return *this;
12617 }
12618
12619 operator const VkMacOSSurfaceCreateInfoMVK&() const
12620 {
12621 return *reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>(this);
12622 }
12623
12624 bool operator==( MacOSSurfaceCreateInfoMVK const& rhs ) const
12625 {
12626 return ( sType == rhs.sType )
12627 && ( pNext == rhs.pNext )
12628 && ( flags == rhs.flags )
12629 && ( pView == rhs.pView );
12630 }
12631
12632 bool operator!=( MacOSSurfaceCreateInfoMVK const& rhs ) const
12633 {
12634 return !operator==( rhs );
12635 }
12636
12637 private:
12638 StructureType sType;
12639
12640 public:
12641 const void* pNext;
12642 MacOSSurfaceCreateFlagsMVK flags;
12643 const void* pView;
12644 };
12645 static_assert( sizeof( MacOSSurfaceCreateInfoMVK ) == sizeof( VkMacOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
12646#endif /*VK_USE_PLATFORM_MACOS_MVK*/
12647
12648 struct PipelineViewportWScalingStateCreateInfoNV
12649 {
12650 PipelineViewportWScalingStateCreateInfoNV( Bool32 viewportWScalingEnable_ = 0, uint32_t viewportCount_ = 0, const ViewportWScalingNV* pViewportWScalings_ = nullptr )
12651 : sType( StructureType::ePipelineViewportWScalingStateCreateInfoNV )
12652 , pNext( nullptr )
12653 , viewportWScalingEnable( viewportWScalingEnable_ )
12654 , viewportCount( viewportCount_ )
12655 , pViewportWScalings( pViewportWScalings_ )
12656 {
12657 }
12658
12659 PipelineViewportWScalingStateCreateInfoNV( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
12660 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012661 memcpy( this, &rhs, sizeof( PipelineViewportWScalingStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070012662 }
12663
12664 PipelineViewportWScalingStateCreateInfoNV& operator=( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
12665 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012666 memcpy( this, &rhs, sizeof( PipelineViewportWScalingStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070012667 return *this;
12668 }
Mark Young0f183a82017-02-28 09:58:04 -070012669 PipelineViewportWScalingStateCreateInfoNV& setPNext( const void* pNext_ )
12670 {
12671 pNext = pNext_;
12672 return *this;
12673 }
12674
12675 PipelineViewportWScalingStateCreateInfoNV& setViewportWScalingEnable( Bool32 viewportWScalingEnable_ )
12676 {
12677 viewportWScalingEnable = viewportWScalingEnable_;
12678 return *this;
12679 }
12680
12681 PipelineViewportWScalingStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
12682 {
12683 viewportCount = viewportCount_;
12684 return *this;
12685 }
12686
12687 PipelineViewportWScalingStateCreateInfoNV& setPViewportWScalings( const ViewportWScalingNV* pViewportWScalings_ )
12688 {
12689 pViewportWScalings = pViewportWScalings_;
12690 return *this;
12691 }
12692
12693 operator const VkPipelineViewportWScalingStateCreateInfoNV&() const
12694 {
12695 return *reinterpret_cast<const VkPipelineViewportWScalingStateCreateInfoNV*>(this);
12696 }
12697
12698 bool operator==( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
12699 {
12700 return ( sType == rhs.sType )
12701 && ( pNext == rhs.pNext )
12702 && ( viewportWScalingEnable == rhs.viewportWScalingEnable )
12703 && ( viewportCount == rhs.viewportCount )
12704 && ( pViewportWScalings == rhs.pViewportWScalings );
12705 }
12706
12707 bool operator!=( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
12708 {
12709 return !operator==( rhs );
12710 }
12711
12712 private:
12713 StructureType sType;
12714
12715 public:
12716 const void* pNext;
12717 Bool32 viewportWScalingEnable;
12718 uint32_t viewportCount;
12719 const ViewportWScalingNV* pViewportWScalings;
12720 };
12721 static_assert( sizeof( PipelineViewportWScalingStateCreateInfoNV ) == sizeof( VkPipelineViewportWScalingStateCreateInfoNV ), "struct and wrapper have different size!" );
12722
12723 struct PhysicalDeviceDiscardRectanglePropertiesEXT
12724 {
12725 PhysicalDeviceDiscardRectanglePropertiesEXT( uint32_t maxDiscardRectangles_ = 0 )
12726 : sType( StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT )
12727 , pNext( nullptr )
12728 , maxDiscardRectangles( maxDiscardRectangles_ )
12729 {
12730 }
12731
12732 PhysicalDeviceDiscardRectanglePropertiesEXT( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
12733 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012734 memcpy( this, &rhs, sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070012735 }
12736
12737 PhysicalDeviceDiscardRectanglePropertiesEXT& operator=( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
12738 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012739 memcpy( this, &rhs, sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070012740 return *this;
12741 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -060012742 PhysicalDeviceDiscardRectanglePropertiesEXT& setPNext( void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070012743 {
12744 pNext = pNext_;
12745 return *this;
12746 }
12747
12748 PhysicalDeviceDiscardRectanglePropertiesEXT& setMaxDiscardRectangles( uint32_t maxDiscardRectangles_ )
12749 {
12750 maxDiscardRectangles = maxDiscardRectangles_;
12751 return *this;
12752 }
12753
12754 operator const VkPhysicalDeviceDiscardRectanglePropertiesEXT&() const
12755 {
12756 return *reinterpret_cast<const VkPhysicalDeviceDiscardRectanglePropertiesEXT*>(this);
12757 }
12758
12759 bool operator==( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
12760 {
12761 return ( sType == rhs.sType )
12762 && ( pNext == rhs.pNext )
12763 && ( maxDiscardRectangles == rhs.maxDiscardRectangles );
12764 }
12765
12766 bool operator!=( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
12767 {
12768 return !operator==( rhs );
12769 }
12770
12771 private:
12772 StructureType sType;
12773
12774 public:
Mark Lobodzinski3289d762017-04-03 08:22:04 -060012775 void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070012776 uint32_t maxDiscardRectangles;
12777 };
12778 static_assert( sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) == sizeof( VkPhysicalDeviceDiscardRectanglePropertiesEXT ), "struct and wrapper have different size!" );
12779
12780 struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
12781 {
12782 operator const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX&() const
12783 {
12784 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX*>(this);
12785 }
12786
12787 bool operator==( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
12788 {
12789 return ( sType == rhs.sType )
12790 && ( pNext == rhs.pNext )
12791 && ( perViewPositionAllComponents == rhs.perViewPositionAllComponents );
12792 }
12793
12794 bool operator!=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
12795 {
12796 return !operator==( rhs );
12797 }
12798
12799 private:
12800 StructureType sType;
12801
12802 public:
12803 void* pNext;
12804 Bool32 perViewPositionAllComponents;
12805 };
12806 static_assert( sizeof( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ) == sizeof( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ), "struct and wrapper have different size!" );
12807
Mark Lobodzinski54385432017-05-15 10:27:52 -060012808 struct PhysicalDeviceSurfaceInfo2KHR
12809 {
12810 PhysicalDeviceSurfaceInfo2KHR( SurfaceKHR surface_ = SurfaceKHR() )
12811 : sType( StructureType::ePhysicalDeviceSurfaceInfo2KHR )
12812 , pNext( nullptr )
12813 , surface( surface_ )
12814 {
12815 }
12816
12817 PhysicalDeviceSurfaceInfo2KHR( VkPhysicalDeviceSurfaceInfo2KHR const & rhs )
12818 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012819 memcpy( this, &rhs, sizeof( PhysicalDeviceSurfaceInfo2KHR ) );
Mark Lobodzinski54385432017-05-15 10:27:52 -060012820 }
12821
12822 PhysicalDeviceSurfaceInfo2KHR& operator=( VkPhysicalDeviceSurfaceInfo2KHR const & rhs )
12823 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012824 memcpy( this, &rhs, sizeof( PhysicalDeviceSurfaceInfo2KHR ) );
Mark Lobodzinski54385432017-05-15 10:27:52 -060012825 return *this;
12826 }
Mark Lobodzinski54385432017-05-15 10:27:52 -060012827 PhysicalDeviceSurfaceInfo2KHR& setPNext( const void* pNext_ )
12828 {
12829 pNext = pNext_;
12830 return *this;
12831 }
12832
12833 PhysicalDeviceSurfaceInfo2KHR& setSurface( SurfaceKHR surface_ )
12834 {
12835 surface = surface_;
12836 return *this;
12837 }
12838
12839 operator const VkPhysicalDeviceSurfaceInfo2KHR&() const
12840 {
12841 return *reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>(this);
12842 }
12843
12844 bool operator==( PhysicalDeviceSurfaceInfo2KHR const& rhs ) const
12845 {
12846 return ( sType == rhs.sType )
12847 && ( pNext == rhs.pNext )
12848 && ( surface == rhs.surface );
12849 }
12850
12851 bool operator!=( PhysicalDeviceSurfaceInfo2KHR const& rhs ) const
12852 {
12853 return !operator==( rhs );
12854 }
12855
12856 private:
12857 StructureType sType;
12858
12859 public:
12860 const void* pNext;
12861 SurfaceKHR surface;
12862 };
12863 static_assert( sizeof( PhysicalDeviceSurfaceInfo2KHR ) == sizeof( VkPhysicalDeviceSurfaceInfo2KHR ), "struct and wrapper have different size!" );
12864
Mark Youngabc2d6e2017-07-07 07:59:56 -060012865 struct PhysicalDevice16BitStorageFeaturesKHR
12866 {
12867 PhysicalDevice16BitStorageFeaturesKHR( Bool32 storageBuffer16BitAccess_ = 0, Bool32 uniformAndStorageBuffer16BitAccess_ = 0, Bool32 storagePushConstant16_ = 0, Bool32 storageInputOutput16_ = 0 )
12868 : sType( StructureType::ePhysicalDevice16BitStorageFeaturesKHR )
12869 , pNext( nullptr )
12870 , storageBuffer16BitAccess( storageBuffer16BitAccess_ )
12871 , uniformAndStorageBuffer16BitAccess( uniformAndStorageBuffer16BitAccess_ )
12872 , storagePushConstant16( storagePushConstant16_ )
12873 , storageInputOutput16( storageInputOutput16_ )
12874 {
12875 }
12876
12877 PhysicalDevice16BitStorageFeaturesKHR( VkPhysicalDevice16BitStorageFeaturesKHR const & rhs )
12878 {
12879 memcpy( this, &rhs, sizeof( PhysicalDevice16BitStorageFeaturesKHR ) );
12880 }
12881
12882 PhysicalDevice16BitStorageFeaturesKHR& operator=( VkPhysicalDevice16BitStorageFeaturesKHR const & rhs )
12883 {
12884 memcpy( this, &rhs, sizeof( PhysicalDevice16BitStorageFeaturesKHR ) );
12885 return *this;
12886 }
12887 PhysicalDevice16BitStorageFeaturesKHR& setPNext( void* pNext_ )
12888 {
12889 pNext = pNext_;
12890 return *this;
12891 }
12892
12893 PhysicalDevice16BitStorageFeaturesKHR& setStorageBuffer16BitAccess( Bool32 storageBuffer16BitAccess_ )
12894 {
12895 storageBuffer16BitAccess = storageBuffer16BitAccess_;
12896 return *this;
12897 }
12898
12899 PhysicalDevice16BitStorageFeaturesKHR& setUniformAndStorageBuffer16BitAccess( Bool32 uniformAndStorageBuffer16BitAccess_ )
12900 {
12901 uniformAndStorageBuffer16BitAccess = uniformAndStorageBuffer16BitAccess_;
12902 return *this;
12903 }
12904
12905 PhysicalDevice16BitStorageFeaturesKHR& setStoragePushConstant16( Bool32 storagePushConstant16_ )
12906 {
12907 storagePushConstant16 = storagePushConstant16_;
12908 return *this;
12909 }
12910
12911 PhysicalDevice16BitStorageFeaturesKHR& setStorageInputOutput16( Bool32 storageInputOutput16_ )
12912 {
12913 storageInputOutput16 = storageInputOutput16_;
12914 return *this;
12915 }
12916
12917 operator const VkPhysicalDevice16BitStorageFeaturesKHR&() const
12918 {
12919 return *reinterpret_cast<const VkPhysicalDevice16BitStorageFeaturesKHR*>(this);
12920 }
12921
12922 bool operator==( PhysicalDevice16BitStorageFeaturesKHR const& rhs ) const
12923 {
12924 return ( sType == rhs.sType )
12925 && ( pNext == rhs.pNext )
12926 && ( storageBuffer16BitAccess == rhs.storageBuffer16BitAccess )
12927 && ( uniformAndStorageBuffer16BitAccess == rhs.uniformAndStorageBuffer16BitAccess )
12928 && ( storagePushConstant16 == rhs.storagePushConstant16 )
12929 && ( storageInputOutput16 == rhs.storageInputOutput16 );
12930 }
12931
12932 bool operator!=( PhysicalDevice16BitStorageFeaturesKHR const& rhs ) const
12933 {
12934 return !operator==( rhs );
12935 }
12936
12937 private:
12938 StructureType sType;
12939
12940 public:
12941 void* pNext;
12942 Bool32 storageBuffer16BitAccess;
12943 Bool32 uniformAndStorageBuffer16BitAccess;
12944 Bool32 storagePushConstant16;
12945 Bool32 storageInputOutput16;
12946 };
12947 static_assert( sizeof( PhysicalDevice16BitStorageFeaturesKHR ) == sizeof( VkPhysicalDevice16BitStorageFeaturesKHR ), "struct and wrapper have different size!" );
12948
12949 struct BufferMemoryRequirementsInfo2KHR
12950 {
12951 BufferMemoryRequirementsInfo2KHR( Buffer buffer_ = Buffer() )
12952 : sType( StructureType::eBufferMemoryRequirementsInfo2KHR )
12953 , pNext( nullptr )
12954 , buffer( buffer_ )
12955 {
12956 }
12957
12958 BufferMemoryRequirementsInfo2KHR( VkBufferMemoryRequirementsInfo2KHR const & rhs )
12959 {
12960 memcpy( this, &rhs, sizeof( BufferMemoryRequirementsInfo2KHR ) );
12961 }
12962
12963 BufferMemoryRequirementsInfo2KHR& operator=( VkBufferMemoryRequirementsInfo2KHR const & rhs )
12964 {
12965 memcpy( this, &rhs, sizeof( BufferMemoryRequirementsInfo2KHR ) );
12966 return *this;
12967 }
12968 BufferMemoryRequirementsInfo2KHR& setPNext( const void* pNext_ )
12969 {
12970 pNext = pNext_;
12971 return *this;
12972 }
12973
12974 BufferMemoryRequirementsInfo2KHR& setBuffer( Buffer buffer_ )
12975 {
12976 buffer = buffer_;
12977 return *this;
12978 }
12979
12980 operator const VkBufferMemoryRequirementsInfo2KHR&() const
12981 {
12982 return *reinterpret_cast<const VkBufferMemoryRequirementsInfo2KHR*>(this);
12983 }
12984
12985 bool operator==( BufferMemoryRequirementsInfo2KHR const& rhs ) const
12986 {
12987 return ( sType == rhs.sType )
12988 && ( pNext == rhs.pNext )
12989 && ( buffer == rhs.buffer );
12990 }
12991
12992 bool operator!=( BufferMemoryRequirementsInfo2KHR const& rhs ) const
12993 {
12994 return !operator==( rhs );
12995 }
12996
12997 private:
12998 StructureType sType;
12999
13000 public:
13001 const void* pNext;
13002 Buffer buffer;
13003 };
13004 static_assert( sizeof( BufferMemoryRequirementsInfo2KHR ) == sizeof( VkBufferMemoryRequirementsInfo2KHR ), "struct and wrapper have different size!" );
13005
13006 struct ImageMemoryRequirementsInfo2KHR
13007 {
13008 ImageMemoryRequirementsInfo2KHR( Image image_ = Image() )
13009 : sType( StructureType::eImageMemoryRequirementsInfo2KHR )
13010 , pNext( nullptr )
13011 , image( image_ )
13012 {
13013 }
13014
13015 ImageMemoryRequirementsInfo2KHR( VkImageMemoryRequirementsInfo2KHR const & rhs )
13016 {
13017 memcpy( this, &rhs, sizeof( ImageMemoryRequirementsInfo2KHR ) );
13018 }
13019
13020 ImageMemoryRequirementsInfo2KHR& operator=( VkImageMemoryRequirementsInfo2KHR const & rhs )
13021 {
13022 memcpy( this, &rhs, sizeof( ImageMemoryRequirementsInfo2KHR ) );
13023 return *this;
13024 }
13025 ImageMemoryRequirementsInfo2KHR& setPNext( const void* pNext_ )
13026 {
13027 pNext = pNext_;
13028 return *this;
13029 }
13030
13031 ImageMemoryRequirementsInfo2KHR& setImage( Image image_ )
13032 {
13033 image = image_;
13034 return *this;
13035 }
13036
13037 operator const VkImageMemoryRequirementsInfo2KHR&() const
13038 {
13039 return *reinterpret_cast<const VkImageMemoryRequirementsInfo2KHR*>(this);
13040 }
13041
13042 bool operator==( ImageMemoryRequirementsInfo2KHR const& rhs ) const
13043 {
13044 return ( sType == rhs.sType )
13045 && ( pNext == rhs.pNext )
13046 && ( image == rhs.image );
13047 }
13048
13049 bool operator!=( ImageMemoryRequirementsInfo2KHR const& rhs ) const
13050 {
13051 return !operator==( rhs );
13052 }
13053
13054 private:
13055 StructureType sType;
13056
13057 public:
13058 const void* pNext;
13059 Image image;
13060 };
13061 static_assert( sizeof( ImageMemoryRequirementsInfo2KHR ) == sizeof( VkImageMemoryRequirementsInfo2KHR ), "struct and wrapper have different size!" );
13062
13063 struct ImageSparseMemoryRequirementsInfo2KHR
13064 {
13065 ImageSparseMemoryRequirementsInfo2KHR( Image image_ = Image() )
13066 : sType( StructureType::eImageSparseMemoryRequirementsInfo2KHR )
13067 , pNext( nullptr )
13068 , image( image_ )
13069 {
13070 }
13071
13072 ImageSparseMemoryRequirementsInfo2KHR( VkImageSparseMemoryRequirementsInfo2KHR const & rhs )
13073 {
13074 memcpy( this, &rhs, sizeof( ImageSparseMemoryRequirementsInfo2KHR ) );
13075 }
13076
13077 ImageSparseMemoryRequirementsInfo2KHR& operator=( VkImageSparseMemoryRequirementsInfo2KHR const & rhs )
13078 {
13079 memcpy( this, &rhs, sizeof( ImageSparseMemoryRequirementsInfo2KHR ) );
13080 return *this;
13081 }
13082 ImageSparseMemoryRequirementsInfo2KHR& setPNext( const void* pNext_ )
13083 {
13084 pNext = pNext_;
13085 return *this;
13086 }
13087
13088 ImageSparseMemoryRequirementsInfo2KHR& setImage( Image image_ )
13089 {
13090 image = image_;
13091 return *this;
13092 }
13093
13094 operator const VkImageSparseMemoryRequirementsInfo2KHR&() const
13095 {
13096 return *reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2KHR*>(this);
13097 }
13098
13099 bool operator==( ImageSparseMemoryRequirementsInfo2KHR const& rhs ) const
13100 {
13101 return ( sType == rhs.sType )
13102 && ( pNext == rhs.pNext )
13103 && ( image == rhs.image );
13104 }
13105
13106 bool operator!=( ImageSparseMemoryRequirementsInfo2KHR const& rhs ) const
13107 {
13108 return !operator==( rhs );
13109 }
13110
13111 private:
13112 StructureType sType;
13113
13114 public:
13115 const void* pNext;
13116 Image image;
13117 };
13118 static_assert( sizeof( ImageSparseMemoryRequirementsInfo2KHR ) == sizeof( VkImageSparseMemoryRequirementsInfo2KHR ), "struct and wrapper have different size!" );
13119
13120 struct MemoryRequirements2KHR
13121 {
13122 operator const VkMemoryRequirements2KHR&() const
13123 {
13124 return *reinterpret_cast<const VkMemoryRequirements2KHR*>(this);
13125 }
13126
13127 bool operator==( MemoryRequirements2KHR const& rhs ) const
13128 {
13129 return ( sType == rhs.sType )
13130 && ( pNext == rhs.pNext )
13131 && ( memoryRequirements == rhs.memoryRequirements );
13132 }
13133
13134 bool operator!=( MemoryRequirements2KHR const& rhs ) const
13135 {
13136 return !operator==( rhs );
13137 }
13138
13139 private:
13140 StructureType sType;
13141
13142 public:
13143 void* pNext;
13144 MemoryRequirements memoryRequirements;
13145 };
13146 static_assert( sizeof( MemoryRequirements2KHR ) == sizeof( VkMemoryRequirements2KHR ), "struct and wrapper have different size!" );
13147
13148 struct MemoryDedicatedRequirementsKHR
13149 {
13150 operator const VkMemoryDedicatedRequirementsKHR&() const
13151 {
13152 return *reinterpret_cast<const VkMemoryDedicatedRequirementsKHR*>(this);
13153 }
13154
13155 bool operator==( MemoryDedicatedRequirementsKHR const& rhs ) const
13156 {
13157 return ( sType == rhs.sType )
13158 && ( pNext == rhs.pNext )
13159 && ( prefersDedicatedAllocation == rhs.prefersDedicatedAllocation )
13160 && ( requiresDedicatedAllocation == rhs.requiresDedicatedAllocation );
13161 }
13162
13163 bool operator!=( MemoryDedicatedRequirementsKHR const& rhs ) const
13164 {
13165 return !operator==( rhs );
13166 }
13167
13168 private:
13169 StructureType sType;
13170
13171 public:
13172 void* pNext;
13173 Bool32 prefersDedicatedAllocation;
13174 Bool32 requiresDedicatedAllocation;
13175 };
13176 static_assert( sizeof( MemoryDedicatedRequirementsKHR ) == sizeof( VkMemoryDedicatedRequirementsKHR ), "struct and wrapper have different size!" );
13177
13178 struct MemoryDedicatedAllocateInfoKHR
13179 {
13180 MemoryDedicatedAllocateInfoKHR( Image image_ = Image(), Buffer buffer_ = Buffer() )
13181 : sType( StructureType::eMemoryDedicatedAllocateInfoKHR )
13182 , pNext( nullptr )
13183 , image( image_ )
13184 , buffer( buffer_ )
13185 {
13186 }
13187
13188 MemoryDedicatedAllocateInfoKHR( VkMemoryDedicatedAllocateInfoKHR const & rhs )
13189 {
13190 memcpy( this, &rhs, sizeof( MemoryDedicatedAllocateInfoKHR ) );
13191 }
13192
13193 MemoryDedicatedAllocateInfoKHR& operator=( VkMemoryDedicatedAllocateInfoKHR const & rhs )
13194 {
13195 memcpy( this, &rhs, sizeof( MemoryDedicatedAllocateInfoKHR ) );
13196 return *this;
13197 }
13198 MemoryDedicatedAllocateInfoKHR& setPNext( const void* pNext_ )
13199 {
13200 pNext = pNext_;
13201 return *this;
13202 }
13203
13204 MemoryDedicatedAllocateInfoKHR& setImage( Image image_ )
13205 {
13206 image = image_;
13207 return *this;
13208 }
13209
13210 MemoryDedicatedAllocateInfoKHR& setBuffer( Buffer buffer_ )
13211 {
13212 buffer = buffer_;
13213 return *this;
13214 }
13215
13216 operator const VkMemoryDedicatedAllocateInfoKHR&() const
13217 {
13218 return *reinterpret_cast<const VkMemoryDedicatedAllocateInfoKHR*>(this);
13219 }
13220
13221 bool operator==( MemoryDedicatedAllocateInfoKHR const& rhs ) const
13222 {
13223 return ( sType == rhs.sType )
13224 && ( pNext == rhs.pNext )
13225 && ( image == rhs.image )
13226 && ( buffer == rhs.buffer );
13227 }
13228
13229 bool operator!=( MemoryDedicatedAllocateInfoKHR const& rhs ) const
13230 {
13231 return !operator==( rhs );
13232 }
13233
13234 private:
13235 StructureType sType;
13236
13237 public:
13238 const void* pNext;
13239 Image image;
13240 Buffer buffer;
13241 };
13242 static_assert( sizeof( MemoryDedicatedAllocateInfoKHR ) == sizeof( VkMemoryDedicatedAllocateInfoKHR ), "struct and wrapper have different size!" );
13243
Lenny Komowb79f04a2017-09-18 17:07:00 -060013244 struct SamplerYcbcrConversionInfoKHR
13245 {
13246 SamplerYcbcrConversionInfoKHR( SamplerYcbcrConversionKHR conversion_ = SamplerYcbcrConversionKHR() )
13247 : sType( StructureType::eSamplerYcbcrConversionInfoKHR )
13248 , pNext( nullptr )
13249 , conversion( conversion_ )
13250 {
13251 }
13252
13253 SamplerYcbcrConversionInfoKHR( VkSamplerYcbcrConversionInfoKHR const & rhs )
13254 {
13255 memcpy( this, &rhs, sizeof( SamplerYcbcrConversionInfoKHR ) );
13256 }
13257
13258 SamplerYcbcrConversionInfoKHR& operator=( VkSamplerYcbcrConversionInfoKHR const & rhs )
13259 {
13260 memcpy( this, &rhs, sizeof( SamplerYcbcrConversionInfoKHR ) );
13261 return *this;
13262 }
13263 SamplerYcbcrConversionInfoKHR& setPNext( const void* pNext_ )
13264 {
13265 pNext = pNext_;
13266 return *this;
13267 }
13268
13269 SamplerYcbcrConversionInfoKHR& setConversion( SamplerYcbcrConversionKHR conversion_ )
13270 {
13271 conversion = conversion_;
13272 return *this;
13273 }
13274
13275 operator const VkSamplerYcbcrConversionInfoKHR&() const
13276 {
13277 return *reinterpret_cast<const VkSamplerYcbcrConversionInfoKHR*>(this);
13278 }
13279
13280 bool operator==( SamplerYcbcrConversionInfoKHR const& rhs ) const
13281 {
13282 return ( sType == rhs.sType )
13283 && ( pNext == rhs.pNext )
13284 && ( conversion == rhs.conversion );
13285 }
13286
13287 bool operator!=( SamplerYcbcrConversionInfoKHR const& rhs ) const
13288 {
13289 return !operator==( rhs );
13290 }
13291
13292 private:
13293 StructureType sType;
13294
13295 public:
13296 const void* pNext;
13297 SamplerYcbcrConversionKHR conversion;
13298 };
13299 static_assert( sizeof( SamplerYcbcrConversionInfoKHR ) == sizeof( VkSamplerYcbcrConversionInfoKHR ), "struct and wrapper have different size!" );
13300
13301 struct PhysicalDeviceSamplerYcbcrConversionFeaturesKHR
13302 {
13303 PhysicalDeviceSamplerYcbcrConversionFeaturesKHR( Bool32 samplerYcbcrConversion_ = 0 )
13304 : sType( StructureType::ePhysicalDeviceSamplerYcbcrConversionFeaturesKHR )
13305 , pNext( nullptr )
13306 , samplerYcbcrConversion( samplerYcbcrConversion_ )
13307 {
13308 }
13309
13310 PhysicalDeviceSamplerYcbcrConversionFeaturesKHR( VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR const & rhs )
13311 {
13312 memcpy( this, &rhs, sizeof( PhysicalDeviceSamplerYcbcrConversionFeaturesKHR ) );
13313 }
13314
13315 PhysicalDeviceSamplerYcbcrConversionFeaturesKHR& operator=( VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR const & rhs )
13316 {
13317 memcpy( this, &rhs, sizeof( PhysicalDeviceSamplerYcbcrConversionFeaturesKHR ) );
13318 return *this;
13319 }
13320 PhysicalDeviceSamplerYcbcrConversionFeaturesKHR& setPNext( void* pNext_ )
13321 {
13322 pNext = pNext_;
13323 return *this;
13324 }
13325
13326 PhysicalDeviceSamplerYcbcrConversionFeaturesKHR& setSamplerYcbcrConversion( Bool32 samplerYcbcrConversion_ )
13327 {
13328 samplerYcbcrConversion = samplerYcbcrConversion_;
13329 return *this;
13330 }
13331
13332 operator const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR&() const
13333 {
13334 return *reinterpret_cast<const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR*>(this);
13335 }
13336
13337 bool operator==( PhysicalDeviceSamplerYcbcrConversionFeaturesKHR const& rhs ) const
13338 {
13339 return ( sType == rhs.sType )
13340 && ( pNext == rhs.pNext )
13341 && ( samplerYcbcrConversion == rhs.samplerYcbcrConversion );
13342 }
13343
13344 bool operator!=( PhysicalDeviceSamplerYcbcrConversionFeaturesKHR const& rhs ) const
13345 {
13346 return !operator==( rhs );
13347 }
13348
13349 private:
13350 StructureType sType;
13351
13352 public:
13353 void* pNext;
13354 Bool32 samplerYcbcrConversion;
13355 };
13356 static_assert( sizeof( PhysicalDeviceSamplerYcbcrConversionFeaturesKHR ) == sizeof( VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR ), "struct and wrapper have different size!" );
13357
13358 struct SamplerYcbcrConversionImageFormatPropertiesKHR
13359 {
13360 operator const VkSamplerYcbcrConversionImageFormatPropertiesKHR&() const
13361 {
13362 return *reinterpret_cast<const VkSamplerYcbcrConversionImageFormatPropertiesKHR*>(this);
13363 }
13364
13365 bool operator==( SamplerYcbcrConversionImageFormatPropertiesKHR const& rhs ) const
13366 {
13367 return ( sType == rhs.sType )
13368 && ( pNext == rhs.pNext )
13369 && ( combinedImageSamplerDescriptorCount == rhs.combinedImageSamplerDescriptorCount );
13370 }
13371
13372 bool operator!=( SamplerYcbcrConversionImageFormatPropertiesKHR const& rhs ) const
13373 {
13374 return !operator==( rhs );
13375 }
13376
13377 private:
13378 StructureType sType;
13379
13380 public:
13381 void* pNext;
13382 uint32_t combinedImageSamplerDescriptorCount;
13383 };
13384 static_assert( sizeof( SamplerYcbcrConversionImageFormatPropertiesKHR ) == sizeof( VkSamplerYcbcrConversionImageFormatPropertiesKHR ), "struct and wrapper have different size!" );
13385
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013386 struct TextureLODGatherFormatPropertiesAMD
13387 {
13388 operator const VkTextureLODGatherFormatPropertiesAMD&() const
13389 {
13390 return *reinterpret_cast<const VkTextureLODGatherFormatPropertiesAMD*>(this);
13391 }
13392
13393 bool operator==( TextureLODGatherFormatPropertiesAMD const& rhs ) const
13394 {
13395 return ( sType == rhs.sType )
13396 && ( pNext == rhs.pNext )
13397 && ( supportsTextureGatherLODBiasAMD == rhs.supportsTextureGatherLODBiasAMD );
13398 }
13399
13400 bool operator!=( TextureLODGatherFormatPropertiesAMD const& rhs ) const
13401 {
13402 return !operator==( rhs );
13403 }
13404
13405 private:
13406 StructureType sType;
13407
13408 public:
13409 void* pNext;
13410 Bool32 supportsTextureGatherLODBiasAMD;
13411 };
13412 static_assert( sizeof( TextureLODGatherFormatPropertiesAMD ) == sizeof( VkTextureLODGatherFormatPropertiesAMD ), "struct and wrapper have different size!" );
13413
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060013414 struct PipelineCoverageToColorStateCreateInfoNV
13415 {
13416 PipelineCoverageToColorStateCreateInfoNV( PipelineCoverageToColorStateCreateFlagsNV flags_ = PipelineCoverageToColorStateCreateFlagsNV(), Bool32 coverageToColorEnable_ = 0, uint32_t coverageToColorLocation_ = 0 )
13417 : sType( StructureType::ePipelineCoverageToColorStateCreateInfoNV )
13418 , pNext( nullptr )
13419 , flags( flags_ )
13420 , coverageToColorEnable( coverageToColorEnable_ )
13421 , coverageToColorLocation( coverageToColorLocation_ )
13422 {
13423 }
13424
13425 PipelineCoverageToColorStateCreateInfoNV( VkPipelineCoverageToColorStateCreateInfoNV const & rhs )
13426 {
13427 memcpy( this, &rhs, sizeof( PipelineCoverageToColorStateCreateInfoNV ) );
13428 }
13429
13430 PipelineCoverageToColorStateCreateInfoNV& operator=( VkPipelineCoverageToColorStateCreateInfoNV const & rhs )
13431 {
13432 memcpy( this, &rhs, sizeof( PipelineCoverageToColorStateCreateInfoNV ) );
13433 return *this;
13434 }
13435 PipelineCoverageToColorStateCreateInfoNV& setPNext( const void* pNext_ )
13436 {
13437 pNext = pNext_;
13438 return *this;
13439 }
13440
13441 PipelineCoverageToColorStateCreateInfoNV& setFlags( PipelineCoverageToColorStateCreateFlagsNV flags_ )
13442 {
13443 flags = flags_;
13444 return *this;
13445 }
13446
13447 PipelineCoverageToColorStateCreateInfoNV& setCoverageToColorEnable( Bool32 coverageToColorEnable_ )
13448 {
13449 coverageToColorEnable = coverageToColorEnable_;
13450 return *this;
13451 }
13452
13453 PipelineCoverageToColorStateCreateInfoNV& setCoverageToColorLocation( uint32_t coverageToColorLocation_ )
13454 {
13455 coverageToColorLocation = coverageToColorLocation_;
13456 return *this;
13457 }
13458
13459 operator const VkPipelineCoverageToColorStateCreateInfoNV&() const
13460 {
13461 return *reinterpret_cast<const VkPipelineCoverageToColorStateCreateInfoNV*>(this);
13462 }
13463
13464 bool operator==( PipelineCoverageToColorStateCreateInfoNV const& rhs ) const
13465 {
13466 return ( sType == rhs.sType )
13467 && ( pNext == rhs.pNext )
13468 && ( flags == rhs.flags )
13469 && ( coverageToColorEnable == rhs.coverageToColorEnable )
13470 && ( coverageToColorLocation == rhs.coverageToColorLocation );
13471 }
13472
13473 bool operator!=( PipelineCoverageToColorStateCreateInfoNV const& rhs ) const
13474 {
13475 return !operator==( rhs );
13476 }
13477
13478 private:
13479 StructureType sType;
13480
13481 public:
13482 const void* pNext;
13483 PipelineCoverageToColorStateCreateFlagsNV flags;
13484 Bool32 coverageToColorEnable;
13485 uint32_t coverageToColorLocation;
13486 };
13487 static_assert( sizeof( PipelineCoverageToColorStateCreateInfoNV ) == sizeof( VkPipelineCoverageToColorStateCreateInfoNV ), "struct and wrapper have different size!" );
13488
13489 struct PhysicalDeviceSamplerFilterMinmaxPropertiesEXT
13490 {
13491 operator const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT&() const
13492 {
13493 return *reinterpret_cast<const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT*>(this);
13494 }
13495
13496 bool operator==( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT const& rhs ) const
13497 {
13498 return ( sType == rhs.sType )
13499 && ( pNext == rhs.pNext )
13500 && ( filterMinmaxSingleComponentFormats == rhs.filterMinmaxSingleComponentFormats )
13501 && ( filterMinmaxImageComponentMapping == rhs.filterMinmaxImageComponentMapping );
13502 }
13503
13504 bool operator!=( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT const& rhs ) const
13505 {
13506 return !operator==( rhs );
13507 }
13508
13509 private:
13510 StructureType sType;
13511
13512 public:
13513 void* pNext;
13514 Bool32 filterMinmaxSingleComponentFormats;
13515 Bool32 filterMinmaxImageComponentMapping;
13516 };
13517 static_assert( sizeof( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT ) == sizeof( VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT ), "struct and wrapper have different size!" );
13518
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060013519 struct MultisamplePropertiesEXT
13520 {
13521 operator const VkMultisamplePropertiesEXT&() const
13522 {
13523 return *reinterpret_cast<const VkMultisamplePropertiesEXT*>(this);
13524 }
13525
13526 bool operator==( MultisamplePropertiesEXT const& rhs ) const
13527 {
13528 return ( sType == rhs.sType )
13529 && ( pNext == rhs.pNext )
13530 && ( maxSampleLocationGridSize == rhs.maxSampleLocationGridSize );
13531 }
13532
13533 bool operator!=( MultisamplePropertiesEXT const& rhs ) const
13534 {
13535 return !operator==( rhs );
13536 }
13537
13538 private:
13539 StructureType sType;
13540
13541 public:
13542 void* pNext;
13543 Extent2D maxSampleLocationGridSize;
13544 };
13545 static_assert( sizeof( MultisamplePropertiesEXT ) == sizeof( VkMultisamplePropertiesEXT ), "struct and wrapper have different size!" );
13546
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060013547 struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT
13548 {
13549 PhysicalDeviceBlendOperationAdvancedFeaturesEXT( Bool32 advancedBlendCoherentOperations_ = 0 )
13550 : sType( StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT )
13551 , pNext( nullptr )
13552 , advancedBlendCoherentOperations( advancedBlendCoherentOperations_ )
13553 {
13554 }
13555
13556 PhysicalDeviceBlendOperationAdvancedFeaturesEXT( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs )
13557 {
13558 memcpy( this, &rhs, sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) );
13559 }
13560
13561 PhysicalDeviceBlendOperationAdvancedFeaturesEXT& operator=( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs )
13562 {
13563 memcpy( this, &rhs, sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) );
13564 return *this;
13565 }
13566 PhysicalDeviceBlendOperationAdvancedFeaturesEXT& setPNext( void* pNext_ )
13567 {
13568 pNext = pNext_;
13569 return *this;
13570 }
13571
13572 PhysicalDeviceBlendOperationAdvancedFeaturesEXT& setAdvancedBlendCoherentOperations( Bool32 advancedBlendCoherentOperations_ )
13573 {
13574 advancedBlendCoherentOperations = advancedBlendCoherentOperations_;
13575 return *this;
13576 }
13577
13578 operator const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT&() const
13579 {
13580 return *reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT*>(this);
13581 }
13582
13583 bool operator==( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const& rhs ) const
13584 {
13585 return ( sType == rhs.sType )
13586 && ( pNext == rhs.pNext )
13587 && ( advancedBlendCoherentOperations == rhs.advancedBlendCoherentOperations );
13588 }
13589
13590 bool operator!=( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const& rhs ) const
13591 {
13592 return !operator==( rhs );
13593 }
13594
13595 private:
13596 StructureType sType;
13597
13598 public:
13599 void* pNext;
13600 Bool32 advancedBlendCoherentOperations;
13601 };
13602 static_assert( sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) == sizeof( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT ), "struct and wrapper have different size!" );
13603
13604 struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT
13605 {
13606 operator const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT&() const
13607 {
13608 return *reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT*>(this);
13609 }
13610
13611 bool operator==( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const& rhs ) const
13612 {
13613 return ( sType == rhs.sType )
13614 && ( pNext == rhs.pNext )
13615 && ( advancedBlendMaxColorAttachments == rhs.advancedBlendMaxColorAttachments )
13616 && ( advancedBlendIndependentBlend == rhs.advancedBlendIndependentBlend )
13617 && ( advancedBlendNonPremultipliedSrcColor == rhs.advancedBlendNonPremultipliedSrcColor )
13618 && ( advancedBlendNonPremultipliedDstColor == rhs.advancedBlendNonPremultipliedDstColor )
13619 && ( advancedBlendCorrelatedOverlap == rhs.advancedBlendCorrelatedOverlap )
13620 && ( advancedBlendAllOperations == rhs.advancedBlendAllOperations );
13621 }
13622
13623 bool operator!=( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const& rhs ) const
13624 {
13625 return !operator==( rhs );
13626 }
13627
13628 private:
13629 StructureType sType;
13630
13631 public:
13632 void* pNext;
13633 uint32_t advancedBlendMaxColorAttachments;
13634 Bool32 advancedBlendIndependentBlend;
13635 Bool32 advancedBlendNonPremultipliedSrcColor;
13636 Bool32 advancedBlendNonPremultipliedDstColor;
13637 Bool32 advancedBlendCorrelatedOverlap;
13638 Bool32 advancedBlendAllOperations;
13639 };
13640 static_assert( sizeof( PhysicalDeviceBlendOperationAdvancedPropertiesEXT ) == sizeof( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT ), "struct and wrapper have different size!" );
13641
Lenny Komowb79f04a2017-09-18 17:07:00 -060013642 struct ImageFormatListCreateInfoKHR
13643 {
13644 ImageFormatListCreateInfoKHR( uint32_t viewFormatCount_ = 0, const Format* pViewFormats_ = nullptr )
13645 : sType( StructureType::eImageFormatListCreateInfoKHR )
13646 , pNext( nullptr )
13647 , viewFormatCount( viewFormatCount_ )
13648 , pViewFormats( pViewFormats_ )
13649 {
13650 }
13651
13652 ImageFormatListCreateInfoKHR( VkImageFormatListCreateInfoKHR const & rhs )
13653 {
13654 memcpy( this, &rhs, sizeof( ImageFormatListCreateInfoKHR ) );
13655 }
13656
13657 ImageFormatListCreateInfoKHR& operator=( VkImageFormatListCreateInfoKHR const & rhs )
13658 {
13659 memcpy( this, &rhs, sizeof( ImageFormatListCreateInfoKHR ) );
13660 return *this;
13661 }
13662 ImageFormatListCreateInfoKHR& setPNext( const void* pNext_ )
13663 {
13664 pNext = pNext_;
13665 return *this;
13666 }
13667
13668 ImageFormatListCreateInfoKHR& setViewFormatCount( uint32_t viewFormatCount_ )
13669 {
13670 viewFormatCount = viewFormatCount_;
13671 return *this;
13672 }
13673
13674 ImageFormatListCreateInfoKHR& setPViewFormats( const Format* pViewFormats_ )
13675 {
13676 pViewFormats = pViewFormats_;
13677 return *this;
13678 }
13679
13680 operator const VkImageFormatListCreateInfoKHR&() const
13681 {
13682 return *reinterpret_cast<const VkImageFormatListCreateInfoKHR*>(this);
13683 }
13684
13685 bool operator==( ImageFormatListCreateInfoKHR const& rhs ) const
13686 {
13687 return ( sType == rhs.sType )
13688 && ( pNext == rhs.pNext )
13689 && ( viewFormatCount == rhs.viewFormatCount )
13690 && ( pViewFormats == rhs.pViewFormats );
13691 }
13692
13693 bool operator!=( ImageFormatListCreateInfoKHR const& rhs ) const
13694 {
13695 return !operator==( rhs );
13696 }
13697
13698 private:
13699 StructureType sType;
13700
13701 public:
13702 const void* pNext;
13703 uint32_t viewFormatCount;
13704 const Format* pViewFormats;
13705 };
13706 static_assert( sizeof( ImageFormatListCreateInfoKHR ) == sizeof( VkImageFormatListCreateInfoKHR ), "struct and wrapper have different size!" );
13707
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060013708 struct ValidationCacheCreateInfoEXT
13709 {
13710 ValidationCacheCreateInfoEXT( ValidationCacheCreateFlagsEXT flags_ = ValidationCacheCreateFlagsEXT(), size_t initialDataSize_ = 0, const void* pInitialData_ = nullptr )
13711 : sType( StructureType::eValidationCacheCreateInfoEXT )
13712 , pNext( nullptr )
13713 , flags( flags_ )
13714 , initialDataSize( initialDataSize_ )
13715 , pInitialData( pInitialData_ )
13716 {
13717 }
13718
13719 ValidationCacheCreateInfoEXT( VkValidationCacheCreateInfoEXT const & rhs )
13720 {
13721 memcpy( this, &rhs, sizeof( ValidationCacheCreateInfoEXT ) );
13722 }
13723
13724 ValidationCacheCreateInfoEXT& operator=( VkValidationCacheCreateInfoEXT const & rhs )
13725 {
13726 memcpy( this, &rhs, sizeof( ValidationCacheCreateInfoEXT ) );
13727 return *this;
13728 }
13729 ValidationCacheCreateInfoEXT& setPNext( const void* pNext_ )
13730 {
13731 pNext = pNext_;
13732 return *this;
13733 }
13734
13735 ValidationCacheCreateInfoEXT& setFlags( ValidationCacheCreateFlagsEXT flags_ )
13736 {
13737 flags = flags_;
13738 return *this;
13739 }
13740
13741 ValidationCacheCreateInfoEXT& setInitialDataSize( size_t initialDataSize_ )
13742 {
13743 initialDataSize = initialDataSize_;
13744 return *this;
13745 }
13746
13747 ValidationCacheCreateInfoEXT& setPInitialData( const void* pInitialData_ )
13748 {
13749 pInitialData = pInitialData_;
13750 return *this;
13751 }
13752
13753 operator const VkValidationCacheCreateInfoEXT&() const
13754 {
13755 return *reinterpret_cast<const VkValidationCacheCreateInfoEXT*>(this);
13756 }
13757
13758 bool operator==( ValidationCacheCreateInfoEXT const& rhs ) const
13759 {
13760 return ( sType == rhs.sType )
13761 && ( pNext == rhs.pNext )
13762 && ( flags == rhs.flags )
13763 && ( initialDataSize == rhs.initialDataSize )
13764 && ( pInitialData == rhs.pInitialData );
13765 }
13766
13767 bool operator!=( ValidationCacheCreateInfoEXT const& rhs ) const
13768 {
13769 return !operator==( rhs );
13770 }
13771
13772 private:
13773 StructureType sType;
13774
13775 public:
13776 const void* pNext;
13777 ValidationCacheCreateFlagsEXT flags;
13778 size_t initialDataSize;
13779 const void* pInitialData;
13780 };
13781 static_assert( sizeof( ValidationCacheCreateInfoEXT ) == sizeof( VkValidationCacheCreateInfoEXT ), "struct and wrapper have different size!" );
13782
13783 struct ShaderModuleValidationCacheCreateInfoEXT
13784 {
13785 ShaderModuleValidationCacheCreateInfoEXT( ValidationCacheEXT validationCache_ = ValidationCacheEXT() )
13786 : sType( StructureType::eShaderModuleValidationCacheCreateInfoEXT )
13787 , pNext( nullptr )
13788 , validationCache( validationCache_ )
13789 {
13790 }
13791
13792 ShaderModuleValidationCacheCreateInfoEXT( VkShaderModuleValidationCacheCreateInfoEXT const & rhs )
13793 {
13794 memcpy( this, &rhs, sizeof( ShaderModuleValidationCacheCreateInfoEXT ) );
13795 }
13796
13797 ShaderModuleValidationCacheCreateInfoEXT& operator=( VkShaderModuleValidationCacheCreateInfoEXT const & rhs )
13798 {
13799 memcpy( this, &rhs, sizeof( ShaderModuleValidationCacheCreateInfoEXT ) );
13800 return *this;
13801 }
13802 ShaderModuleValidationCacheCreateInfoEXT& setPNext( const void* pNext_ )
13803 {
13804 pNext = pNext_;
13805 return *this;
13806 }
13807
13808 ShaderModuleValidationCacheCreateInfoEXT& setValidationCache( ValidationCacheEXT validationCache_ )
13809 {
13810 validationCache = validationCache_;
13811 return *this;
13812 }
13813
13814 operator const VkShaderModuleValidationCacheCreateInfoEXT&() const
13815 {
13816 return *reinterpret_cast<const VkShaderModuleValidationCacheCreateInfoEXT*>(this);
13817 }
13818
13819 bool operator==( ShaderModuleValidationCacheCreateInfoEXT const& rhs ) const
13820 {
13821 return ( sType == rhs.sType )
13822 && ( pNext == rhs.pNext )
13823 && ( validationCache == rhs.validationCache );
13824 }
13825
13826 bool operator!=( ShaderModuleValidationCacheCreateInfoEXT const& rhs ) const
13827 {
13828 return !operator==( rhs );
13829 }
13830
13831 private:
13832 StructureType sType;
13833
13834 public:
13835 const void* pNext;
13836 ValidationCacheEXT validationCache;
13837 };
13838 static_assert( sizeof( ShaderModuleValidationCacheCreateInfoEXT ) == sizeof( VkShaderModuleValidationCacheCreateInfoEXT ), "struct and wrapper have different size!" );
13839
Mark Lobodzinski417d5702017-11-27 12:00:45 -070013840 struct MemoryHostPointerPropertiesEXT
13841 {
13842 MemoryHostPointerPropertiesEXT( uint32_t memoryTypeBits_ = 0 )
13843 : sType( StructureType::eMemoryHostPointerPropertiesEXT )
13844 , pNext( nullptr )
13845 , memoryTypeBits( memoryTypeBits_ )
13846 {
13847 }
13848
13849 MemoryHostPointerPropertiesEXT( VkMemoryHostPointerPropertiesEXT const & rhs )
13850 {
13851 memcpy( this, &rhs, sizeof( MemoryHostPointerPropertiesEXT ) );
13852 }
13853
13854 MemoryHostPointerPropertiesEXT& operator=( VkMemoryHostPointerPropertiesEXT const & rhs )
13855 {
13856 memcpy( this, &rhs, sizeof( MemoryHostPointerPropertiesEXT ) );
13857 return *this;
13858 }
13859 MemoryHostPointerPropertiesEXT& setPNext( void* pNext_ )
13860 {
13861 pNext = pNext_;
13862 return *this;
13863 }
13864
13865 MemoryHostPointerPropertiesEXT& setMemoryTypeBits( uint32_t memoryTypeBits_ )
13866 {
13867 memoryTypeBits = memoryTypeBits_;
13868 return *this;
13869 }
13870
13871 operator const VkMemoryHostPointerPropertiesEXT&() const
13872 {
13873 return *reinterpret_cast<const VkMemoryHostPointerPropertiesEXT*>(this);
13874 }
13875
13876 bool operator==( MemoryHostPointerPropertiesEXT const& rhs ) const
13877 {
13878 return ( sType == rhs.sType )
13879 && ( pNext == rhs.pNext )
13880 && ( memoryTypeBits == rhs.memoryTypeBits );
13881 }
13882
13883 bool operator!=( MemoryHostPointerPropertiesEXT const& rhs ) const
13884 {
13885 return !operator==( rhs );
13886 }
13887
13888 private:
13889 StructureType sType;
13890
13891 public:
13892 void* pNext;
13893 uint32_t memoryTypeBits;
13894 };
13895 static_assert( sizeof( MemoryHostPointerPropertiesEXT ) == sizeof( VkMemoryHostPointerPropertiesEXT ), "struct and wrapper have different size!" );
13896
13897 struct PhysicalDeviceExternalMemoryHostPropertiesEXT
13898 {
13899 PhysicalDeviceExternalMemoryHostPropertiesEXT( DeviceSize minImportedHostPointerAlignment_ = 0 )
13900 : sType( StructureType::ePhysicalDeviceExternalMemoryHostPropertiesEXT )
13901 , pNext( nullptr )
13902 , minImportedHostPointerAlignment( minImportedHostPointerAlignment_ )
13903 {
13904 }
13905
13906 PhysicalDeviceExternalMemoryHostPropertiesEXT( VkPhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs )
13907 {
13908 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalMemoryHostPropertiesEXT ) );
13909 }
13910
13911 PhysicalDeviceExternalMemoryHostPropertiesEXT& operator=( VkPhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs )
13912 {
13913 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalMemoryHostPropertiesEXT ) );
13914 return *this;
13915 }
13916 PhysicalDeviceExternalMemoryHostPropertiesEXT& setPNext( void* pNext_ )
13917 {
13918 pNext = pNext_;
13919 return *this;
13920 }
13921
13922 PhysicalDeviceExternalMemoryHostPropertiesEXT& setMinImportedHostPointerAlignment( DeviceSize minImportedHostPointerAlignment_ )
13923 {
13924 minImportedHostPointerAlignment = minImportedHostPointerAlignment_;
13925 return *this;
13926 }
13927
13928 operator const VkPhysicalDeviceExternalMemoryHostPropertiesEXT&() const
13929 {
13930 return *reinterpret_cast<const VkPhysicalDeviceExternalMemoryHostPropertiesEXT*>(this);
13931 }
13932
13933 bool operator==( PhysicalDeviceExternalMemoryHostPropertiesEXT const& rhs ) const
13934 {
13935 return ( sType == rhs.sType )
13936 && ( pNext == rhs.pNext )
13937 && ( minImportedHostPointerAlignment == rhs.minImportedHostPointerAlignment );
13938 }
13939
13940 bool operator!=( PhysicalDeviceExternalMemoryHostPropertiesEXT const& rhs ) const
13941 {
13942 return !operator==( rhs );
13943 }
13944
13945 private:
13946 StructureType sType;
13947
13948 public:
13949 void* pNext;
13950 DeviceSize minImportedHostPointerAlignment;
13951 };
13952 static_assert( sizeof( PhysicalDeviceExternalMemoryHostPropertiesEXT ) == sizeof( VkPhysicalDeviceExternalMemoryHostPropertiesEXT ), "struct and wrapper have different size!" );
13953
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013954 enum class SubpassContents
13955 {
13956 eInline = VK_SUBPASS_CONTENTS_INLINE,
13957 eSecondaryCommandBuffers = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS
13958 };
13959
13960 struct PresentInfoKHR
13961 {
13962 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 )
13963 : sType( StructureType::ePresentInfoKHR )
13964 , pNext( nullptr )
13965 , waitSemaphoreCount( waitSemaphoreCount_ )
13966 , pWaitSemaphores( pWaitSemaphores_ )
13967 , swapchainCount( swapchainCount_ )
13968 , pSwapchains( pSwapchains_ )
13969 , pImageIndices( pImageIndices_ )
13970 , pResults( pResults_ )
13971 {
13972 }
13973
13974 PresentInfoKHR( VkPresentInfoKHR const & rhs )
13975 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013976 memcpy( this, &rhs, sizeof( PresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013977 }
13978
13979 PresentInfoKHR& operator=( VkPresentInfoKHR const & rhs )
13980 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013981 memcpy( this, &rhs, sizeof( PresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013982 return *this;
13983 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013984 PresentInfoKHR& setPNext( const void* pNext_ )
13985 {
13986 pNext = pNext_;
13987 return *this;
13988 }
13989
13990 PresentInfoKHR& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
13991 {
13992 waitSemaphoreCount = waitSemaphoreCount_;
13993 return *this;
13994 }
13995
13996 PresentInfoKHR& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
13997 {
13998 pWaitSemaphores = pWaitSemaphores_;
13999 return *this;
14000 }
14001
14002 PresentInfoKHR& setSwapchainCount( uint32_t swapchainCount_ )
14003 {
14004 swapchainCount = swapchainCount_;
14005 return *this;
14006 }
14007
14008 PresentInfoKHR& setPSwapchains( const SwapchainKHR* pSwapchains_ )
14009 {
14010 pSwapchains = pSwapchains_;
14011 return *this;
14012 }
14013
14014 PresentInfoKHR& setPImageIndices( const uint32_t* pImageIndices_ )
14015 {
14016 pImageIndices = pImageIndices_;
14017 return *this;
14018 }
14019
14020 PresentInfoKHR& setPResults( Result* pResults_ )
14021 {
14022 pResults = pResults_;
14023 return *this;
14024 }
14025
14026 operator const VkPresentInfoKHR&() const
14027 {
14028 return *reinterpret_cast<const VkPresentInfoKHR*>(this);
14029 }
14030
14031 bool operator==( PresentInfoKHR const& rhs ) const
14032 {
14033 return ( sType == rhs.sType )
14034 && ( pNext == rhs.pNext )
14035 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
14036 && ( pWaitSemaphores == rhs.pWaitSemaphores )
14037 && ( swapchainCount == rhs.swapchainCount )
14038 && ( pSwapchains == rhs.pSwapchains )
14039 && ( pImageIndices == rhs.pImageIndices )
14040 && ( pResults == rhs.pResults );
14041 }
14042
14043 bool operator!=( PresentInfoKHR const& rhs ) const
14044 {
14045 return !operator==( rhs );
14046 }
14047
14048 private:
14049 StructureType sType;
14050
14051 public:
14052 const void* pNext;
14053 uint32_t waitSemaphoreCount;
14054 const Semaphore* pWaitSemaphores;
14055 uint32_t swapchainCount;
14056 const SwapchainKHR* pSwapchains;
14057 const uint32_t* pImageIndices;
14058 Result* pResults;
14059 };
14060 static_assert( sizeof( PresentInfoKHR ) == sizeof( VkPresentInfoKHR ), "struct and wrapper have different size!" );
14061
14062 enum class DynamicState
14063 {
14064 eViewport = VK_DYNAMIC_STATE_VIEWPORT,
14065 eScissor = VK_DYNAMIC_STATE_SCISSOR,
14066 eLineWidth = VK_DYNAMIC_STATE_LINE_WIDTH,
14067 eDepthBias = VK_DYNAMIC_STATE_DEPTH_BIAS,
14068 eBlendConstants = VK_DYNAMIC_STATE_BLEND_CONSTANTS,
14069 eDepthBounds = VK_DYNAMIC_STATE_DEPTH_BOUNDS,
14070 eStencilCompareMask = VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK,
14071 eStencilWriteMask = VK_DYNAMIC_STATE_STENCIL_WRITE_MASK,
Mark Young0f183a82017-02-28 09:58:04 -070014072 eStencilReference = VK_DYNAMIC_STATE_STENCIL_REFERENCE,
14073 eViewportWScalingNV = VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060014074 eDiscardRectangleEXT = VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT,
14075 eSampleLocationsEXT = VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014076 };
14077
14078 struct PipelineDynamicStateCreateInfo
14079 {
14080 PipelineDynamicStateCreateInfo( PipelineDynamicStateCreateFlags flags_ = PipelineDynamicStateCreateFlags(), uint32_t dynamicStateCount_ = 0, const DynamicState* pDynamicStates_ = nullptr )
14081 : sType( StructureType::ePipelineDynamicStateCreateInfo )
14082 , pNext( nullptr )
14083 , flags( flags_ )
14084 , dynamicStateCount( dynamicStateCount_ )
14085 , pDynamicStates( pDynamicStates_ )
14086 {
14087 }
14088
14089 PipelineDynamicStateCreateInfo( VkPipelineDynamicStateCreateInfo const & rhs )
14090 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014091 memcpy( this, &rhs, sizeof( PipelineDynamicStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014092 }
14093
14094 PipelineDynamicStateCreateInfo& operator=( VkPipelineDynamicStateCreateInfo const & rhs )
14095 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014096 memcpy( this, &rhs, sizeof( PipelineDynamicStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014097 return *this;
14098 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014099 PipelineDynamicStateCreateInfo& setPNext( const void* pNext_ )
14100 {
14101 pNext = pNext_;
14102 return *this;
14103 }
14104
14105 PipelineDynamicStateCreateInfo& setFlags( PipelineDynamicStateCreateFlags flags_ )
14106 {
14107 flags = flags_;
14108 return *this;
14109 }
14110
14111 PipelineDynamicStateCreateInfo& setDynamicStateCount( uint32_t dynamicStateCount_ )
14112 {
14113 dynamicStateCount = dynamicStateCount_;
14114 return *this;
14115 }
14116
14117 PipelineDynamicStateCreateInfo& setPDynamicStates( const DynamicState* pDynamicStates_ )
14118 {
14119 pDynamicStates = pDynamicStates_;
14120 return *this;
14121 }
14122
14123 operator const VkPipelineDynamicStateCreateInfo&() const
14124 {
14125 return *reinterpret_cast<const VkPipelineDynamicStateCreateInfo*>(this);
14126 }
14127
14128 bool operator==( PipelineDynamicStateCreateInfo const& rhs ) const
14129 {
14130 return ( sType == rhs.sType )
14131 && ( pNext == rhs.pNext )
14132 && ( flags == rhs.flags )
14133 && ( dynamicStateCount == rhs.dynamicStateCount )
14134 && ( pDynamicStates == rhs.pDynamicStates );
14135 }
14136
14137 bool operator!=( PipelineDynamicStateCreateInfo const& rhs ) const
14138 {
14139 return !operator==( rhs );
14140 }
14141
14142 private:
14143 StructureType sType;
14144
14145 public:
14146 const void* pNext;
14147 PipelineDynamicStateCreateFlags flags;
14148 uint32_t dynamicStateCount;
14149 const DynamicState* pDynamicStates;
14150 };
14151 static_assert( sizeof( PipelineDynamicStateCreateInfo ) == sizeof( VkPipelineDynamicStateCreateInfo ), "struct and wrapper have different size!" );
14152
Mark Young0f183a82017-02-28 09:58:04 -070014153 enum class DescriptorUpdateTemplateTypeKHR
14154 {
14155 eDescriptorSet = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR,
14156 ePushDescriptors = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR
14157 };
14158
14159 struct DescriptorUpdateTemplateCreateInfoKHR
14160 {
14161 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 )
14162 : sType( StructureType::eDescriptorUpdateTemplateCreateInfoKHR )
14163 , pNext( nullptr )
14164 , flags( flags_ )
14165 , descriptorUpdateEntryCount( descriptorUpdateEntryCount_ )
14166 , pDescriptorUpdateEntries( pDescriptorUpdateEntries_ )
14167 , templateType( templateType_ )
14168 , descriptorSetLayout( descriptorSetLayout_ )
14169 , pipelineBindPoint( pipelineBindPoint_ )
14170 , pipelineLayout( pipelineLayout_ )
14171 , set( set_ )
14172 {
14173 }
14174
14175 DescriptorUpdateTemplateCreateInfoKHR( VkDescriptorUpdateTemplateCreateInfoKHR const & rhs )
14176 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014177 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070014178 }
14179
14180 DescriptorUpdateTemplateCreateInfoKHR& operator=( VkDescriptorUpdateTemplateCreateInfoKHR const & rhs )
14181 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014182 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070014183 return *this;
14184 }
Mark Young0f183a82017-02-28 09:58:04 -070014185 DescriptorUpdateTemplateCreateInfoKHR& setPNext( void* pNext_ )
14186 {
14187 pNext = pNext_;
14188 return *this;
14189 }
14190
14191 DescriptorUpdateTemplateCreateInfoKHR& setFlags( DescriptorUpdateTemplateCreateFlagsKHR flags_ )
14192 {
14193 flags = flags_;
14194 return *this;
14195 }
14196
14197 DescriptorUpdateTemplateCreateInfoKHR& setDescriptorUpdateEntryCount( uint32_t descriptorUpdateEntryCount_ )
14198 {
14199 descriptorUpdateEntryCount = descriptorUpdateEntryCount_;
14200 return *this;
14201 }
14202
14203 DescriptorUpdateTemplateCreateInfoKHR& setPDescriptorUpdateEntries( const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries_ )
14204 {
14205 pDescriptorUpdateEntries = pDescriptorUpdateEntries_;
14206 return *this;
14207 }
14208
14209 DescriptorUpdateTemplateCreateInfoKHR& setTemplateType( DescriptorUpdateTemplateTypeKHR templateType_ )
14210 {
14211 templateType = templateType_;
14212 return *this;
14213 }
14214
14215 DescriptorUpdateTemplateCreateInfoKHR& setDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout_ )
14216 {
14217 descriptorSetLayout = descriptorSetLayout_;
14218 return *this;
14219 }
14220
14221 DescriptorUpdateTemplateCreateInfoKHR& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
14222 {
14223 pipelineBindPoint = pipelineBindPoint_;
14224 return *this;
14225 }
14226
14227 DescriptorUpdateTemplateCreateInfoKHR& setPipelineLayout( PipelineLayout pipelineLayout_ )
14228 {
14229 pipelineLayout = pipelineLayout_;
14230 return *this;
14231 }
14232
14233 DescriptorUpdateTemplateCreateInfoKHR& setSet( uint32_t set_ )
14234 {
14235 set = set_;
14236 return *this;
14237 }
14238
14239 operator const VkDescriptorUpdateTemplateCreateInfoKHR&() const
14240 {
14241 return *reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>(this);
14242 }
14243
14244 bool operator==( DescriptorUpdateTemplateCreateInfoKHR const& rhs ) const
14245 {
14246 return ( sType == rhs.sType )
14247 && ( pNext == rhs.pNext )
14248 && ( flags == rhs.flags )
14249 && ( descriptorUpdateEntryCount == rhs.descriptorUpdateEntryCount )
14250 && ( pDescriptorUpdateEntries == rhs.pDescriptorUpdateEntries )
14251 && ( templateType == rhs.templateType )
14252 && ( descriptorSetLayout == rhs.descriptorSetLayout )
14253 && ( pipelineBindPoint == rhs.pipelineBindPoint )
14254 && ( pipelineLayout == rhs.pipelineLayout )
14255 && ( set == rhs.set );
14256 }
14257
14258 bool operator!=( DescriptorUpdateTemplateCreateInfoKHR const& rhs ) const
14259 {
14260 return !operator==( rhs );
14261 }
14262
14263 private:
14264 StructureType sType;
14265
14266 public:
14267 void* pNext;
14268 DescriptorUpdateTemplateCreateFlagsKHR flags;
14269 uint32_t descriptorUpdateEntryCount;
14270 const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries;
14271 DescriptorUpdateTemplateTypeKHR templateType;
14272 DescriptorSetLayout descriptorSetLayout;
14273 PipelineBindPoint pipelineBindPoint;
14274 PipelineLayout pipelineLayout;
14275 uint32_t set;
14276 };
14277 static_assert( sizeof( DescriptorUpdateTemplateCreateInfoKHR ) == sizeof( VkDescriptorUpdateTemplateCreateInfoKHR ), "struct and wrapper have different size!" );
14278
Mark Lobodzinski54385432017-05-15 10:27:52 -060014279 enum class ObjectType
14280 {
14281 eUnknown = VK_OBJECT_TYPE_UNKNOWN,
14282 eInstance = VK_OBJECT_TYPE_INSTANCE,
14283 ePhysicalDevice = VK_OBJECT_TYPE_PHYSICAL_DEVICE,
14284 eDevice = VK_OBJECT_TYPE_DEVICE,
14285 eQueue = VK_OBJECT_TYPE_QUEUE,
14286 eSemaphore = VK_OBJECT_TYPE_SEMAPHORE,
14287 eCommandBuffer = VK_OBJECT_TYPE_COMMAND_BUFFER,
14288 eFence = VK_OBJECT_TYPE_FENCE,
14289 eDeviceMemory = VK_OBJECT_TYPE_DEVICE_MEMORY,
14290 eBuffer = VK_OBJECT_TYPE_BUFFER,
14291 eImage = VK_OBJECT_TYPE_IMAGE,
14292 eEvent = VK_OBJECT_TYPE_EVENT,
14293 eQueryPool = VK_OBJECT_TYPE_QUERY_POOL,
14294 eBufferView = VK_OBJECT_TYPE_BUFFER_VIEW,
14295 eImageView = VK_OBJECT_TYPE_IMAGE_VIEW,
14296 eShaderModule = VK_OBJECT_TYPE_SHADER_MODULE,
14297 ePipelineCache = VK_OBJECT_TYPE_PIPELINE_CACHE,
14298 ePipelineLayout = VK_OBJECT_TYPE_PIPELINE_LAYOUT,
14299 eRenderPass = VK_OBJECT_TYPE_RENDER_PASS,
14300 ePipeline = VK_OBJECT_TYPE_PIPELINE,
14301 eDescriptorSetLayout = VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT,
14302 eSampler = VK_OBJECT_TYPE_SAMPLER,
14303 eDescriptorPool = VK_OBJECT_TYPE_DESCRIPTOR_POOL,
14304 eDescriptorSet = VK_OBJECT_TYPE_DESCRIPTOR_SET,
14305 eFramebuffer = VK_OBJECT_TYPE_FRAMEBUFFER,
14306 eCommandPool = VK_OBJECT_TYPE_COMMAND_POOL,
14307 eSurfaceKHR = VK_OBJECT_TYPE_SURFACE_KHR,
14308 eSwapchainKHR = VK_OBJECT_TYPE_SWAPCHAIN_KHR,
14309 eDisplayKHR = VK_OBJECT_TYPE_DISPLAY_KHR,
14310 eDisplayModeKHR = VK_OBJECT_TYPE_DISPLAY_MODE_KHR,
14311 eDebugReportCallbackEXT = VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT,
14312 eDescriptorUpdateTemplateKHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR,
14313 eObjectTableNVX = VK_OBJECT_TYPE_OBJECT_TABLE_NVX,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060014314 eIndirectCommandsLayoutNVX = VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX,
Lenny Komowb79f04a2017-09-18 17:07:00 -060014315 eSamplerYcbcrConversionKHR = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060014316 eValidationCacheEXT = VK_OBJECT_TYPE_VALIDATION_CACHE_EXT
Mark Lobodzinski54385432017-05-15 10:27:52 -060014317 };
14318
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014319 enum class QueueFlagBits
14320 {
14321 eGraphics = VK_QUEUE_GRAPHICS_BIT,
14322 eCompute = VK_QUEUE_COMPUTE_BIT,
14323 eTransfer = VK_QUEUE_TRANSFER_BIT,
14324 eSparseBinding = VK_QUEUE_SPARSE_BINDING_BIT
14325 };
14326
14327 using QueueFlags = Flags<QueueFlagBits, VkQueueFlags>;
14328
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014329 VULKAN_HPP_INLINE QueueFlags operator|( QueueFlagBits bit0, QueueFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014330 {
14331 return QueueFlags( bit0 ) | bit1;
14332 }
14333
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014334 VULKAN_HPP_INLINE QueueFlags operator~( QueueFlagBits bits )
14335 {
14336 return ~( QueueFlags( bits ) );
14337 }
14338
14339 template <> struct FlagTraits<QueueFlagBits>
14340 {
14341 enum
14342 {
14343 allFlags = VkFlags(QueueFlagBits::eGraphics) | VkFlags(QueueFlagBits::eCompute) | VkFlags(QueueFlagBits::eTransfer) | VkFlags(QueueFlagBits::eSparseBinding)
14344 };
14345 };
14346
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014347 struct QueueFamilyProperties
14348 {
14349 operator const VkQueueFamilyProperties&() const
14350 {
14351 return *reinterpret_cast<const VkQueueFamilyProperties*>(this);
14352 }
14353
14354 bool operator==( QueueFamilyProperties const& rhs ) const
14355 {
14356 return ( queueFlags == rhs.queueFlags )
14357 && ( queueCount == rhs.queueCount )
14358 && ( timestampValidBits == rhs.timestampValidBits )
14359 && ( minImageTransferGranularity == rhs.minImageTransferGranularity );
14360 }
14361
14362 bool operator!=( QueueFamilyProperties const& rhs ) const
14363 {
14364 return !operator==( rhs );
14365 }
14366
14367 QueueFlags queueFlags;
14368 uint32_t queueCount;
14369 uint32_t timestampValidBits;
14370 Extent3D minImageTransferGranularity;
14371 };
14372 static_assert( sizeof( QueueFamilyProperties ) == sizeof( VkQueueFamilyProperties ), "struct and wrapper have different size!" );
14373
Mark Young39389872017-01-19 21:10:49 -070014374 struct QueueFamilyProperties2KHR
14375 {
14376 operator const VkQueueFamilyProperties2KHR&() const
14377 {
14378 return *reinterpret_cast<const VkQueueFamilyProperties2KHR*>(this);
14379 }
14380
14381 bool operator==( QueueFamilyProperties2KHR const& rhs ) const
14382 {
14383 return ( sType == rhs.sType )
14384 && ( pNext == rhs.pNext )
14385 && ( queueFamilyProperties == rhs.queueFamilyProperties );
14386 }
14387
14388 bool operator!=( QueueFamilyProperties2KHR const& rhs ) const
14389 {
14390 return !operator==( rhs );
14391 }
14392
14393 private:
14394 StructureType sType;
14395
14396 public:
14397 void* pNext;
14398 QueueFamilyProperties queueFamilyProperties;
14399 };
14400 static_assert( sizeof( QueueFamilyProperties2KHR ) == sizeof( VkQueueFamilyProperties2KHR ), "struct and wrapper have different size!" );
14401
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014402 enum class MemoryPropertyFlagBits
14403 {
14404 eDeviceLocal = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
14405 eHostVisible = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
14406 eHostCoherent = VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
14407 eHostCached = VK_MEMORY_PROPERTY_HOST_CACHED_BIT,
14408 eLazilyAllocated = VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT
14409 };
14410
14411 using MemoryPropertyFlags = Flags<MemoryPropertyFlagBits, VkMemoryPropertyFlags>;
14412
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014413 VULKAN_HPP_INLINE MemoryPropertyFlags operator|( MemoryPropertyFlagBits bit0, MemoryPropertyFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014414 {
14415 return MemoryPropertyFlags( bit0 ) | bit1;
14416 }
14417
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014418 VULKAN_HPP_INLINE MemoryPropertyFlags operator~( MemoryPropertyFlagBits bits )
14419 {
14420 return ~( MemoryPropertyFlags( bits ) );
14421 }
14422
14423 template <> struct FlagTraits<MemoryPropertyFlagBits>
14424 {
14425 enum
14426 {
14427 allFlags = VkFlags(MemoryPropertyFlagBits::eDeviceLocal) | VkFlags(MemoryPropertyFlagBits::eHostVisible) | VkFlags(MemoryPropertyFlagBits::eHostCoherent) | VkFlags(MemoryPropertyFlagBits::eHostCached) | VkFlags(MemoryPropertyFlagBits::eLazilyAllocated)
14428 };
14429 };
14430
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014431 struct MemoryType
14432 {
14433 operator const VkMemoryType&() const
14434 {
14435 return *reinterpret_cast<const VkMemoryType*>(this);
14436 }
14437
14438 bool operator==( MemoryType const& rhs ) const
14439 {
14440 return ( propertyFlags == rhs.propertyFlags )
14441 && ( heapIndex == rhs.heapIndex );
14442 }
14443
14444 bool operator!=( MemoryType const& rhs ) const
14445 {
14446 return !operator==( rhs );
14447 }
14448
14449 MemoryPropertyFlags propertyFlags;
14450 uint32_t heapIndex;
14451 };
14452 static_assert( sizeof( MemoryType ) == sizeof( VkMemoryType ), "struct and wrapper have different size!" );
14453
14454 enum class MemoryHeapFlagBits
14455 {
Mark Young0f183a82017-02-28 09:58:04 -070014456 eDeviceLocal = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,
14457 eMultiInstanceKHX = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014458 };
14459
14460 using MemoryHeapFlags = Flags<MemoryHeapFlagBits, VkMemoryHeapFlags>;
14461
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014462 VULKAN_HPP_INLINE MemoryHeapFlags operator|( MemoryHeapFlagBits bit0, MemoryHeapFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014463 {
14464 return MemoryHeapFlags( bit0 ) | bit1;
14465 }
14466
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014467 VULKAN_HPP_INLINE MemoryHeapFlags operator~( MemoryHeapFlagBits bits )
14468 {
14469 return ~( MemoryHeapFlags( bits ) );
14470 }
14471
14472 template <> struct FlagTraits<MemoryHeapFlagBits>
14473 {
14474 enum
14475 {
Mark Young0f183a82017-02-28 09:58:04 -070014476 allFlags = VkFlags(MemoryHeapFlagBits::eDeviceLocal) | VkFlags(MemoryHeapFlagBits::eMultiInstanceKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014477 };
14478 };
14479
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014480 struct MemoryHeap
14481 {
14482 operator const VkMemoryHeap&() const
14483 {
14484 return *reinterpret_cast<const VkMemoryHeap*>(this);
14485 }
14486
14487 bool operator==( MemoryHeap const& rhs ) const
14488 {
14489 return ( size == rhs.size )
14490 && ( flags == rhs.flags );
14491 }
14492
14493 bool operator!=( MemoryHeap const& rhs ) const
14494 {
14495 return !operator==( rhs );
14496 }
14497
14498 DeviceSize size;
14499 MemoryHeapFlags flags;
14500 };
14501 static_assert( sizeof( MemoryHeap ) == sizeof( VkMemoryHeap ), "struct and wrapper have different size!" );
14502
14503 struct PhysicalDeviceMemoryProperties
14504 {
14505 operator const VkPhysicalDeviceMemoryProperties&() const
14506 {
14507 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties*>(this);
14508 }
14509
14510 bool operator==( PhysicalDeviceMemoryProperties const& rhs ) const
14511 {
14512 return ( memoryTypeCount == rhs.memoryTypeCount )
14513 && ( memcmp( memoryTypes, rhs.memoryTypes, VK_MAX_MEMORY_TYPES * sizeof( MemoryType ) ) == 0 )
14514 && ( memoryHeapCount == rhs.memoryHeapCount )
14515 && ( memcmp( memoryHeaps, rhs.memoryHeaps, VK_MAX_MEMORY_HEAPS * sizeof( MemoryHeap ) ) == 0 );
14516 }
14517
14518 bool operator!=( PhysicalDeviceMemoryProperties const& rhs ) const
14519 {
14520 return !operator==( rhs );
14521 }
14522
14523 uint32_t memoryTypeCount;
14524 MemoryType memoryTypes[VK_MAX_MEMORY_TYPES];
14525 uint32_t memoryHeapCount;
14526 MemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS];
14527 };
14528 static_assert( sizeof( PhysicalDeviceMemoryProperties ) == sizeof( VkPhysicalDeviceMemoryProperties ), "struct and wrapper have different size!" );
14529
Mark Young39389872017-01-19 21:10:49 -070014530 struct PhysicalDeviceMemoryProperties2KHR
14531 {
14532 operator const VkPhysicalDeviceMemoryProperties2KHR&() const
14533 {
14534 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties2KHR*>(this);
14535 }
14536
14537 bool operator==( PhysicalDeviceMemoryProperties2KHR const& rhs ) const
14538 {
14539 return ( sType == rhs.sType )
14540 && ( pNext == rhs.pNext )
14541 && ( memoryProperties == rhs.memoryProperties );
14542 }
14543
14544 bool operator!=( PhysicalDeviceMemoryProperties2KHR const& rhs ) const
14545 {
14546 return !operator==( rhs );
14547 }
14548
14549 private:
14550 StructureType sType;
14551
14552 public:
14553 void* pNext;
14554 PhysicalDeviceMemoryProperties memoryProperties;
14555 };
14556 static_assert( sizeof( PhysicalDeviceMemoryProperties2KHR ) == sizeof( VkPhysicalDeviceMemoryProperties2KHR ), "struct and wrapper have different size!" );
14557
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014558 enum class AccessFlagBits
14559 {
14560 eIndirectCommandRead = VK_ACCESS_INDIRECT_COMMAND_READ_BIT,
14561 eIndexRead = VK_ACCESS_INDEX_READ_BIT,
14562 eVertexAttributeRead = VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,
14563 eUniformRead = VK_ACCESS_UNIFORM_READ_BIT,
14564 eInputAttachmentRead = VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,
14565 eShaderRead = VK_ACCESS_SHADER_READ_BIT,
14566 eShaderWrite = VK_ACCESS_SHADER_WRITE_BIT,
14567 eColorAttachmentRead = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT,
14568 eColorAttachmentWrite = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
14569 eDepthStencilAttachmentRead = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT,
14570 eDepthStencilAttachmentWrite = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
14571 eTransferRead = VK_ACCESS_TRANSFER_READ_BIT,
14572 eTransferWrite = VK_ACCESS_TRANSFER_WRITE_BIT,
14573 eHostRead = VK_ACCESS_HOST_READ_BIT,
14574 eHostWrite = VK_ACCESS_HOST_WRITE_BIT,
14575 eMemoryRead = VK_ACCESS_MEMORY_READ_BIT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014576 eMemoryWrite = VK_ACCESS_MEMORY_WRITE_BIT,
14577 eCommandProcessReadNVX = VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060014578 eCommandProcessWriteNVX = VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX,
14579 eColorAttachmentReadNoncoherentEXT = VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014580 };
14581
14582 using AccessFlags = Flags<AccessFlagBits, VkAccessFlags>;
14583
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014584 VULKAN_HPP_INLINE AccessFlags operator|( AccessFlagBits bit0, AccessFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014585 {
14586 return AccessFlags( bit0 ) | bit1;
14587 }
14588
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014589 VULKAN_HPP_INLINE AccessFlags operator~( AccessFlagBits bits )
14590 {
14591 return ~( AccessFlags( bits ) );
14592 }
14593
14594 template <> struct FlagTraits<AccessFlagBits>
14595 {
14596 enum
14597 {
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060014598 allFlags = VkFlags(AccessFlagBits::eIndirectCommandRead) | VkFlags(AccessFlagBits::eIndexRead) | VkFlags(AccessFlagBits::eVertexAttributeRead) | VkFlags(AccessFlagBits::eUniformRead) | VkFlags(AccessFlagBits::eInputAttachmentRead) | VkFlags(AccessFlagBits::eShaderRead) | VkFlags(AccessFlagBits::eShaderWrite) | VkFlags(AccessFlagBits::eColorAttachmentRead) | VkFlags(AccessFlagBits::eColorAttachmentWrite) | VkFlags(AccessFlagBits::eDepthStencilAttachmentRead) | VkFlags(AccessFlagBits::eDepthStencilAttachmentWrite) | VkFlags(AccessFlagBits::eTransferRead) | VkFlags(AccessFlagBits::eTransferWrite) | VkFlags(AccessFlagBits::eHostRead) | VkFlags(AccessFlagBits::eHostWrite) | VkFlags(AccessFlagBits::eMemoryRead) | VkFlags(AccessFlagBits::eMemoryWrite) | VkFlags(AccessFlagBits::eCommandProcessReadNVX) | VkFlags(AccessFlagBits::eCommandProcessWriteNVX) | VkFlags(AccessFlagBits::eColorAttachmentReadNoncoherentEXT)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014599 };
14600 };
14601
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014602 struct MemoryBarrier
14603 {
14604 MemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags() )
14605 : sType( StructureType::eMemoryBarrier )
14606 , pNext( nullptr )
14607 , srcAccessMask( srcAccessMask_ )
14608 , dstAccessMask( dstAccessMask_ )
14609 {
14610 }
14611
14612 MemoryBarrier( VkMemoryBarrier const & rhs )
14613 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014614 memcpy( this, &rhs, sizeof( MemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014615 }
14616
14617 MemoryBarrier& operator=( VkMemoryBarrier const & rhs )
14618 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014619 memcpy( this, &rhs, sizeof( MemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014620 return *this;
14621 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014622 MemoryBarrier& setPNext( const void* pNext_ )
14623 {
14624 pNext = pNext_;
14625 return *this;
14626 }
14627
14628 MemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
14629 {
14630 srcAccessMask = srcAccessMask_;
14631 return *this;
14632 }
14633
14634 MemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
14635 {
14636 dstAccessMask = dstAccessMask_;
14637 return *this;
14638 }
14639
14640 operator const VkMemoryBarrier&() const
14641 {
14642 return *reinterpret_cast<const VkMemoryBarrier*>(this);
14643 }
14644
14645 bool operator==( MemoryBarrier const& rhs ) const
14646 {
14647 return ( sType == rhs.sType )
14648 && ( pNext == rhs.pNext )
14649 && ( srcAccessMask == rhs.srcAccessMask )
14650 && ( dstAccessMask == rhs.dstAccessMask );
14651 }
14652
14653 bool operator!=( MemoryBarrier const& rhs ) const
14654 {
14655 return !operator==( rhs );
14656 }
14657
14658 private:
14659 StructureType sType;
14660
14661 public:
14662 const void* pNext;
14663 AccessFlags srcAccessMask;
14664 AccessFlags dstAccessMask;
14665 };
14666 static_assert( sizeof( MemoryBarrier ) == sizeof( VkMemoryBarrier ), "struct and wrapper have different size!" );
14667
14668 struct BufferMemoryBarrier
14669 {
14670 BufferMemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), uint32_t srcQueueFamilyIndex_ = 0, uint32_t dstQueueFamilyIndex_ = 0, Buffer buffer_ = Buffer(), DeviceSize offset_ = 0, DeviceSize size_ = 0 )
14671 : sType( StructureType::eBufferMemoryBarrier )
14672 , pNext( nullptr )
14673 , srcAccessMask( srcAccessMask_ )
14674 , dstAccessMask( dstAccessMask_ )
14675 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
14676 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
14677 , buffer( buffer_ )
14678 , offset( offset_ )
14679 , size( size_ )
14680 {
14681 }
14682
14683 BufferMemoryBarrier( VkBufferMemoryBarrier const & rhs )
14684 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014685 memcpy( this, &rhs, sizeof( BufferMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014686 }
14687
14688 BufferMemoryBarrier& operator=( VkBufferMemoryBarrier const & rhs )
14689 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014690 memcpy( this, &rhs, sizeof( BufferMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014691 return *this;
14692 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014693 BufferMemoryBarrier& setPNext( const void* pNext_ )
14694 {
14695 pNext = pNext_;
14696 return *this;
14697 }
14698
14699 BufferMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
14700 {
14701 srcAccessMask = srcAccessMask_;
14702 return *this;
14703 }
14704
14705 BufferMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
14706 {
14707 dstAccessMask = dstAccessMask_;
14708 return *this;
14709 }
14710
14711 BufferMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
14712 {
14713 srcQueueFamilyIndex = srcQueueFamilyIndex_;
14714 return *this;
14715 }
14716
14717 BufferMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
14718 {
14719 dstQueueFamilyIndex = dstQueueFamilyIndex_;
14720 return *this;
14721 }
14722
14723 BufferMemoryBarrier& setBuffer( Buffer buffer_ )
14724 {
14725 buffer = buffer_;
14726 return *this;
14727 }
14728
14729 BufferMemoryBarrier& setOffset( DeviceSize offset_ )
14730 {
14731 offset = offset_;
14732 return *this;
14733 }
14734
14735 BufferMemoryBarrier& setSize( DeviceSize size_ )
14736 {
14737 size = size_;
14738 return *this;
14739 }
14740
14741 operator const VkBufferMemoryBarrier&() const
14742 {
14743 return *reinterpret_cast<const VkBufferMemoryBarrier*>(this);
14744 }
14745
14746 bool operator==( BufferMemoryBarrier const& rhs ) const
14747 {
14748 return ( sType == rhs.sType )
14749 && ( pNext == rhs.pNext )
14750 && ( srcAccessMask == rhs.srcAccessMask )
14751 && ( dstAccessMask == rhs.dstAccessMask )
14752 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
14753 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
14754 && ( buffer == rhs.buffer )
14755 && ( offset == rhs.offset )
14756 && ( size == rhs.size );
14757 }
14758
14759 bool operator!=( BufferMemoryBarrier const& rhs ) const
14760 {
14761 return !operator==( rhs );
14762 }
14763
14764 private:
14765 StructureType sType;
14766
14767 public:
14768 const void* pNext;
14769 AccessFlags srcAccessMask;
14770 AccessFlags dstAccessMask;
14771 uint32_t srcQueueFamilyIndex;
14772 uint32_t dstQueueFamilyIndex;
14773 Buffer buffer;
14774 DeviceSize offset;
14775 DeviceSize size;
14776 };
14777 static_assert( sizeof( BufferMemoryBarrier ) == sizeof( VkBufferMemoryBarrier ), "struct and wrapper have different size!" );
14778
14779 enum class BufferUsageFlagBits
14780 {
14781 eTransferSrc = VK_BUFFER_USAGE_TRANSFER_SRC_BIT,
14782 eTransferDst = VK_BUFFER_USAGE_TRANSFER_DST_BIT,
14783 eUniformTexelBuffer = VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT,
14784 eStorageTexelBuffer = VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT,
14785 eUniformBuffer = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
14786 eStorageBuffer = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
14787 eIndexBuffer = VK_BUFFER_USAGE_INDEX_BUFFER_BIT,
14788 eVertexBuffer = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,
14789 eIndirectBuffer = VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
14790 };
14791
14792 using BufferUsageFlags = Flags<BufferUsageFlagBits, VkBufferUsageFlags>;
14793
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014794 VULKAN_HPP_INLINE BufferUsageFlags operator|( BufferUsageFlagBits bit0, BufferUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014795 {
14796 return BufferUsageFlags( bit0 ) | bit1;
14797 }
14798
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014799 VULKAN_HPP_INLINE BufferUsageFlags operator~( BufferUsageFlagBits bits )
14800 {
14801 return ~( BufferUsageFlags( bits ) );
14802 }
14803
14804 template <> struct FlagTraits<BufferUsageFlagBits>
14805 {
14806 enum
14807 {
14808 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)
14809 };
14810 };
14811
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014812 enum class BufferCreateFlagBits
14813 {
14814 eSparseBinding = VK_BUFFER_CREATE_SPARSE_BINDING_BIT,
14815 eSparseResidency = VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT,
14816 eSparseAliased = VK_BUFFER_CREATE_SPARSE_ALIASED_BIT
14817 };
14818
14819 using BufferCreateFlags = Flags<BufferCreateFlagBits, VkBufferCreateFlags>;
14820
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014821 VULKAN_HPP_INLINE BufferCreateFlags operator|( BufferCreateFlagBits bit0, BufferCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014822 {
14823 return BufferCreateFlags( bit0 ) | bit1;
14824 }
14825
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014826 VULKAN_HPP_INLINE BufferCreateFlags operator~( BufferCreateFlagBits bits )
14827 {
14828 return ~( BufferCreateFlags( bits ) );
14829 }
14830
14831 template <> struct FlagTraits<BufferCreateFlagBits>
14832 {
14833 enum
14834 {
14835 allFlags = VkFlags(BufferCreateFlagBits::eSparseBinding) | VkFlags(BufferCreateFlagBits::eSparseResidency) | VkFlags(BufferCreateFlagBits::eSparseAliased)
14836 };
14837 };
14838
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014839 struct BufferCreateInfo
14840 {
14841 BufferCreateInfo( BufferCreateFlags flags_ = BufferCreateFlags(), DeviceSize size_ = 0, BufferUsageFlags usage_ = BufferUsageFlags(), SharingMode sharingMode_ = SharingMode::eExclusive, uint32_t queueFamilyIndexCount_ = 0, const uint32_t* pQueueFamilyIndices_ = nullptr )
14842 : sType( StructureType::eBufferCreateInfo )
14843 , pNext( nullptr )
14844 , flags( flags_ )
14845 , size( size_ )
14846 , usage( usage_ )
14847 , sharingMode( sharingMode_ )
14848 , queueFamilyIndexCount( queueFamilyIndexCount_ )
14849 , pQueueFamilyIndices( pQueueFamilyIndices_ )
14850 {
14851 }
14852
14853 BufferCreateInfo( VkBufferCreateInfo const & rhs )
14854 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014855 memcpy( this, &rhs, sizeof( BufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014856 }
14857
14858 BufferCreateInfo& operator=( VkBufferCreateInfo const & rhs )
14859 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014860 memcpy( this, &rhs, sizeof( BufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014861 return *this;
14862 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014863 BufferCreateInfo& setPNext( const void* pNext_ )
14864 {
14865 pNext = pNext_;
14866 return *this;
14867 }
14868
14869 BufferCreateInfo& setFlags( BufferCreateFlags flags_ )
14870 {
14871 flags = flags_;
14872 return *this;
14873 }
14874
14875 BufferCreateInfo& setSize( DeviceSize size_ )
14876 {
14877 size = size_;
14878 return *this;
14879 }
14880
14881 BufferCreateInfo& setUsage( BufferUsageFlags usage_ )
14882 {
14883 usage = usage_;
14884 return *this;
14885 }
14886
14887 BufferCreateInfo& setSharingMode( SharingMode sharingMode_ )
14888 {
14889 sharingMode = sharingMode_;
14890 return *this;
14891 }
14892
14893 BufferCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
14894 {
14895 queueFamilyIndexCount = queueFamilyIndexCount_;
14896 return *this;
14897 }
14898
14899 BufferCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
14900 {
14901 pQueueFamilyIndices = pQueueFamilyIndices_;
14902 return *this;
14903 }
14904
14905 operator const VkBufferCreateInfo&() const
14906 {
14907 return *reinterpret_cast<const VkBufferCreateInfo*>(this);
14908 }
14909
14910 bool operator==( BufferCreateInfo const& rhs ) const
14911 {
14912 return ( sType == rhs.sType )
14913 && ( pNext == rhs.pNext )
14914 && ( flags == rhs.flags )
14915 && ( size == rhs.size )
14916 && ( usage == rhs.usage )
14917 && ( sharingMode == rhs.sharingMode )
14918 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
14919 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices );
14920 }
14921
14922 bool operator!=( BufferCreateInfo const& rhs ) const
14923 {
14924 return !operator==( rhs );
14925 }
14926
14927 private:
14928 StructureType sType;
14929
14930 public:
14931 const void* pNext;
14932 BufferCreateFlags flags;
14933 DeviceSize size;
14934 BufferUsageFlags usage;
14935 SharingMode sharingMode;
14936 uint32_t queueFamilyIndexCount;
14937 const uint32_t* pQueueFamilyIndices;
14938 };
14939 static_assert( sizeof( BufferCreateInfo ) == sizeof( VkBufferCreateInfo ), "struct and wrapper have different size!" );
14940
14941 enum class ShaderStageFlagBits
14942 {
14943 eVertex = VK_SHADER_STAGE_VERTEX_BIT,
14944 eTessellationControl = VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,
14945 eTessellationEvaluation = VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,
14946 eGeometry = VK_SHADER_STAGE_GEOMETRY_BIT,
14947 eFragment = VK_SHADER_STAGE_FRAGMENT_BIT,
14948 eCompute = VK_SHADER_STAGE_COMPUTE_BIT,
14949 eAllGraphics = VK_SHADER_STAGE_ALL_GRAPHICS,
14950 eAll = VK_SHADER_STAGE_ALL
14951 };
14952
14953 using ShaderStageFlags = Flags<ShaderStageFlagBits, VkShaderStageFlags>;
14954
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014955 VULKAN_HPP_INLINE ShaderStageFlags operator|( ShaderStageFlagBits bit0, ShaderStageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014956 {
14957 return ShaderStageFlags( bit0 ) | bit1;
14958 }
14959
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014960 VULKAN_HPP_INLINE ShaderStageFlags operator~( ShaderStageFlagBits bits )
14961 {
14962 return ~( ShaderStageFlags( bits ) );
14963 }
14964
14965 template <> struct FlagTraits<ShaderStageFlagBits>
14966 {
14967 enum
14968 {
14969 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)
14970 };
14971 };
14972
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014973 struct DescriptorSetLayoutBinding
14974 {
14975 DescriptorSetLayoutBinding( uint32_t binding_ = 0, DescriptorType descriptorType_ = DescriptorType::eSampler, uint32_t descriptorCount_ = 0, ShaderStageFlags stageFlags_ = ShaderStageFlags(), const Sampler* pImmutableSamplers_ = nullptr )
14976 : binding( binding_ )
14977 , descriptorType( descriptorType_ )
14978 , descriptorCount( descriptorCount_ )
14979 , stageFlags( stageFlags_ )
14980 , pImmutableSamplers( pImmutableSamplers_ )
14981 {
14982 }
14983
14984 DescriptorSetLayoutBinding( VkDescriptorSetLayoutBinding const & rhs )
14985 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014986 memcpy( this, &rhs, sizeof( DescriptorSetLayoutBinding ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014987 }
14988
14989 DescriptorSetLayoutBinding& operator=( VkDescriptorSetLayoutBinding const & rhs )
14990 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014991 memcpy( this, &rhs, sizeof( DescriptorSetLayoutBinding ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014992 return *this;
14993 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014994 DescriptorSetLayoutBinding& setBinding( uint32_t binding_ )
14995 {
14996 binding = binding_;
14997 return *this;
14998 }
14999
15000 DescriptorSetLayoutBinding& setDescriptorType( DescriptorType descriptorType_ )
15001 {
15002 descriptorType = descriptorType_;
15003 return *this;
15004 }
15005
15006 DescriptorSetLayoutBinding& setDescriptorCount( uint32_t descriptorCount_ )
15007 {
15008 descriptorCount = descriptorCount_;
15009 return *this;
15010 }
15011
15012 DescriptorSetLayoutBinding& setStageFlags( ShaderStageFlags stageFlags_ )
15013 {
15014 stageFlags = stageFlags_;
15015 return *this;
15016 }
15017
15018 DescriptorSetLayoutBinding& setPImmutableSamplers( const Sampler* pImmutableSamplers_ )
15019 {
15020 pImmutableSamplers = pImmutableSamplers_;
15021 return *this;
15022 }
15023
15024 operator const VkDescriptorSetLayoutBinding&() const
15025 {
15026 return *reinterpret_cast<const VkDescriptorSetLayoutBinding*>(this);
15027 }
15028
15029 bool operator==( DescriptorSetLayoutBinding const& rhs ) const
15030 {
15031 return ( binding == rhs.binding )
15032 && ( descriptorType == rhs.descriptorType )
15033 && ( descriptorCount == rhs.descriptorCount )
15034 && ( stageFlags == rhs.stageFlags )
15035 && ( pImmutableSamplers == rhs.pImmutableSamplers );
15036 }
15037
15038 bool operator!=( DescriptorSetLayoutBinding const& rhs ) const
15039 {
15040 return !operator==( rhs );
15041 }
15042
15043 uint32_t binding;
15044 DescriptorType descriptorType;
15045 uint32_t descriptorCount;
15046 ShaderStageFlags stageFlags;
15047 const Sampler* pImmutableSamplers;
15048 };
15049 static_assert( sizeof( DescriptorSetLayoutBinding ) == sizeof( VkDescriptorSetLayoutBinding ), "struct and wrapper have different size!" );
15050
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015051 struct PipelineShaderStageCreateInfo
15052 {
15053 PipelineShaderStageCreateInfo( PipelineShaderStageCreateFlags flags_ = PipelineShaderStageCreateFlags(), ShaderStageFlagBits stage_ = ShaderStageFlagBits::eVertex, ShaderModule module_ = ShaderModule(), const char* pName_ = nullptr, const SpecializationInfo* pSpecializationInfo_ = nullptr )
15054 : sType( StructureType::ePipelineShaderStageCreateInfo )
15055 , pNext( nullptr )
15056 , flags( flags_ )
15057 , stage( stage_ )
15058 , module( module_ )
15059 , pName( pName_ )
15060 , pSpecializationInfo( pSpecializationInfo_ )
15061 {
15062 }
15063
15064 PipelineShaderStageCreateInfo( VkPipelineShaderStageCreateInfo const & rhs )
15065 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015066 memcpy( this, &rhs, sizeof( PipelineShaderStageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015067 }
15068
15069 PipelineShaderStageCreateInfo& operator=( VkPipelineShaderStageCreateInfo const & rhs )
15070 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015071 memcpy( this, &rhs, sizeof( PipelineShaderStageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015072 return *this;
15073 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015074 PipelineShaderStageCreateInfo& setPNext( const void* pNext_ )
15075 {
15076 pNext = pNext_;
15077 return *this;
15078 }
15079
15080 PipelineShaderStageCreateInfo& setFlags( PipelineShaderStageCreateFlags flags_ )
15081 {
15082 flags = flags_;
15083 return *this;
15084 }
15085
15086 PipelineShaderStageCreateInfo& setStage( ShaderStageFlagBits stage_ )
15087 {
15088 stage = stage_;
15089 return *this;
15090 }
15091
15092 PipelineShaderStageCreateInfo& setModule( ShaderModule module_ )
15093 {
15094 module = module_;
15095 return *this;
15096 }
15097
15098 PipelineShaderStageCreateInfo& setPName( const char* pName_ )
15099 {
15100 pName = pName_;
15101 return *this;
15102 }
15103
15104 PipelineShaderStageCreateInfo& setPSpecializationInfo( const SpecializationInfo* pSpecializationInfo_ )
15105 {
15106 pSpecializationInfo = pSpecializationInfo_;
15107 return *this;
15108 }
15109
15110 operator const VkPipelineShaderStageCreateInfo&() const
15111 {
15112 return *reinterpret_cast<const VkPipelineShaderStageCreateInfo*>(this);
15113 }
15114
15115 bool operator==( PipelineShaderStageCreateInfo const& rhs ) const
15116 {
15117 return ( sType == rhs.sType )
15118 && ( pNext == rhs.pNext )
15119 && ( flags == rhs.flags )
15120 && ( stage == rhs.stage )
15121 && ( module == rhs.module )
15122 && ( pName == rhs.pName )
15123 && ( pSpecializationInfo == rhs.pSpecializationInfo );
15124 }
15125
15126 bool operator!=( PipelineShaderStageCreateInfo const& rhs ) const
15127 {
15128 return !operator==( rhs );
15129 }
15130
15131 private:
15132 StructureType sType;
15133
15134 public:
15135 const void* pNext;
15136 PipelineShaderStageCreateFlags flags;
15137 ShaderStageFlagBits stage;
15138 ShaderModule module;
15139 const char* pName;
15140 const SpecializationInfo* pSpecializationInfo;
15141 };
15142 static_assert( sizeof( PipelineShaderStageCreateInfo ) == sizeof( VkPipelineShaderStageCreateInfo ), "struct and wrapper have different size!" );
15143
15144 struct PushConstantRange
15145 {
15146 PushConstantRange( ShaderStageFlags stageFlags_ = ShaderStageFlags(), uint32_t offset_ = 0, uint32_t size_ = 0 )
15147 : stageFlags( stageFlags_ )
15148 , offset( offset_ )
15149 , size( size_ )
15150 {
15151 }
15152
15153 PushConstantRange( VkPushConstantRange const & rhs )
15154 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015155 memcpy( this, &rhs, sizeof( PushConstantRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015156 }
15157
15158 PushConstantRange& operator=( VkPushConstantRange const & rhs )
15159 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015160 memcpy( this, &rhs, sizeof( PushConstantRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015161 return *this;
15162 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015163 PushConstantRange& setStageFlags( ShaderStageFlags stageFlags_ )
15164 {
15165 stageFlags = stageFlags_;
15166 return *this;
15167 }
15168
15169 PushConstantRange& setOffset( uint32_t offset_ )
15170 {
15171 offset = offset_;
15172 return *this;
15173 }
15174
15175 PushConstantRange& setSize( uint32_t size_ )
15176 {
15177 size = size_;
15178 return *this;
15179 }
15180
15181 operator const VkPushConstantRange&() const
15182 {
15183 return *reinterpret_cast<const VkPushConstantRange*>(this);
15184 }
15185
15186 bool operator==( PushConstantRange const& rhs ) const
15187 {
15188 return ( stageFlags == rhs.stageFlags )
15189 && ( offset == rhs.offset )
15190 && ( size == rhs.size );
15191 }
15192
15193 bool operator!=( PushConstantRange const& rhs ) const
15194 {
15195 return !operator==( rhs );
15196 }
15197
15198 ShaderStageFlags stageFlags;
15199 uint32_t offset;
15200 uint32_t size;
15201 };
15202 static_assert( sizeof( PushConstantRange ) == sizeof( VkPushConstantRange ), "struct and wrapper have different size!" );
15203
15204 struct PipelineLayoutCreateInfo
15205 {
15206 PipelineLayoutCreateInfo( PipelineLayoutCreateFlags flags_ = PipelineLayoutCreateFlags(), uint32_t setLayoutCount_ = 0, const DescriptorSetLayout* pSetLayouts_ = nullptr, uint32_t pushConstantRangeCount_ = 0, const PushConstantRange* pPushConstantRanges_ = nullptr )
15207 : sType( StructureType::ePipelineLayoutCreateInfo )
15208 , pNext( nullptr )
15209 , flags( flags_ )
15210 , setLayoutCount( setLayoutCount_ )
15211 , pSetLayouts( pSetLayouts_ )
15212 , pushConstantRangeCount( pushConstantRangeCount_ )
15213 , pPushConstantRanges( pPushConstantRanges_ )
15214 {
15215 }
15216
15217 PipelineLayoutCreateInfo( VkPipelineLayoutCreateInfo const & rhs )
15218 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015219 memcpy( this, &rhs, sizeof( PipelineLayoutCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015220 }
15221
15222 PipelineLayoutCreateInfo& operator=( VkPipelineLayoutCreateInfo const & rhs )
15223 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015224 memcpy( this, &rhs, sizeof( PipelineLayoutCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015225 return *this;
15226 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015227 PipelineLayoutCreateInfo& setPNext( const void* pNext_ )
15228 {
15229 pNext = pNext_;
15230 return *this;
15231 }
15232
15233 PipelineLayoutCreateInfo& setFlags( PipelineLayoutCreateFlags flags_ )
15234 {
15235 flags = flags_;
15236 return *this;
15237 }
15238
15239 PipelineLayoutCreateInfo& setSetLayoutCount( uint32_t setLayoutCount_ )
15240 {
15241 setLayoutCount = setLayoutCount_;
15242 return *this;
15243 }
15244
15245 PipelineLayoutCreateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
15246 {
15247 pSetLayouts = pSetLayouts_;
15248 return *this;
15249 }
15250
15251 PipelineLayoutCreateInfo& setPushConstantRangeCount( uint32_t pushConstantRangeCount_ )
15252 {
15253 pushConstantRangeCount = pushConstantRangeCount_;
15254 return *this;
15255 }
15256
15257 PipelineLayoutCreateInfo& setPPushConstantRanges( const PushConstantRange* pPushConstantRanges_ )
15258 {
15259 pPushConstantRanges = pPushConstantRanges_;
15260 return *this;
15261 }
15262
15263 operator const VkPipelineLayoutCreateInfo&() const
15264 {
15265 return *reinterpret_cast<const VkPipelineLayoutCreateInfo*>(this);
15266 }
15267
15268 bool operator==( PipelineLayoutCreateInfo const& rhs ) const
15269 {
15270 return ( sType == rhs.sType )
15271 && ( pNext == rhs.pNext )
15272 && ( flags == rhs.flags )
15273 && ( setLayoutCount == rhs.setLayoutCount )
15274 && ( pSetLayouts == rhs.pSetLayouts )
15275 && ( pushConstantRangeCount == rhs.pushConstantRangeCount )
15276 && ( pPushConstantRanges == rhs.pPushConstantRanges );
15277 }
15278
15279 bool operator!=( PipelineLayoutCreateInfo const& rhs ) const
15280 {
15281 return !operator==( rhs );
15282 }
15283
15284 private:
15285 StructureType sType;
15286
15287 public:
15288 const void* pNext;
15289 PipelineLayoutCreateFlags flags;
15290 uint32_t setLayoutCount;
15291 const DescriptorSetLayout* pSetLayouts;
15292 uint32_t pushConstantRangeCount;
15293 const PushConstantRange* pPushConstantRanges;
15294 };
15295 static_assert( sizeof( PipelineLayoutCreateInfo ) == sizeof( VkPipelineLayoutCreateInfo ), "struct and wrapper have different size!" );
15296
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060015297 struct ShaderStatisticsInfoAMD
15298 {
15299 operator const VkShaderStatisticsInfoAMD&() const
15300 {
15301 return *reinterpret_cast<const VkShaderStatisticsInfoAMD*>(this);
15302 }
15303
15304 bool operator==( ShaderStatisticsInfoAMD const& rhs ) const
15305 {
15306 return ( shaderStageMask == rhs.shaderStageMask )
15307 && ( resourceUsage == rhs.resourceUsage )
15308 && ( numPhysicalVgprs == rhs.numPhysicalVgprs )
15309 && ( numPhysicalSgprs == rhs.numPhysicalSgprs )
15310 && ( numAvailableVgprs == rhs.numAvailableVgprs )
15311 && ( numAvailableSgprs == rhs.numAvailableSgprs )
15312 && ( memcmp( computeWorkGroupSize, rhs.computeWorkGroupSize, 3 * sizeof( uint32_t ) ) == 0 );
15313 }
15314
15315 bool operator!=( ShaderStatisticsInfoAMD const& rhs ) const
15316 {
15317 return !operator==( rhs );
15318 }
15319
15320 ShaderStageFlags shaderStageMask;
15321 ShaderResourceUsageAMD resourceUsage;
15322 uint32_t numPhysicalVgprs;
15323 uint32_t numPhysicalSgprs;
15324 uint32_t numAvailableVgprs;
15325 uint32_t numAvailableSgprs;
15326 uint32_t computeWorkGroupSize[3];
15327 };
15328 static_assert( sizeof( ShaderStatisticsInfoAMD ) == sizeof( VkShaderStatisticsInfoAMD ), "struct and wrapper have different size!" );
15329
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015330 enum class ImageUsageFlagBits
15331 {
15332 eTransferSrc = VK_IMAGE_USAGE_TRANSFER_SRC_BIT,
15333 eTransferDst = VK_IMAGE_USAGE_TRANSFER_DST_BIT,
15334 eSampled = VK_IMAGE_USAGE_SAMPLED_BIT,
15335 eStorage = VK_IMAGE_USAGE_STORAGE_BIT,
15336 eColorAttachment = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
15337 eDepthStencilAttachment = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,
15338 eTransientAttachment = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,
15339 eInputAttachment = VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
15340 };
15341
15342 using ImageUsageFlags = Flags<ImageUsageFlagBits, VkImageUsageFlags>;
15343
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015344 VULKAN_HPP_INLINE ImageUsageFlags operator|( ImageUsageFlagBits bit0, ImageUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015345 {
15346 return ImageUsageFlags( bit0 ) | bit1;
15347 }
15348
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015349 VULKAN_HPP_INLINE ImageUsageFlags operator~( ImageUsageFlagBits bits )
15350 {
15351 return ~( ImageUsageFlags( bits ) );
15352 }
15353
15354 template <> struct FlagTraits<ImageUsageFlagBits>
15355 {
15356 enum
15357 {
15358 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)
15359 };
15360 };
15361
Mark Lobodzinski54385432017-05-15 10:27:52 -060015362 struct SharedPresentSurfaceCapabilitiesKHR
15363 {
15364 operator const VkSharedPresentSurfaceCapabilitiesKHR&() const
15365 {
15366 return *reinterpret_cast<const VkSharedPresentSurfaceCapabilitiesKHR*>(this);
15367 }
15368
15369 bool operator==( SharedPresentSurfaceCapabilitiesKHR const& rhs ) const
15370 {
15371 return ( sType == rhs.sType )
15372 && ( pNext == rhs.pNext )
15373 && ( sharedPresentSupportedUsageFlags == rhs.sharedPresentSupportedUsageFlags );
15374 }
15375
15376 bool operator!=( SharedPresentSurfaceCapabilitiesKHR const& rhs ) const
15377 {
15378 return !operator==( rhs );
15379 }
15380
15381 private:
15382 StructureType sType;
15383
15384 public:
15385 void* pNext;
15386 ImageUsageFlags sharedPresentSupportedUsageFlags;
15387 };
15388 static_assert( sizeof( SharedPresentSurfaceCapabilitiesKHR ) == sizeof( VkSharedPresentSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" );
15389
Lenny Komowb79f04a2017-09-18 17:07:00 -060015390 struct ImageViewUsageCreateInfoKHR
15391 {
15392 ImageViewUsageCreateInfoKHR( ImageUsageFlags usage_ = ImageUsageFlags() )
15393 : sType( StructureType::eImageViewUsageCreateInfoKHR )
15394 , pNext( nullptr )
15395 , usage( usage_ )
15396 {
15397 }
15398
15399 ImageViewUsageCreateInfoKHR( VkImageViewUsageCreateInfoKHR const & rhs )
15400 {
15401 memcpy( this, &rhs, sizeof( ImageViewUsageCreateInfoKHR ) );
15402 }
15403
15404 ImageViewUsageCreateInfoKHR& operator=( VkImageViewUsageCreateInfoKHR const & rhs )
15405 {
15406 memcpy( this, &rhs, sizeof( ImageViewUsageCreateInfoKHR ) );
15407 return *this;
15408 }
15409 ImageViewUsageCreateInfoKHR& setPNext( const void* pNext_ )
15410 {
15411 pNext = pNext_;
15412 return *this;
15413 }
15414
15415 ImageViewUsageCreateInfoKHR& setUsage( ImageUsageFlags usage_ )
15416 {
15417 usage = usage_;
15418 return *this;
15419 }
15420
15421 operator const VkImageViewUsageCreateInfoKHR&() const
15422 {
15423 return *reinterpret_cast<const VkImageViewUsageCreateInfoKHR*>(this);
15424 }
15425
15426 bool operator==( ImageViewUsageCreateInfoKHR const& rhs ) const
15427 {
15428 return ( sType == rhs.sType )
15429 && ( pNext == rhs.pNext )
15430 && ( usage == rhs.usage );
15431 }
15432
15433 bool operator!=( ImageViewUsageCreateInfoKHR const& rhs ) const
15434 {
15435 return !operator==( rhs );
15436 }
15437
15438 private:
15439 StructureType sType;
15440
15441 public:
15442 const void* pNext;
15443 ImageUsageFlags usage;
15444 };
15445 static_assert( sizeof( ImageViewUsageCreateInfoKHR ) == sizeof( VkImageViewUsageCreateInfoKHR ), "struct and wrapper have different size!" );
15446
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015447 enum class ImageCreateFlagBits
15448 {
15449 eSparseBinding = VK_IMAGE_CREATE_SPARSE_BINDING_BIT,
15450 eSparseResidency = VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT,
15451 eSparseAliased = VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,
15452 eMutableFormat = VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,
Mark Young39389872017-01-19 21:10:49 -070015453 eCubeCompatible = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,
Mark Young0f183a82017-02-28 09:58:04 -070015454 eBindSfrKHX = VK_IMAGE_CREATE_BIND_SFR_BIT_KHX,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060015455 e2DArrayCompatibleKHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR,
Lenny Komowb79f04a2017-09-18 17:07:00 -060015456 eBlockTexelViewCompatibleKHR = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR,
15457 eExtendedUsageKHR = VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR,
15458 eSampleLocationsCompatibleDepthEXT = VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT,
15459 eDisjointKHR = VK_IMAGE_CREATE_DISJOINT_BIT_KHR,
15460 eAliasKHR = VK_IMAGE_CREATE_ALIAS_BIT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015461 };
15462
15463 using ImageCreateFlags = Flags<ImageCreateFlagBits, VkImageCreateFlags>;
15464
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015465 VULKAN_HPP_INLINE ImageCreateFlags operator|( ImageCreateFlagBits bit0, ImageCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015466 {
15467 return ImageCreateFlags( bit0 ) | bit1;
15468 }
15469
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015470 VULKAN_HPP_INLINE ImageCreateFlags operator~( ImageCreateFlagBits bits )
15471 {
15472 return ~( ImageCreateFlags( bits ) );
15473 }
15474
15475 template <> struct FlagTraits<ImageCreateFlagBits>
15476 {
15477 enum
15478 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060015479 allFlags = VkFlags(ImageCreateFlagBits::eSparseBinding) | VkFlags(ImageCreateFlagBits::eSparseResidency) | VkFlags(ImageCreateFlagBits::eSparseAliased) | VkFlags(ImageCreateFlagBits::eMutableFormat) | VkFlags(ImageCreateFlagBits::eCubeCompatible) | VkFlags(ImageCreateFlagBits::eBindSfrKHX) | VkFlags(ImageCreateFlagBits::e2DArrayCompatibleKHR) | VkFlags(ImageCreateFlagBits::eBlockTexelViewCompatibleKHR) | VkFlags(ImageCreateFlagBits::eExtendedUsageKHR) | VkFlags(ImageCreateFlagBits::eSampleLocationsCompatibleDepthEXT) | VkFlags(ImageCreateFlagBits::eDisjointKHR) | VkFlags(ImageCreateFlagBits::eAliasKHR)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015480 };
15481 };
15482
Mark Young39389872017-01-19 21:10:49 -070015483 struct PhysicalDeviceImageFormatInfo2KHR
15484 {
15485 PhysicalDeviceImageFormatInfo2KHR( Format format_ = Format::eUndefined, ImageType type_ = ImageType::e1D, ImageTiling tiling_ = ImageTiling::eOptimal, ImageUsageFlags usage_ = ImageUsageFlags(), ImageCreateFlags flags_ = ImageCreateFlags() )
15486 : sType( StructureType::ePhysicalDeviceImageFormatInfo2KHR )
15487 , pNext( nullptr )
15488 , format( format_ )
15489 , type( type_ )
15490 , tiling( tiling_ )
15491 , usage( usage_ )
15492 , flags( flags_ )
15493 {
15494 }
15495
15496 PhysicalDeviceImageFormatInfo2KHR( VkPhysicalDeviceImageFormatInfo2KHR const & rhs )
15497 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015498 memcpy( this, &rhs, sizeof( PhysicalDeviceImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070015499 }
15500
15501 PhysicalDeviceImageFormatInfo2KHR& operator=( VkPhysicalDeviceImageFormatInfo2KHR const & rhs )
15502 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015503 memcpy( this, &rhs, sizeof( PhysicalDeviceImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070015504 return *this;
15505 }
Mark Young39389872017-01-19 21:10:49 -070015506 PhysicalDeviceImageFormatInfo2KHR& setPNext( const void* pNext_ )
15507 {
15508 pNext = pNext_;
15509 return *this;
15510 }
15511
15512 PhysicalDeviceImageFormatInfo2KHR& setFormat( Format format_ )
15513 {
15514 format = format_;
15515 return *this;
15516 }
15517
15518 PhysicalDeviceImageFormatInfo2KHR& setType( ImageType type_ )
15519 {
15520 type = type_;
15521 return *this;
15522 }
15523
15524 PhysicalDeviceImageFormatInfo2KHR& setTiling( ImageTiling tiling_ )
15525 {
15526 tiling = tiling_;
15527 return *this;
15528 }
15529
15530 PhysicalDeviceImageFormatInfo2KHR& setUsage( ImageUsageFlags usage_ )
15531 {
15532 usage = usage_;
15533 return *this;
15534 }
15535
15536 PhysicalDeviceImageFormatInfo2KHR& setFlags( ImageCreateFlags flags_ )
15537 {
15538 flags = flags_;
15539 return *this;
15540 }
15541
15542 operator const VkPhysicalDeviceImageFormatInfo2KHR&() const
15543 {
15544 return *reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>(this);
15545 }
15546
15547 bool operator==( PhysicalDeviceImageFormatInfo2KHR const& rhs ) const
15548 {
15549 return ( sType == rhs.sType )
15550 && ( pNext == rhs.pNext )
15551 && ( format == rhs.format )
15552 && ( type == rhs.type )
15553 && ( tiling == rhs.tiling )
15554 && ( usage == rhs.usage )
15555 && ( flags == rhs.flags );
15556 }
15557
15558 bool operator!=( PhysicalDeviceImageFormatInfo2KHR const& rhs ) const
15559 {
15560 return !operator==( rhs );
15561 }
15562
15563 private:
15564 StructureType sType;
15565
15566 public:
15567 const void* pNext;
15568 Format format;
15569 ImageType type;
15570 ImageTiling tiling;
15571 ImageUsageFlags usage;
15572 ImageCreateFlags flags;
15573 };
15574 static_assert( sizeof( PhysicalDeviceImageFormatInfo2KHR ) == sizeof( VkPhysicalDeviceImageFormatInfo2KHR ), "struct and wrapper have different size!" );
15575
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015576 enum class PipelineCreateFlagBits
15577 {
15578 eDisableOptimization = VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT,
15579 eAllowDerivatives = VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT,
Mark Young0f183a82017-02-28 09:58:04 -070015580 eDerivative = VK_PIPELINE_CREATE_DERIVATIVE_BIT,
15581 eViewIndexFromDeviceIndexKHX = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX,
15582 eDispatchBaseKHX = VK_PIPELINE_CREATE_DISPATCH_BASE_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015583 };
15584
15585 using PipelineCreateFlags = Flags<PipelineCreateFlagBits, VkPipelineCreateFlags>;
15586
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015587 VULKAN_HPP_INLINE PipelineCreateFlags operator|( PipelineCreateFlagBits bit0, PipelineCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015588 {
15589 return PipelineCreateFlags( bit0 ) | bit1;
15590 }
15591
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015592 VULKAN_HPP_INLINE PipelineCreateFlags operator~( PipelineCreateFlagBits bits )
15593 {
15594 return ~( PipelineCreateFlags( bits ) );
15595 }
15596
15597 template <> struct FlagTraits<PipelineCreateFlagBits>
15598 {
15599 enum
15600 {
Mark Young0f183a82017-02-28 09:58:04 -070015601 allFlags = VkFlags(PipelineCreateFlagBits::eDisableOptimization) | VkFlags(PipelineCreateFlagBits::eAllowDerivatives) | VkFlags(PipelineCreateFlagBits::eDerivative) | VkFlags(PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX) | VkFlags(PipelineCreateFlagBits::eDispatchBaseKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015602 };
15603 };
15604
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015605 struct ComputePipelineCreateInfo
15606 {
15607 ComputePipelineCreateInfo( PipelineCreateFlags flags_ = PipelineCreateFlags(), PipelineShaderStageCreateInfo stage_ = PipelineShaderStageCreateInfo(), PipelineLayout layout_ = PipelineLayout(), Pipeline basePipelineHandle_ = Pipeline(), int32_t basePipelineIndex_ = 0 )
15608 : sType( StructureType::eComputePipelineCreateInfo )
15609 , pNext( nullptr )
15610 , flags( flags_ )
15611 , stage( stage_ )
15612 , layout( layout_ )
15613 , basePipelineHandle( basePipelineHandle_ )
15614 , basePipelineIndex( basePipelineIndex_ )
15615 {
15616 }
15617
15618 ComputePipelineCreateInfo( VkComputePipelineCreateInfo const & rhs )
15619 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015620 memcpy( this, &rhs, sizeof( ComputePipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015621 }
15622
15623 ComputePipelineCreateInfo& operator=( VkComputePipelineCreateInfo const & rhs )
15624 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015625 memcpy( this, &rhs, sizeof( ComputePipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015626 return *this;
15627 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015628 ComputePipelineCreateInfo& setPNext( const void* pNext_ )
15629 {
15630 pNext = pNext_;
15631 return *this;
15632 }
15633
15634 ComputePipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
15635 {
15636 flags = flags_;
15637 return *this;
15638 }
15639
15640 ComputePipelineCreateInfo& setStage( PipelineShaderStageCreateInfo stage_ )
15641 {
15642 stage = stage_;
15643 return *this;
15644 }
15645
15646 ComputePipelineCreateInfo& setLayout( PipelineLayout layout_ )
15647 {
15648 layout = layout_;
15649 return *this;
15650 }
15651
15652 ComputePipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
15653 {
15654 basePipelineHandle = basePipelineHandle_;
15655 return *this;
15656 }
15657
15658 ComputePipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
15659 {
15660 basePipelineIndex = basePipelineIndex_;
15661 return *this;
15662 }
15663
15664 operator const VkComputePipelineCreateInfo&() const
15665 {
15666 return *reinterpret_cast<const VkComputePipelineCreateInfo*>(this);
15667 }
15668
15669 bool operator==( ComputePipelineCreateInfo const& rhs ) const
15670 {
15671 return ( sType == rhs.sType )
15672 && ( pNext == rhs.pNext )
15673 && ( flags == rhs.flags )
15674 && ( stage == rhs.stage )
15675 && ( layout == rhs.layout )
15676 && ( basePipelineHandle == rhs.basePipelineHandle )
15677 && ( basePipelineIndex == rhs.basePipelineIndex );
15678 }
15679
15680 bool operator!=( ComputePipelineCreateInfo const& rhs ) const
15681 {
15682 return !operator==( rhs );
15683 }
15684
15685 private:
15686 StructureType sType;
15687
15688 public:
15689 const void* pNext;
15690 PipelineCreateFlags flags;
15691 PipelineShaderStageCreateInfo stage;
15692 PipelineLayout layout;
15693 Pipeline basePipelineHandle;
15694 int32_t basePipelineIndex;
15695 };
15696 static_assert( sizeof( ComputePipelineCreateInfo ) == sizeof( VkComputePipelineCreateInfo ), "struct and wrapper have different size!" );
15697
15698 enum class ColorComponentFlagBits
15699 {
15700 eR = VK_COLOR_COMPONENT_R_BIT,
15701 eG = VK_COLOR_COMPONENT_G_BIT,
15702 eB = VK_COLOR_COMPONENT_B_BIT,
15703 eA = VK_COLOR_COMPONENT_A_BIT
15704 };
15705
15706 using ColorComponentFlags = Flags<ColorComponentFlagBits, VkColorComponentFlags>;
15707
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015708 VULKAN_HPP_INLINE ColorComponentFlags operator|( ColorComponentFlagBits bit0, ColorComponentFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015709 {
15710 return ColorComponentFlags( bit0 ) | bit1;
15711 }
15712
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015713 VULKAN_HPP_INLINE ColorComponentFlags operator~( ColorComponentFlagBits bits )
15714 {
15715 return ~( ColorComponentFlags( bits ) );
15716 }
15717
15718 template <> struct FlagTraits<ColorComponentFlagBits>
15719 {
15720 enum
15721 {
15722 allFlags = VkFlags(ColorComponentFlagBits::eR) | VkFlags(ColorComponentFlagBits::eG) | VkFlags(ColorComponentFlagBits::eB) | VkFlags(ColorComponentFlagBits::eA)
15723 };
15724 };
15725
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015726 struct PipelineColorBlendAttachmentState
15727 {
15728 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() )
15729 : blendEnable( blendEnable_ )
15730 , srcColorBlendFactor( srcColorBlendFactor_ )
15731 , dstColorBlendFactor( dstColorBlendFactor_ )
15732 , colorBlendOp( colorBlendOp_ )
15733 , srcAlphaBlendFactor( srcAlphaBlendFactor_ )
15734 , dstAlphaBlendFactor( dstAlphaBlendFactor_ )
15735 , alphaBlendOp( alphaBlendOp_ )
15736 , colorWriteMask( colorWriteMask_ )
15737 {
15738 }
15739
15740 PipelineColorBlendAttachmentState( VkPipelineColorBlendAttachmentState const & rhs )
15741 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015742 memcpy( this, &rhs, sizeof( PipelineColorBlendAttachmentState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015743 }
15744
15745 PipelineColorBlendAttachmentState& operator=( VkPipelineColorBlendAttachmentState const & rhs )
15746 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015747 memcpy( this, &rhs, sizeof( PipelineColorBlendAttachmentState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015748 return *this;
15749 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015750 PipelineColorBlendAttachmentState& setBlendEnable( Bool32 blendEnable_ )
15751 {
15752 blendEnable = blendEnable_;
15753 return *this;
15754 }
15755
15756 PipelineColorBlendAttachmentState& setSrcColorBlendFactor( BlendFactor srcColorBlendFactor_ )
15757 {
15758 srcColorBlendFactor = srcColorBlendFactor_;
15759 return *this;
15760 }
15761
15762 PipelineColorBlendAttachmentState& setDstColorBlendFactor( BlendFactor dstColorBlendFactor_ )
15763 {
15764 dstColorBlendFactor = dstColorBlendFactor_;
15765 return *this;
15766 }
15767
15768 PipelineColorBlendAttachmentState& setColorBlendOp( BlendOp colorBlendOp_ )
15769 {
15770 colorBlendOp = colorBlendOp_;
15771 return *this;
15772 }
15773
15774 PipelineColorBlendAttachmentState& setSrcAlphaBlendFactor( BlendFactor srcAlphaBlendFactor_ )
15775 {
15776 srcAlphaBlendFactor = srcAlphaBlendFactor_;
15777 return *this;
15778 }
15779
15780 PipelineColorBlendAttachmentState& setDstAlphaBlendFactor( BlendFactor dstAlphaBlendFactor_ )
15781 {
15782 dstAlphaBlendFactor = dstAlphaBlendFactor_;
15783 return *this;
15784 }
15785
15786 PipelineColorBlendAttachmentState& setAlphaBlendOp( BlendOp alphaBlendOp_ )
15787 {
15788 alphaBlendOp = alphaBlendOp_;
15789 return *this;
15790 }
15791
15792 PipelineColorBlendAttachmentState& setColorWriteMask( ColorComponentFlags colorWriteMask_ )
15793 {
15794 colorWriteMask = colorWriteMask_;
15795 return *this;
15796 }
15797
15798 operator const VkPipelineColorBlendAttachmentState&() const
15799 {
15800 return *reinterpret_cast<const VkPipelineColorBlendAttachmentState*>(this);
15801 }
15802
15803 bool operator==( PipelineColorBlendAttachmentState const& rhs ) const
15804 {
15805 return ( blendEnable == rhs.blendEnable )
15806 && ( srcColorBlendFactor == rhs.srcColorBlendFactor )
15807 && ( dstColorBlendFactor == rhs.dstColorBlendFactor )
15808 && ( colorBlendOp == rhs.colorBlendOp )
15809 && ( srcAlphaBlendFactor == rhs.srcAlphaBlendFactor )
15810 && ( dstAlphaBlendFactor == rhs.dstAlphaBlendFactor )
15811 && ( alphaBlendOp == rhs.alphaBlendOp )
15812 && ( colorWriteMask == rhs.colorWriteMask );
15813 }
15814
15815 bool operator!=( PipelineColorBlendAttachmentState const& rhs ) const
15816 {
15817 return !operator==( rhs );
15818 }
15819
15820 Bool32 blendEnable;
15821 BlendFactor srcColorBlendFactor;
15822 BlendFactor dstColorBlendFactor;
15823 BlendOp colorBlendOp;
15824 BlendFactor srcAlphaBlendFactor;
15825 BlendFactor dstAlphaBlendFactor;
15826 BlendOp alphaBlendOp;
15827 ColorComponentFlags colorWriteMask;
15828 };
15829 static_assert( sizeof( PipelineColorBlendAttachmentState ) == sizeof( VkPipelineColorBlendAttachmentState ), "struct and wrapper have different size!" );
15830
15831 struct PipelineColorBlendStateCreateInfo
15832 {
15833 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 } } )
15834 : sType( StructureType::ePipelineColorBlendStateCreateInfo )
15835 , pNext( nullptr )
15836 , flags( flags_ )
15837 , logicOpEnable( logicOpEnable_ )
15838 , logicOp( logicOp_ )
15839 , attachmentCount( attachmentCount_ )
15840 , pAttachments( pAttachments_ )
15841 {
15842 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
15843 }
15844
15845 PipelineColorBlendStateCreateInfo( VkPipelineColorBlendStateCreateInfo const & rhs )
15846 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015847 memcpy( this, &rhs, sizeof( PipelineColorBlendStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015848 }
15849
15850 PipelineColorBlendStateCreateInfo& operator=( VkPipelineColorBlendStateCreateInfo const & rhs )
15851 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015852 memcpy( this, &rhs, sizeof( PipelineColorBlendStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015853 return *this;
15854 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015855 PipelineColorBlendStateCreateInfo& setPNext( const void* pNext_ )
15856 {
15857 pNext = pNext_;
15858 return *this;
15859 }
15860
15861 PipelineColorBlendStateCreateInfo& setFlags( PipelineColorBlendStateCreateFlags flags_ )
15862 {
15863 flags = flags_;
15864 return *this;
15865 }
15866
15867 PipelineColorBlendStateCreateInfo& setLogicOpEnable( Bool32 logicOpEnable_ )
15868 {
15869 logicOpEnable = logicOpEnable_;
15870 return *this;
15871 }
15872
15873 PipelineColorBlendStateCreateInfo& setLogicOp( LogicOp logicOp_ )
15874 {
15875 logicOp = logicOp_;
15876 return *this;
15877 }
15878
15879 PipelineColorBlendStateCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
15880 {
15881 attachmentCount = attachmentCount_;
15882 return *this;
15883 }
15884
15885 PipelineColorBlendStateCreateInfo& setPAttachments( const PipelineColorBlendAttachmentState* pAttachments_ )
15886 {
15887 pAttachments = pAttachments_;
15888 return *this;
15889 }
15890
15891 PipelineColorBlendStateCreateInfo& setBlendConstants( std::array<float,4> blendConstants_ )
15892 {
15893 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
15894 return *this;
15895 }
15896
15897 operator const VkPipelineColorBlendStateCreateInfo&() const
15898 {
15899 return *reinterpret_cast<const VkPipelineColorBlendStateCreateInfo*>(this);
15900 }
15901
15902 bool operator==( PipelineColorBlendStateCreateInfo const& rhs ) const
15903 {
15904 return ( sType == rhs.sType )
15905 && ( pNext == rhs.pNext )
15906 && ( flags == rhs.flags )
15907 && ( logicOpEnable == rhs.logicOpEnable )
15908 && ( logicOp == rhs.logicOp )
15909 && ( attachmentCount == rhs.attachmentCount )
15910 && ( pAttachments == rhs.pAttachments )
15911 && ( memcmp( blendConstants, rhs.blendConstants, 4 * sizeof( float ) ) == 0 );
15912 }
15913
15914 bool operator!=( PipelineColorBlendStateCreateInfo const& rhs ) const
15915 {
15916 return !operator==( rhs );
15917 }
15918
15919 private:
15920 StructureType sType;
15921
15922 public:
15923 const void* pNext;
15924 PipelineColorBlendStateCreateFlags flags;
15925 Bool32 logicOpEnable;
15926 LogicOp logicOp;
15927 uint32_t attachmentCount;
15928 const PipelineColorBlendAttachmentState* pAttachments;
15929 float blendConstants[4];
15930 };
15931 static_assert( sizeof( PipelineColorBlendStateCreateInfo ) == sizeof( VkPipelineColorBlendStateCreateInfo ), "struct and wrapper have different size!" );
15932
15933 enum class FenceCreateFlagBits
15934 {
15935 eSignaled = VK_FENCE_CREATE_SIGNALED_BIT
15936 };
15937
15938 using FenceCreateFlags = Flags<FenceCreateFlagBits, VkFenceCreateFlags>;
15939
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015940 VULKAN_HPP_INLINE FenceCreateFlags operator|( FenceCreateFlagBits bit0, FenceCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015941 {
15942 return FenceCreateFlags( bit0 ) | bit1;
15943 }
15944
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015945 VULKAN_HPP_INLINE FenceCreateFlags operator~( FenceCreateFlagBits bits )
15946 {
15947 return ~( FenceCreateFlags( bits ) );
15948 }
15949
15950 template <> struct FlagTraits<FenceCreateFlagBits>
15951 {
15952 enum
15953 {
15954 allFlags = VkFlags(FenceCreateFlagBits::eSignaled)
15955 };
15956 };
15957
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015958 struct FenceCreateInfo
15959 {
15960 FenceCreateInfo( FenceCreateFlags flags_ = FenceCreateFlags() )
15961 : sType( StructureType::eFenceCreateInfo )
15962 , pNext( nullptr )
15963 , flags( flags_ )
15964 {
15965 }
15966
15967 FenceCreateInfo( VkFenceCreateInfo const & rhs )
15968 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015969 memcpy( this, &rhs, sizeof( FenceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015970 }
15971
15972 FenceCreateInfo& operator=( VkFenceCreateInfo const & rhs )
15973 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015974 memcpy( this, &rhs, sizeof( FenceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015975 return *this;
15976 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015977 FenceCreateInfo& setPNext( const void* pNext_ )
15978 {
15979 pNext = pNext_;
15980 return *this;
15981 }
15982
15983 FenceCreateInfo& setFlags( FenceCreateFlags flags_ )
15984 {
15985 flags = flags_;
15986 return *this;
15987 }
15988
15989 operator const VkFenceCreateInfo&() const
15990 {
15991 return *reinterpret_cast<const VkFenceCreateInfo*>(this);
15992 }
15993
15994 bool operator==( FenceCreateInfo const& rhs ) const
15995 {
15996 return ( sType == rhs.sType )
15997 && ( pNext == rhs.pNext )
15998 && ( flags == rhs.flags );
15999 }
16000
16001 bool operator!=( FenceCreateInfo const& rhs ) const
16002 {
16003 return !operator==( rhs );
16004 }
16005
16006 private:
16007 StructureType sType;
16008
16009 public:
16010 const void* pNext;
16011 FenceCreateFlags flags;
16012 };
16013 static_assert( sizeof( FenceCreateInfo ) == sizeof( VkFenceCreateInfo ), "struct and wrapper have different size!" );
16014
16015 enum class FormatFeatureFlagBits
16016 {
16017 eSampledImage = VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
16018 eStorageImage = VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,
16019 eStorageImageAtomic = VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT,
16020 eUniformTexelBuffer = VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT,
16021 eStorageTexelBuffer = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,
16022 eStorageTexelBufferAtomic = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT,
16023 eVertexBuffer = VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,
16024 eColorAttachment = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,
16025 eColorAttachmentBlend = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
16026 eDepthStencilAttachment = VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,
16027 eBlitSrc = VK_FORMAT_FEATURE_BLIT_SRC_BIT,
16028 eBlitDst = VK_FORMAT_FEATURE_BLIT_DST_BIT,
16029 eSampledImageFilterLinear = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,
Mark Young39389872017-01-19 21:10:49 -070016030 eSampledImageFilterCubicIMG = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG,
16031 eTransferSrcKHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060016032 eTransferDstKHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR,
Lenny Komowb79f04a2017-09-18 17:07:00 -060016033 eSampledImageFilterMinmaxEXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT,
16034 eMidpointChromaSamplesKHR = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR,
16035 eSampledImageYcbcrConversionLinearFilterKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR,
16036 eSampledImageYcbcrConversionSeparateReconstructionFilterKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR,
16037 eSampledImageYcbcrConversionChromaReconstructionExplicitKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR,
16038 eSampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR,
16039 eDisjointKHR = VK_FORMAT_FEATURE_DISJOINT_BIT_KHR,
16040 eCositedChromaSamplesKHR = VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016041 };
16042
16043 using FormatFeatureFlags = Flags<FormatFeatureFlagBits, VkFormatFeatureFlags>;
16044
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016045 VULKAN_HPP_INLINE FormatFeatureFlags operator|( FormatFeatureFlagBits bit0, FormatFeatureFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016046 {
16047 return FormatFeatureFlags( bit0 ) | bit1;
16048 }
16049
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016050 VULKAN_HPP_INLINE FormatFeatureFlags operator~( FormatFeatureFlagBits bits )
16051 {
16052 return ~( FormatFeatureFlags( bits ) );
16053 }
16054
16055 template <> struct FlagTraits<FormatFeatureFlagBits>
16056 {
16057 enum
16058 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060016059 allFlags = VkFlags(FormatFeatureFlagBits::eSampledImage) | VkFlags(FormatFeatureFlagBits::eStorageImage) | VkFlags(FormatFeatureFlagBits::eStorageImageAtomic) | VkFlags(FormatFeatureFlagBits::eUniformTexelBuffer) | VkFlags(FormatFeatureFlagBits::eStorageTexelBuffer) | VkFlags(FormatFeatureFlagBits::eStorageTexelBufferAtomic) | VkFlags(FormatFeatureFlagBits::eVertexBuffer) | VkFlags(FormatFeatureFlagBits::eColorAttachment) | VkFlags(FormatFeatureFlagBits::eColorAttachmentBlend) | VkFlags(FormatFeatureFlagBits::eDepthStencilAttachment) | VkFlags(FormatFeatureFlagBits::eBlitSrc) | VkFlags(FormatFeatureFlagBits::eBlitDst) | VkFlags(FormatFeatureFlagBits::eSampledImageFilterLinear) | VkFlags(FormatFeatureFlagBits::eSampledImageFilterCubicIMG) | VkFlags(FormatFeatureFlagBits::eTransferSrcKHR) | VkFlags(FormatFeatureFlagBits::eTransferDstKHR) | VkFlags(FormatFeatureFlagBits::eSampledImageFilterMinmaxEXT) | VkFlags(FormatFeatureFlagBits::eMidpointChromaSamplesKHR) | VkFlags(FormatFeatureFlagBits::eSampledImageYcbcrConversionLinearFilterKHR) | VkFlags(FormatFeatureFlagBits::eSampledImageYcbcrConversionSeparateReconstructionFilterKHR) | VkFlags(FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitKHR) | VkFlags(FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR) | VkFlags(FormatFeatureFlagBits::eDisjointKHR) | VkFlags(FormatFeatureFlagBits::eCositedChromaSamplesKHR)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016060 };
16061 };
16062
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016063 struct FormatProperties
16064 {
16065 operator const VkFormatProperties&() const
16066 {
16067 return *reinterpret_cast<const VkFormatProperties*>(this);
16068 }
16069
16070 bool operator==( FormatProperties const& rhs ) const
16071 {
16072 return ( linearTilingFeatures == rhs.linearTilingFeatures )
16073 && ( optimalTilingFeatures == rhs.optimalTilingFeatures )
16074 && ( bufferFeatures == rhs.bufferFeatures );
16075 }
16076
16077 bool operator!=( FormatProperties const& rhs ) const
16078 {
16079 return !operator==( rhs );
16080 }
16081
16082 FormatFeatureFlags linearTilingFeatures;
16083 FormatFeatureFlags optimalTilingFeatures;
16084 FormatFeatureFlags bufferFeatures;
16085 };
16086 static_assert( sizeof( FormatProperties ) == sizeof( VkFormatProperties ), "struct and wrapper have different size!" );
16087
Mark Young39389872017-01-19 21:10:49 -070016088 struct FormatProperties2KHR
16089 {
16090 operator const VkFormatProperties2KHR&() const
16091 {
16092 return *reinterpret_cast<const VkFormatProperties2KHR*>(this);
16093 }
16094
16095 bool operator==( FormatProperties2KHR const& rhs ) const
16096 {
16097 return ( sType == rhs.sType )
16098 && ( pNext == rhs.pNext )
16099 && ( formatProperties == rhs.formatProperties );
16100 }
16101
16102 bool operator!=( FormatProperties2KHR const& rhs ) const
16103 {
16104 return !operator==( rhs );
16105 }
16106
16107 private:
16108 StructureType sType;
16109
16110 public:
16111 void* pNext;
16112 FormatProperties formatProperties;
16113 };
16114 static_assert( sizeof( FormatProperties2KHR ) == sizeof( VkFormatProperties2KHR ), "struct and wrapper have different size!" );
16115
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016116 enum class QueryControlFlagBits
16117 {
16118 ePrecise = VK_QUERY_CONTROL_PRECISE_BIT
16119 };
16120
16121 using QueryControlFlags = Flags<QueryControlFlagBits, VkQueryControlFlags>;
16122
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016123 VULKAN_HPP_INLINE QueryControlFlags operator|( QueryControlFlagBits bit0, QueryControlFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016124 {
16125 return QueryControlFlags( bit0 ) | bit1;
16126 }
16127
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016128 VULKAN_HPP_INLINE QueryControlFlags operator~( QueryControlFlagBits bits )
16129 {
16130 return ~( QueryControlFlags( bits ) );
16131 }
16132
16133 template <> struct FlagTraits<QueryControlFlagBits>
16134 {
16135 enum
16136 {
16137 allFlags = VkFlags(QueryControlFlagBits::ePrecise)
16138 };
16139 };
16140
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016141 enum class QueryResultFlagBits
16142 {
16143 e64 = VK_QUERY_RESULT_64_BIT,
16144 eWait = VK_QUERY_RESULT_WAIT_BIT,
16145 eWithAvailability = VK_QUERY_RESULT_WITH_AVAILABILITY_BIT,
16146 ePartial = VK_QUERY_RESULT_PARTIAL_BIT
16147 };
16148
16149 using QueryResultFlags = Flags<QueryResultFlagBits, VkQueryResultFlags>;
16150
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016151 VULKAN_HPP_INLINE QueryResultFlags operator|( QueryResultFlagBits bit0, QueryResultFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016152 {
16153 return QueryResultFlags( bit0 ) | bit1;
16154 }
16155
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016156 VULKAN_HPP_INLINE QueryResultFlags operator~( QueryResultFlagBits bits )
16157 {
16158 return ~( QueryResultFlags( bits ) );
16159 }
16160
16161 template <> struct FlagTraits<QueryResultFlagBits>
16162 {
16163 enum
16164 {
16165 allFlags = VkFlags(QueryResultFlagBits::e64) | VkFlags(QueryResultFlagBits::eWait) | VkFlags(QueryResultFlagBits::eWithAvailability) | VkFlags(QueryResultFlagBits::ePartial)
16166 };
16167 };
16168
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016169 enum class CommandBufferUsageFlagBits
16170 {
16171 eOneTimeSubmit = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,
16172 eRenderPassContinue = VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT,
16173 eSimultaneousUse = VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
16174 };
16175
16176 using CommandBufferUsageFlags = Flags<CommandBufferUsageFlagBits, VkCommandBufferUsageFlags>;
16177
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016178 VULKAN_HPP_INLINE CommandBufferUsageFlags operator|( CommandBufferUsageFlagBits bit0, CommandBufferUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016179 {
16180 return CommandBufferUsageFlags( bit0 ) | bit1;
16181 }
16182
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016183 VULKAN_HPP_INLINE CommandBufferUsageFlags operator~( CommandBufferUsageFlagBits bits )
16184 {
16185 return ~( CommandBufferUsageFlags( bits ) );
16186 }
16187
16188 template <> struct FlagTraits<CommandBufferUsageFlagBits>
16189 {
16190 enum
16191 {
16192 allFlags = VkFlags(CommandBufferUsageFlagBits::eOneTimeSubmit) | VkFlags(CommandBufferUsageFlagBits::eRenderPassContinue) | VkFlags(CommandBufferUsageFlagBits::eSimultaneousUse)
16193 };
16194 };
16195
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016196 enum class QueryPipelineStatisticFlagBits
16197 {
16198 eInputAssemblyVertices = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT,
16199 eInputAssemblyPrimitives = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT,
16200 eVertexShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT,
16201 eGeometryShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT,
16202 eGeometryShaderPrimitives = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT,
16203 eClippingInvocations = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT,
16204 eClippingPrimitives = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT,
16205 eFragmentShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT,
16206 eTessellationControlShaderPatches = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT,
16207 eTessellationEvaluationShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT,
16208 eComputeShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT
16209 };
16210
16211 using QueryPipelineStatisticFlags = Flags<QueryPipelineStatisticFlagBits, VkQueryPipelineStatisticFlags>;
16212
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016213 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator|( QueryPipelineStatisticFlagBits bit0, QueryPipelineStatisticFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016214 {
16215 return QueryPipelineStatisticFlags( bit0 ) | bit1;
16216 }
16217
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016218 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator~( QueryPipelineStatisticFlagBits bits )
16219 {
16220 return ~( QueryPipelineStatisticFlags( bits ) );
16221 }
16222
16223 template <> struct FlagTraits<QueryPipelineStatisticFlagBits>
16224 {
16225 enum
16226 {
16227 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)
16228 };
16229 };
16230
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016231 struct CommandBufferInheritanceInfo
16232 {
16233 CommandBufferInheritanceInfo( RenderPass renderPass_ = RenderPass(), uint32_t subpass_ = 0, Framebuffer framebuffer_ = Framebuffer(), Bool32 occlusionQueryEnable_ = 0, QueryControlFlags queryFlags_ = QueryControlFlags(), QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
16234 : sType( StructureType::eCommandBufferInheritanceInfo )
16235 , pNext( nullptr )
16236 , renderPass( renderPass_ )
16237 , subpass( subpass_ )
16238 , framebuffer( framebuffer_ )
16239 , occlusionQueryEnable( occlusionQueryEnable_ )
16240 , queryFlags( queryFlags_ )
16241 , pipelineStatistics( pipelineStatistics_ )
16242 {
16243 }
16244
16245 CommandBufferInheritanceInfo( VkCommandBufferInheritanceInfo const & rhs )
16246 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016247 memcpy( this, &rhs, sizeof( CommandBufferInheritanceInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016248 }
16249
16250 CommandBufferInheritanceInfo& operator=( VkCommandBufferInheritanceInfo const & rhs )
16251 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016252 memcpy( this, &rhs, sizeof( CommandBufferInheritanceInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016253 return *this;
16254 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016255 CommandBufferInheritanceInfo& setPNext( const void* pNext_ )
16256 {
16257 pNext = pNext_;
16258 return *this;
16259 }
16260
16261 CommandBufferInheritanceInfo& setRenderPass( RenderPass renderPass_ )
16262 {
16263 renderPass = renderPass_;
16264 return *this;
16265 }
16266
16267 CommandBufferInheritanceInfo& setSubpass( uint32_t subpass_ )
16268 {
16269 subpass = subpass_;
16270 return *this;
16271 }
16272
16273 CommandBufferInheritanceInfo& setFramebuffer( Framebuffer framebuffer_ )
16274 {
16275 framebuffer = framebuffer_;
16276 return *this;
16277 }
16278
16279 CommandBufferInheritanceInfo& setOcclusionQueryEnable( Bool32 occlusionQueryEnable_ )
16280 {
16281 occlusionQueryEnable = occlusionQueryEnable_;
16282 return *this;
16283 }
16284
16285 CommandBufferInheritanceInfo& setQueryFlags( QueryControlFlags queryFlags_ )
16286 {
16287 queryFlags = queryFlags_;
16288 return *this;
16289 }
16290
16291 CommandBufferInheritanceInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
16292 {
16293 pipelineStatistics = pipelineStatistics_;
16294 return *this;
16295 }
16296
16297 operator const VkCommandBufferInheritanceInfo&() const
16298 {
16299 return *reinterpret_cast<const VkCommandBufferInheritanceInfo*>(this);
16300 }
16301
16302 bool operator==( CommandBufferInheritanceInfo const& rhs ) const
16303 {
16304 return ( sType == rhs.sType )
16305 && ( pNext == rhs.pNext )
16306 && ( renderPass == rhs.renderPass )
16307 && ( subpass == rhs.subpass )
16308 && ( framebuffer == rhs.framebuffer )
16309 && ( occlusionQueryEnable == rhs.occlusionQueryEnable )
16310 && ( queryFlags == rhs.queryFlags )
16311 && ( pipelineStatistics == rhs.pipelineStatistics );
16312 }
16313
16314 bool operator!=( CommandBufferInheritanceInfo const& rhs ) const
16315 {
16316 return !operator==( rhs );
16317 }
16318
16319 private:
16320 StructureType sType;
16321
16322 public:
16323 const void* pNext;
16324 RenderPass renderPass;
16325 uint32_t subpass;
16326 Framebuffer framebuffer;
16327 Bool32 occlusionQueryEnable;
16328 QueryControlFlags queryFlags;
16329 QueryPipelineStatisticFlags pipelineStatistics;
16330 };
16331 static_assert( sizeof( CommandBufferInheritanceInfo ) == sizeof( VkCommandBufferInheritanceInfo ), "struct and wrapper have different size!" );
16332
16333 struct CommandBufferBeginInfo
16334 {
16335 CommandBufferBeginInfo( CommandBufferUsageFlags flags_ = CommandBufferUsageFlags(), const CommandBufferInheritanceInfo* pInheritanceInfo_ = nullptr )
16336 : sType( StructureType::eCommandBufferBeginInfo )
16337 , pNext( nullptr )
16338 , flags( flags_ )
16339 , pInheritanceInfo( pInheritanceInfo_ )
16340 {
16341 }
16342
16343 CommandBufferBeginInfo( VkCommandBufferBeginInfo const & rhs )
16344 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016345 memcpy( this, &rhs, sizeof( CommandBufferBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016346 }
16347
16348 CommandBufferBeginInfo& operator=( VkCommandBufferBeginInfo const & rhs )
16349 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016350 memcpy( this, &rhs, sizeof( CommandBufferBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016351 return *this;
16352 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016353 CommandBufferBeginInfo& setPNext( const void* pNext_ )
16354 {
16355 pNext = pNext_;
16356 return *this;
16357 }
16358
16359 CommandBufferBeginInfo& setFlags( CommandBufferUsageFlags flags_ )
16360 {
16361 flags = flags_;
16362 return *this;
16363 }
16364
16365 CommandBufferBeginInfo& setPInheritanceInfo( const CommandBufferInheritanceInfo* pInheritanceInfo_ )
16366 {
16367 pInheritanceInfo = pInheritanceInfo_;
16368 return *this;
16369 }
16370
16371 operator const VkCommandBufferBeginInfo&() const
16372 {
16373 return *reinterpret_cast<const VkCommandBufferBeginInfo*>(this);
16374 }
16375
16376 bool operator==( CommandBufferBeginInfo const& rhs ) const
16377 {
16378 return ( sType == rhs.sType )
16379 && ( pNext == rhs.pNext )
16380 && ( flags == rhs.flags )
16381 && ( pInheritanceInfo == rhs.pInheritanceInfo );
16382 }
16383
16384 bool operator!=( CommandBufferBeginInfo const& rhs ) const
16385 {
16386 return !operator==( rhs );
16387 }
16388
16389 private:
16390 StructureType sType;
16391
16392 public:
16393 const void* pNext;
16394 CommandBufferUsageFlags flags;
16395 const CommandBufferInheritanceInfo* pInheritanceInfo;
16396 };
16397 static_assert( sizeof( CommandBufferBeginInfo ) == sizeof( VkCommandBufferBeginInfo ), "struct and wrapper have different size!" );
16398
16399 struct QueryPoolCreateInfo
16400 {
16401 QueryPoolCreateInfo( QueryPoolCreateFlags flags_ = QueryPoolCreateFlags(), QueryType queryType_ = QueryType::eOcclusion, uint32_t queryCount_ = 0, QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
16402 : sType( StructureType::eQueryPoolCreateInfo )
16403 , pNext( nullptr )
16404 , flags( flags_ )
16405 , queryType( queryType_ )
16406 , queryCount( queryCount_ )
16407 , pipelineStatistics( pipelineStatistics_ )
16408 {
16409 }
16410
16411 QueryPoolCreateInfo( VkQueryPoolCreateInfo const & rhs )
16412 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016413 memcpy( this, &rhs, sizeof( QueryPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016414 }
16415
16416 QueryPoolCreateInfo& operator=( VkQueryPoolCreateInfo const & rhs )
16417 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016418 memcpy( this, &rhs, sizeof( QueryPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016419 return *this;
16420 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016421 QueryPoolCreateInfo& setPNext( const void* pNext_ )
16422 {
16423 pNext = pNext_;
16424 return *this;
16425 }
16426
16427 QueryPoolCreateInfo& setFlags( QueryPoolCreateFlags flags_ )
16428 {
16429 flags = flags_;
16430 return *this;
16431 }
16432
16433 QueryPoolCreateInfo& setQueryType( QueryType queryType_ )
16434 {
16435 queryType = queryType_;
16436 return *this;
16437 }
16438
16439 QueryPoolCreateInfo& setQueryCount( uint32_t queryCount_ )
16440 {
16441 queryCount = queryCount_;
16442 return *this;
16443 }
16444
16445 QueryPoolCreateInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
16446 {
16447 pipelineStatistics = pipelineStatistics_;
16448 return *this;
16449 }
16450
16451 operator const VkQueryPoolCreateInfo&() const
16452 {
16453 return *reinterpret_cast<const VkQueryPoolCreateInfo*>(this);
16454 }
16455
16456 bool operator==( QueryPoolCreateInfo const& rhs ) const
16457 {
16458 return ( sType == rhs.sType )
16459 && ( pNext == rhs.pNext )
16460 && ( flags == rhs.flags )
16461 && ( queryType == rhs.queryType )
16462 && ( queryCount == rhs.queryCount )
16463 && ( pipelineStatistics == rhs.pipelineStatistics );
16464 }
16465
16466 bool operator!=( QueryPoolCreateInfo const& rhs ) const
16467 {
16468 return !operator==( rhs );
16469 }
16470
16471 private:
16472 StructureType sType;
16473
16474 public:
16475 const void* pNext;
16476 QueryPoolCreateFlags flags;
16477 QueryType queryType;
16478 uint32_t queryCount;
16479 QueryPipelineStatisticFlags pipelineStatistics;
16480 };
16481 static_assert( sizeof( QueryPoolCreateInfo ) == sizeof( VkQueryPoolCreateInfo ), "struct and wrapper have different size!" );
16482
16483 enum class ImageAspectFlagBits
16484 {
16485 eColor = VK_IMAGE_ASPECT_COLOR_BIT,
16486 eDepth = VK_IMAGE_ASPECT_DEPTH_BIT,
16487 eStencil = VK_IMAGE_ASPECT_STENCIL_BIT,
Lenny Komowb79f04a2017-09-18 17:07:00 -060016488 eMetadata = VK_IMAGE_ASPECT_METADATA_BIT,
16489 ePlane0KHR = VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
16490 ePlane1KHR = VK_IMAGE_ASPECT_PLANE_1_BIT_KHR,
16491 ePlane2KHR = VK_IMAGE_ASPECT_PLANE_2_BIT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016492 };
16493
16494 using ImageAspectFlags = Flags<ImageAspectFlagBits, VkImageAspectFlags>;
16495
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016496 VULKAN_HPP_INLINE ImageAspectFlags operator|( ImageAspectFlagBits bit0, ImageAspectFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016497 {
16498 return ImageAspectFlags( bit0 ) | bit1;
16499 }
16500
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016501 VULKAN_HPP_INLINE ImageAspectFlags operator~( ImageAspectFlagBits bits )
16502 {
16503 return ~( ImageAspectFlags( bits ) );
16504 }
16505
16506 template <> struct FlagTraits<ImageAspectFlagBits>
16507 {
16508 enum
16509 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060016510 allFlags = VkFlags(ImageAspectFlagBits::eColor) | VkFlags(ImageAspectFlagBits::eDepth) | VkFlags(ImageAspectFlagBits::eStencil) | VkFlags(ImageAspectFlagBits::eMetadata) | VkFlags(ImageAspectFlagBits::ePlane0KHR) | VkFlags(ImageAspectFlagBits::ePlane1KHR) | VkFlags(ImageAspectFlagBits::ePlane2KHR)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016511 };
16512 };
16513
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016514 struct ImageSubresource
16515 {
16516 ImageSubresource( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t mipLevel_ = 0, uint32_t arrayLayer_ = 0 )
16517 : aspectMask( aspectMask_ )
16518 , mipLevel( mipLevel_ )
16519 , arrayLayer( arrayLayer_ )
16520 {
16521 }
16522
16523 ImageSubresource( VkImageSubresource const & rhs )
16524 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016525 memcpy( this, &rhs, sizeof( ImageSubresource ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016526 }
16527
16528 ImageSubresource& operator=( VkImageSubresource const & rhs )
16529 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016530 memcpy( this, &rhs, sizeof( ImageSubresource ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016531 return *this;
16532 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016533 ImageSubresource& setAspectMask( ImageAspectFlags aspectMask_ )
16534 {
16535 aspectMask = aspectMask_;
16536 return *this;
16537 }
16538
16539 ImageSubresource& setMipLevel( uint32_t mipLevel_ )
16540 {
16541 mipLevel = mipLevel_;
16542 return *this;
16543 }
16544
16545 ImageSubresource& setArrayLayer( uint32_t arrayLayer_ )
16546 {
16547 arrayLayer = arrayLayer_;
16548 return *this;
16549 }
16550
16551 operator const VkImageSubresource&() const
16552 {
16553 return *reinterpret_cast<const VkImageSubresource*>(this);
16554 }
16555
16556 bool operator==( ImageSubresource const& rhs ) const
16557 {
16558 return ( aspectMask == rhs.aspectMask )
16559 && ( mipLevel == rhs.mipLevel )
16560 && ( arrayLayer == rhs.arrayLayer );
16561 }
16562
16563 bool operator!=( ImageSubresource const& rhs ) const
16564 {
16565 return !operator==( rhs );
16566 }
16567
16568 ImageAspectFlags aspectMask;
16569 uint32_t mipLevel;
16570 uint32_t arrayLayer;
16571 };
16572 static_assert( sizeof( ImageSubresource ) == sizeof( VkImageSubresource ), "struct and wrapper have different size!" );
16573
16574 struct ImageSubresourceLayers
16575 {
16576 ImageSubresourceLayers( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t mipLevel_ = 0, uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
16577 : aspectMask( aspectMask_ )
16578 , mipLevel( mipLevel_ )
16579 , baseArrayLayer( baseArrayLayer_ )
16580 , layerCount( layerCount_ )
16581 {
16582 }
16583
16584 ImageSubresourceLayers( VkImageSubresourceLayers const & rhs )
16585 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016586 memcpy( this, &rhs, sizeof( ImageSubresourceLayers ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016587 }
16588
16589 ImageSubresourceLayers& operator=( VkImageSubresourceLayers const & rhs )
16590 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016591 memcpy( this, &rhs, sizeof( ImageSubresourceLayers ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016592 return *this;
16593 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016594 ImageSubresourceLayers& setAspectMask( ImageAspectFlags aspectMask_ )
16595 {
16596 aspectMask = aspectMask_;
16597 return *this;
16598 }
16599
16600 ImageSubresourceLayers& setMipLevel( uint32_t mipLevel_ )
16601 {
16602 mipLevel = mipLevel_;
16603 return *this;
16604 }
16605
16606 ImageSubresourceLayers& setBaseArrayLayer( uint32_t baseArrayLayer_ )
16607 {
16608 baseArrayLayer = baseArrayLayer_;
16609 return *this;
16610 }
16611
16612 ImageSubresourceLayers& setLayerCount( uint32_t layerCount_ )
16613 {
16614 layerCount = layerCount_;
16615 return *this;
16616 }
16617
16618 operator const VkImageSubresourceLayers&() const
16619 {
16620 return *reinterpret_cast<const VkImageSubresourceLayers*>(this);
16621 }
16622
16623 bool operator==( ImageSubresourceLayers const& rhs ) const
16624 {
16625 return ( aspectMask == rhs.aspectMask )
16626 && ( mipLevel == rhs.mipLevel )
16627 && ( baseArrayLayer == rhs.baseArrayLayer )
16628 && ( layerCount == rhs.layerCount );
16629 }
16630
16631 bool operator!=( ImageSubresourceLayers const& rhs ) const
16632 {
16633 return !operator==( rhs );
16634 }
16635
16636 ImageAspectFlags aspectMask;
16637 uint32_t mipLevel;
16638 uint32_t baseArrayLayer;
16639 uint32_t layerCount;
16640 };
16641 static_assert( sizeof( ImageSubresourceLayers ) == sizeof( VkImageSubresourceLayers ), "struct and wrapper have different size!" );
16642
16643 struct ImageSubresourceRange
16644 {
16645 ImageSubresourceRange( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t baseMipLevel_ = 0, uint32_t levelCount_ = 0, uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
16646 : aspectMask( aspectMask_ )
16647 , baseMipLevel( baseMipLevel_ )
16648 , levelCount( levelCount_ )
16649 , baseArrayLayer( baseArrayLayer_ )
16650 , layerCount( layerCount_ )
16651 {
16652 }
16653
16654 ImageSubresourceRange( VkImageSubresourceRange const & rhs )
16655 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016656 memcpy( this, &rhs, sizeof( ImageSubresourceRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016657 }
16658
16659 ImageSubresourceRange& operator=( VkImageSubresourceRange const & rhs )
16660 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016661 memcpy( this, &rhs, sizeof( ImageSubresourceRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016662 return *this;
16663 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016664 ImageSubresourceRange& setAspectMask( ImageAspectFlags aspectMask_ )
16665 {
16666 aspectMask = aspectMask_;
16667 return *this;
16668 }
16669
16670 ImageSubresourceRange& setBaseMipLevel( uint32_t baseMipLevel_ )
16671 {
16672 baseMipLevel = baseMipLevel_;
16673 return *this;
16674 }
16675
16676 ImageSubresourceRange& setLevelCount( uint32_t levelCount_ )
16677 {
16678 levelCount = levelCount_;
16679 return *this;
16680 }
16681
16682 ImageSubresourceRange& setBaseArrayLayer( uint32_t baseArrayLayer_ )
16683 {
16684 baseArrayLayer = baseArrayLayer_;
16685 return *this;
16686 }
16687
16688 ImageSubresourceRange& setLayerCount( uint32_t layerCount_ )
16689 {
16690 layerCount = layerCount_;
16691 return *this;
16692 }
16693
16694 operator const VkImageSubresourceRange&() const
16695 {
16696 return *reinterpret_cast<const VkImageSubresourceRange*>(this);
16697 }
16698
16699 bool operator==( ImageSubresourceRange const& rhs ) const
16700 {
16701 return ( aspectMask == rhs.aspectMask )
16702 && ( baseMipLevel == rhs.baseMipLevel )
16703 && ( levelCount == rhs.levelCount )
16704 && ( baseArrayLayer == rhs.baseArrayLayer )
16705 && ( layerCount == rhs.layerCount );
16706 }
16707
16708 bool operator!=( ImageSubresourceRange const& rhs ) const
16709 {
16710 return !operator==( rhs );
16711 }
16712
16713 ImageAspectFlags aspectMask;
16714 uint32_t baseMipLevel;
16715 uint32_t levelCount;
16716 uint32_t baseArrayLayer;
16717 uint32_t layerCount;
16718 };
16719 static_assert( sizeof( ImageSubresourceRange ) == sizeof( VkImageSubresourceRange ), "struct and wrapper have different size!" );
16720
16721 struct ImageMemoryBarrier
16722 {
16723 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() )
16724 : sType( StructureType::eImageMemoryBarrier )
16725 , pNext( nullptr )
16726 , srcAccessMask( srcAccessMask_ )
16727 , dstAccessMask( dstAccessMask_ )
16728 , oldLayout( oldLayout_ )
16729 , newLayout( newLayout_ )
16730 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
16731 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
16732 , image( image_ )
16733 , subresourceRange( subresourceRange_ )
16734 {
16735 }
16736
16737 ImageMemoryBarrier( VkImageMemoryBarrier const & rhs )
16738 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016739 memcpy( this, &rhs, sizeof( ImageMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016740 }
16741
16742 ImageMemoryBarrier& operator=( VkImageMemoryBarrier const & rhs )
16743 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016744 memcpy( this, &rhs, sizeof( ImageMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016745 return *this;
16746 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016747 ImageMemoryBarrier& setPNext( const void* pNext_ )
16748 {
16749 pNext = pNext_;
16750 return *this;
16751 }
16752
16753 ImageMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
16754 {
16755 srcAccessMask = srcAccessMask_;
16756 return *this;
16757 }
16758
16759 ImageMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
16760 {
16761 dstAccessMask = dstAccessMask_;
16762 return *this;
16763 }
16764
16765 ImageMemoryBarrier& setOldLayout( ImageLayout oldLayout_ )
16766 {
16767 oldLayout = oldLayout_;
16768 return *this;
16769 }
16770
16771 ImageMemoryBarrier& setNewLayout( ImageLayout newLayout_ )
16772 {
16773 newLayout = newLayout_;
16774 return *this;
16775 }
16776
16777 ImageMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
16778 {
16779 srcQueueFamilyIndex = srcQueueFamilyIndex_;
16780 return *this;
16781 }
16782
16783 ImageMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
16784 {
16785 dstQueueFamilyIndex = dstQueueFamilyIndex_;
16786 return *this;
16787 }
16788
16789 ImageMemoryBarrier& setImage( Image image_ )
16790 {
16791 image = image_;
16792 return *this;
16793 }
16794
16795 ImageMemoryBarrier& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
16796 {
16797 subresourceRange = subresourceRange_;
16798 return *this;
16799 }
16800
16801 operator const VkImageMemoryBarrier&() const
16802 {
16803 return *reinterpret_cast<const VkImageMemoryBarrier*>(this);
16804 }
16805
16806 bool operator==( ImageMemoryBarrier const& rhs ) const
16807 {
16808 return ( sType == rhs.sType )
16809 && ( pNext == rhs.pNext )
16810 && ( srcAccessMask == rhs.srcAccessMask )
16811 && ( dstAccessMask == rhs.dstAccessMask )
16812 && ( oldLayout == rhs.oldLayout )
16813 && ( newLayout == rhs.newLayout )
16814 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
16815 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
16816 && ( image == rhs.image )
16817 && ( subresourceRange == rhs.subresourceRange );
16818 }
16819
16820 bool operator!=( ImageMemoryBarrier const& rhs ) const
16821 {
16822 return !operator==( rhs );
16823 }
16824
16825 private:
16826 StructureType sType;
16827
16828 public:
16829 const void* pNext;
16830 AccessFlags srcAccessMask;
16831 AccessFlags dstAccessMask;
16832 ImageLayout oldLayout;
16833 ImageLayout newLayout;
16834 uint32_t srcQueueFamilyIndex;
16835 uint32_t dstQueueFamilyIndex;
16836 Image image;
16837 ImageSubresourceRange subresourceRange;
16838 };
16839 static_assert( sizeof( ImageMemoryBarrier ) == sizeof( VkImageMemoryBarrier ), "struct and wrapper have different size!" );
16840
16841 struct ImageViewCreateInfo
16842 {
16843 ImageViewCreateInfo( ImageViewCreateFlags flags_ = ImageViewCreateFlags(), Image image_ = Image(), ImageViewType viewType_ = ImageViewType::e1D, Format format_ = Format::eUndefined, ComponentMapping components_ = ComponentMapping(), ImageSubresourceRange subresourceRange_ = ImageSubresourceRange() )
16844 : sType( StructureType::eImageViewCreateInfo )
16845 , pNext( nullptr )
16846 , flags( flags_ )
16847 , image( image_ )
16848 , viewType( viewType_ )
16849 , format( format_ )
16850 , components( components_ )
16851 , subresourceRange( subresourceRange_ )
16852 {
16853 }
16854
16855 ImageViewCreateInfo( VkImageViewCreateInfo const & rhs )
16856 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016857 memcpy( this, &rhs, sizeof( ImageViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016858 }
16859
16860 ImageViewCreateInfo& operator=( VkImageViewCreateInfo const & rhs )
16861 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016862 memcpy( this, &rhs, sizeof( ImageViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016863 return *this;
16864 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016865 ImageViewCreateInfo& setPNext( const void* pNext_ )
16866 {
16867 pNext = pNext_;
16868 return *this;
16869 }
16870
16871 ImageViewCreateInfo& setFlags( ImageViewCreateFlags flags_ )
16872 {
16873 flags = flags_;
16874 return *this;
16875 }
16876
16877 ImageViewCreateInfo& setImage( Image image_ )
16878 {
16879 image = image_;
16880 return *this;
16881 }
16882
16883 ImageViewCreateInfo& setViewType( ImageViewType viewType_ )
16884 {
16885 viewType = viewType_;
16886 return *this;
16887 }
16888
16889 ImageViewCreateInfo& setFormat( Format format_ )
16890 {
16891 format = format_;
16892 return *this;
16893 }
16894
16895 ImageViewCreateInfo& setComponents( ComponentMapping components_ )
16896 {
16897 components = components_;
16898 return *this;
16899 }
16900
16901 ImageViewCreateInfo& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
16902 {
16903 subresourceRange = subresourceRange_;
16904 return *this;
16905 }
16906
16907 operator const VkImageViewCreateInfo&() const
16908 {
16909 return *reinterpret_cast<const VkImageViewCreateInfo*>(this);
16910 }
16911
16912 bool operator==( ImageViewCreateInfo const& rhs ) const
16913 {
16914 return ( sType == rhs.sType )
16915 && ( pNext == rhs.pNext )
16916 && ( flags == rhs.flags )
16917 && ( image == rhs.image )
16918 && ( viewType == rhs.viewType )
16919 && ( format == rhs.format )
16920 && ( components == rhs.components )
16921 && ( subresourceRange == rhs.subresourceRange );
16922 }
16923
16924 bool operator!=( ImageViewCreateInfo const& rhs ) const
16925 {
16926 return !operator==( rhs );
16927 }
16928
16929 private:
16930 StructureType sType;
16931
16932 public:
16933 const void* pNext;
16934 ImageViewCreateFlags flags;
16935 Image image;
16936 ImageViewType viewType;
16937 Format format;
16938 ComponentMapping components;
16939 ImageSubresourceRange subresourceRange;
16940 };
16941 static_assert( sizeof( ImageViewCreateInfo ) == sizeof( VkImageViewCreateInfo ), "struct and wrapper have different size!" );
16942
16943 struct ImageCopy
16944 {
16945 ImageCopy( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), Offset3D srcOffset_ = Offset3D(), ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), Offset3D dstOffset_ = Offset3D(), Extent3D extent_ = Extent3D() )
16946 : srcSubresource( srcSubresource_ )
16947 , srcOffset( srcOffset_ )
16948 , dstSubresource( dstSubresource_ )
16949 , dstOffset( dstOffset_ )
16950 , extent( extent_ )
16951 {
16952 }
16953
16954 ImageCopy( VkImageCopy const & rhs )
16955 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016956 memcpy( this, &rhs, sizeof( ImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016957 }
16958
16959 ImageCopy& operator=( VkImageCopy const & rhs )
16960 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016961 memcpy( this, &rhs, sizeof( ImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016962 return *this;
16963 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016964 ImageCopy& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
16965 {
16966 srcSubresource = srcSubresource_;
16967 return *this;
16968 }
16969
16970 ImageCopy& setSrcOffset( Offset3D srcOffset_ )
16971 {
16972 srcOffset = srcOffset_;
16973 return *this;
16974 }
16975
16976 ImageCopy& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
16977 {
16978 dstSubresource = dstSubresource_;
16979 return *this;
16980 }
16981
16982 ImageCopy& setDstOffset( Offset3D dstOffset_ )
16983 {
16984 dstOffset = dstOffset_;
16985 return *this;
16986 }
16987
16988 ImageCopy& setExtent( Extent3D extent_ )
16989 {
16990 extent = extent_;
16991 return *this;
16992 }
16993
16994 operator const VkImageCopy&() const
16995 {
16996 return *reinterpret_cast<const VkImageCopy*>(this);
16997 }
16998
16999 bool operator==( ImageCopy const& rhs ) const
17000 {
17001 return ( srcSubresource == rhs.srcSubresource )
17002 && ( srcOffset == rhs.srcOffset )
17003 && ( dstSubresource == rhs.dstSubresource )
17004 && ( dstOffset == rhs.dstOffset )
17005 && ( extent == rhs.extent );
17006 }
17007
17008 bool operator!=( ImageCopy const& rhs ) const
17009 {
17010 return !operator==( rhs );
17011 }
17012
17013 ImageSubresourceLayers srcSubresource;
17014 Offset3D srcOffset;
17015 ImageSubresourceLayers dstSubresource;
17016 Offset3D dstOffset;
17017 Extent3D extent;
17018 };
17019 static_assert( sizeof( ImageCopy ) == sizeof( VkImageCopy ), "struct and wrapper have different size!" );
17020
17021 struct ImageBlit
17022 {
17023 ImageBlit( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), std::array<Offset3D,2> const& srcOffsets_ = { { Offset3D(), Offset3D() } }, ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), std::array<Offset3D,2> const& dstOffsets_ = { { Offset3D(), Offset3D() } } )
17024 : srcSubresource( srcSubresource_ )
17025 , dstSubresource( dstSubresource_ )
17026 {
17027 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
17028 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
17029 }
17030
17031 ImageBlit( VkImageBlit const & rhs )
17032 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017033 memcpy( this, &rhs, sizeof( ImageBlit ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017034 }
17035
17036 ImageBlit& operator=( VkImageBlit const & rhs )
17037 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017038 memcpy( this, &rhs, sizeof( ImageBlit ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017039 return *this;
17040 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017041 ImageBlit& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
17042 {
17043 srcSubresource = srcSubresource_;
17044 return *this;
17045 }
17046
17047 ImageBlit& setSrcOffsets( std::array<Offset3D,2> srcOffsets_ )
17048 {
17049 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
17050 return *this;
17051 }
17052
17053 ImageBlit& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
17054 {
17055 dstSubresource = dstSubresource_;
17056 return *this;
17057 }
17058
17059 ImageBlit& setDstOffsets( std::array<Offset3D,2> dstOffsets_ )
17060 {
17061 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
17062 return *this;
17063 }
17064
17065 operator const VkImageBlit&() const
17066 {
17067 return *reinterpret_cast<const VkImageBlit*>(this);
17068 }
17069
17070 bool operator==( ImageBlit const& rhs ) const
17071 {
17072 return ( srcSubresource == rhs.srcSubresource )
17073 && ( memcmp( srcOffsets, rhs.srcOffsets, 2 * sizeof( Offset3D ) ) == 0 )
17074 && ( dstSubresource == rhs.dstSubresource )
17075 && ( memcmp( dstOffsets, rhs.dstOffsets, 2 * sizeof( Offset3D ) ) == 0 );
17076 }
17077
17078 bool operator!=( ImageBlit const& rhs ) const
17079 {
17080 return !operator==( rhs );
17081 }
17082
17083 ImageSubresourceLayers srcSubresource;
17084 Offset3D srcOffsets[2];
17085 ImageSubresourceLayers dstSubresource;
17086 Offset3D dstOffsets[2];
17087 };
17088 static_assert( sizeof( ImageBlit ) == sizeof( VkImageBlit ), "struct and wrapper have different size!" );
17089
17090 struct BufferImageCopy
17091 {
17092 BufferImageCopy( DeviceSize bufferOffset_ = 0, uint32_t bufferRowLength_ = 0, uint32_t bufferImageHeight_ = 0, ImageSubresourceLayers imageSubresource_ = ImageSubresourceLayers(), Offset3D imageOffset_ = Offset3D(), Extent3D imageExtent_ = Extent3D() )
17093 : bufferOffset( bufferOffset_ )
17094 , bufferRowLength( bufferRowLength_ )
17095 , bufferImageHeight( bufferImageHeight_ )
17096 , imageSubresource( imageSubresource_ )
17097 , imageOffset( imageOffset_ )
17098 , imageExtent( imageExtent_ )
17099 {
17100 }
17101
17102 BufferImageCopy( VkBufferImageCopy const & rhs )
17103 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017104 memcpy( this, &rhs, sizeof( BufferImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017105 }
17106
17107 BufferImageCopy& operator=( VkBufferImageCopy const & rhs )
17108 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017109 memcpy( this, &rhs, sizeof( BufferImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017110 return *this;
17111 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017112 BufferImageCopy& setBufferOffset( DeviceSize bufferOffset_ )
17113 {
17114 bufferOffset = bufferOffset_;
17115 return *this;
17116 }
17117
17118 BufferImageCopy& setBufferRowLength( uint32_t bufferRowLength_ )
17119 {
17120 bufferRowLength = bufferRowLength_;
17121 return *this;
17122 }
17123
17124 BufferImageCopy& setBufferImageHeight( uint32_t bufferImageHeight_ )
17125 {
17126 bufferImageHeight = bufferImageHeight_;
17127 return *this;
17128 }
17129
17130 BufferImageCopy& setImageSubresource( ImageSubresourceLayers imageSubresource_ )
17131 {
17132 imageSubresource = imageSubresource_;
17133 return *this;
17134 }
17135
17136 BufferImageCopy& setImageOffset( Offset3D imageOffset_ )
17137 {
17138 imageOffset = imageOffset_;
17139 return *this;
17140 }
17141
17142 BufferImageCopy& setImageExtent( Extent3D imageExtent_ )
17143 {
17144 imageExtent = imageExtent_;
17145 return *this;
17146 }
17147
17148 operator const VkBufferImageCopy&() const
17149 {
17150 return *reinterpret_cast<const VkBufferImageCopy*>(this);
17151 }
17152
17153 bool operator==( BufferImageCopy const& rhs ) const
17154 {
17155 return ( bufferOffset == rhs.bufferOffset )
17156 && ( bufferRowLength == rhs.bufferRowLength )
17157 && ( bufferImageHeight == rhs.bufferImageHeight )
17158 && ( imageSubresource == rhs.imageSubresource )
17159 && ( imageOffset == rhs.imageOffset )
17160 && ( imageExtent == rhs.imageExtent );
17161 }
17162
17163 bool operator!=( BufferImageCopy const& rhs ) const
17164 {
17165 return !operator==( rhs );
17166 }
17167
17168 DeviceSize bufferOffset;
17169 uint32_t bufferRowLength;
17170 uint32_t bufferImageHeight;
17171 ImageSubresourceLayers imageSubresource;
17172 Offset3D imageOffset;
17173 Extent3D imageExtent;
17174 };
17175 static_assert( sizeof( BufferImageCopy ) == sizeof( VkBufferImageCopy ), "struct and wrapper have different size!" );
17176
17177 struct ImageResolve
17178 {
17179 ImageResolve( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), Offset3D srcOffset_ = Offset3D(), ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), Offset3D dstOffset_ = Offset3D(), Extent3D extent_ = Extent3D() )
17180 : srcSubresource( srcSubresource_ )
17181 , srcOffset( srcOffset_ )
17182 , dstSubresource( dstSubresource_ )
17183 , dstOffset( dstOffset_ )
17184 , extent( extent_ )
17185 {
17186 }
17187
17188 ImageResolve( VkImageResolve const & rhs )
17189 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017190 memcpy( this, &rhs, sizeof( ImageResolve ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017191 }
17192
17193 ImageResolve& operator=( VkImageResolve const & rhs )
17194 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017195 memcpy( this, &rhs, sizeof( ImageResolve ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017196 return *this;
17197 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017198 ImageResolve& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
17199 {
17200 srcSubresource = srcSubresource_;
17201 return *this;
17202 }
17203
17204 ImageResolve& setSrcOffset( Offset3D srcOffset_ )
17205 {
17206 srcOffset = srcOffset_;
17207 return *this;
17208 }
17209
17210 ImageResolve& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
17211 {
17212 dstSubresource = dstSubresource_;
17213 return *this;
17214 }
17215
17216 ImageResolve& setDstOffset( Offset3D dstOffset_ )
17217 {
17218 dstOffset = dstOffset_;
17219 return *this;
17220 }
17221
17222 ImageResolve& setExtent( Extent3D extent_ )
17223 {
17224 extent = extent_;
17225 return *this;
17226 }
17227
17228 operator const VkImageResolve&() const
17229 {
17230 return *reinterpret_cast<const VkImageResolve*>(this);
17231 }
17232
17233 bool operator==( ImageResolve const& rhs ) const
17234 {
17235 return ( srcSubresource == rhs.srcSubresource )
17236 && ( srcOffset == rhs.srcOffset )
17237 && ( dstSubresource == rhs.dstSubresource )
17238 && ( dstOffset == rhs.dstOffset )
17239 && ( extent == rhs.extent );
17240 }
17241
17242 bool operator!=( ImageResolve const& rhs ) const
17243 {
17244 return !operator==( rhs );
17245 }
17246
17247 ImageSubresourceLayers srcSubresource;
17248 Offset3D srcOffset;
17249 ImageSubresourceLayers dstSubresource;
17250 Offset3D dstOffset;
17251 Extent3D extent;
17252 };
17253 static_assert( sizeof( ImageResolve ) == sizeof( VkImageResolve ), "struct and wrapper have different size!" );
17254
17255 struct ClearAttachment
17256 {
17257 ClearAttachment( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t colorAttachment_ = 0, ClearValue clearValue_ = ClearValue() )
17258 : aspectMask( aspectMask_ )
17259 , colorAttachment( colorAttachment_ )
17260 , clearValue( clearValue_ )
17261 {
17262 }
17263
17264 ClearAttachment( VkClearAttachment const & rhs )
17265 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017266 memcpy( this, &rhs, sizeof( ClearAttachment ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017267 }
17268
17269 ClearAttachment& operator=( VkClearAttachment const & rhs )
17270 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017271 memcpy( this, &rhs, sizeof( ClearAttachment ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017272 return *this;
17273 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017274 ClearAttachment& setAspectMask( ImageAspectFlags aspectMask_ )
17275 {
17276 aspectMask = aspectMask_;
17277 return *this;
17278 }
17279
17280 ClearAttachment& setColorAttachment( uint32_t colorAttachment_ )
17281 {
17282 colorAttachment = colorAttachment_;
17283 return *this;
17284 }
17285
17286 ClearAttachment& setClearValue( ClearValue clearValue_ )
17287 {
17288 clearValue = clearValue_;
17289 return *this;
17290 }
17291
17292 operator const VkClearAttachment&() const
17293 {
17294 return *reinterpret_cast<const VkClearAttachment*>(this);
17295 }
17296
17297 ImageAspectFlags aspectMask;
17298 uint32_t colorAttachment;
17299 ClearValue clearValue;
17300 };
17301 static_assert( sizeof( ClearAttachment ) == sizeof( VkClearAttachment ), "struct and wrapper have different size!" );
17302
Lenny Komowb79f04a2017-09-18 17:07:00 -060017303 struct InputAttachmentAspectReferenceKHR
17304 {
17305 InputAttachmentAspectReferenceKHR( uint32_t subpass_ = 0, uint32_t inputAttachmentIndex_ = 0, ImageAspectFlags aspectMask_ = ImageAspectFlags() )
17306 : subpass( subpass_ )
17307 , inputAttachmentIndex( inputAttachmentIndex_ )
17308 , aspectMask( aspectMask_ )
17309 {
17310 }
17311
17312 InputAttachmentAspectReferenceKHR( VkInputAttachmentAspectReferenceKHR const & rhs )
17313 {
17314 memcpy( this, &rhs, sizeof( InputAttachmentAspectReferenceKHR ) );
17315 }
17316
17317 InputAttachmentAspectReferenceKHR& operator=( VkInputAttachmentAspectReferenceKHR const & rhs )
17318 {
17319 memcpy( this, &rhs, sizeof( InputAttachmentAspectReferenceKHR ) );
17320 return *this;
17321 }
17322 InputAttachmentAspectReferenceKHR& setSubpass( uint32_t subpass_ )
17323 {
17324 subpass = subpass_;
17325 return *this;
17326 }
17327
17328 InputAttachmentAspectReferenceKHR& setInputAttachmentIndex( uint32_t inputAttachmentIndex_ )
17329 {
17330 inputAttachmentIndex = inputAttachmentIndex_;
17331 return *this;
17332 }
17333
17334 InputAttachmentAspectReferenceKHR& setAspectMask( ImageAspectFlags aspectMask_ )
17335 {
17336 aspectMask = aspectMask_;
17337 return *this;
17338 }
17339
17340 operator const VkInputAttachmentAspectReferenceKHR&() const
17341 {
17342 return *reinterpret_cast<const VkInputAttachmentAspectReferenceKHR*>(this);
17343 }
17344
17345 bool operator==( InputAttachmentAspectReferenceKHR const& rhs ) const
17346 {
17347 return ( subpass == rhs.subpass )
17348 && ( inputAttachmentIndex == rhs.inputAttachmentIndex )
17349 && ( aspectMask == rhs.aspectMask );
17350 }
17351
17352 bool operator!=( InputAttachmentAspectReferenceKHR const& rhs ) const
17353 {
17354 return !operator==( rhs );
17355 }
17356
17357 uint32_t subpass;
17358 uint32_t inputAttachmentIndex;
17359 ImageAspectFlags aspectMask;
17360 };
17361 static_assert( sizeof( InputAttachmentAspectReferenceKHR ) == sizeof( VkInputAttachmentAspectReferenceKHR ), "struct and wrapper have different size!" );
17362
17363 struct RenderPassInputAttachmentAspectCreateInfoKHR
17364 {
17365 RenderPassInputAttachmentAspectCreateInfoKHR( uint32_t aspectReferenceCount_ = 0, const InputAttachmentAspectReferenceKHR* pAspectReferences_ = nullptr )
17366 : sType( StructureType::eRenderPassInputAttachmentAspectCreateInfoKHR )
17367 , pNext( nullptr )
17368 , aspectReferenceCount( aspectReferenceCount_ )
17369 , pAspectReferences( pAspectReferences_ )
17370 {
17371 }
17372
17373 RenderPassInputAttachmentAspectCreateInfoKHR( VkRenderPassInputAttachmentAspectCreateInfoKHR const & rhs )
17374 {
17375 memcpy( this, &rhs, sizeof( RenderPassInputAttachmentAspectCreateInfoKHR ) );
17376 }
17377
17378 RenderPassInputAttachmentAspectCreateInfoKHR& operator=( VkRenderPassInputAttachmentAspectCreateInfoKHR const & rhs )
17379 {
17380 memcpy( this, &rhs, sizeof( RenderPassInputAttachmentAspectCreateInfoKHR ) );
17381 return *this;
17382 }
17383 RenderPassInputAttachmentAspectCreateInfoKHR& setPNext( const void* pNext_ )
17384 {
17385 pNext = pNext_;
17386 return *this;
17387 }
17388
17389 RenderPassInputAttachmentAspectCreateInfoKHR& setAspectReferenceCount( uint32_t aspectReferenceCount_ )
17390 {
17391 aspectReferenceCount = aspectReferenceCount_;
17392 return *this;
17393 }
17394
17395 RenderPassInputAttachmentAspectCreateInfoKHR& setPAspectReferences( const InputAttachmentAspectReferenceKHR* pAspectReferences_ )
17396 {
17397 pAspectReferences = pAspectReferences_;
17398 return *this;
17399 }
17400
17401 operator const VkRenderPassInputAttachmentAspectCreateInfoKHR&() const
17402 {
17403 return *reinterpret_cast<const VkRenderPassInputAttachmentAspectCreateInfoKHR*>(this);
17404 }
17405
17406 bool operator==( RenderPassInputAttachmentAspectCreateInfoKHR const& rhs ) const
17407 {
17408 return ( sType == rhs.sType )
17409 && ( pNext == rhs.pNext )
17410 && ( aspectReferenceCount == rhs.aspectReferenceCount )
17411 && ( pAspectReferences == rhs.pAspectReferences );
17412 }
17413
17414 bool operator!=( RenderPassInputAttachmentAspectCreateInfoKHR const& rhs ) const
17415 {
17416 return !operator==( rhs );
17417 }
17418
17419 private:
17420 StructureType sType;
17421
17422 public:
17423 const void* pNext;
17424 uint32_t aspectReferenceCount;
17425 const InputAttachmentAspectReferenceKHR* pAspectReferences;
17426 };
17427 static_assert( sizeof( RenderPassInputAttachmentAspectCreateInfoKHR ) == sizeof( VkRenderPassInputAttachmentAspectCreateInfoKHR ), "struct and wrapper have different size!" );
17428
17429 struct BindImagePlaneMemoryInfoKHR
17430 {
17431 BindImagePlaneMemoryInfoKHR( ImageAspectFlagBits planeAspect_ = ImageAspectFlagBits::eColor )
17432 : sType( StructureType::eBindImagePlaneMemoryInfoKHR )
17433 , pNext( nullptr )
17434 , planeAspect( planeAspect_ )
17435 {
17436 }
17437
17438 BindImagePlaneMemoryInfoKHR( VkBindImagePlaneMemoryInfoKHR const & rhs )
17439 {
17440 memcpy( this, &rhs, sizeof( BindImagePlaneMemoryInfoKHR ) );
17441 }
17442
17443 BindImagePlaneMemoryInfoKHR& operator=( VkBindImagePlaneMemoryInfoKHR const & rhs )
17444 {
17445 memcpy( this, &rhs, sizeof( BindImagePlaneMemoryInfoKHR ) );
17446 return *this;
17447 }
17448 BindImagePlaneMemoryInfoKHR& setPNext( const void* pNext_ )
17449 {
17450 pNext = pNext_;
17451 return *this;
17452 }
17453
17454 BindImagePlaneMemoryInfoKHR& setPlaneAspect( ImageAspectFlagBits planeAspect_ )
17455 {
17456 planeAspect = planeAspect_;
17457 return *this;
17458 }
17459
17460 operator const VkBindImagePlaneMemoryInfoKHR&() const
17461 {
17462 return *reinterpret_cast<const VkBindImagePlaneMemoryInfoKHR*>(this);
17463 }
17464
17465 bool operator==( BindImagePlaneMemoryInfoKHR const& rhs ) const
17466 {
17467 return ( sType == rhs.sType )
17468 && ( pNext == rhs.pNext )
17469 && ( planeAspect == rhs.planeAspect );
17470 }
17471
17472 bool operator!=( BindImagePlaneMemoryInfoKHR const& rhs ) const
17473 {
17474 return !operator==( rhs );
17475 }
17476
17477 private:
17478 StructureType sType;
17479
17480 public:
17481 const void* pNext;
17482 ImageAspectFlagBits planeAspect;
17483 };
17484 static_assert( sizeof( BindImagePlaneMemoryInfoKHR ) == sizeof( VkBindImagePlaneMemoryInfoKHR ), "struct and wrapper have different size!" );
17485
17486 struct ImagePlaneMemoryRequirementsInfoKHR
17487 {
17488 ImagePlaneMemoryRequirementsInfoKHR( ImageAspectFlagBits planeAspect_ = ImageAspectFlagBits::eColor )
17489 : sType( StructureType::eImagePlaneMemoryRequirementsInfoKHR )
17490 , pNext( nullptr )
17491 , planeAspect( planeAspect_ )
17492 {
17493 }
17494
17495 ImagePlaneMemoryRequirementsInfoKHR( VkImagePlaneMemoryRequirementsInfoKHR const & rhs )
17496 {
17497 memcpy( this, &rhs, sizeof( ImagePlaneMemoryRequirementsInfoKHR ) );
17498 }
17499
17500 ImagePlaneMemoryRequirementsInfoKHR& operator=( VkImagePlaneMemoryRequirementsInfoKHR const & rhs )
17501 {
17502 memcpy( this, &rhs, sizeof( ImagePlaneMemoryRequirementsInfoKHR ) );
17503 return *this;
17504 }
17505 ImagePlaneMemoryRequirementsInfoKHR& setPNext( const void* pNext_ )
17506 {
17507 pNext = pNext_;
17508 return *this;
17509 }
17510
17511 ImagePlaneMemoryRequirementsInfoKHR& setPlaneAspect( ImageAspectFlagBits planeAspect_ )
17512 {
17513 planeAspect = planeAspect_;
17514 return *this;
17515 }
17516
17517 operator const VkImagePlaneMemoryRequirementsInfoKHR&() const
17518 {
17519 return *reinterpret_cast<const VkImagePlaneMemoryRequirementsInfoKHR*>(this);
17520 }
17521
17522 bool operator==( ImagePlaneMemoryRequirementsInfoKHR const& rhs ) const
17523 {
17524 return ( sType == rhs.sType )
17525 && ( pNext == rhs.pNext )
17526 && ( planeAspect == rhs.planeAspect );
17527 }
17528
17529 bool operator!=( ImagePlaneMemoryRequirementsInfoKHR const& rhs ) const
17530 {
17531 return !operator==( rhs );
17532 }
17533
17534 private:
17535 StructureType sType;
17536
17537 public:
17538 const void* pNext;
17539 ImageAspectFlagBits planeAspect;
17540 };
17541 static_assert( sizeof( ImagePlaneMemoryRequirementsInfoKHR ) == sizeof( VkImagePlaneMemoryRequirementsInfoKHR ), "struct and wrapper have different size!" );
17542
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017543 enum class SparseImageFormatFlagBits
17544 {
17545 eSingleMiptail = VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT,
17546 eAlignedMipSize = VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT,
17547 eNonstandardBlockSize = VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT
17548 };
17549
17550 using SparseImageFormatFlags = Flags<SparseImageFormatFlagBits, VkSparseImageFormatFlags>;
17551
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017552 VULKAN_HPP_INLINE SparseImageFormatFlags operator|( SparseImageFormatFlagBits bit0, SparseImageFormatFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017553 {
17554 return SparseImageFormatFlags( bit0 ) | bit1;
17555 }
17556
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017557 VULKAN_HPP_INLINE SparseImageFormatFlags operator~( SparseImageFormatFlagBits bits )
17558 {
17559 return ~( SparseImageFormatFlags( bits ) );
17560 }
17561
17562 template <> struct FlagTraits<SparseImageFormatFlagBits>
17563 {
17564 enum
17565 {
17566 allFlags = VkFlags(SparseImageFormatFlagBits::eSingleMiptail) | VkFlags(SparseImageFormatFlagBits::eAlignedMipSize) | VkFlags(SparseImageFormatFlagBits::eNonstandardBlockSize)
17567 };
17568 };
17569
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017570 struct SparseImageFormatProperties
17571 {
17572 operator const VkSparseImageFormatProperties&() const
17573 {
17574 return *reinterpret_cast<const VkSparseImageFormatProperties*>(this);
17575 }
17576
17577 bool operator==( SparseImageFormatProperties const& rhs ) const
17578 {
17579 return ( aspectMask == rhs.aspectMask )
17580 && ( imageGranularity == rhs.imageGranularity )
17581 && ( flags == rhs.flags );
17582 }
17583
17584 bool operator!=( SparseImageFormatProperties const& rhs ) const
17585 {
17586 return !operator==( rhs );
17587 }
17588
17589 ImageAspectFlags aspectMask;
17590 Extent3D imageGranularity;
17591 SparseImageFormatFlags flags;
17592 };
17593 static_assert( sizeof( SparseImageFormatProperties ) == sizeof( VkSparseImageFormatProperties ), "struct and wrapper have different size!" );
17594
17595 struct SparseImageMemoryRequirements
17596 {
17597 operator const VkSparseImageMemoryRequirements&() const
17598 {
17599 return *reinterpret_cast<const VkSparseImageMemoryRequirements*>(this);
17600 }
17601
17602 bool operator==( SparseImageMemoryRequirements const& rhs ) const
17603 {
17604 return ( formatProperties == rhs.formatProperties )
17605 && ( imageMipTailFirstLod == rhs.imageMipTailFirstLod )
17606 && ( imageMipTailSize == rhs.imageMipTailSize )
17607 && ( imageMipTailOffset == rhs.imageMipTailOffset )
17608 && ( imageMipTailStride == rhs.imageMipTailStride );
17609 }
17610
17611 bool operator!=( SparseImageMemoryRequirements const& rhs ) const
17612 {
17613 return !operator==( rhs );
17614 }
17615
17616 SparseImageFormatProperties formatProperties;
17617 uint32_t imageMipTailFirstLod;
17618 DeviceSize imageMipTailSize;
17619 DeviceSize imageMipTailOffset;
17620 DeviceSize imageMipTailStride;
17621 };
17622 static_assert( sizeof( SparseImageMemoryRequirements ) == sizeof( VkSparseImageMemoryRequirements ), "struct and wrapper have different size!" );
17623
Mark Young39389872017-01-19 21:10:49 -070017624 struct SparseImageFormatProperties2KHR
17625 {
17626 operator const VkSparseImageFormatProperties2KHR&() const
17627 {
17628 return *reinterpret_cast<const VkSparseImageFormatProperties2KHR*>(this);
17629 }
17630
17631 bool operator==( SparseImageFormatProperties2KHR const& rhs ) const
17632 {
17633 return ( sType == rhs.sType )
17634 && ( pNext == rhs.pNext )
17635 && ( properties == rhs.properties );
17636 }
17637
17638 bool operator!=( SparseImageFormatProperties2KHR const& rhs ) const
17639 {
17640 return !operator==( rhs );
17641 }
17642
17643 private:
17644 StructureType sType;
17645
17646 public:
17647 void* pNext;
17648 SparseImageFormatProperties properties;
17649 };
17650 static_assert( sizeof( SparseImageFormatProperties2KHR ) == sizeof( VkSparseImageFormatProperties2KHR ), "struct and wrapper have different size!" );
17651
Mark Youngabc2d6e2017-07-07 07:59:56 -060017652 struct SparseImageMemoryRequirements2KHR
17653 {
17654 operator const VkSparseImageMemoryRequirements2KHR&() const
17655 {
17656 return *reinterpret_cast<const VkSparseImageMemoryRequirements2KHR*>(this);
17657 }
17658
17659 bool operator==( SparseImageMemoryRequirements2KHR const& rhs ) const
17660 {
17661 return ( sType == rhs.sType )
17662 && ( pNext == rhs.pNext )
17663 && ( memoryRequirements == rhs.memoryRequirements );
17664 }
17665
17666 bool operator!=( SparseImageMemoryRequirements2KHR const& rhs ) const
17667 {
17668 return !operator==( rhs );
17669 }
17670
17671 private:
17672 StructureType sType;
17673
17674 public:
17675 void* pNext;
17676 SparseImageMemoryRequirements memoryRequirements;
17677 };
17678 static_assert( sizeof( SparseImageMemoryRequirements2KHR ) == sizeof( VkSparseImageMemoryRequirements2KHR ), "struct and wrapper have different size!" );
17679
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017680 enum class SparseMemoryBindFlagBits
17681 {
17682 eMetadata = VK_SPARSE_MEMORY_BIND_METADATA_BIT
17683 };
17684
17685 using SparseMemoryBindFlags = Flags<SparseMemoryBindFlagBits, VkSparseMemoryBindFlags>;
17686
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017687 VULKAN_HPP_INLINE SparseMemoryBindFlags operator|( SparseMemoryBindFlagBits bit0, SparseMemoryBindFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017688 {
17689 return SparseMemoryBindFlags( bit0 ) | bit1;
17690 }
17691
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017692 VULKAN_HPP_INLINE SparseMemoryBindFlags operator~( SparseMemoryBindFlagBits bits )
17693 {
17694 return ~( SparseMemoryBindFlags( bits ) );
17695 }
17696
17697 template <> struct FlagTraits<SparseMemoryBindFlagBits>
17698 {
17699 enum
17700 {
17701 allFlags = VkFlags(SparseMemoryBindFlagBits::eMetadata)
17702 };
17703 };
17704
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017705 struct SparseMemoryBind
17706 {
17707 SparseMemoryBind( DeviceSize resourceOffset_ = 0, DeviceSize size_ = 0, DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
17708 : resourceOffset( resourceOffset_ )
17709 , size( size_ )
17710 , memory( memory_ )
17711 , memoryOffset( memoryOffset_ )
17712 , flags( flags_ )
17713 {
17714 }
17715
17716 SparseMemoryBind( VkSparseMemoryBind const & rhs )
17717 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017718 memcpy( this, &rhs, sizeof( SparseMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017719 }
17720
17721 SparseMemoryBind& operator=( VkSparseMemoryBind const & rhs )
17722 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017723 memcpy( this, &rhs, sizeof( SparseMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017724 return *this;
17725 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017726 SparseMemoryBind& setResourceOffset( DeviceSize resourceOffset_ )
17727 {
17728 resourceOffset = resourceOffset_;
17729 return *this;
17730 }
17731
17732 SparseMemoryBind& setSize( DeviceSize size_ )
17733 {
17734 size = size_;
17735 return *this;
17736 }
17737
17738 SparseMemoryBind& setMemory( DeviceMemory memory_ )
17739 {
17740 memory = memory_;
17741 return *this;
17742 }
17743
17744 SparseMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
17745 {
17746 memoryOffset = memoryOffset_;
17747 return *this;
17748 }
17749
17750 SparseMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
17751 {
17752 flags = flags_;
17753 return *this;
17754 }
17755
17756 operator const VkSparseMemoryBind&() const
17757 {
17758 return *reinterpret_cast<const VkSparseMemoryBind*>(this);
17759 }
17760
17761 bool operator==( SparseMemoryBind const& rhs ) const
17762 {
17763 return ( resourceOffset == rhs.resourceOffset )
17764 && ( size == rhs.size )
17765 && ( memory == rhs.memory )
17766 && ( memoryOffset == rhs.memoryOffset )
17767 && ( flags == rhs.flags );
17768 }
17769
17770 bool operator!=( SparseMemoryBind const& rhs ) const
17771 {
17772 return !operator==( rhs );
17773 }
17774
17775 DeviceSize resourceOffset;
17776 DeviceSize size;
17777 DeviceMemory memory;
17778 DeviceSize memoryOffset;
17779 SparseMemoryBindFlags flags;
17780 };
17781 static_assert( sizeof( SparseMemoryBind ) == sizeof( VkSparseMemoryBind ), "struct and wrapper have different size!" );
17782
17783 struct SparseImageMemoryBind
17784 {
17785 SparseImageMemoryBind( ImageSubresource subresource_ = ImageSubresource(), Offset3D offset_ = Offset3D(), Extent3D extent_ = Extent3D(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
17786 : subresource( subresource_ )
17787 , offset( offset_ )
17788 , extent( extent_ )
17789 , memory( memory_ )
17790 , memoryOffset( memoryOffset_ )
17791 , flags( flags_ )
17792 {
17793 }
17794
17795 SparseImageMemoryBind( VkSparseImageMemoryBind const & rhs )
17796 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017797 memcpy( this, &rhs, sizeof( SparseImageMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017798 }
17799
17800 SparseImageMemoryBind& operator=( VkSparseImageMemoryBind const & rhs )
17801 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017802 memcpy( this, &rhs, sizeof( SparseImageMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017803 return *this;
17804 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017805 SparseImageMemoryBind& setSubresource( ImageSubresource subresource_ )
17806 {
17807 subresource = subresource_;
17808 return *this;
17809 }
17810
17811 SparseImageMemoryBind& setOffset( Offset3D offset_ )
17812 {
17813 offset = offset_;
17814 return *this;
17815 }
17816
17817 SparseImageMemoryBind& setExtent( Extent3D extent_ )
17818 {
17819 extent = extent_;
17820 return *this;
17821 }
17822
17823 SparseImageMemoryBind& setMemory( DeviceMemory memory_ )
17824 {
17825 memory = memory_;
17826 return *this;
17827 }
17828
17829 SparseImageMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
17830 {
17831 memoryOffset = memoryOffset_;
17832 return *this;
17833 }
17834
17835 SparseImageMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
17836 {
17837 flags = flags_;
17838 return *this;
17839 }
17840
17841 operator const VkSparseImageMemoryBind&() const
17842 {
17843 return *reinterpret_cast<const VkSparseImageMemoryBind*>(this);
17844 }
17845
17846 bool operator==( SparseImageMemoryBind const& rhs ) const
17847 {
17848 return ( subresource == rhs.subresource )
17849 && ( offset == rhs.offset )
17850 && ( extent == rhs.extent )
17851 && ( memory == rhs.memory )
17852 && ( memoryOffset == rhs.memoryOffset )
17853 && ( flags == rhs.flags );
17854 }
17855
17856 bool operator!=( SparseImageMemoryBind const& rhs ) const
17857 {
17858 return !operator==( rhs );
17859 }
17860
17861 ImageSubresource subresource;
17862 Offset3D offset;
17863 Extent3D extent;
17864 DeviceMemory memory;
17865 DeviceSize memoryOffset;
17866 SparseMemoryBindFlags flags;
17867 };
17868 static_assert( sizeof( SparseImageMemoryBind ) == sizeof( VkSparseImageMemoryBind ), "struct and wrapper have different size!" );
17869
17870 struct SparseBufferMemoryBindInfo
17871 {
17872 SparseBufferMemoryBindInfo( Buffer buffer_ = Buffer(), uint32_t bindCount_ = 0, const SparseMemoryBind* pBinds_ = nullptr )
17873 : buffer( buffer_ )
17874 , bindCount( bindCount_ )
17875 , pBinds( pBinds_ )
17876 {
17877 }
17878
17879 SparseBufferMemoryBindInfo( VkSparseBufferMemoryBindInfo const & rhs )
17880 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017881 memcpy( this, &rhs, sizeof( SparseBufferMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017882 }
17883
17884 SparseBufferMemoryBindInfo& operator=( VkSparseBufferMemoryBindInfo const & rhs )
17885 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017886 memcpy( this, &rhs, sizeof( SparseBufferMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017887 return *this;
17888 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017889 SparseBufferMemoryBindInfo& setBuffer( Buffer buffer_ )
17890 {
17891 buffer = buffer_;
17892 return *this;
17893 }
17894
17895 SparseBufferMemoryBindInfo& setBindCount( uint32_t bindCount_ )
17896 {
17897 bindCount = bindCount_;
17898 return *this;
17899 }
17900
17901 SparseBufferMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
17902 {
17903 pBinds = pBinds_;
17904 return *this;
17905 }
17906
17907 operator const VkSparseBufferMemoryBindInfo&() const
17908 {
17909 return *reinterpret_cast<const VkSparseBufferMemoryBindInfo*>(this);
17910 }
17911
17912 bool operator==( SparseBufferMemoryBindInfo const& rhs ) const
17913 {
17914 return ( buffer == rhs.buffer )
17915 && ( bindCount == rhs.bindCount )
17916 && ( pBinds == rhs.pBinds );
17917 }
17918
17919 bool operator!=( SparseBufferMemoryBindInfo const& rhs ) const
17920 {
17921 return !operator==( rhs );
17922 }
17923
17924 Buffer buffer;
17925 uint32_t bindCount;
17926 const SparseMemoryBind* pBinds;
17927 };
17928 static_assert( sizeof( SparseBufferMemoryBindInfo ) == sizeof( VkSparseBufferMemoryBindInfo ), "struct and wrapper have different size!" );
17929
17930 struct SparseImageOpaqueMemoryBindInfo
17931 {
17932 SparseImageOpaqueMemoryBindInfo( Image image_ = Image(), uint32_t bindCount_ = 0, const SparseMemoryBind* pBinds_ = nullptr )
17933 : image( image_ )
17934 , bindCount( bindCount_ )
17935 , pBinds( pBinds_ )
17936 {
17937 }
17938
17939 SparseImageOpaqueMemoryBindInfo( VkSparseImageOpaqueMemoryBindInfo const & rhs )
17940 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017941 memcpy( this, &rhs, sizeof( SparseImageOpaqueMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017942 }
17943
17944 SparseImageOpaqueMemoryBindInfo& operator=( VkSparseImageOpaqueMemoryBindInfo const & rhs )
17945 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017946 memcpy( this, &rhs, sizeof( SparseImageOpaqueMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017947 return *this;
17948 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017949 SparseImageOpaqueMemoryBindInfo& setImage( Image image_ )
17950 {
17951 image = image_;
17952 return *this;
17953 }
17954
17955 SparseImageOpaqueMemoryBindInfo& setBindCount( uint32_t bindCount_ )
17956 {
17957 bindCount = bindCount_;
17958 return *this;
17959 }
17960
17961 SparseImageOpaqueMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
17962 {
17963 pBinds = pBinds_;
17964 return *this;
17965 }
17966
17967 operator const VkSparseImageOpaqueMemoryBindInfo&() const
17968 {
17969 return *reinterpret_cast<const VkSparseImageOpaqueMemoryBindInfo*>(this);
17970 }
17971
17972 bool operator==( SparseImageOpaqueMemoryBindInfo const& rhs ) const
17973 {
17974 return ( image == rhs.image )
17975 && ( bindCount == rhs.bindCount )
17976 && ( pBinds == rhs.pBinds );
17977 }
17978
17979 bool operator!=( SparseImageOpaqueMemoryBindInfo const& rhs ) const
17980 {
17981 return !operator==( rhs );
17982 }
17983
17984 Image image;
17985 uint32_t bindCount;
17986 const SparseMemoryBind* pBinds;
17987 };
17988 static_assert( sizeof( SparseImageOpaqueMemoryBindInfo ) == sizeof( VkSparseImageOpaqueMemoryBindInfo ), "struct and wrapper have different size!" );
17989
17990 struct SparseImageMemoryBindInfo
17991 {
17992 SparseImageMemoryBindInfo( Image image_ = Image(), uint32_t bindCount_ = 0, const SparseImageMemoryBind* pBinds_ = nullptr )
17993 : image( image_ )
17994 , bindCount( bindCount_ )
17995 , pBinds( pBinds_ )
17996 {
17997 }
17998
17999 SparseImageMemoryBindInfo( VkSparseImageMemoryBindInfo const & rhs )
18000 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018001 memcpy( this, &rhs, sizeof( SparseImageMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018002 }
18003
18004 SparseImageMemoryBindInfo& operator=( VkSparseImageMemoryBindInfo const & rhs )
18005 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018006 memcpy( this, &rhs, sizeof( SparseImageMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018007 return *this;
18008 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018009 SparseImageMemoryBindInfo& setImage( Image image_ )
18010 {
18011 image = image_;
18012 return *this;
18013 }
18014
18015 SparseImageMemoryBindInfo& setBindCount( uint32_t bindCount_ )
18016 {
18017 bindCount = bindCount_;
18018 return *this;
18019 }
18020
18021 SparseImageMemoryBindInfo& setPBinds( const SparseImageMemoryBind* pBinds_ )
18022 {
18023 pBinds = pBinds_;
18024 return *this;
18025 }
18026
18027 operator const VkSparseImageMemoryBindInfo&() const
18028 {
18029 return *reinterpret_cast<const VkSparseImageMemoryBindInfo*>(this);
18030 }
18031
18032 bool operator==( SparseImageMemoryBindInfo const& rhs ) const
18033 {
18034 return ( image == rhs.image )
18035 && ( bindCount == rhs.bindCount )
18036 && ( pBinds == rhs.pBinds );
18037 }
18038
18039 bool operator!=( SparseImageMemoryBindInfo const& rhs ) const
18040 {
18041 return !operator==( rhs );
18042 }
18043
18044 Image image;
18045 uint32_t bindCount;
18046 const SparseImageMemoryBind* pBinds;
18047 };
18048 static_assert( sizeof( SparseImageMemoryBindInfo ) == sizeof( VkSparseImageMemoryBindInfo ), "struct and wrapper have different size!" );
18049
18050 struct BindSparseInfo
18051 {
18052 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 )
18053 : sType( StructureType::eBindSparseInfo )
18054 , pNext( nullptr )
18055 , waitSemaphoreCount( waitSemaphoreCount_ )
18056 , pWaitSemaphores( pWaitSemaphores_ )
18057 , bufferBindCount( bufferBindCount_ )
18058 , pBufferBinds( pBufferBinds_ )
18059 , imageOpaqueBindCount( imageOpaqueBindCount_ )
18060 , pImageOpaqueBinds( pImageOpaqueBinds_ )
18061 , imageBindCount( imageBindCount_ )
18062 , pImageBinds( pImageBinds_ )
18063 , signalSemaphoreCount( signalSemaphoreCount_ )
18064 , pSignalSemaphores( pSignalSemaphores_ )
18065 {
18066 }
18067
18068 BindSparseInfo( VkBindSparseInfo const & rhs )
18069 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018070 memcpy( this, &rhs, sizeof( BindSparseInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018071 }
18072
18073 BindSparseInfo& operator=( VkBindSparseInfo const & rhs )
18074 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018075 memcpy( this, &rhs, sizeof( BindSparseInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018076 return *this;
18077 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018078 BindSparseInfo& setPNext( const void* pNext_ )
18079 {
18080 pNext = pNext_;
18081 return *this;
18082 }
18083
18084 BindSparseInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
18085 {
18086 waitSemaphoreCount = waitSemaphoreCount_;
18087 return *this;
18088 }
18089
18090 BindSparseInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
18091 {
18092 pWaitSemaphores = pWaitSemaphores_;
18093 return *this;
18094 }
18095
18096 BindSparseInfo& setBufferBindCount( uint32_t bufferBindCount_ )
18097 {
18098 bufferBindCount = bufferBindCount_;
18099 return *this;
18100 }
18101
18102 BindSparseInfo& setPBufferBinds( const SparseBufferMemoryBindInfo* pBufferBinds_ )
18103 {
18104 pBufferBinds = pBufferBinds_;
18105 return *this;
18106 }
18107
18108 BindSparseInfo& setImageOpaqueBindCount( uint32_t imageOpaqueBindCount_ )
18109 {
18110 imageOpaqueBindCount = imageOpaqueBindCount_;
18111 return *this;
18112 }
18113
18114 BindSparseInfo& setPImageOpaqueBinds( const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds_ )
18115 {
18116 pImageOpaqueBinds = pImageOpaqueBinds_;
18117 return *this;
18118 }
18119
18120 BindSparseInfo& setImageBindCount( uint32_t imageBindCount_ )
18121 {
18122 imageBindCount = imageBindCount_;
18123 return *this;
18124 }
18125
18126 BindSparseInfo& setPImageBinds( const SparseImageMemoryBindInfo* pImageBinds_ )
18127 {
18128 pImageBinds = pImageBinds_;
18129 return *this;
18130 }
18131
18132 BindSparseInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
18133 {
18134 signalSemaphoreCount = signalSemaphoreCount_;
18135 return *this;
18136 }
18137
18138 BindSparseInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
18139 {
18140 pSignalSemaphores = pSignalSemaphores_;
18141 return *this;
18142 }
18143
18144 operator const VkBindSparseInfo&() const
18145 {
18146 return *reinterpret_cast<const VkBindSparseInfo*>(this);
18147 }
18148
18149 bool operator==( BindSparseInfo const& rhs ) const
18150 {
18151 return ( sType == rhs.sType )
18152 && ( pNext == rhs.pNext )
18153 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
18154 && ( pWaitSemaphores == rhs.pWaitSemaphores )
18155 && ( bufferBindCount == rhs.bufferBindCount )
18156 && ( pBufferBinds == rhs.pBufferBinds )
18157 && ( imageOpaqueBindCount == rhs.imageOpaqueBindCount )
18158 && ( pImageOpaqueBinds == rhs.pImageOpaqueBinds )
18159 && ( imageBindCount == rhs.imageBindCount )
18160 && ( pImageBinds == rhs.pImageBinds )
18161 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
18162 && ( pSignalSemaphores == rhs.pSignalSemaphores );
18163 }
18164
18165 bool operator!=( BindSparseInfo const& rhs ) const
18166 {
18167 return !operator==( rhs );
18168 }
18169
18170 private:
18171 StructureType sType;
18172
18173 public:
18174 const void* pNext;
18175 uint32_t waitSemaphoreCount;
18176 const Semaphore* pWaitSemaphores;
18177 uint32_t bufferBindCount;
18178 const SparseBufferMemoryBindInfo* pBufferBinds;
18179 uint32_t imageOpaqueBindCount;
18180 const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds;
18181 uint32_t imageBindCount;
18182 const SparseImageMemoryBindInfo* pImageBinds;
18183 uint32_t signalSemaphoreCount;
18184 const Semaphore* pSignalSemaphores;
18185 };
18186 static_assert( sizeof( BindSparseInfo ) == sizeof( VkBindSparseInfo ), "struct and wrapper have different size!" );
18187
18188 enum class PipelineStageFlagBits
18189 {
18190 eTopOfPipe = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
18191 eDrawIndirect = VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,
18192 eVertexInput = VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,
18193 eVertexShader = VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,
18194 eTessellationControlShader = VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,
18195 eTessellationEvaluationShader = VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT,
18196 eGeometryShader = VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT,
18197 eFragmentShader = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
18198 eEarlyFragmentTests = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,
18199 eLateFragmentTests = VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
18200 eColorAttachmentOutput = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
18201 eComputeShader = VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
18202 eTransfer = VK_PIPELINE_STAGE_TRANSFER_BIT,
18203 eBottomOfPipe = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
18204 eHost = VK_PIPELINE_STAGE_HOST_BIT,
18205 eAllGraphics = VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018206 eAllCommands = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,
18207 eCommandProcessNVX = VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018208 };
18209
18210 using PipelineStageFlags = Flags<PipelineStageFlagBits, VkPipelineStageFlags>;
18211
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018212 VULKAN_HPP_INLINE PipelineStageFlags operator|( PipelineStageFlagBits bit0, PipelineStageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018213 {
18214 return PipelineStageFlags( bit0 ) | bit1;
18215 }
18216
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018217 VULKAN_HPP_INLINE PipelineStageFlags operator~( PipelineStageFlagBits bits )
18218 {
18219 return ~( PipelineStageFlags( bits ) );
18220 }
18221
18222 template <> struct FlagTraits<PipelineStageFlagBits>
18223 {
18224 enum
18225 {
18226 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)
18227 };
18228 };
18229
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018230 enum class CommandPoolCreateFlagBits
18231 {
18232 eTransient = VK_COMMAND_POOL_CREATE_TRANSIENT_BIT,
18233 eResetCommandBuffer = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT
18234 };
18235
18236 using CommandPoolCreateFlags = Flags<CommandPoolCreateFlagBits, VkCommandPoolCreateFlags>;
18237
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018238 VULKAN_HPP_INLINE CommandPoolCreateFlags operator|( CommandPoolCreateFlagBits bit0, CommandPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018239 {
18240 return CommandPoolCreateFlags( bit0 ) | bit1;
18241 }
18242
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018243 VULKAN_HPP_INLINE CommandPoolCreateFlags operator~( CommandPoolCreateFlagBits bits )
18244 {
18245 return ~( CommandPoolCreateFlags( bits ) );
18246 }
18247
18248 template <> struct FlagTraits<CommandPoolCreateFlagBits>
18249 {
18250 enum
18251 {
18252 allFlags = VkFlags(CommandPoolCreateFlagBits::eTransient) | VkFlags(CommandPoolCreateFlagBits::eResetCommandBuffer)
18253 };
18254 };
18255
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018256 struct CommandPoolCreateInfo
18257 {
18258 CommandPoolCreateInfo( CommandPoolCreateFlags flags_ = CommandPoolCreateFlags(), uint32_t queueFamilyIndex_ = 0 )
18259 : sType( StructureType::eCommandPoolCreateInfo )
18260 , pNext( nullptr )
18261 , flags( flags_ )
18262 , queueFamilyIndex( queueFamilyIndex_ )
18263 {
18264 }
18265
18266 CommandPoolCreateInfo( VkCommandPoolCreateInfo const & rhs )
18267 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018268 memcpy( this, &rhs, sizeof( CommandPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018269 }
18270
18271 CommandPoolCreateInfo& operator=( VkCommandPoolCreateInfo const & rhs )
18272 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018273 memcpy( this, &rhs, sizeof( CommandPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018274 return *this;
18275 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018276 CommandPoolCreateInfo& setPNext( const void* pNext_ )
18277 {
18278 pNext = pNext_;
18279 return *this;
18280 }
18281
18282 CommandPoolCreateInfo& setFlags( CommandPoolCreateFlags flags_ )
18283 {
18284 flags = flags_;
18285 return *this;
18286 }
18287
18288 CommandPoolCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
18289 {
18290 queueFamilyIndex = queueFamilyIndex_;
18291 return *this;
18292 }
18293
18294 operator const VkCommandPoolCreateInfo&() const
18295 {
18296 return *reinterpret_cast<const VkCommandPoolCreateInfo*>(this);
18297 }
18298
18299 bool operator==( CommandPoolCreateInfo const& rhs ) const
18300 {
18301 return ( sType == rhs.sType )
18302 && ( pNext == rhs.pNext )
18303 && ( flags == rhs.flags )
18304 && ( queueFamilyIndex == rhs.queueFamilyIndex );
18305 }
18306
18307 bool operator!=( CommandPoolCreateInfo const& rhs ) const
18308 {
18309 return !operator==( rhs );
18310 }
18311
18312 private:
18313 StructureType sType;
18314
18315 public:
18316 const void* pNext;
18317 CommandPoolCreateFlags flags;
18318 uint32_t queueFamilyIndex;
18319 };
18320 static_assert( sizeof( CommandPoolCreateInfo ) == sizeof( VkCommandPoolCreateInfo ), "struct and wrapper have different size!" );
18321
18322 enum class CommandPoolResetFlagBits
18323 {
18324 eReleaseResources = VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT
18325 };
18326
18327 using CommandPoolResetFlags = Flags<CommandPoolResetFlagBits, VkCommandPoolResetFlags>;
18328
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018329 VULKAN_HPP_INLINE CommandPoolResetFlags operator|( CommandPoolResetFlagBits bit0, CommandPoolResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018330 {
18331 return CommandPoolResetFlags( bit0 ) | bit1;
18332 }
18333
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018334 VULKAN_HPP_INLINE CommandPoolResetFlags operator~( CommandPoolResetFlagBits bits )
18335 {
18336 return ~( CommandPoolResetFlags( bits ) );
18337 }
18338
18339 template <> struct FlagTraits<CommandPoolResetFlagBits>
18340 {
18341 enum
18342 {
18343 allFlags = VkFlags(CommandPoolResetFlagBits::eReleaseResources)
18344 };
18345 };
18346
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018347 enum class CommandBufferResetFlagBits
18348 {
18349 eReleaseResources = VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT
18350 };
18351
18352 using CommandBufferResetFlags = Flags<CommandBufferResetFlagBits, VkCommandBufferResetFlags>;
18353
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018354 VULKAN_HPP_INLINE CommandBufferResetFlags operator|( CommandBufferResetFlagBits bit0, CommandBufferResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018355 {
18356 return CommandBufferResetFlags( bit0 ) | bit1;
18357 }
18358
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018359 VULKAN_HPP_INLINE CommandBufferResetFlags operator~( CommandBufferResetFlagBits bits )
18360 {
18361 return ~( CommandBufferResetFlags( bits ) );
18362 }
18363
18364 template <> struct FlagTraits<CommandBufferResetFlagBits>
18365 {
18366 enum
18367 {
18368 allFlags = VkFlags(CommandBufferResetFlagBits::eReleaseResources)
18369 };
18370 };
18371
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018372 enum class SampleCountFlagBits
18373 {
18374 e1 = VK_SAMPLE_COUNT_1_BIT,
18375 e2 = VK_SAMPLE_COUNT_2_BIT,
18376 e4 = VK_SAMPLE_COUNT_4_BIT,
18377 e8 = VK_SAMPLE_COUNT_8_BIT,
18378 e16 = VK_SAMPLE_COUNT_16_BIT,
18379 e32 = VK_SAMPLE_COUNT_32_BIT,
18380 e64 = VK_SAMPLE_COUNT_64_BIT
18381 };
18382
18383 using SampleCountFlags = Flags<SampleCountFlagBits, VkSampleCountFlags>;
18384
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018385 VULKAN_HPP_INLINE SampleCountFlags operator|( SampleCountFlagBits bit0, SampleCountFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018386 {
18387 return SampleCountFlags( bit0 ) | bit1;
18388 }
18389
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018390 VULKAN_HPP_INLINE SampleCountFlags operator~( SampleCountFlagBits bits )
18391 {
18392 return ~( SampleCountFlags( bits ) );
18393 }
18394
18395 template <> struct FlagTraits<SampleCountFlagBits>
18396 {
18397 enum
18398 {
18399 allFlags = VkFlags(SampleCountFlagBits::e1) | VkFlags(SampleCountFlagBits::e2) | VkFlags(SampleCountFlagBits::e4) | VkFlags(SampleCountFlagBits::e8) | VkFlags(SampleCountFlagBits::e16) | VkFlags(SampleCountFlagBits::e32) | VkFlags(SampleCountFlagBits::e64)
18400 };
18401 };
18402
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018403 struct ImageFormatProperties
18404 {
18405 operator const VkImageFormatProperties&() const
18406 {
18407 return *reinterpret_cast<const VkImageFormatProperties*>(this);
18408 }
18409
18410 bool operator==( ImageFormatProperties const& rhs ) const
18411 {
18412 return ( maxExtent == rhs.maxExtent )
18413 && ( maxMipLevels == rhs.maxMipLevels )
18414 && ( maxArrayLayers == rhs.maxArrayLayers )
18415 && ( sampleCounts == rhs.sampleCounts )
18416 && ( maxResourceSize == rhs.maxResourceSize );
18417 }
18418
18419 bool operator!=( ImageFormatProperties const& rhs ) const
18420 {
18421 return !operator==( rhs );
18422 }
18423
18424 Extent3D maxExtent;
18425 uint32_t maxMipLevels;
18426 uint32_t maxArrayLayers;
18427 SampleCountFlags sampleCounts;
18428 DeviceSize maxResourceSize;
18429 };
18430 static_assert( sizeof( ImageFormatProperties ) == sizeof( VkImageFormatProperties ), "struct and wrapper have different size!" );
18431
18432 struct ImageCreateInfo
18433 {
18434 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 )
18435 : sType( StructureType::eImageCreateInfo )
18436 , pNext( nullptr )
18437 , flags( flags_ )
18438 , imageType( imageType_ )
18439 , format( format_ )
18440 , extent( extent_ )
18441 , mipLevels( mipLevels_ )
18442 , arrayLayers( arrayLayers_ )
18443 , samples( samples_ )
18444 , tiling( tiling_ )
18445 , usage( usage_ )
18446 , sharingMode( sharingMode_ )
18447 , queueFamilyIndexCount( queueFamilyIndexCount_ )
18448 , pQueueFamilyIndices( pQueueFamilyIndices_ )
18449 , initialLayout( initialLayout_ )
18450 {
18451 }
18452
18453 ImageCreateInfo( VkImageCreateInfo const & rhs )
18454 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018455 memcpy( this, &rhs, sizeof( ImageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018456 }
18457
18458 ImageCreateInfo& operator=( VkImageCreateInfo const & rhs )
18459 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018460 memcpy( this, &rhs, sizeof( ImageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018461 return *this;
18462 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018463 ImageCreateInfo& setPNext( const void* pNext_ )
18464 {
18465 pNext = pNext_;
18466 return *this;
18467 }
18468
18469 ImageCreateInfo& setFlags( ImageCreateFlags flags_ )
18470 {
18471 flags = flags_;
18472 return *this;
18473 }
18474
18475 ImageCreateInfo& setImageType( ImageType imageType_ )
18476 {
18477 imageType = imageType_;
18478 return *this;
18479 }
18480
18481 ImageCreateInfo& setFormat( Format format_ )
18482 {
18483 format = format_;
18484 return *this;
18485 }
18486
18487 ImageCreateInfo& setExtent( Extent3D extent_ )
18488 {
18489 extent = extent_;
18490 return *this;
18491 }
18492
18493 ImageCreateInfo& setMipLevels( uint32_t mipLevels_ )
18494 {
18495 mipLevels = mipLevels_;
18496 return *this;
18497 }
18498
18499 ImageCreateInfo& setArrayLayers( uint32_t arrayLayers_ )
18500 {
18501 arrayLayers = arrayLayers_;
18502 return *this;
18503 }
18504
18505 ImageCreateInfo& setSamples( SampleCountFlagBits samples_ )
18506 {
18507 samples = samples_;
18508 return *this;
18509 }
18510
18511 ImageCreateInfo& setTiling( ImageTiling tiling_ )
18512 {
18513 tiling = tiling_;
18514 return *this;
18515 }
18516
18517 ImageCreateInfo& setUsage( ImageUsageFlags usage_ )
18518 {
18519 usage = usage_;
18520 return *this;
18521 }
18522
18523 ImageCreateInfo& setSharingMode( SharingMode sharingMode_ )
18524 {
18525 sharingMode = sharingMode_;
18526 return *this;
18527 }
18528
18529 ImageCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
18530 {
18531 queueFamilyIndexCount = queueFamilyIndexCount_;
18532 return *this;
18533 }
18534
18535 ImageCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
18536 {
18537 pQueueFamilyIndices = pQueueFamilyIndices_;
18538 return *this;
18539 }
18540
18541 ImageCreateInfo& setInitialLayout( ImageLayout initialLayout_ )
18542 {
18543 initialLayout = initialLayout_;
18544 return *this;
18545 }
18546
18547 operator const VkImageCreateInfo&() const
18548 {
18549 return *reinterpret_cast<const VkImageCreateInfo*>(this);
18550 }
18551
18552 bool operator==( ImageCreateInfo const& rhs ) const
18553 {
18554 return ( sType == rhs.sType )
18555 && ( pNext == rhs.pNext )
18556 && ( flags == rhs.flags )
18557 && ( imageType == rhs.imageType )
18558 && ( format == rhs.format )
18559 && ( extent == rhs.extent )
18560 && ( mipLevels == rhs.mipLevels )
18561 && ( arrayLayers == rhs.arrayLayers )
18562 && ( samples == rhs.samples )
18563 && ( tiling == rhs.tiling )
18564 && ( usage == rhs.usage )
18565 && ( sharingMode == rhs.sharingMode )
18566 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
18567 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
18568 && ( initialLayout == rhs.initialLayout );
18569 }
18570
18571 bool operator!=( ImageCreateInfo const& rhs ) const
18572 {
18573 return !operator==( rhs );
18574 }
18575
18576 private:
18577 StructureType sType;
18578
18579 public:
18580 const void* pNext;
18581 ImageCreateFlags flags;
18582 ImageType imageType;
18583 Format format;
18584 Extent3D extent;
18585 uint32_t mipLevels;
18586 uint32_t arrayLayers;
18587 SampleCountFlagBits samples;
18588 ImageTiling tiling;
18589 ImageUsageFlags usage;
18590 SharingMode sharingMode;
18591 uint32_t queueFamilyIndexCount;
18592 const uint32_t* pQueueFamilyIndices;
18593 ImageLayout initialLayout;
18594 };
18595 static_assert( sizeof( ImageCreateInfo ) == sizeof( VkImageCreateInfo ), "struct and wrapper have different size!" );
18596
18597 struct PipelineMultisampleStateCreateInfo
18598 {
18599 PipelineMultisampleStateCreateInfo( PipelineMultisampleStateCreateFlags flags_ = PipelineMultisampleStateCreateFlags(), SampleCountFlagBits rasterizationSamples_ = SampleCountFlagBits::e1, Bool32 sampleShadingEnable_ = 0, float minSampleShading_ = 0, const SampleMask* pSampleMask_ = nullptr, Bool32 alphaToCoverageEnable_ = 0, Bool32 alphaToOneEnable_ = 0 )
18600 : sType( StructureType::ePipelineMultisampleStateCreateInfo )
18601 , pNext( nullptr )
18602 , flags( flags_ )
18603 , rasterizationSamples( rasterizationSamples_ )
18604 , sampleShadingEnable( sampleShadingEnable_ )
18605 , minSampleShading( minSampleShading_ )
18606 , pSampleMask( pSampleMask_ )
18607 , alphaToCoverageEnable( alphaToCoverageEnable_ )
18608 , alphaToOneEnable( alphaToOneEnable_ )
18609 {
18610 }
18611
18612 PipelineMultisampleStateCreateInfo( VkPipelineMultisampleStateCreateInfo const & rhs )
18613 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018614 memcpy( this, &rhs, sizeof( PipelineMultisampleStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018615 }
18616
18617 PipelineMultisampleStateCreateInfo& operator=( VkPipelineMultisampleStateCreateInfo const & rhs )
18618 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018619 memcpy( this, &rhs, sizeof( PipelineMultisampleStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018620 return *this;
18621 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018622 PipelineMultisampleStateCreateInfo& setPNext( const void* pNext_ )
18623 {
18624 pNext = pNext_;
18625 return *this;
18626 }
18627
18628 PipelineMultisampleStateCreateInfo& setFlags( PipelineMultisampleStateCreateFlags flags_ )
18629 {
18630 flags = flags_;
18631 return *this;
18632 }
18633
18634 PipelineMultisampleStateCreateInfo& setRasterizationSamples( SampleCountFlagBits rasterizationSamples_ )
18635 {
18636 rasterizationSamples = rasterizationSamples_;
18637 return *this;
18638 }
18639
18640 PipelineMultisampleStateCreateInfo& setSampleShadingEnable( Bool32 sampleShadingEnable_ )
18641 {
18642 sampleShadingEnable = sampleShadingEnable_;
18643 return *this;
18644 }
18645
18646 PipelineMultisampleStateCreateInfo& setMinSampleShading( float minSampleShading_ )
18647 {
18648 minSampleShading = minSampleShading_;
18649 return *this;
18650 }
18651
18652 PipelineMultisampleStateCreateInfo& setPSampleMask( const SampleMask* pSampleMask_ )
18653 {
18654 pSampleMask = pSampleMask_;
18655 return *this;
18656 }
18657
18658 PipelineMultisampleStateCreateInfo& setAlphaToCoverageEnable( Bool32 alphaToCoverageEnable_ )
18659 {
18660 alphaToCoverageEnable = alphaToCoverageEnable_;
18661 return *this;
18662 }
18663
18664 PipelineMultisampleStateCreateInfo& setAlphaToOneEnable( Bool32 alphaToOneEnable_ )
18665 {
18666 alphaToOneEnable = alphaToOneEnable_;
18667 return *this;
18668 }
18669
18670 operator const VkPipelineMultisampleStateCreateInfo&() const
18671 {
18672 return *reinterpret_cast<const VkPipelineMultisampleStateCreateInfo*>(this);
18673 }
18674
18675 bool operator==( PipelineMultisampleStateCreateInfo const& rhs ) const
18676 {
18677 return ( sType == rhs.sType )
18678 && ( pNext == rhs.pNext )
18679 && ( flags == rhs.flags )
18680 && ( rasterizationSamples == rhs.rasterizationSamples )
18681 && ( sampleShadingEnable == rhs.sampleShadingEnable )
18682 && ( minSampleShading == rhs.minSampleShading )
18683 && ( pSampleMask == rhs.pSampleMask )
18684 && ( alphaToCoverageEnable == rhs.alphaToCoverageEnable )
18685 && ( alphaToOneEnable == rhs.alphaToOneEnable );
18686 }
18687
18688 bool operator!=( PipelineMultisampleStateCreateInfo const& rhs ) const
18689 {
18690 return !operator==( rhs );
18691 }
18692
18693 private:
18694 StructureType sType;
18695
18696 public:
18697 const void* pNext;
18698 PipelineMultisampleStateCreateFlags flags;
18699 SampleCountFlagBits rasterizationSamples;
18700 Bool32 sampleShadingEnable;
18701 float minSampleShading;
18702 const SampleMask* pSampleMask;
18703 Bool32 alphaToCoverageEnable;
18704 Bool32 alphaToOneEnable;
18705 };
18706 static_assert( sizeof( PipelineMultisampleStateCreateInfo ) == sizeof( VkPipelineMultisampleStateCreateInfo ), "struct and wrapper have different size!" );
18707
18708 struct GraphicsPipelineCreateInfo
18709 {
18710 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 )
18711 : sType( StructureType::eGraphicsPipelineCreateInfo )
18712 , pNext( nullptr )
18713 , flags( flags_ )
18714 , stageCount( stageCount_ )
18715 , pStages( pStages_ )
18716 , pVertexInputState( pVertexInputState_ )
18717 , pInputAssemblyState( pInputAssemblyState_ )
18718 , pTessellationState( pTessellationState_ )
18719 , pViewportState( pViewportState_ )
18720 , pRasterizationState( pRasterizationState_ )
18721 , pMultisampleState( pMultisampleState_ )
18722 , pDepthStencilState( pDepthStencilState_ )
18723 , pColorBlendState( pColorBlendState_ )
18724 , pDynamicState( pDynamicState_ )
18725 , layout( layout_ )
18726 , renderPass( renderPass_ )
18727 , subpass( subpass_ )
18728 , basePipelineHandle( basePipelineHandle_ )
18729 , basePipelineIndex( basePipelineIndex_ )
18730 {
18731 }
18732
18733 GraphicsPipelineCreateInfo( VkGraphicsPipelineCreateInfo const & rhs )
18734 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018735 memcpy( this, &rhs, sizeof( GraphicsPipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018736 }
18737
18738 GraphicsPipelineCreateInfo& operator=( VkGraphicsPipelineCreateInfo const & rhs )
18739 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018740 memcpy( this, &rhs, sizeof( GraphicsPipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018741 return *this;
18742 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018743 GraphicsPipelineCreateInfo& setPNext( const void* pNext_ )
18744 {
18745 pNext = pNext_;
18746 return *this;
18747 }
18748
18749 GraphicsPipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
18750 {
18751 flags = flags_;
18752 return *this;
18753 }
18754
18755 GraphicsPipelineCreateInfo& setStageCount( uint32_t stageCount_ )
18756 {
18757 stageCount = stageCount_;
18758 return *this;
18759 }
18760
18761 GraphicsPipelineCreateInfo& setPStages( const PipelineShaderStageCreateInfo* pStages_ )
18762 {
18763 pStages = pStages_;
18764 return *this;
18765 }
18766
18767 GraphicsPipelineCreateInfo& setPVertexInputState( const PipelineVertexInputStateCreateInfo* pVertexInputState_ )
18768 {
18769 pVertexInputState = pVertexInputState_;
18770 return *this;
18771 }
18772
18773 GraphicsPipelineCreateInfo& setPInputAssemblyState( const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState_ )
18774 {
18775 pInputAssemblyState = pInputAssemblyState_;
18776 return *this;
18777 }
18778
18779 GraphicsPipelineCreateInfo& setPTessellationState( const PipelineTessellationStateCreateInfo* pTessellationState_ )
18780 {
18781 pTessellationState = pTessellationState_;
18782 return *this;
18783 }
18784
18785 GraphicsPipelineCreateInfo& setPViewportState( const PipelineViewportStateCreateInfo* pViewportState_ )
18786 {
18787 pViewportState = pViewportState_;
18788 return *this;
18789 }
18790
18791 GraphicsPipelineCreateInfo& setPRasterizationState( const PipelineRasterizationStateCreateInfo* pRasterizationState_ )
18792 {
18793 pRasterizationState = pRasterizationState_;
18794 return *this;
18795 }
18796
18797 GraphicsPipelineCreateInfo& setPMultisampleState( const PipelineMultisampleStateCreateInfo* pMultisampleState_ )
18798 {
18799 pMultisampleState = pMultisampleState_;
18800 return *this;
18801 }
18802
18803 GraphicsPipelineCreateInfo& setPDepthStencilState( const PipelineDepthStencilStateCreateInfo* pDepthStencilState_ )
18804 {
18805 pDepthStencilState = pDepthStencilState_;
18806 return *this;
18807 }
18808
18809 GraphicsPipelineCreateInfo& setPColorBlendState( const PipelineColorBlendStateCreateInfo* pColorBlendState_ )
18810 {
18811 pColorBlendState = pColorBlendState_;
18812 return *this;
18813 }
18814
18815 GraphicsPipelineCreateInfo& setPDynamicState( const PipelineDynamicStateCreateInfo* pDynamicState_ )
18816 {
18817 pDynamicState = pDynamicState_;
18818 return *this;
18819 }
18820
18821 GraphicsPipelineCreateInfo& setLayout( PipelineLayout layout_ )
18822 {
18823 layout = layout_;
18824 return *this;
18825 }
18826
18827 GraphicsPipelineCreateInfo& setRenderPass( RenderPass renderPass_ )
18828 {
18829 renderPass = renderPass_;
18830 return *this;
18831 }
18832
18833 GraphicsPipelineCreateInfo& setSubpass( uint32_t subpass_ )
18834 {
18835 subpass = subpass_;
18836 return *this;
18837 }
18838
18839 GraphicsPipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
18840 {
18841 basePipelineHandle = basePipelineHandle_;
18842 return *this;
18843 }
18844
18845 GraphicsPipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
18846 {
18847 basePipelineIndex = basePipelineIndex_;
18848 return *this;
18849 }
18850
18851 operator const VkGraphicsPipelineCreateInfo&() const
18852 {
18853 return *reinterpret_cast<const VkGraphicsPipelineCreateInfo*>(this);
18854 }
18855
18856 bool operator==( GraphicsPipelineCreateInfo const& rhs ) const
18857 {
18858 return ( sType == rhs.sType )
18859 && ( pNext == rhs.pNext )
18860 && ( flags == rhs.flags )
18861 && ( stageCount == rhs.stageCount )
18862 && ( pStages == rhs.pStages )
18863 && ( pVertexInputState == rhs.pVertexInputState )
18864 && ( pInputAssemblyState == rhs.pInputAssemblyState )
18865 && ( pTessellationState == rhs.pTessellationState )
18866 && ( pViewportState == rhs.pViewportState )
18867 && ( pRasterizationState == rhs.pRasterizationState )
18868 && ( pMultisampleState == rhs.pMultisampleState )
18869 && ( pDepthStencilState == rhs.pDepthStencilState )
18870 && ( pColorBlendState == rhs.pColorBlendState )
18871 && ( pDynamicState == rhs.pDynamicState )
18872 && ( layout == rhs.layout )
18873 && ( renderPass == rhs.renderPass )
18874 && ( subpass == rhs.subpass )
18875 && ( basePipelineHandle == rhs.basePipelineHandle )
18876 && ( basePipelineIndex == rhs.basePipelineIndex );
18877 }
18878
18879 bool operator!=( GraphicsPipelineCreateInfo const& rhs ) const
18880 {
18881 return !operator==( rhs );
18882 }
18883
18884 private:
18885 StructureType sType;
18886
18887 public:
18888 const void* pNext;
18889 PipelineCreateFlags flags;
18890 uint32_t stageCount;
18891 const PipelineShaderStageCreateInfo* pStages;
18892 const PipelineVertexInputStateCreateInfo* pVertexInputState;
18893 const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState;
18894 const PipelineTessellationStateCreateInfo* pTessellationState;
18895 const PipelineViewportStateCreateInfo* pViewportState;
18896 const PipelineRasterizationStateCreateInfo* pRasterizationState;
18897 const PipelineMultisampleStateCreateInfo* pMultisampleState;
18898 const PipelineDepthStencilStateCreateInfo* pDepthStencilState;
18899 const PipelineColorBlendStateCreateInfo* pColorBlendState;
18900 const PipelineDynamicStateCreateInfo* pDynamicState;
18901 PipelineLayout layout;
18902 RenderPass renderPass;
18903 uint32_t subpass;
18904 Pipeline basePipelineHandle;
18905 int32_t basePipelineIndex;
18906 };
18907 static_assert( sizeof( GraphicsPipelineCreateInfo ) == sizeof( VkGraphicsPipelineCreateInfo ), "struct and wrapper have different size!" );
18908
18909 struct PhysicalDeviceLimits
18910 {
18911 operator const VkPhysicalDeviceLimits&() const
18912 {
18913 return *reinterpret_cast<const VkPhysicalDeviceLimits*>(this);
18914 }
18915
18916 bool operator==( PhysicalDeviceLimits const& rhs ) const
18917 {
18918 return ( maxImageDimension1D == rhs.maxImageDimension1D )
18919 && ( maxImageDimension2D == rhs.maxImageDimension2D )
18920 && ( maxImageDimension3D == rhs.maxImageDimension3D )
18921 && ( maxImageDimensionCube == rhs.maxImageDimensionCube )
18922 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
18923 && ( maxTexelBufferElements == rhs.maxTexelBufferElements )
18924 && ( maxUniformBufferRange == rhs.maxUniformBufferRange )
18925 && ( maxStorageBufferRange == rhs.maxStorageBufferRange )
18926 && ( maxPushConstantsSize == rhs.maxPushConstantsSize )
18927 && ( maxMemoryAllocationCount == rhs.maxMemoryAllocationCount )
18928 && ( maxSamplerAllocationCount == rhs.maxSamplerAllocationCount )
18929 && ( bufferImageGranularity == rhs.bufferImageGranularity )
18930 && ( sparseAddressSpaceSize == rhs.sparseAddressSpaceSize )
18931 && ( maxBoundDescriptorSets == rhs.maxBoundDescriptorSets )
18932 && ( maxPerStageDescriptorSamplers == rhs.maxPerStageDescriptorSamplers )
18933 && ( maxPerStageDescriptorUniformBuffers == rhs.maxPerStageDescriptorUniformBuffers )
18934 && ( maxPerStageDescriptorStorageBuffers == rhs.maxPerStageDescriptorStorageBuffers )
18935 && ( maxPerStageDescriptorSampledImages == rhs.maxPerStageDescriptorSampledImages )
18936 && ( maxPerStageDescriptorStorageImages == rhs.maxPerStageDescriptorStorageImages )
18937 && ( maxPerStageDescriptorInputAttachments == rhs.maxPerStageDescriptorInputAttachments )
18938 && ( maxPerStageResources == rhs.maxPerStageResources )
18939 && ( maxDescriptorSetSamplers == rhs.maxDescriptorSetSamplers )
18940 && ( maxDescriptorSetUniformBuffers == rhs.maxDescriptorSetUniformBuffers )
18941 && ( maxDescriptorSetUniformBuffersDynamic == rhs.maxDescriptorSetUniformBuffersDynamic )
18942 && ( maxDescriptorSetStorageBuffers == rhs.maxDescriptorSetStorageBuffers )
18943 && ( maxDescriptorSetStorageBuffersDynamic == rhs.maxDescriptorSetStorageBuffersDynamic )
18944 && ( maxDescriptorSetSampledImages == rhs.maxDescriptorSetSampledImages )
18945 && ( maxDescriptorSetStorageImages == rhs.maxDescriptorSetStorageImages )
18946 && ( maxDescriptorSetInputAttachments == rhs.maxDescriptorSetInputAttachments )
18947 && ( maxVertexInputAttributes == rhs.maxVertexInputAttributes )
18948 && ( maxVertexInputBindings == rhs.maxVertexInputBindings )
18949 && ( maxVertexInputAttributeOffset == rhs.maxVertexInputAttributeOffset )
18950 && ( maxVertexInputBindingStride == rhs.maxVertexInputBindingStride )
18951 && ( maxVertexOutputComponents == rhs.maxVertexOutputComponents )
18952 && ( maxTessellationGenerationLevel == rhs.maxTessellationGenerationLevel )
18953 && ( maxTessellationPatchSize == rhs.maxTessellationPatchSize )
18954 && ( maxTessellationControlPerVertexInputComponents == rhs.maxTessellationControlPerVertexInputComponents )
18955 && ( maxTessellationControlPerVertexOutputComponents == rhs.maxTessellationControlPerVertexOutputComponents )
18956 && ( maxTessellationControlPerPatchOutputComponents == rhs.maxTessellationControlPerPatchOutputComponents )
18957 && ( maxTessellationControlTotalOutputComponents == rhs.maxTessellationControlTotalOutputComponents )
18958 && ( maxTessellationEvaluationInputComponents == rhs.maxTessellationEvaluationInputComponents )
18959 && ( maxTessellationEvaluationOutputComponents == rhs.maxTessellationEvaluationOutputComponents )
18960 && ( maxGeometryShaderInvocations == rhs.maxGeometryShaderInvocations )
18961 && ( maxGeometryInputComponents == rhs.maxGeometryInputComponents )
18962 && ( maxGeometryOutputComponents == rhs.maxGeometryOutputComponents )
18963 && ( maxGeometryOutputVertices == rhs.maxGeometryOutputVertices )
18964 && ( maxGeometryTotalOutputComponents == rhs.maxGeometryTotalOutputComponents )
18965 && ( maxFragmentInputComponents == rhs.maxFragmentInputComponents )
18966 && ( maxFragmentOutputAttachments == rhs.maxFragmentOutputAttachments )
18967 && ( maxFragmentDualSrcAttachments == rhs.maxFragmentDualSrcAttachments )
18968 && ( maxFragmentCombinedOutputResources == rhs.maxFragmentCombinedOutputResources )
18969 && ( maxComputeSharedMemorySize == rhs.maxComputeSharedMemorySize )
18970 && ( memcmp( maxComputeWorkGroupCount, rhs.maxComputeWorkGroupCount, 3 * sizeof( uint32_t ) ) == 0 )
18971 && ( maxComputeWorkGroupInvocations == rhs.maxComputeWorkGroupInvocations )
18972 && ( memcmp( maxComputeWorkGroupSize, rhs.maxComputeWorkGroupSize, 3 * sizeof( uint32_t ) ) == 0 )
18973 && ( subPixelPrecisionBits == rhs.subPixelPrecisionBits )
18974 && ( subTexelPrecisionBits == rhs.subTexelPrecisionBits )
18975 && ( mipmapPrecisionBits == rhs.mipmapPrecisionBits )
18976 && ( maxDrawIndexedIndexValue == rhs.maxDrawIndexedIndexValue )
18977 && ( maxDrawIndirectCount == rhs.maxDrawIndirectCount )
18978 && ( maxSamplerLodBias == rhs.maxSamplerLodBias )
18979 && ( maxSamplerAnisotropy == rhs.maxSamplerAnisotropy )
18980 && ( maxViewports == rhs.maxViewports )
18981 && ( memcmp( maxViewportDimensions, rhs.maxViewportDimensions, 2 * sizeof( uint32_t ) ) == 0 )
18982 && ( memcmp( viewportBoundsRange, rhs.viewportBoundsRange, 2 * sizeof( float ) ) == 0 )
18983 && ( viewportSubPixelBits == rhs.viewportSubPixelBits )
18984 && ( minMemoryMapAlignment == rhs.minMemoryMapAlignment )
18985 && ( minTexelBufferOffsetAlignment == rhs.minTexelBufferOffsetAlignment )
18986 && ( minUniformBufferOffsetAlignment == rhs.minUniformBufferOffsetAlignment )
18987 && ( minStorageBufferOffsetAlignment == rhs.minStorageBufferOffsetAlignment )
18988 && ( minTexelOffset == rhs.minTexelOffset )
18989 && ( maxTexelOffset == rhs.maxTexelOffset )
18990 && ( minTexelGatherOffset == rhs.minTexelGatherOffset )
18991 && ( maxTexelGatherOffset == rhs.maxTexelGatherOffset )
18992 && ( minInterpolationOffset == rhs.minInterpolationOffset )
18993 && ( maxInterpolationOffset == rhs.maxInterpolationOffset )
18994 && ( subPixelInterpolationOffsetBits == rhs.subPixelInterpolationOffsetBits )
18995 && ( maxFramebufferWidth == rhs.maxFramebufferWidth )
18996 && ( maxFramebufferHeight == rhs.maxFramebufferHeight )
18997 && ( maxFramebufferLayers == rhs.maxFramebufferLayers )
18998 && ( framebufferColorSampleCounts == rhs.framebufferColorSampleCounts )
18999 && ( framebufferDepthSampleCounts == rhs.framebufferDepthSampleCounts )
19000 && ( framebufferStencilSampleCounts == rhs.framebufferStencilSampleCounts )
19001 && ( framebufferNoAttachmentsSampleCounts == rhs.framebufferNoAttachmentsSampleCounts )
19002 && ( maxColorAttachments == rhs.maxColorAttachments )
19003 && ( sampledImageColorSampleCounts == rhs.sampledImageColorSampleCounts )
19004 && ( sampledImageIntegerSampleCounts == rhs.sampledImageIntegerSampleCounts )
19005 && ( sampledImageDepthSampleCounts == rhs.sampledImageDepthSampleCounts )
19006 && ( sampledImageStencilSampleCounts == rhs.sampledImageStencilSampleCounts )
19007 && ( storageImageSampleCounts == rhs.storageImageSampleCounts )
19008 && ( maxSampleMaskWords == rhs.maxSampleMaskWords )
19009 && ( timestampComputeAndGraphics == rhs.timestampComputeAndGraphics )
19010 && ( timestampPeriod == rhs.timestampPeriod )
19011 && ( maxClipDistances == rhs.maxClipDistances )
19012 && ( maxCullDistances == rhs.maxCullDistances )
19013 && ( maxCombinedClipAndCullDistances == rhs.maxCombinedClipAndCullDistances )
19014 && ( discreteQueuePriorities == rhs.discreteQueuePriorities )
19015 && ( memcmp( pointSizeRange, rhs.pointSizeRange, 2 * sizeof( float ) ) == 0 )
19016 && ( memcmp( lineWidthRange, rhs.lineWidthRange, 2 * sizeof( float ) ) == 0 )
19017 && ( pointSizeGranularity == rhs.pointSizeGranularity )
19018 && ( lineWidthGranularity == rhs.lineWidthGranularity )
19019 && ( strictLines == rhs.strictLines )
19020 && ( standardSampleLocations == rhs.standardSampleLocations )
19021 && ( optimalBufferCopyOffsetAlignment == rhs.optimalBufferCopyOffsetAlignment )
19022 && ( optimalBufferCopyRowPitchAlignment == rhs.optimalBufferCopyRowPitchAlignment )
19023 && ( nonCoherentAtomSize == rhs.nonCoherentAtomSize );
19024 }
19025
19026 bool operator!=( PhysicalDeviceLimits const& rhs ) const
19027 {
19028 return !operator==( rhs );
19029 }
19030
19031 uint32_t maxImageDimension1D;
19032 uint32_t maxImageDimension2D;
19033 uint32_t maxImageDimension3D;
19034 uint32_t maxImageDimensionCube;
19035 uint32_t maxImageArrayLayers;
19036 uint32_t maxTexelBufferElements;
19037 uint32_t maxUniformBufferRange;
19038 uint32_t maxStorageBufferRange;
19039 uint32_t maxPushConstantsSize;
19040 uint32_t maxMemoryAllocationCount;
19041 uint32_t maxSamplerAllocationCount;
19042 DeviceSize bufferImageGranularity;
19043 DeviceSize sparseAddressSpaceSize;
19044 uint32_t maxBoundDescriptorSets;
19045 uint32_t maxPerStageDescriptorSamplers;
19046 uint32_t maxPerStageDescriptorUniformBuffers;
19047 uint32_t maxPerStageDescriptorStorageBuffers;
19048 uint32_t maxPerStageDescriptorSampledImages;
19049 uint32_t maxPerStageDescriptorStorageImages;
19050 uint32_t maxPerStageDescriptorInputAttachments;
19051 uint32_t maxPerStageResources;
19052 uint32_t maxDescriptorSetSamplers;
19053 uint32_t maxDescriptorSetUniformBuffers;
19054 uint32_t maxDescriptorSetUniformBuffersDynamic;
19055 uint32_t maxDescriptorSetStorageBuffers;
19056 uint32_t maxDescriptorSetStorageBuffersDynamic;
19057 uint32_t maxDescriptorSetSampledImages;
19058 uint32_t maxDescriptorSetStorageImages;
19059 uint32_t maxDescriptorSetInputAttachments;
19060 uint32_t maxVertexInputAttributes;
19061 uint32_t maxVertexInputBindings;
19062 uint32_t maxVertexInputAttributeOffset;
19063 uint32_t maxVertexInputBindingStride;
19064 uint32_t maxVertexOutputComponents;
19065 uint32_t maxTessellationGenerationLevel;
19066 uint32_t maxTessellationPatchSize;
19067 uint32_t maxTessellationControlPerVertexInputComponents;
19068 uint32_t maxTessellationControlPerVertexOutputComponents;
19069 uint32_t maxTessellationControlPerPatchOutputComponents;
19070 uint32_t maxTessellationControlTotalOutputComponents;
19071 uint32_t maxTessellationEvaluationInputComponents;
19072 uint32_t maxTessellationEvaluationOutputComponents;
19073 uint32_t maxGeometryShaderInvocations;
19074 uint32_t maxGeometryInputComponents;
19075 uint32_t maxGeometryOutputComponents;
19076 uint32_t maxGeometryOutputVertices;
19077 uint32_t maxGeometryTotalOutputComponents;
19078 uint32_t maxFragmentInputComponents;
19079 uint32_t maxFragmentOutputAttachments;
19080 uint32_t maxFragmentDualSrcAttachments;
19081 uint32_t maxFragmentCombinedOutputResources;
19082 uint32_t maxComputeSharedMemorySize;
19083 uint32_t maxComputeWorkGroupCount[3];
19084 uint32_t maxComputeWorkGroupInvocations;
19085 uint32_t maxComputeWorkGroupSize[3];
19086 uint32_t subPixelPrecisionBits;
19087 uint32_t subTexelPrecisionBits;
19088 uint32_t mipmapPrecisionBits;
19089 uint32_t maxDrawIndexedIndexValue;
19090 uint32_t maxDrawIndirectCount;
19091 float maxSamplerLodBias;
19092 float maxSamplerAnisotropy;
19093 uint32_t maxViewports;
19094 uint32_t maxViewportDimensions[2];
19095 float viewportBoundsRange[2];
19096 uint32_t viewportSubPixelBits;
19097 size_t minMemoryMapAlignment;
19098 DeviceSize minTexelBufferOffsetAlignment;
19099 DeviceSize minUniformBufferOffsetAlignment;
19100 DeviceSize minStorageBufferOffsetAlignment;
19101 int32_t minTexelOffset;
19102 uint32_t maxTexelOffset;
19103 int32_t minTexelGatherOffset;
19104 uint32_t maxTexelGatherOffset;
19105 float minInterpolationOffset;
19106 float maxInterpolationOffset;
19107 uint32_t subPixelInterpolationOffsetBits;
19108 uint32_t maxFramebufferWidth;
19109 uint32_t maxFramebufferHeight;
19110 uint32_t maxFramebufferLayers;
19111 SampleCountFlags framebufferColorSampleCounts;
19112 SampleCountFlags framebufferDepthSampleCounts;
19113 SampleCountFlags framebufferStencilSampleCounts;
19114 SampleCountFlags framebufferNoAttachmentsSampleCounts;
19115 uint32_t maxColorAttachments;
19116 SampleCountFlags sampledImageColorSampleCounts;
19117 SampleCountFlags sampledImageIntegerSampleCounts;
19118 SampleCountFlags sampledImageDepthSampleCounts;
19119 SampleCountFlags sampledImageStencilSampleCounts;
19120 SampleCountFlags storageImageSampleCounts;
19121 uint32_t maxSampleMaskWords;
19122 Bool32 timestampComputeAndGraphics;
19123 float timestampPeriod;
19124 uint32_t maxClipDistances;
19125 uint32_t maxCullDistances;
19126 uint32_t maxCombinedClipAndCullDistances;
19127 uint32_t discreteQueuePriorities;
19128 float pointSizeRange[2];
19129 float lineWidthRange[2];
19130 float pointSizeGranularity;
19131 float lineWidthGranularity;
19132 Bool32 strictLines;
19133 Bool32 standardSampleLocations;
19134 DeviceSize optimalBufferCopyOffsetAlignment;
19135 DeviceSize optimalBufferCopyRowPitchAlignment;
19136 DeviceSize nonCoherentAtomSize;
19137 };
19138 static_assert( sizeof( PhysicalDeviceLimits ) == sizeof( VkPhysicalDeviceLimits ), "struct and wrapper have different size!" );
19139
19140 struct PhysicalDeviceProperties
19141 {
19142 operator const VkPhysicalDeviceProperties&() const
19143 {
19144 return *reinterpret_cast<const VkPhysicalDeviceProperties*>(this);
19145 }
19146
19147 bool operator==( PhysicalDeviceProperties const& rhs ) const
19148 {
19149 return ( apiVersion == rhs.apiVersion )
19150 && ( driverVersion == rhs.driverVersion )
19151 && ( vendorID == rhs.vendorID )
19152 && ( deviceID == rhs.deviceID )
19153 && ( deviceType == rhs.deviceType )
19154 && ( memcmp( deviceName, rhs.deviceName, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE * sizeof( char ) ) == 0 )
19155 && ( memcmp( pipelineCacheUUID, rhs.pipelineCacheUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
19156 && ( limits == rhs.limits )
19157 && ( sparseProperties == rhs.sparseProperties );
19158 }
19159
19160 bool operator!=( PhysicalDeviceProperties const& rhs ) const
19161 {
19162 return !operator==( rhs );
19163 }
19164
19165 uint32_t apiVersion;
19166 uint32_t driverVersion;
19167 uint32_t vendorID;
19168 uint32_t deviceID;
19169 PhysicalDeviceType deviceType;
19170 char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
19171 uint8_t pipelineCacheUUID[VK_UUID_SIZE];
19172 PhysicalDeviceLimits limits;
19173 PhysicalDeviceSparseProperties sparseProperties;
19174 };
19175 static_assert( sizeof( PhysicalDeviceProperties ) == sizeof( VkPhysicalDeviceProperties ), "struct and wrapper have different size!" );
19176
Mark Young39389872017-01-19 21:10:49 -070019177 struct PhysicalDeviceProperties2KHR
19178 {
19179 operator const VkPhysicalDeviceProperties2KHR&() const
19180 {
19181 return *reinterpret_cast<const VkPhysicalDeviceProperties2KHR*>(this);
19182 }
19183
19184 bool operator==( PhysicalDeviceProperties2KHR const& rhs ) const
19185 {
19186 return ( sType == rhs.sType )
19187 && ( pNext == rhs.pNext )
19188 && ( properties == rhs.properties );
19189 }
19190
19191 bool operator!=( PhysicalDeviceProperties2KHR const& rhs ) const
19192 {
19193 return !operator==( rhs );
19194 }
19195
19196 private:
19197 StructureType sType;
19198
19199 public:
19200 void* pNext;
19201 PhysicalDeviceProperties properties;
19202 };
19203 static_assert( sizeof( PhysicalDeviceProperties2KHR ) == sizeof( VkPhysicalDeviceProperties2KHR ), "struct and wrapper have different size!" );
19204
19205 struct ImageFormatProperties2KHR
19206 {
19207 operator const VkImageFormatProperties2KHR&() const
19208 {
19209 return *reinterpret_cast<const VkImageFormatProperties2KHR*>(this);
19210 }
19211
19212 bool operator==( ImageFormatProperties2KHR const& rhs ) const
19213 {
19214 return ( sType == rhs.sType )
19215 && ( pNext == rhs.pNext )
19216 && ( imageFormatProperties == rhs.imageFormatProperties );
19217 }
19218
19219 bool operator!=( ImageFormatProperties2KHR const& rhs ) const
19220 {
19221 return !operator==( rhs );
19222 }
19223
19224 private:
19225 StructureType sType;
19226
19227 public:
19228 void* pNext;
19229 ImageFormatProperties imageFormatProperties;
19230 };
19231 static_assert( sizeof( ImageFormatProperties2KHR ) == sizeof( VkImageFormatProperties2KHR ), "struct and wrapper have different size!" );
19232
19233 struct PhysicalDeviceSparseImageFormatInfo2KHR
19234 {
19235 PhysicalDeviceSparseImageFormatInfo2KHR( Format format_ = Format::eUndefined, ImageType type_ = ImageType::e1D, SampleCountFlagBits samples_ = SampleCountFlagBits::e1, ImageUsageFlags usage_ = ImageUsageFlags(), ImageTiling tiling_ = ImageTiling::eOptimal )
19236 : sType( StructureType::ePhysicalDeviceSparseImageFormatInfo2KHR )
19237 , pNext( nullptr )
19238 , format( format_ )
19239 , type( type_ )
19240 , samples( samples_ )
19241 , usage( usage_ )
19242 , tiling( tiling_ )
19243 {
19244 }
19245
19246 PhysicalDeviceSparseImageFormatInfo2KHR( VkPhysicalDeviceSparseImageFormatInfo2KHR const & rhs )
19247 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019248 memcpy( this, &rhs, sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070019249 }
19250
19251 PhysicalDeviceSparseImageFormatInfo2KHR& operator=( VkPhysicalDeviceSparseImageFormatInfo2KHR const & rhs )
19252 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019253 memcpy( this, &rhs, sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070019254 return *this;
19255 }
Mark Young39389872017-01-19 21:10:49 -070019256 PhysicalDeviceSparseImageFormatInfo2KHR& setPNext( const void* pNext_ )
19257 {
19258 pNext = pNext_;
19259 return *this;
19260 }
19261
19262 PhysicalDeviceSparseImageFormatInfo2KHR& setFormat( Format format_ )
19263 {
19264 format = format_;
19265 return *this;
19266 }
19267
19268 PhysicalDeviceSparseImageFormatInfo2KHR& setType( ImageType type_ )
19269 {
19270 type = type_;
19271 return *this;
19272 }
19273
19274 PhysicalDeviceSparseImageFormatInfo2KHR& setSamples( SampleCountFlagBits samples_ )
19275 {
19276 samples = samples_;
19277 return *this;
19278 }
19279
19280 PhysicalDeviceSparseImageFormatInfo2KHR& setUsage( ImageUsageFlags usage_ )
19281 {
19282 usage = usage_;
19283 return *this;
19284 }
19285
19286 PhysicalDeviceSparseImageFormatInfo2KHR& setTiling( ImageTiling tiling_ )
19287 {
19288 tiling = tiling_;
19289 return *this;
19290 }
19291
19292 operator const VkPhysicalDeviceSparseImageFormatInfo2KHR&() const
19293 {
19294 return *reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>(this);
19295 }
19296
19297 bool operator==( PhysicalDeviceSparseImageFormatInfo2KHR const& rhs ) const
19298 {
19299 return ( sType == rhs.sType )
19300 && ( pNext == rhs.pNext )
19301 && ( format == rhs.format )
19302 && ( type == rhs.type )
19303 && ( samples == rhs.samples )
19304 && ( usage == rhs.usage )
19305 && ( tiling == rhs.tiling );
19306 }
19307
19308 bool operator!=( PhysicalDeviceSparseImageFormatInfo2KHR const& rhs ) const
19309 {
19310 return !operator==( rhs );
19311 }
19312
19313 private:
19314 StructureType sType;
19315
19316 public:
19317 const void* pNext;
19318 Format format;
19319 ImageType type;
19320 SampleCountFlagBits samples;
19321 ImageUsageFlags usage;
19322 ImageTiling tiling;
19323 };
19324 static_assert( sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) == sizeof( VkPhysicalDeviceSparseImageFormatInfo2KHR ), "struct and wrapper have different size!" );
19325
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019326 struct SampleLocationsInfoEXT
19327 {
19328 SampleLocationsInfoEXT( SampleCountFlagBits sampleLocationsPerPixel_ = SampleCountFlagBits::e1, Extent2D sampleLocationGridSize_ = Extent2D(), uint32_t sampleLocationsCount_ = 0, const SampleLocationEXT* pSampleLocations_ = nullptr )
19329 : sType( StructureType::eSampleLocationsInfoEXT )
19330 , pNext( nullptr )
19331 , sampleLocationsPerPixel( sampleLocationsPerPixel_ )
19332 , sampleLocationGridSize( sampleLocationGridSize_ )
19333 , sampleLocationsCount( sampleLocationsCount_ )
19334 , pSampleLocations( pSampleLocations_ )
19335 {
19336 }
19337
19338 SampleLocationsInfoEXT( VkSampleLocationsInfoEXT const & rhs )
19339 {
19340 memcpy( this, &rhs, sizeof( SampleLocationsInfoEXT ) );
19341 }
19342
19343 SampleLocationsInfoEXT& operator=( VkSampleLocationsInfoEXT const & rhs )
19344 {
19345 memcpy( this, &rhs, sizeof( SampleLocationsInfoEXT ) );
19346 return *this;
19347 }
19348 SampleLocationsInfoEXT& setPNext( const void* pNext_ )
19349 {
19350 pNext = pNext_;
19351 return *this;
19352 }
19353
19354 SampleLocationsInfoEXT& setSampleLocationsPerPixel( SampleCountFlagBits sampleLocationsPerPixel_ )
19355 {
19356 sampleLocationsPerPixel = sampleLocationsPerPixel_;
19357 return *this;
19358 }
19359
19360 SampleLocationsInfoEXT& setSampleLocationGridSize( Extent2D sampleLocationGridSize_ )
19361 {
19362 sampleLocationGridSize = sampleLocationGridSize_;
19363 return *this;
19364 }
19365
19366 SampleLocationsInfoEXT& setSampleLocationsCount( uint32_t sampleLocationsCount_ )
19367 {
19368 sampleLocationsCount = sampleLocationsCount_;
19369 return *this;
19370 }
19371
19372 SampleLocationsInfoEXT& setPSampleLocations( const SampleLocationEXT* pSampleLocations_ )
19373 {
19374 pSampleLocations = pSampleLocations_;
19375 return *this;
19376 }
19377
19378 operator const VkSampleLocationsInfoEXT&() const
19379 {
19380 return *reinterpret_cast<const VkSampleLocationsInfoEXT*>(this);
19381 }
19382
19383 bool operator==( SampleLocationsInfoEXT const& rhs ) const
19384 {
19385 return ( sType == rhs.sType )
19386 && ( pNext == rhs.pNext )
19387 && ( sampleLocationsPerPixel == rhs.sampleLocationsPerPixel )
19388 && ( sampleLocationGridSize == rhs.sampleLocationGridSize )
19389 && ( sampleLocationsCount == rhs.sampleLocationsCount )
19390 && ( pSampleLocations == rhs.pSampleLocations );
19391 }
19392
19393 bool operator!=( SampleLocationsInfoEXT const& rhs ) const
19394 {
19395 return !operator==( rhs );
19396 }
19397
19398 private:
19399 StructureType sType;
19400
19401 public:
19402 const void* pNext;
19403 SampleCountFlagBits sampleLocationsPerPixel;
19404 Extent2D sampleLocationGridSize;
19405 uint32_t sampleLocationsCount;
19406 const SampleLocationEXT* pSampleLocations;
19407 };
19408 static_assert( sizeof( SampleLocationsInfoEXT ) == sizeof( VkSampleLocationsInfoEXT ), "struct and wrapper have different size!" );
19409
19410 struct AttachmentSampleLocationsEXT
19411 {
19412 AttachmentSampleLocationsEXT( uint32_t attachmentIndex_ = 0, SampleLocationsInfoEXT sampleLocationsInfo_ = SampleLocationsInfoEXT() )
19413 : attachmentIndex( attachmentIndex_ )
19414 , sampleLocationsInfo( sampleLocationsInfo_ )
19415 {
19416 }
19417
19418 AttachmentSampleLocationsEXT( VkAttachmentSampleLocationsEXT const & rhs )
19419 {
19420 memcpy( this, &rhs, sizeof( AttachmentSampleLocationsEXT ) );
19421 }
19422
19423 AttachmentSampleLocationsEXT& operator=( VkAttachmentSampleLocationsEXT const & rhs )
19424 {
19425 memcpy( this, &rhs, sizeof( AttachmentSampleLocationsEXT ) );
19426 return *this;
19427 }
19428 AttachmentSampleLocationsEXT& setAttachmentIndex( uint32_t attachmentIndex_ )
19429 {
19430 attachmentIndex = attachmentIndex_;
19431 return *this;
19432 }
19433
19434 AttachmentSampleLocationsEXT& setSampleLocationsInfo( SampleLocationsInfoEXT sampleLocationsInfo_ )
19435 {
19436 sampleLocationsInfo = sampleLocationsInfo_;
19437 return *this;
19438 }
19439
19440 operator const VkAttachmentSampleLocationsEXT&() const
19441 {
19442 return *reinterpret_cast<const VkAttachmentSampleLocationsEXT*>(this);
19443 }
19444
19445 bool operator==( AttachmentSampleLocationsEXT const& rhs ) const
19446 {
19447 return ( attachmentIndex == rhs.attachmentIndex )
19448 && ( sampleLocationsInfo == rhs.sampleLocationsInfo );
19449 }
19450
19451 bool operator!=( AttachmentSampleLocationsEXT const& rhs ) const
19452 {
19453 return !operator==( rhs );
19454 }
19455
19456 uint32_t attachmentIndex;
19457 SampleLocationsInfoEXT sampleLocationsInfo;
19458 };
19459 static_assert( sizeof( AttachmentSampleLocationsEXT ) == sizeof( VkAttachmentSampleLocationsEXT ), "struct and wrapper have different size!" );
19460
19461 struct SubpassSampleLocationsEXT
19462 {
19463 SubpassSampleLocationsEXT( uint32_t subpassIndex_ = 0, SampleLocationsInfoEXT sampleLocationsInfo_ = SampleLocationsInfoEXT() )
19464 : subpassIndex( subpassIndex_ )
19465 , sampleLocationsInfo( sampleLocationsInfo_ )
19466 {
19467 }
19468
19469 SubpassSampleLocationsEXT( VkSubpassSampleLocationsEXT const & rhs )
19470 {
19471 memcpy( this, &rhs, sizeof( SubpassSampleLocationsEXT ) );
19472 }
19473
19474 SubpassSampleLocationsEXT& operator=( VkSubpassSampleLocationsEXT const & rhs )
19475 {
19476 memcpy( this, &rhs, sizeof( SubpassSampleLocationsEXT ) );
19477 return *this;
19478 }
19479 SubpassSampleLocationsEXT& setSubpassIndex( uint32_t subpassIndex_ )
19480 {
19481 subpassIndex = subpassIndex_;
19482 return *this;
19483 }
19484
19485 SubpassSampleLocationsEXT& setSampleLocationsInfo( SampleLocationsInfoEXT sampleLocationsInfo_ )
19486 {
19487 sampleLocationsInfo = sampleLocationsInfo_;
19488 return *this;
19489 }
19490
19491 operator const VkSubpassSampleLocationsEXT&() const
19492 {
19493 return *reinterpret_cast<const VkSubpassSampleLocationsEXT*>(this);
19494 }
19495
19496 bool operator==( SubpassSampleLocationsEXT const& rhs ) const
19497 {
19498 return ( subpassIndex == rhs.subpassIndex )
19499 && ( sampleLocationsInfo == rhs.sampleLocationsInfo );
19500 }
19501
19502 bool operator!=( SubpassSampleLocationsEXT const& rhs ) const
19503 {
19504 return !operator==( rhs );
19505 }
19506
19507 uint32_t subpassIndex;
19508 SampleLocationsInfoEXT sampleLocationsInfo;
19509 };
19510 static_assert( sizeof( SubpassSampleLocationsEXT ) == sizeof( VkSubpassSampleLocationsEXT ), "struct and wrapper have different size!" );
19511
19512 struct RenderPassSampleLocationsBeginInfoEXT
19513 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060019514 RenderPassSampleLocationsBeginInfoEXT( uint32_t attachmentInitialSampleLocationsCount_ = 0, const AttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations_ = nullptr, uint32_t postSubpassSampleLocationsCount_ = 0, const SubpassSampleLocationsEXT* pPostSubpassSampleLocations_ = nullptr )
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019515 : sType( StructureType::eRenderPassSampleLocationsBeginInfoEXT )
19516 , pNext( nullptr )
19517 , attachmentInitialSampleLocationsCount( attachmentInitialSampleLocationsCount_ )
19518 , pAttachmentInitialSampleLocations( pAttachmentInitialSampleLocations_ )
19519 , postSubpassSampleLocationsCount( postSubpassSampleLocationsCount_ )
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060019520 , pPostSubpassSampleLocations( pPostSubpassSampleLocations_ )
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019521 {
19522 }
19523
19524 RenderPassSampleLocationsBeginInfoEXT( VkRenderPassSampleLocationsBeginInfoEXT const & rhs )
19525 {
19526 memcpy( this, &rhs, sizeof( RenderPassSampleLocationsBeginInfoEXT ) );
19527 }
19528
19529 RenderPassSampleLocationsBeginInfoEXT& operator=( VkRenderPassSampleLocationsBeginInfoEXT const & rhs )
19530 {
19531 memcpy( this, &rhs, sizeof( RenderPassSampleLocationsBeginInfoEXT ) );
19532 return *this;
19533 }
19534 RenderPassSampleLocationsBeginInfoEXT& setPNext( const void* pNext_ )
19535 {
19536 pNext = pNext_;
19537 return *this;
19538 }
19539
19540 RenderPassSampleLocationsBeginInfoEXT& setAttachmentInitialSampleLocationsCount( uint32_t attachmentInitialSampleLocationsCount_ )
19541 {
19542 attachmentInitialSampleLocationsCount = attachmentInitialSampleLocationsCount_;
19543 return *this;
19544 }
19545
19546 RenderPassSampleLocationsBeginInfoEXT& setPAttachmentInitialSampleLocations( const AttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations_ )
19547 {
19548 pAttachmentInitialSampleLocations = pAttachmentInitialSampleLocations_;
19549 return *this;
19550 }
19551
19552 RenderPassSampleLocationsBeginInfoEXT& setPostSubpassSampleLocationsCount( uint32_t postSubpassSampleLocationsCount_ )
19553 {
19554 postSubpassSampleLocationsCount = postSubpassSampleLocationsCount_;
19555 return *this;
19556 }
19557
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060019558 RenderPassSampleLocationsBeginInfoEXT& setPPostSubpassSampleLocations( const SubpassSampleLocationsEXT* pPostSubpassSampleLocations_ )
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019559 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060019560 pPostSubpassSampleLocations = pPostSubpassSampleLocations_;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019561 return *this;
19562 }
19563
19564 operator const VkRenderPassSampleLocationsBeginInfoEXT&() const
19565 {
19566 return *reinterpret_cast<const VkRenderPassSampleLocationsBeginInfoEXT*>(this);
19567 }
19568
19569 bool operator==( RenderPassSampleLocationsBeginInfoEXT const& rhs ) const
19570 {
19571 return ( sType == rhs.sType )
19572 && ( pNext == rhs.pNext )
19573 && ( attachmentInitialSampleLocationsCount == rhs.attachmentInitialSampleLocationsCount )
19574 && ( pAttachmentInitialSampleLocations == rhs.pAttachmentInitialSampleLocations )
19575 && ( postSubpassSampleLocationsCount == rhs.postSubpassSampleLocationsCount )
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060019576 && ( pPostSubpassSampleLocations == rhs.pPostSubpassSampleLocations );
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019577 }
19578
19579 bool operator!=( RenderPassSampleLocationsBeginInfoEXT const& rhs ) const
19580 {
19581 return !operator==( rhs );
19582 }
19583
19584 private:
19585 StructureType sType;
19586
19587 public:
19588 const void* pNext;
19589 uint32_t attachmentInitialSampleLocationsCount;
19590 const AttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations;
19591 uint32_t postSubpassSampleLocationsCount;
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060019592 const SubpassSampleLocationsEXT* pPostSubpassSampleLocations;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019593 };
19594 static_assert( sizeof( RenderPassSampleLocationsBeginInfoEXT ) == sizeof( VkRenderPassSampleLocationsBeginInfoEXT ), "struct and wrapper have different size!" );
19595
19596 struct PipelineSampleLocationsStateCreateInfoEXT
19597 {
19598 PipelineSampleLocationsStateCreateInfoEXT( Bool32 sampleLocationsEnable_ = 0, SampleLocationsInfoEXT sampleLocationsInfo_ = SampleLocationsInfoEXT() )
19599 : sType( StructureType::ePipelineSampleLocationsStateCreateInfoEXT )
19600 , pNext( nullptr )
19601 , sampleLocationsEnable( sampleLocationsEnable_ )
19602 , sampleLocationsInfo( sampleLocationsInfo_ )
19603 {
19604 }
19605
19606 PipelineSampleLocationsStateCreateInfoEXT( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs )
19607 {
19608 memcpy( this, &rhs, sizeof( PipelineSampleLocationsStateCreateInfoEXT ) );
19609 }
19610
19611 PipelineSampleLocationsStateCreateInfoEXT& operator=( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs )
19612 {
19613 memcpy( this, &rhs, sizeof( PipelineSampleLocationsStateCreateInfoEXT ) );
19614 return *this;
19615 }
19616 PipelineSampleLocationsStateCreateInfoEXT& setPNext( const void* pNext_ )
19617 {
19618 pNext = pNext_;
19619 return *this;
19620 }
19621
19622 PipelineSampleLocationsStateCreateInfoEXT& setSampleLocationsEnable( Bool32 sampleLocationsEnable_ )
19623 {
19624 sampleLocationsEnable = sampleLocationsEnable_;
19625 return *this;
19626 }
19627
19628 PipelineSampleLocationsStateCreateInfoEXT& setSampleLocationsInfo( SampleLocationsInfoEXT sampleLocationsInfo_ )
19629 {
19630 sampleLocationsInfo = sampleLocationsInfo_;
19631 return *this;
19632 }
19633
19634 operator const VkPipelineSampleLocationsStateCreateInfoEXT&() const
19635 {
19636 return *reinterpret_cast<const VkPipelineSampleLocationsStateCreateInfoEXT*>(this);
19637 }
19638
19639 bool operator==( PipelineSampleLocationsStateCreateInfoEXT const& rhs ) const
19640 {
19641 return ( sType == rhs.sType )
19642 && ( pNext == rhs.pNext )
19643 && ( sampleLocationsEnable == rhs.sampleLocationsEnable )
19644 && ( sampleLocationsInfo == rhs.sampleLocationsInfo );
19645 }
19646
19647 bool operator!=( PipelineSampleLocationsStateCreateInfoEXT const& rhs ) const
19648 {
19649 return !operator==( rhs );
19650 }
19651
19652 private:
19653 StructureType sType;
19654
19655 public:
19656 const void* pNext;
19657 Bool32 sampleLocationsEnable;
19658 SampleLocationsInfoEXT sampleLocationsInfo;
19659 };
19660 static_assert( sizeof( PipelineSampleLocationsStateCreateInfoEXT ) == sizeof( VkPipelineSampleLocationsStateCreateInfoEXT ), "struct and wrapper have different size!" );
19661
19662 struct PhysicalDeviceSampleLocationsPropertiesEXT
19663 {
19664 operator const VkPhysicalDeviceSampleLocationsPropertiesEXT&() const
19665 {
19666 return *reinterpret_cast<const VkPhysicalDeviceSampleLocationsPropertiesEXT*>(this);
19667 }
19668
19669 bool operator==( PhysicalDeviceSampleLocationsPropertiesEXT const& rhs ) const
19670 {
19671 return ( sType == rhs.sType )
19672 && ( pNext == rhs.pNext )
19673 && ( sampleLocationSampleCounts == rhs.sampleLocationSampleCounts )
19674 && ( maxSampleLocationGridSize == rhs.maxSampleLocationGridSize )
19675 && ( memcmp( sampleLocationCoordinateRange, rhs.sampleLocationCoordinateRange, 2 * sizeof( float ) ) == 0 )
19676 && ( sampleLocationSubPixelBits == rhs.sampleLocationSubPixelBits )
19677 && ( variableSampleLocations == rhs.variableSampleLocations );
19678 }
19679
19680 bool operator!=( PhysicalDeviceSampleLocationsPropertiesEXT const& rhs ) const
19681 {
19682 return !operator==( rhs );
19683 }
19684
19685 private:
19686 StructureType sType;
19687
19688 public:
19689 void* pNext;
19690 SampleCountFlags sampleLocationSampleCounts;
19691 Extent2D maxSampleLocationGridSize;
19692 float sampleLocationCoordinateRange[2];
19693 uint32_t sampleLocationSubPixelBits;
19694 Bool32 variableSampleLocations;
19695 };
19696 static_assert( sizeof( PhysicalDeviceSampleLocationsPropertiesEXT ) == sizeof( VkPhysicalDeviceSampleLocationsPropertiesEXT ), "struct and wrapper have different size!" );
19697
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019698 enum class AttachmentDescriptionFlagBits
19699 {
19700 eMayAlias = VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT
19701 };
19702
19703 using AttachmentDescriptionFlags = Flags<AttachmentDescriptionFlagBits, VkAttachmentDescriptionFlags>;
19704
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019705 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator|( AttachmentDescriptionFlagBits bit0, AttachmentDescriptionFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019706 {
19707 return AttachmentDescriptionFlags( bit0 ) | bit1;
19708 }
19709
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019710 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator~( AttachmentDescriptionFlagBits bits )
19711 {
19712 return ~( AttachmentDescriptionFlags( bits ) );
19713 }
19714
19715 template <> struct FlagTraits<AttachmentDescriptionFlagBits>
19716 {
19717 enum
19718 {
19719 allFlags = VkFlags(AttachmentDescriptionFlagBits::eMayAlias)
19720 };
19721 };
19722
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019723 struct AttachmentDescription
19724 {
19725 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 )
19726 : flags( flags_ )
19727 , format( format_ )
19728 , samples( samples_ )
19729 , loadOp( loadOp_ )
19730 , storeOp( storeOp_ )
19731 , stencilLoadOp( stencilLoadOp_ )
19732 , stencilStoreOp( stencilStoreOp_ )
19733 , initialLayout( initialLayout_ )
19734 , finalLayout( finalLayout_ )
19735 {
19736 }
19737
19738 AttachmentDescription( VkAttachmentDescription const & rhs )
19739 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019740 memcpy( this, &rhs, sizeof( AttachmentDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019741 }
19742
19743 AttachmentDescription& operator=( VkAttachmentDescription const & rhs )
19744 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019745 memcpy( this, &rhs, sizeof( AttachmentDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019746 return *this;
19747 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019748 AttachmentDescription& setFlags( AttachmentDescriptionFlags flags_ )
19749 {
19750 flags = flags_;
19751 return *this;
19752 }
19753
19754 AttachmentDescription& setFormat( Format format_ )
19755 {
19756 format = format_;
19757 return *this;
19758 }
19759
19760 AttachmentDescription& setSamples( SampleCountFlagBits samples_ )
19761 {
19762 samples = samples_;
19763 return *this;
19764 }
19765
19766 AttachmentDescription& setLoadOp( AttachmentLoadOp loadOp_ )
19767 {
19768 loadOp = loadOp_;
19769 return *this;
19770 }
19771
19772 AttachmentDescription& setStoreOp( AttachmentStoreOp storeOp_ )
19773 {
19774 storeOp = storeOp_;
19775 return *this;
19776 }
19777
19778 AttachmentDescription& setStencilLoadOp( AttachmentLoadOp stencilLoadOp_ )
19779 {
19780 stencilLoadOp = stencilLoadOp_;
19781 return *this;
19782 }
19783
19784 AttachmentDescription& setStencilStoreOp( AttachmentStoreOp stencilStoreOp_ )
19785 {
19786 stencilStoreOp = stencilStoreOp_;
19787 return *this;
19788 }
19789
19790 AttachmentDescription& setInitialLayout( ImageLayout initialLayout_ )
19791 {
19792 initialLayout = initialLayout_;
19793 return *this;
19794 }
19795
19796 AttachmentDescription& setFinalLayout( ImageLayout finalLayout_ )
19797 {
19798 finalLayout = finalLayout_;
19799 return *this;
19800 }
19801
19802 operator const VkAttachmentDescription&() const
19803 {
19804 return *reinterpret_cast<const VkAttachmentDescription*>(this);
19805 }
19806
19807 bool operator==( AttachmentDescription const& rhs ) const
19808 {
19809 return ( flags == rhs.flags )
19810 && ( format == rhs.format )
19811 && ( samples == rhs.samples )
19812 && ( loadOp == rhs.loadOp )
19813 && ( storeOp == rhs.storeOp )
19814 && ( stencilLoadOp == rhs.stencilLoadOp )
19815 && ( stencilStoreOp == rhs.stencilStoreOp )
19816 && ( initialLayout == rhs.initialLayout )
19817 && ( finalLayout == rhs.finalLayout );
19818 }
19819
19820 bool operator!=( AttachmentDescription const& rhs ) const
19821 {
19822 return !operator==( rhs );
19823 }
19824
19825 AttachmentDescriptionFlags flags;
19826 Format format;
19827 SampleCountFlagBits samples;
19828 AttachmentLoadOp loadOp;
19829 AttachmentStoreOp storeOp;
19830 AttachmentLoadOp stencilLoadOp;
19831 AttachmentStoreOp stencilStoreOp;
19832 ImageLayout initialLayout;
19833 ImageLayout finalLayout;
19834 };
19835 static_assert( sizeof( AttachmentDescription ) == sizeof( VkAttachmentDescription ), "struct and wrapper have different size!" );
19836
19837 enum class StencilFaceFlagBits
19838 {
19839 eFront = VK_STENCIL_FACE_FRONT_BIT,
19840 eBack = VK_STENCIL_FACE_BACK_BIT,
19841 eVkStencilFrontAndBack = VK_STENCIL_FRONT_AND_BACK
19842 };
19843
19844 using StencilFaceFlags = Flags<StencilFaceFlagBits, VkStencilFaceFlags>;
19845
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019846 VULKAN_HPP_INLINE StencilFaceFlags operator|( StencilFaceFlagBits bit0, StencilFaceFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019847 {
19848 return StencilFaceFlags( bit0 ) | bit1;
19849 }
19850
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019851 VULKAN_HPP_INLINE StencilFaceFlags operator~( StencilFaceFlagBits bits )
19852 {
19853 return ~( StencilFaceFlags( bits ) );
19854 }
19855
19856 template <> struct FlagTraits<StencilFaceFlagBits>
19857 {
19858 enum
19859 {
19860 allFlags = VkFlags(StencilFaceFlagBits::eFront) | VkFlags(StencilFaceFlagBits::eBack) | VkFlags(StencilFaceFlagBits::eVkStencilFrontAndBack)
19861 };
19862 };
19863
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019864 enum class DescriptorPoolCreateFlagBits
19865 {
19866 eFreeDescriptorSet = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT
19867 };
19868
19869 using DescriptorPoolCreateFlags = Flags<DescriptorPoolCreateFlagBits, VkDescriptorPoolCreateFlags>;
19870
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019871 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator|( DescriptorPoolCreateFlagBits bit0, DescriptorPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019872 {
19873 return DescriptorPoolCreateFlags( bit0 ) | bit1;
19874 }
19875
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019876 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator~( DescriptorPoolCreateFlagBits bits )
19877 {
19878 return ~( DescriptorPoolCreateFlags( bits ) );
19879 }
19880
19881 template <> struct FlagTraits<DescriptorPoolCreateFlagBits>
19882 {
19883 enum
19884 {
19885 allFlags = VkFlags(DescriptorPoolCreateFlagBits::eFreeDescriptorSet)
19886 };
19887 };
19888
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019889 struct DescriptorPoolCreateInfo
19890 {
19891 DescriptorPoolCreateInfo( DescriptorPoolCreateFlags flags_ = DescriptorPoolCreateFlags(), uint32_t maxSets_ = 0, uint32_t poolSizeCount_ = 0, const DescriptorPoolSize* pPoolSizes_ = nullptr )
19892 : sType( StructureType::eDescriptorPoolCreateInfo )
19893 , pNext( nullptr )
19894 , flags( flags_ )
19895 , maxSets( maxSets_ )
19896 , poolSizeCount( poolSizeCount_ )
19897 , pPoolSizes( pPoolSizes_ )
19898 {
19899 }
19900
19901 DescriptorPoolCreateInfo( VkDescriptorPoolCreateInfo const & rhs )
19902 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019903 memcpy( this, &rhs, sizeof( DescriptorPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019904 }
19905
19906 DescriptorPoolCreateInfo& operator=( VkDescriptorPoolCreateInfo const & rhs )
19907 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019908 memcpy( this, &rhs, sizeof( DescriptorPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019909 return *this;
19910 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019911 DescriptorPoolCreateInfo& setPNext( const void* pNext_ )
19912 {
19913 pNext = pNext_;
19914 return *this;
19915 }
19916
19917 DescriptorPoolCreateInfo& setFlags( DescriptorPoolCreateFlags flags_ )
19918 {
19919 flags = flags_;
19920 return *this;
19921 }
19922
19923 DescriptorPoolCreateInfo& setMaxSets( uint32_t maxSets_ )
19924 {
19925 maxSets = maxSets_;
19926 return *this;
19927 }
19928
19929 DescriptorPoolCreateInfo& setPoolSizeCount( uint32_t poolSizeCount_ )
19930 {
19931 poolSizeCount = poolSizeCount_;
19932 return *this;
19933 }
19934
19935 DescriptorPoolCreateInfo& setPPoolSizes( const DescriptorPoolSize* pPoolSizes_ )
19936 {
19937 pPoolSizes = pPoolSizes_;
19938 return *this;
19939 }
19940
19941 operator const VkDescriptorPoolCreateInfo&() const
19942 {
19943 return *reinterpret_cast<const VkDescriptorPoolCreateInfo*>(this);
19944 }
19945
19946 bool operator==( DescriptorPoolCreateInfo const& rhs ) const
19947 {
19948 return ( sType == rhs.sType )
19949 && ( pNext == rhs.pNext )
19950 && ( flags == rhs.flags )
19951 && ( maxSets == rhs.maxSets )
19952 && ( poolSizeCount == rhs.poolSizeCount )
19953 && ( pPoolSizes == rhs.pPoolSizes );
19954 }
19955
19956 bool operator!=( DescriptorPoolCreateInfo const& rhs ) const
19957 {
19958 return !operator==( rhs );
19959 }
19960
19961 private:
19962 StructureType sType;
19963
19964 public:
19965 const void* pNext;
19966 DescriptorPoolCreateFlags flags;
19967 uint32_t maxSets;
19968 uint32_t poolSizeCount;
19969 const DescriptorPoolSize* pPoolSizes;
19970 };
19971 static_assert( sizeof( DescriptorPoolCreateInfo ) == sizeof( VkDescriptorPoolCreateInfo ), "struct and wrapper have different size!" );
19972
19973 enum class DependencyFlagBits
19974 {
Mark Young0f183a82017-02-28 09:58:04 -070019975 eByRegion = VK_DEPENDENCY_BY_REGION_BIT,
19976 eViewLocalKHX = VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX,
19977 eDeviceGroupKHX = VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019978 };
19979
19980 using DependencyFlags = Flags<DependencyFlagBits, VkDependencyFlags>;
19981
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019982 VULKAN_HPP_INLINE DependencyFlags operator|( DependencyFlagBits bit0, DependencyFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019983 {
19984 return DependencyFlags( bit0 ) | bit1;
19985 }
19986
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019987 VULKAN_HPP_INLINE DependencyFlags operator~( DependencyFlagBits bits )
19988 {
19989 return ~( DependencyFlags( bits ) );
19990 }
19991
19992 template <> struct FlagTraits<DependencyFlagBits>
19993 {
19994 enum
19995 {
Mark Young0f183a82017-02-28 09:58:04 -070019996 allFlags = VkFlags(DependencyFlagBits::eByRegion) | VkFlags(DependencyFlagBits::eViewLocalKHX) | VkFlags(DependencyFlagBits::eDeviceGroupKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019997 };
19998 };
19999
20000 struct SubpassDependency
20001 {
20002 SubpassDependency( uint32_t srcSubpass_ = 0, uint32_t dstSubpass_ = 0, PipelineStageFlags srcStageMask_ = PipelineStageFlags(), PipelineStageFlags dstStageMask_ = PipelineStageFlags(), AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), DependencyFlags dependencyFlags_ = DependencyFlags() )
20003 : srcSubpass( srcSubpass_ )
20004 , dstSubpass( dstSubpass_ )
20005 , srcStageMask( srcStageMask_ )
20006 , dstStageMask( dstStageMask_ )
20007 , srcAccessMask( srcAccessMask_ )
20008 , dstAccessMask( dstAccessMask_ )
20009 , dependencyFlags( dependencyFlags_ )
20010 {
20011 }
20012
20013 SubpassDependency( VkSubpassDependency const & rhs )
20014 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020015 memcpy( this, &rhs, sizeof( SubpassDependency ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020016 }
20017
20018 SubpassDependency& operator=( VkSubpassDependency const & rhs )
20019 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020020 memcpy( this, &rhs, sizeof( SubpassDependency ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020021 return *this;
20022 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020023 SubpassDependency& setSrcSubpass( uint32_t srcSubpass_ )
20024 {
20025 srcSubpass = srcSubpass_;
20026 return *this;
20027 }
20028
20029 SubpassDependency& setDstSubpass( uint32_t dstSubpass_ )
20030 {
20031 dstSubpass = dstSubpass_;
20032 return *this;
20033 }
20034
20035 SubpassDependency& setSrcStageMask( PipelineStageFlags srcStageMask_ )
20036 {
20037 srcStageMask = srcStageMask_;
20038 return *this;
20039 }
20040
20041 SubpassDependency& setDstStageMask( PipelineStageFlags dstStageMask_ )
20042 {
20043 dstStageMask = dstStageMask_;
20044 return *this;
20045 }
20046
20047 SubpassDependency& setSrcAccessMask( AccessFlags srcAccessMask_ )
20048 {
20049 srcAccessMask = srcAccessMask_;
20050 return *this;
20051 }
20052
20053 SubpassDependency& setDstAccessMask( AccessFlags dstAccessMask_ )
20054 {
20055 dstAccessMask = dstAccessMask_;
20056 return *this;
20057 }
20058
20059 SubpassDependency& setDependencyFlags( DependencyFlags dependencyFlags_ )
20060 {
20061 dependencyFlags = dependencyFlags_;
20062 return *this;
20063 }
20064
20065 operator const VkSubpassDependency&() const
20066 {
20067 return *reinterpret_cast<const VkSubpassDependency*>(this);
20068 }
20069
20070 bool operator==( SubpassDependency const& rhs ) const
20071 {
20072 return ( srcSubpass == rhs.srcSubpass )
20073 && ( dstSubpass == rhs.dstSubpass )
20074 && ( srcStageMask == rhs.srcStageMask )
20075 && ( dstStageMask == rhs.dstStageMask )
20076 && ( srcAccessMask == rhs.srcAccessMask )
20077 && ( dstAccessMask == rhs.dstAccessMask )
20078 && ( dependencyFlags == rhs.dependencyFlags );
20079 }
20080
20081 bool operator!=( SubpassDependency const& rhs ) const
20082 {
20083 return !operator==( rhs );
20084 }
20085
20086 uint32_t srcSubpass;
20087 uint32_t dstSubpass;
20088 PipelineStageFlags srcStageMask;
20089 PipelineStageFlags dstStageMask;
20090 AccessFlags srcAccessMask;
20091 AccessFlags dstAccessMask;
20092 DependencyFlags dependencyFlags;
20093 };
20094 static_assert( sizeof( SubpassDependency ) == sizeof( VkSubpassDependency ), "struct and wrapper have different size!" );
20095
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020096 enum class PresentModeKHR
20097 {
20098 eImmediate = VK_PRESENT_MODE_IMMEDIATE_KHR,
20099 eMailbox = VK_PRESENT_MODE_MAILBOX_KHR,
20100 eFifo = VK_PRESENT_MODE_FIFO_KHR,
Mark Lobodzinski54385432017-05-15 10:27:52 -060020101 eFifoRelaxed = VK_PRESENT_MODE_FIFO_RELAXED_KHR,
20102 eSharedDemandRefresh = VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR,
20103 eSharedContinuousRefresh = VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020104 };
20105
20106 enum class ColorSpaceKHR
20107 {
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060020108 eSrgbNonlinear = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
20109 eDisplayP3NonlinearEXT = VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT,
20110 eExtendedSrgbLinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT,
20111 eDciP3LinearEXT = VK_COLOR_SPACE_DCI_P3_LINEAR_EXT,
20112 eDciP3NonlinearEXT = VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT,
20113 eBt709LinearEXT = VK_COLOR_SPACE_BT709_LINEAR_EXT,
20114 eBt709NonlinearEXT = VK_COLOR_SPACE_BT709_NONLINEAR_EXT,
20115 eBt2020LinearEXT = VK_COLOR_SPACE_BT2020_LINEAR_EXT,
20116 eHdr10St2084EXT = VK_COLOR_SPACE_HDR10_ST2084_EXT,
20117 eDolbyvisionEXT = VK_COLOR_SPACE_DOLBYVISION_EXT,
20118 eHdr10HlgEXT = VK_COLOR_SPACE_HDR10_HLG_EXT,
20119 eAdobergbLinearEXT = VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT,
20120 eAdobergbNonlinearEXT = VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT,
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060020121 ePassThroughEXT = VK_COLOR_SPACE_PASS_THROUGH_EXT,
20122 eExtendedSrgbNonlinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020123 };
20124
20125 struct SurfaceFormatKHR
20126 {
20127 operator const VkSurfaceFormatKHR&() const
20128 {
20129 return *reinterpret_cast<const VkSurfaceFormatKHR*>(this);
20130 }
20131
20132 bool operator==( SurfaceFormatKHR const& rhs ) const
20133 {
20134 return ( format == rhs.format )
20135 && ( colorSpace == rhs.colorSpace );
20136 }
20137
20138 bool operator!=( SurfaceFormatKHR const& rhs ) const
20139 {
20140 return !operator==( rhs );
20141 }
20142
20143 Format format;
20144 ColorSpaceKHR colorSpace;
20145 };
20146 static_assert( sizeof( SurfaceFormatKHR ) == sizeof( VkSurfaceFormatKHR ), "struct and wrapper have different size!" );
20147
Mark Lobodzinski54385432017-05-15 10:27:52 -060020148 struct SurfaceFormat2KHR
20149 {
20150 operator const VkSurfaceFormat2KHR&() const
20151 {
20152 return *reinterpret_cast<const VkSurfaceFormat2KHR*>(this);
20153 }
20154
20155 bool operator==( SurfaceFormat2KHR const& rhs ) const
20156 {
20157 return ( sType == rhs.sType )
20158 && ( pNext == rhs.pNext )
20159 && ( surfaceFormat == rhs.surfaceFormat );
20160 }
20161
20162 bool operator!=( SurfaceFormat2KHR const& rhs ) const
20163 {
20164 return !operator==( rhs );
20165 }
20166
20167 private:
20168 StructureType sType;
20169
20170 public:
20171 void* pNext;
20172 SurfaceFormatKHR surfaceFormat;
20173 };
20174 static_assert( sizeof( SurfaceFormat2KHR ) == sizeof( VkSurfaceFormat2KHR ), "struct and wrapper have different size!" );
20175
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020176 enum class DisplayPlaneAlphaFlagBitsKHR
20177 {
20178 eOpaque = VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR,
20179 eGlobal = VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR,
20180 ePerPixel = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR,
20181 ePerPixelPremultiplied = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR
20182 };
20183
20184 using DisplayPlaneAlphaFlagsKHR = Flags<DisplayPlaneAlphaFlagBitsKHR, VkDisplayPlaneAlphaFlagsKHR>;
20185
20186 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator|( DisplayPlaneAlphaFlagBitsKHR bit0, DisplayPlaneAlphaFlagBitsKHR bit1 )
20187 {
20188 return DisplayPlaneAlphaFlagsKHR( bit0 ) | bit1;
20189 }
20190
20191 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator~( DisplayPlaneAlphaFlagBitsKHR bits )
20192 {
20193 return ~( DisplayPlaneAlphaFlagsKHR( bits ) );
20194 }
20195
20196 template <> struct FlagTraits<DisplayPlaneAlphaFlagBitsKHR>
20197 {
20198 enum
20199 {
20200 allFlags = VkFlags(DisplayPlaneAlphaFlagBitsKHR::eOpaque) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::eGlobal) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixel) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied)
20201 };
20202 };
20203
20204 struct DisplayPlaneCapabilitiesKHR
20205 {
20206 operator const VkDisplayPlaneCapabilitiesKHR&() const
20207 {
20208 return *reinterpret_cast<const VkDisplayPlaneCapabilitiesKHR*>(this);
20209 }
20210
20211 bool operator==( DisplayPlaneCapabilitiesKHR const& rhs ) const
20212 {
20213 return ( supportedAlpha == rhs.supportedAlpha )
20214 && ( minSrcPosition == rhs.minSrcPosition )
20215 && ( maxSrcPosition == rhs.maxSrcPosition )
20216 && ( minSrcExtent == rhs.minSrcExtent )
20217 && ( maxSrcExtent == rhs.maxSrcExtent )
20218 && ( minDstPosition == rhs.minDstPosition )
20219 && ( maxDstPosition == rhs.maxDstPosition )
20220 && ( minDstExtent == rhs.minDstExtent )
20221 && ( maxDstExtent == rhs.maxDstExtent );
20222 }
20223
20224 bool operator!=( DisplayPlaneCapabilitiesKHR const& rhs ) const
20225 {
20226 return !operator==( rhs );
20227 }
20228
20229 DisplayPlaneAlphaFlagsKHR supportedAlpha;
20230 Offset2D minSrcPosition;
20231 Offset2D maxSrcPosition;
20232 Extent2D minSrcExtent;
20233 Extent2D maxSrcExtent;
20234 Offset2D minDstPosition;
20235 Offset2D maxDstPosition;
20236 Extent2D minDstExtent;
20237 Extent2D maxDstExtent;
20238 };
20239 static_assert( sizeof( DisplayPlaneCapabilitiesKHR ) == sizeof( VkDisplayPlaneCapabilitiesKHR ), "struct and wrapper have different size!" );
20240
20241 enum class CompositeAlphaFlagBitsKHR
20242 {
20243 eOpaque = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,
20244 ePreMultiplied = VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR,
20245 ePostMultiplied = VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR,
20246 eInherit = VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR
20247 };
20248
20249 using CompositeAlphaFlagsKHR = Flags<CompositeAlphaFlagBitsKHR, VkCompositeAlphaFlagsKHR>;
20250
20251 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator|( CompositeAlphaFlagBitsKHR bit0, CompositeAlphaFlagBitsKHR bit1 )
20252 {
20253 return CompositeAlphaFlagsKHR( bit0 ) | bit1;
20254 }
20255
20256 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator~( CompositeAlphaFlagBitsKHR bits )
20257 {
20258 return ~( CompositeAlphaFlagsKHR( bits ) );
20259 }
20260
20261 template <> struct FlagTraits<CompositeAlphaFlagBitsKHR>
20262 {
20263 enum
20264 {
20265 allFlags = VkFlags(CompositeAlphaFlagBitsKHR::eOpaque) | VkFlags(CompositeAlphaFlagBitsKHR::ePreMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::ePostMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::eInherit)
20266 };
20267 };
20268
20269 enum class SurfaceTransformFlagBitsKHR
20270 {
20271 eIdentity = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,
20272 eRotate90 = VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,
20273 eRotate180 = VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,
20274 eRotate270 = VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,
20275 eHorizontalMirror = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR,
20276 eHorizontalMirrorRotate90 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR,
20277 eHorizontalMirrorRotate180 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR,
20278 eHorizontalMirrorRotate270 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR,
20279 eInherit = VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR
20280 };
20281
20282 using SurfaceTransformFlagsKHR = Flags<SurfaceTransformFlagBitsKHR, VkSurfaceTransformFlagsKHR>;
20283
20284 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator|( SurfaceTransformFlagBitsKHR bit0, SurfaceTransformFlagBitsKHR bit1 )
20285 {
20286 return SurfaceTransformFlagsKHR( bit0 ) | bit1;
20287 }
20288
20289 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator~( SurfaceTransformFlagBitsKHR bits )
20290 {
20291 return ~( SurfaceTransformFlagsKHR( bits ) );
20292 }
20293
20294 template <> struct FlagTraits<SurfaceTransformFlagBitsKHR>
20295 {
20296 enum
20297 {
20298 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)
20299 };
20300 };
20301
20302 struct DisplayPropertiesKHR
20303 {
20304 operator const VkDisplayPropertiesKHR&() const
20305 {
20306 return *reinterpret_cast<const VkDisplayPropertiesKHR*>(this);
20307 }
20308
20309 bool operator==( DisplayPropertiesKHR const& rhs ) const
20310 {
20311 return ( display == rhs.display )
20312 && ( displayName == rhs.displayName )
20313 && ( physicalDimensions == rhs.physicalDimensions )
20314 && ( physicalResolution == rhs.physicalResolution )
20315 && ( supportedTransforms == rhs.supportedTransforms )
20316 && ( planeReorderPossible == rhs.planeReorderPossible )
20317 && ( persistentContent == rhs.persistentContent );
20318 }
20319
20320 bool operator!=( DisplayPropertiesKHR const& rhs ) const
20321 {
20322 return !operator==( rhs );
20323 }
20324
20325 DisplayKHR display;
20326 const char* displayName;
20327 Extent2D physicalDimensions;
20328 Extent2D physicalResolution;
20329 SurfaceTransformFlagsKHR supportedTransforms;
20330 Bool32 planeReorderPossible;
20331 Bool32 persistentContent;
20332 };
20333 static_assert( sizeof( DisplayPropertiesKHR ) == sizeof( VkDisplayPropertiesKHR ), "struct and wrapper have different size!" );
20334
20335 struct DisplaySurfaceCreateInfoKHR
20336 {
20337 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() )
20338 : sType( StructureType::eDisplaySurfaceCreateInfoKHR )
20339 , pNext( nullptr )
20340 , flags( flags_ )
20341 , displayMode( displayMode_ )
20342 , planeIndex( planeIndex_ )
20343 , planeStackIndex( planeStackIndex_ )
20344 , transform( transform_ )
20345 , globalAlpha( globalAlpha_ )
20346 , alphaMode( alphaMode_ )
20347 , imageExtent( imageExtent_ )
20348 {
20349 }
20350
20351 DisplaySurfaceCreateInfoKHR( VkDisplaySurfaceCreateInfoKHR const & rhs )
20352 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020353 memcpy( this, &rhs, sizeof( DisplaySurfaceCreateInfoKHR ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020354 }
20355
20356 DisplaySurfaceCreateInfoKHR& operator=( VkDisplaySurfaceCreateInfoKHR const & rhs )
20357 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020358 memcpy( this, &rhs, sizeof( DisplaySurfaceCreateInfoKHR ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020359 return *this;
20360 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020361 DisplaySurfaceCreateInfoKHR& setPNext( const void* pNext_ )
20362 {
20363 pNext = pNext_;
20364 return *this;
20365 }
20366
20367 DisplaySurfaceCreateInfoKHR& setFlags( DisplaySurfaceCreateFlagsKHR flags_ )
20368 {
20369 flags = flags_;
20370 return *this;
20371 }
20372
20373 DisplaySurfaceCreateInfoKHR& setDisplayMode( DisplayModeKHR displayMode_ )
20374 {
20375 displayMode = displayMode_;
20376 return *this;
20377 }
20378
20379 DisplaySurfaceCreateInfoKHR& setPlaneIndex( uint32_t planeIndex_ )
20380 {
20381 planeIndex = planeIndex_;
20382 return *this;
20383 }
20384
20385 DisplaySurfaceCreateInfoKHR& setPlaneStackIndex( uint32_t planeStackIndex_ )
20386 {
20387 planeStackIndex = planeStackIndex_;
20388 return *this;
20389 }
20390
20391 DisplaySurfaceCreateInfoKHR& setTransform( SurfaceTransformFlagBitsKHR transform_ )
20392 {
20393 transform = transform_;
20394 return *this;
20395 }
20396
20397 DisplaySurfaceCreateInfoKHR& setGlobalAlpha( float globalAlpha_ )
20398 {
20399 globalAlpha = globalAlpha_;
20400 return *this;
20401 }
20402
20403 DisplaySurfaceCreateInfoKHR& setAlphaMode( DisplayPlaneAlphaFlagBitsKHR alphaMode_ )
20404 {
20405 alphaMode = alphaMode_;
20406 return *this;
20407 }
20408
20409 DisplaySurfaceCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
20410 {
20411 imageExtent = imageExtent_;
20412 return *this;
20413 }
20414
20415 operator const VkDisplaySurfaceCreateInfoKHR&() const
20416 {
20417 return *reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>(this);
20418 }
20419
20420 bool operator==( DisplaySurfaceCreateInfoKHR const& rhs ) const
20421 {
20422 return ( sType == rhs.sType )
20423 && ( pNext == rhs.pNext )
20424 && ( flags == rhs.flags )
20425 && ( displayMode == rhs.displayMode )
20426 && ( planeIndex == rhs.planeIndex )
20427 && ( planeStackIndex == rhs.planeStackIndex )
20428 && ( transform == rhs.transform )
20429 && ( globalAlpha == rhs.globalAlpha )
20430 && ( alphaMode == rhs.alphaMode )
20431 && ( imageExtent == rhs.imageExtent );
20432 }
20433
20434 bool operator!=( DisplaySurfaceCreateInfoKHR const& rhs ) const
20435 {
20436 return !operator==( rhs );
20437 }
20438
20439 private:
20440 StructureType sType;
20441
20442 public:
20443 const void* pNext;
20444 DisplaySurfaceCreateFlagsKHR flags;
20445 DisplayModeKHR displayMode;
20446 uint32_t planeIndex;
20447 uint32_t planeStackIndex;
20448 SurfaceTransformFlagBitsKHR transform;
20449 float globalAlpha;
20450 DisplayPlaneAlphaFlagBitsKHR alphaMode;
20451 Extent2D imageExtent;
20452 };
20453 static_assert( sizeof( DisplaySurfaceCreateInfoKHR ) == sizeof( VkDisplaySurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
20454
20455 struct SurfaceCapabilitiesKHR
20456 {
20457 operator const VkSurfaceCapabilitiesKHR&() const
20458 {
20459 return *reinterpret_cast<const VkSurfaceCapabilitiesKHR*>(this);
20460 }
20461
20462 bool operator==( SurfaceCapabilitiesKHR const& rhs ) const
20463 {
20464 return ( minImageCount == rhs.minImageCount )
20465 && ( maxImageCount == rhs.maxImageCount )
20466 && ( currentExtent == rhs.currentExtent )
20467 && ( minImageExtent == rhs.minImageExtent )
20468 && ( maxImageExtent == rhs.maxImageExtent )
20469 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
20470 && ( supportedTransforms == rhs.supportedTransforms )
20471 && ( currentTransform == rhs.currentTransform )
20472 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
20473 && ( supportedUsageFlags == rhs.supportedUsageFlags );
20474 }
20475
20476 bool operator!=( SurfaceCapabilitiesKHR const& rhs ) const
20477 {
20478 return !operator==( rhs );
20479 }
20480
20481 uint32_t minImageCount;
20482 uint32_t maxImageCount;
20483 Extent2D currentExtent;
20484 Extent2D minImageExtent;
20485 Extent2D maxImageExtent;
20486 uint32_t maxImageArrayLayers;
20487 SurfaceTransformFlagsKHR supportedTransforms;
20488 SurfaceTransformFlagBitsKHR currentTransform;
20489 CompositeAlphaFlagsKHR supportedCompositeAlpha;
20490 ImageUsageFlags supportedUsageFlags;
20491 };
20492 static_assert( sizeof( SurfaceCapabilitiesKHR ) == sizeof( VkSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" );
20493
Mark Lobodzinski54385432017-05-15 10:27:52 -060020494 struct SurfaceCapabilities2KHR
20495 {
20496 operator const VkSurfaceCapabilities2KHR&() const
20497 {
20498 return *reinterpret_cast<const VkSurfaceCapabilities2KHR*>(this);
20499 }
20500
20501 bool operator==( SurfaceCapabilities2KHR const& rhs ) const
20502 {
20503 return ( sType == rhs.sType )
20504 && ( pNext == rhs.pNext )
20505 && ( surfaceCapabilities == rhs.surfaceCapabilities );
20506 }
20507
20508 bool operator!=( SurfaceCapabilities2KHR const& rhs ) const
20509 {
20510 return !operator==( rhs );
20511 }
20512
20513 private:
20514 StructureType sType;
20515
20516 public:
20517 void* pNext;
20518 SurfaceCapabilitiesKHR surfaceCapabilities;
20519 };
20520 static_assert( sizeof( SurfaceCapabilities2KHR ) == sizeof( VkSurfaceCapabilities2KHR ), "struct and wrapper have different size!" );
20521
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020522 enum class DebugReportFlagBitsEXT
20523 {
20524 eInformation = VK_DEBUG_REPORT_INFORMATION_BIT_EXT,
20525 eWarning = VK_DEBUG_REPORT_WARNING_BIT_EXT,
20526 ePerformanceWarning = VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT,
20527 eError = VK_DEBUG_REPORT_ERROR_BIT_EXT,
20528 eDebug = VK_DEBUG_REPORT_DEBUG_BIT_EXT
20529 };
20530
20531 using DebugReportFlagsEXT = Flags<DebugReportFlagBitsEXT, VkDebugReportFlagsEXT>;
20532
20533 VULKAN_HPP_INLINE DebugReportFlagsEXT operator|( DebugReportFlagBitsEXT bit0, DebugReportFlagBitsEXT bit1 )
20534 {
20535 return DebugReportFlagsEXT( bit0 ) | bit1;
20536 }
20537
20538 VULKAN_HPP_INLINE DebugReportFlagsEXT operator~( DebugReportFlagBitsEXT bits )
20539 {
20540 return ~( DebugReportFlagsEXT( bits ) );
20541 }
20542
20543 template <> struct FlagTraits<DebugReportFlagBitsEXT>
20544 {
20545 enum
20546 {
20547 allFlags = VkFlags(DebugReportFlagBitsEXT::eInformation) | VkFlags(DebugReportFlagBitsEXT::eWarning) | VkFlags(DebugReportFlagBitsEXT::ePerformanceWarning) | VkFlags(DebugReportFlagBitsEXT::eError) | VkFlags(DebugReportFlagBitsEXT::eDebug)
20548 };
20549 };
20550
20551 struct DebugReportCallbackCreateInfoEXT
20552 {
20553 DebugReportCallbackCreateInfoEXT( DebugReportFlagsEXT flags_ = DebugReportFlagsEXT(), PFN_vkDebugReportCallbackEXT pfnCallback_ = nullptr, void* pUserData_ = nullptr )
20554 : sType( StructureType::eDebugReportCallbackCreateInfoEXT )
20555 , pNext( nullptr )
20556 , flags( flags_ )
20557 , pfnCallback( pfnCallback_ )
20558 , pUserData( pUserData_ )
20559 {
20560 }
20561
20562 DebugReportCallbackCreateInfoEXT( VkDebugReportCallbackCreateInfoEXT const & rhs )
20563 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020564 memcpy( this, &rhs, sizeof( DebugReportCallbackCreateInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020565 }
20566
20567 DebugReportCallbackCreateInfoEXT& operator=( VkDebugReportCallbackCreateInfoEXT const & rhs )
20568 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020569 memcpy( this, &rhs, sizeof( DebugReportCallbackCreateInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020570 return *this;
20571 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020572 DebugReportCallbackCreateInfoEXT& setPNext( const void* pNext_ )
20573 {
20574 pNext = pNext_;
20575 return *this;
20576 }
20577
20578 DebugReportCallbackCreateInfoEXT& setFlags( DebugReportFlagsEXT flags_ )
20579 {
20580 flags = flags_;
20581 return *this;
20582 }
20583
20584 DebugReportCallbackCreateInfoEXT& setPfnCallback( PFN_vkDebugReportCallbackEXT pfnCallback_ )
20585 {
20586 pfnCallback = pfnCallback_;
20587 return *this;
20588 }
20589
20590 DebugReportCallbackCreateInfoEXT& setPUserData( void* pUserData_ )
20591 {
20592 pUserData = pUserData_;
20593 return *this;
20594 }
20595
20596 operator const VkDebugReportCallbackCreateInfoEXT&() const
20597 {
20598 return *reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>(this);
20599 }
20600
20601 bool operator==( DebugReportCallbackCreateInfoEXT const& rhs ) const
20602 {
20603 return ( sType == rhs.sType )
20604 && ( pNext == rhs.pNext )
20605 && ( flags == rhs.flags )
20606 && ( pfnCallback == rhs.pfnCallback )
20607 && ( pUserData == rhs.pUserData );
20608 }
20609
20610 bool operator!=( DebugReportCallbackCreateInfoEXT const& rhs ) const
20611 {
20612 return !operator==( rhs );
20613 }
20614
20615 private:
20616 StructureType sType;
20617
20618 public:
20619 const void* pNext;
20620 DebugReportFlagsEXT flags;
20621 PFN_vkDebugReportCallbackEXT pfnCallback;
20622 void* pUserData;
20623 };
20624 static_assert( sizeof( DebugReportCallbackCreateInfoEXT ) == sizeof( VkDebugReportCallbackCreateInfoEXT ), "struct and wrapper have different size!" );
20625
20626 enum class DebugReportObjectTypeEXT
20627 {
20628 eUnknown = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT,
20629 eInstance = VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT,
20630 ePhysicalDevice = VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT,
20631 eDevice = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
20632 eQueue = VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT,
20633 eSemaphore = VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT,
20634 eCommandBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT,
20635 eFence = VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT,
20636 eDeviceMemory = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT,
20637 eBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT,
20638 eImage = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT,
20639 eEvent = VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT,
20640 eQueryPool = VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT,
20641 eBufferView = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT,
20642 eImageView = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT,
20643 eShaderModule = VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT,
20644 ePipelineCache = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT,
20645 ePipelineLayout = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT,
20646 eRenderPass = VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT,
20647 ePipeline = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT,
20648 eDescriptorSetLayout = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT,
20649 eSampler = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT,
20650 eDescriptorPool = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT,
20651 eDescriptorSet = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT,
20652 eFramebuffer = VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT,
20653 eCommandPool = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT,
20654 eSurfaceKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT,
20655 eSwapchainKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT,
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020656 eDebugReportCallbackExt = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020657 eDisplayKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT,
20658 eDisplayModeKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT,
20659 eObjectTableNvx = VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT,
Mark Lobodzinski3289d762017-04-03 08:22:04 -060020660 eIndirectCommandsLayoutNvx = VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060020661 eValidationCache = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT,
Lenny Komowb79f04a2017-09-18 17:07:00 -060020662 eDescriptorUpdateTemplateKHR = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT,
20663 eSamplerYcbcrConversionKHR = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020664 };
20665
20666 struct DebugMarkerObjectNameInfoEXT
20667 {
20668 DebugMarkerObjectNameInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = 0, const char* pObjectName_ = nullptr )
20669 : sType( StructureType::eDebugMarkerObjectNameInfoEXT )
20670 , pNext( nullptr )
20671 , objectType( objectType_ )
20672 , object( object_ )
20673 , pObjectName( pObjectName_ )
20674 {
20675 }
20676
20677 DebugMarkerObjectNameInfoEXT( VkDebugMarkerObjectNameInfoEXT const & rhs )
20678 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020679 memcpy( this, &rhs, sizeof( DebugMarkerObjectNameInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020680 }
20681
20682 DebugMarkerObjectNameInfoEXT& operator=( VkDebugMarkerObjectNameInfoEXT const & rhs )
20683 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020684 memcpy( this, &rhs, sizeof( DebugMarkerObjectNameInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020685 return *this;
20686 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020687 DebugMarkerObjectNameInfoEXT& setPNext( const void* pNext_ )
20688 {
20689 pNext = pNext_;
20690 return *this;
20691 }
20692
20693 DebugMarkerObjectNameInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
20694 {
20695 objectType = objectType_;
20696 return *this;
20697 }
20698
20699 DebugMarkerObjectNameInfoEXT& setObject( uint64_t object_ )
20700 {
20701 object = object_;
20702 return *this;
20703 }
20704
20705 DebugMarkerObjectNameInfoEXT& setPObjectName( const char* pObjectName_ )
20706 {
20707 pObjectName = pObjectName_;
20708 return *this;
20709 }
20710
20711 operator const VkDebugMarkerObjectNameInfoEXT&() const
20712 {
20713 return *reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>(this);
20714 }
20715
20716 bool operator==( DebugMarkerObjectNameInfoEXT const& rhs ) const
20717 {
20718 return ( sType == rhs.sType )
20719 && ( pNext == rhs.pNext )
20720 && ( objectType == rhs.objectType )
20721 && ( object == rhs.object )
20722 && ( pObjectName == rhs.pObjectName );
20723 }
20724
20725 bool operator!=( DebugMarkerObjectNameInfoEXT const& rhs ) const
20726 {
20727 return !operator==( rhs );
20728 }
20729
20730 private:
20731 StructureType sType;
20732
20733 public:
20734 const void* pNext;
20735 DebugReportObjectTypeEXT objectType;
20736 uint64_t object;
20737 const char* pObjectName;
20738 };
20739 static_assert( sizeof( DebugMarkerObjectNameInfoEXT ) == sizeof( VkDebugMarkerObjectNameInfoEXT ), "struct and wrapper have different size!" );
20740
20741 struct DebugMarkerObjectTagInfoEXT
20742 {
20743 DebugMarkerObjectTagInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = 0, uint64_t tagName_ = 0, size_t tagSize_ = 0, const void* pTag_ = nullptr )
20744 : sType( StructureType::eDebugMarkerObjectTagInfoEXT )
20745 , pNext( nullptr )
20746 , objectType( objectType_ )
20747 , object( object_ )
20748 , tagName( tagName_ )
20749 , tagSize( tagSize_ )
20750 , pTag( pTag_ )
20751 {
20752 }
20753
20754 DebugMarkerObjectTagInfoEXT( VkDebugMarkerObjectTagInfoEXT const & rhs )
20755 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020756 memcpy( this, &rhs, sizeof( DebugMarkerObjectTagInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020757 }
20758
20759 DebugMarkerObjectTagInfoEXT& operator=( VkDebugMarkerObjectTagInfoEXT const & rhs )
20760 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020761 memcpy( this, &rhs, sizeof( DebugMarkerObjectTagInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020762 return *this;
20763 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020764 DebugMarkerObjectTagInfoEXT& setPNext( const void* pNext_ )
20765 {
20766 pNext = pNext_;
20767 return *this;
20768 }
20769
20770 DebugMarkerObjectTagInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
20771 {
20772 objectType = objectType_;
20773 return *this;
20774 }
20775
20776 DebugMarkerObjectTagInfoEXT& setObject( uint64_t object_ )
20777 {
20778 object = object_;
20779 return *this;
20780 }
20781
20782 DebugMarkerObjectTagInfoEXT& setTagName( uint64_t tagName_ )
20783 {
20784 tagName = tagName_;
20785 return *this;
20786 }
20787
20788 DebugMarkerObjectTagInfoEXT& setTagSize( size_t tagSize_ )
20789 {
20790 tagSize = tagSize_;
20791 return *this;
20792 }
20793
20794 DebugMarkerObjectTagInfoEXT& setPTag( const void* pTag_ )
20795 {
20796 pTag = pTag_;
20797 return *this;
20798 }
20799
20800 operator const VkDebugMarkerObjectTagInfoEXT&() const
20801 {
20802 return *reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>(this);
20803 }
20804
20805 bool operator==( DebugMarkerObjectTagInfoEXT const& rhs ) const
20806 {
20807 return ( sType == rhs.sType )
20808 && ( pNext == rhs.pNext )
20809 && ( objectType == rhs.objectType )
20810 && ( object == rhs.object )
20811 && ( tagName == rhs.tagName )
20812 && ( tagSize == rhs.tagSize )
20813 && ( pTag == rhs.pTag );
20814 }
20815
20816 bool operator!=( DebugMarkerObjectTagInfoEXT const& rhs ) const
20817 {
20818 return !operator==( rhs );
20819 }
20820
20821 private:
20822 StructureType sType;
20823
20824 public:
20825 const void* pNext;
20826 DebugReportObjectTypeEXT objectType;
20827 uint64_t object;
20828 uint64_t tagName;
20829 size_t tagSize;
20830 const void* pTag;
20831 };
20832 static_assert( sizeof( DebugMarkerObjectTagInfoEXT ) == sizeof( VkDebugMarkerObjectTagInfoEXT ), "struct and wrapper have different size!" );
20833
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020834 enum class RasterizationOrderAMD
20835 {
20836 eStrict = VK_RASTERIZATION_ORDER_STRICT_AMD,
20837 eRelaxed = VK_RASTERIZATION_ORDER_RELAXED_AMD
20838 };
20839
20840 struct PipelineRasterizationStateRasterizationOrderAMD
20841 {
20842 PipelineRasterizationStateRasterizationOrderAMD( RasterizationOrderAMD rasterizationOrder_ = RasterizationOrderAMD::eStrict )
20843 : sType( StructureType::ePipelineRasterizationStateRasterizationOrderAMD )
20844 , pNext( nullptr )
20845 , rasterizationOrder( rasterizationOrder_ )
20846 {
20847 }
20848
20849 PipelineRasterizationStateRasterizationOrderAMD( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
20850 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020851 memcpy( this, &rhs, sizeof( PipelineRasterizationStateRasterizationOrderAMD ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020852 }
20853
20854 PipelineRasterizationStateRasterizationOrderAMD& operator=( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
20855 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020856 memcpy( this, &rhs, sizeof( PipelineRasterizationStateRasterizationOrderAMD ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020857 return *this;
20858 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020859 PipelineRasterizationStateRasterizationOrderAMD& setPNext( const void* pNext_ )
20860 {
20861 pNext = pNext_;
20862 return *this;
20863 }
20864
20865 PipelineRasterizationStateRasterizationOrderAMD& setRasterizationOrder( RasterizationOrderAMD rasterizationOrder_ )
20866 {
20867 rasterizationOrder = rasterizationOrder_;
20868 return *this;
20869 }
20870
20871 operator const VkPipelineRasterizationStateRasterizationOrderAMD&() const
20872 {
20873 return *reinterpret_cast<const VkPipelineRasterizationStateRasterizationOrderAMD*>(this);
20874 }
20875
20876 bool operator==( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
20877 {
20878 return ( sType == rhs.sType )
20879 && ( pNext == rhs.pNext )
20880 && ( rasterizationOrder == rhs.rasterizationOrder );
20881 }
20882
20883 bool operator!=( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
20884 {
20885 return !operator==( rhs );
20886 }
20887
20888 private:
20889 StructureType sType;
20890
20891 public:
20892 const void* pNext;
20893 RasterizationOrderAMD rasterizationOrder;
20894 };
20895 static_assert( sizeof( PipelineRasterizationStateRasterizationOrderAMD ) == sizeof( VkPipelineRasterizationStateRasterizationOrderAMD ), "struct and wrapper have different size!" );
20896
20897 enum class ExternalMemoryHandleTypeFlagBitsNV
20898 {
20899 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV,
20900 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV,
20901 eD3D11Image = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV,
20902 eD3D11ImageKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV
20903 };
20904
20905 using ExternalMemoryHandleTypeFlagsNV = Flags<ExternalMemoryHandleTypeFlagBitsNV, VkExternalMemoryHandleTypeFlagsNV>;
20906
20907 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator|( ExternalMemoryHandleTypeFlagBitsNV bit0, ExternalMemoryHandleTypeFlagBitsNV bit1 )
20908 {
20909 return ExternalMemoryHandleTypeFlagsNV( bit0 ) | bit1;
20910 }
20911
20912 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator~( ExternalMemoryHandleTypeFlagBitsNV bits )
20913 {
20914 return ~( ExternalMemoryHandleTypeFlagsNV( bits ) );
20915 }
20916
20917 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsNV>
20918 {
20919 enum
20920 {
20921 allFlags = VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt)
20922 };
20923 };
20924
20925 struct ExternalMemoryImageCreateInfoNV
20926 {
20927 ExternalMemoryImageCreateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
20928 : sType( StructureType::eExternalMemoryImageCreateInfoNV )
20929 , pNext( nullptr )
20930 , handleTypes( handleTypes_ )
20931 {
20932 }
20933
20934 ExternalMemoryImageCreateInfoNV( VkExternalMemoryImageCreateInfoNV const & rhs )
20935 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020936 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020937 }
20938
20939 ExternalMemoryImageCreateInfoNV& operator=( VkExternalMemoryImageCreateInfoNV const & rhs )
20940 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020941 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020942 return *this;
20943 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020944 ExternalMemoryImageCreateInfoNV& setPNext( const void* pNext_ )
20945 {
20946 pNext = pNext_;
20947 return *this;
20948 }
20949
20950 ExternalMemoryImageCreateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
20951 {
20952 handleTypes = handleTypes_;
20953 return *this;
20954 }
20955
20956 operator const VkExternalMemoryImageCreateInfoNV&() const
20957 {
20958 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoNV*>(this);
20959 }
20960
20961 bool operator==( ExternalMemoryImageCreateInfoNV const& rhs ) const
20962 {
20963 return ( sType == rhs.sType )
20964 && ( pNext == rhs.pNext )
20965 && ( handleTypes == rhs.handleTypes );
20966 }
20967
20968 bool operator!=( ExternalMemoryImageCreateInfoNV const& rhs ) const
20969 {
20970 return !operator==( rhs );
20971 }
20972
20973 private:
20974 StructureType sType;
20975
20976 public:
20977 const void* pNext;
20978 ExternalMemoryHandleTypeFlagsNV handleTypes;
20979 };
20980 static_assert( sizeof( ExternalMemoryImageCreateInfoNV ) == sizeof( VkExternalMemoryImageCreateInfoNV ), "struct and wrapper have different size!" );
20981
20982 struct ExportMemoryAllocateInfoNV
20983 {
20984 ExportMemoryAllocateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
20985 : sType( StructureType::eExportMemoryAllocateInfoNV )
20986 , pNext( nullptr )
20987 , handleTypes( handleTypes_ )
20988 {
20989 }
20990
20991 ExportMemoryAllocateInfoNV( VkExportMemoryAllocateInfoNV const & rhs )
20992 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020993 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020994 }
20995
20996 ExportMemoryAllocateInfoNV& operator=( VkExportMemoryAllocateInfoNV const & rhs )
20997 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020998 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020999 return *this;
21000 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021001 ExportMemoryAllocateInfoNV& setPNext( const void* pNext_ )
21002 {
21003 pNext = pNext_;
21004 return *this;
21005 }
21006
21007 ExportMemoryAllocateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
21008 {
21009 handleTypes = handleTypes_;
21010 return *this;
21011 }
21012
21013 operator const VkExportMemoryAllocateInfoNV&() const
21014 {
21015 return *reinterpret_cast<const VkExportMemoryAllocateInfoNV*>(this);
21016 }
21017
21018 bool operator==( ExportMemoryAllocateInfoNV const& rhs ) const
21019 {
21020 return ( sType == rhs.sType )
21021 && ( pNext == rhs.pNext )
21022 && ( handleTypes == rhs.handleTypes );
21023 }
21024
21025 bool operator!=( ExportMemoryAllocateInfoNV const& rhs ) const
21026 {
21027 return !operator==( rhs );
21028 }
21029
21030 private:
21031 StructureType sType;
21032
21033 public:
21034 const void* pNext;
21035 ExternalMemoryHandleTypeFlagsNV handleTypes;
21036 };
21037 static_assert( sizeof( ExportMemoryAllocateInfoNV ) == sizeof( VkExportMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
21038
21039#ifdef VK_USE_PLATFORM_WIN32_KHR
21040 struct ImportMemoryWin32HandleInfoNV
21041 {
21042 ImportMemoryWin32HandleInfoNV( ExternalMemoryHandleTypeFlagsNV handleType_ = ExternalMemoryHandleTypeFlagsNV(), HANDLE handle_ = 0 )
21043 : sType( StructureType::eImportMemoryWin32HandleInfoNV )
21044 , pNext( nullptr )
21045 , handleType( handleType_ )
21046 , handle( handle_ )
21047 {
21048 }
21049
21050 ImportMemoryWin32HandleInfoNV( VkImportMemoryWin32HandleInfoNV const & rhs )
21051 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021052 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021053 }
21054
21055 ImportMemoryWin32HandleInfoNV& operator=( VkImportMemoryWin32HandleInfoNV const & rhs )
21056 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021057 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021058 return *this;
21059 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021060 ImportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
21061 {
21062 pNext = pNext_;
21063 return *this;
21064 }
21065
21066 ImportMemoryWin32HandleInfoNV& setHandleType( ExternalMemoryHandleTypeFlagsNV handleType_ )
21067 {
21068 handleType = handleType_;
21069 return *this;
21070 }
21071
21072 ImportMemoryWin32HandleInfoNV& setHandle( HANDLE handle_ )
21073 {
21074 handle = handle_;
21075 return *this;
21076 }
21077
21078 operator const VkImportMemoryWin32HandleInfoNV&() const
21079 {
21080 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoNV*>(this);
21081 }
21082
21083 bool operator==( ImportMemoryWin32HandleInfoNV const& rhs ) const
21084 {
21085 return ( sType == rhs.sType )
21086 && ( pNext == rhs.pNext )
21087 && ( handleType == rhs.handleType )
21088 && ( handle == rhs.handle );
21089 }
21090
21091 bool operator!=( ImportMemoryWin32HandleInfoNV const& rhs ) const
21092 {
21093 return !operator==( rhs );
21094 }
21095
21096 private:
21097 StructureType sType;
21098
21099 public:
21100 const void* pNext;
21101 ExternalMemoryHandleTypeFlagsNV handleType;
21102 HANDLE handle;
21103 };
21104 static_assert( sizeof( ImportMemoryWin32HandleInfoNV ) == sizeof( VkImportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
21105#endif /*VK_USE_PLATFORM_WIN32_KHR*/
21106
21107 enum class ExternalMemoryFeatureFlagBitsNV
21108 {
21109 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV,
21110 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV,
21111 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV
21112 };
21113
21114 using ExternalMemoryFeatureFlagsNV = Flags<ExternalMemoryFeatureFlagBitsNV, VkExternalMemoryFeatureFlagsNV>;
21115
21116 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator|( ExternalMemoryFeatureFlagBitsNV bit0, ExternalMemoryFeatureFlagBitsNV bit1 )
21117 {
21118 return ExternalMemoryFeatureFlagsNV( bit0 ) | bit1;
21119 }
21120
21121 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator~( ExternalMemoryFeatureFlagBitsNV bits )
21122 {
21123 return ~( ExternalMemoryFeatureFlagsNV( bits ) );
21124 }
21125
21126 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsNV>
21127 {
21128 enum
21129 {
21130 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eImportable)
21131 };
21132 };
21133
21134 struct ExternalImageFormatPropertiesNV
21135 {
21136 operator const VkExternalImageFormatPropertiesNV&() const
21137 {
21138 return *reinterpret_cast<const VkExternalImageFormatPropertiesNV*>(this);
21139 }
21140
21141 bool operator==( ExternalImageFormatPropertiesNV const& rhs ) const
21142 {
21143 return ( imageFormatProperties == rhs.imageFormatProperties )
21144 && ( externalMemoryFeatures == rhs.externalMemoryFeatures )
21145 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
21146 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
21147 }
21148
21149 bool operator!=( ExternalImageFormatPropertiesNV const& rhs ) const
21150 {
21151 return !operator==( rhs );
21152 }
21153
21154 ImageFormatProperties imageFormatProperties;
21155 ExternalMemoryFeatureFlagsNV externalMemoryFeatures;
21156 ExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes;
21157 ExternalMemoryHandleTypeFlagsNV compatibleHandleTypes;
21158 };
21159 static_assert( sizeof( ExternalImageFormatPropertiesNV ) == sizeof( VkExternalImageFormatPropertiesNV ), "struct and wrapper have different size!" );
21160
21161 enum class ValidationCheckEXT
21162 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021163 eAll = VK_VALIDATION_CHECK_ALL_EXT,
21164 eShaders = VK_VALIDATION_CHECK_SHADERS_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021165 };
21166
21167 struct ValidationFlagsEXT
21168 {
21169 ValidationFlagsEXT( uint32_t disabledValidationCheckCount_ = 0, ValidationCheckEXT* pDisabledValidationChecks_ = nullptr )
21170 : sType( StructureType::eValidationFlagsEXT )
21171 , pNext( nullptr )
21172 , disabledValidationCheckCount( disabledValidationCheckCount_ )
21173 , pDisabledValidationChecks( pDisabledValidationChecks_ )
21174 {
21175 }
21176
21177 ValidationFlagsEXT( VkValidationFlagsEXT const & rhs )
21178 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021179 memcpy( this, &rhs, sizeof( ValidationFlagsEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021180 }
21181
21182 ValidationFlagsEXT& operator=( VkValidationFlagsEXT const & rhs )
21183 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021184 memcpy( this, &rhs, sizeof( ValidationFlagsEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021185 return *this;
21186 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021187 ValidationFlagsEXT& setPNext( const void* pNext_ )
21188 {
21189 pNext = pNext_;
21190 return *this;
21191 }
21192
21193 ValidationFlagsEXT& setDisabledValidationCheckCount( uint32_t disabledValidationCheckCount_ )
21194 {
21195 disabledValidationCheckCount = disabledValidationCheckCount_;
21196 return *this;
21197 }
21198
21199 ValidationFlagsEXT& setPDisabledValidationChecks( ValidationCheckEXT* pDisabledValidationChecks_ )
21200 {
21201 pDisabledValidationChecks = pDisabledValidationChecks_;
21202 return *this;
21203 }
21204
21205 operator const VkValidationFlagsEXT&() const
21206 {
21207 return *reinterpret_cast<const VkValidationFlagsEXT*>(this);
21208 }
21209
21210 bool operator==( ValidationFlagsEXT const& rhs ) const
21211 {
21212 return ( sType == rhs.sType )
21213 && ( pNext == rhs.pNext )
21214 && ( disabledValidationCheckCount == rhs.disabledValidationCheckCount )
21215 && ( pDisabledValidationChecks == rhs.pDisabledValidationChecks );
21216 }
21217
21218 bool operator!=( ValidationFlagsEXT const& rhs ) const
21219 {
21220 return !operator==( rhs );
21221 }
21222
21223 private:
21224 StructureType sType;
21225
21226 public:
21227 const void* pNext;
21228 uint32_t disabledValidationCheckCount;
21229 ValidationCheckEXT* pDisabledValidationChecks;
21230 };
21231 static_assert( sizeof( ValidationFlagsEXT ) == sizeof( VkValidationFlagsEXT ), "struct and wrapper have different size!" );
21232
21233 enum class IndirectCommandsLayoutUsageFlagBitsNVX
21234 {
21235 eUnorderedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX,
21236 eSparseSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX,
21237 eEmptyExecutions = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX,
21238 eIndexedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX
21239 };
21240
21241 using IndirectCommandsLayoutUsageFlagsNVX = Flags<IndirectCommandsLayoutUsageFlagBitsNVX, VkIndirectCommandsLayoutUsageFlagsNVX>;
21242
21243 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator|( IndirectCommandsLayoutUsageFlagBitsNVX bit0, IndirectCommandsLayoutUsageFlagBitsNVX bit1 )
21244 {
21245 return IndirectCommandsLayoutUsageFlagsNVX( bit0 ) | bit1;
21246 }
21247
21248 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator~( IndirectCommandsLayoutUsageFlagBitsNVX bits )
21249 {
21250 return ~( IndirectCommandsLayoutUsageFlagsNVX( bits ) );
21251 }
21252
21253 template <> struct FlagTraits<IndirectCommandsLayoutUsageFlagBitsNVX>
21254 {
21255 enum
21256 {
21257 allFlags = VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences)
21258 };
21259 };
21260
21261 enum class ObjectEntryUsageFlagBitsNVX
21262 {
21263 eGraphics = VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX,
21264 eCompute = VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX
21265 };
21266
21267 using ObjectEntryUsageFlagsNVX = Flags<ObjectEntryUsageFlagBitsNVX, VkObjectEntryUsageFlagsNVX>;
21268
21269 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator|( ObjectEntryUsageFlagBitsNVX bit0, ObjectEntryUsageFlagBitsNVX bit1 )
21270 {
21271 return ObjectEntryUsageFlagsNVX( bit0 ) | bit1;
21272 }
21273
21274 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator~( ObjectEntryUsageFlagBitsNVX bits )
21275 {
21276 return ~( ObjectEntryUsageFlagsNVX( bits ) );
21277 }
21278
21279 template <> struct FlagTraits<ObjectEntryUsageFlagBitsNVX>
21280 {
21281 enum
21282 {
21283 allFlags = VkFlags(ObjectEntryUsageFlagBitsNVX::eGraphics) | VkFlags(ObjectEntryUsageFlagBitsNVX::eCompute)
21284 };
21285 };
21286
21287 enum class IndirectCommandsTokenTypeNVX
21288 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021289 ePipeline = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX,
21290 eDescriptorSet = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX,
21291 eIndexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX,
21292 eVertexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX,
21293 ePushConstant = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX,
21294 eDrawIndexed = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX,
21295 eDraw = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX,
21296 eDispatch = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021297 };
21298
21299 struct IndirectCommandsTokenNVX
21300 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021301 IndirectCommandsTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::ePipeline, Buffer buffer_ = Buffer(), DeviceSize offset_ = 0 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021302 : tokenType( tokenType_ )
21303 , buffer( buffer_ )
21304 , offset( offset_ )
21305 {
21306 }
21307
21308 IndirectCommandsTokenNVX( VkIndirectCommandsTokenNVX const & rhs )
21309 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021310 memcpy( this, &rhs, sizeof( IndirectCommandsTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021311 }
21312
21313 IndirectCommandsTokenNVX& operator=( VkIndirectCommandsTokenNVX const & rhs )
21314 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021315 memcpy( this, &rhs, sizeof( IndirectCommandsTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021316 return *this;
21317 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021318 IndirectCommandsTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
21319 {
21320 tokenType = tokenType_;
21321 return *this;
21322 }
21323
21324 IndirectCommandsTokenNVX& setBuffer( Buffer buffer_ )
21325 {
21326 buffer = buffer_;
21327 return *this;
21328 }
21329
21330 IndirectCommandsTokenNVX& setOffset( DeviceSize offset_ )
21331 {
21332 offset = offset_;
21333 return *this;
21334 }
21335
21336 operator const VkIndirectCommandsTokenNVX&() const
21337 {
21338 return *reinterpret_cast<const VkIndirectCommandsTokenNVX*>(this);
21339 }
21340
21341 bool operator==( IndirectCommandsTokenNVX const& rhs ) const
21342 {
21343 return ( tokenType == rhs.tokenType )
21344 && ( buffer == rhs.buffer )
21345 && ( offset == rhs.offset );
21346 }
21347
21348 bool operator!=( IndirectCommandsTokenNVX const& rhs ) const
21349 {
21350 return !operator==( rhs );
21351 }
21352
21353 IndirectCommandsTokenTypeNVX tokenType;
21354 Buffer buffer;
21355 DeviceSize offset;
21356 };
21357 static_assert( sizeof( IndirectCommandsTokenNVX ) == sizeof( VkIndirectCommandsTokenNVX ), "struct and wrapper have different size!" );
21358
21359 struct IndirectCommandsLayoutTokenNVX
21360 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021361 IndirectCommandsLayoutTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::ePipeline, uint32_t bindingUnit_ = 0, uint32_t dynamicCount_ = 0, uint32_t divisor_ = 0 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021362 : tokenType( tokenType_ )
21363 , bindingUnit( bindingUnit_ )
21364 , dynamicCount( dynamicCount_ )
21365 , divisor( divisor_ )
21366 {
21367 }
21368
21369 IndirectCommandsLayoutTokenNVX( VkIndirectCommandsLayoutTokenNVX const & rhs )
21370 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021371 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021372 }
21373
21374 IndirectCommandsLayoutTokenNVX& operator=( VkIndirectCommandsLayoutTokenNVX const & rhs )
21375 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021376 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021377 return *this;
21378 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021379 IndirectCommandsLayoutTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
21380 {
21381 tokenType = tokenType_;
21382 return *this;
21383 }
21384
21385 IndirectCommandsLayoutTokenNVX& setBindingUnit( uint32_t bindingUnit_ )
21386 {
21387 bindingUnit = bindingUnit_;
21388 return *this;
21389 }
21390
21391 IndirectCommandsLayoutTokenNVX& setDynamicCount( uint32_t dynamicCount_ )
21392 {
21393 dynamicCount = dynamicCount_;
21394 return *this;
21395 }
21396
21397 IndirectCommandsLayoutTokenNVX& setDivisor( uint32_t divisor_ )
21398 {
21399 divisor = divisor_;
21400 return *this;
21401 }
21402
21403 operator const VkIndirectCommandsLayoutTokenNVX&() const
21404 {
21405 return *reinterpret_cast<const VkIndirectCommandsLayoutTokenNVX*>(this);
21406 }
21407
21408 bool operator==( IndirectCommandsLayoutTokenNVX const& rhs ) const
21409 {
21410 return ( tokenType == rhs.tokenType )
21411 && ( bindingUnit == rhs.bindingUnit )
21412 && ( dynamicCount == rhs.dynamicCount )
21413 && ( divisor == rhs.divisor );
21414 }
21415
21416 bool operator!=( IndirectCommandsLayoutTokenNVX const& rhs ) const
21417 {
21418 return !operator==( rhs );
21419 }
21420
21421 IndirectCommandsTokenTypeNVX tokenType;
21422 uint32_t bindingUnit;
21423 uint32_t dynamicCount;
21424 uint32_t divisor;
21425 };
21426 static_assert( sizeof( IndirectCommandsLayoutTokenNVX ) == sizeof( VkIndirectCommandsLayoutTokenNVX ), "struct and wrapper have different size!" );
21427
21428 struct IndirectCommandsLayoutCreateInfoNVX
21429 {
21430 IndirectCommandsLayoutCreateInfoNVX( PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics, IndirectCommandsLayoutUsageFlagsNVX flags_ = IndirectCommandsLayoutUsageFlagsNVX(), uint32_t tokenCount_ = 0, const IndirectCommandsLayoutTokenNVX* pTokens_ = nullptr )
21431 : sType( StructureType::eIndirectCommandsLayoutCreateInfoNVX )
21432 , pNext( nullptr )
21433 , pipelineBindPoint( pipelineBindPoint_ )
21434 , flags( flags_ )
21435 , tokenCount( tokenCount_ )
21436 , pTokens( pTokens_ )
21437 {
21438 }
21439
21440 IndirectCommandsLayoutCreateInfoNVX( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
21441 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021442 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021443 }
21444
21445 IndirectCommandsLayoutCreateInfoNVX& operator=( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
21446 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021447 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021448 return *this;
21449 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021450 IndirectCommandsLayoutCreateInfoNVX& setPNext( const void* pNext_ )
21451 {
21452 pNext = pNext_;
21453 return *this;
21454 }
21455
21456 IndirectCommandsLayoutCreateInfoNVX& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
21457 {
21458 pipelineBindPoint = pipelineBindPoint_;
21459 return *this;
21460 }
21461
21462 IndirectCommandsLayoutCreateInfoNVX& setFlags( IndirectCommandsLayoutUsageFlagsNVX flags_ )
21463 {
21464 flags = flags_;
21465 return *this;
21466 }
21467
21468 IndirectCommandsLayoutCreateInfoNVX& setTokenCount( uint32_t tokenCount_ )
21469 {
21470 tokenCount = tokenCount_;
21471 return *this;
21472 }
21473
21474 IndirectCommandsLayoutCreateInfoNVX& setPTokens( const IndirectCommandsLayoutTokenNVX* pTokens_ )
21475 {
21476 pTokens = pTokens_;
21477 return *this;
21478 }
21479
21480 operator const VkIndirectCommandsLayoutCreateInfoNVX&() const
21481 {
21482 return *reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>(this);
21483 }
21484
21485 bool operator==( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
21486 {
21487 return ( sType == rhs.sType )
21488 && ( pNext == rhs.pNext )
21489 && ( pipelineBindPoint == rhs.pipelineBindPoint )
21490 && ( flags == rhs.flags )
21491 && ( tokenCount == rhs.tokenCount )
21492 && ( pTokens == rhs.pTokens );
21493 }
21494
21495 bool operator!=( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
21496 {
21497 return !operator==( rhs );
21498 }
21499
21500 private:
21501 StructureType sType;
21502
21503 public:
21504 const void* pNext;
21505 PipelineBindPoint pipelineBindPoint;
21506 IndirectCommandsLayoutUsageFlagsNVX flags;
21507 uint32_t tokenCount;
21508 const IndirectCommandsLayoutTokenNVX* pTokens;
21509 };
21510 static_assert( sizeof( IndirectCommandsLayoutCreateInfoNVX ) == sizeof( VkIndirectCommandsLayoutCreateInfoNVX ), "struct and wrapper have different size!" );
21511
21512 enum class ObjectEntryTypeNVX
21513 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021514 eDescriptorSet = VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX,
21515 ePipeline = VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX,
21516 eIndexBuffer = VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX,
21517 eVertexBuffer = VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX,
21518 ePushConstant = VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021519 };
21520
21521 struct ObjectTableCreateInfoNVX
21522 {
21523 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 )
21524 : sType( StructureType::eObjectTableCreateInfoNVX )
21525 , pNext( nullptr )
21526 , objectCount( objectCount_ )
21527 , pObjectEntryTypes( pObjectEntryTypes_ )
21528 , pObjectEntryCounts( pObjectEntryCounts_ )
21529 , pObjectEntryUsageFlags( pObjectEntryUsageFlags_ )
21530 , maxUniformBuffersPerDescriptor( maxUniformBuffersPerDescriptor_ )
21531 , maxStorageBuffersPerDescriptor( maxStorageBuffersPerDescriptor_ )
21532 , maxStorageImagesPerDescriptor( maxStorageImagesPerDescriptor_ )
21533 , maxSampledImagesPerDescriptor( maxSampledImagesPerDescriptor_ )
21534 , maxPipelineLayouts( maxPipelineLayouts_ )
21535 {
21536 }
21537
21538 ObjectTableCreateInfoNVX( VkObjectTableCreateInfoNVX const & rhs )
21539 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021540 memcpy( this, &rhs, sizeof( ObjectTableCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021541 }
21542
21543 ObjectTableCreateInfoNVX& operator=( VkObjectTableCreateInfoNVX const & rhs )
21544 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021545 memcpy( this, &rhs, sizeof( ObjectTableCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021546 return *this;
21547 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021548 ObjectTableCreateInfoNVX& setPNext( const void* pNext_ )
21549 {
21550 pNext = pNext_;
21551 return *this;
21552 }
21553
21554 ObjectTableCreateInfoNVX& setObjectCount( uint32_t objectCount_ )
21555 {
21556 objectCount = objectCount_;
21557 return *this;
21558 }
21559
21560 ObjectTableCreateInfoNVX& setPObjectEntryTypes( const ObjectEntryTypeNVX* pObjectEntryTypes_ )
21561 {
21562 pObjectEntryTypes = pObjectEntryTypes_;
21563 return *this;
21564 }
21565
21566 ObjectTableCreateInfoNVX& setPObjectEntryCounts( const uint32_t* pObjectEntryCounts_ )
21567 {
21568 pObjectEntryCounts = pObjectEntryCounts_;
21569 return *this;
21570 }
21571
21572 ObjectTableCreateInfoNVX& setPObjectEntryUsageFlags( const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags_ )
21573 {
21574 pObjectEntryUsageFlags = pObjectEntryUsageFlags_;
21575 return *this;
21576 }
21577
21578 ObjectTableCreateInfoNVX& setMaxUniformBuffersPerDescriptor( uint32_t maxUniformBuffersPerDescriptor_ )
21579 {
21580 maxUniformBuffersPerDescriptor = maxUniformBuffersPerDescriptor_;
21581 return *this;
21582 }
21583
21584 ObjectTableCreateInfoNVX& setMaxStorageBuffersPerDescriptor( uint32_t maxStorageBuffersPerDescriptor_ )
21585 {
21586 maxStorageBuffersPerDescriptor = maxStorageBuffersPerDescriptor_;
21587 return *this;
21588 }
21589
21590 ObjectTableCreateInfoNVX& setMaxStorageImagesPerDescriptor( uint32_t maxStorageImagesPerDescriptor_ )
21591 {
21592 maxStorageImagesPerDescriptor = maxStorageImagesPerDescriptor_;
21593 return *this;
21594 }
21595
21596 ObjectTableCreateInfoNVX& setMaxSampledImagesPerDescriptor( uint32_t maxSampledImagesPerDescriptor_ )
21597 {
21598 maxSampledImagesPerDescriptor = maxSampledImagesPerDescriptor_;
21599 return *this;
21600 }
21601
21602 ObjectTableCreateInfoNVX& setMaxPipelineLayouts( uint32_t maxPipelineLayouts_ )
21603 {
21604 maxPipelineLayouts = maxPipelineLayouts_;
21605 return *this;
21606 }
21607
21608 operator const VkObjectTableCreateInfoNVX&() const
21609 {
21610 return *reinterpret_cast<const VkObjectTableCreateInfoNVX*>(this);
21611 }
21612
21613 bool operator==( ObjectTableCreateInfoNVX const& rhs ) const
21614 {
21615 return ( sType == rhs.sType )
21616 && ( pNext == rhs.pNext )
21617 && ( objectCount == rhs.objectCount )
21618 && ( pObjectEntryTypes == rhs.pObjectEntryTypes )
21619 && ( pObjectEntryCounts == rhs.pObjectEntryCounts )
21620 && ( pObjectEntryUsageFlags == rhs.pObjectEntryUsageFlags )
21621 && ( maxUniformBuffersPerDescriptor == rhs.maxUniformBuffersPerDescriptor )
21622 && ( maxStorageBuffersPerDescriptor == rhs.maxStorageBuffersPerDescriptor )
21623 && ( maxStorageImagesPerDescriptor == rhs.maxStorageImagesPerDescriptor )
21624 && ( maxSampledImagesPerDescriptor == rhs.maxSampledImagesPerDescriptor )
21625 && ( maxPipelineLayouts == rhs.maxPipelineLayouts );
21626 }
21627
21628 bool operator!=( ObjectTableCreateInfoNVX const& rhs ) const
21629 {
21630 return !operator==( rhs );
21631 }
21632
21633 private:
21634 StructureType sType;
21635
21636 public:
21637 const void* pNext;
21638 uint32_t objectCount;
21639 const ObjectEntryTypeNVX* pObjectEntryTypes;
21640 const uint32_t* pObjectEntryCounts;
21641 const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags;
21642 uint32_t maxUniformBuffersPerDescriptor;
21643 uint32_t maxStorageBuffersPerDescriptor;
21644 uint32_t maxStorageImagesPerDescriptor;
21645 uint32_t maxSampledImagesPerDescriptor;
21646 uint32_t maxPipelineLayouts;
21647 };
21648 static_assert( sizeof( ObjectTableCreateInfoNVX ) == sizeof( VkObjectTableCreateInfoNVX ), "struct and wrapper have different size!" );
21649
21650 struct ObjectTableEntryNVX
21651 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021652 ObjectTableEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021653 : type( type_ )
21654 , flags( flags_ )
21655 {
21656 }
21657
21658 ObjectTableEntryNVX( VkObjectTableEntryNVX const & rhs )
21659 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021660 memcpy( this, &rhs, sizeof( ObjectTableEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021661 }
21662
21663 ObjectTableEntryNVX& operator=( VkObjectTableEntryNVX const & rhs )
21664 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021665 memcpy( this, &rhs, sizeof( ObjectTableEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021666 return *this;
21667 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021668 ObjectTableEntryNVX& setType( ObjectEntryTypeNVX type_ )
21669 {
21670 type = type_;
21671 return *this;
21672 }
21673
21674 ObjectTableEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
21675 {
21676 flags = flags_;
21677 return *this;
21678 }
21679
21680 operator const VkObjectTableEntryNVX&() const
21681 {
21682 return *reinterpret_cast<const VkObjectTableEntryNVX*>(this);
21683 }
21684
21685 bool operator==( ObjectTableEntryNVX const& rhs ) const
21686 {
21687 return ( type == rhs.type )
21688 && ( flags == rhs.flags );
21689 }
21690
21691 bool operator!=( ObjectTableEntryNVX const& rhs ) const
21692 {
21693 return !operator==( rhs );
21694 }
21695
21696 ObjectEntryTypeNVX type;
21697 ObjectEntryUsageFlagsNVX flags;
21698 };
21699 static_assert( sizeof( ObjectTableEntryNVX ) == sizeof( VkObjectTableEntryNVX ), "struct and wrapper have different size!" );
21700
21701 struct ObjectTablePipelineEntryNVX
21702 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021703 ObjectTablePipelineEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Pipeline pipeline_ = Pipeline() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021704 : type( type_ )
21705 , flags( flags_ )
21706 , pipeline( pipeline_ )
21707 {
21708 }
21709
21710 ObjectTablePipelineEntryNVX( VkObjectTablePipelineEntryNVX const & rhs )
21711 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021712 memcpy( this, &rhs, sizeof( ObjectTablePipelineEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021713 }
21714
21715 ObjectTablePipelineEntryNVX& operator=( VkObjectTablePipelineEntryNVX const & rhs )
21716 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021717 memcpy( this, &rhs, sizeof( ObjectTablePipelineEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021718 return *this;
21719 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021720 ObjectTablePipelineEntryNVX& setType( ObjectEntryTypeNVX type_ )
21721 {
21722 type = type_;
21723 return *this;
21724 }
21725
21726 ObjectTablePipelineEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
21727 {
21728 flags = flags_;
21729 return *this;
21730 }
21731
21732 ObjectTablePipelineEntryNVX& setPipeline( Pipeline pipeline_ )
21733 {
21734 pipeline = pipeline_;
21735 return *this;
21736 }
21737
21738 operator const VkObjectTablePipelineEntryNVX&() const
21739 {
21740 return *reinterpret_cast<const VkObjectTablePipelineEntryNVX*>(this);
21741 }
21742
21743 bool operator==( ObjectTablePipelineEntryNVX const& rhs ) const
21744 {
21745 return ( type == rhs.type )
21746 && ( flags == rhs.flags )
21747 && ( pipeline == rhs.pipeline );
21748 }
21749
21750 bool operator!=( ObjectTablePipelineEntryNVX const& rhs ) const
21751 {
21752 return !operator==( rhs );
21753 }
21754
21755 ObjectEntryTypeNVX type;
21756 ObjectEntryUsageFlagsNVX flags;
21757 Pipeline pipeline;
21758 };
21759 static_assert( sizeof( ObjectTablePipelineEntryNVX ) == sizeof( VkObjectTablePipelineEntryNVX ), "struct and wrapper have different size!" );
21760
21761 struct ObjectTableDescriptorSetEntryNVX
21762 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021763 ObjectTableDescriptorSetEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), PipelineLayout pipelineLayout_ = PipelineLayout(), DescriptorSet descriptorSet_ = DescriptorSet() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021764 : type( type_ )
21765 , flags( flags_ )
21766 , pipelineLayout( pipelineLayout_ )
21767 , descriptorSet( descriptorSet_ )
21768 {
21769 }
21770
21771 ObjectTableDescriptorSetEntryNVX( VkObjectTableDescriptorSetEntryNVX const & rhs )
21772 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021773 memcpy( this, &rhs, sizeof( ObjectTableDescriptorSetEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021774 }
21775
21776 ObjectTableDescriptorSetEntryNVX& operator=( VkObjectTableDescriptorSetEntryNVX const & rhs )
21777 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021778 memcpy( this, &rhs, sizeof( ObjectTableDescriptorSetEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021779 return *this;
21780 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021781 ObjectTableDescriptorSetEntryNVX& setType( ObjectEntryTypeNVX type_ )
21782 {
21783 type = type_;
21784 return *this;
21785 }
21786
21787 ObjectTableDescriptorSetEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
21788 {
21789 flags = flags_;
21790 return *this;
21791 }
21792
21793 ObjectTableDescriptorSetEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
21794 {
21795 pipelineLayout = pipelineLayout_;
21796 return *this;
21797 }
21798
21799 ObjectTableDescriptorSetEntryNVX& setDescriptorSet( DescriptorSet descriptorSet_ )
21800 {
21801 descriptorSet = descriptorSet_;
21802 return *this;
21803 }
21804
21805 operator const VkObjectTableDescriptorSetEntryNVX&() const
21806 {
21807 return *reinterpret_cast<const VkObjectTableDescriptorSetEntryNVX*>(this);
21808 }
21809
21810 bool operator==( ObjectTableDescriptorSetEntryNVX const& rhs ) const
21811 {
21812 return ( type == rhs.type )
21813 && ( flags == rhs.flags )
21814 && ( pipelineLayout == rhs.pipelineLayout )
21815 && ( descriptorSet == rhs.descriptorSet );
21816 }
21817
21818 bool operator!=( ObjectTableDescriptorSetEntryNVX const& rhs ) const
21819 {
21820 return !operator==( rhs );
21821 }
21822
21823 ObjectEntryTypeNVX type;
21824 ObjectEntryUsageFlagsNVX flags;
21825 PipelineLayout pipelineLayout;
21826 DescriptorSet descriptorSet;
21827 };
21828 static_assert( sizeof( ObjectTableDescriptorSetEntryNVX ) == sizeof( VkObjectTableDescriptorSetEntryNVX ), "struct and wrapper have different size!" );
21829
21830 struct ObjectTableVertexBufferEntryNVX
21831 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021832 ObjectTableVertexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Buffer buffer_ = Buffer() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021833 : type( type_ )
21834 , flags( flags_ )
21835 , buffer( buffer_ )
21836 {
21837 }
21838
21839 ObjectTableVertexBufferEntryNVX( VkObjectTableVertexBufferEntryNVX const & rhs )
21840 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021841 memcpy( this, &rhs, sizeof( ObjectTableVertexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021842 }
21843
21844 ObjectTableVertexBufferEntryNVX& operator=( VkObjectTableVertexBufferEntryNVX const & rhs )
21845 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021846 memcpy( this, &rhs, sizeof( ObjectTableVertexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021847 return *this;
21848 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021849 ObjectTableVertexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
21850 {
21851 type = type_;
21852 return *this;
21853 }
21854
21855 ObjectTableVertexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
21856 {
21857 flags = flags_;
21858 return *this;
21859 }
21860
21861 ObjectTableVertexBufferEntryNVX& setBuffer( Buffer buffer_ )
21862 {
21863 buffer = buffer_;
21864 return *this;
21865 }
21866
21867 operator const VkObjectTableVertexBufferEntryNVX&() const
21868 {
21869 return *reinterpret_cast<const VkObjectTableVertexBufferEntryNVX*>(this);
21870 }
21871
21872 bool operator==( ObjectTableVertexBufferEntryNVX const& rhs ) const
21873 {
21874 return ( type == rhs.type )
21875 && ( flags == rhs.flags )
21876 && ( buffer == rhs.buffer );
21877 }
21878
21879 bool operator!=( ObjectTableVertexBufferEntryNVX const& rhs ) const
21880 {
21881 return !operator==( rhs );
21882 }
21883
21884 ObjectEntryTypeNVX type;
21885 ObjectEntryUsageFlagsNVX flags;
21886 Buffer buffer;
21887 };
21888 static_assert( sizeof( ObjectTableVertexBufferEntryNVX ) == sizeof( VkObjectTableVertexBufferEntryNVX ), "struct and wrapper have different size!" );
21889
21890 struct ObjectTableIndexBufferEntryNVX
21891 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021892 ObjectTableIndexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Buffer buffer_ = Buffer(), IndexType indexType_ = IndexType::eUint16 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021893 : type( type_ )
21894 , flags( flags_ )
21895 , buffer( buffer_ )
Mark Young39389872017-01-19 21:10:49 -070021896 , indexType( indexType_ )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021897 {
21898 }
21899
21900 ObjectTableIndexBufferEntryNVX( VkObjectTableIndexBufferEntryNVX const & rhs )
21901 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021902 memcpy( this, &rhs, sizeof( ObjectTableIndexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021903 }
21904
21905 ObjectTableIndexBufferEntryNVX& operator=( VkObjectTableIndexBufferEntryNVX const & rhs )
21906 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021907 memcpy( this, &rhs, sizeof( ObjectTableIndexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021908 return *this;
21909 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021910 ObjectTableIndexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
21911 {
21912 type = type_;
21913 return *this;
21914 }
21915
21916 ObjectTableIndexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
21917 {
21918 flags = flags_;
21919 return *this;
21920 }
21921
21922 ObjectTableIndexBufferEntryNVX& setBuffer( Buffer buffer_ )
21923 {
21924 buffer = buffer_;
21925 return *this;
21926 }
21927
Mark Young39389872017-01-19 21:10:49 -070021928 ObjectTableIndexBufferEntryNVX& setIndexType( IndexType indexType_ )
21929 {
21930 indexType = indexType_;
21931 return *this;
21932 }
21933
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021934 operator const VkObjectTableIndexBufferEntryNVX&() const
21935 {
21936 return *reinterpret_cast<const VkObjectTableIndexBufferEntryNVX*>(this);
21937 }
21938
21939 bool operator==( ObjectTableIndexBufferEntryNVX const& rhs ) const
21940 {
21941 return ( type == rhs.type )
21942 && ( flags == rhs.flags )
Mark Young39389872017-01-19 21:10:49 -070021943 && ( buffer == rhs.buffer )
21944 && ( indexType == rhs.indexType );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021945 }
21946
21947 bool operator!=( ObjectTableIndexBufferEntryNVX const& rhs ) const
21948 {
21949 return !operator==( rhs );
21950 }
21951
21952 ObjectEntryTypeNVX type;
21953 ObjectEntryUsageFlagsNVX flags;
21954 Buffer buffer;
Mark Young39389872017-01-19 21:10:49 -070021955 IndexType indexType;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021956 };
21957 static_assert( sizeof( ObjectTableIndexBufferEntryNVX ) == sizeof( VkObjectTableIndexBufferEntryNVX ), "struct and wrapper have different size!" );
21958
21959 struct ObjectTablePushConstantEntryNVX
21960 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021961 ObjectTablePushConstantEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), PipelineLayout pipelineLayout_ = PipelineLayout(), ShaderStageFlags stageFlags_ = ShaderStageFlags() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021962 : type( type_ )
21963 , flags( flags_ )
21964 , pipelineLayout( pipelineLayout_ )
21965 , stageFlags( stageFlags_ )
21966 {
21967 }
21968
21969 ObjectTablePushConstantEntryNVX( VkObjectTablePushConstantEntryNVX const & rhs )
21970 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021971 memcpy( this, &rhs, sizeof( ObjectTablePushConstantEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021972 }
21973
21974 ObjectTablePushConstantEntryNVX& operator=( VkObjectTablePushConstantEntryNVX const & rhs )
21975 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021976 memcpy( this, &rhs, sizeof( ObjectTablePushConstantEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021977 return *this;
21978 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021979 ObjectTablePushConstantEntryNVX& setType( ObjectEntryTypeNVX type_ )
21980 {
21981 type = type_;
21982 return *this;
21983 }
21984
21985 ObjectTablePushConstantEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
21986 {
21987 flags = flags_;
21988 return *this;
21989 }
21990
21991 ObjectTablePushConstantEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
21992 {
21993 pipelineLayout = pipelineLayout_;
21994 return *this;
21995 }
21996
21997 ObjectTablePushConstantEntryNVX& setStageFlags( ShaderStageFlags stageFlags_ )
21998 {
21999 stageFlags = stageFlags_;
22000 return *this;
22001 }
22002
22003 operator const VkObjectTablePushConstantEntryNVX&() const
22004 {
22005 return *reinterpret_cast<const VkObjectTablePushConstantEntryNVX*>(this);
22006 }
22007
22008 bool operator==( ObjectTablePushConstantEntryNVX const& rhs ) const
22009 {
22010 return ( type == rhs.type )
22011 && ( flags == rhs.flags )
22012 && ( pipelineLayout == rhs.pipelineLayout )
22013 && ( stageFlags == rhs.stageFlags );
22014 }
22015
22016 bool operator!=( ObjectTablePushConstantEntryNVX const& rhs ) const
22017 {
22018 return !operator==( rhs );
22019 }
22020
22021 ObjectEntryTypeNVX type;
22022 ObjectEntryUsageFlagsNVX flags;
22023 PipelineLayout pipelineLayout;
22024 ShaderStageFlags stageFlags;
22025 };
22026 static_assert( sizeof( ObjectTablePushConstantEntryNVX ) == sizeof( VkObjectTablePushConstantEntryNVX ), "struct and wrapper have different size!" );
22027
Mark Young0f183a82017-02-28 09:58:04 -070022028 enum class DescriptorSetLayoutCreateFlagBits
22029 {
22030 ePushDescriptorKHR = VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
22031 };
22032
22033 using DescriptorSetLayoutCreateFlags = Flags<DescriptorSetLayoutCreateFlagBits, VkDescriptorSetLayoutCreateFlags>;
22034
22035 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator|( DescriptorSetLayoutCreateFlagBits bit0, DescriptorSetLayoutCreateFlagBits bit1 )
22036 {
22037 return DescriptorSetLayoutCreateFlags( bit0 ) | bit1;
22038 }
22039
22040 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator~( DescriptorSetLayoutCreateFlagBits bits )
22041 {
22042 return ~( DescriptorSetLayoutCreateFlags( bits ) );
22043 }
22044
22045 template <> struct FlagTraits<DescriptorSetLayoutCreateFlagBits>
22046 {
22047 enum
22048 {
22049 allFlags = VkFlags(DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR)
22050 };
22051 };
22052
22053 struct DescriptorSetLayoutCreateInfo
22054 {
22055 DescriptorSetLayoutCreateInfo( DescriptorSetLayoutCreateFlags flags_ = DescriptorSetLayoutCreateFlags(), uint32_t bindingCount_ = 0, const DescriptorSetLayoutBinding* pBindings_ = nullptr )
22056 : sType( StructureType::eDescriptorSetLayoutCreateInfo )
22057 , pNext( nullptr )
22058 , flags( flags_ )
22059 , bindingCount( bindingCount_ )
22060 , pBindings( pBindings_ )
22061 {
22062 }
22063
22064 DescriptorSetLayoutCreateInfo( VkDescriptorSetLayoutCreateInfo const & rhs )
22065 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022066 memcpy( this, &rhs, sizeof( DescriptorSetLayoutCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070022067 }
22068
22069 DescriptorSetLayoutCreateInfo& operator=( VkDescriptorSetLayoutCreateInfo const & rhs )
22070 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060022071 memcpy( this, &rhs, sizeof( DescriptorSetLayoutCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070022072 return *this;
22073 }
Mark Young0f183a82017-02-28 09:58:04 -070022074 DescriptorSetLayoutCreateInfo& setPNext( const void* pNext_ )
22075 {
22076 pNext = pNext_;
22077 return *this;
22078 }
22079
22080 DescriptorSetLayoutCreateInfo& setFlags( DescriptorSetLayoutCreateFlags flags_ )
22081 {
22082 flags = flags_;
22083 return *this;
22084 }
22085
22086 DescriptorSetLayoutCreateInfo& setBindingCount( uint32_t bindingCount_ )
22087 {
22088 bindingCount = bindingCount_;
22089 return *this;
22090 }
22091
22092 DescriptorSetLayoutCreateInfo& setPBindings( const DescriptorSetLayoutBinding* pBindings_ )
22093 {
22094 pBindings = pBindings_;
22095 return *this;
22096 }
22097
22098 operator const VkDescriptorSetLayoutCreateInfo&() const
22099 {
22100 return *reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>(this);
22101 }
22102
22103 bool operator==( DescriptorSetLayoutCreateInfo const& rhs ) const
22104 {
22105 return ( sType == rhs.sType )
22106 && ( pNext == rhs.pNext )
22107 && ( flags == rhs.flags )
22108 && ( bindingCount == rhs.bindingCount )
22109 && ( pBindings == rhs.pBindings );
22110 }
22111
22112 bool operator!=( DescriptorSetLayoutCreateInfo const& rhs ) const
22113 {
22114 return !operator==( rhs );
22115 }
22116
22117 private:
22118 StructureType sType;
22119
22120 public:
22121 const void* pNext;
22122 DescriptorSetLayoutCreateFlags flags;
22123 uint32_t bindingCount;
22124 const DescriptorSetLayoutBinding* pBindings;
22125 };
22126 static_assert( sizeof( DescriptorSetLayoutCreateInfo ) == sizeof( VkDescriptorSetLayoutCreateInfo ), "struct and wrapper have different size!" );
22127
Mark Youngabc2d6e2017-07-07 07:59:56 -060022128 enum class ExternalMemoryHandleTypeFlagBitsKHR
Mark Young0f183a82017-02-28 09:58:04 -070022129 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022130 eOpaqueFd = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
22131 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
22132 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
22133 eD3D11Texture = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR,
22134 eD3D11TextureKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR,
22135 eD3D12Heap = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR,
Mark Lobodzinski417d5702017-11-27 12:00:45 -070022136 eD3D12Resource = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR,
22137 eDmaBufEXT = VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT,
22138 eHostAllocationEXT = VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT,
22139 eHostMappedForeignMemoryEXT = VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT
Mark Young0f183a82017-02-28 09:58:04 -070022140 };
22141
Mark Youngabc2d6e2017-07-07 07:59:56 -060022142 using ExternalMemoryHandleTypeFlagsKHR = Flags<ExternalMemoryHandleTypeFlagBitsKHR, VkExternalMemoryHandleTypeFlagsKHR>;
Mark Young0f183a82017-02-28 09:58:04 -070022143
Mark Youngabc2d6e2017-07-07 07:59:56 -060022144 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsKHR operator|( ExternalMemoryHandleTypeFlagBitsKHR bit0, ExternalMemoryHandleTypeFlagBitsKHR bit1 )
Mark Young0f183a82017-02-28 09:58:04 -070022145 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022146 return ExternalMemoryHandleTypeFlagsKHR( bit0 ) | bit1;
Mark Young0f183a82017-02-28 09:58:04 -070022147 }
22148
Mark Youngabc2d6e2017-07-07 07:59:56 -060022149 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsKHR operator~( ExternalMemoryHandleTypeFlagBitsKHR bits )
Mark Young0f183a82017-02-28 09:58:04 -070022150 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022151 return ~( ExternalMemoryHandleTypeFlagsKHR( bits ) );
Mark Young0f183a82017-02-28 09:58:04 -070022152 }
22153
Mark Youngabc2d6e2017-07-07 07:59:56 -060022154 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsKHR>
Mark Young0f183a82017-02-28 09:58:04 -070022155 {
22156 enum
22157 {
Mark Lobodzinski417d5702017-11-27 12:00:45 -070022158 allFlags = VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eD3D11Texture) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eD3D11TextureKmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Heap) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Resource) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eDmaBufEXT) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eHostAllocationEXT) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eHostMappedForeignMemoryEXT)
Mark Young0f183a82017-02-28 09:58:04 -070022159 };
22160 };
22161
Mark Youngabc2d6e2017-07-07 07:59:56 -060022162 struct PhysicalDeviceExternalImageFormatInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022163 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022164 PhysicalDeviceExternalImageFormatInfoKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd )
22165 : sType( StructureType::ePhysicalDeviceExternalImageFormatInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022166 , pNext( nullptr )
22167 , handleType( handleType_ )
22168 {
22169 }
22170
Mark Youngabc2d6e2017-07-07 07:59:56 -060022171 PhysicalDeviceExternalImageFormatInfoKHR( VkPhysicalDeviceExternalImageFormatInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022172 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022173 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalImageFormatInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022174 }
22175
Mark Youngabc2d6e2017-07-07 07:59:56 -060022176 PhysicalDeviceExternalImageFormatInfoKHR& operator=( VkPhysicalDeviceExternalImageFormatInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022177 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022178 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalImageFormatInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022179 return *this;
22180 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022181 PhysicalDeviceExternalImageFormatInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022182 {
22183 pNext = pNext_;
22184 return *this;
22185 }
22186
Mark Youngabc2d6e2017-07-07 07:59:56 -060022187 PhysicalDeviceExternalImageFormatInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022188 {
22189 handleType = handleType_;
22190 return *this;
22191 }
22192
Mark Youngabc2d6e2017-07-07 07:59:56 -060022193 operator const VkPhysicalDeviceExternalImageFormatInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022194 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022195 return *reinterpret_cast<const VkPhysicalDeviceExternalImageFormatInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022196 }
22197
Mark Youngabc2d6e2017-07-07 07:59:56 -060022198 bool operator==( PhysicalDeviceExternalImageFormatInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022199 {
22200 return ( sType == rhs.sType )
22201 && ( pNext == rhs.pNext )
22202 && ( handleType == rhs.handleType );
22203 }
22204
Mark Youngabc2d6e2017-07-07 07:59:56 -060022205 bool operator!=( PhysicalDeviceExternalImageFormatInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022206 {
22207 return !operator==( rhs );
22208 }
22209
22210 private:
22211 StructureType sType;
22212
22213 public:
22214 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022215 ExternalMemoryHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022216 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022217 static_assert( sizeof( PhysicalDeviceExternalImageFormatInfoKHR ) == sizeof( VkPhysicalDeviceExternalImageFormatInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022218
Mark Youngabc2d6e2017-07-07 07:59:56 -060022219 struct PhysicalDeviceExternalBufferInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022220 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022221 PhysicalDeviceExternalBufferInfoKHR( BufferCreateFlags flags_ = BufferCreateFlags(), BufferUsageFlags usage_ = BufferUsageFlags(), ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd )
22222 : sType( StructureType::ePhysicalDeviceExternalBufferInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022223 , pNext( nullptr )
22224 , flags( flags_ )
22225 , usage( usage_ )
22226 , handleType( handleType_ )
22227 {
22228 }
22229
Mark Youngabc2d6e2017-07-07 07:59:56 -060022230 PhysicalDeviceExternalBufferInfoKHR( VkPhysicalDeviceExternalBufferInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022231 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022232 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalBufferInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022233 }
22234
Mark Youngabc2d6e2017-07-07 07:59:56 -060022235 PhysicalDeviceExternalBufferInfoKHR& operator=( VkPhysicalDeviceExternalBufferInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022236 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022237 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalBufferInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022238 return *this;
22239 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022240 PhysicalDeviceExternalBufferInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022241 {
22242 pNext = pNext_;
22243 return *this;
22244 }
22245
Mark Youngabc2d6e2017-07-07 07:59:56 -060022246 PhysicalDeviceExternalBufferInfoKHR& setFlags( BufferCreateFlags flags_ )
Mark Young0f183a82017-02-28 09:58:04 -070022247 {
22248 flags = flags_;
22249 return *this;
22250 }
22251
Mark Youngabc2d6e2017-07-07 07:59:56 -060022252 PhysicalDeviceExternalBufferInfoKHR& setUsage( BufferUsageFlags usage_ )
Mark Young0f183a82017-02-28 09:58:04 -070022253 {
22254 usage = usage_;
22255 return *this;
22256 }
22257
Mark Youngabc2d6e2017-07-07 07:59:56 -060022258 PhysicalDeviceExternalBufferInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022259 {
22260 handleType = handleType_;
22261 return *this;
22262 }
22263
Mark Youngabc2d6e2017-07-07 07:59:56 -060022264 operator const VkPhysicalDeviceExternalBufferInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022265 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022266 return *reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022267 }
22268
Mark Youngabc2d6e2017-07-07 07:59:56 -060022269 bool operator==( PhysicalDeviceExternalBufferInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022270 {
22271 return ( sType == rhs.sType )
22272 && ( pNext == rhs.pNext )
22273 && ( flags == rhs.flags )
22274 && ( usage == rhs.usage )
22275 && ( handleType == rhs.handleType );
22276 }
22277
Mark Youngabc2d6e2017-07-07 07:59:56 -060022278 bool operator!=( PhysicalDeviceExternalBufferInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022279 {
22280 return !operator==( rhs );
22281 }
22282
22283 private:
22284 StructureType sType;
22285
22286 public:
22287 const void* pNext;
22288 BufferCreateFlags flags;
22289 BufferUsageFlags usage;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022290 ExternalMemoryHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022291 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022292 static_assert( sizeof( PhysicalDeviceExternalBufferInfoKHR ) == sizeof( VkPhysicalDeviceExternalBufferInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022293
Mark Youngabc2d6e2017-07-07 07:59:56 -060022294 struct ExternalMemoryImageCreateInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022295 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022296 ExternalMemoryImageCreateInfoKHR( ExternalMemoryHandleTypeFlagsKHR handleTypes_ = ExternalMemoryHandleTypeFlagsKHR() )
22297 : sType( StructureType::eExternalMemoryImageCreateInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022298 , pNext( nullptr )
22299 , handleTypes( handleTypes_ )
22300 {
22301 }
22302
Mark Youngabc2d6e2017-07-07 07:59:56 -060022303 ExternalMemoryImageCreateInfoKHR( VkExternalMemoryImageCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022304 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022305 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022306 }
22307
Mark Youngabc2d6e2017-07-07 07:59:56 -060022308 ExternalMemoryImageCreateInfoKHR& operator=( VkExternalMemoryImageCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022309 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022310 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022311 return *this;
22312 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022313 ExternalMemoryImageCreateInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022314 {
22315 pNext = pNext_;
22316 return *this;
22317 }
22318
Mark Youngabc2d6e2017-07-07 07:59:56 -060022319 ExternalMemoryImageCreateInfoKHR& setHandleTypes( ExternalMemoryHandleTypeFlagsKHR handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070022320 {
22321 handleTypes = handleTypes_;
22322 return *this;
22323 }
22324
Mark Youngabc2d6e2017-07-07 07:59:56 -060022325 operator const VkExternalMemoryImageCreateInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022326 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022327 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022328 }
22329
Mark Youngabc2d6e2017-07-07 07:59:56 -060022330 bool operator==( ExternalMemoryImageCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022331 {
22332 return ( sType == rhs.sType )
22333 && ( pNext == rhs.pNext )
22334 && ( handleTypes == rhs.handleTypes );
22335 }
22336
Mark Youngabc2d6e2017-07-07 07:59:56 -060022337 bool operator!=( ExternalMemoryImageCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022338 {
22339 return !operator==( rhs );
22340 }
22341
22342 private:
22343 StructureType sType;
22344
22345 public:
22346 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022347 ExternalMemoryHandleTypeFlagsKHR handleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070022348 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022349 static_assert( sizeof( ExternalMemoryImageCreateInfoKHR ) == sizeof( VkExternalMemoryImageCreateInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022350
Mark Youngabc2d6e2017-07-07 07:59:56 -060022351 struct ExternalMemoryBufferCreateInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022352 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022353 ExternalMemoryBufferCreateInfoKHR( ExternalMemoryHandleTypeFlagsKHR handleTypes_ = ExternalMemoryHandleTypeFlagsKHR() )
22354 : sType( StructureType::eExternalMemoryBufferCreateInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022355 , pNext( nullptr )
22356 , handleTypes( handleTypes_ )
22357 {
22358 }
22359
Mark Youngabc2d6e2017-07-07 07:59:56 -060022360 ExternalMemoryBufferCreateInfoKHR( VkExternalMemoryBufferCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022361 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022362 memcpy( this, &rhs, sizeof( ExternalMemoryBufferCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022363 }
22364
Mark Youngabc2d6e2017-07-07 07:59:56 -060022365 ExternalMemoryBufferCreateInfoKHR& operator=( VkExternalMemoryBufferCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022366 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022367 memcpy( this, &rhs, sizeof( ExternalMemoryBufferCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022368 return *this;
22369 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022370 ExternalMemoryBufferCreateInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022371 {
22372 pNext = pNext_;
22373 return *this;
22374 }
22375
Mark Youngabc2d6e2017-07-07 07:59:56 -060022376 ExternalMemoryBufferCreateInfoKHR& setHandleTypes( ExternalMemoryHandleTypeFlagsKHR handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070022377 {
22378 handleTypes = handleTypes_;
22379 return *this;
22380 }
22381
Mark Youngabc2d6e2017-07-07 07:59:56 -060022382 operator const VkExternalMemoryBufferCreateInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022383 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022384 return *reinterpret_cast<const VkExternalMemoryBufferCreateInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022385 }
22386
Mark Youngabc2d6e2017-07-07 07:59:56 -060022387 bool operator==( ExternalMemoryBufferCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022388 {
22389 return ( sType == rhs.sType )
22390 && ( pNext == rhs.pNext )
22391 && ( handleTypes == rhs.handleTypes );
22392 }
22393
Mark Youngabc2d6e2017-07-07 07:59:56 -060022394 bool operator!=( ExternalMemoryBufferCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022395 {
22396 return !operator==( rhs );
22397 }
22398
22399 private:
22400 StructureType sType;
22401
22402 public:
22403 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022404 ExternalMemoryHandleTypeFlagsKHR handleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070022405 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022406 static_assert( sizeof( ExternalMemoryBufferCreateInfoKHR ) == sizeof( VkExternalMemoryBufferCreateInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022407
Mark Youngabc2d6e2017-07-07 07:59:56 -060022408 struct ExportMemoryAllocateInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022409 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022410 ExportMemoryAllocateInfoKHR( ExternalMemoryHandleTypeFlagsKHR handleTypes_ = ExternalMemoryHandleTypeFlagsKHR() )
22411 : sType( StructureType::eExportMemoryAllocateInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022412 , pNext( nullptr )
22413 , handleTypes( handleTypes_ )
22414 {
22415 }
22416
Mark Youngabc2d6e2017-07-07 07:59:56 -060022417 ExportMemoryAllocateInfoKHR( VkExportMemoryAllocateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022418 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022419 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022420 }
22421
Mark Youngabc2d6e2017-07-07 07:59:56 -060022422 ExportMemoryAllocateInfoKHR& operator=( VkExportMemoryAllocateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022423 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022424 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022425 return *this;
22426 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022427 ExportMemoryAllocateInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022428 {
22429 pNext = pNext_;
22430 return *this;
22431 }
22432
Mark Youngabc2d6e2017-07-07 07:59:56 -060022433 ExportMemoryAllocateInfoKHR& setHandleTypes( ExternalMemoryHandleTypeFlagsKHR handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070022434 {
22435 handleTypes = handleTypes_;
22436 return *this;
22437 }
22438
Mark Youngabc2d6e2017-07-07 07:59:56 -060022439 operator const VkExportMemoryAllocateInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022440 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022441 return *reinterpret_cast<const VkExportMemoryAllocateInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022442 }
22443
Mark Youngabc2d6e2017-07-07 07:59:56 -060022444 bool operator==( ExportMemoryAllocateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022445 {
22446 return ( sType == rhs.sType )
22447 && ( pNext == rhs.pNext )
22448 && ( handleTypes == rhs.handleTypes );
22449 }
22450
Mark Youngabc2d6e2017-07-07 07:59:56 -060022451 bool operator!=( ExportMemoryAllocateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022452 {
22453 return !operator==( rhs );
22454 }
22455
22456 private:
22457 StructureType sType;
22458
22459 public:
22460 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022461 ExternalMemoryHandleTypeFlagsKHR handleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070022462 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022463 static_assert( sizeof( ExportMemoryAllocateInfoKHR ) == sizeof( VkExportMemoryAllocateInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022464
Mark Youngabc2d6e2017-07-07 07:59:56 -060022465#ifdef VK_USE_PLATFORM_WIN32_KHR
22466 struct ImportMemoryWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022467 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022468 ImportMemoryWin32HandleInfoKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd, HANDLE handle_ = 0, LPCWSTR name_ = 0 )
22469 : sType( StructureType::eImportMemoryWin32HandleInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022470 , pNext( nullptr )
22471 , handleType( handleType_ )
22472 , handle( handle_ )
Mark Youngabc2d6e2017-07-07 07:59:56 -060022473 , name( name_ )
Mark Young0f183a82017-02-28 09:58:04 -070022474 {
22475 }
22476
Mark Youngabc2d6e2017-07-07 07:59:56 -060022477 ImportMemoryWin32HandleInfoKHR( VkImportMemoryWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022478 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022479 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022480 }
22481
Mark Youngabc2d6e2017-07-07 07:59:56 -060022482 ImportMemoryWin32HandleInfoKHR& operator=( VkImportMemoryWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022483 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022484 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022485 return *this;
22486 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022487 ImportMemoryWin32HandleInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022488 {
22489 pNext = pNext_;
22490 return *this;
22491 }
22492
Mark Youngabc2d6e2017-07-07 07:59:56 -060022493 ImportMemoryWin32HandleInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022494 {
22495 handleType = handleType_;
22496 return *this;
22497 }
22498
Mark Youngabc2d6e2017-07-07 07:59:56 -060022499 ImportMemoryWin32HandleInfoKHR& setHandle( HANDLE handle_ )
Mark Young0f183a82017-02-28 09:58:04 -070022500 {
22501 handle = handle_;
22502 return *this;
22503 }
22504
Mark Youngabc2d6e2017-07-07 07:59:56 -060022505 ImportMemoryWin32HandleInfoKHR& setName( LPCWSTR name_ )
Mark Young0f183a82017-02-28 09:58:04 -070022506 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022507 name = name_;
22508 return *this;
Mark Young0f183a82017-02-28 09:58:04 -070022509 }
22510
Mark Youngabc2d6e2017-07-07 07:59:56 -060022511 operator const VkImportMemoryWin32HandleInfoKHR&() const
22512 {
22513 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoKHR*>(this);
22514 }
22515
22516 bool operator==( ImportMemoryWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022517 {
22518 return ( sType == rhs.sType )
22519 && ( pNext == rhs.pNext )
22520 && ( handleType == rhs.handleType )
Mark Youngabc2d6e2017-07-07 07:59:56 -060022521 && ( handle == rhs.handle )
22522 && ( name == rhs.name );
Mark Young0f183a82017-02-28 09:58:04 -070022523 }
22524
Mark Youngabc2d6e2017-07-07 07:59:56 -060022525 bool operator!=( ImportMemoryWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022526 {
22527 return !operator==( rhs );
22528 }
22529
22530 private:
22531 StructureType sType;
22532
22533 public:
22534 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022535 ExternalMemoryHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022536 HANDLE handle;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022537 LPCWSTR name;
Mark Young0f183a82017-02-28 09:58:04 -070022538 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022539 static_assert( sizeof( ImportMemoryWin32HandleInfoKHR ) == sizeof( VkImportMemoryWin32HandleInfoKHR ), "struct and wrapper have different size!" );
22540#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070022541
Mark Youngabc2d6e2017-07-07 07:59:56 -060022542#ifdef VK_USE_PLATFORM_WIN32_KHR
22543 struct MemoryGetWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022544 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022545 MemoryGetWin32HandleInfoKHR( DeviceMemory memory_ = DeviceMemory(), ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd )
22546 : sType( StructureType::eMemoryGetWin32HandleInfoKHR )
22547 , pNext( nullptr )
22548 , memory( memory_ )
22549 , handleType( handleType_ )
22550 {
22551 }
22552
22553 MemoryGetWin32HandleInfoKHR( VkMemoryGetWin32HandleInfoKHR const & rhs )
22554 {
22555 memcpy( this, &rhs, sizeof( MemoryGetWin32HandleInfoKHR ) );
22556 }
22557
22558 MemoryGetWin32HandleInfoKHR& operator=( VkMemoryGetWin32HandleInfoKHR const & rhs )
22559 {
22560 memcpy( this, &rhs, sizeof( MemoryGetWin32HandleInfoKHR ) );
22561 return *this;
22562 }
22563 MemoryGetWin32HandleInfoKHR& setPNext( const void* pNext_ )
22564 {
22565 pNext = pNext_;
22566 return *this;
22567 }
22568
22569 MemoryGetWin32HandleInfoKHR& setMemory( DeviceMemory memory_ )
22570 {
22571 memory = memory_;
22572 return *this;
22573 }
22574
22575 MemoryGetWin32HandleInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
22576 {
22577 handleType = handleType_;
22578 return *this;
22579 }
22580
22581 operator const VkMemoryGetWin32HandleInfoKHR&() const
22582 {
22583 return *reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR*>(this);
22584 }
22585
22586 bool operator==( MemoryGetWin32HandleInfoKHR const& rhs ) const
22587 {
22588 return ( sType == rhs.sType )
22589 && ( pNext == rhs.pNext )
22590 && ( memory == rhs.memory )
22591 && ( handleType == rhs.handleType );
22592 }
22593
22594 bool operator!=( MemoryGetWin32HandleInfoKHR const& rhs ) const
22595 {
22596 return !operator==( rhs );
22597 }
22598
22599 private:
22600 StructureType sType;
22601
22602 public:
22603 const void* pNext;
22604 DeviceMemory memory;
22605 ExternalMemoryHandleTypeFlagBitsKHR handleType;
22606 };
22607 static_assert( sizeof( MemoryGetWin32HandleInfoKHR ) == sizeof( VkMemoryGetWin32HandleInfoKHR ), "struct and wrapper have different size!" );
22608#endif /*VK_USE_PLATFORM_WIN32_KHR*/
22609
22610 struct ImportMemoryFdInfoKHR
22611 {
22612 ImportMemoryFdInfoKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd, int fd_ = 0 )
22613 : sType( StructureType::eImportMemoryFdInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022614 , pNext( nullptr )
22615 , handleType( handleType_ )
22616 , fd( fd_ )
22617 {
22618 }
22619
Mark Youngabc2d6e2017-07-07 07:59:56 -060022620 ImportMemoryFdInfoKHR( VkImportMemoryFdInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022621 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022622 memcpy( this, &rhs, sizeof( ImportMemoryFdInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022623 }
22624
Mark Youngabc2d6e2017-07-07 07:59:56 -060022625 ImportMemoryFdInfoKHR& operator=( VkImportMemoryFdInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022626 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022627 memcpy( this, &rhs, sizeof( ImportMemoryFdInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022628 return *this;
22629 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022630 ImportMemoryFdInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022631 {
22632 pNext = pNext_;
22633 return *this;
22634 }
22635
Mark Youngabc2d6e2017-07-07 07:59:56 -060022636 ImportMemoryFdInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022637 {
22638 handleType = handleType_;
22639 return *this;
22640 }
22641
Mark Youngabc2d6e2017-07-07 07:59:56 -060022642 ImportMemoryFdInfoKHR& setFd( int fd_ )
Mark Young0f183a82017-02-28 09:58:04 -070022643 {
22644 fd = fd_;
22645 return *this;
22646 }
22647
Mark Youngabc2d6e2017-07-07 07:59:56 -060022648 operator const VkImportMemoryFdInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022649 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022650 return *reinterpret_cast<const VkImportMemoryFdInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022651 }
22652
Mark Youngabc2d6e2017-07-07 07:59:56 -060022653 bool operator==( ImportMemoryFdInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022654 {
22655 return ( sType == rhs.sType )
22656 && ( pNext == rhs.pNext )
22657 && ( handleType == rhs.handleType )
22658 && ( fd == rhs.fd );
22659 }
22660
Mark Youngabc2d6e2017-07-07 07:59:56 -060022661 bool operator!=( ImportMemoryFdInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022662 {
22663 return !operator==( rhs );
22664 }
22665
22666 private:
22667 StructureType sType;
22668
22669 public:
22670 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022671 ExternalMemoryHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022672 int fd;
22673 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022674 static_assert( sizeof( ImportMemoryFdInfoKHR ) == sizeof( VkImportMemoryFdInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022675
Mark Youngabc2d6e2017-07-07 07:59:56 -060022676 struct MemoryGetFdInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022677 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022678 MemoryGetFdInfoKHR( DeviceMemory memory_ = DeviceMemory(), ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd )
22679 : sType( StructureType::eMemoryGetFdInfoKHR )
22680 , pNext( nullptr )
22681 , memory( memory_ )
22682 , handleType( handleType_ )
22683 {
22684 }
22685
22686 MemoryGetFdInfoKHR( VkMemoryGetFdInfoKHR const & rhs )
22687 {
22688 memcpy( this, &rhs, sizeof( MemoryGetFdInfoKHR ) );
22689 }
22690
22691 MemoryGetFdInfoKHR& operator=( VkMemoryGetFdInfoKHR const & rhs )
22692 {
22693 memcpy( this, &rhs, sizeof( MemoryGetFdInfoKHR ) );
22694 return *this;
22695 }
22696 MemoryGetFdInfoKHR& setPNext( const void* pNext_ )
22697 {
22698 pNext = pNext_;
22699 return *this;
22700 }
22701
22702 MemoryGetFdInfoKHR& setMemory( DeviceMemory memory_ )
22703 {
22704 memory = memory_;
22705 return *this;
22706 }
22707
22708 MemoryGetFdInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
22709 {
22710 handleType = handleType_;
22711 return *this;
22712 }
22713
22714 operator const VkMemoryGetFdInfoKHR&() const
22715 {
22716 return *reinterpret_cast<const VkMemoryGetFdInfoKHR*>(this);
22717 }
22718
22719 bool operator==( MemoryGetFdInfoKHR const& rhs ) const
22720 {
22721 return ( sType == rhs.sType )
22722 && ( pNext == rhs.pNext )
22723 && ( memory == rhs.memory )
22724 && ( handleType == rhs.handleType );
22725 }
22726
22727 bool operator!=( MemoryGetFdInfoKHR const& rhs ) const
22728 {
22729 return !operator==( rhs );
22730 }
22731
22732 private:
22733 StructureType sType;
22734
22735 public:
22736 const void* pNext;
22737 DeviceMemory memory;
22738 ExternalMemoryHandleTypeFlagBitsKHR handleType;
22739 };
22740 static_assert( sizeof( MemoryGetFdInfoKHR ) == sizeof( VkMemoryGetFdInfoKHR ), "struct and wrapper have different size!" );
22741
Mark Lobodzinski417d5702017-11-27 12:00:45 -070022742 struct ImportMemoryHostPointerInfoEXT
22743 {
22744 ImportMemoryHostPointerInfoEXT( ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd, void* pHostPointer_ = nullptr )
22745 : sType( StructureType::eImportMemoryHostPointerInfoEXT )
22746 , pNext( nullptr )
22747 , handleType( handleType_ )
22748 , pHostPointer( pHostPointer_ )
22749 {
22750 }
22751
22752 ImportMemoryHostPointerInfoEXT( VkImportMemoryHostPointerInfoEXT const & rhs )
22753 {
22754 memcpy( this, &rhs, sizeof( ImportMemoryHostPointerInfoEXT ) );
22755 }
22756
22757 ImportMemoryHostPointerInfoEXT& operator=( VkImportMemoryHostPointerInfoEXT const & rhs )
22758 {
22759 memcpy( this, &rhs, sizeof( ImportMemoryHostPointerInfoEXT ) );
22760 return *this;
22761 }
22762 ImportMemoryHostPointerInfoEXT& setPNext( const void* pNext_ )
22763 {
22764 pNext = pNext_;
22765 return *this;
22766 }
22767
22768 ImportMemoryHostPointerInfoEXT& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
22769 {
22770 handleType = handleType_;
22771 return *this;
22772 }
22773
22774 ImportMemoryHostPointerInfoEXT& setPHostPointer( void* pHostPointer_ )
22775 {
22776 pHostPointer = pHostPointer_;
22777 return *this;
22778 }
22779
22780 operator const VkImportMemoryHostPointerInfoEXT&() const
22781 {
22782 return *reinterpret_cast<const VkImportMemoryHostPointerInfoEXT*>(this);
22783 }
22784
22785 bool operator==( ImportMemoryHostPointerInfoEXT const& rhs ) const
22786 {
22787 return ( sType == rhs.sType )
22788 && ( pNext == rhs.pNext )
22789 && ( handleType == rhs.handleType )
22790 && ( pHostPointer == rhs.pHostPointer );
22791 }
22792
22793 bool operator!=( ImportMemoryHostPointerInfoEXT const& rhs ) const
22794 {
22795 return !operator==( rhs );
22796 }
22797
22798 private:
22799 StructureType sType;
22800
22801 public:
22802 const void* pNext;
22803 ExternalMemoryHandleTypeFlagBitsKHR handleType;
22804 void* pHostPointer;
22805 };
22806 static_assert( sizeof( ImportMemoryHostPointerInfoEXT ) == sizeof( VkImportMemoryHostPointerInfoEXT ), "struct and wrapper have different size!" );
22807
Mark Youngabc2d6e2017-07-07 07:59:56 -060022808 enum class ExternalMemoryFeatureFlagBitsKHR
22809 {
22810 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR,
22811 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR,
22812 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR
Mark Young0f183a82017-02-28 09:58:04 -070022813 };
22814
Mark Youngabc2d6e2017-07-07 07:59:56 -060022815 using ExternalMemoryFeatureFlagsKHR = Flags<ExternalMemoryFeatureFlagBitsKHR, VkExternalMemoryFeatureFlagsKHR>;
Mark Young0f183a82017-02-28 09:58:04 -070022816
Mark Youngabc2d6e2017-07-07 07:59:56 -060022817 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsKHR operator|( ExternalMemoryFeatureFlagBitsKHR bit0, ExternalMemoryFeatureFlagBitsKHR bit1 )
Mark Young0f183a82017-02-28 09:58:04 -070022818 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022819 return ExternalMemoryFeatureFlagsKHR( bit0 ) | bit1;
Mark Young0f183a82017-02-28 09:58:04 -070022820 }
22821
Mark Youngabc2d6e2017-07-07 07:59:56 -060022822 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsKHR operator~( ExternalMemoryFeatureFlagBitsKHR bits )
Mark Young0f183a82017-02-28 09:58:04 -070022823 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022824 return ~( ExternalMemoryFeatureFlagsKHR( bits ) );
Mark Young0f183a82017-02-28 09:58:04 -070022825 }
22826
Mark Youngabc2d6e2017-07-07 07:59:56 -060022827 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsKHR>
Mark Young0f183a82017-02-28 09:58:04 -070022828 {
22829 enum
22830 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022831 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsKHR::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsKHR::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsKHR::eImportable)
Mark Young0f183a82017-02-28 09:58:04 -070022832 };
22833 };
22834
Mark Youngabc2d6e2017-07-07 07:59:56 -060022835 struct ExternalMemoryPropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070022836 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022837 operator const VkExternalMemoryPropertiesKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022838 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022839 return *reinterpret_cast<const VkExternalMemoryPropertiesKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022840 }
22841
Mark Youngabc2d6e2017-07-07 07:59:56 -060022842 bool operator==( ExternalMemoryPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022843 {
22844 return ( externalMemoryFeatures == rhs.externalMemoryFeatures )
22845 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
22846 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
22847 }
22848
Mark Youngabc2d6e2017-07-07 07:59:56 -060022849 bool operator!=( ExternalMemoryPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022850 {
22851 return !operator==( rhs );
22852 }
22853
Mark Youngabc2d6e2017-07-07 07:59:56 -060022854 ExternalMemoryFeatureFlagsKHR externalMemoryFeatures;
22855 ExternalMemoryHandleTypeFlagsKHR exportFromImportedHandleTypes;
22856 ExternalMemoryHandleTypeFlagsKHR compatibleHandleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070022857 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022858 static_assert( sizeof( ExternalMemoryPropertiesKHR ) == sizeof( VkExternalMemoryPropertiesKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022859
Mark Youngabc2d6e2017-07-07 07:59:56 -060022860 struct ExternalImageFormatPropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070022861 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022862 operator const VkExternalImageFormatPropertiesKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022863 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022864 return *reinterpret_cast<const VkExternalImageFormatPropertiesKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022865 }
22866
Mark Youngabc2d6e2017-07-07 07:59:56 -060022867 bool operator==( ExternalImageFormatPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022868 {
22869 return ( sType == rhs.sType )
22870 && ( pNext == rhs.pNext )
22871 && ( externalMemoryProperties == rhs.externalMemoryProperties );
22872 }
22873
Mark Youngabc2d6e2017-07-07 07:59:56 -060022874 bool operator!=( ExternalImageFormatPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022875 {
22876 return !operator==( rhs );
22877 }
22878
22879 private:
22880 StructureType sType;
22881
22882 public:
22883 void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022884 ExternalMemoryPropertiesKHR externalMemoryProperties;
Mark Young0f183a82017-02-28 09:58:04 -070022885 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022886 static_assert( sizeof( ExternalImageFormatPropertiesKHR ) == sizeof( VkExternalImageFormatPropertiesKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022887
Mark Youngabc2d6e2017-07-07 07:59:56 -060022888 struct ExternalBufferPropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070022889 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022890 operator const VkExternalBufferPropertiesKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022891 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022892 return *reinterpret_cast<const VkExternalBufferPropertiesKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022893 }
22894
Mark Youngabc2d6e2017-07-07 07:59:56 -060022895 bool operator==( ExternalBufferPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022896 {
22897 return ( sType == rhs.sType )
22898 && ( pNext == rhs.pNext )
22899 && ( externalMemoryProperties == rhs.externalMemoryProperties );
22900 }
22901
Mark Youngabc2d6e2017-07-07 07:59:56 -060022902 bool operator!=( ExternalBufferPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022903 {
22904 return !operator==( rhs );
22905 }
22906
22907 private:
22908 StructureType sType;
22909
22910 public:
22911 void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022912 ExternalMemoryPropertiesKHR externalMemoryProperties;
Mark Young0f183a82017-02-28 09:58:04 -070022913 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022914 static_assert( sizeof( ExternalBufferPropertiesKHR ) == sizeof( VkExternalBufferPropertiesKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022915
Mark Youngabc2d6e2017-07-07 07:59:56 -060022916 enum class ExternalSemaphoreHandleTypeFlagBitsKHR
Mark Young0f183a82017-02-28 09:58:04 -070022917 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022918 eOpaqueFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
22919 eOpaqueWin32 = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
22920 eOpaqueWin32Kmt = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
22921 eD3D12Fence = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR,
22922 eSyncFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR
Mark Young0f183a82017-02-28 09:58:04 -070022923 };
22924
Mark Youngabc2d6e2017-07-07 07:59:56 -060022925 using ExternalSemaphoreHandleTypeFlagsKHR = Flags<ExternalSemaphoreHandleTypeFlagBitsKHR, VkExternalSemaphoreHandleTypeFlagsKHR>;
Mark Young0f183a82017-02-28 09:58:04 -070022926
Mark Youngabc2d6e2017-07-07 07:59:56 -060022927 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlagsKHR operator|( ExternalSemaphoreHandleTypeFlagBitsKHR bit0, ExternalSemaphoreHandleTypeFlagBitsKHR bit1 )
Mark Young0f183a82017-02-28 09:58:04 -070022928 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022929 return ExternalSemaphoreHandleTypeFlagsKHR( bit0 ) | bit1;
Mark Young0f183a82017-02-28 09:58:04 -070022930 }
22931
Mark Youngabc2d6e2017-07-07 07:59:56 -060022932 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlagsKHR operator~( ExternalSemaphoreHandleTypeFlagBitsKHR bits )
Mark Young0f183a82017-02-28 09:58:04 -070022933 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022934 return ~( ExternalSemaphoreHandleTypeFlagsKHR( bits ) );
Mark Young0f183a82017-02-28 09:58:04 -070022935 }
22936
Mark Youngabc2d6e2017-07-07 07:59:56 -060022937 template <> struct FlagTraits<ExternalSemaphoreHandleTypeFlagBitsKHR>
Mark Young0f183a82017-02-28 09:58:04 -070022938 {
22939 enum
22940 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022941 allFlags = VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eD3D12Fence) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eSyncFd)
Mark Young0f183a82017-02-28 09:58:04 -070022942 };
22943 };
22944
Mark Youngabc2d6e2017-07-07 07:59:56 -060022945 struct PhysicalDeviceExternalSemaphoreInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022946 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022947 PhysicalDeviceExternalSemaphoreInfoKHR( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd )
22948 : sType( StructureType::ePhysicalDeviceExternalSemaphoreInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022949 , pNext( nullptr )
22950 , handleType( handleType_ )
22951 {
22952 }
22953
Mark Youngabc2d6e2017-07-07 07:59:56 -060022954 PhysicalDeviceExternalSemaphoreInfoKHR( VkPhysicalDeviceExternalSemaphoreInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022955 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022956 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalSemaphoreInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022957 }
22958
Mark Youngabc2d6e2017-07-07 07:59:56 -060022959 PhysicalDeviceExternalSemaphoreInfoKHR& operator=( VkPhysicalDeviceExternalSemaphoreInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022960 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022961 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalSemaphoreInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022962 return *this;
22963 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022964 PhysicalDeviceExternalSemaphoreInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022965 {
22966 pNext = pNext_;
22967 return *this;
22968 }
22969
Mark Youngabc2d6e2017-07-07 07:59:56 -060022970 PhysicalDeviceExternalSemaphoreInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022971 {
22972 handleType = handleType_;
22973 return *this;
22974 }
22975
Mark Youngabc2d6e2017-07-07 07:59:56 -060022976 operator const VkPhysicalDeviceExternalSemaphoreInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022977 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022978 return *reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022979 }
22980
Mark Youngabc2d6e2017-07-07 07:59:56 -060022981 bool operator==( PhysicalDeviceExternalSemaphoreInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022982 {
22983 return ( sType == rhs.sType )
22984 && ( pNext == rhs.pNext )
22985 && ( handleType == rhs.handleType );
22986 }
22987
Mark Youngabc2d6e2017-07-07 07:59:56 -060022988 bool operator!=( PhysicalDeviceExternalSemaphoreInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022989 {
22990 return !operator==( rhs );
22991 }
22992
22993 private:
22994 StructureType sType;
22995
22996 public:
22997 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022998 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022999 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060023000 static_assert( sizeof( PhysicalDeviceExternalSemaphoreInfoKHR ) == sizeof( VkPhysicalDeviceExternalSemaphoreInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070023001
Mark Youngabc2d6e2017-07-07 07:59:56 -060023002 struct ExportSemaphoreCreateInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070023003 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060023004 ExportSemaphoreCreateInfoKHR( ExternalSemaphoreHandleTypeFlagsKHR handleTypes_ = ExternalSemaphoreHandleTypeFlagsKHR() )
23005 : sType( StructureType::eExportSemaphoreCreateInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070023006 , pNext( nullptr )
23007 , handleTypes( handleTypes_ )
23008 {
23009 }
23010
Mark Youngabc2d6e2017-07-07 07:59:56 -060023011 ExportSemaphoreCreateInfoKHR( VkExportSemaphoreCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070023012 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060023013 memcpy( this, &rhs, sizeof( ExportSemaphoreCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070023014 }
23015
Mark Youngabc2d6e2017-07-07 07:59:56 -060023016 ExportSemaphoreCreateInfoKHR& operator=( VkExportSemaphoreCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070023017 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060023018 memcpy( this, &rhs, sizeof( ExportSemaphoreCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070023019 return *this;
23020 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060023021 ExportSemaphoreCreateInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070023022 {
23023 pNext = pNext_;
23024 return *this;
23025 }
23026
Mark Youngabc2d6e2017-07-07 07:59:56 -060023027 ExportSemaphoreCreateInfoKHR& setHandleTypes( ExternalSemaphoreHandleTypeFlagsKHR handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070023028 {
23029 handleTypes = handleTypes_;
23030 return *this;
23031 }
23032
Mark Youngabc2d6e2017-07-07 07:59:56 -060023033 operator const VkExportSemaphoreCreateInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070023034 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060023035 return *reinterpret_cast<const VkExportSemaphoreCreateInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070023036 }
23037
Mark Youngabc2d6e2017-07-07 07:59:56 -060023038 bool operator==( ExportSemaphoreCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070023039 {
23040 return ( sType == rhs.sType )
23041 && ( pNext == rhs.pNext )
23042 && ( handleTypes == rhs.handleTypes );
23043 }
23044
Mark Youngabc2d6e2017-07-07 07:59:56 -060023045 bool operator!=( ExportSemaphoreCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070023046 {
23047 return !operator==( rhs );
23048 }
23049
23050 private:
23051 StructureType sType;
23052
23053 public:
23054 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060023055 ExternalSemaphoreHandleTypeFlagsKHR handleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070023056 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060023057 static_assert( sizeof( ExportSemaphoreCreateInfoKHR ) == sizeof( VkExportSemaphoreCreateInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070023058
Mark Youngabc2d6e2017-07-07 07:59:56 -060023059#ifdef VK_USE_PLATFORM_WIN32_KHR
23060 struct SemaphoreGetWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070023061 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060023062 SemaphoreGetWin32HandleInfoKHR( Semaphore semaphore_ = Semaphore(), ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd )
23063 : sType( StructureType::eSemaphoreGetWin32HandleInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070023064 , pNext( nullptr )
23065 , semaphore( semaphore_ )
23066 , handleType( handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070023067 {
23068 }
23069
Mark Youngabc2d6e2017-07-07 07:59:56 -060023070 SemaphoreGetWin32HandleInfoKHR( VkSemaphoreGetWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070023071 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060023072 memcpy( this, &rhs, sizeof( SemaphoreGetWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070023073 }
23074
Mark Youngabc2d6e2017-07-07 07:59:56 -060023075 SemaphoreGetWin32HandleInfoKHR& operator=( VkSemaphoreGetWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070023076 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060023077 memcpy( this, &rhs, sizeof( SemaphoreGetWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070023078 return *this;
23079 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060023080 SemaphoreGetWin32HandleInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070023081 {
23082 pNext = pNext_;
23083 return *this;
23084 }
23085
Mark Youngabc2d6e2017-07-07 07:59:56 -060023086 SemaphoreGetWin32HandleInfoKHR& setSemaphore( Semaphore semaphore_ )
Mark Young0f183a82017-02-28 09:58:04 -070023087 {
23088 semaphore = semaphore_;
23089 return *this;
23090 }
23091
Mark Youngabc2d6e2017-07-07 07:59:56 -060023092 SemaphoreGetWin32HandleInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070023093 {
23094 handleType = handleType_;
23095 return *this;
23096 }
23097
Mark Youngabc2d6e2017-07-07 07:59:56 -060023098 operator const VkSemaphoreGetWin32HandleInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070023099 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060023100 return *reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070023101 }
23102
Mark Youngabc2d6e2017-07-07 07:59:56 -060023103 bool operator==( SemaphoreGetWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070023104 {
23105 return ( sType == rhs.sType )
23106 && ( pNext == rhs.pNext )
23107 && ( semaphore == rhs.semaphore )
Mark Youngabc2d6e2017-07-07 07:59:56 -060023108 && ( handleType == rhs.handleType );
Mark Young0f183a82017-02-28 09:58:04 -070023109 }
23110
Mark Youngabc2d6e2017-07-07 07:59:56 -060023111 bool operator!=( SemaphoreGetWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070023112 {
23113 return !operator==( rhs );
23114 }
23115
23116 private:
23117 StructureType sType;
23118
23119 public:
23120 const void* pNext;
23121 Semaphore semaphore;
Mark Youngabc2d6e2017-07-07 07:59:56 -060023122 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070023123 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060023124 static_assert( sizeof( SemaphoreGetWin32HandleInfoKHR ) == sizeof( VkSemaphoreGetWin32HandleInfoKHR ), "struct and wrapper have different size!" );
23125#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070023126
Mark Youngabc2d6e2017-07-07 07:59:56 -060023127 struct SemaphoreGetFdInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070023128 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060023129 SemaphoreGetFdInfoKHR( Semaphore semaphore_ = Semaphore(), ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd )
23130 : sType( StructureType::eSemaphoreGetFdInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070023131 , pNext( nullptr )
23132 , semaphore( semaphore_ )
23133 , handleType( handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070023134 {
23135 }
23136
Mark Youngabc2d6e2017-07-07 07:59:56 -060023137 SemaphoreGetFdInfoKHR( VkSemaphoreGetFdInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070023138 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060023139 memcpy( this, &rhs, sizeof( SemaphoreGetFdInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070023140 }
23141
Mark Youngabc2d6e2017-07-07 07:59:56 -060023142 SemaphoreGetFdInfoKHR& operator=( VkSemaphoreGetFdInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070023143 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060023144 memcpy( this, &rhs, sizeof( SemaphoreGetFdInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070023145 return *this;
23146 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060023147 SemaphoreGetFdInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070023148 {
23149 pNext = pNext_;
23150 return *this;
23151 }
23152
Mark Youngabc2d6e2017-07-07 07:59:56 -060023153 SemaphoreGetFdInfoKHR& setSemaphore( Semaphore semaphore_ )
Mark Young0f183a82017-02-28 09:58:04 -070023154 {
23155 semaphore = semaphore_;
23156 return *this;
23157 }
23158
Mark Youngabc2d6e2017-07-07 07:59:56 -060023159 SemaphoreGetFdInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070023160 {
23161 handleType = handleType_;
23162 return *this;
23163 }
23164
Mark Youngabc2d6e2017-07-07 07:59:56 -060023165 operator const VkSemaphoreGetFdInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070023166 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060023167 return *reinterpret_cast<const VkSemaphoreGetFdInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070023168 }
23169
Mark Youngabc2d6e2017-07-07 07:59:56 -060023170 bool operator==( SemaphoreGetFdInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070023171 {
23172 return ( sType == rhs.sType )
23173 && ( pNext == rhs.pNext )
23174 && ( semaphore == rhs.semaphore )
Mark Youngabc2d6e2017-07-07 07:59:56 -060023175 && ( handleType == rhs.handleType );
Mark Young0f183a82017-02-28 09:58:04 -070023176 }
23177
Mark Youngabc2d6e2017-07-07 07:59:56 -060023178 bool operator!=( SemaphoreGetFdInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070023179 {
23180 return !operator==( rhs );
23181 }
23182
23183 private:
23184 StructureType sType;
23185
23186 public:
23187 const void* pNext;
23188 Semaphore semaphore;
Mark Youngabc2d6e2017-07-07 07:59:56 -060023189 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070023190 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060023191 static_assert( sizeof( SemaphoreGetFdInfoKHR ) == sizeof( VkSemaphoreGetFdInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070023192
Mark Youngabc2d6e2017-07-07 07:59:56 -060023193 enum class ExternalSemaphoreFeatureFlagBitsKHR
Mark Young0f183a82017-02-28 09:58:04 -070023194 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060023195 eExportable = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR,
23196 eImportable = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR
Mark Young0f183a82017-02-28 09:58:04 -070023197 };
23198
Mark Youngabc2d6e2017-07-07 07:59:56 -060023199 using ExternalSemaphoreFeatureFlagsKHR = Flags<ExternalSemaphoreFeatureFlagBitsKHR, VkExternalSemaphoreFeatureFlagsKHR>;
Mark Young0f183a82017-02-28 09:58:04 -070023200
Mark Youngabc2d6e2017-07-07 07:59:56 -060023201 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlagsKHR operator|( ExternalSemaphoreFeatureFlagBitsKHR bit0, ExternalSemaphoreFeatureFlagBitsKHR bit1 )
Mark Young0f183a82017-02-28 09:58:04 -070023202 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060023203 return ExternalSemaphoreFeatureFlagsKHR( bit0 ) | bit1;
Mark Young0f183a82017-02-28 09:58:04 -070023204 }
23205
Mark Youngabc2d6e2017-07-07 07:59:56 -060023206 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlagsKHR operator~( ExternalSemaphoreFeatureFlagBitsKHR bits )
Mark Young0f183a82017-02-28 09:58:04 -070023207 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060023208 return ~( ExternalSemaphoreFeatureFlagsKHR( bits ) );
Mark Young0f183a82017-02-28 09:58:04 -070023209 }
23210
Mark Youngabc2d6e2017-07-07 07:59:56 -060023211 template <> struct FlagTraits<ExternalSemaphoreFeatureFlagBitsKHR>
Mark Young0f183a82017-02-28 09:58:04 -070023212 {
23213 enum
23214 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060023215 allFlags = VkFlags(ExternalSemaphoreFeatureFlagBitsKHR::eExportable) | VkFlags(ExternalSemaphoreFeatureFlagBitsKHR::eImportable)
Mark Young0f183a82017-02-28 09:58:04 -070023216 };
23217 };
23218
Mark Youngabc2d6e2017-07-07 07:59:56 -060023219 struct ExternalSemaphorePropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070023220 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060023221 operator const VkExternalSemaphorePropertiesKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070023222 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060023223 return *reinterpret_cast<const VkExternalSemaphorePropertiesKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070023224 }
23225
Mark Youngabc2d6e2017-07-07 07:59:56 -060023226 bool operator==( ExternalSemaphorePropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070023227 {
23228 return ( sType == rhs.sType )
23229 && ( pNext == rhs.pNext )
23230 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
23231 && ( compatibleHandleTypes == rhs.compatibleHandleTypes )
23232 && ( externalSemaphoreFeatures == rhs.externalSemaphoreFeatures );
23233 }
23234
Mark Youngabc2d6e2017-07-07 07:59:56 -060023235 bool operator!=( ExternalSemaphorePropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070023236 {
23237 return !operator==( rhs );
23238 }
23239
23240 private:
23241 StructureType sType;
23242
23243 public:
23244 void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060023245 ExternalSemaphoreHandleTypeFlagsKHR exportFromImportedHandleTypes;
23246 ExternalSemaphoreHandleTypeFlagsKHR compatibleHandleTypes;
23247 ExternalSemaphoreFeatureFlagsKHR externalSemaphoreFeatures;
Mark Young0f183a82017-02-28 09:58:04 -070023248 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060023249 static_assert( sizeof( ExternalSemaphorePropertiesKHR ) == sizeof( VkExternalSemaphorePropertiesKHR ), "struct and wrapper have different size!" );
23250
23251 enum class SemaphoreImportFlagBitsKHR
23252 {
23253 eTemporary = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR
23254 };
23255
23256 using SemaphoreImportFlagsKHR = Flags<SemaphoreImportFlagBitsKHR, VkSemaphoreImportFlagsKHR>;
23257
23258 VULKAN_HPP_INLINE SemaphoreImportFlagsKHR operator|( SemaphoreImportFlagBitsKHR bit0, SemaphoreImportFlagBitsKHR bit1 )
23259 {
23260 return SemaphoreImportFlagsKHR( bit0 ) | bit1;
23261 }
23262
23263 VULKAN_HPP_INLINE SemaphoreImportFlagsKHR operator~( SemaphoreImportFlagBitsKHR bits )
23264 {
23265 return ~( SemaphoreImportFlagsKHR( bits ) );
23266 }
23267
23268 template <> struct FlagTraits<SemaphoreImportFlagBitsKHR>
23269 {
23270 enum
23271 {
23272 allFlags = VkFlags(SemaphoreImportFlagBitsKHR::eTemporary)
23273 };
23274 };
23275
23276#ifdef VK_USE_PLATFORM_WIN32_KHR
23277 struct ImportSemaphoreWin32HandleInfoKHR
23278 {
23279 ImportSemaphoreWin32HandleInfoKHR( Semaphore semaphore_ = Semaphore(), SemaphoreImportFlagsKHR flags_ = SemaphoreImportFlagsKHR(), ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd, HANDLE handle_ = 0, LPCWSTR name_ = 0 )
23280 : sType( StructureType::eImportSemaphoreWin32HandleInfoKHR )
23281 , pNext( nullptr )
23282 , semaphore( semaphore_ )
23283 , flags( flags_ )
23284 , handleType( handleType_ )
23285 , handle( handle_ )
23286 , name( name_ )
23287 {
23288 }
23289
23290 ImportSemaphoreWin32HandleInfoKHR( VkImportSemaphoreWin32HandleInfoKHR const & rhs )
23291 {
23292 memcpy( this, &rhs, sizeof( ImportSemaphoreWin32HandleInfoKHR ) );
23293 }
23294
23295 ImportSemaphoreWin32HandleInfoKHR& operator=( VkImportSemaphoreWin32HandleInfoKHR const & rhs )
23296 {
23297 memcpy( this, &rhs, sizeof( ImportSemaphoreWin32HandleInfoKHR ) );
23298 return *this;
23299 }
23300 ImportSemaphoreWin32HandleInfoKHR& setPNext( const void* pNext_ )
23301 {
23302 pNext = pNext_;
23303 return *this;
23304 }
23305
23306 ImportSemaphoreWin32HandleInfoKHR& setSemaphore( Semaphore semaphore_ )
23307 {
23308 semaphore = semaphore_;
23309 return *this;
23310 }
23311
23312 ImportSemaphoreWin32HandleInfoKHR& setFlags( SemaphoreImportFlagsKHR flags_ )
23313 {
23314 flags = flags_;
23315 return *this;
23316 }
23317
23318 ImportSemaphoreWin32HandleInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
23319 {
23320 handleType = handleType_;
23321 return *this;
23322 }
23323
23324 ImportSemaphoreWin32HandleInfoKHR& setHandle( HANDLE handle_ )
23325 {
23326 handle = handle_;
23327 return *this;
23328 }
23329
23330 ImportSemaphoreWin32HandleInfoKHR& setName( LPCWSTR name_ )
23331 {
23332 name = name_;
23333 return *this;
23334 }
23335
23336 operator const VkImportSemaphoreWin32HandleInfoKHR&() const
23337 {
23338 return *reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR*>(this);
23339 }
23340
23341 bool operator==( ImportSemaphoreWin32HandleInfoKHR const& rhs ) const
23342 {
23343 return ( sType == rhs.sType )
23344 && ( pNext == rhs.pNext )
23345 && ( semaphore == rhs.semaphore )
23346 && ( flags == rhs.flags )
23347 && ( handleType == rhs.handleType )
23348 && ( handle == rhs.handle )
23349 && ( name == rhs.name );
23350 }
23351
23352 bool operator!=( ImportSemaphoreWin32HandleInfoKHR const& rhs ) const
23353 {
23354 return !operator==( rhs );
23355 }
23356
23357 private:
23358 StructureType sType;
23359
23360 public:
23361 const void* pNext;
23362 Semaphore semaphore;
23363 SemaphoreImportFlagsKHR flags;
23364 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
23365 HANDLE handle;
23366 LPCWSTR name;
23367 };
23368 static_assert( sizeof( ImportSemaphoreWin32HandleInfoKHR ) == sizeof( VkImportSemaphoreWin32HandleInfoKHR ), "struct and wrapper have different size!" );
23369#endif /*VK_USE_PLATFORM_WIN32_KHR*/
23370
23371 struct ImportSemaphoreFdInfoKHR
23372 {
23373 ImportSemaphoreFdInfoKHR( Semaphore semaphore_ = Semaphore(), SemaphoreImportFlagsKHR flags_ = SemaphoreImportFlagsKHR(), ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd, int fd_ = 0 )
23374 : sType( StructureType::eImportSemaphoreFdInfoKHR )
23375 , pNext( nullptr )
23376 , semaphore( semaphore_ )
23377 , flags( flags_ )
23378 , handleType( handleType_ )
23379 , fd( fd_ )
23380 {
23381 }
23382
23383 ImportSemaphoreFdInfoKHR( VkImportSemaphoreFdInfoKHR const & rhs )
23384 {
23385 memcpy( this, &rhs, sizeof( ImportSemaphoreFdInfoKHR ) );
23386 }
23387
23388 ImportSemaphoreFdInfoKHR& operator=( VkImportSemaphoreFdInfoKHR const & rhs )
23389 {
23390 memcpy( this, &rhs, sizeof( ImportSemaphoreFdInfoKHR ) );
23391 return *this;
23392 }
23393 ImportSemaphoreFdInfoKHR& setPNext( const void* pNext_ )
23394 {
23395 pNext = pNext_;
23396 return *this;
23397 }
23398
23399 ImportSemaphoreFdInfoKHR& setSemaphore( Semaphore semaphore_ )
23400 {
23401 semaphore = semaphore_;
23402 return *this;
23403 }
23404
23405 ImportSemaphoreFdInfoKHR& setFlags( SemaphoreImportFlagsKHR flags_ )
23406 {
23407 flags = flags_;
23408 return *this;
23409 }
23410
23411 ImportSemaphoreFdInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
23412 {
23413 handleType = handleType_;
23414 return *this;
23415 }
23416
23417 ImportSemaphoreFdInfoKHR& setFd( int fd_ )
23418 {
23419 fd = fd_;
23420 return *this;
23421 }
23422
23423 operator const VkImportSemaphoreFdInfoKHR&() const
23424 {
23425 return *reinterpret_cast<const VkImportSemaphoreFdInfoKHR*>(this);
23426 }
23427
23428 bool operator==( ImportSemaphoreFdInfoKHR const& rhs ) const
23429 {
23430 return ( sType == rhs.sType )
23431 && ( pNext == rhs.pNext )
23432 && ( semaphore == rhs.semaphore )
23433 && ( flags == rhs.flags )
23434 && ( handleType == rhs.handleType )
23435 && ( fd == rhs.fd );
23436 }
23437
23438 bool operator!=( ImportSemaphoreFdInfoKHR const& rhs ) const
23439 {
23440 return !operator==( rhs );
23441 }
23442
23443 private:
23444 StructureType sType;
23445
23446 public:
23447 const void* pNext;
23448 Semaphore semaphore;
23449 SemaphoreImportFlagsKHR flags;
23450 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
23451 int fd;
23452 };
23453 static_assert( sizeof( ImportSemaphoreFdInfoKHR ) == sizeof( VkImportSemaphoreFdInfoKHR ), "struct and wrapper have different size!" );
23454
23455 enum class ExternalFenceHandleTypeFlagBitsKHR
23456 {
23457 eOpaqueFd = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
23458 eOpaqueWin32 = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
23459 eOpaqueWin32Kmt = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
23460 eSyncFd = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR
23461 };
23462
23463 using ExternalFenceHandleTypeFlagsKHR = Flags<ExternalFenceHandleTypeFlagBitsKHR, VkExternalFenceHandleTypeFlagsKHR>;
23464
23465 VULKAN_HPP_INLINE ExternalFenceHandleTypeFlagsKHR operator|( ExternalFenceHandleTypeFlagBitsKHR bit0, ExternalFenceHandleTypeFlagBitsKHR bit1 )
23466 {
23467 return ExternalFenceHandleTypeFlagsKHR( bit0 ) | bit1;
23468 }
23469
23470 VULKAN_HPP_INLINE ExternalFenceHandleTypeFlagsKHR operator~( ExternalFenceHandleTypeFlagBitsKHR bits )
23471 {
23472 return ~( ExternalFenceHandleTypeFlagsKHR( bits ) );
23473 }
23474
23475 template <> struct FlagTraits<ExternalFenceHandleTypeFlagBitsKHR>
23476 {
23477 enum
23478 {
23479 allFlags = VkFlags(ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd) | VkFlags(ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32) | VkFlags(ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) | VkFlags(ExternalFenceHandleTypeFlagBitsKHR::eSyncFd)
23480 };
23481 };
23482
23483 struct PhysicalDeviceExternalFenceInfoKHR
23484 {
23485 PhysicalDeviceExternalFenceInfoKHR( ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd )
23486 : sType( StructureType::ePhysicalDeviceExternalFenceInfoKHR )
23487 , pNext( nullptr )
23488 , handleType( handleType_ )
23489 {
23490 }
23491
23492 PhysicalDeviceExternalFenceInfoKHR( VkPhysicalDeviceExternalFenceInfoKHR const & rhs )
23493 {
23494 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalFenceInfoKHR ) );
23495 }
23496
23497 PhysicalDeviceExternalFenceInfoKHR& operator=( VkPhysicalDeviceExternalFenceInfoKHR const & rhs )
23498 {
23499 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalFenceInfoKHR ) );
23500 return *this;
23501 }
23502 PhysicalDeviceExternalFenceInfoKHR& setPNext( const void* pNext_ )
23503 {
23504 pNext = pNext_;
23505 return *this;
23506 }
23507
23508 PhysicalDeviceExternalFenceInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
23509 {
23510 handleType = handleType_;
23511 return *this;
23512 }
23513
23514 operator const VkPhysicalDeviceExternalFenceInfoKHR&() const
23515 {
23516 return *reinterpret_cast<const VkPhysicalDeviceExternalFenceInfoKHR*>(this);
23517 }
23518
23519 bool operator==( PhysicalDeviceExternalFenceInfoKHR const& rhs ) const
23520 {
23521 return ( sType == rhs.sType )
23522 && ( pNext == rhs.pNext )
23523 && ( handleType == rhs.handleType );
23524 }
23525
23526 bool operator!=( PhysicalDeviceExternalFenceInfoKHR const& rhs ) const
23527 {
23528 return !operator==( rhs );
23529 }
23530
23531 private:
23532 StructureType sType;
23533
23534 public:
23535 const void* pNext;
23536 ExternalFenceHandleTypeFlagBitsKHR handleType;
23537 };
23538 static_assert( sizeof( PhysicalDeviceExternalFenceInfoKHR ) == sizeof( VkPhysicalDeviceExternalFenceInfoKHR ), "struct and wrapper have different size!" );
23539
23540 struct ExportFenceCreateInfoKHR
23541 {
23542 ExportFenceCreateInfoKHR( ExternalFenceHandleTypeFlagsKHR handleTypes_ = ExternalFenceHandleTypeFlagsKHR() )
23543 : sType( StructureType::eExportFenceCreateInfoKHR )
23544 , pNext( nullptr )
23545 , handleTypes( handleTypes_ )
23546 {
23547 }
23548
23549 ExportFenceCreateInfoKHR( VkExportFenceCreateInfoKHR const & rhs )
23550 {
23551 memcpy( this, &rhs, sizeof( ExportFenceCreateInfoKHR ) );
23552 }
23553
23554 ExportFenceCreateInfoKHR& operator=( VkExportFenceCreateInfoKHR const & rhs )
23555 {
23556 memcpy( this, &rhs, sizeof( ExportFenceCreateInfoKHR ) );
23557 return *this;
23558 }
23559 ExportFenceCreateInfoKHR& setPNext( const void* pNext_ )
23560 {
23561 pNext = pNext_;
23562 return *this;
23563 }
23564
23565 ExportFenceCreateInfoKHR& setHandleTypes( ExternalFenceHandleTypeFlagsKHR handleTypes_ )
23566 {
23567 handleTypes = handleTypes_;
23568 return *this;
23569 }
23570
23571 operator const VkExportFenceCreateInfoKHR&() const
23572 {
23573 return *reinterpret_cast<const VkExportFenceCreateInfoKHR*>(this);
23574 }
23575
23576 bool operator==( ExportFenceCreateInfoKHR const& rhs ) const
23577 {
23578 return ( sType == rhs.sType )
23579 && ( pNext == rhs.pNext )
23580 && ( handleTypes == rhs.handleTypes );
23581 }
23582
23583 bool operator!=( ExportFenceCreateInfoKHR const& rhs ) const
23584 {
23585 return !operator==( rhs );
23586 }
23587
23588 private:
23589 StructureType sType;
23590
23591 public:
23592 const void* pNext;
23593 ExternalFenceHandleTypeFlagsKHR handleTypes;
23594 };
23595 static_assert( sizeof( ExportFenceCreateInfoKHR ) == sizeof( VkExportFenceCreateInfoKHR ), "struct and wrapper have different size!" );
23596
23597#ifdef VK_USE_PLATFORM_WIN32_KHR
23598 struct FenceGetWin32HandleInfoKHR
23599 {
23600 FenceGetWin32HandleInfoKHR( Fence fence_ = Fence(), ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd )
23601 : sType( StructureType::eFenceGetWin32HandleInfoKHR )
23602 , pNext( nullptr )
23603 , fence( fence_ )
23604 , handleType( handleType_ )
23605 {
23606 }
23607
23608 FenceGetWin32HandleInfoKHR( VkFenceGetWin32HandleInfoKHR const & rhs )
23609 {
23610 memcpy( this, &rhs, sizeof( FenceGetWin32HandleInfoKHR ) );
23611 }
23612
23613 FenceGetWin32HandleInfoKHR& operator=( VkFenceGetWin32HandleInfoKHR const & rhs )
23614 {
23615 memcpy( this, &rhs, sizeof( FenceGetWin32HandleInfoKHR ) );
23616 return *this;
23617 }
23618 FenceGetWin32HandleInfoKHR& setPNext( const void* pNext_ )
23619 {
23620 pNext = pNext_;
23621 return *this;
23622 }
23623
23624 FenceGetWin32HandleInfoKHR& setFence( Fence fence_ )
23625 {
23626 fence = fence_;
23627 return *this;
23628 }
23629
23630 FenceGetWin32HandleInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
23631 {
23632 handleType = handleType_;
23633 return *this;
23634 }
23635
23636 operator const VkFenceGetWin32HandleInfoKHR&() const
23637 {
23638 return *reinterpret_cast<const VkFenceGetWin32HandleInfoKHR*>(this);
23639 }
23640
23641 bool operator==( FenceGetWin32HandleInfoKHR const& rhs ) const
23642 {
23643 return ( sType == rhs.sType )
23644 && ( pNext == rhs.pNext )
23645 && ( fence == rhs.fence )
23646 && ( handleType == rhs.handleType );
23647 }
23648
23649 bool operator!=( FenceGetWin32HandleInfoKHR const& rhs ) const
23650 {
23651 return !operator==( rhs );
23652 }
23653
23654 private:
23655 StructureType sType;
23656
23657 public:
23658 const void* pNext;
23659 Fence fence;
23660 ExternalFenceHandleTypeFlagBitsKHR handleType;
23661 };
23662 static_assert( sizeof( FenceGetWin32HandleInfoKHR ) == sizeof( VkFenceGetWin32HandleInfoKHR ), "struct and wrapper have different size!" );
23663#endif /*VK_USE_PLATFORM_WIN32_KHR*/
23664
23665 struct FenceGetFdInfoKHR
23666 {
23667 FenceGetFdInfoKHR( Fence fence_ = Fence(), ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd )
23668 : sType( StructureType::eFenceGetFdInfoKHR )
23669 , pNext( nullptr )
23670 , fence( fence_ )
23671 , handleType( handleType_ )
23672 {
23673 }
23674
23675 FenceGetFdInfoKHR( VkFenceGetFdInfoKHR const & rhs )
23676 {
23677 memcpy( this, &rhs, sizeof( FenceGetFdInfoKHR ) );
23678 }
23679
23680 FenceGetFdInfoKHR& operator=( VkFenceGetFdInfoKHR const & rhs )
23681 {
23682 memcpy( this, &rhs, sizeof( FenceGetFdInfoKHR ) );
23683 return *this;
23684 }
23685 FenceGetFdInfoKHR& setPNext( const void* pNext_ )
23686 {
23687 pNext = pNext_;
23688 return *this;
23689 }
23690
23691 FenceGetFdInfoKHR& setFence( Fence fence_ )
23692 {
23693 fence = fence_;
23694 return *this;
23695 }
23696
23697 FenceGetFdInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
23698 {
23699 handleType = handleType_;
23700 return *this;
23701 }
23702
23703 operator const VkFenceGetFdInfoKHR&() const
23704 {
23705 return *reinterpret_cast<const VkFenceGetFdInfoKHR*>(this);
23706 }
23707
23708 bool operator==( FenceGetFdInfoKHR const& rhs ) const
23709 {
23710 return ( sType == rhs.sType )
23711 && ( pNext == rhs.pNext )
23712 && ( fence == rhs.fence )
23713 && ( handleType == rhs.handleType );
23714 }
23715
23716 bool operator!=( FenceGetFdInfoKHR const& rhs ) const
23717 {
23718 return !operator==( rhs );
23719 }
23720
23721 private:
23722 StructureType sType;
23723
23724 public:
23725 const void* pNext;
23726 Fence fence;
23727 ExternalFenceHandleTypeFlagBitsKHR handleType;
23728 };
23729 static_assert( sizeof( FenceGetFdInfoKHR ) == sizeof( VkFenceGetFdInfoKHR ), "struct and wrapper have different size!" );
23730
23731 enum class ExternalFenceFeatureFlagBitsKHR
23732 {
23733 eExportable = VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR,
23734 eImportable = VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR
23735 };
23736
23737 using ExternalFenceFeatureFlagsKHR = Flags<ExternalFenceFeatureFlagBitsKHR, VkExternalFenceFeatureFlagsKHR>;
23738
23739 VULKAN_HPP_INLINE ExternalFenceFeatureFlagsKHR operator|( ExternalFenceFeatureFlagBitsKHR bit0, ExternalFenceFeatureFlagBitsKHR bit1 )
23740 {
23741 return ExternalFenceFeatureFlagsKHR( bit0 ) | bit1;
23742 }
23743
23744 VULKAN_HPP_INLINE ExternalFenceFeatureFlagsKHR operator~( ExternalFenceFeatureFlagBitsKHR bits )
23745 {
23746 return ~( ExternalFenceFeatureFlagsKHR( bits ) );
23747 }
23748
23749 template <> struct FlagTraits<ExternalFenceFeatureFlagBitsKHR>
23750 {
23751 enum
23752 {
23753 allFlags = VkFlags(ExternalFenceFeatureFlagBitsKHR::eExportable) | VkFlags(ExternalFenceFeatureFlagBitsKHR::eImportable)
23754 };
23755 };
23756
23757 struct ExternalFencePropertiesKHR
23758 {
23759 operator const VkExternalFencePropertiesKHR&() const
23760 {
23761 return *reinterpret_cast<const VkExternalFencePropertiesKHR*>(this);
23762 }
23763
23764 bool operator==( ExternalFencePropertiesKHR const& rhs ) const
23765 {
23766 return ( sType == rhs.sType )
23767 && ( pNext == rhs.pNext )
23768 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
23769 && ( compatibleHandleTypes == rhs.compatibleHandleTypes )
23770 && ( externalFenceFeatures == rhs.externalFenceFeatures );
23771 }
23772
23773 bool operator!=( ExternalFencePropertiesKHR const& rhs ) const
23774 {
23775 return !operator==( rhs );
23776 }
23777
23778 private:
23779 StructureType sType;
23780
23781 public:
23782 void* pNext;
23783 ExternalFenceHandleTypeFlagsKHR exportFromImportedHandleTypes;
23784 ExternalFenceHandleTypeFlagsKHR compatibleHandleTypes;
23785 ExternalFenceFeatureFlagsKHR externalFenceFeatures;
23786 };
23787 static_assert( sizeof( ExternalFencePropertiesKHR ) == sizeof( VkExternalFencePropertiesKHR ), "struct and wrapper have different size!" );
23788
23789 enum class FenceImportFlagBitsKHR
23790 {
23791 eTemporary = VK_FENCE_IMPORT_TEMPORARY_BIT_KHR
23792 };
23793
23794 using FenceImportFlagsKHR = Flags<FenceImportFlagBitsKHR, VkFenceImportFlagsKHR>;
23795
23796 VULKAN_HPP_INLINE FenceImportFlagsKHR operator|( FenceImportFlagBitsKHR bit0, FenceImportFlagBitsKHR bit1 )
23797 {
23798 return FenceImportFlagsKHR( bit0 ) | bit1;
23799 }
23800
23801 VULKAN_HPP_INLINE FenceImportFlagsKHR operator~( FenceImportFlagBitsKHR bits )
23802 {
23803 return ~( FenceImportFlagsKHR( bits ) );
23804 }
23805
23806 template <> struct FlagTraits<FenceImportFlagBitsKHR>
23807 {
23808 enum
23809 {
23810 allFlags = VkFlags(FenceImportFlagBitsKHR::eTemporary)
23811 };
23812 };
23813
23814#ifdef VK_USE_PLATFORM_WIN32_KHR
23815 struct ImportFenceWin32HandleInfoKHR
23816 {
23817 ImportFenceWin32HandleInfoKHR( Fence fence_ = Fence(), FenceImportFlagsKHR flags_ = FenceImportFlagsKHR(), ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd, HANDLE handle_ = 0, LPCWSTR name_ = 0 )
23818 : sType( StructureType::eImportFenceWin32HandleInfoKHR )
23819 , pNext( nullptr )
23820 , fence( fence_ )
23821 , flags( flags_ )
23822 , handleType( handleType_ )
23823 , handle( handle_ )
23824 , name( name_ )
23825 {
23826 }
23827
23828 ImportFenceWin32HandleInfoKHR( VkImportFenceWin32HandleInfoKHR const & rhs )
23829 {
23830 memcpy( this, &rhs, sizeof( ImportFenceWin32HandleInfoKHR ) );
23831 }
23832
23833 ImportFenceWin32HandleInfoKHR& operator=( VkImportFenceWin32HandleInfoKHR const & rhs )
23834 {
23835 memcpy( this, &rhs, sizeof( ImportFenceWin32HandleInfoKHR ) );
23836 return *this;
23837 }
23838 ImportFenceWin32HandleInfoKHR& setPNext( const void* pNext_ )
23839 {
23840 pNext = pNext_;
23841 return *this;
23842 }
23843
23844 ImportFenceWin32HandleInfoKHR& setFence( Fence fence_ )
23845 {
23846 fence = fence_;
23847 return *this;
23848 }
23849
23850 ImportFenceWin32HandleInfoKHR& setFlags( FenceImportFlagsKHR flags_ )
23851 {
23852 flags = flags_;
23853 return *this;
23854 }
23855
23856 ImportFenceWin32HandleInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
23857 {
23858 handleType = handleType_;
23859 return *this;
23860 }
23861
23862 ImportFenceWin32HandleInfoKHR& setHandle( HANDLE handle_ )
23863 {
23864 handle = handle_;
23865 return *this;
23866 }
23867
23868 ImportFenceWin32HandleInfoKHR& setName( LPCWSTR name_ )
23869 {
23870 name = name_;
23871 return *this;
23872 }
23873
23874 operator const VkImportFenceWin32HandleInfoKHR&() const
23875 {
23876 return *reinterpret_cast<const VkImportFenceWin32HandleInfoKHR*>(this);
23877 }
23878
23879 bool operator==( ImportFenceWin32HandleInfoKHR const& rhs ) const
23880 {
23881 return ( sType == rhs.sType )
23882 && ( pNext == rhs.pNext )
23883 && ( fence == rhs.fence )
23884 && ( flags == rhs.flags )
23885 && ( handleType == rhs.handleType )
23886 && ( handle == rhs.handle )
23887 && ( name == rhs.name );
23888 }
23889
23890 bool operator!=( ImportFenceWin32HandleInfoKHR const& rhs ) const
23891 {
23892 return !operator==( rhs );
23893 }
23894
23895 private:
23896 StructureType sType;
23897
23898 public:
23899 const void* pNext;
23900 Fence fence;
23901 FenceImportFlagsKHR flags;
23902 ExternalFenceHandleTypeFlagBitsKHR handleType;
23903 HANDLE handle;
23904 LPCWSTR name;
23905 };
23906 static_assert( sizeof( ImportFenceWin32HandleInfoKHR ) == sizeof( VkImportFenceWin32HandleInfoKHR ), "struct and wrapper have different size!" );
23907#endif /*VK_USE_PLATFORM_WIN32_KHR*/
23908
23909 struct ImportFenceFdInfoKHR
23910 {
23911 ImportFenceFdInfoKHR( Fence fence_ = Fence(), FenceImportFlagsKHR flags_ = FenceImportFlagsKHR(), ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd, int fd_ = 0 )
23912 : sType( StructureType::eImportFenceFdInfoKHR )
23913 , pNext( nullptr )
23914 , fence( fence_ )
23915 , flags( flags_ )
23916 , handleType( handleType_ )
23917 , fd( fd_ )
23918 {
23919 }
23920
23921 ImportFenceFdInfoKHR( VkImportFenceFdInfoKHR const & rhs )
23922 {
23923 memcpy( this, &rhs, sizeof( ImportFenceFdInfoKHR ) );
23924 }
23925
23926 ImportFenceFdInfoKHR& operator=( VkImportFenceFdInfoKHR const & rhs )
23927 {
23928 memcpy( this, &rhs, sizeof( ImportFenceFdInfoKHR ) );
23929 return *this;
23930 }
23931 ImportFenceFdInfoKHR& setPNext( const void* pNext_ )
23932 {
23933 pNext = pNext_;
23934 return *this;
23935 }
23936
23937 ImportFenceFdInfoKHR& setFence( Fence fence_ )
23938 {
23939 fence = fence_;
23940 return *this;
23941 }
23942
23943 ImportFenceFdInfoKHR& setFlags( FenceImportFlagsKHR flags_ )
23944 {
23945 flags = flags_;
23946 return *this;
23947 }
23948
23949 ImportFenceFdInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
23950 {
23951 handleType = handleType_;
23952 return *this;
23953 }
23954
23955 ImportFenceFdInfoKHR& setFd( int fd_ )
23956 {
23957 fd = fd_;
23958 return *this;
23959 }
23960
23961 operator const VkImportFenceFdInfoKHR&() const
23962 {
23963 return *reinterpret_cast<const VkImportFenceFdInfoKHR*>(this);
23964 }
23965
23966 bool operator==( ImportFenceFdInfoKHR const& rhs ) const
23967 {
23968 return ( sType == rhs.sType )
23969 && ( pNext == rhs.pNext )
23970 && ( fence == rhs.fence )
23971 && ( flags == rhs.flags )
23972 && ( handleType == rhs.handleType )
23973 && ( fd == rhs.fd );
23974 }
23975
23976 bool operator!=( ImportFenceFdInfoKHR const& rhs ) const
23977 {
23978 return !operator==( rhs );
23979 }
23980
23981 private:
23982 StructureType sType;
23983
23984 public:
23985 const void* pNext;
23986 Fence fence;
23987 FenceImportFlagsKHR flags;
23988 ExternalFenceHandleTypeFlagBitsKHR handleType;
23989 int fd;
23990 };
23991 static_assert( sizeof( ImportFenceFdInfoKHR ) == sizeof( VkImportFenceFdInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070023992
Mark Young39389872017-01-19 21:10:49 -070023993 enum class SurfaceCounterFlagBitsEXT
23994 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060023995 eVblank = VK_SURFACE_COUNTER_VBLANK_EXT
Mark Young39389872017-01-19 21:10:49 -070023996 };
23997
23998 using SurfaceCounterFlagsEXT = Flags<SurfaceCounterFlagBitsEXT, VkSurfaceCounterFlagsEXT>;
23999
24000 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator|( SurfaceCounterFlagBitsEXT bit0, SurfaceCounterFlagBitsEXT bit1 )
24001 {
24002 return SurfaceCounterFlagsEXT( bit0 ) | bit1;
24003 }
24004
24005 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator~( SurfaceCounterFlagBitsEXT bits )
24006 {
24007 return ~( SurfaceCounterFlagsEXT( bits ) );
24008 }
24009
24010 template <> struct FlagTraits<SurfaceCounterFlagBitsEXT>
24011 {
24012 enum
24013 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060024014 allFlags = VkFlags(SurfaceCounterFlagBitsEXT::eVblank)
Mark Young39389872017-01-19 21:10:49 -070024015 };
24016 };
24017
24018 struct SurfaceCapabilities2EXT
24019 {
24020 operator const VkSurfaceCapabilities2EXT&() const
24021 {
24022 return *reinterpret_cast<const VkSurfaceCapabilities2EXT*>(this);
24023 }
24024
24025 bool operator==( SurfaceCapabilities2EXT const& rhs ) const
24026 {
24027 return ( sType == rhs.sType )
24028 && ( pNext == rhs.pNext )
24029 && ( minImageCount == rhs.minImageCount )
24030 && ( maxImageCount == rhs.maxImageCount )
24031 && ( currentExtent == rhs.currentExtent )
24032 && ( minImageExtent == rhs.minImageExtent )
24033 && ( maxImageExtent == rhs.maxImageExtent )
24034 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
24035 && ( supportedTransforms == rhs.supportedTransforms )
24036 && ( currentTransform == rhs.currentTransform )
24037 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
24038 && ( supportedUsageFlags == rhs.supportedUsageFlags )
24039 && ( supportedSurfaceCounters == rhs.supportedSurfaceCounters );
24040 }
24041
24042 bool operator!=( SurfaceCapabilities2EXT const& rhs ) const
24043 {
24044 return !operator==( rhs );
24045 }
24046
24047 private:
24048 StructureType sType;
24049
24050 public:
24051 void* pNext;
24052 uint32_t minImageCount;
24053 uint32_t maxImageCount;
24054 Extent2D currentExtent;
24055 Extent2D minImageExtent;
24056 Extent2D maxImageExtent;
24057 uint32_t maxImageArrayLayers;
24058 SurfaceTransformFlagsKHR supportedTransforms;
24059 SurfaceTransformFlagBitsKHR currentTransform;
24060 CompositeAlphaFlagsKHR supportedCompositeAlpha;
24061 ImageUsageFlags supportedUsageFlags;
24062 SurfaceCounterFlagsEXT supportedSurfaceCounters;
24063 };
24064 static_assert( sizeof( SurfaceCapabilities2EXT ) == sizeof( VkSurfaceCapabilities2EXT ), "struct and wrapper have different size!" );
24065
24066 struct SwapchainCounterCreateInfoEXT
24067 {
24068 SwapchainCounterCreateInfoEXT( SurfaceCounterFlagsEXT surfaceCounters_ = SurfaceCounterFlagsEXT() )
24069 : sType( StructureType::eSwapchainCounterCreateInfoEXT )
24070 , pNext( nullptr )
24071 , surfaceCounters( surfaceCounters_ )
24072 {
24073 }
24074
24075 SwapchainCounterCreateInfoEXT( VkSwapchainCounterCreateInfoEXT const & rhs )
24076 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024077 memcpy( this, &rhs, sizeof( SwapchainCounterCreateInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070024078 }
24079
24080 SwapchainCounterCreateInfoEXT& operator=( VkSwapchainCounterCreateInfoEXT const & rhs )
24081 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024082 memcpy( this, &rhs, sizeof( SwapchainCounterCreateInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070024083 return *this;
24084 }
Mark Young39389872017-01-19 21:10:49 -070024085 SwapchainCounterCreateInfoEXT& setPNext( const void* pNext_ )
24086 {
24087 pNext = pNext_;
24088 return *this;
24089 }
24090
24091 SwapchainCounterCreateInfoEXT& setSurfaceCounters( SurfaceCounterFlagsEXT surfaceCounters_ )
24092 {
24093 surfaceCounters = surfaceCounters_;
24094 return *this;
24095 }
24096
24097 operator const VkSwapchainCounterCreateInfoEXT&() const
24098 {
24099 return *reinterpret_cast<const VkSwapchainCounterCreateInfoEXT*>(this);
24100 }
24101
24102 bool operator==( SwapchainCounterCreateInfoEXT const& rhs ) const
24103 {
24104 return ( sType == rhs.sType )
24105 && ( pNext == rhs.pNext )
24106 && ( surfaceCounters == rhs.surfaceCounters );
24107 }
24108
24109 bool operator!=( SwapchainCounterCreateInfoEXT const& rhs ) const
24110 {
24111 return !operator==( rhs );
24112 }
24113
24114 private:
24115 StructureType sType;
24116
24117 public:
24118 const void* pNext;
24119 SurfaceCounterFlagsEXT surfaceCounters;
24120 };
24121 static_assert( sizeof( SwapchainCounterCreateInfoEXT ) == sizeof( VkSwapchainCounterCreateInfoEXT ), "struct and wrapper have different size!" );
24122
24123 enum class DisplayPowerStateEXT
24124 {
24125 eOff = VK_DISPLAY_POWER_STATE_OFF_EXT,
24126 eSuspend = VK_DISPLAY_POWER_STATE_SUSPEND_EXT,
24127 eOn = VK_DISPLAY_POWER_STATE_ON_EXT
24128 };
24129
24130 struct DisplayPowerInfoEXT
24131 {
24132 DisplayPowerInfoEXT( DisplayPowerStateEXT powerState_ = DisplayPowerStateEXT::eOff )
24133 : sType( StructureType::eDisplayPowerInfoEXT )
24134 , pNext( nullptr )
24135 , powerState( powerState_ )
24136 {
24137 }
24138
24139 DisplayPowerInfoEXT( VkDisplayPowerInfoEXT const & rhs )
24140 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024141 memcpy( this, &rhs, sizeof( DisplayPowerInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070024142 }
24143
24144 DisplayPowerInfoEXT& operator=( VkDisplayPowerInfoEXT const & rhs )
24145 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024146 memcpy( this, &rhs, sizeof( DisplayPowerInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070024147 return *this;
24148 }
Mark Young39389872017-01-19 21:10:49 -070024149 DisplayPowerInfoEXT& setPNext( const void* pNext_ )
24150 {
24151 pNext = pNext_;
24152 return *this;
24153 }
24154
24155 DisplayPowerInfoEXT& setPowerState( DisplayPowerStateEXT powerState_ )
24156 {
24157 powerState = powerState_;
24158 return *this;
24159 }
24160
24161 operator const VkDisplayPowerInfoEXT&() const
24162 {
24163 return *reinterpret_cast<const VkDisplayPowerInfoEXT*>(this);
24164 }
24165
24166 bool operator==( DisplayPowerInfoEXT const& rhs ) const
24167 {
24168 return ( sType == rhs.sType )
24169 && ( pNext == rhs.pNext )
24170 && ( powerState == rhs.powerState );
24171 }
24172
24173 bool operator!=( DisplayPowerInfoEXT const& rhs ) const
24174 {
24175 return !operator==( rhs );
24176 }
24177
24178 private:
24179 StructureType sType;
24180
24181 public:
24182 const void* pNext;
24183 DisplayPowerStateEXT powerState;
24184 };
24185 static_assert( sizeof( DisplayPowerInfoEXT ) == sizeof( VkDisplayPowerInfoEXT ), "struct and wrapper have different size!" );
24186
24187 enum class DeviceEventTypeEXT
24188 {
24189 eDisplayHotplug = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT
24190 };
24191
24192 struct DeviceEventInfoEXT
24193 {
24194 DeviceEventInfoEXT( DeviceEventTypeEXT deviceEvent_ = DeviceEventTypeEXT::eDisplayHotplug )
24195 : sType( StructureType::eDeviceEventInfoEXT )
24196 , pNext( nullptr )
24197 , deviceEvent( deviceEvent_ )
24198 {
24199 }
24200
24201 DeviceEventInfoEXT( VkDeviceEventInfoEXT const & rhs )
24202 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024203 memcpy( this, &rhs, sizeof( DeviceEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070024204 }
24205
24206 DeviceEventInfoEXT& operator=( VkDeviceEventInfoEXT const & rhs )
24207 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024208 memcpy( this, &rhs, sizeof( DeviceEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070024209 return *this;
24210 }
Mark Young39389872017-01-19 21:10:49 -070024211 DeviceEventInfoEXT& setPNext( const void* pNext_ )
24212 {
24213 pNext = pNext_;
24214 return *this;
24215 }
24216
24217 DeviceEventInfoEXT& setDeviceEvent( DeviceEventTypeEXT deviceEvent_ )
24218 {
24219 deviceEvent = deviceEvent_;
24220 return *this;
24221 }
24222
24223 operator const VkDeviceEventInfoEXT&() const
24224 {
24225 return *reinterpret_cast<const VkDeviceEventInfoEXT*>(this);
24226 }
24227
24228 bool operator==( DeviceEventInfoEXT const& rhs ) const
24229 {
24230 return ( sType == rhs.sType )
24231 && ( pNext == rhs.pNext )
24232 && ( deviceEvent == rhs.deviceEvent );
24233 }
24234
24235 bool operator!=( DeviceEventInfoEXT const& rhs ) const
24236 {
24237 return !operator==( rhs );
24238 }
24239
24240 private:
24241 StructureType sType;
24242
24243 public:
24244 const void* pNext;
24245 DeviceEventTypeEXT deviceEvent;
24246 };
24247 static_assert( sizeof( DeviceEventInfoEXT ) == sizeof( VkDeviceEventInfoEXT ), "struct and wrapper have different size!" );
24248
24249 enum class DisplayEventTypeEXT
24250 {
24251 eFirstPixelOut = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT
24252 };
24253
24254 struct DisplayEventInfoEXT
24255 {
24256 DisplayEventInfoEXT( DisplayEventTypeEXT displayEvent_ = DisplayEventTypeEXT::eFirstPixelOut )
24257 : sType( StructureType::eDisplayEventInfoEXT )
24258 , pNext( nullptr )
24259 , displayEvent( displayEvent_ )
24260 {
24261 }
24262
24263 DisplayEventInfoEXT( VkDisplayEventInfoEXT const & rhs )
24264 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024265 memcpy( this, &rhs, sizeof( DisplayEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070024266 }
24267
24268 DisplayEventInfoEXT& operator=( VkDisplayEventInfoEXT const & rhs )
24269 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024270 memcpy( this, &rhs, sizeof( DisplayEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070024271 return *this;
24272 }
Mark Young39389872017-01-19 21:10:49 -070024273 DisplayEventInfoEXT& setPNext( const void* pNext_ )
24274 {
24275 pNext = pNext_;
24276 return *this;
24277 }
24278
24279 DisplayEventInfoEXT& setDisplayEvent( DisplayEventTypeEXT displayEvent_ )
24280 {
24281 displayEvent = displayEvent_;
24282 return *this;
24283 }
24284
24285 operator const VkDisplayEventInfoEXT&() const
24286 {
24287 return *reinterpret_cast<const VkDisplayEventInfoEXT*>(this);
24288 }
24289
24290 bool operator==( DisplayEventInfoEXT const& rhs ) const
24291 {
24292 return ( sType == rhs.sType )
24293 && ( pNext == rhs.pNext )
24294 && ( displayEvent == rhs.displayEvent );
24295 }
24296
24297 bool operator!=( DisplayEventInfoEXT const& rhs ) const
24298 {
24299 return !operator==( rhs );
24300 }
24301
24302 private:
24303 StructureType sType;
24304
24305 public:
24306 const void* pNext;
24307 DisplayEventTypeEXT displayEvent;
24308 };
24309 static_assert( sizeof( DisplayEventInfoEXT ) == sizeof( VkDisplayEventInfoEXT ), "struct and wrapper have different size!" );
24310
Mark Young0f183a82017-02-28 09:58:04 -070024311 enum class PeerMemoryFeatureFlagBitsKHX
24312 {
24313 eCopySrc = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX,
24314 eCopyDst = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX,
24315 eGenericSrc = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX,
24316 eGenericDst = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX
24317 };
24318
24319 using PeerMemoryFeatureFlagsKHX = Flags<PeerMemoryFeatureFlagBitsKHX, VkPeerMemoryFeatureFlagsKHX>;
24320
24321 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX operator|( PeerMemoryFeatureFlagBitsKHX bit0, PeerMemoryFeatureFlagBitsKHX bit1 )
24322 {
24323 return PeerMemoryFeatureFlagsKHX( bit0 ) | bit1;
24324 }
24325
24326 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX operator~( PeerMemoryFeatureFlagBitsKHX bits )
24327 {
24328 return ~( PeerMemoryFeatureFlagsKHX( bits ) );
24329 }
24330
24331 template <> struct FlagTraits<PeerMemoryFeatureFlagBitsKHX>
24332 {
24333 enum
24334 {
24335 allFlags = VkFlags(PeerMemoryFeatureFlagBitsKHX::eCopySrc) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eCopyDst) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eGenericSrc) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eGenericDst)
24336 };
24337 };
24338
24339 enum class MemoryAllocateFlagBitsKHX
24340 {
24341 eDeviceMask = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX
24342 };
24343
24344 using MemoryAllocateFlagsKHX = Flags<MemoryAllocateFlagBitsKHX, VkMemoryAllocateFlagsKHX>;
24345
24346 VULKAN_HPP_INLINE MemoryAllocateFlagsKHX operator|( MemoryAllocateFlagBitsKHX bit0, MemoryAllocateFlagBitsKHX bit1 )
24347 {
24348 return MemoryAllocateFlagsKHX( bit0 ) | bit1;
24349 }
24350
24351 VULKAN_HPP_INLINE MemoryAllocateFlagsKHX operator~( MemoryAllocateFlagBitsKHX bits )
24352 {
24353 return ~( MemoryAllocateFlagsKHX( bits ) );
24354 }
24355
24356 template <> struct FlagTraits<MemoryAllocateFlagBitsKHX>
24357 {
24358 enum
24359 {
24360 allFlags = VkFlags(MemoryAllocateFlagBitsKHX::eDeviceMask)
24361 };
24362 };
24363
24364 struct MemoryAllocateFlagsInfoKHX
24365 {
24366 MemoryAllocateFlagsInfoKHX( MemoryAllocateFlagsKHX flags_ = MemoryAllocateFlagsKHX(), uint32_t deviceMask_ = 0 )
24367 : sType( StructureType::eMemoryAllocateFlagsInfoKHX )
24368 , pNext( nullptr )
24369 , flags( flags_ )
24370 , deviceMask( deviceMask_ )
24371 {
24372 }
24373
24374 MemoryAllocateFlagsInfoKHX( VkMemoryAllocateFlagsInfoKHX const & rhs )
24375 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024376 memcpy( this, &rhs, sizeof( MemoryAllocateFlagsInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070024377 }
24378
24379 MemoryAllocateFlagsInfoKHX& operator=( VkMemoryAllocateFlagsInfoKHX const & rhs )
24380 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024381 memcpy( this, &rhs, sizeof( MemoryAllocateFlagsInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070024382 return *this;
24383 }
Mark Young0f183a82017-02-28 09:58:04 -070024384 MemoryAllocateFlagsInfoKHX& setPNext( const void* pNext_ )
24385 {
24386 pNext = pNext_;
24387 return *this;
24388 }
24389
24390 MemoryAllocateFlagsInfoKHX& setFlags( MemoryAllocateFlagsKHX flags_ )
24391 {
24392 flags = flags_;
24393 return *this;
24394 }
24395
24396 MemoryAllocateFlagsInfoKHX& setDeviceMask( uint32_t deviceMask_ )
24397 {
24398 deviceMask = deviceMask_;
24399 return *this;
24400 }
24401
24402 operator const VkMemoryAllocateFlagsInfoKHX&() const
24403 {
24404 return *reinterpret_cast<const VkMemoryAllocateFlagsInfoKHX*>(this);
24405 }
24406
24407 bool operator==( MemoryAllocateFlagsInfoKHX const& rhs ) const
24408 {
24409 return ( sType == rhs.sType )
24410 && ( pNext == rhs.pNext )
24411 && ( flags == rhs.flags )
24412 && ( deviceMask == rhs.deviceMask );
24413 }
24414
24415 bool operator!=( MemoryAllocateFlagsInfoKHX const& rhs ) const
24416 {
24417 return !operator==( rhs );
24418 }
24419
24420 private:
24421 StructureType sType;
24422
24423 public:
24424 const void* pNext;
24425 MemoryAllocateFlagsKHX flags;
24426 uint32_t deviceMask;
24427 };
24428 static_assert( sizeof( MemoryAllocateFlagsInfoKHX ) == sizeof( VkMemoryAllocateFlagsInfoKHX ), "struct and wrapper have different size!" );
24429
24430 enum class DeviceGroupPresentModeFlagBitsKHX
24431 {
24432 eLocal = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX,
24433 eRemote = VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX,
24434 eSum = VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX,
24435 eLocalMultiDevice = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX
24436 };
24437
24438 using DeviceGroupPresentModeFlagsKHX = Flags<DeviceGroupPresentModeFlagBitsKHX, VkDeviceGroupPresentModeFlagsKHX>;
24439
24440 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHX operator|( DeviceGroupPresentModeFlagBitsKHX bit0, DeviceGroupPresentModeFlagBitsKHX bit1 )
24441 {
24442 return DeviceGroupPresentModeFlagsKHX( bit0 ) | bit1;
24443 }
24444
24445 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHX operator~( DeviceGroupPresentModeFlagBitsKHX bits )
24446 {
24447 return ~( DeviceGroupPresentModeFlagsKHX( bits ) );
24448 }
24449
24450 template <> struct FlagTraits<DeviceGroupPresentModeFlagBitsKHX>
24451 {
24452 enum
24453 {
24454 allFlags = VkFlags(DeviceGroupPresentModeFlagBitsKHX::eLocal) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eRemote) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eSum) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice)
24455 };
24456 };
24457
24458 struct DeviceGroupPresentCapabilitiesKHX
24459 {
24460 operator const VkDeviceGroupPresentCapabilitiesKHX&() const
24461 {
24462 return *reinterpret_cast<const VkDeviceGroupPresentCapabilitiesKHX*>(this);
24463 }
24464
24465 bool operator==( DeviceGroupPresentCapabilitiesKHX const& rhs ) const
24466 {
24467 return ( sType == rhs.sType )
24468 && ( pNext == rhs.pNext )
24469 && ( memcmp( presentMask, rhs.presentMask, VK_MAX_DEVICE_GROUP_SIZE_KHX * sizeof( uint32_t ) ) == 0 )
24470 && ( modes == rhs.modes );
24471 }
24472
24473 bool operator!=( DeviceGroupPresentCapabilitiesKHX const& rhs ) const
24474 {
24475 return !operator==( rhs );
24476 }
24477
24478 private:
24479 StructureType sType;
24480
24481 public:
24482 const void* pNext;
24483 uint32_t presentMask[VK_MAX_DEVICE_GROUP_SIZE_KHX];
24484 DeviceGroupPresentModeFlagsKHX modes;
24485 };
24486 static_assert( sizeof( DeviceGroupPresentCapabilitiesKHX ) == sizeof( VkDeviceGroupPresentCapabilitiesKHX ), "struct and wrapper have different size!" );
24487
24488 struct DeviceGroupPresentInfoKHX
24489 {
24490 DeviceGroupPresentInfoKHX( uint32_t swapchainCount_ = 0, const uint32_t* pDeviceMasks_ = nullptr, DeviceGroupPresentModeFlagBitsKHX mode_ = DeviceGroupPresentModeFlagBitsKHX::eLocal )
24491 : sType( StructureType::eDeviceGroupPresentInfoKHX )
24492 , pNext( nullptr )
24493 , swapchainCount( swapchainCount_ )
24494 , pDeviceMasks( pDeviceMasks_ )
24495 , mode( mode_ )
24496 {
24497 }
24498
24499 DeviceGroupPresentInfoKHX( VkDeviceGroupPresentInfoKHX const & rhs )
24500 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024501 memcpy( this, &rhs, sizeof( DeviceGroupPresentInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070024502 }
24503
24504 DeviceGroupPresentInfoKHX& operator=( VkDeviceGroupPresentInfoKHX const & rhs )
24505 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024506 memcpy( this, &rhs, sizeof( DeviceGroupPresentInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070024507 return *this;
24508 }
Mark Young0f183a82017-02-28 09:58:04 -070024509 DeviceGroupPresentInfoKHX& setPNext( const void* pNext_ )
24510 {
24511 pNext = pNext_;
24512 return *this;
24513 }
24514
24515 DeviceGroupPresentInfoKHX& setSwapchainCount( uint32_t swapchainCount_ )
24516 {
24517 swapchainCount = swapchainCount_;
24518 return *this;
24519 }
24520
24521 DeviceGroupPresentInfoKHX& setPDeviceMasks( const uint32_t* pDeviceMasks_ )
24522 {
24523 pDeviceMasks = pDeviceMasks_;
24524 return *this;
24525 }
24526
24527 DeviceGroupPresentInfoKHX& setMode( DeviceGroupPresentModeFlagBitsKHX mode_ )
24528 {
24529 mode = mode_;
24530 return *this;
24531 }
24532
24533 operator const VkDeviceGroupPresentInfoKHX&() const
24534 {
24535 return *reinterpret_cast<const VkDeviceGroupPresentInfoKHX*>(this);
24536 }
24537
24538 bool operator==( DeviceGroupPresentInfoKHX const& rhs ) const
24539 {
24540 return ( sType == rhs.sType )
24541 && ( pNext == rhs.pNext )
24542 && ( swapchainCount == rhs.swapchainCount )
24543 && ( pDeviceMasks == rhs.pDeviceMasks )
24544 && ( mode == rhs.mode );
24545 }
24546
24547 bool operator!=( DeviceGroupPresentInfoKHX const& rhs ) const
24548 {
24549 return !operator==( rhs );
24550 }
24551
24552 private:
24553 StructureType sType;
24554
24555 public:
24556 const void* pNext;
24557 uint32_t swapchainCount;
24558 const uint32_t* pDeviceMasks;
24559 DeviceGroupPresentModeFlagBitsKHX mode;
24560 };
24561 static_assert( sizeof( DeviceGroupPresentInfoKHX ) == sizeof( VkDeviceGroupPresentInfoKHX ), "struct and wrapper have different size!" );
24562
24563 struct DeviceGroupSwapchainCreateInfoKHX
24564 {
24565 DeviceGroupSwapchainCreateInfoKHX( DeviceGroupPresentModeFlagsKHX modes_ = DeviceGroupPresentModeFlagsKHX() )
24566 : sType( StructureType::eDeviceGroupSwapchainCreateInfoKHX )
24567 , pNext( nullptr )
24568 , modes( modes_ )
24569 {
24570 }
24571
24572 DeviceGroupSwapchainCreateInfoKHX( VkDeviceGroupSwapchainCreateInfoKHX const & rhs )
24573 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024574 memcpy( this, &rhs, sizeof( DeviceGroupSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070024575 }
24576
24577 DeviceGroupSwapchainCreateInfoKHX& operator=( VkDeviceGroupSwapchainCreateInfoKHX const & rhs )
24578 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024579 memcpy( this, &rhs, sizeof( DeviceGroupSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070024580 return *this;
24581 }
Mark Young0f183a82017-02-28 09:58:04 -070024582 DeviceGroupSwapchainCreateInfoKHX& setPNext( const void* pNext_ )
24583 {
24584 pNext = pNext_;
24585 return *this;
24586 }
24587
24588 DeviceGroupSwapchainCreateInfoKHX& setModes( DeviceGroupPresentModeFlagsKHX modes_ )
24589 {
24590 modes = modes_;
24591 return *this;
24592 }
24593
24594 operator const VkDeviceGroupSwapchainCreateInfoKHX&() const
24595 {
24596 return *reinterpret_cast<const VkDeviceGroupSwapchainCreateInfoKHX*>(this);
24597 }
24598
24599 bool operator==( DeviceGroupSwapchainCreateInfoKHX const& rhs ) const
24600 {
24601 return ( sType == rhs.sType )
24602 && ( pNext == rhs.pNext )
24603 && ( modes == rhs.modes );
24604 }
24605
24606 bool operator!=( DeviceGroupSwapchainCreateInfoKHX const& rhs ) const
24607 {
24608 return !operator==( rhs );
24609 }
24610
24611 private:
24612 StructureType sType;
24613
24614 public:
24615 const void* pNext;
24616 DeviceGroupPresentModeFlagsKHX modes;
24617 };
24618 static_assert( sizeof( DeviceGroupSwapchainCreateInfoKHX ) == sizeof( VkDeviceGroupSwapchainCreateInfoKHX ), "struct and wrapper have different size!" );
24619
24620 enum class SwapchainCreateFlagBitsKHR
24621 {
24622 eBindSfrKHX = VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX
24623 };
24624
24625 using SwapchainCreateFlagsKHR = Flags<SwapchainCreateFlagBitsKHR, VkSwapchainCreateFlagsKHR>;
24626
24627 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator|( SwapchainCreateFlagBitsKHR bit0, SwapchainCreateFlagBitsKHR bit1 )
24628 {
24629 return SwapchainCreateFlagsKHR( bit0 ) | bit1;
24630 }
24631
24632 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator~( SwapchainCreateFlagBitsKHR bits )
24633 {
24634 return ~( SwapchainCreateFlagsKHR( bits ) );
24635 }
24636
24637 template <> struct FlagTraits<SwapchainCreateFlagBitsKHR>
24638 {
24639 enum
24640 {
24641 allFlags = VkFlags(SwapchainCreateFlagBitsKHR::eBindSfrKHX)
24642 };
24643 };
24644
24645 struct SwapchainCreateInfoKHR
24646 {
24647 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() )
24648 : sType( StructureType::eSwapchainCreateInfoKHR )
24649 , pNext( nullptr )
24650 , flags( flags_ )
24651 , surface( surface_ )
24652 , minImageCount( minImageCount_ )
24653 , imageFormat( imageFormat_ )
24654 , imageColorSpace( imageColorSpace_ )
24655 , imageExtent( imageExtent_ )
24656 , imageArrayLayers( imageArrayLayers_ )
24657 , imageUsage( imageUsage_ )
24658 , imageSharingMode( imageSharingMode_ )
24659 , queueFamilyIndexCount( queueFamilyIndexCount_ )
24660 , pQueueFamilyIndices( pQueueFamilyIndices_ )
24661 , preTransform( preTransform_ )
24662 , compositeAlpha( compositeAlpha_ )
24663 , presentMode( presentMode_ )
24664 , clipped( clipped_ )
24665 , oldSwapchain( oldSwapchain_ )
24666 {
24667 }
24668
24669 SwapchainCreateInfoKHR( VkSwapchainCreateInfoKHR const & rhs )
24670 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024671 memcpy( this, &rhs, sizeof( SwapchainCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070024672 }
24673
24674 SwapchainCreateInfoKHR& operator=( VkSwapchainCreateInfoKHR const & rhs )
24675 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024676 memcpy( this, &rhs, sizeof( SwapchainCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070024677 return *this;
24678 }
Mark Young0f183a82017-02-28 09:58:04 -070024679 SwapchainCreateInfoKHR& setPNext( const void* pNext_ )
24680 {
24681 pNext = pNext_;
24682 return *this;
24683 }
24684
24685 SwapchainCreateInfoKHR& setFlags( SwapchainCreateFlagsKHR flags_ )
24686 {
24687 flags = flags_;
24688 return *this;
24689 }
24690
24691 SwapchainCreateInfoKHR& setSurface( SurfaceKHR surface_ )
24692 {
24693 surface = surface_;
24694 return *this;
24695 }
24696
24697 SwapchainCreateInfoKHR& setMinImageCount( uint32_t minImageCount_ )
24698 {
24699 minImageCount = minImageCount_;
24700 return *this;
24701 }
24702
24703 SwapchainCreateInfoKHR& setImageFormat( Format imageFormat_ )
24704 {
24705 imageFormat = imageFormat_;
24706 return *this;
24707 }
24708
24709 SwapchainCreateInfoKHR& setImageColorSpace( ColorSpaceKHR imageColorSpace_ )
24710 {
24711 imageColorSpace = imageColorSpace_;
24712 return *this;
24713 }
24714
24715 SwapchainCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
24716 {
24717 imageExtent = imageExtent_;
24718 return *this;
24719 }
24720
24721 SwapchainCreateInfoKHR& setImageArrayLayers( uint32_t imageArrayLayers_ )
24722 {
24723 imageArrayLayers = imageArrayLayers_;
24724 return *this;
24725 }
24726
24727 SwapchainCreateInfoKHR& setImageUsage( ImageUsageFlags imageUsage_ )
24728 {
24729 imageUsage = imageUsage_;
24730 return *this;
24731 }
24732
24733 SwapchainCreateInfoKHR& setImageSharingMode( SharingMode imageSharingMode_ )
24734 {
24735 imageSharingMode = imageSharingMode_;
24736 return *this;
24737 }
24738
24739 SwapchainCreateInfoKHR& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
24740 {
24741 queueFamilyIndexCount = queueFamilyIndexCount_;
24742 return *this;
24743 }
24744
24745 SwapchainCreateInfoKHR& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
24746 {
24747 pQueueFamilyIndices = pQueueFamilyIndices_;
24748 return *this;
24749 }
24750
24751 SwapchainCreateInfoKHR& setPreTransform( SurfaceTransformFlagBitsKHR preTransform_ )
24752 {
24753 preTransform = preTransform_;
24754 return *this;
24755 }
24756
24757 SwapchainCreateInfoKHR& setCompositeAlpha( CompositeAlphaFlagBitsKHR compositeAlpha_ )
24758 {
24759 compositeAlpha = compositeAlpha_;
24760 return *this;
24761 }
24762
24763 SwapchainCreateInfoKHR& setPresentMode( PresentModeKHR presentMode_ )
24764 {
24765 presentMode = presentMode_;
24766 return *this;
24767 }
24768
24769 SwapchainCreateInfoKHR& setClipped( Bool32 clipped_ )
24770 {
24771 clipped = clipped_;
24772 return *this;
24773 }
24774
24775 SwapchainCreateInfoKHR& setOldSwapchain( SwapchainKHR oldSwapchain_ )
24776 {
24777 oldSwapchain = oldSwapchain_;
24778 return *this;
24779 }
24780
24781 operator const VkSwapchainCreateInfoKHR&() const
24782 {
24783 return *reinterpret_cast<const VkSwapchainCreateInfoKHR*>(this);
24784 }
24785
24786 bool operator==( SwapchainCreateInfoKHR const& rhs ) const
24787 {
24788 return ( sType == rhs.sType )
24789 && ( pNext == rhs.pNext )
24790 && ( flags == rhs.flags )
24791 && ( surface == rhs.surface )
24792 && ( minImageCount == rhs.minImageCount )
24793 && ( imageFormat == rhs.imageFormat )
24794 && ( imageColorSpace == rhs.imageColorSpace )
24795 && ( imageExtent == rhs.imageExtent )
24796 && ( imageArrayLayers == rhs.imageArrayLayers )
24797 && ( imageUsage == rhs.imageUsage )
24798 && ( imageSharingMode == rhs.imageSharingMode )
24799 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
24800 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
24801 && ( preTransform == rhs.preTransform )
24802 && ( compositeAlpha == rhs.compositeAlpha )
24803 && ( presentMode == rhs.presentMode )
24804 && ( clipped == rhs.clipped )
24805 && ( oldSwapchain == rhs.oldSwapchain );
24806 }
24807
24808 bool operator!=( SwapchainCreateInfoKHR const& rhs ) const
24809 {
24810 return !operator==( rhs );
24811 }
24812
24813 private:
24814 StructureType sType;
24815
24816 public:
24817 const void* pNext;
24818 SwapchainCreateFlagsKHR flags;
24819 SurfaceKHR surface;
24820 uint32_t minImageCount;
24821 Format imageFormat;
24822 ColorSpaceKHR imageColorSpace;
24823 Extent2D imageExtent;
24824 uint32_t imageArrayLayers;
24825 ImageUsageFlags imageUsage;
24826 SharingMode imageSharingMode;
24827 uint32_t queueFamilyIndexCount;
24828 const uint32_t* pQueueFamilyIndices;
24829 SurfaceTransformFlagBitsKHR preTransform;
24830 CompositeAlphaFlagBitsKHR compositeAlpha;
24831 PresentModeKHR presentMode;
24832 Bool32 clipped;
24833 SwapchainKHR oldSwapchain;
24834 };
24835 static_assert( sizeof( SwapchainCreateInfoKHR ) == sizeof( VkSwapchainCreateInfoKHR ), "struct and wrapper have different size!" );
24836
24837 enum class ViewportCoordinateSwizzleNV
24838 {
24839 ePositiveX = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV,
24840 eNegativeX = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV,
24841 ePositiveY = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV,
24842 eNegativeY = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV,
24843 ePositiveZ = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV,
24844 eNegativeZ = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV,
24845 ePositiveW = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV,
24846 eNegativeW = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV
24847 };
24848
24849 struct ViewportSwizzleNV
24850 {
24851 ViewportSwizzleNV( ViewportCoordinateSwizzleNV x_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV y_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV z_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV w_ = ViewportCoordinateSwizzleNV::ePositiveX )
24852 : x( x_ )
24853 , y( y_ )
24854 , z( z_ )
24855 , w( w_ )
24856 {
24857 }
24858
24859 ViewportSwizzleNV( VkViewportSwizzleNV const & rhs )
24860 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024861 memcpy( this, &rhs, sizeof( ViewportSwizzleNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070024862 }
24863
24864 ViewportSwizzleNV& operator=( VkViewportSwizzleNV const & rhs )
24865 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024866 memcpy( this, &rhs, sizeof( ViewportSwizzleNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070024867 return *this;
24868 }
Mark Young0f183a82017-02-28 09:58:04 -070024869 ViewportSwizzleNV& setX( ViewportCoordinateSwizzleNV x_ )
24870 {
24871 x = x_;
24872 return *this;
24873 }
24874
24875 ViewportSwizzleNV& setY( ViewportCoordinateSwizzleNV y_ )
24876 {
24877 y = y_;
24878 return *this;
24879 }
24880
24881 ViewportSwizzleNV& setZ( ViewportCoordinateSwizzleNV z_ )
24882 {
24883 z = z_;
24884 return *this;
24885 }
24886
24887 ViewportSwizzleNV& setW( ViewportCoordinateSwizzleNV w_ )
24888 {
24889 w = w_;
24890 return *this;
24891 }
24892
24893 operator const VkViewportSwizzleNV&() const
24894 {
24895 return *reinterpret_cast<const VkViewportSwizzleNV*>(this);
24896 }
24897
24898 bool operator==( ViewportSwizzleNV const& rhs ) const
24899 {
24900 return ( x == rhs.x )
24901 && ( y == rhs.y )
24902 && ( z == rhs.z )
24903 && ( w == rhs.w );
24904 }
24905
24906 bool operator!=( ViewportSwizzleNV const& rhs ) const
24907 {
24908 return !operator==( rhs );
24909 }
24910
24911 ViewportCoordinateSwizzleNV x;
24912 ViewportCoordinateSwizzleNV y;
24913 ViewportCoordinateSwizzleNV z;
24914 ViewportCoordinateSwizzleNV w;
24915 };
24916 static_assert( sizeof( ViewportSwizzleNV ) == sizeof( VkViewportSwizzleNV ), "struct and wrapper have different size!" );
24917
24918 struct PipelineViewportSwizzleStateCreateInfoNV
24919 {
24920 PipelineViewportSwizzleStateCreateInfoNV( PipelineViewportSwizzleStateCreateFlagsNV flags_ = PipelineViewportSwizzleStateCreateFlagsNV(), uint32_t viewportCount_ = 0, const ViewportSwizzleNV* pViewportSwizzles_ = nullptr )
24921 : sType( StructureType::ePipelineViewportSwizzleStateCreateInfoNV )
24922 , pNext( nullptr )
24923 , flags( flags_ )
24924 , viewportCount( viewportCount_ )
24925 , pViewportSwizzles( pViewportSwizzles_ )
24926 {
24927 }
24928
24929 PipelineViewportSwizzleStateCreateInfoNV( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
24930 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024931 memcpy( this, &rhs, sizeof( PipelineViewportSwizzleStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070024932 }
24933
24934 PipelineViewportSwizzleStateCreateInfoNV& operator=( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
24935 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024936 memcpy( this, &rhs, sizeof( PipelineViewportSwizzleStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070024937 return *this;
24938 }
Mark Young0f183a82017-02-28 09:58:04 -070024939 PipelineViewportSwizzleStateCreateInfoNV& setPNext( const void* pNext_ )
24940 {
24941 pNext = pNext_;
24942 return *this;
24943 }
24944
24945 PipelineViewportSwizzleStateCreateInfoNV& setFlags( PipelineViewportSwizzleStateCreateFlagsNV flags_ )
24946 {
24947 flags = flags_;
24948 return *this;
24949 }
24950
24951 PipelineViewportSwizzleStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
24952 {
24953 viewportCount = viewportCount_;
24954 return *this;
24955 }
24956
24957 PipelineViewportSwizzleStateCreateInfoNV& setPViewportSwizzles( const ViewportSwizzleNV* pViewportSwizzles_ )
24958 {
24959 pViewportSwizzles = pViewportSwizzles_;
24960 return *this;
24961 }
24962
24963 operator const VkPipelineViewportSwizzleStateCreateInfoNV&() const
24964 {
24965 return *reinterpret_cast<const VkPipelineViewportSwizzleStateCreateInfoNV*>(this);
24966 }
24967
24968 bool operator==( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
24969 {
24970 return ( sType == rhs.sType )
24971 && ( pNext == rhs.pNext )
24972 && ( flags == rhs.flags )
24973 && ( viewportCount == rhs.viewportCount )
24974 && ( pViewportSwizzles == rhs.pViewportSwizzles );
24975 }
24976
24977 bool operator!=( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
24978 {
24979 return !operator==( rhs );
24980 }
24981
24982 private:
24983 StructureType sType;
24984
24985 public:
24986 const void* pNext;
24987 PipelineViewportSwizzleStateCreateFlagsNV flags;
24988 uint32_t viewportCount;
24989 const ViewportSwizzleNV* pViewportSwizzles;
24990 };
24991 static_assert( sizeof( PipelineViewportSwizzleStateCreateInfoNV ) == sizeof( VkPipelineViewportSwizzleStateCreateInfoNV ), "struct and wrapper have different size!" );
24992
24993 enum class DiscardRectangleModeEXT
24994 {
24995 eInclusive = VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT,
24996 eExclusive = VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT
24997 };
24998
24999 struct PipelineDiscardRectangleStateCreateInfoEXT
25000 {
25001 PipelineDiscardRectangleStateCreateInfoEXT( PipelineDiscardRectangleStateCreateFlagsEXT flags_ = PipelineDiscardRectangleStateCreateFlagsEXT(), DiscardRectangleModeEXT discardRectangleMode_ = DiscardRectangleModeEXT::eInclusive, uint32_t discardRectangleCount_ = 0, const Rect2D* pDiscardRectangles_ = nullptr )
25002 : sType( StructureType::ePipelineDiscardRectangleStateCreateInfoEXT )
25003 , pNext( nullptr )
25004 , flags( flags_ )
25005 , discardRectangleMode( discardRectangleMode_ )
25006 , discardRectangleCount( discardRectangleCount_ )
25007 , pDiscardRectangles( pDiscardRectangles_ )
25008 {
25009 }
25010
25011 PipelineDiscardRectangleStateCreateInfoEXT( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
25012 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025013 memcpy( this, &rhs, sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070025014 }
25015
25016 PipelineDiscardRectangleStateCreateInfoEXT& operator=( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
25017 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025018 memcpy( this, &rhs, sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070025019 return *this;
25020 }
Mark Young0f183a82017-02-28 09:58:04 -070025021 PipelineDiscardRectangleStateCreateInfoEXT& setPNext( const void* pNext_ )
25022 {
25023 pNext = pNext_;
25024 return *this;
25025 }
25026
25027 PipelineDiscardRectangleStateCreateInfoEXT& setFlags( PipelineDiscardRectangleStateCreateFlagsEXT flags_ )
25028 {
25029 flags = flags_;
25030 return *this;
25031 }
25032
25033 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleMode( DiscardRectangleModeEXT discardRectangleMode_ )
25034 {
25035 discardRectangleMode = discardRectangleMode_;
25036 return *this;
25037 }
25038
25039 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleCount( uint32_t discardRectangleCount_ )
25040 {
25041 discardRectangleCount = discardRectangleCount_;
25042 return *this;
25043 }
25044
25045 PipelineDiscardRectangleStateCreateInfoEXT& setPDiscardRectangles( const Rect2D* pDiscardRectangles_ )
25046 {
25047 pDiscardRectangles = pDiscardRectangles_;
25048 return *this;
25049 }
25050
25051 operator const VkPipelineDiscardRectangleStateCreateInfoEXT&() const
25052 {
25053 return *reinterpret_cast<const VkPipelineDiscardRectangleStateCreateInfoEXT*>(this);
25054 }
25055
25056 bool operator==( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
25057 {
25058 return ( sType == rhs.sType )
25059 && ( pNext == rhs.pNext )
25060 && ( flags == rhs.flags )
25061 && ( discardRectangleMode == rhs.discardRectangleMode )
25062 && ( discardRectangleCount == rhs.discardRectangleCount )
25063 && ( pDiscardRectangles == rhs.pDiscardRectangles );
25064 }
25065
25066 bool operator!=( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
25067 {
25068 return !operator==( rhs );
25069 }
25070
25071 private:
25072 StructureType sType;
25073
25074 public:
25075 const void* pNext;
25076 PipelineDiscardRectangleStateCreateFlagsEXT flags;
25077 DiscardRectangleModeEXT discardRectangleMode;
25078 uint32_t discardRectangleCount;
25079 const Rect2D* pDiscardRectangles;
25080 };
25081 static_assert( sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) == sizeof( VkPipelineDiscardRectangleStateCreateInfoEXT ), "struct and wrapper have different size!" );
25082
25083 enum class SubpassDescriptionFlagBits
25084 {
25085 ePerViewAttributesNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX,
25086 ePerViewPositionXOnlyNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX
25087 };
25088
25089 using SubpassDescriptionFlags = Flags<SubpassDescriptionFlagBits, VkSubpassDescriptionFlags>;
25090
25091 VULKAN_HPP_INLINE SubpassDescriptionFlags operator|( SubpassDescriptionFlagBits bit0, SubpassDescriptionFlagBits bit1 )
25092 {
25093 return SubpassDescriptionFlags( bit0 ) | bit1;
25094 }
25095
25096 VULKAN_HPP_INLINE SubpassDescriptionFlags operator~( SubpassDescriptionFlagBits bits )
25097 {
25098 return ~( SubpassDescriptionFlags( bits ) );
25099 }
25100
25101 template <> struct FlagTraits<SubpassDescriptionFlagBits>
25102 {
25103 enum
25104 {
25105 allFlags = VkFlags(SubpassDescriptionFlagBits::ePerViewAttributesNVX) | VkFlags(SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX)
25106 };
25107 };
25108
25109 struct SubpassDescription
25110 {
25111 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 )
25112 : flags( flags_ )
25113 , pipelineBindPoint( pipelineBindPoint_ )
25114 , inputAttachmentCount( inputAttachmentCount_ )
25115 , pInputAttachments( pInputAttachments_ )
25116 , colorAttachmentCount( colorAttachmentCount_ )
25117 , pColorAttachments( pColorAttachments_ )
25118 , pResolveAttachments( pResolveAttachments_ )
25119 , pDepthStencilAttachment( pDepthStencilAttachment_ )
25120 , preserveAttachmentCount( preserveAttachmentCount_ )
25121 , pPreserveAttachments( pPreserveAttachments_ )
25122 {
25123 }
25124
25125 SubpassDescription( VkSubpassDescription const & rhs )
25126 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025127 memcpy( this, &rhs, sizeof( SubpassDescription ) );
Mark Young0f183a82017-02-28 09:58:04 -070025128 }
25129
25130 SubpassDescription& operator=( VkSubpassDescription const & rhs )
25131 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025132 memcpy( this, &rhs, sizeof( SubpassDescription ) );
Mark Young0f183a82017-02-28 09:58:04 -070025133 return *this;
25134 }
Mark Young0f183a82017-02-28 09:58:04 -070025135 SubpassDescription& setFlags( SubpassDescriptionFlags flags_ )
25136 {
25137 flags = flags_;
25138 return *this;
25139 }
25140
25141 SubpassDescription& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
25142 {
25143 pipelineBindPoint = pipelineBindPoint_;
25144 return *this;
25145 }
25146
25147 SubpassDescription& setInputAttachmentCount( uint32_t inputAttachmentCount_ )
25148 {
25149 inputAttachmentCount = inputAttachmentCount_;
25150 return *this;
25151 }
25152
25153 SubpassDescription& setPInputAttachments( const AttachmentReference* pInputAttachments_ )
25154 {
25155 pInputAttachments = pInputAttachments_;
25156 return *this;
25157 }
25158
25159 SubpassDescription& setColorAttachmentCount( uint32_t colorAttachmentCount_ )
25160 {
25161 colorAttachmentCount = colorAttachmentCount_;
25162 return *this;
25163 }
25164
25165 SubpassDescription& setPColorAttachments( const AttachmentReference* pColorAttachments_ )
25166 {
25167 pColorAttachments = pColorAttachments_;
25168 return *this;
25169 }
25170
25171 SubpassDescription& setPResolveAttachments( const AttachmentReference* pResolveAttachments_ )
25172 {
25173 pResolveAttachments = pResolveAttachments_;
25174 return *this;
25175 }
25176
25177 SubpassDescription& setPDepthStencilAttachment( const AttachmentReference* pDepthStencilAttachment_ )
25178 {
25179 pDepthStencilAttachment = pDepthStencilAttachment_;
25180 return *this;
25181 }
25182
25183 SubpassDescription& setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ )
25184 {
25185 preserveAttachmentCount = preserveAttachmentCount_;
25186 return *this;
25187 }
25188
25189 SubpassDescription& setPPreserveAttachments( const uint32_t* pPreserveAttachments_ )
25190 {
25191 pPreserveAttachments = pPreserveAttachments_;
25192 return *this;
25193 }
25194
25195 operator const VkSubpassDescription&() const
25196 {
25197 return *reinterpret_cast<const VkSubpassDescription*>(this);
25198 }
25199
25200 bool operator==( SubpassDescription const& rhs ) const
25201 {
25202 return ( flags == rhs.flags )
25203 && ( pipelineBindPoint == rhs.pipelineBindPoint )
25204 && ( inputAttachmentCount == rhs.inputAttachmentCount )
25205 && ( pInputAttachments == rhs.pInputAttachments )
25206 && ( colorAttachmentCount == rhs.colorAttachmentCount )
25207 && ( pColorAttachments == rhs.pColorAttachments )
25208 && ( pResolveAttachments == rhs.pResolveAttachments )
25209 && ( pDepthStencilAttachment == rhs.pDepthStencilAttachment )
25210 && ( preserveAttachmentCount == rhs.preserveAttachmentCount )
25211 && ( pPreserveAttachments == rhs.pPreserveAttachments );
25212 }
25213
25214 bool operator!=( SubpassDescription const& rhs ) const
25215 {
25216 return !operator==( rhs );
25217 }
25218
25219 SubpassDescriptionFlags flags;
25220 PipelineBindPoint pipelineBindPoint;
25221 uint32_t inputAttachmentCount;
25222 const AttachmentReference* pInputAttachments;
25223 uint32_t colorAttachmentCount;
25224 const AttachmentReference* pColorAttachments;
25225 const AttachmentReference* pResolveAttachments;
25226 const AttachmentReference* pDepthStencilAttachment;
25227 uint32_t preserveAttachmentCount;
25228 const uint32_t* pPreserveAttachments;
25229 };
25230 static_assert( sizeof( SubpassDescription ) == sizeof( VkSubpassDescription ), "struct and wrapper have different size!" );
25231
25232 struct RenderPassCreateInfo
25233 {
25234 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 )
25235 : sType( StructureType::eRenderPassCreateInfo )
25236 , pNext( nullptr )
25237 , flags( flags_ )
25238 , attachmentCount( attachmentCount_ )
25239 , pAttachments( pAttachments_ )
25240 , subpassCount( subpassCount_ )
25241 , pSubpasses( pSubpasses_ )
25242 , dependencyCount( dependencyCount_ )
25243 , pDependencies( pDependencies_ )
25244 {
25245 }
25246
25247 RenderPassCreateInfo( VkRenderPassCreateInfo const & rhs )
25248 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025249 memcpy( this, &rhs, sizeof( RenderPassCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070025250 }
25251
25252 RenderPassCreateInfo& operator=( VkRenderPassCreateInfo const & rhs )
25253 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025254 memcpy( this, &rhs, sizeof( RenderPassCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070025255 return *this;
25256 }
Mark Young0f183a82017-02-28 09:58:04 -070025257 RenderPassCreateInfo& setPNext( const void* pNext_ )
25258 {
25259 pNext = pNext_;
25260 return *this;
25261 }
25262
25263 RenderPassCreateInfo& setFlags( RenderPassCreateFlags flags_ )
25264 {
25265 flags = flags_;
25266 return *this;
25267 }
25268
25269 RenderPassCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
25270 {
25271 attachmentCount = attachmentCount_;
25272 return *this;
25273 }
25274
25275 RenderPassCreateInfo& setPAttachments( const AttachmentDescription* pAttachments_ )
25276 {
25277 pAttachments = pAttachments_;
25278 return *this;
25279 }
25280
25281 RenderPassCreateInfo& setSubpassCount( uint32_t subpassCount_ )
25282 {
25283 subpassCount = subpassCount_;
25284 return *this;
25285 }
25286
25287 RenderPassCreateInfo& setPSubpasses( const SubpassDescription* pSubpasses_ )
25288 {
25289 pSubpasses = pSubpasses_;
25290 return *this;
25291 }
25292
25293 RenderPassCreateInfo& setDependencyCount( uint32_t dependencyCount_ )
25294 {
25295 dependencyCount = dependencyCount_;
25296 return *this;
25297 }
25298
25299 RenderPassCreateInfo& setPDependencies( const SubpassDependency* pDependencies_ )
25300 {
25301 pDependencies = pDependencies_;
25302 return *this;
25303 }
25304
25305 operator const VkRenderPassCreateInfo&() const
25306 {
25307 return *reinterpret_cast<const VkRenderPassCreateInfo*>(this);
25308 }
25309
25310 bool operator==( RenderPassCreateInfo const& rhs ) const
25311 {
25312 return ( sType == rhs.sType )
25313 && ( pNext == rhs.pNext )
25314 && ( flags == rhs.flags )
25315 && ( attachmentCount == rhs.attachmentCount )
25316 && ( pAttachments == rhs.pAttachments )
25317 && ( subpassCount == rhs.subpassCount )
25318 && ( pSubpasses == rhs.pSubpasses )
25319 && ( dependencyCount == rhs.dependencyCount )
25320 && ( pDependencies == rhs.pDependencies );
25321 }
25322
25323 bool operator!=( RenderPassCreateInfo const& rhs ) const
25324 {
25325 return !operator==( rhs );
25326 }
25327
25328 private:
25329 StructureType sType;
25330
25331 public:
25332 const void* pNext;
25333 RenderPassCreateFlags flags;
25334 uint32_t attachmentCount;
25335 const AttachmentDescription* pAttachments;
25336 uint32_t subpassCount;
25337 const SubpassDescription* pSubpasses;
25338 uint32_t dependencyCount;
25339 const SubpassDependency* pDependencies;
25340 };
25341 static_assert( sizeof( RenderPassCreateInfo ) == sizeof( VkRenderPassCreateInfo ), "struct and wrapper have different size!" );
25342
Lenny Komowb79f04a2017-09-18 17:07:00 -060025343 enum class PointClippingBehaviorKHR
25344 {
25345 eAllClipPlanes = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR,
25346 eUserClipPlanesOnly = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR
25347 };
25348
25349 struct PhysicalDevicePointClippingPropertiesKHR
25350 {
25351 operator const VkPhysicalDevicePointClippingPropertiesKHR&() const
25352 {
25353 return *reinterpret_cast<const VkPhysicalDevicePointClippingPropertiesKHR*>(this);
25354 }
25355
25356 bool operator==( PhysicalDevicePointClippingPropertiesKHR const& rhs ) const
25357 {
25358 return ( sType == rhs.sType )
25359 && ( pNext == rhs.pNext )
25360 && ( pointClippingBehavior == rhs.pointClippingBehavior );
25361 }
25362
25363 bool operator!=( PhysicalDevicePointClippingPropertiesKHR const& rhs ) const
25364 {
25365 return !operator==( rhs );
25366 }
25367
25368 private:
25369 StructureType sType;
25370
25371 public:
25372 void* pNext;
25373 PointClippingBehaviorKHR pointClippingBehavior;
25374 };
25375 static_assert( sizeof( PhysicalDevicePointClippingPropertiesKHR ) == sizeof( VkPhysicalDevicePointClippingPropertiesKHR ), "struct and wrapper have different size!" );
25376
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060025377 enum class SamplerReductionModeEXT
25378 {
25379 eWeightedAverage = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT,
25380 eMin = VK_SAMPLER_REDUCTION_MODE_MIN_EXT,
25381 eMax = VK_SAMPLER_REDUCTION_MODE_MAX_EXT
25382 };
25383
25384 struct SamplerReductionModeCreateInfoEXT
25385 {
25386 SamplerReductionModeCreateInfoEXT( SamplerReductionModeEXT reductionMode_ = SamplerReductionModeEXT::eWeightedAverage )
25387 : sType( StructureType::eSamplerReductionModeCreateInfoEXT )
25388 , pNext( nullptr )
25389 , reductionMode( reductionMode_ )
25390 {
25391 }
25392
25393 SamplerReductionModeCreateInfoEXT( VkSamplerReductionModeCreateInfoEXT const & rhs )
25394 {
25395 memcpy( this, &rhs, sizeof( SamplerReductionModeCreateInfoEXT ) );
25396 }
25397
25398 SamplerReductionModeCreateInfoEXT& operator=( VkSamplerReductionModeCreateInfoEXT const & rhs )
25399 {
25400 memcpy( this, &rhs, sizeof( SamplerReductionModeCreateInfoEXT ) );
25401 return *this;
25402 }
25403 SamplerReductionModeCreateInfoEXT& setPNext( const void* pNext_ )
25404 {
25405 pNext = pNext_;
25406 return *this;
25407 }
25408
25409 SamplerReductionModeCreateInfoEXT& setReductionMode( SamplerReductionModeEXT reductionMode_ )
25410 {
25411 reductionMode = reductionMode_;
25412 return *this;
25413 }
25414
25415 operator const VkSamplerReductionModeCreateInfoEXT&() const
25416 {
25417 return *reinterpret_cast<const VkSamplerReductionModeCreateInfoEXT*>(this);
25418 }
25419
25420 bool operator==( SamplerReductionModeCreateInfoEXT const& rhs ) const
25421 {
25422 return ( sType == rhs.sType )
25423 && ( pNext == rhs.pNext )
25424 && ( reductionMode == rhs.reductionMode );
25425 }
25426
25427 bool operator!=( SamplerReductionModeCreateInfoEXT const& rhs ) const
25428 {
25429 return !operator==( rhs );
25430 }
25431
25432 private:
25433 StructureType sType;
25434
25435 public:
25436 const void* pNext;
25437 SamplerReductionModeEXT reductionMode;
25438 };
25439 static_assert( sizeof( SamplerReductionModeCreateInfoEXT ) == sizeof( VkSamplerReductionModeCreateInfoEXT ), "struct and wrapper have different size!" );
25440
Lenny Komowb79f04a2017-09-18 17:07:00 -060025441 enum class TessellationDomainOriginKHR
25442 {
25443 eUpperLeft = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR,
25444 eLowerLeft = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR
25445 };
25446
25447 struct PipelineTessellationDomainOriginStateCreateInfoKHR
25448 {
25449 PipelineTessellationDomainOriginStateCreateInfoKHR( TessellationDomainOriginKHR domainOrigin_ = TessellationDomainOriginKHR::eUpperLeft )
25450 : sType( StructureType::ePipelineTessellationDomainOriginStateCreateInfoKHR )
25451 , pNext( nullptr )
25452 , domainOrigin( domainOrigin_ )
25453 {
25454 }
25455
25456 PipelineTessellationDomainOriginStateCreateInfoKHR( VkPipelineTessellationDomainOriginStateCreateInfoKHR const & rhs )
25457 {
25458 memcpy( this, &rhs, sizeof( PipelineTessellationDomainOriginStateCreateInfoKHR ) );
25459 }
25460
25461 PipelineTessellationDomainOriginStateCreateInfoKHR& operator=( VkPipelineTessellationDomainOriginStateCreateInfoKHR const & rhs )
25462 {
25463 memcpy( this, &rhs, sizeof( PipelineTessellationDomainOriginStateCreateInfoKHR ) );
25464 return *this;
25465 }
25466 PipelineTessellationDomainOriginStateCreateInfoKHR& setPNext( const void* pNext_ )
25467 {
25468 pNext = pNext_;
25469 return *this;
25470 }
25471
25472 PipelineTessellationDomainOriginStateCreateInfoKHR& setDomainOrigin( TessellationDomainOriginKHR domainOrigin_ )
25473 {
25474 domainOrigin = domainOrigin_;
25475 return *this;
25476 }
25477
25478 operator const VkPipelineTessellationDomainOriginStateCreateInfoKHR&() const
25479 {
25480 return *reinterpret_cast<const VkPipelineTessellationDomainOriginStateCreateInfoKHR*>(this);
25481 }
25482
25483 bool operator==( PipelineTessellationDomainOriginStateCreateInfoKHR const& rhs ) const
25484 {
25485 return ( sType == rhs.sType )
25486 && ( pNext == rhs.pNext )
25487 && ( domainOrigin == rhs.domainOrigin );
25488 }
25489
25490 bool operator!=( PipelineTessellationDomainOriginStateCreateInfoKHR const& rhs ) const
25491 {
25492 return !operator==( rhs );
25493 }
25494
25495 private:
25496 StructureType sType;
25497
25498 public:
25499 const void* pNext;
25500 TessellationDomainOriginKHR domainOrigin;
25501 };
25502 static_assert( sizeof( PipelineTessellationDomainOriginStateCreateInfoKHR ) == sizeof( VkPipelineTessellationDomainOriginStateCreateInfoKHR ), "struct and wrapper have different size!" );
25503
25504 enum class SamplerYcbcrModelConversionKHR
25505 {
25506 eRgbIdentity = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR,
25507 eYcbcrIdentity = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR,
25508 eYcbcr709 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR,
25509 eYcbcr601 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR,
25510 eYcbcr2020 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR
25511 };
25512
25513 enum class SamplerYcbcrRangeKHR
25514 {
25515 eItuFull = VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR,
25516 eItuNarrow = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR
25517 };
25518
25519 enum class ChromaLocationKHR
25520 {
25521 eCositedEven = VK_CHROMA_LOCATION_COSITED_EVEN_KHR,
25522 eMidpoint = VK_CHROMA_LOCATION_MIDPOINT_KHR
25523 };
25524
25525 struct SamplerYcbcrConversionCreateInfoKHR
25526 {
25527 SamplerYcbcrConversionCreateInfoKHR( Format format_ = Format::eUndefined, SamplerYcbcrModelConversionKHR ycbcrModel_ = SamplerYcbcrModelConversionKHR::eRgbIdentity, SamplerYcbcrRangeKHR ycbcrRange_ = SamplerYcbcrRangeKHR::eItuFull, ComponentMapping components_ = ComponentMapping(), ChromaLocationKHR xChromaOffset_ = ChromaLocationKHR::eCositedEven, ChromaLocationKHR yChromaOffset_ = ChromaLocationKHR::eCositedEven, Filter chromaFilter_ = Filter::eNearest, Bool32 forceExplicitReconstruction_ = 0 )
25528 : sType( StructureType::eSamplerYcbcrConversionCreateInfoKHR )
25529 , pNext( nullptr )
25530 , format( format_ )
25531 , ycbcrModel( ycbcrModel_ )
25532 , ycbcrRange( ycbcrRange_ )
25533 , components( components_ )
25534 , xChromaOffset( xChromaOffset_ )
25535 , yChromaOffset( yChromaOffset_ )
25536 , chromaFilter( chromaFilter_ )
25537 , forceExplicitReconstruction( forceExplicitReconstruction_ )
25538 {
25539 }
25540
25541 SamplerYcbcrConversionCreateInfoKHR( VkSamplerYcbcrConversionCreateInfoKHR const & rhs )
25542 {
25543 memcpy( this, &rhs, sizeof( SamplerYcbcrConversionCreateInfoKHR ) );
25544 }
25545
25546 SamplerYcbcrConversionCreateInfoKHR& operator=( VkSamplerYcbcrConversionCreateInfoKHR const & rhs )
25547 {
25548 memcpy( this, &rhs, sizeof( SamplerYcbcrConversionCreateInfoKHR ) );
25549 return *this;
25550 }
25551 SamplerYcbcrConversionCreateInfoKHR& setPNext( const void* pNext_ )
25552 {
25553 pNext = pNext_;
25554 return *this;
25555 }
25556
25557 SamplerYcbcrConversionCreateInfoKHR& setFormat( Format format_ )
25558 {
25559 format = format_;
25560 return *this;
25561 }
25562
25563 SamplerYcbcrConversionCreateInfoKHR& setYcbcrModel( SamplerYcbcrModelConversionKHR ycbcrModel_ )
25564 {
25565 ycbcrModel = ycbcrModel_;
25566 return *this;
25567 }
25568
25569 SamplerYcbcrConversionCreateInfoKHR& setYcbcrRange( SamplerYcbcrRangeKHR ycbcrRange_ )
25570 {
25571 ycbcrRange = ycbcrRange_;
25572 return *this;
25573 }
25574
25575 SamplerYcbcrConversionCreateInfoKHR& setComponents( ComponentMapping components_ )
25576 {
25577 components = components_;
25578 return *this;
25579 }
25580
25581 SamplerYcbcrConversionCreateInfoKHR& setXChromaOffset( ChromaLocationKHR xChromaOffset_ )
25582 {
25583 xChromaOffset = xChromaOffset_;
25584 return *this;
25585 }
25586
25587 SamplerYcbcrConversionCreateInfoKHR& setYChromaOffset( ChromaLocationKHR yChromaOffset_ )
25588 {
25589 yChromaOffset = yChromaOffset_;
25590 return *this;
25591 }
25592
25593 SamplerYcbcrConversionCreateInfoKHR& setChromaFilter( Filter chromaFilter_ )
25594 {
25595 chromaFilter = chromaFilter_;
25596 return *this;
25597 }
25598
25599 SamplerYcbcrConversionCreateInfoKHR& setForceExplicitReconstruction( Bool32 forceExplicitReconstruction_ )
25600 {
25601 forceExplicitReconstruction = forceExplicitReconstruction_;
25602 return *this;
25603 }
25604
25605 operator const VkSamplerYcbcrConversionCreateInfoKHR&() const
25606 {
25607 return *reinterpret_cast<const VkSamplerYcbcrConversionCreateInfoKHR*>(this);
25608 }
25609
25610 bool operator==( SamplerYcbcrConversionCreateInfoKHR const& rhs ) const
25611 {
25612 return ( sType == rhs.sType )
25613 && ( pNext == rhs.pNext )
25614 && ( format == rhs.format )
25615 && ( ycbcrModel == rhs.ycbcrModel )
25616 && ( ycbcrRange == rhs.ycbcrRange )
25617 && ( components == rhs.components )
25618 && ( xChromaOffset == rhs.xChromaOffset )
25619 && ( yChromaOffset == rhs.yChromaOffset )
25620 && ( chromaFilter == rhs.chromaFilter )
25621 && ( forceExplicitReconstruction == rhs.forceExplicitReconstruction );
25622 }
25623
25624 bool operator!=( SamplerYcbcrConversionCreateInfoKHR const& rhs ) const
25625 {
25626 return !operator==( rhs );
25627 }
25628
25629 private:
25630 StructureType sType;
25631
25632 public:
25633 const void* pNext;
25634 Format format;
25635 SamplerYcbcrModelConversionKHR ycbcrModel;
25636 SamplerYcbcrRangeKHR ycbcrRange;
25637 ComponentMapping components;
25638 ChromaLocationKHR xChromaOffset;
25639 ChromaLocationKHR yChromaOffset;
25640 Filter chromaFilter;
25641 Bool32 forceExplicitReconstruction;
25642 };
25643 static_assert( sizeof( SamplerYcbcrConversionCreateInfoKHR ) == sizeof( VkSamplerYcbcrConversionCreateInfoKHR ), "struct and wrapper have different size!" );
25644
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060025645 enum class BlendOverlapEXT
25646 {
25647 eUncorrelated = VK_BLEND_OVERLAP_UNCORRELATED_EXT,
25648 eDisjoint = VK_BLEND_OVERLAP_DISJOINT_EXT,
25649 eConjoint = VK_BLEND_OVERLAP_CONJOINT_EXT
25650 };
25651
25652 struct PipelineColorBlendAdvancedStateCreateInfoEXT
25653 {
25654 PipelineColorBlendAdvancedStateCreateInfoEXT( Bool32 srcPremultiplied_ = 0, Bool32 dstPremultiplied_ = 0, BlendOverlapEXT blendOverlap_ = BlendOverlapEXT::eUncorrelated )
25655 : sType( StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT )
25656 , pNext( nullptr )
25657 , srcPremultiplied( srcPremultiplied_ )
25658 , dstPremultiplied( dstPremultiplied_ )
25659 , blendOverlap( blendOverlap_ )
25660 {
25661 }
25662
25663 PipelineColorBlendAdvancedStateCreateInfoEXT( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs )
25664 {
25665 memcpy( this, &rhs, sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) );
25666 }
25667
25668 PipelineColorBlendAdvancedStateCreateInfoEXT& operator=( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs )
25669 {
25670 memcpy( this, &rhs, sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) );
25671 return *this;
25672 }
25673 PipelineColorBlendAdvancedStateCreateInfoEXT& setPNext( const void* pNext_ )
25674 {
25675 pNext = pNext_;
25676 return *this;
25677 }
25678
25679 PipelineColorBlendAdvancedStateCreateInfoEXT& setSrcPremultiplied( Bool32 srcPremultiplied_ )
25680 {
25681 srcPremultiplied = srcPremultiplied_;
25682 return *this;
25683 }
25684
25685 PipelineColorBlendAdvancedStateCreateInfoEXT& setDstPremultiplied( Bool32 dstPremultiplied_ )
25686 {
25687 dstPremultiplied = dstPremultiplied_;
25688 return *this;
25689 }
25690
25691 PipelineColorBlendAdvancedStateCreateInfoEXT& setBlendOverlap( BlendOverlapEXT blendOverlap_ )
25692 {
25693 blendOverlap = blendOverlap_;
25694 return *this;
25695 }
25696
25697 operator const VkPipelineColorBlendAdvancedStateCreateInfoEXT&() const
25698 {
25699 return *reinterpret_cast<const VkPipelineColorBlendAdvancedStateCreateInfoEXT*>(this);
25700 }
25701
25702 bool operator==( PipelineColorBlendAdvancedStateCreateInfoEXT const& rhs ) const
25703 {
25704 return ( sType == rhs.sType )
25705 && ( pNext == rhs.pNext )
25706 && ( srcPremultiplied == rhs.srcPremultiplied )
25707 && ( dstPremultiplied == rhs.dstPremultiplied )
25708 && ( blendOverlap == rhs.blendOverlap );
25709 }
25710
25711 bool operator!=( PipelineColorBlendAdvancedStateCreateInfoEXT const& rhs ) const
25712 {
25713 return !operator==( rhs );
25714 }
25715
25716 private:
25717 StructureType sType;
25718
25719 public:
25720 const void* pNext;
25721 Bool32 srcPremultiplied;
25722 Bool32 dstPremultiplied;
25723 BlendOverlapEXT blendOverlap;
25724 };
25725 static_assert( sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) == sizeof( VkPipelineColorBlendAdvancedStateCreateInfoEXT ), "struct and wrapper have different size!" );
25726
25727 enum class CoverageModulationModeNV
25728 {
25729 eNone = VK_COVERAGE_MODULATION_MODE_NONE_NV,
25730 eRgb = VK_COVERAGE_MODULATION_MODE_RGB_NV,
25731 eAlpha = VK_COVERAGE_MODULATION_MODE_ALPHA_NV,
25732 eRgba = VK_COVERAGE_MODULATION_MODE_RGBA_NV
25733 };
25734
25735 struct PipelineCoverageModulationStateCreateInfoNV
25736 {
25737 PipelineCoverageModulationStateCreateInfoNV( PipelineCoverageModulationStateCreateFlagsNV flags_ = PipelineCoverageModulationStateCreateFlagsNV(), CoverageModulationModeNV coverageModulationMode_ = CoverageModulationModeNV::eNone, Bool32 coverageModulationTableEnable_ = 0, uint32_t coverageModulationTableCount_ = 0, const float* pCoverageModulationTable_ = nullptr )
25738 : sType( StructureType::ePipelineCoverageModulationStateCreateInfoNV )
25739 , pNext( nullptr )
25740 , flags( flags_ )
25741 , coverageModulationMode( coverageModulationMode_ )
25742 , coverageModulationTableEnable( coverageModulationTableEnable_ )
25743 , coverageModulationTableCount( coverageModulationTableCount_ )
25744 , pCoverageModulationTable( pCoverageModulationTable_ )
25745 {
25746 }
25747
25748 PipelineCoverageModulationStateCreateInfoNV( VkPipelineCoverageModulationStateCreateInfoNV const & rhs )
25749 {
25750 memcpy( this, &rhs, sizeof( PipelineCoverageModulationStateCreateInfoNV ) );
25751 }
25752
25753 PipelineCoverageModulationStateCreateInfoNV& operator=( VkPipelineCoverageModulationStateCreateInfoNV const & rhs )
25754 {
25755 memcpy( this, &rhs, sizeof( PipelineCoverageModulationStateCreateInfoNV ) );
25756 return *this;
25757 }
25758 PipelineCoverageModulationStateCreateInfoNV& setPNext( const void* pNext_ )
25759 {
25760 pNext = pNext_;
25761 return *this;
25762 }
25763
25764 PipelineCoverageModulationStateCreateInfoNV& setFlags( PipelineCoverageModulationStateCreateFlagsNV flags_ )
25765 {
25766 flags = flags_;
25767 return *this;
25768 }
25769
25770 PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationMode( CoverageModulationModeNV coverageModulationMode_ )
25771 {
25772 coverageModulationMode = coverageModulationMode_;
25773 return *this;
25774 }
25775
25776 PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationTableEnable( Bool32 coverageModulationTableEnable_ )
25777 {
25778 coverageModulationTableEnable = coverageModulationTableEnable_;
25779 return *this;
25780 }
25781
25782 PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationTableCount( uint32_t coverageModulationTableCount_ )
25783 {
25784 coverageModulationTableCount = coverageModulationTableCount_;
25785 return *this;
25786 }
25787
25788 PipelineCoverageModulationStateCreateInfoNV& setPCoverageModulationTable( const float* pCoverageModulationTable_ )
25789 {
25790 pCoverageModulationTable = pCoverageModulationTable_;
25791 return *this;
25792 }
25793
25794 operator const VkPipelineCoverageModulationStateCreateInfoNV&() const
25795 {
25796 return *reinterpret_cast<const VkPipelineCoverageModulationStateCreateInfoNV*>(this);
25797 }
25798
25799 bool operator==( PipelineCoverageModulationStateCreateInfoNV const& rhs ) const
25800 {
25801 return ( sType == rhs.sType )
25802 && ( pNext == rhs.pNext )
25803 && ( flags == rhs.flags )
25804 && ( coverageModulationMode == rhs.coverageModulationMode )
25805 && ( coverageModulationTableEnable == rhs.coverageModulationTableEnable )
25806 && ( coverageModulationTableCount == rhs.coverageModulationTableCount )
25807 && ( pCoverageModulationTable == rhs.pCoverageModulationTable );
25808 }
25809
25810 bool operator!=( PipelineCoverageModulationStateCreateInfoNV const& rhs ) const
25811 {
25812 return !operator==( rhs );
25813 }
25814
25815 private:
25816 StructureType sType;
25817
25818 public:
25819 const void* pNext;
25820 PipelineCoverageModulationStateCreateFlagsNV flags;
25821 CoverageModulationModeNV coverageModulationMode;
25822 Bool32 coverageModulationTableEnable;
25823 uint32_t coverageModulationTableCount;
25824 const float* pCoverageModulationTable;
25825 };
25826 static_assert( sizeof( PipelineCoverageModulationStateCreateInfoNV ) == sizeof( VkPipelineCoverageModulationStateCreateInfoNV ), "struct and wrapper have different size!" );
25827
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060025828 enum class ValidationCacheHeaderVersionEXT
25829 {
25830 eOne = VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT
25831 };
25832
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060025833 enum class ShaderInfoTypeAMD
25834 {
25835 eStatistics = VK_SHADER_INFO_TYPE_STATISTICS_AMD,
25836 eBinary = VK_SHADER_INFO_TYPE_BINARY_AMD,
25837 eDisassembly = VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD
25838 };
25839
25840 enum class QueueGlobalPriorityEXT
25841 {
Mark Lobodzinski417d5702017-11-27 12:00:45 -070025842 eLow = VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT,
25843 eMedium = VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT,
25844 eHigh = VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT,
25845 eRealtime = VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060025846 };
25847
25848 struct DeviceQueueGlobalPriorityCreateInfoEXT
25849 {
25850 DeviceQueueGlobalPriorityCreateInfoEXT( QueueGlobalPriorityEXT globalPriority_ = QueueGlobalPriorityEXT::eLow )
25851 : sType( StructureType::eDeviceQueueGlobalPriorityCreateInfoEXT )
25852 , pNext( nullptr )
25853 , globalPriority( globalPriority_ )
25854 {
25855 }
25856
25857 DeviceQueueGlobalPriorityCreateInfoEXT( VkDeviceQueueGlobalPriorityCreateInfoEXT const & rhs )
25858 {
25859 memcpy( this, &rhs, sizeof( DeviceQueueGlobalPriorityCreateInfoEXT ) );
25860 }
25861
25862 DeviceQueueGlobalPriorityCreateInfoEXT& operator=( VkDeviceQueueGlobalPriorityCreateInfoEXT const & rhs )
25863 {
25864 memcpy( this, &rhs, sizeof( DeviceQueueGlobalPriorityCreateInfoEXT ) );
25865 return *this;
25866 }
25867 DeviceQueueGlobalPriorityCreateInfoEXT& setPNext( const void* pNext_ )
25868 {
25869 pNext = pNext_;
25870 return *this;
25871 }
25872
25873 DeviceQueueGlobalPriorityCreateInfoEXT& setGlobalPriority( QueueGlobalPriorityEXT globalPriority_ )
25874 {
25875 globalPriority = globalPriority_;
25876 return *this;
25877 }
25878
25879 operator const VkDeviceQueueGlobalPriorityCreateInfoEXT&() const
25880 {
25881 return *reinterpret_cast<const VkDeviceQueueGlobalPriorityCreateInfoEXT*>(this);
25882 }
25883
25884 bool operator==( DeviceQueueGlobalPriorityCreateInfoEXT const& rhs ) const
25885 {
25886 return ( sType == rhs.sType )
25887 && ( pNext == rhs.pNext )
25888 && ( globalPriority == rhs.globalPriority );
25889 }
25890
25891 bool operator!=( DeviceQueueGlobalPriorityCreateInfoEXT const& rhs ) const
25892 {
25893 return !operator==( rhs );
25894 }
25895
25896 private:
25897 StructureType sType;
25898
25899 public:
25900 const void* pNext;
25901 QueueGlobalPriorityEXT globalPriority;
25902 };
25903 static_assert( sizeof( DeviceQueueGlobalPriorityCreateInfoEXT ) == sizeof( VkDeviceQueueGlobalPriorityCreateInfoEXT ), "struct and wrapper have different size!" );
25904
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025905 Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025906#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025907 template <typename Allocator = std::allocator<LayerProperties>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060025908 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties();
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025909#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25910
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025911 VULKAN_HPP_INLINE Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties )
25912 {
25913 return static_cast<Result>( vkEnumerateInstanceLayerProperties( pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
25914 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025915#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025916 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060025917 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties()
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025918 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060025919 std::vector<LayerProperties,Allocator> properties;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025920 uint32_t propertyCount;
25921 Result result;
25922 do
25923 {
25924 result = static_cast<Result>( vkEnumerateInstanceLayerProperties( &propertyCount, nullptr ) );
25925 if ( ( result == Result::eSuccess ) && propertyCount )
25926 {
25927 properties.resize( propertyCount );
25928 result = static_cast<Result>( vkEnumerateInstanceLayerProperties( &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
25929 }
25930 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025931 assert( propertyCount <= properties.size() );
25932 properties.resize( propertyCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060025933 return createResultValue( result, properties, "VULKAN_HPP_NAMESPACE::enumerateInstanceLayerProperties" );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025934 }
25935#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25936
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025937
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025938 Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025939#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025940 template <typename Allocator = std::allocator<ExtensionProperties>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060025941 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName = nullptr );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025942#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25943
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025944 VULKAN_HPP_INLINE Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties )
25945 {
25946 return static_cast<Result>( vkEnumerateInstanceExtensionProperties( pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
25947 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025948#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025949 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060025950 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025951 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060025952 std::vector<ExtensionProperties,Allocator> properties;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025953 uint32_t propertyCount;
25954 Result result;
25955 do
25956 {
25957 result = static_cast<Result>( vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
25958 if ( ( result == Result::eSuccess ) && propertyCount )
25959 {
25960 properties.resize( propertyCount );
25961 result = static_cast<Result>( vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
25962 }
25963 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025964 assert( propertyCount <= properties.size() );
25965 properties.resize( propertyCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060025966 return createResultValue( result, properties, "VULKAN_HPP_NAMESPACE::enumerateInstanceExtensionProperties" );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025967 }
25968#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25969
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025970
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025971 // forward declarations
25972 struct CmdProcessCommandsInfoNVX;
25973
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025974 class CommandBuffer
25975 {
25976 public:
25977 CommandBuffer()
25978 : m_commandBuffer(VK_NULL_HANDLE)
25979 {}
25980
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070025981 CommandBuffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025982 : m_commandBuffer(VK_NULL_HANDLE)
25983 {}
25984
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025985 VULKAN_HPP_TYPESAFE_EXPLICIT CommandBuffer( VkCommandBuffer commandBuffer )
25986 : m_commandBuffer( commandBuffer )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025987 {}
25988
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070025989#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025990 CommandBuffer & operator=(VkCommandBuffer commandBuffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025991 {
25992 m_commandBuffer = commandBuffer;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025993 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025994 }
25995#endif
25996
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025997 CommandBuffer & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025998 {
25999 m_commandBuffer = VK_NULL_HANDLE;
26000 return *this;
26001 }
26002
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026003 bool operator==( CommandBuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026004 {
26005 return m_commandBuffer == rhs.m_commandBuffer;
26006 }
26007
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026008 bool operator!=(CommandBuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026009 {
26010 return m_commandBuffer != rhs.m_commandBuffer;
26011 }
26012
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026013 bool operator<(CommandBuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026014 {
26015 return m_commandBuffer < rhs.m_commandBuffer;
26016 }
26017
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026018 Result begin( const CommandBufferBeginInfo* pBeginInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026019#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026020 ResultValueType<void>::type begin( const CommandBufferBeginInfo & beginInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026021#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26022
26023#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026024 Result end() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026025#else
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026026 ResultValueType<void>::type end() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026027#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26028
26029#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026030 Result reset( CommandBufferResetFlags flags ) const;
26031#else
26032 ResultValueType<void>::type reset( CommandBufferResetFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026033#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26034
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026035 void bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026036
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026037 void setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026038#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026039 void setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026040#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26041
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026042 void setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026043#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026044 void setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026045#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26046
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026047 void setLineWidth( float lineWidth ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026048
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026049 void setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const;
26050
26051 void setBlendConstants( const float blendConstants[4] ) const;
26052
26053 void setDepthBounds( float minDepthBounds, float maxDepthBounds ) const;
26054
26055 void setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const;
26056
26057 void setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const;
26058
26059 void setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const;
26060
26061 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 -060026062#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026063 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 -060026064#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26065
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026066 void bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026067
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026068 void bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026069#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026070 void bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026071#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26072
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026073 void draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026074
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026075 void drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const;
26076
26077 void drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const;
26078
26079 void drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const;
26080
Mark Young0f183a82017-02-28 09:58:04 -070026081 void dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026082
26083 void dispatchIndirect( Buffer buffer, DeviceSize offset ) const;
26084
26085 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026086#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026087 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026088#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26089
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026090 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026091#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026092 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026093#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26094
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026095 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 -060026096#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026097 void blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026098#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26099
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026100 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026101#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026102 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026103#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26104
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026105 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026106#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026107 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026108#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26109
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026110 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026111#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26112 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026113 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026114#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26115
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026116 void fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026117
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026118 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026119#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026120 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026121#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26122
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026123 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026124#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026125 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026126#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26127
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026128 void clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026129#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026130 void clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026131#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26132
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026133 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026134#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026135 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026136#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26137
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026138 void setEvent( Event event, PipelineStageFlags stageMask ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026139
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026140 void resetEvent( Event event, PipelineStageFlags stageMask ) const;
26141
26142 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 -060026143#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026144 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 -060026145#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26146
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026147 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 -060026148#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026149 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 -060026150#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26151
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026152 void beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026153
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026154 void endQuery( QueryPool queryPool, uint32_t query ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026155
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026156 void resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026157
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026158 void writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026159
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026160 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 -060026161
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026162 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026163#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26164 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026165 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026166#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26167
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026168 void beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026169#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026170 void beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026171#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26172
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026173 void nextSubpass( SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026174
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026175 void endRenderPass() const;
26176
26177 void executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026178#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026179 void executeCommands( ArrayProxy<const CommandBuffer> commandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026180#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26181
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026182 void debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026183#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026184 void debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026185#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26186
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026187 void debugMarkerEndEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026188
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026189 void debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026190#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026191 void debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026192#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26193
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026194 void drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026195
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026196 void drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const;
26197
26198 void processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026199#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026200 void processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026201#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26202
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026203 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026204#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026205 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070026206#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26207
Mark Young0f183a82017-02-28 09:58:04 -070026208 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites ) const;
26209#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26210 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites ) const;
26211#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26212
26213 void setDeviceMaskKHX( uint32_t deviceMask ) const;
26214
26215 void dispatchBaseKHX( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const;
26216
26217 void pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData ) const;
26218
26219 void setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings ) const;
26220#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26221 void setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings ) const;
26222#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26223
26224 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles ) const;
26225#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26226 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles ) const;
26227#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26228
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060026229 void setSampleLocationsEXT( const SampleLocationsInfoEXT* pSampleLocationsInfo ) const;
26230#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26231 void setSampleLocationsEXT( const SampleLocationsInfoEXT & sampleLocationsInfo ) const;
26232#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26233
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026234
26235
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026236 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandBuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026237 {
26238 return m_commandBuffer;
26239 }
26240
26241 explicit operator bool() const
26242 {
26243 return m_commandBuffer != VK_NULL_HANDLE;
26244 }
26245
26246 bool operator!() const
26247 {
26248 return m_commandBuffer == VK_NULL_HANDLE;
26249 }
26250
26251 private:
26252 VkCommandBuffer m_commandBuffer;
26253 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026254
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026255 static_assert( sizeof( CommandBuffer ) == sizeof( VkCommandBuffer ), "handle and wrapper have different size!" );
26256
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026257 VULKAN_HPP_INLINE Result CommandBuffer::begin( const CommandBufferBeginInfo* pBeginInfo ) const
26258 {
26259 return static_cast<Result>( vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( pBeginInfo ) ) );
26260 }
26261#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26262 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::begin( const CommandBufferBeginInfo & beginInfo ) const
26263 {
26264 Result result = static_cast<Result>( vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( &beginInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060026265 return createResultValue( result, "VULKAN_HPP_NAMESPACE::CommandBuffer::begin" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026266 }
26267#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26268
26269#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26270 VULKAN_HPP_INLINE Result CommandBuffer::end() const
26271 {
26272 return static_cast<Result>( vkEndCommandBuffer( m_commandBuffer ) );
26273 }
26274#else
26275 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::end() const
26276 {
26277 Result result = static_cast<Result>( vkEndCommandBuffer( m_commandBuffer ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060026278 return createResultValue( result, "VULKAN_HPP_NAMESPACE::CommandBuffer::end" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026279 }
26280#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26281
26282#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26283 VULKAN_HPP_INLINE Result CommandBuffer::reset( CommandBufferResetFlags flags ) const
26284 {
26285 return static_cast<Result>( vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
26286 }
26287#else
26288 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::reset( CommandBufferResetFlags flags ) const
26289 {
26290 Result result = static_cast<Result>( vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060026291 return createResultValue( result, "VULKAN_HPP_NAMESPACE::CommandBuffer::reset" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026292 }
26293#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26294
26295 VULKAN_HPP_INLINE void CommandBuffer::bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline ) const
26296 {
26297 vkCmdBindPipeline( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipeline>( pipeline ) );
26298 }
26299
26300 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports ) const
26301 {
26302 vkCmdSetViewport( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewport*>( pViewports ) );
26303 }
26304#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26305 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports ) const
26306 {
26307 vkCmdSetViewport( m_commandBuffer, firstViewport, viewports.size() , reinterpret_cast<const VkViewport*>( viewports.data() ) );
26308 }
26309#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26310
26311 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors ) const
26312 {
26313 vkCmdSetScissor( m_commandBuffer, firstScissor, scissorCount, reinterpret_cast<const VkRect2D*>( pScissors ) );
26314 }
26315#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26316 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors ) const
26317 {
26318 vkCmdSetScissor( m_commandBuffer, firstScissor, scissors.size() , reinterpret_cast<const VkRect2D*>( scissors.data() ) );
26319 }
26320#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26321
26322 VULKAN_HPP_INLINE void CommandBuffer::setLineWidth( float lineWidth ) const
26323 {
26324 vkCmdSetLineWidth( m_commandBuffer, lineWidth );
26325 }
26326
26327 VULKAN_HPP_INLINE void CommandBuffer::setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const
26328 {
26329 vkCmdSetDepthBias( m_commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor );
26330 }
26331
26332 VULKAN_HPP_INLINE void CommandBuffer::setBlendConstants( const float blendConstants[4] ) const
26333 {
26334 vkCmdSetBlendConstants( m_commandBuffer, blendConstants );
26335 }
26336
26337 VULKAN_HPP_INLINE void CommandBuffer::setDepthBounds( float minDepthBounds, float maxDepthBounds ) const
26338 {
26339 vkCmdSetDepthBounds( m_commandBuffer, minDepthBounds, maxDepthBounds );
26340 }
26341
26342 VULKAN_HPP_INLINE void CommandBuffer::setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const
26343 {
26344 vkCmdSetStencilCompareMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), compareMask );
26345 }
26346
26347 VULKAN_HPP_INLINE void CommandBuffer::setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const
26348 {
26349 vkCmdSetStencilWriteMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), writeMask );
26350 }
26351
26352 VULKAN_HPP_INLINE void CommandBuffer::setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const
26353 {
26354 vkCmdSetStencilReference( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), reference );
26355 }
26356
26357 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
26358 {
26359 vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ), dynamicOffsetCount, pDynamicOffsets );
26360 }
26361#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26362 VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t firstSet, ArrayProxy<const DescriptorSet> descriptorSets, ArrayProxy<const uint32_t> dynamicOffsets ) const
26363 {
26364 vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ), dynamicOffsets.size() , dynamicOffsets.data() );
26365 }
26366#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26367
26368 VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType ) const
26369 {
26370 vkCmdBindIndexBuffer( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkIndexType>( indexType ) );
26371 }
26372
26373 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets ) const
26374 {
26375 vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, bindingCount, reinterpret_cast<const VkBuffer*>( pBuffers ), pOffsets );
26376 }
26377#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26378 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets ) const
26379 {
26380#ifdef VULKAN_HPP_NO_EXCEPTIONS
26381 assert( buffers.size() == offsets.size() );
26382#else
26383 if ( buffers.size() != offsets.size() )
26384 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060026385 throw LogicError( "VULKAN_HPP_NAMESPACE::CommandBuffer::bindVertexBuffers: buffers.size() != offsets.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026386 }
26387#endif // VULKAN_HPP_NO_EXCEPTIONS
26388 vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, buffers.size() , reinterpret_cast<const VkBuffer*>( buffers.data() ), offsets.data() );
26389 }
26390#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26391
26392 VULKAN_HPP_INLINE void CommandBuffer::draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const
26393 {
26394 vkCmdDraw( m_commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance );
26395 }
26396
26397 VULKAN_HPP_INLINE void CommandBuffer::drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const
26398 {
26399 vkCmdDrawIndexed( m_commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance );
26400 }
26401
26402 VULKAN_HPP_INLINE void CommandBuffer::drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const
26403 {
26404 vkCmdDrawIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
26405 }
26406
26407 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const
26408 {
26409 vkCmdDrawIndexedIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
26410 }
26411
Mark Young0f183a82017-02-28 09:58:04 -070026412 VULKAN_HPP_INLINE void CommandBuffer::dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026413 {
Mark Young0f183a82017-02-28 09:58:04 -070026414 vkCmdDispatch( m_commandBuffer, groupCountX, groupCountY, groupCountZ );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026415 }
26416
26417 VULKAN_HPP_INLINE void CommandBuffer::dispatchIndirect( Buffer buffer, DeviceSize offset ) const
26418 {
26419 vkCmdDispatchIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset );
26420 }
26421
26422 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions ) const
26423 {
26424 vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferCopy*>( pRegions ) );
26425 }
26426#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26427 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions ) const
26428 {
26429 vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferCopy*>( regions.data() ) );
26430 }
26431#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26432
26433 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions ) const
26434 {
26435 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 ) );
26436 }
26437#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26438 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions ) const
26439 {
26440 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() ) );
26441 }
26442#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26443
26444 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageBlit* pRegions, Filter filter ) const
26445 {
26446 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 ) );
26447 }
26448#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26449 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter ) const
26450 {
26451 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 ) );
26452 }
26453#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26454
26455 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions ) const
26456 {
26457 vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
26458 }
26459#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26460 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions ) const
26461 {
26462 vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
26463 }
26464#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26465
26466 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions ) const
26467 {
26468 vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
26469 }
26470#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26471 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions ) const
26472 {
26473 vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
26474 }
26475#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26476
26477 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData ) const
26478 {
26479 vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, dataSize, pData );
26480 }
26481#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26482 template <typename T>
26483 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data ) const
26484 {
26485 vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, data.size() * sizeof( T ) , reinterpret_cast<const void*>( data.data() ) );
26486 }
26487#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26488
26489 VULKAN_HPP_INLINE void CommandBuffer::fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const
26490 {
26491 vkCmdFillBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, size, data );
26492 }
26493
26494 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const
26495 {
26496 vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( pColor ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
26497 }
26498#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26499 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges ) const
26500 {
26501 vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( &color ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
26502 }
26503#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26504
26505 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const
26506 {
26507 vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( pDepthStencil ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
26508 }
26509#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26510 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges ) const
26511 {
26512 vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( &depthStencil ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
26513 }
26514#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26515
26516 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects ) const
26517 {
26518 vkCmdClearAttachments( m_commandBuffer, attachmentCount, reinterpret_cast<const VkClearAttachment*>( pAttachments ), rectCount, reinterpret_cast<const VkClearRect*>( pRects ) );
26519 }
26520#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26521 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects ) const
26522 {
26523 vkCmdClearAttachments( m_commandBuffer, attachments.size() , reinterpret_cast<const VkClearAttachment*>( attachments.data() ), rects.size() , reinterpret_cast<const VkClearRect*>( rects.data() ) );
26524 }
26525#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26526
26527 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions ) const
26528 {
26529 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 ) );
26530 }
26531#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26532 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions ) const
26533 {
26534 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() ) );
26535 }
26536#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26537
26538 VULKAN_HPP_INLINE void CommandBuffer::setEvent( Event event, PipelineStageFlags stageMask ) const
26539 {
26540 vkCmdSetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
26541 }
26542
26543 VULKAN_HPP_INLINE void CommandBuffer::resetEvent( Event event, PipelineStageFlags stageMask ) const
26544 {
26545 vkCmdResetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
26546 }
26547
26548 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
26549 {
26550 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 ) );
26551 }
26552#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26553 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
26554 {
26555 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() ) );
26556 }
26557#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26558
26559 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
26560 {
26561 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 ) );
26562 }
26563#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26564 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
26565 {
26566 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() ) );
26567 }
26568#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26569
26570 VULKAN_HPP_INLINE void CommandBuffer::beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const
26571 {
26572 vkCmdBeginQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query, static_cast<VkQueryControlFlags>( flags ) );
26573 }
26574
26575 VULKAN_HPP_INLINE void CommandBuffer::endQuery( QueryPool queryPool, uint32_t query ) const
26576 {
26577 vkCmdEndQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query );
26578 }
26579
26580 VULKAN_HPP_INLINE void CommandBuffer::resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const
26581 {
26582 vkCmdResetQueryPool( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount );
26583 }
26584
26585 VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query ) const
26586 {
26587 vkCmdWriteTimestamp( m_commandBuffer, static_cast<VkPipelineStageFlagBits>( pipelineStage ), static_cast<VkQueryPool>( queryPool ), query );
26588 }
26589
26590 VULKAN_HPP_INLINE void CommandBuffer::copyQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Buffer dstBuffer, DeviceSize dstOffset, DeviceSize stride, QueryResultFlags flags ) const
26591 {
26592 vkCmdCopyQueryPoolResults( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, static_cast<VkBuffer>( dstBuffer ), dstOffset, stride, static_cast<VkQueryResultFlags>( flags ) );
26593 }
26594
26595 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const
26596 {
26597 vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, size, pValues );
26598 }
26599#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26600 template <typename T>
26601 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values ) const
26602 {
26603 vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, values.size() * sizeof( T ) , reinterpret_cast<const void*>( values.data() ) );
26604 }
26605#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26606
26607 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents ) const
26608 {
26609 vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( pRenderPassBegin ), static_cast<VkSubpassContents>( contents ) );
26610 }
26611#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26612 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const
26613 {
26614 vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( &renderPassBegin ), static_cast<VkSubpassContents>( contents ) );
26615 }
26616#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26617
26618 VULKAN_HPP_INLINE void CommandBuffer::nextSubpass( SubpassContents contents ) const
26619 {
26620 vkCmdNextSubpass( m_commandBuffer, static_cast<VkSubpassContents>( contents ) );
26621 }
26622
26623 VULKAN_HPP_INLINE void CommandBuffer::endRenderPass() const
26624 {
26625 vkCmdEndRenderPass( m_commandBuffer );
26626 }
26627
26628 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const
26629 {
26630 vkCmdExecuteCommands( m_commandBuffer, commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
26631 }
26632#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26633 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( ArrayProxy<const CommandBuffer> commandBuffers ) const
26634 {
26635 vkCmdExecuteCommands( m_commandBuffer, commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
26636 }
26637#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26638
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026639 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026640 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026641 vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026642 }
26643#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026644 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026645 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026646 vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026647 }
26648#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26649
26650 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerEndEXT() const
26651 {
26652 vkCmdDebugMarkerEndEXT( m_commandBuffer );
26653 }
26654
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026655 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026656 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026657 vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026658 }
26659#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026660 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026661 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026662 vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026663 }
26664#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26665
26666 VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
26667 {
26668 vkCmdDrawIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
26669 }
26670
26671 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
26672 {
26673 vkCmdDrawIndexedIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
26674 }
26675
26676 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const
26677 {
26678 vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( pProcessCommandsInfo ) );
26679 }
26680#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26681 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo ) const
26682 {
26683 vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( &processCommandsInfo ) );
26684 }
26685#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26686
26687 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const
26688 {
26689 vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( pReserveSpaceInfo ) );
26690 }
26691#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26692 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo ) const
26693 {
26694 vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( &reserveSpaceInfo ) );
26695 }
26696#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070026697
26698 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites ) const
26699 {
26700 vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ) );
26701 }
26702#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26703 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites ) const
26704 {
26705 vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ) );
26706 }
26707#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26708
26709 VULKAN_HPP_INLINE void CommandBuffer::setDeviceMaskKHX( uint32_t deviceMask ) const
26710 {
26711 vkCmdSetDeviceMaskKHX( m_commandBuffer, deviceMask );
26712 }
26713
26714 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
26715 {
26716 vkCmdDispatchBaseKHX( m_commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ );
26717 }
26718
26719 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData ) const
26720 {
26721 vkCmdPushDescriptorSetWithTemplateKHR( m_commandBuffer, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), static_cast<VkPipelineLayout>( layout ), set, pData );
26722 }
26723
26724 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings ) const
26725 {
26726 vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewportWScalingNV*>( pViewportWScalings ) );
26727 }
26728#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26729 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings ) const
26730 {
26731 vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportWScalings.size() , reinterpret_cast<const VkViewportWScalingNV*>( viewportWScalings.data() ) );
26732 }
26733#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26734
26735 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles ) const
26736 {
26737 vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangleCount, reinterpret_cast<const VkRect2D*>( pDiscardRectangles ) );
26738 }
26739#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26740 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles ) const
26741 {
26742 vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangles.size() , reinterpret_cast<const VkRect2D*>( discardRectangles.data() ) );
26743 }
26744#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026745
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060026746 VULKAN_HPP_INLINE void CommandBuffer::setSampleLocationsEXT( const SampleLocationsInfoEXT* pSampleLocationsInfo ) const
26747 {
26748 vkCmdSetSampleLocationsEXT( m_commandBuffer, reinterpret_cast<const VkSampleLocationsInfoEXT*>( pSampleLocationsInfo ) );
26749 }
26750#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26751 VULKAN_HPP_INLINE void CommandBuffer::setSampleLocationsEXT( const SampleLocationsInfoEXT & sampleLocationsInfo ) const
26752 {
26753 vkCmdSetSampleLocationsEXT( m_commandBuffer, reinterpret_cast<const VkSampleLocationsInfoEXT*>( &sampleLocationsInfo ) );
26754 }
26755#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26756
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026757 struct SubmitInfo
26758 {
26759 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 )
26760 : sType( StructureType::eSubmitInfo )
26761 , pNext( nullptr )
26762 , waitSemaphoreCount( waitSemaphoreCount_ )
26763 , pWaitSemaphores( pWaitSemaphores_ )
26764 , pWaitDstStageMask( pWaitDstStageMask_ )
26765 , commandBufferCount( commandBufferCount_ )
26766 , pCommandBuffers( pCommandBuffers_ )
26767 , signalSemaphoreCount( signalSemaphoreCount_ )
26768 , pSignalSemaphores( pSignalSemaphores_ )
26769 {
26770 }
26771
26772 SubmitInfo( VkSubmitInfo const & rhs )
26773 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026774 memcpy( this, &rhs, sizeof( SubmitInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026775 }
26776
26777 SubmitInfo& operator=( VkSubmitInfo const & rhs )
26778 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026779 memcpy( this, &rhs, sizeof( SubmitInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026780 return *this;
26781 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026782 SubmitInfo& setPNext( const void* pNext_ )
26783 {
26784 pNext = pNext_;
26785 return *this;
26786 }
26787
26788 SubmitInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
26789 {
26790 waitSemaphoreCount = waitSemaphoreCount_;
26791 return *this;
26792 }
26793
26794 SubmitInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
26795 {
26796 pWaitSemaphores = pWaitSemaphores_;
26797 return *this;
26798 }
26799
26800 SubmitInfo& setPWaitDstStageMask( const PipelineStageFlags* pWaitDstStageMask_ )
26801 {
26802 pWaitDstStageMask = pWaitDstStageMask_;
26803 return *this;
26804 }
26805
26806 SubmitInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
26807 {
26808 commandBufferCount = commandBufferCount_;
26809 return *this;
26810 }
26811
26812 SubmitInfo& setPCommandBuffers( const CommandBuffer* pCommandBuffers_ )
26813 {
26814 pCommandBuffers = pCommandBuffers_;
26815 return *this;
26816 }
26817
26818 SubmitInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
26819 {
26820 signalSemaphoreCount = signalSemaphoreCount_;
26821 return *this;
26822 }
26823
26824 SubmitInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
26825 {
26826 pSignalSemaphores = pSignalSemaphores_;
26827 return *this;
26828 }
26829
26830 operator const VkSubmitInfo&() const
26831 {
26832 return *reinterpret_cast<const VkSubmitInfo*>(this);
26833 }
26834
26835 bool operator==( SubmitInfo const& rhs ) const
26836 {
26837 return ( sType == rhs.sType )
26838 && ( pNext == rhs.pNext )
26839 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
26840 && ( pWaitSemaphores == rhs.pWaitSemaphores )
26841 && ( pWaitDstStageMask == rhs.pWaitDstStageMask )
26842 && ( commandBufferCount == rhs.commandBufferCount )
26843 && ( pCommandBuffers == rhs.pCommandBuffers )
26844 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
26845 && ( pSignalSemaphores == rhs.pSignalSemaphores );
26846 }
26847
26848 bool operator!=( SubmitInfo const& rhs ) const
26849 {
26850 return !operator==( rhs );
26851 }
26852
26853 private:
26854 StructureType sType;
26855
26856 public:
26857 const void* pNext;
26858 uint32_t waitSemaphoreCount;
26859 const Semaphore* pWaitSemaphores;
26860 const PipelineStageFlags* pWaitDstStageMask;
26861 uint32_t commandBufferCount;
26862 const CommandBuffer* pCommandBuffers;
26863 uint32_t signalSemaphoreCount;
26864 const Semaphore* pSignalSemaphores;
26865 };
26866 static_assert( sizeof( SubmitInfo ) == sizeof( VkSubmitInfo ), "struct and wrapper have different size!" );
26867
26868 class Queue
26869 {
26870 public:
26871 Queue()
26872 : m_queue(VK_NULL_HANDLE)
26873 {}
26874
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070026875 Queue( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026876 : m_queue(VK_NULL_HANDLE)
26877 {}
26878
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026879 VULKAN_HPP_TYPESAFE_EXPLICIT Queue( VkQueue queue )
26880 : m_queue( queue )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026881 {}
26882
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026883#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026884 Queue & operator=(VkQueue queue)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026885 {
26886 m_queue = queue;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026887 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026888 }
26889#endif
26890
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026891 Queue & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026892 {
26893 m_queue = VK_NULL_HANDLE;
26894 return *this;
26895 }
26896
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026897 bool operator==( Queue const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026898 {
26899 return m_queue == rhs.m_queue;
26900 }
26901
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026902 bool operator!=(Queue const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026903 {
26904 return m_queue != rhs.m_queue;
26905 }
26906
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026907 bool operator<(Queue const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026908 {
26909 return m_queue < rhs.m_queue;
26910 }
26911
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026912 Result submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026913#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026914 ResultValueType<void>::type submit( ArrayProxy<const SubmitInfo> submits, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026915#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26916
26917#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026918 Result waitIdle() const;
26919#else
26920 ResultValueType<void>::type waitIdle() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026921#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26922
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026923 Result bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026924#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026925 ResultValueType<void>::type bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026926#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26927
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026928 Result presentKHR( const PresentInfoKHR* pPresentInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026929#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026930 Result presentKHR( const PresentInfoKHR & presentInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026931#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26932
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026933
26934
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026935 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueue() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026936 {
26937 return m_queue;
26938 }
26939
26940 explicit operator bool() const
26941 {
26942 return m_queue != VK_NULL_HANDLE;
26943 }
26944
26945 bool operator!() const
26946 {
26947 return m_queue == VK_NULL_HANDLE;
26948 }
26949
26950 private:
26951 VkQueue m_queue;
26952 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026953
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026954 static_assert( sizeof( Queue ) == sizeof( VkQueue ), "handle and wrapper have different size!" );
26955
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026956 VULKAN_HPP_INLINE Result Queue::submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence ) const
26957 {
26958 return static_cast<Result>( vkQueueSubmit( m_queue, submitCount, reinterpret_cast<const VkSubmitInfo*>( pSubmits ), static_cast<VkFence>( fence ) ) );
26959 }
26960#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26961 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::submit( ArrayProxy<const SubmitInfo> submits, Fence fence ) const
26962 {
26963 Result result = static_cast<Result>( vkQueueSubmit( m_queue, submits.size() , reinterpret_cast<const VkSubmitInfo*>( submits.data() ), static_cast<VkFence>( fence ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060026964 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Queue::submit" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026965 }
26966#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26967
26968#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26969 VULKAN_HPP_INLINE Result Queue::waitIdle() const
26970 {
26971 return static_cast<Result>( vkQueueWaitIdle( m_queue ) );
26972 }
26973#else
26974 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::waitIdle() const
26975 {
26976 Result result = static_cast<Result>( vkQueueWaitIdle( m_queue ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060026977 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Queue::waitIdle" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026978 }
26979#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26980
26981 VULKAN_HPP_INLINE Result Queue::bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence ) const
26982 {
26983 return static_cast<Result>( vkQueueBindSparse( m_queue, bindInfoCount, reinterpret_cast<const VkBindSparseInfo*>( pBindInfo ), static_cast<VkFence>( fence ) ) );
26984 }
26985#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26986 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence ) const
26987 {
26988 Result result = static_cast<Result>( vkQueueBindSparse( m_queue, bindInfo.size() , reinterpret_cast<const VkBindSparseInfo*>( bindInfo.data() ), static_cast<VkFence>( fence ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060026989 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Queue::bindSparse" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026990 }
26991#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26992
26993 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR* pPresentInfo ) const
26994 {
26995 return static_cast<Result>( vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( pPresentInfo ) ) );
26996 }
26997#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26998 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR & presentInfo ) const
26999 {
27000 Result result = static_cast<Result>( vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( &presentInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060027001 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Queue::presentKHR", { Result::eSuccess, Result::eSuboptimalKHR } );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027002 }
27003#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027004
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027005#ifndef VULKAN_HPP_NO_SMART_HANDLE
27006 class BufferDeleter;
27007 using UniqueBuffer = UniqueHandle<Buffer, BufferDeleter>;
27008 class BufferViewDeleter;
27009 using UniqueBufferView = UniqueHandle<BufferView, BufferViewDeleter>;
27010 class CommandBufferDeleter;
27011 using UniqueCommandBuffer = UniqueHandle<CommandBuffer, CommandBufferDeleter>;
27012 class CommandPoolDeleter;
27013 using UniqueCommandPool = UniqueHandle<CommandPool, CommandPoolDeleter>;
27014 class DescriptorPoolDeleter;
27015 using UniqueDescriptorPool = UniqueHandle<DescriptorPool, DescriptorPoolDeleter>;
27016 class DescriptorSetDeleter;
27017 using UniqueDescriptorSet = UniqueHandle<DescriptorSet, DescriptorSetDeleter>;
27018 class DescriptorSetLayoutDeleter;
27019 using UniqueDescriptorSetLayout = UniqueHandle<DescriptorSetLayout, DescriptorSetLayoutDeleter>;
Mark Young0f183a82017-02-28 09:58:04 -070027020 class DescriptorUpdateTemplateKHRDeleter;
27021 using UniqueDescriptorUpdateTemplateKHR = UniqueHandle<DescriptorUpdateTemplateKHR, DescriptorUpdateTemplateKHRDeleter>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027022 class DeviceMemoryDeleter;
27023 using UniqueDeviceMemory = UniqueHandle<DeviceMemory, DeviceMemoryDeleter>;
27024 class EventDeleter;
27025 using UniqueEvent = UniqueHandle<Event, EventDeleter>;
27026 class FenceDeleter;
27027 using UniqueFence = UniqueHandle<Fence, FenceDeleter>;
27028 class FramebufferDeleter;
27029 using UniqueFramebuffer = UniqueHandle<Framebuffer, FramebufferDeleter>;
27030 class ImageDeleter;
27031 using UniqueImage = UniqueHandle<Image, ImageDeleter>;
27032 class ImageViewDeleter;
27033 using UniqueImageView = UniqueHandle<ImageView, ImageViewDeleter>;
27034 class IndirectCommandsLayoutNVXDeleter;
27035 using UniqueIndirectCommandsLayoutNVX = UniqueHandle<IndirectCommandsLayoutNVX, IndirectCommandsLayoutNVXDeleter>;
27036 class ObjectTableNVXDeleter;
27037 using UniqueObjectTableNVX = UniqueHandle<ObjectTableNVX, ObjectTableNVXDeleter>;
27038 class PipelineDeleter;
27039 using UniquePipeline = UniqueHandle<Pipeline, PipelineDeleter>;
27040 class PipelineCacheDeleter;
27041 using UniquePipelineCache = UniqueHandle<PipelineCache, PipelineCacheDeleter>;
27042 class PipelineLayoutDeleter;
27043 using UniquePipelineLayout = UniqueHandle<PipelineLayout, PipelineLayoutDeleter>;
27044 class QueryPoolDeleter;
27045 using UniqueQueryPool = UniqueHandle<QueryPool, QueryPoolDeleter>;
27046 class RenderPassDeleter;
27047 using UniqueRenderPass = UniqueHandle<RenderPass, RenderPassDeleter>;
27048 class SamplerDeleter;
27049 using UniqueSampler = UniqueHandle<Sampler, SamplerDeleter>;
Lenny Komowb79f04a2017-09-18 17:07:00 -060027050 class SamplerYcbcrConversionKHRDeleter;
27051 using UniqueSamplerYcbcrConversionKHR = UniqueHandle<SamplerYcbcrConversionKHR, SamplerYcbcrConversionKHRDeleter>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027052 class SemaphoreDeleter;
27053 using UniqueSemaphore = UniqueHandle<Semaphore, SemaphoreDeleter>;
27054 class ShaderModuleDeleter;
27055 using UniqueShaderModule = UniqueHandle<ShaderModule, ShaderModuleDeleter>;
27056 class SwapchainKHRDeleter;
27057 using UniqueSwapchainKHR = UniqueHandle<SwapchainKHR, SwapchainKHRDeleter>;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060027058 class ValidationCacheEXTDeleter;
27059 using UniqueValidationCacheEXT = UniqueHandle<ValidationCacheEXT, ValidationCacheEXTDeleter>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027060#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27061
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027062 class Device
27063 {
27064 public:
27065 Device()
27066 : m_device(VK_NULL_HANDLE)
27067 {}
27068
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070027069 Device( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027070 : m_device(VK_NULL_HANDLE)
27071 {}
27072
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027073 VULKAN_HPP_TYPESAFE_EXPLICIT Device( VkDevice device )
27074 : m_device( device )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027075 {}
27076
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070027077#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027078 Device & operator=(VkDevice device)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027079 {
27080 m_device = device;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027081 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027082 }
27083#endif
27084
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027085 Device & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027086 {
27087 m_device = VK_NULL_HANDLE;
27088 return *this;
27089 }
27090
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027091 bool operator==( Device const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060027092 {
27093 return m_device == rhs.m_device;
27094 }
27095
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027096 bool operator!=(Device const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060027097 {
27098 return m_device != rhs.m_device;
27099 }
27100
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027101 bool operator<(Device const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060027102 {
27103 return m_device < rhs.m_device;
27104 }
27105
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027106 PFN_vkVoidFunction getProcAddr( const char* pName ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027107#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027108 PFN_vkVoidFunction getProcAddr( const std::string & name ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027109#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27110
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027111 void destroy( const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027112#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027113 void destroy( Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027114#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27115
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027116 void getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027117#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027118 Queue getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027119#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27120
27121#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027122 Result waitIdle() const;
27123#else
27124 ResultValueType<void>::type waitIdle() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027125#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27126
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027127 Result allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027128#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027129 ResultValueType<DeviceMemory>::type allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27130#ifndef VULKAN_HPP_NO_SMART_HANDLE
27131 UniqueDeviceMemory allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27132#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027133#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27134
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027135 void freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027136#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027137 void freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27138#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27139
27140 Result mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData ) const;
27141#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27142 ResultValueType<void*>::type mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags = MemoryMapFlags() ) const;
27143#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27144
27145 void unmapMemory( DeviceMemory memory ) const;
27146
27147 Result flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const;
27148#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27149 ResultValueType<void>::type flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const;
27150#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27151
27152 Result invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const;
27153#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27154 ResultValueType<void>::type invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const;
27155#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27156
27157 void getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes ) const;
27158#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27159 DeviceSize getMemoryCommitment( DeviceMemory memory ) const;
27160#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27161
27162 void getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements ) const;
27163#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27164 MemoryRequirements getBufferMemoryRequirements( Buffer buffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027165#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27166
27167#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027168 Result bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const;
27169#else
27170 ResultValueType<void>::type bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const;
27171#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027172
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027173 void getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027174#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027175 MemoryRequirements getImageMemoryRequirements( Image image ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027176#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27177
27178#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027179 Result bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const;
27180#else
27181 ResultValueType<void>::type bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027182#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27183
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027184 void getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027185#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027186 template <typename Allocator = std::allocator<SparseImageMemoryRequirements>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027187 std::vector<SparseImageMemoryRequirements,Allocator> getImageSparseMemoryRequirements( Image image ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027188#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27189
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027190 Result createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027191#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027192 ResultValueType<Fence>::type createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27193#ifndef VULKAN_HPP_NO_SMART_HANDLE
27194 UniqueFence createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27195#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027196#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27197
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027198 void destroyFence( Fence fence, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027199#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027200 void destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027201#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27202
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027203 Result resetFences( uint32_t fenceCount, const Fence* pFences ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027204#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027205 ResultValueType<void>::type resetFences( ArrayProxy<const Fence> fences ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027206#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27207
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027208 Result getFenceStatus( Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027209
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027210 Result waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027211#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027212 Result waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout ) const;
27213#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27214
27215 Result createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore ) const;
27216#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27217 ResultValueType<Semaphore>::type createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27218#ifndef VULKAN_HPP_NO_SMART_HANDLE
27219 UniqueSemaphore createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27220#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27221#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27222
27223 void destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator ) const;
27224#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27225 void destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27226#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27227
27228 Result createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent ) const;
27229#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27230 ResultValueType<Event>::type createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27231#ifndef VULKAN_HPP_NO_SMART_HANDLE
27232 UniqueEvent createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27233#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27234#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27235
27236 void destroyEvent( Event event, const AllocationCallbacks* pAllocator ) const;
27237#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27238 void destroyEvent( Event event, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027239#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27240
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027241 Result getEventStatus( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027242
27243#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027244 Result setEvent( Event event ) const;
27245#else
27246 ResultValueType<void>::type setEvent( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027247#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27248
27249#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027250 Result resetEvent( Event event ) const;
27251#else
27252 ResultValueType<void>::type resetEvent( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027253#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27254
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027255 Result createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027256#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027257 ResultValueType<QueryPool>::type createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27258#ifndef VULKAN_HPP_NO_SMART_HANDLE
27259 UniqueQueryPool createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27260#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027261#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27262
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027263 void destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027264#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027265 void destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027266#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27267
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027268 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 -060027269#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27270 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027271 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 -060027272#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27273
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027274 Result createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027275#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027276 ResultValueType<Buffer>::type createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27277#ifndef VULKAN_HPP_NO_SMART_HANDLE
27278 UniqueBuffer createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27279#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027280#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27281
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027282 void destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027283#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027284 void destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027285#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27286
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027287 Result createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027288#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027289 ResultValueType<BufferView>::type createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27290#ifndef VULKAN_HPP_NO_SMART_HANDLE
27291 UniqueBufferView createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27292#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027293#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27294
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027295 void destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027296#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027297 void destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027298#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27299
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027300 Result createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027301#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027302 ResultValueType<Image>::type createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27303#ifndef VULKAN_HPP_NO_SMART_HANDLE
27304 UniqueImage createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27305#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027306#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27307
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027308 void destroyImage( Image image, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027309#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027310 void destroyImage( Image image, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027311#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27312
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027313 void getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027314#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027315 SubresourceLayout getImageSubresourceLayout( Image image, const ImageSubresource & subresource ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027316#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27317
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027318 Result createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027319#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027320 ResultValueType<ImageView>::type createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27321#ifndef VULKAN_HPP_NO_SMART_HANDLE
27322 UniqueImageView createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27323#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027324#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27325
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027326 void destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027327#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027328 void destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027329#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27330
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027331 Result createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027332#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027333 ResultValueType<ShaderModule>::type createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27334#ifndef VULKAN_HPP_NO_SMART_HANDLE
27335 UniqueShaderModule createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27336#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027337#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27338
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027339 void destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027340#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027341 void destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027342#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27343
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027344 Result createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027345#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027346 ResultValueType<PipelineCache>::type createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27347#ifndef VULKAN_HPP_NO_SMART_HANDLE
27348 UniquePipelineCache createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27349#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027350#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27351
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027352 void destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027353#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027354 void destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027355#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27356
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027357 Result getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027358#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027359 template <typename Allocator = std::allocator<uint8_t>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027360 typename ResultValueType<std::vector<uint8_t,Allocator>>::type getPipelineCacheData( PipelineCache pipelineCache ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027361#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27362
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027363 Result mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027364#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027365 ResultValueType<void>::type mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027366#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27367
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027368 Result createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027369#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027370 template <typename Allocator = std::allocator<Pipeline>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027371 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027372 ResultValueType<Pipeline>::type createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27373#ifndef VULKAN_HPP_NO_SMART_HANDLE
27374 template <typename Allocator = std::allocator<Pipeline>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027375 std::vector<UniquePipeline> createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027376 UniquePipeline createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27377#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027378#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27379
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027380 Result createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027381#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027382 template <typename Allocator = std::allocator<Pipeline>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027383 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027384 ResultValueType<Pipeline>::type createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27385#ifndef VULKAN_HPP_NO_SMART_HANDLE
27386 template <typename Allocator = std::allocator<Pipeline>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027387 std::vector<UniquePipeline> createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027388 UniquePipeline createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27389#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027390#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27391
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027392 void destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027393#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027394 void destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027395#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27396
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027397 Result createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027398#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027399 ResultValueType<PipelineLayout>::type createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27400#ifndef VULKAN_HPP_NO_SMART_HANDLE
27401 UniquePipelineLayout createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27402#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027403#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27404
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027405 void destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027406#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027407 void destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027408#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27409
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027410 Result createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027411#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027412 ResultValueType<Sampler>::type createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27413#ifndef VULKAN_HPP_NO_SMART_HANDLE
27414 UniqueSampler createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27415#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027416#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27417
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027418 void destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027419#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027420 void destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027421#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27422
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027423 Result createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027424#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027425 ResultValueType<DescriptorSetLayout>::type createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27426#ifndef VULKAN_HPP_NO_SMART_HANDLE
27427 UniqueDescriptorSetLayout createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27428#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027429#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27430
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027431 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027432#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027433 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027434#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27435
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027436 Result createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027437#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027438 ResultValueType<DescriptorPool>::type createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27439#ifndef VULKAN_HPP_NO_SMART_HANDLE
27440 UniqueDescriptorPool createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27441#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027442#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27443
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027444 void destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027445#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027446 void destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027447#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27448
27449#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027450 Result resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const;
27451#else
27452 ResultValueType<void>::type resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags = DescriptorPoolResetFlags() ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027453#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27454
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027455 Result allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027456#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027457 template <typename Allocator = std::allocator<DescriptorSet>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027458 typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027459#ifndef VULKAN_HPP_NO_SMART_HANDLE
27460 template <typename Allocator = std::allocator<DescriptorSet>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027461 std::vector<UniqueDescriptorSet> allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027462#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027463#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27464
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027465 Result freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027466#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027467 ResultValueType<void>::type freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027468#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27469
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027470 void updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027471#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027472 void updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027473#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27474
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027475 Result createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027476#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027477 ResultValueType<Framebuffer>::type createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27478#ifndef VULKAN_HPP_NO_SMART_HANDLE
27479 UniqueFramebuffer createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27480#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027481#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27482
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027483 void destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027484#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027485 void destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027486#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27487
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027488 Result createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027489#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027490 ResultValueType<RenderPass>::type createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27491#ifndef VULKAN_HPP_NO_SMART_HANDLE
27492 UniqueRenderPass createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27493#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027494#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27495
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027496 void destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027497#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027498 void destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027499#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27500
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027501 void getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027502#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027503 Extent2D getRenderAreaGranularity( RenderPass renderPass ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027504#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27505
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027506 Result createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027507#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027508 ResultValueType<CommandPool>::type createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27509#ifndef VULKAN_HPP_NO_SMART_HANDLE
27510 UniqueCommandPool createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27511#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027512#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27513
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027514 void destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027515#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027516 void destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027517#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27518
27519#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027520 Result resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const;
27521#else
27522 ResultValueType<void>::type resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027523#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27524
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027525 Result allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027526#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027527 template <typename Allocator = std::allocator<CommandBuffer>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027528 typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027529#ifndef VULKAN_HPP_NO_SMART_HANDLE
27530 template <typename Allocator = std::allocator<CommandBuffer>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027531 std::vector<UniqueCommandBuffer> allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027532#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027533#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27534
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027535 void freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027536#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027537 void freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027538#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27539
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027540 Result createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027541#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027542 template <typename Allocator = std::allocator<SwapchainKHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027543 typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027544 ResultValueType<SwapchainKHR>::type createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27545#ifndef VULKAN_HPP_NO_SMART_HANDLE
27546 template <typename Allocator = std::allocator<SwapchainKHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027547 std::vector<UniqueSwapchainKHR> createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027548 UniqueSwapchainKHR createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27549#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027550#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27551
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027552 Result createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027553#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027554 ResultValueType<SwapchainKHR>::type createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27555#ifndef VULKAN_HPP_NO_SMART_HANDLE
27556 UniqueSwapchainKHR createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27557#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027558#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27559
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027560 void destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027561#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027562 void destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027563#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27564
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027565 Result getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027566#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027567 template <typename Allocator = std::allocator<Image>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027568 typename ResultValueType<std::vector<Image,Allocator>>::type getSwapchainImagesKHR( SwapchainKHR swapchain ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027569#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27570
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027571 Result acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027572#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027573 ResultValue<uint32_t> acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027574#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27575
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060027576 Result debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT* pNameInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027577#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060027578 ResultValueType<void>::type debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT & nameInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027579#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27580
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060027581 Result debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT* pTagInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027582#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060027583 ResultValueType<void>::type debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT & tagInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027584#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27585
Lenny Komow6501c122016-08-31 15:03:49 -060027586#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027587 Result getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const;
27588#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27589 ResultValueType<HANDLE>::type getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType ) const;
27590#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komow6501c122016-08-31 15:03:49 -060027591#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27592
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027593 Result createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const;
Lenny Komow6501c122016-08-31 15:03:49 -060027594#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027595 ResultValueType<IndirectCommandsLayoutNVX>::type createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27596#ifndef VULKAN_HPP_NO_SMART_HANDLE
27597 UniqueIndirectCommandsLayoutNVX createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27598#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komow6501c122016-08-31 15:03:49 -060027599#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27600
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027601 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027602#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027603 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027604#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27605
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027606 Result createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027607#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027608 ResultValueType<ObjectTableNVX>::type createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27609#ifndef VULKAN_HPP_NO_SMART_HANDLE
27610 UniqueObjectTableNVX createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27611#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027612#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27613
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027614 void destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027615#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027616 void destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027617#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27618
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027619 Result registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027620#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027621 ResultValueType<void>::type registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027622#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27623
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027624 Result unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027625#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027626 ResultValueType<void>::type unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027627#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27628
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027629#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027630 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags ) const;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027631#else
27632 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags = CommandPoolTrimFlagsKHR() ) const;
27633#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027634
Mark Youngabc2d6e2017-07-07 07:59:56 -060027635#ifdef VK_USE_PLATFORM_WIN32_KHR
27636 Result getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027637#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027638 ResultValueType<HANDLE>::type getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027639#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060027640#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070027641
Mark Youngabc2d6e2017-07-07 07:59:56 -060027642#ifdef VK_USE_PLATFORM_WIN32_KHR
27643 Result getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle, MemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027644#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027645 ResultValueType<MemoryWin32HandlePropertiesKHR>::type getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027646#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060027647#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070027648
Mark Youngabc2d6e2017-07-07 07:59:56 -060027649 Result getMemoryFdKHR( const MemoryGetFdInfoKHR* pGetFdInfo, int* pFd ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027650#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027651 ResultValueType<int>::type getMemoryFdKHR( const MemoryGetFdInfoKHR & getFdInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027652#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27653
Mark Youngabc2d6e2017-07-07 07:59:56 -060027654 Result getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, int fd, MemoryFdPropertiesKHR* pMemoryFdProperties ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027655#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027656 ResultValueType<MemoryFdPropertiesKHR>::type getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, int fd ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027657#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27658
Mark Youngabc2d6e2017-07-07 07:59:56 -060027659#ifdef VK_USE_PLATFORM_WIN32_KHR
27660 Result getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027661#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027662 ResultValueType<HANDLE>::type getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027663#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060027664#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070027665
Mark Youngabc2d6e2017-07-07 07:59:56 -060027666#ifdef VK_USE_PLATFORM_WIN32_KHR
27667 Result importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027668#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027669 ResultValueType<void>::type importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027670#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060027671#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070027672
Mark Youngabc2d6e2017-07-07 07:59:56 -060027673 Result getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027674#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027675 ResultValueType<int>::type getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR & getFdInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027676#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27677
Mark Youngabc2d6e2017-07-07 07:59:56 -060027678 Result importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027679#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027680 ResultValueType<void>::type importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo ) const;
27681#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27682
27683#ifdef VK_USE_PLATFORM_WIN32_KHR
27684 Result getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const;
27685#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27686 ResultValueType<HANDLE>::type getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
27687#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27688#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27689
27690#ifdef VK_USE_PLATFORM_WIN32_KHR
27691 Result importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo ) const;
27692#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27693 ResultValueType<void>::type importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo ) const;
27694#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27695#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27696
27697 Result getFenceFdKHR( const FenceGetFdInfoKHR* pGetFdInfo, int* pFd ) const;
27698#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27699 ResultValueType<int>::type getFenceFdKHR( const FenceGetFdInfoKHR & getFdInfo ) const;
27700#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27701
27702 Result importFenceFdKHR( const ImportFenceFdInfoKHR* pImportFenceFdInfo ) const;
27703#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27704 ResultValueType<void>::type importFenceFdKHR( const ImportFenceFdInfoKHR & importFenceFdInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027705#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27706
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027707 Result displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027708#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027709 ResultValueType<void>::type displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027710#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27711
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027712 Result registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Mark Young39389872017-01-19 21:10:49 -070027713#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060027714 ResultValueType<Fence>::type registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Young39389872017-01-19 21:10:49 -070027715#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27716
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027717 Result registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Mark Young39389872017-01-19 21:10:49 -070027718#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060027719 ResultValueType<Fence>::type registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Young39389872017-01-19 21:10:49 -070027720#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27721
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027722 Result getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const;
Mark Young39389872017-01-19 21:10:49 -070027723#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027724 ResultValue<uint64_t> getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter ) const;
Mark Young39389872017-01-19 21:10:49 -070027725#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27726
Mark Young0f183a82017-02-28 09:58:04 -070027727 void getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ) const;
27728#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27729 PeerMemoryFeatureFlagsKHX getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const;
27730#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27731
Lenny Komowb79f04a2017-09-18 17:07:00 -060027732 Result bindBufferMemory2KHR( uint32_t bindInfoCount, const BindBufferMemoryInfoKHR* pBindInfos ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027733#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060027734 ResultValueType<void>::type bindBufferMemory2KHR( ArrayProxy<const BindBufferMemoryInfoKHR> bindInfos ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027735#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27736
Lenny Komowb79f04a2017-09-18 17:07:00 -060027737 Result bindImageMemory2KHR( uint32_t bindInfoCount, const BindImageMemoryInfoKHR* pBindInfos ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027738#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060027739 ResultValueType<void>::type bindImageMemory2KHR( ArrayProxy<const BindImageMemoryInfoKHR> bindInfos ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027740#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27741
27742 Result getGroupPresentCapabilitiesKHX( DeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ) const;
27743#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27744 ResultValueType<DeviceGroupPresentCapabilitiesKHX>::type getGroupPresentCapabilitiesKHX() const;
27745#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27746
27747 Result getGroupSurfacePresentModesKHX( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHX* pModes ) const;
27748#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27749 ResultValueType<DeviceGroupPresentModeFlagsKHX>::type getGroupSurfacePresentModesKHX( SurfaceKHR surface ) const;
27750#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27751
27752 Result acquireNextImage2KHX( const AcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex ) const;
27753#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27754 ResultValue<uint32_t> acquireNextImage2KHX( const AcquireNextImageInfoKHX & acquireInfo ) const;
27755#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27756
27757 Result createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) const;
27758#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27759 ResultValueType<DescriptorUpdateTemplateKHR>::type createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27760#ifndef VULKAN_HPP_NO_SMART_HANDLE
27761 UniqueDescriptorUpdateTemplateKHR createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27762#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27763#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27764
27765 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const AllocationCallbacks* pAllocator ) const;
27766#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27767 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27768#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27769
27770 void updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData ) const;
27771
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027772 void setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata ) const;
27773#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27774 void setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata ) const;
27775#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27776
Mark Lobodzinski54385432017-05-15 10:27:52 -060027777 Result getSwapchainStatusKHR( SwapchainKHR swapchain ) const;
27778
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027779 Result getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const;
27780#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27781 ResultValueType<RefreshCycleDurationGOOGLE>::type getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain ) const;
27782#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27783
27784 Result getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings ) const;
27785#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27786 template <typename Allocator = std::allocator<PastPresentationTimingGOOGLE>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027787 typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type getPastPresentationTimingGOOGLE( SwapchainKHR swapchain ) const;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027788#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27789
Mark Youngabc2d6e2017-07-07 07:59:56 -060027790 void getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR* pInfo, MemoryRequirements2KHR* pMemoryRequirements ) const;
27791#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27792 MemoryRequirements2KHR getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR & info ) const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060027793 template <typename ...T>
27794 StructureChain<T...> getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR & info ) const;
Mark Youngabc2d6e2017-07-07 07:59:56 -060027795#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27796
27797 void getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR* pInfo, MemoryRequirements2KHR* pMemoryRequirements ) const;
27798#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27799 MemoryRequirements2KHR getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR & info ) const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060027800 template <typename ...T>
27801 StructureChain<T...> getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR & info ) const;
Mark Youngabc2d6e2017-07-07 07:59:56 -060027802#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27803
27804 void getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2KHR* pInfo, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements2KHR* pSparseMemoryRequirements ) const;
27805#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27806 template <typename Allocator = std::allocator<SparseImageMemoryRequirements2KHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027807 std::vector<SparseImageMemoryRequirements2KHR,Allocator> getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2KHR & info ) const;
Mark Youngabc2d6e2017-07-07 07:59:56 -060027808#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27809
Lenny Komowb79f04a2017-09-18 17:07:00 -060027810 Result createSamplerYcbcrConversionKHR( const SamplerYcbcrConversionCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SamplerYcbcrConversionKHR* pYcbcrConversion ) const;
27811#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27812 ResultValueType<SamplerYcbcrConversionKHR>::type createSamplerYcbcrConversionKHR( const SamplerYcbcrConversionCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27813#ifndef VULKAN_HPP_NO_SMART_HANDLE
27814 UniqueSamplerYcbcrConversionKHR createSamplerYcbcrConversionKHRUnique( const SamplerYcbcrConversionCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27815#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27816#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27817
27818 void destroySamplerYcbcrConversionKHR( SamplerYcbcrConversionKHR ycbcrConversion, const AllocationCallbacks* pAllocator ) const;
27819#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27820 void destroySamplerYcbcrConversionKHR( SamplerYcbcrConversionKHR ycbcrConversion, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27821#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27822
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060027823 Result createValidationCacheEXT( const ValidationCacheCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, ValidationCacheEXT* pValidationCache ) const;
27824#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27825 ResultValueType<ValidationCacheEXT>::type createValidationCacheEXT( const ValidationCacheCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27826#ifndef VULKAN_HPP_NO_SMART_HANDLE
27827 UniqueValidationCacheEXT createValidationCacheEXTUnique( const ValidationCacheCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27828#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27829#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27830
27831 void destroyValidationCacheEXT( ValidationCacheEXT validationCache, const AllocationCallbacks* pAllocator ) const;
27832#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27833 void destroyValidationCacheEXT( ValidationCacheEXT validationCache, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27834#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27835
27836 Result getValidationCacheDataEXT( ValidationCacheEXT validationCache, size_t* pDataSize, void* pData ) const;
27837#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27838 template <typename Allocator = std::allocator<uint8_t>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027839 typename ResultValueType<std::vector<uint8_t,Allocator>>::type getValidationCacheDataEXT( ValidationCacheEXT validationCache ) const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060027840#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27841
27842 Result mergeValidationCachesEXT( ValidationCacheEXT dstCache, uint32_t srcCacheCount, const ValidationCacheEXT* pSrcCaches ) const;
27843#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27844 ResultValueType<void>::type mergeValidationCachesEXT( ValidationCacheEXT dstCache, ArrayProxy<const ValidationCacheEXT> srcCaches ) const;
27845#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27846
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027847 Result getShaderInfoAMD( Pipeline pipeline, ShaderStageFlagBits shaderStage, ShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo ) const;
27848#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27849 template <typename Allocator = std::allocator<uint8_t>>
27850 typename ResultValueType<std::vector<uint8_t,Allocator>>::type getShaderInfoAMD( Pipeline pipeline, ShaderStageFlagBits shaderStage, ShaderInfoTypeAMD infoType ) const;
27851#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27852
Mark Lobodzinski417d5702017-11-27 12:00:45 -070027853 Result getMemoryHostPointerPropertiesEXT( ExternalMemoryHandleTypeFlagBitsKHR handleType, const void* pHostPointer, MemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties ) const;
27854#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27855 ResultValueType<MemoryHostPointerPropertiesEXT>::type getMemoryHostPointerPropertiesEXT( ExternalMemoryHandleTypeFlagBitsKHR handleType, const void* pHostPointer ) const;
27856#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27857
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027858
27859
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070027860 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDevice() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027861 {
27862 return m_device;
27863 }
27864
27865 explicit operator bool() const
27866 {
27867 return m_device != VK_NULL_HANDLE;
27868 }
27869
27870 bool operator!() const
27871 {
27872 return m_device == VK_NULL_HANDLE;
27873 }
27874
27875 private:
27876 VkDevice m_device;
27877 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027878
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027879 static_assert( sizeof( Device ) == sizeof( VkDevice ), "handle and wrapper have different size!" );
27880
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027881#ifndef VULKAN_HPP_NO_SMART_HANDLE
27882 class BufferDeleter
27883 {
27884 public:
27885 BufferDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27886 : m_device( device )
27887 , m_allocator( allocator )
27888 {}
27889
27890 void operator()( Buffer buffer )
27891 {
27892 m_device.destroyBuffer( buffer, m_allocator );
27893 }
27894
27895 private:
27896 Device m_device;
27897 Optional<const AllocationCallbacks> m_allocator;
27898 };
27899
27900 class BufferViewDeleter
27901 {
27902 public:
27903 BufferViewDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27904 : m_device( device )
27905 , m_allocator( allocator )
27906 {}
27907
27908 void operator()( BufferView bufferView )
27909 {
27910 m_device.destroyBufferView( bufferView, m_allocator );
27911 }
27912
27913 private:
27914 Device m_device;
27915 Optional<const AllocationCallbacks> m_allocator;
27916 };
27917
27918 class CommandBufferDeleter
27919 {
27920 public:
27921 CommandBufferDeleter( Device device = Device(), CommandPool commandPool = CommandPool() )
27922 : m_device( device )
27923 , m_commandPool( commandPool )
27924 {}
27925
27926 void operator()( CommandBuffer commandBuffer )
27927 {
27928 m_device.freeCommandBuffers( m_commandPool, commandBuffer );
27929 }
27930
27931 private:
27932 Device m_device;
27933 CommandPool m_commandPool;
27934 };
27935
27936 class CommandPoolDeleter
27937 {
27938 public:
27939 CommandPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27940 : m_device( device )
27941 , m_allocator( allocator )
27942 {}
27943
27944 void operator()( CommandPool commandPool )
27945 {
27946 m_device.destroyCommandPool( commandPool, m_allocator );
27947 }
27948
27949 private:
27950 Device m_device;
27951 Optional<const AllocationCallbacks> m_allocator;
27952 };
27953
27954 class DescriptorPoolDeleter
27955 {
27956 public:
27957 DescriptorPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27958 : m_device( device )
27959 , m_allocator( allocator )
27960 {}
27961
27962 void operator()( DescriptorPool descriptorPool )
27963 {
27964 m_device.destroyDescriptorPool( descriptorPool, m_allocator );
27965 }
27966
27967 private:
27968 Device m_device;
27969 Optional<const AllocationCallbacks> m_allocator;
27970 };
27971
27972 class DescriptorSetDeleter
27973 {
27974 public:
27975 DescriptorSetDeleter( Device device = Device(), DescriptorPool descriptorPool = DescriptorPool() )
27976 : m_device( device )
27977 , m_descriptorPool( descriptorPool )
27978 {}
27979
27980 void operator()( DescriptorSet descriptorSet )
27981 {
27982 m_device.freeDescriptorSets( m_descriptorPool, descriptorSet );
27983 }
27984
27985 private:
27986 Device m_device;
27987 DescriptorPool m_descriptorPool;
27988 };
27989
27990 class DescriptorSetLayoutDeleter
27991 {
27992 public:
27993 DescriptorSetLayoutDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27994 : m_device( device )
27995 , m_allocator( allocator )
27996 {}
27997
27998 void operator()( DescriptorSetLayout descriptorSetLayout )
27999 {
28000 m_device.destroyDescriptorSetLayout( descriptorSetLayout, m_allocator );
28001 }
28002
28003 private:
28004 Device m_device;
28005 Optional<const AllocationCallbacks> m_allocator;
28006 };
28007
Mark Young0f183a82017-02-28 09:58:04 -070028008 class DescriptorUpdateTemplateKHRDeleter
28009 {
28010 public:
28011 DescriptorUpdateTemplateKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28012 : m_device( device )
28013 , m_allocator( allocator )
28014 {}
28015
28016 void operator()( DescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR )
28017 {
28018 m_device.destroyDescriptorUpdateTemplateKHR( descriptorUpdateTemplateKHR, m_allocator );
28019 }
28020
28021 private:
28022 Device m_device;
28023 Optional<const AllocationCallbacks> m_allocator;
28024 };
28025
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028026 class DeviceMemoryDeleter
28027 {
28028 public:
28029 DeviceMemoryDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28030 : m_device( device )
28031 , m_allocator( allocator )
28032 {}
28033
28034 void operator()( DeviceMemory deviceMemory )
28035 {
28036 m_device.freeMemory( deviceMemory, m_allocator );
28037 }
28038
28039 private:
28040 Device m_device;
28041 Optional<const AllocationCallbacks> m_allocator;
28042 };
28043
28044 class EventDeleter
28045 {
28046 public:
28047 EventDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28048 : m_device( device )
28049 , m_allocator( allocator )
28050 {}
28051
28052 void operator()( Event event )
28053 {
28054 m_device.destroyEvent( event, m_allocator );
28055 }
28056
28057 private:
28058 Device m_device;
28059 Optional<const AllocationCallbacks> m_allocator;
28060 };
28061
28062 class FenceDeleter
28063 {
28064 public:
28065 FenceDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28066 : m_device( device )
28067 , m_allocator( allocator )
28068 {}
28069
28070 void operator()( Fence fence )
28071 {
28072 m_device.destroyFence( fence, m_allocator );
28073 }
28074
28075 private:
28076 Device m_device;
28077 Optional<const AllocationCallbacks> m_allocator;
28078 };
28079
28080 class FramebufferDeleter
28081 {
28082 public:
28083 FramebufferDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28084 : m_device( device )
28085 , m_allocator( allocator )
28086 {}
28087
28088 void operator()( Framebuffer framebuffer )
28089 {
28090 m_device.destroyFramebuffer( framebuffer, m_allocator );
28091 }
28092
28093 private:
28094 Device m_device;
28095 Optional<const AllocationCallbacks> m_allocator;
28096 };
28097
28098 class ImageDeleter
28099 {
28100 public:
28101 ImageDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28102 : m_device( device )
28103 , m_allocator( allocator )
28104 {}
28105
28106 void operator()( Image image )
28107 {
28108 m_device.destroyImage( image, m_allocator );
28109 }
28110
28111 private:
28112 Device m_device;
28113 Optional<const AllocationCallbacks> m_allocator;
28114 };
28115
28116 class ImageViewDeleter
28117 {
28118 public:
28119 ImageViewDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28120 : m_device( device )
28121 , m_allocator( allocator )
28122 {}
28123
28124 void operator()( ImageView imageView )
28125 {
28126 m_device.destroyImageView( imageView, m_allocator );
28127 }
28128
28129 private:
28130 Device m_device;
28131 Optional<const AllocationCallbacks> m_allocator;
28132 };
28133
28134 class IndirectCommandsLayoutNVXDeleter
28135 {
28136 public:
28137 IndirectCommandsLayoutNVXDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28138 : m_device( device )
28139 , m_allocator( allocator )
28140 {}
28141
28142 void operator()( IndirectCommandsLayoutNVX indirectCommandsLayoutNVX )
28143 {
28144 m_device.destroyIndirectCommandsLayoutNVX( indirectCommandsLayoutNVX, m_allocator );
28145 }
28146
28147 private:
28148 Device m_device;
28149 Optional<const AllocationCallbacks> m_allocator;
28150 };
28151
28152 class ObjectTableNVXDeleter
28153 {
28154 public:
28155 ObjectTableNVXDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28156 : m_device( device )
28157 , m_allocator( allocator )
28158 {}
28159
28160 void operator()( ObjectTableNVX objectTableNVX )
28161 {
28162 m_device.destroyObjectTableNVX( objectTableNVX, m_allocator );
28163 }
28164
28165 private:
28166 Device m_device;
28167 Optional<const AllocationCallbacks> m_allocator;
28168 };
28169
28170 class PipelineDeleter
28171 {
28172 public:
28173 PipelineDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28174 : m_device( device )
28175 , m_allocator( allocator )
28176 {}
28177
28178 void operator()( Pipeline pipeline )
28179 {
28180 m_device.destroyPipeline( pipeline, m_allocator );
28181 }
28182
28183 private:
28184 Device m_device;
28185 Optional<const AllocationCallbacks> m_allocator;
28186 };
28187
28188 class PipelineCacheDeleter
28189 {
28190 public:
28191 PipelineCacheDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28192 : m_device( device )
28193 , m_allocator( allocator )
28194 {}
28195
28196 void operator()( PipelineCache pipelineCache )
28197 {
28198 m_device.destroyPipelineCache( pipelineCache, m_allocator );
28199 }
28200
28201 private:
28202 Device m_device;
28203 Optional<const AllocationCallbacks> m_allocator;
28204 };
28205
28206 class PipelineLayoutDeleter
28207 {
28208 public:
28209 PipelineLayoutDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28210 : m_device( device )
28211 , m_allocator( allocator )
28212 {}
28213
28214 void operator()( PipelineLayout pipelineLayout )
28215 {
28216 m_device.destroyPipelineLayout( pipelineLayout, m_allocator );
28217 }
28218
28219 private:
28220 Device m_device;
28221 Optional<const AllocationCallbacks> m_allocator;
28222 };
28223
28224 class QueryPoolDeleter
28225 {
28226 public:
28227 QueryPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28228 : m_device( device )
28229 , m_allocator( allocator )
28230 {}
28231
28232 void operator()( QueryPool queryPool )
28233 {
28234 m_device.destroyQueryPool( queryPool, m_allocator );
28235 }
28236
28237 private:
28238 Device m_device;
28239 Optional<const AllocationCallbacks> m_allocator;
28240 };
28241
28242 class RenderPassDeleter
28243 {
28244 public:
28245 RenderPassDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28246 : m_device( device )
28247 , m_allocator( allocator )
28248 {}
28249
28250 void operator()( RenderPass renderPass )
28251 {
28252 m_device.destroyRenderPass( renderPass, m_allocator );
28253 }
28254
28255 private:
28256 Device m_device;
28257 Optional<const AllocationCallbacks> m_allocator;
28258 };
28259
28260 class SamplerDeleter
28261 {
28262 public:
28263 SamplerDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28264 : m_device( device )
28265 , m_allocator( allocator )
28266 {}
28267
28268 void operator()( Sampler sampler )
28269 {
28270 m_device.destroySampler( sampler, m_allocator );
28271 }
28272
28273 private:
28274 Device m_device;
28275 Optional<const AllocationCallbacks> m_allocator;
28276 };
28277
Lenny Komowb79f04a2017-09-18 17:07:00 -060028278 class SamplerYcbcrConversionKHRDeleter
28279 {
28280 public:
28281 SamplerYcbcrConversionKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28282 : m_device( device )
28283 , m_allocator( allocator )
28284 {}
28285
28286 void operator()( SamplerYcbcrConversionKHR samplerYcbcrConversionKHR )
28287 {
28288 m_device.destroySamplerYcbcrConversionKHR( samplerYcbcrConversionKHR, m_allocator );
28289 }
28290
28291 private:
28292 Device m_device;
28293 Optional<const AllocationCallbacks> m_allocator;
28294 };
28295
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028296 class SemaphoreDeleter
28297 {
28298 public:
28299 SemaphoreDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28300 : m_device( device )
28301 , m_allocator( allocator )
28302 {}
28303
28304 void operator()( Semaphore semaphore )
28305 {
28306 m_device.destroySemaphore( semaphore, m_allocator );
28307 }
28308
28309 private:
28310 Device m_device;
28311 Optional<const AllocationCallbacks> m_allocator;
28312 };
28313
28314 class ShaderModuleDeleter
28315 {
28316 public:
28317 ShaderModuleDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28318 : m_device( device )
28319 , m_allocator( allocator )
28320 {}
28321
28322 void operator()( ShaderModule shaderModule )
28323 {
28324 m_device.destroyShaderModule( shaderModule, m_allocator );
28325 }
28326
28327 private:
28328 Device m_device;
28329 Optional<const AllocationCallbacks> m_allocator;
28330 };
28331
28332 class SwapchainKHRDeleter
28333 {
28334 public:
28335 SwapchainKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28336 : m_device( device )
28337 , m_allocator( allocator )
28338 {}
28339
28340 void operator()( SwapchainKHR swapchainKHR )
28341 {
28342 m_device.destroySwapchainKHR( swapchainKHR, m_allocator );
28343 }
28344
28345 private:
28346 Device m_device;
28347 Optional<const AllocationCallbacks> m_allocator;
28348 };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060028349
28350 class ValidationCacheEXTDeleter
28351 {
28352 public:
28353 ValidationCacheEXTDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28354 : m_device( device )
28355 , m_allocator( allocator )
28356 {}
28357
28358 void operator()( ValidationCacheEXT validationCacheEXT )
28359 {
28360 m_device.destroyValidationCacheEXT( validationCacheEXT, m_allocator );
28361 }
28362
28363 private:
28364 Device m_device;
28365 Optional<const AllocationCallbacks> m_allocator;
28366 };
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028367#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28368
28369 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const char* pName ) const
28370 {
28371 return vkGetDeviceProcAddr( m_device, pName );
28372 }
28373#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28374 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const std::string & name ) const
28375 {
28376 return vkGetDeviceProcAddr( m_device, name.c_str() );
28377 }
28378#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28379
28380 VULKAN_HPP_INLINE void Device::destroy( const AllocationCallbacks* pAllocator ) const
28381 {
28382 vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28383 }
28384#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28385 VULKAN_HPP_INLINE void Device::destroy( Optional<const AllocationCallbacks> allocator ) const
28386 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028387 vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028388 }
28389#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28390
28391 VULKAN_HPP_INLINE void Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue ) const
28392 {
28393 vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( pQueue ) );
28394 }
28395#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28396 VULKAN_HPP_INLINE Queue Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const
28397 {
28398 Queue queue;
28399 vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( &queue ) );
28400 return queue;
28401 }
28402#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28403
28404#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28405 VULKAN_HPP_INLINE Result Device::waitIdle() const
28406 {
28407 return static_cast<Result>( vkDeviceWaitIdle( m_device ) );
28408 }
28409#else
28410 VULKAN_HPP_INLINE ResultValueType<void>::type Device::waitIdle() const
28411 {
28412 Result result = static_cast<Result>( vkDeviceWaitIdle( m_device ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028413 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::waitIdle" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028414 }
28415#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28416
28417 VULKAN_HPP_INLINE Result Device::allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory ) const
28418 {
28419 return static_cast<Result>( vkAllocateMemory( m_device, reinterpret_cast<const VkMemoryAllocateInfo*>( pAllocateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDeviceMemory*>( pMemory ) ) );
28420 }
28421#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28422 VULKAN_HPP_INLINE ResultValueType<DeviceMemory>::type Device::allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator ) const
28423 {
28424 DeviceMemory memory;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028425 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060028426 return createResultValue( result, memory, "VULKAN_HPP_NAMESPACE::Device::allocateMemory" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028427 }
28428#ifndef VULKAN_HPP_NO_SMART_HANDLE
28429 VULKAN_HPP_INLINE UniqueDeviceMemory Device::allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator ) const
28430 {
28431 DeviceMemoryDeleter deleter( *this, allocator );
28432 return UniqueDeviceMemory( allocateMemory( allocateInfo, allocator ), deleter );
28433 }
28434#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28435#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28436
28437 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator ) const
28438 {
28439 vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28440 }
28441#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28442 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator ) const
28443 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028444 vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028445 }
28446#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28447
28448 VULKAN_HPP_INLINE Result Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData ) const
28449 {
28450 return static_cast<Result>( vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), ppData ) );
28451 }
28452#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28453 VULKAN_HPP_INLINE ResultValueType<void*>::type Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags ) const
28454 {
28455 void* pData;
28456 Result result = static_cast<Result>( vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), &pData ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028457 return createResultValue( result, pData, "VULKAN_HPP_NAMESPACE::Device::mapMemory" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028458 }
28459#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28460
28461 VULKAN_HPP_INLINE void Device::unmapMemory( DeviceMemory memory ) const
28462 {
28463 vkUnmapMemory( m_device, static_cast<VkDeviceMemory>( memory ) );
28464 }
28465
28466 VULKAN_HPP_INLINE Result Device::flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const
28467 {
28468 return static_cast<Result>( vkFlushMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
28469 }
28470#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28471 VULKAN_HPP_INLINE ResultValueType<void>::type Device::flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const
28472 {
28473 Result result = static_cast<Result>( vkFlushMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028474 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::flushMappedMemoryRanges" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028475 }
28476#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28477
28478 VULKAN_HPP_INLINE Result Device::invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const
28479 {
28480 return static_cast<Result>( vkInvalidateMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
28481 }
28482#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28483 VULKAN_HPP_INLINE ResultValueType<void>::type Device::invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const
28484 {
28485 Result result = static_cast<Result>( vkInvalidateMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028486 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::invalidateMappedMemoryRanges" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028487 }
28488#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28489
28490 VULKAN_HPP_INLINE void Device::getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes ) const
28491 {
28492 vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), pCommittedMemoryInBytes );
28493 }
28494#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28495 VULKAN_HPP_INLINE DeviceSize Device::getMemoryCommitment( DeviceMemory memory ) const
28496 {
28497 DeviceSize committedMemoryInBytes;
28498 vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), &committedMemoryInBytes );
28499 return committedMemoryInBytes;
28500 }
28501#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28502
28503 VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements ) const
28504 {
28505 vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
28506 }
28507#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28508 VULKAN_HPP_INLINE MemoryRequirements Device::getBufferMemoryRequirements( Buffer buffer ) const
28509 {
28510 MemoryRequirements memoryRequirements;
28511 vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
28512 return memoryRequirements;
28513 }
28514#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28515
28516#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28517 VULKAN_HPP_INLINE Result Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const
28518 {
28519 return static_cast<Result>( vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
28520 }
28521#else
28522 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const
28523 {
28524 Result result = static_cast<Result>( vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028525 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::bindBufferMemory" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028526 }
28527#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28528
28529 VULKAN_HPP_INLINE void Device::getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements ) const
28530 {
28531 vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
28532 }
28533#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28534 VULKAN_HPP_INLINE MemoryRequirements Device::getImageMemoryRequirements( Image image ) const
28535 {
28536 MemoryRequirements memoryRequirements;
28537 vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
28538 return memoryRequirements;
28539 }
28540#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28541
28542#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28543 VULKAN_HPP_INLINE Result Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const
28544 {
28545 return static_cast<Result>( vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
28546 }
28547#else
28548 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const
28549 {
28550 Result result = static_cast<Result>( vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028551 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::bindImageMemory" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028552 }
28553#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28554
28555 VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements ) const
28556 {
28557 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), pSparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( pSparseMemoryRequirements ) );
28558 }
28559#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28560 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060028561 VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements,Allocator> Device::getImageSparseMemoryRequirements( Image image ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028562 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060028563 std::vector<SparseImageMemoryRequirements,Allocator> sparseMemoryRequirements;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028564 uint32_t sparseMemoryRequirementCount;
28565 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, nullptr );
28566 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
28567 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( sparseMemoryRequirements.data() ) );
28568 return sparseMemoryRequirements;
28569 }
28570#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28571
28572 VULKAN_HPP_INLINE Result Device::createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
28573 {
28574 return static_cast<Result>( vkCreateFence( m_device, reinterpret_cast<const VkFenceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
28575 }
28576#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28577 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28578 {
28579 Fence fence;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028580 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060028581 return createResultValue( result, fence, "VULKAN_HPP_NAMESPACE::Device::createFence" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028582 }
28583#ifndef VULKAN_HPP_NO_SMART_HANDLE
28584 VULKAN_HPP_INLINE UniqueFence Device::createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28585 {
28586 FenceDeleter deleter( *this, allocator );
28587 return UniqueFence( createFence( createInfo, allocator ), deleter );
28588 }
28589#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28590#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28591
28592 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, const AllocationCallbacks* pAllocator ) const
28593 {
28594 vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28595 }
28596#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28597 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator ) const
28598 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028599 vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028600 }
28601#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28602
28603 VULKAN_HPP_INLINE Result Device::resetFences( uint32_t fenceCount, const Fence* pFences ) const
28604 {
28605 return static_cast<Result>( vkResetFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ) ) );
28606 }
28607#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28608 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetFences( ArrayProxy<const Fence> fences ) const
28609 {
28610 Result result = static_cast<Result>( vkResetFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028611 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::resetFences" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028612 }
28613#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28614
28615#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28616 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence ) const
28617 {
28618 return static_cast<Result>( vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
28619 }
28620#else
28621 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence ) const
28622 {
28623 Result result = static_cast<Result>( vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028624 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::getFenceStatus", { Result::eSuccess, Result::eNotReady } );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028625 }
28626#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28627
28628 VULKAN_HPP_INLINE Result Device::waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout ) const
28629 {
28630 return static_cast<Result>( vkWaitForFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ), waitAll, timeout ) );
28631 }
28632#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28633 VULKAN_HPP_INLINE Result Device::waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout ) const
28634 {
28635 Result result = static_cast<Result>( vkWaitForFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ), waitAll, timeout ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028636 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::waitForFences", { Result::eSuccess, Result::eTimeout } );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028637 }
28638#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28639
28640 VULKAN_HPP_INLINE Result Device::createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore ) const
28641 {
28642 return static_cast<Result>( vkCreateSemaphore( m_device, reinterpret_cast<const VkSemaphoreCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSemaphore*>( pSemaphore ) ) );
28643 }
28644#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28645 VULKAN_HPP_INLINE ResultValueType<Semaphore>::type Device::createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28646 {
28647 Semaphore semaphore;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028648 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060028649 return createResultValue( result, semaphore, "VULKAN_HPP_NAMESPACE::Device::createSemaphore" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028650 }
28651#ifndef VULKAN_HPP_NO_SMART_HANDLE
28652 VULKAN_HPP_INLINE UniqueSemaphore Device::createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28653 {
28654 SemaphoreDeleter deleter( *this, allocator );
28655 return UniqueSemaphore( createSemaphore( createInfo, allocator ), deleter );
28656 }
28657#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28658#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28659
28660 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator ) const
28661 {
28662 vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28663 }
28664#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28665 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator ) const
28666 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028667 vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028668 }
28669#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28670
28671 VULKAN_HPP_INLINE Result Device::createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent ) const
28672 {
28673 return static_cast<Result>( vkCreateEvent( m_device, reinterpret_cast<const VkEventCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkEvent*>( pEvent ) ) );
28674 }
28675#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28676 VULKAN_HPP_INLINE ResultValueType<Event>::type Device::createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28677 {
28678 Event event;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028679 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060028680 return createResultValue( result, event, "VULKAN_HPP_NAMESPACE::Device::createEvent" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028681 }
28682#ifndef VULKAN_HPP_NO_SMART_HANDLE
28683 VULKAN_HPP_INLINE UniqueEvent Device::createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28684 {
28685 EventDeleter deleter( *this, allocator );
28686 return UniqueEvent( createEvent( createInfo, allocator ), deleter );
28687 }
28688#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28689#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28690
28691 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, const AllocationCallbacks* pAllocator ) const
28692 {
28693 vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28694 }
28695#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28696 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, Optional<const AllocationCallbacks> allocator ) const
28697 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028698 vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028699 }
28700#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28701
28702#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28703 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event ) const
28704 {
28705 return static_cast<Result>( vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
28706 }
28707#else
28708 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event ) const
28709 {
28710 Result result = static_cast<Result>( vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028711 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::getEventStatus", { Result::eEventSet, Result::eEventReset } );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028712 }
28713#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28714
28715#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28716 VULKAN_HPP_INLINE Result Device::setEvent( Event event ) const
28717 {
28718 return static_cast<Result>( vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
28719 }
28720#else
28721 VULKAN_HPP_INLINE ResultValueType<void>::type Device::setEvent( Event event ) const
28722 {
28723 Result result = static_cast<Result>( vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028724 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::setEvent" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028725 }
28726#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28727
28728#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28729 VULKAN_HPP_INLINE Result Device::resetEvent( Event event ) const
28730 {
28731 return static_cast<Result>( vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
28732 }
28733#else
28734 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetEvent( Event event ) const
28735 {
28736 Result result = static_cast<Result>( vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028737 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::resetEvent" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028738 }
28739#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28740
28741 VULKAN_HPP_INLINE Result Device::createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool ) const
28742 {
28743 return static_cast<Result>( vkCreateQueryPool( m_device, reinterpret_cast<const VkQueryPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkQueryPool*>( pQueryPool ) ) );
28744 }
28745#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28746 VULKAN_HPP_INLINE ResultValueType<QueryPool>::type Device::createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28747 {
28748 QueryPool queryPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028749 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060028750 return createResultValue( result, queryPool, "VULKAN_HPP_NAMESPACE::Device::createQueryPool" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028751 }
28752#ifndef VULKAN_HPP_NO_SMART_HANDLE
28753 VULKAN_HPP_INLINE UniqueQueryPool Device::createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28754 {
28755 QueryPoolDeleter deleter( *this, allocator );
28756 return UniqueQueryPool( createQueryPool( createInfo, allocator ), deleter );
28757 }
28758#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28759#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28760
28761 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator ) const
28762 {
28763 vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28764 }
28765#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28766 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator ) const
28767 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028768 vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028769 }
28770#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28771
28772 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, DeviceSize stride, QueryResultFlags flags ) const
28773 {
28774 return static_cast<Result>( vkGetQueryPoolResults( m_device, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, dataSize, pData, stride, static_cast<VkQueryResultFlags>( flags ) ) );
28775 }
28776#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28777 template <typename T>
28778 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, ArrayProxy<T> data, DeviceSize stride, QueryResultFlags flags ) const
28779 {
28780 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 ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028781 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::getQueryPoolResults", { Result::eSuccess, Result::eNotReady } );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028782 }
28783#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28784
28785 VULKAN_HPP_INLINE Result Device::createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer ) const
28786 {
28787 return static_cast<Result>( vkCreateBuffer( m_device, reinterpret_cast<const VkBufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBuffer*>( pBuffer ) ) );
28788 }
28789#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28790 VULKAN_HPP_INLINE ResultValueType<Buffer>::type Device::createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28791 {
28792 Buffer buffer;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028793 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060028794 return createResultValue( result, buffer, "VULKAN_HPP_NAMESPACE::Device::createBuffer" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028795 }
28796#ifndef VULKAN_HPP_NO_SMART_HANDLE
28797 VULKAN_HPP_INLINE UniqueBuffer Device::createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28798 {
28799 BufferDeleter deleter( *this, allocator );
28800 return UniqueBuffer( createBuffer( createInfo, allocator ), deleter );
28801 }
28802#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28803#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28804
28805 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator ) const
28806 {
28807 vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28808 }
28809#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28810 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator ) const
28811 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028812 vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028813 }
28814#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28815
28816 VULKAN_HPP_INLINE Result Device::createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView ) const
28817 {
28818 return static_cast<Result>( vkCreateBufferView( m_device, reinterpret_cast<const VkBufferViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBufferView*>( pView ) ) );
28819 }
28820#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28821 VULKAN_HPP_INLINE ResultValueType<BufferView>::type Device::createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28822 {
28823 BufferView view;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028824 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060028825 return createResultValue( result, view, "VULKAN_HPP_NAMESPACE::Device::createBufferView" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028826 }
28827#ifndef VULKAN_HPP_NO_SMART_HANDLE
28828 VULKAN_HPP_INLINE UniqueBufferView Device::createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28829 {
28830 BufferViewDeleter deleter( *this, allocator );
28831 return UniqueBufferView( createBufferView( createInfo, allocator ), deleter );
28832 }
28833#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28834#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28835
28836 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator ) const
28837 {
28838 vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28839 }
28840#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28841 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator ) const
28842 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028843 vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028844 }
28845#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28846
28847 VULKAN_HPP_INLINE Result Device::createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage ) const
28848 {
28849 return static_cast<Result>( vkCreateImage( m_device, reinterpret_cast<const VkImageCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImage*>( pImage ) ) );
28850 }
28851#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28852 VULKAN_HPP_INLINE ResultValueType<Image>::type Device::createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28853 {
28854 Image image;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028855 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060028856 return createResultValue( result, image, "VULKAN_HPP_NAMESPACE::Device::createImage" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028857 }
28858#ifndef VULKAN_HPP_NO_SMART_HANDLE
28859 VULKAN_HPP_INLINE UniqueImage Device::createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28860 {
28861 ImageDeleter deleter( *this, allocator );
28862 return UniqueImage( createImage( createInfo, allocator ), deleter );
28863 }
28864#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28865#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28866
28867 VULKAN_HPP_INLINE void Device::destroyImage( Image image, const AllocationCallbacks* pAllocator ) const
28868 {
28869 vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28870 }
28871#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28872 VULKAN_HPP_INLINE void Device::destroyImage( Image image, Optional<const AllocationCallbacks> allocator ) const
28873 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028874 vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028875 }
28876#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28877
28878 VULKAN_HPP_INLINE void Device::getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout ) const
28879 {
28880 vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( pSubresource ), reinterpret_cast<VkSubresourceLayout*>( pLayout ) );
28881 }
28882#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28883 VULKAN_HPP_INLINE SubresourceLayout Device::getImageSubresourceLayout( Image image, const ImageSubresource & subresource ) const
28884 {
28885 SubresourceLayout layout;
28886 vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( &subresource ), reinterpret_cast<VkSubresourceLayout*>( &layout ) );
28887 return layout;
28888 }
28889#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28890
28891 VULKAN_HPP_INLINE Result Device::createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView ) const
28892 {
28893 return static_cast<Result>( vkCreateImageView( m_device, reinterpret_cast<const VkImageViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImageView*>( pView ) ) );
28894 }
28895#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28896 VULKAN_HPP_INLINE ResultValueType<ImageView>::type Device::createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28897 {
28898 ImageView view;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028899 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060028900 return createResultValue( result, view, "VULKAN_HPP_NAMESPACE::Device::createImageView" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028901 }
28902#ifndef VULKAN_HPP_NO_SMART_HANDLE
28903 VULKAN_HPP_INLINE UniqueImageView Device::createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28904 {
28905 ImageViewDeleter deleter( *this, allocator );
28906 return UniqueImageView( createImageView( createInfo, allocator ), deleter );
28907 }
28908#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28909#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28910
28911 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator ) const
28912 {
28913 vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28914 }
28915#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28916 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator ) const
28917 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028918 vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028919 }
28920#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28921
28922 VULKAN_HPP_INLINE Result Device::createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule ) const
28923 {
28924 return static_cast<Result>( vkCreateShaderModule( m_device, reinterpret_cast<const VkShaderModuleCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkShaderModule*>( pShaderModule ) ) );
28925 }
28926#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28927 VULKAN_HPP_INLINE ResultValueType<ShaderModule>::type Device::createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28928 {
28929 ShaderModule shaderModule;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028930 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060028931 return createResultValue( result, shaderModule, "VULKAN_HPP_NAMESPACE::Device::createShaderModule" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028932 }
28933#ifndef VULKAN_HPP_NO_SMART_HANDLE
28934 VULKAN_HPP_INLINE UniqueShaderModule Device::createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28935 {
28936 ShaderModuleDeleter deleter( *this, allocator );
28937 return UniqueShaderModule( createShaderModule( createInfo, allocator ), deleter );
28938 }
28939#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28940#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28941
28942 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator ) const
28943 {
28944 vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28945 }
28946#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28947 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator ) const
28948 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028949 vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028950 }
28951#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28952
28953 VULKAN_HPP_INLINE Result Device::createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache ) const
28954 {
28955 return static_cast<Result>( vkCreatePipelineCache( m_device, reinterpret_cast<const VkPipelineCacheCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineCache*>( pPipelineCache ) ) );
28956 }
28957#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28958 VULKAN_HPP_INLINE ResultValueType<PipelineCache>::type Device::createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28959 {
28960 PipelineCache pipelineCache;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028961 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060028962 return createResultValue( result, pipelineCache, "VULKAN_HPP_NAMESPACE::Device::createPipelineCache" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028963 }
28964#ifndef VULKAN_HPP_NO_SMART_HANDLE
28965 VULKAN_HPP_INLINE UniquePipelineCache Device::createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28966 {
28967 PipelineCacheDeleter deleter( *this, allocator );
28968 return UniquePipelineCache( createPipelineCache( createInfo, allocator ), deleter );
28969 }
28970#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28971#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28972
28973 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator ) const
28974 {
28975 vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28976 }
28977#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28978 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator ) const
28979 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028980 vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028981 }
28982#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28983
28984 VULKAN_HPP_INLINE Result Device::getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData ) const
28985 {
28986 return static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), pDataSize, pData ) );
28987 }
28988#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28989 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060028990 VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getPipelineCacheData( PipelineCache pipelineCache ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028991 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060028992 std::vector<uint8_t,Allocator> data;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028993 size_t dataSize;
28994 Result result;
28995 do
28996 {
28997 result = static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, nullptr ) );
28998 if ( ( result == Result::eSuccess ) && dataSize )
28999 {
29000 data.resize( dataSize );
29001 result = static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, reinterpret_cast<void*>( data.data() ) ) );
29002 }
29003 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029004 assert( dataSize <= data.size() );
29005 data.resize( dataSize );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029006 return createResultValue( result, data, "VULKAN_HPP_NAMESPACE::Device::getPipelineCacheData" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029007 }
29008#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29009
29010 VULKAN_HPP_INLINE Result Device::mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches ) const
29011 {
29012 return static_cast<Result>( vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCacheCount, reinterpret_cast<const VkPipelineCache*>( pSrcCaches ) ) );
29013 }
29014#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29015 VULKAN_HPP_INLINE ResultValueType<void>::type Device::mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches ) const
29016 {
29017 Result result = static_cast<Result>( vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCaches.size() , reinterpret_cast<const VkPipelineCache*>( srcCaches.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029018 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::mergePipelineCaches" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029019 }
29020#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29021
29022 VULKAN_HPP_INLINE Result Device::createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const
29023 {
29024 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 ) ) );
29025 }
29026#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29027 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029028 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029029 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029030 std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029031 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060029032 return createResultValue( result, pipelines, "VULKAN_HPP_NAMESPACE::Device::createGraphicsPipelines" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029033 }
29034 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29035 {
29036 Pipeline pipeline;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029037 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060029038 return createResultValue( result, pipeline, "VULKAN_HPP_NAMESPACE::Device::createGraphicsPipeline" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029039 }
29040#ifndef VULKAN_HPP_NO_SMART_HANDLE
29041 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029042 VULKAN_HPP_INLINE std::vector<UniquePipeline> Device::createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029043 {
29044 PipelineDeleter deleter( *this, allocator );
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029045 std::vector<Pipeline,Allocator> pipelines = createGraphicsPipelines( pipelineCache, createInfos, allocator );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029046 std::vector<UniquePipeline> uniquePipelines;
29047 uniquePipelines.reserve( pipelines.size() );
29048 for ( auto pipeline : pipelines )
29049 {
29050 uniquePipelines.push_back( UniquePipeline( pipeline, deleter ) );
29051 }
29052 return uniquePipelines;
29053 }
29054 VULKAN_HPP_INLINE UniquePipeline Device::createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29055 {
29056 PipelineDeleter deleter( *this, allocator );
29057 return UniquePipeline( createGraphicsPipeline( pipelineCache, createInfo, allocator ), deleter );
29058 }
29059#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29060#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29061
29062 VULKAN_HPP_INLINE Result Device::createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const
29063 {
29064 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 ) ) );
29065 }
29066#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29067 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029068 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029069 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029070 std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029071 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060029072 return createResultValue( result, pipelines, "VULKAN_HPP_NAMESPACE::Device::createComputePipelines" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029073 }
29074 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29075 {
29076 Pipeline pipeline;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029077 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060029078 return createResultValue( result, pipeline, "VULKAN_HPP_NAMESPACE::Device::createComputePipeline" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029079 }
29080#ifndef VULKAN_HPP_NO_SMART_HANDLE
29081 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029082 VULKAN_HPP_INLINE std::vector<UniquePipeline> Device::createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029083 {
29084 PipelineDeleter deleter( *this, allocator );
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029085 std::vector<Pipeline,Allocator> pipelines = createComputePipelines( pipelineCache, createInfos, allocator );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029086 std::vector<UniquePipeline> uniquePipelines;
29087 uniquePipelines.reserve( pipelines.size() );
29088 for ( auto pipeline : pipelines )
29089 {
29090 uniquePipelines.push_back( UniquePipeline( pipeline, deleter ) );
29091 }
29092 return uniquePipelines;
29093 }
29094 VULKAN_HPP_INLINE UniquePipeline Device::createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29095 {
29096 PipelineDeleter deleter( *this, allocator );
29097 return UniquePipeline( createComputePipeline( pipelineCache, createInfo, allocator ), deleter );
29098 }
29099#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29100#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29101
29102 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator ) const
29103 {
29104 vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29105 }
29106#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29107 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator ) const
29108 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029109 vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029110 }
29111#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29112
29113 VULKAN_HPP_INLINE Result Device::createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout ) const
29114 {
29115 return static_cast<Result>( vkCreatePipelineLayout( m_device, reinterpret_cast<const VkPipelineLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineLayout*>( pPipelineLayout ) ) );
29116 }
29117#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29118 VULKAN_HPP_INLINE ResultValueType<PipelineLayout>::type Device::createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29119 {
29120 PipelineLayout pipelineLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029121 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060029122 return createResultValue( result, pipelineLayout, "VULKAN_HPP_NAMESPACE::Device::createPipelineLayout" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029123 }
29124#ifndef VULKAN_HPP_NO_SMART_HANDLE
29125 VULKAN_HPP_INLINE UniquePipelineLayout Device::createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29126 {
29127 PipelineLayoutDeleter deleter( *this, allocator );
29128 return UniquePipelineLayout( createPipelineLayout( createInfo, allocator ), deleter );
29129 }
29130#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29131#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29132
29133 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator ) const
29134 {
29135 vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29136 }
29137#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29138 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator ) const
29139 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029140 vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029141 }
29142#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29143
29144 VULKAN_HPP_INLINE Result Device::createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler ) const
29145 {
29146 return static_cast<Result>( vkCreateSampler( m_device, reinterpret_cast<const VkSamplerCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSampler*>( pSampler ) ) );
29147 }
29148#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29149 VULKAN_HPP_INLINE ResultValueType<Sampler>::type Device::createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29150 {
29151 Sampler sampler;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029152 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060029153 return createResultValue( result, sampler, "VULKAN_HPP_NAMESPACE::Device::createSampler" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029154 }
29155#ifndef VULKAN_HPP_NO_SMART_HANDLE
29156 VULKAN_HPP_INLINE UniqueSampler Device::createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29157 {
29158 SamplerDeleter deleter( *this, allocator );
29159 return UniqueSampler( createSampler( createInfo, allocator ), deleter );
29160 }
29161#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29162#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29163
29164 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator ) const
29165 {
29166 vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29167 }
29168#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29169 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator ) const
29170 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029171 vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029172 }
29173#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29174
29175 VULKAN_HPP_INLINE Result Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout ) const
29176 {
29177 return static_cast<Result>( vkCreateDescriptorSetLayout( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorSetLayout*>( pSetLayout ) ) );
29178 }
29179#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29180 VULKAN_HPP_INLINE ResultValueType<DescriptorSetLayout>::type Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29181 {
29182 DescriptorSetLayout setLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029183 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060029184 return createResultValue( result, setLayout, "VULKAN_HPP_NAMESPACE::Device::createDescriptorSetLayout" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029185 }
29186#ifndef VULKAN_HPP_NO_SMART_HANDLE
29187 VULKAN_HPP_INLINE UniqueDescriptorSetLayout Device::createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29188 {
29189 DescriptorSetLayoutDeleter deleter( *this, allocator );
29190 return UniqueDescriptorSetLayout( createDescriptorSetLayout( createInfo, allocator ), deleter );
29191 }
29192#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29193#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29194
29195 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator ) const
29196 {
29197 vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29198 }
29199#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29200 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator ) const
29201 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029202 vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029203 }
29204#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29205
29206 VULKAN_HPP_INLINE Result Device::createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool ) const
29207 {
29208 return static_cast<Result>( vkCreateDescriptorPool( m_device, reinterpret_cast<const VkDescriptorPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorPool*>( pDescriptorPool ) ) );
29209 }
29210#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29211 VULKAN_HPP_INLINE ResultValueType<DescriptorPool>::type Device::createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29212 {
29213 DescriptorPool descriptorPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029214 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060029215 return createResultValue( result, descriptorPool, "VULKAN_HPP_NAMESPACE::Device::createDescriptorPool" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029216 }
29217#ifndef VULKAN_HPP_NO_SMART_HANDLE
29218 VULKAN_HPP_INLINE UniqueDescriptorPool Device::createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29219 {
29220 DescriptorPoolDeleter deleter( *this, allocator );
29221 return UniqueDescriptorPool( createDescriptorPool( createInfo, allocator ), deleter );
29222 }
29223#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29224#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29225
29226 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator ) const
29227 {
29228 vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29229 }
29230#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29231 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator ) const
29232 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029233 vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029234 }
29235#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29236
29237#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
29238 VULKAN_HPP_INLINE Result Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const
29239 {
29240 return static_cast<Result>( vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
29241 }
29242#else
29243 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const
29244 {
29245 Result result = static_cast<Result>( vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029246 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::resetDescriptorPool" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029247 }
29248#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29249
29250 VULKAN_HPP_INLINE Result Device::allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets ) const
29251 {
29252 return static_cast<Result>( vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkDescriptorSet*>( pDescriptorSets ) ) );
29253 }
29254#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29255 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029256 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type Device::allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029257 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029258 std::vector<DescriptorSet,Allocator> descriptorSets( allocateInfo.descriptorSetCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029259 Result result = static_cast<Result>( vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkDescriptorSet*>( descriptorSets.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029260 return createResultValue( result, descriptorSets, "VULKAN_HPP_NAMESPACE::Device::allocateDescriptorSets" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029261 }
29262#ifndef VULKAN_HPP_NO_SMART_HANDLE
29263 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029264 VULKAN_HPP_INLINE std::vector<UniqueDescriptorSet> Device::allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029265 {
29266 DescriptorSetDeleter deleter( *this, allocateInfo.descriptorPool );
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029267 std::vector<DescriptorSet,Allocator> descriptorSets = allocateDescriptorSets( allocateInfo );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029268 std::vector<UniqueDescriptorSet> uniqueDescriptorSets;
29269 uniqueDescriptorSets.reserve( descriptorSets.size() );
29270 for ( auto descriptorSet : descriptorSets )
29271 {
29272 uniqueDescriptorSets.push_back( UniqueDescriptorSet( descriptorSet, deleter ) );
29273 }
29274 return uniqueDescriptorSets;
29275 }
29276#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29277#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29278
29279 VULKAN_HPP_INLINE Result Device::freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets ) const
29280 {
29281 return static_cast<Result>( vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ) ) );
29282 }
29283#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29284 VULKAN_HPP_INLINE ResultValueType<void>::type Device::freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets ) const
29285 {
29286 Result result = static_cast<Result>( vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029287 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::freeDescriptorSets" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029288 }
29289#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29290
29291 VULKAN_HPP_INLINE void Device::updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies ) const
29292 {
29293 vkUpdateDescriptorSets( m_device, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ), descriptorCopyCount, reinterpret_cast<const VkCopyDescriptorSet*>( pDescriptorCopies ) );
29294 }
29295#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29296 VULKAN_HPP_INLINE void Device::updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies ) const
29297 {
29298 vkUpdateDescriptorSets( m_device, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ), descriptorCopies.size() , reinterpret_cast<const VkCopyDescriptorSet*>( descriptorCopies.data() ) );
29299 }
29300#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29301
29302 VULKAN_HPP_INLINE Result Device::createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer ) const
29303 {
29304 return static_cast<Result>( vkCreateFramebuffer( m_device, reinterpret_cast<const VkFramebufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFramebuffer*>( pFramebuffer ) ) );
29305 }
29306#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29307 VULKAN_HPP_INLINE ResultValueType<Framebuffer>::type Device::createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29308 {
29309 Framebuffer framebuffer;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029310 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060029311 return createResultValue( result, framebuffer, "VULKAN_HPP_NAMESPACE::Device::createFramebuffer" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029312 }
29313#ifndef VULKAN_HPP_NO_SMART_HANDLE
29314 VULKAN_HPP_INLINE UniqueFramebuffer Device::createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29315 {
29316 FramebufferDeleter deleter( *this, allocator );
29317 return UniqueFramebuffer( createFramebuffer( createInfo, allocator ), deleter );
29318 }
29319#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29320#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29321
29322 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator ) const
29323 {
29324 vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29325 }
29326#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29327 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator ) const
29328 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029329 vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029330 }
29331#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29332
29333 VULKAN_HPP_INLINE Result Device::createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass ) const
29334 {
29335 return static_cast<Result>( vkCreateRenderPass( m_device, reinterpret_cast<const VkRenderPassCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkRenderPass*>( pRenderPass ) ) );
29336 }
29337#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29338 VULKAN_HPP_INLINE ResultValueType<RenderPass>::type Device::createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29339 {
29340 RenderPass renderPass;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029341 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060029342 return createResultValue( result, renderPass, "VULKAN_HPP_NAMESPACE::Device::createRenderPass" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029343 }
29344#ifndef VULKAN_HPP_NO_SMART_HANDLE
29345 VULKAN_HPP_INLINE UniqueRenderPass Device::createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29346 {
29347 RenderPassDeleter deleter( *this, allocator );
29348 return UniqueRenderPass( createRenderPass( createInfo, allocator ), deleter );
29349 }
29350#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29351#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29352
29353 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator ) const
29354 {
29355 vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29356 }
29357#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29358 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator ) const
29359 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029360 vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029361 }
29362#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29363
29364 VULKAN_HPP_INLINE void Device::getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity ) const
29365 {
29366 vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( pGranularity ) );
29367 }
29368#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29369 VULKAN_HPP_INLINE Extent2D Device::getRenderAreaGranularity( RenderPass renderPass ) const
29370 {
29371 Extent2D granularity;
29372 vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( &granularity ) );
29373 return granularity;
29374 }
29375#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29376
29377 VULKAN_HPP_INLINE Result Device::createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool ) const
29378 {
29379 return static_cast<Result>( vkCreateCommandPool( m_device, reinterpret_cast<const VkCommandPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkCommandPool*>( pCommandPool ) ) );
29380 }
29381#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29382 VULKAN_HPP_INLINE ResultValueType<CommandPool>::type Device::createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29383 {
29384 CommandPool commandPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029385 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060029386 return createResultValue( result, commandPool, "VULKAN_HPP_NAMESPACE::Device::createCommandPool" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029387 }
29388#ifndef VULKAN_HPP_NO_SMART_HANDLE
29389 VULKAN_HPP_INLINE UniqueCommandPool Device::createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29390 {
29391 CommandPoolDeleter deleter( *this, allocator );
29392 return UniqueCommandPool( createCommandPool( createInfo, allocator ), deleter );
29393 }
29394#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29395#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29396
29397 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator ) const
29398 {
29399 vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29400 }
29401#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29402 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator ) const
29403 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029404 vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029405 }
29406#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29407
29408#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
29409 VULKAN_HPP_INLINE Result Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const
29410 {
29411 return static_cast<Result>( vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
29412 }
29413#else
29414 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const
29415 {
29416 Result result = static_cast<Result>( vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029417 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::resetCommandPool" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029418 }
29419#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29420
29421 VULKAN_HPP_INLINE Result Device::allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers ) const
29422 {
29423 return static_cast<Result>( vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkCommandBuffer*>( pCommandBuffers ) ) );
29424 }
29425#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29426 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029427 VULKAN_HPP_INLINE typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type Device::allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029428 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029429 std::vector<CommandBuffer,Allocator> commandBuffers( allocateInfo.commandBufferCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029430 Result result = static_cast<Result>( vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkCommandBuffer*>( commandBuffers.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029431 return createResultValue( result, commandBuffers, "VULKAN_HPP_NAMESPACE::Device::allocateCommandBuffers" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029432 }
29433#ifndef VULKAN_HPP_NO_SMART_HANDLE
29434 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029435 VULKAN_HPP_INLINE std::vector<UniqueCommandBuffer> Device::allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029436 {
29437 CommandBufferDeleter deleter( *this, allocateInfo.commandPool );
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029438 std::vector<CommandBuffer,Allocator> commandBuffers = allocateCommandBuffers( allocateInfo );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029439 std::vector<UniqueCommandBuffer> uniqueCommandBuffers;
29440 uniqueCommandBuffers.reserve( commandBuffers.size() );
29441 for ( auto commandBuffer : commandBuffers )
29442 {
29443 uniqueCommandBuffers.push_back( UniqueCommandBuffer( commandBuffer, deleter ) );
29444 }
29445 return uniqueCommandBuffers;
29446 }
29447#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29448#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29449
29450 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const
29451 {
29452 vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
29453 }
29454#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29455 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers ) const
29456 {
29457 vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
29458 }
29459#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29460
29461 VULKAN_HPP_INLINE Result Device::createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains ) const
29462 {
29463 return static_cast<Result>( vkCreateSharedSwapchainsKHR( m_device, swapchainCount, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfos ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchains ) ) );
29464 }
29465#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29466 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029467 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type Device::createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029468 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029469 std::vector<SwapchainKHR,Allocator> swapchains( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029470 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060029471 return createResultValue( result, swapchains, "VULKAN_HPP_NAMESPACE::Device::createSharedSwapchainsKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029472 }
29473 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29474 {
29475 SwapchainKHR swapchain;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029476 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060029477 return createResultValue( result, swapchain, "VULKAN_HPP_NAMESPACE::Device::createSharedSwapchainKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029478 }
29479#ifndef VULKAN_HPP_NO_SMART_HANDLE
29480 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029481 VULKAN_HPP_INLINE std::vector<UniqueSwapchainKHR> Device::createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029482 {
29483 SwapchainKHRDeleter deleter( *this, allocator );
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029484 std::vector<SwapchainKHR,Allocator> swapchainKHRs = createSharedSwapchainsKHR( createInfos, allocator );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029485 std::vector<UniqueSwapchainKHR> uniqueSwapchainKHRs;
29486 uniqueSwapchainKHRs.reserve( swapchainKHRs.size() );
29487 for ( auto swapchainKHR : swapchainKHRs )
29488 {
29489 uniqueSwapchainKHRs.push_back( UniqueSwapchainKHR( swapchainKHR, deleter ) );
29490 }
29491 return uniqueSwapchainKHRs;
29492 }
29493 VULKAN_HPP_INLINE UniqueSwapchainKHR Device::createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29494 {
29495 SwapchainKHRDeleter deleter( *this, allocator );
29496 return UniqueSwapchainKHR( createSharedSwapchainKHR( createInfo, allocator ), deleter );
29497 }
29498#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29499#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29500
29501 VULKAN_HPP_INLINE Result Device::createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain ) const
29502 {
29503 return static_cast<Result>( vkCreateSwapchainKHR( m_device, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchain ) ) );
29504 }
29505#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29506 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29507 {
29508 SwapchainKHR swapchain;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029509 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060029510 return createResultValue( result, swapchain, "VULKAN_HPP_NAMESPACE::Device::createSwapchainKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029511 }
29512#ifndef VULKAN_HPP_NO_SMART_HANDLE
29513 VULKAN_HPP_INLINE UniqueSwapchainKHR Device::createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29514 {
29515 SwapchainKHRDeleter deleter( *this, allocator );
29516 return UniqueSwapchainKHR( createSwapchainKHR( createInfo, allocator ), deleter );
29517 }
29518#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29519#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29520
29521 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator ) const
29522 {
29523 vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29524 }
29525#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29526 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator ) const
29527 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029528 vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029529 }
29530#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29531
29532 VULKAN_HPP_INLINE Result Device::getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages ) const
29533 {
29534 return static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), pSwapchainImageCount, reinterpret_cast<VkImage*>( pSwapchainImages ) ) );
29535 }
29536#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29537 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029538 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Image,Allocator>>::type Device::getSwapchainImagesKHR( SwapchainKHR swapchain ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029539 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029540 std::vector<Image,Allocator> swapchainImages;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029541 uint32_t swapchainImageCount;
29542 Result result;
29543 do
29544 {
29545 result = static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, nullptr ) );
29546 if ( ( result == Result::eSuccess ) && swapchainImageCount )
29547 {
29548 swapchainImages.resize( swapchainImageCount );
29549 result = static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, reinterpret_cast<VkImage*>( swapchainImages.data() ) ) );
29550 }
29551 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029552 assert( swapchainImageCount <= swapchainImages.size() );
29553 swapchainImages.resize( swapchainImageCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029554 return createResultValue( result, swapchainImages, "VULKAN_HPP_NAMESPACE::Device::getSwapchainImagesKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029555 }
29556#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29557
29558 VULKAN_HPP_INLINE Result Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex ) const
29559 {
29560 return static_cast<Result>( vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), pImageIndex ) );
29561 }
29562#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29563 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence ) const
29564 {
29565 uint32_t imageIndex;
29566 Result result = static_cast<Result>( vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), &imageIndex ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029567 return createResultValue( result, imageIndex, "VULKAN_HPP_NAMESPACE::Device::acquireNextImageKHR", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029568 }
29569#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29570
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029571 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT* pNameInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029572 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029573 return static_cast<Result>( vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>( pNameInfo ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029574 }
29575#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029576 VULKAN_HPP_INLINE ResultValueType<void>::type Device::debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT & nameInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029577 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029578 Result result = static_cast<Result>( vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>( &nameInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029579 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::debugMarkerSetObjectNameEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029580 }
29581#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29582
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029583 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT* pTagInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029584 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029585 return static_cast<Result>( vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>( pTagInfo ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029586 }
29587#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029588 VULKAN_HPP_INLINE ResultValueType<void>::type Device::debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT & tagInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029589 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029590 Result result = static_cast<Result>( vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>( &tagInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029591 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::debugMarkerSetObjectTagEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029592 }
29593#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29594
29595#ifdef VK_USE_PLATFORM_WIN32_KHR
29596 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const
29597 {
29598 return static_cast<Result>( vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), pHandle ) );
29599 }
29600#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29601 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType ) const
29602 {
29603 HANDLE handle;
29604 Result result = static_cast<Result>( vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), &handle ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029605 return createResultValue( result, handle, "VULKAN_HPP_NAMESPACE::Device::getMemoryWin32HandleNV" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029606 }
29607#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29608#endif /*VK_USE_PLATFORM_WIN32_KHR*/
29609
29610 VULKAN_HPP_INLINE Result Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const
29611 {
29612 return static_cast<Result>( vkCreateIndirectCommandsLayoutNVX( m_device, reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkIndirectCommandsLayoutNVX*>( pIndirectCommandsLayout ) ) );
29613 }
29614#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29615 VULKAN_HPP_INLINE ResultValueType<IndirectCommandsLayoutNVX>::type Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
29616 {
29617 IndirectCommandsLayoutNVX indirectCommandsLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029618 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060029619 return createResultValue( result, indirectCommandsLayout, "VULKAN_HPP_NAMESPACE::Device::createIndirectCommandsLayoutNVX" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029620 }
29621#ifndef VULKAN_HPP_NO_SMART_HANDLE
29622 VULKAN_HPP_INLINE UniqueIndirectCommandsLayoutNVX Device::createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
29623 {
29624 IndirectCommandsLayoutNVXDeleter deleter( *this, allocator );
29625 return UniqueIndirectCommandsLayoutNVX( createIndirectCommandsLayoutNVX( createInfo, allocator ), deleter );
29626 }
29627#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29628#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29629
29630 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator ) const
29631 {
29632 vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29633 }
29634#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29635 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator ) const
29636 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029637 vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029638 }
29639#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29640
29641 VULKAN_HPP_INLINE Result Device::createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable ) const
29642 {
29643 return static_cast<Result>( vkCreateObjectTableNVX( m_device, reinterpret_cast<const VkObjectTableCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkObjectTableNVX*>( pObjectTable ) ) );
29644 }
29645#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29646 VULKAN_HPP_INLINE ResultValueType<ObjectTableNVX>::type Device::createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
29647 {
29648 ObjectTableNVX objectTable;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029649 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060029650 return createResultValue( result, objectTable, "VULKAN_HPP_NAMESPACE::Device::createObjectTableNVX" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029651 }
29652#ifndef VULKAN_HPP_NO_SMART_HANDLE
29653 VULKAN_HPP_INLINE UniqueObjectTableNVX Device::createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
29654 {
29655 ObjectTableNVXDeleter deleter( *this, allocator );
29656 return UniqueObjectTableNVX( createObjectTableNVX( createInfo, allocator ), deleter );
29657 }
29658#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29659#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29660
29661 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator ) const
29662 {
29663 vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29664 }
29665#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29666 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator ) const
29667 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029668 vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029669 }
29670#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29671
29672 VULKAN_HPP_INLINE Result Device::registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const
29673 {
29674 return static_cast<Result>( vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectTableEntryNVX* const*>( ppObjectTableEntries ), pObjectIndices ) );
29675 }
29676#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29677 VULKAN_HPP_INLINE ResultValueType<void>::type Device::registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices ) const
29678 {
29679#ifdef VULKAN_HPP_NO_EXCEPTIONS
29680 assert( pObjectTableEntries.size() == objectIndices.size() );
29681#else
29682 if ( pObjectTableEntries.size() != objectIndices.size() )
29683 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029684 throw LogicError( "VULKAN_HPP_NAMESPACE::Device::registerObjectsNVX: pObjectTableEntries.size() != objectIndices.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029685 }
29686#endif // VULKAN_HPP_NO_EXCEPTIONS
29687 Result result = static_cast<Result>( vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), pObjectTableEntries.size() , reinterpret_cast<const VkObjectTableEntryNVX* const*>( pObjectTableEntries.data() ), objectIndices.data() ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029688 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::registerObjectsNVX" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029689 }
29690#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29691
29692 VULKAN_HPP_INLINE Result Device::unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const
29693 {
29694 return static_cast<Result>( vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectEntryTypeNVX*>( pObjectEntryTypes ), pObjectIndices ) );
29695 }
29696#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29697 VULKAN_HPP_INLINE ResultValueType<void>::type Device::unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices ) const
29698 {
29699#ifdef VULKAN_HPP_NO_EXCEPTIONS
29700 assert( objectEntryTypes.size() == objectIndices.size() );
29701#else
29702 if ( objectEntryTypes.size() != objectIndices.size() )
29703 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029704 throw LogicError( "VULKAN_HPP_NAMESPACE::Device::unregisterObjectsNVX: objectEntryTypes.size() != objectIndices.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029705 }
29706#endif // VULKAN_HPP_NO_EXCEPTIONS
29707 Result result = static_cast<Result>( vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectEntryTypes.size() , reinterpret_cast<const VkObjectEntryTypeNVX*>( objectEntryTypes.data() ), objectIndices.data() ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029708 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::unregisterObjectsNVX" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029709 }
29710#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29711
29712 VULKAN_HPP_INLINE void Device::trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags ) const
29713 {
29714 vkTrimCommandPoolKHR( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolTrimFlagsKHR>( flags ) );
29715 }
29716
Mark Youngabc2d6e2017-07-07 07:59:56 -060029717#ifdef VK_USE_PLATFORM_WIN32_KHR
29718 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const
Mark Young0f183a82017-02-28 09:58:04 -070029719 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029720 return static_cast<Result>( vkGetMemoryWin32HandleKHR( m_device, reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR*>( pGetWin32HandleInfo ), pHandle ) );
Mark Young0f183a82017-02-28 09:58:04 -070029721 }
29722#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029723 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR & getWin32HandleInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029724 {
29725 HANDLE handle;
Mark Youngabc2d6e2017-07-07 07:59:56 -060029726 Result result = static_cast<Result>( vkGetMemoryWin32HandleKHR( m_device, reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR*>( &getWin32HandleInfo ), &handle ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029727 return createResultValue( result, handle, "VULKAN_HPP_NAMESPACE::Device::getMemoryWin32HandleKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029728 }
29729#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060029730#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070029731
Mark Youngabc2d6e2017-07-07 07:59:56 -060029732#ifdef VK_USE_PLATFORM_WIN32_KHR
29733 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle, MemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties ) const
Mark Young0f183a82017-02-28 09:58:04 -070029734 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029735 return static_cast<Result>( vkGetMemoryWin32HandlePropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHR*>( pMemoryWin32HandleProperties ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029736 }
29737#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029738 VULKAN_HPP_INLINE ResultValueType<MemoryWin32HandlePropertiesKHR>::type Device::getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle ) const
Mark Young0f183a82017-02-28 09:58:04 -070029739 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029740 MemoryWin32HandlePropertiesKHR memoryWin32HandleProperties;
29741 Result result = static_cast<Result>( vkGetMemoryWin32HandlePropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHR*>( &memoryWin32HandleProperties ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029742 return createResultValue( result, memoryWin32HandleProperties, "VULKAN_HPP_NAMESPACE::Device::getMemoryWin32HandlePropertiesKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029743 }
29744#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060029745#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070029746
Mark Youngabc2d6e2017-07-07 07:59:56 -060029747 VULKAN_HPP_INLINE Result Device::getMemoryFdKHR( const MemoryGetFdInfoKHR* pGetFdInfo, int* pFd ) const
Mark Young0f183a82017-02-28 09:58:04 -070029748 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029749 return static_cast<Result>( vkGetMemoryFdKHR( m_device, reinterpret_cast<const VkMemoryGetFdInfoKHR*>( pGetFdInfo ), pFd ) );
Mark Young0f183a82017-02-28 09:58:04 -070029750 }
29751#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029752 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getMemoryFdKHR( const MemoryGetFdInfoKHR & getFdInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029753 {
29754 int fd;
Mark Youngabc2d6e2017-07-07 07:59:56 -060029755 Result result = static_cast<Result>( vkGetMemoryFdKHR( m_device, reinterpret_cast<const VkMemoryGetFdInfoKHR*>( &getFdInfo ), &fd ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029756 return createResultValue( result, fd, "VULKAN_HPP_NAMESPACE::Device::getMemoryFdKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029757 }
29758#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29759
Mark Youngabc2d6e2017-07-07 07:59:56 -060029760 VULKAN_HPP_INLINE Result Device::getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, int fd, MemoryFdPropertiesKHR* pMemoryFdProperties ) const
Mark Young0f183a82017-02-28 09:58:04 -070029761 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029762 return static_cast<Result>( vkGetMemoryFdPropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHR*>( pMemoryFdProperties ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029763 }
29764#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029765 VULKAN_HPP_INLINE ResultValueType<MemoryFdPropertiesKHR>::type Device::getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, int fd ) const
Mark Young0f183a82017-02-28 09:58:04 -070029766 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029767 MemoryFdPropertiesKHR memoryFdProperties;
29768 Result result = static_cast<Result>( vkGetMemoryFdPropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHR*>( &memoryFdProperties ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029769 return createResultValue( result, memoryFdProperties, "VULKAN_HPP_NAMESPACE::Device::getMemoryFdPropertiesKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029770 }
29771#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29772
Mark Youngabc2d6e2017-07-07 07:59:56 -060029773#ifdef VK_USE_PLATFORM_WIN32_KHR
29774 VULKAN_HPP_INLINE Result Device::getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const
Mark Young0f183a82017-02-28 09:58:04 -070029775 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029776 return static_cast<Result>( vkGetSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR*>( pGetWin32HandleInfo ), pHandle ) );
Mark Young0f183a82017-02-28 09:58:04 -070029777 }
29778#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029779 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029780 {
29781 HANDLE handle;
Mark Youngabc2d6e2017-07-07 07:59:56 -060029782 Result result = static_cast<Result>( vkGetSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR*>( &getWin32HandleInfo ), &handle ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029783 return createResultValue( result, handle, "VULKAN_HPP_NAMESPACE::Device::getSemaphoreWin32HandleKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029784 }
29785#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060029786#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070029787
Mark Youngabc2d6e2017-07-07 07:59:56 -060029788#ifdef VK_USE_PLATFORM_WIN32_KHR
29789 VULKAN_HPP_INLINE Result Device::importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029790 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029791 return static_cast<Result>( vkImportSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR*>( pImportSemaphoreWin32HandleInfo ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029792 }
29793#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029794 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029795 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029796 Result result = static_cast<Result>( vkImportSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR*>( &importSemaphoreWin32HandleInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029797 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::importSemaphoreWin32HandleKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029798 }
29799#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060029800#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070029801
Mark Youngabc2d6e2017-07-07 07:59:56 -060029802 VULKAN_HPP_INLINE Result Device::getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd ) const
Mark Young0f183a82017-02-28 09:58:04 -070029803 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029804 return static_cast<Result>( vkGetSemaphoreFdKHR( m_device, reinterpret_cast<const VkSemaphoreGetFdInfoKHR*>( pGetFdInfo ), pFd ) );
Mark Young0f183a82017-02-28 09:58:04 -070029805 }
29806#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029807 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR & getFdInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029808 {
29809 int fd;
Mark Youngabc2d6e2017-07-07 07:59:56 -060029810 Result result = static_cast<Result>( vkGetSemaphoreFdKHR( m_device, reinterpret_cast<const VkSemaphoreGetFdInfoKHR*>( &getFdInfo ), &fd ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029811 return createResultValue( result, fd, "VULKAN_HPP_NAMESPACE::Device::getSemaphoreFdKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029812 }
29813#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29814
Mark Youngabc2d6e2017-07-07 07:59:56 -060029815 VULKAN_HPP_INLINE Result Device::importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029816 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029817 return static_cast<Result>( vkImportSemaphoreFdKHR( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHR*>( pImportSemaphoreFdInfo ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029818 }
29819#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029820 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029821 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029822 Result result = static_cast<Result>( vkImportSemaphoreFdKHR( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHR*>( &importSemaphoreFdInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029823 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::importSemaphoreFdKHR" );
Mark Youngabc2d6e2017-07-07 07:59:56 -060029824 }
29825#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29826
29827#ifdef VK_USE_PLATFORM_WIN32_KHR
29828 VULKAN_HPP_INLINE Result Device::getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const
29829 {
29830 return static_cast<Result>( vkGetFenceWin32HandleKHR( m_device, reinterpret_cast<const VkFenceGetWin32HandleInfoKHR*>( pGetWin32HandleInfo ), pHandle ) );
29831 }
29832#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29833 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR & getWin32HandleInfo ) const
29834 {
29835 HANDLE handle;
29836 Result result = static_cast<Result>( vkGetFenceWin32HandleKHR( m_device, reinterpret_cast<const VkFenceGetWin32HandleInfoKHR*>( &getWin32HandleInfo ), &handle ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029837 return createResultValue( result, handle, "VULKAN_HPP_NAMESPACE::Device::getFenceWin32HandleKHR" );
Mark Youngabc2d6e2017-07-07 07:59:56 -060029838 }
29839#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29840#endif /*VK_USE_PLATFORM_WIN32_KHR*/
29841
29842#ifdef VK_USE_PLATFORM_WIN32_KHR
29843 VULKAN_HPP_INLINE Result Device::importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo ) const
29844 {
29845 return static_cast<Result>( vkImportFenceWin32HandleKHR( m_device, reinterpret_cast<const VkImportFenceWin32HandleInfoKHR*>( pImportFenceWin32HandleInfo ) ) );
29846 }
29847#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29848 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo ) const
29849 {
29850 Result result = static_cast<Result>( vkImportFenceWin32HandleKHR( m_device, reinterpret_cast<const VkImportFenceWin32HandleInfoKHR*>( &importFenceWin32HandleInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029851 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::importFenceWin32HandleKHR" );
Mark Youngabc2d6e2017-07-07 07:59:56 -060029852 }
29853#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29854#endif /*VK_USE_PLATFORM_WIN32_KHR*/
29855
29856 VULKAN_HPP_INLINE Result Device::getFenceFdKHR( const FenceGetFdInfoKHR* pGetFdInfo, int* pFd ) const
29857 {
29858 return static_cast<Result>( vkGetFenceFdKHR( m_device, reinterpret_cast<const VkFenceGetFdInfoKHR*>( pGetFdInfo ), pFd ) );
29859 }
29860#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29861 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getFenceFdKHR( const FenceGetFdInfoKHR & getFdInfo ) const
29862 {
29863 int fd;
29864 Result result = static_cast<Result>( vkGetFenceFdKHR( m_device, reinterpret_cast<const VkFenceGetFdInfoKHR*>( &getFdInfo ), &fd ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029865 return createResultValue( result, fd, "VULKAN_HPP_NAMESPACE::Device::getFenceFdKHR" );
Mark Youngabc2d6e2017-07-07 07:59:56 -060029866 }
29867#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29868
29869 VULKAN_HPP_INLINE Result Device::importFenceFdKHR( const ImportFenceFdInfoKHR* pImportFenceFdInfo ) const
29870 {
29871 return static_cast<Result>( vkImportFenceFdKHR( m_device, reinterpret_cast<const VkImportFenceFdInfoKHR*>( pImportFenceFdInfo ) ) );
29872 }
29873#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29874 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importFenceFdKHR( const ImportFenceFdInfoKHR & importFenceFdInfo ) const
29875 {
29876 Result result = static_cast<Result>( vkImportFenceFdKHR( m_device, reinterpret_cast<const VkImportFenceFdInfoKHR*>( &importFenceFdInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029877 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::importFenceFdKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029878 }
29879#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29880
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029881 VULKAN_HPP_INLINE Result Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo ) const
29882 {
29883 return static_cast<Result>( vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( pDisplayPowerInfo ) ) );
29884 }
29885#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29886 VULKAN_HPP_INLINE ResultValueType<void>::type Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo ) const
29887 {
29888 Result result = static_cast<Result>( vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( &displayPowerInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029889 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::displayPowerControlEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029890 }
29891#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29892
29893 VULKAN_HPP_INLINE Result Device::registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
29894 {
29895 return static_cast<Result>( vkRegisterDeviceEventEXT( m_device, reinterpret_cast<const VkDeviceEventInfoEXT*>( pDeviceEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
29896 }
29897#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060029898 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, Optional<const AllocationCallbacks> allocator ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029899 {
29900 Fence fence;
Lenny Komowb79f04a2017-09-18 17:07:00 -060029901 Result result = static_cast<Result>( vkRegisterDeviceEventEXT( m_device, reinterpret_cast<const VkDeviceEventInfoEXT*>( &deviceEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkFence*>( &fence ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029902 return createResultValue( result, fence, "VULKAN_HPP_NAMESPACE::Device::registerEventEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029903 }
29904#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29905
29906 VULKAN_HPP_INLINE Result Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
29907 {
29908 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 ) ) );
29909 }
29910#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060029911 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, Optional<const AllocationCallbacks> allocator ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029912 {
29913 Fence fence;
Lenny Komowb79f04a2017-09-18 17:07:00 -060029914 Result result = static_cast<Result>( vkRegisterDisplayEventEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayEventInfoEXT*>( &displayEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkFence*>( &fence ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029915 return createResultValue( result, fence, "VULKAN_HPP_NAMESPACE::Device::registerDisplayEventEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029916 }
29917#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29918
29919 VULKAN_HPP_INLINE Result Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const
29920 {
29921 return static_cast<Result>( vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), pCounterValue ) );
29922 }
29923#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29924 VULKAN_HPP_INLINE ResultValue<uint64_t> Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter ) const
29925 {
29926 uint64_t counterValue;
29927 Result result = static_cast<Result>( vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), &counterValue ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029928 return createResultValue( result, counterValue, "VULKAN_HPP_NAMESPACE::Device::getSwapchainCounterEXT", { Result::eSuccess, Result::eErrorDeviceLost, Result::eErrorOutOfDateKHR } );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029929 }
29930#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070029931
29932 VULKAN_HPP_INLINE void Device::getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ) const
29933 {
29934 vkGetDeviceGroupPeerMemoryFeaturesKHX( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlagsKHX*>( pPeerMemoryFeatures ) );
29935 }
29936#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29937 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX Device::getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const
29938 {
29939 PeerMemoryFeatureFlagsKHX peerMemoryFeatures;
29940 vkGetDeviceGroupPeerMemoryFeaturesKHX( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlagsKHX*>( &peerMemoryFeatures ) );
29941 return peerMemoryFeatures;
29942 }
29943#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29944
Lenny Komowb79f04a2017-09-18 17:07:00 -060029945 VULKAN_HPP_INLINE Result Device::bindBufferMemory2KHR( uint32_t bindInfoCount, const BindBufferMemoryInfoKHR* pBindInfos ) const
Mark Young0f183a82017-02-28 09:58:04 -070029946 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060029947 return static_cast<Result>( vkBindBufferMemory2KHR( m_device, bindInfoCount, reinterpret_cast<const VkBindBufferMemoryInfoKHR*>( pBindInfos ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029948 }
29949#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060029950 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory2KHR( ArrayProxy<const BindBufferMemoryInfoKHR> bindInfos ) const
Mark Young0f183a82017-02-28 09:58:04 -070029951 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060029952 Result result = static_cast<Result>( vkBindBufferMemory2KHR( m_device, bindInfos.size() , reinterpret_cast<const VkBindBufferMemoryInfoKHR*>( bindInfos.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029953 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::bindBufferMemory2KHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029954 }
29955#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29956
Lenny Komowb79f04a2017-09-18 17:07:00 -060029957 VULKAN_HPP_INLINE Result Device::bindImageMemory2KHR( uint32_t bindInfoCount, const BindImageMemoryInfoKHR* pBindInfos ) const
Mark Young0f183a82017-02-28 09:58:04 -070029958 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060029959 return static_cast<Result>( vkBindImageMemory2KHR( m_device, bindInfoCount, reinterpret_cast<const VkBindImageMemoryInfoKHR*>( pBindInfos ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029960 }
29961#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060029962 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory2KHR( ArrayProxy<const BindImageMemoryInfoKHR> bindInfos ) const
Mark Young0f183a82017-02-28 09:58:04 -070029963 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060029964 Result result = static_cast<Result>( vkBindImageMemory2KHR( m_device, bindInfos.size() , reinterpret_cast<const VkBindImageMemoryInfoKHR*>( bindInfos.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029965 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::bindImageMemory2KHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029966 }
29967#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29968
29969 VULKAN_HPP_INLINE Result Device::getGroupPresentCapabilitiesKHX( DeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ) const
29970 {
29971 return static_cast<Result>( vkGetDeviceGroupPresentCapabilitiesKHX( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHX*>( pDeviceGroupPresentCapabilities ) ) );
29972 }
29973#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29974 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentCapabilitiesKHX>::type Device::getGroupPresentCapabilitiesKHX() const
29975 {
29976 DeviceGroupPresentCapabilitiesKHX deviceGroupPresentCapabilities;
29977 Result result = static_cast<Result>( vkGetDeviceGroupPresentCapabilitiesKHX( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHX*>( &deviceGroupPresentCapabilities ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029978 return createResultValue( result, deviceGroupPresentCapabilities, "VULKAN_HPP_NAMESPACE::Device::getGroupPresentCapabilitiesKHX" );
Mark Young0f183a82017-02-28 09:58:04 -070029979 }
29980#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29981
29982 VULKAN_HPP_INLINE Result Device::getGroupSurfacePresentModesKHX( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHX* pModes ) const
29983 {
29984 return static_cast<Result>( vkGetDeviceGroupSurfacePresentModesKHX( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHX*>( pModes ) ) );
29985 }
29986#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29987 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentModeFlagsKHX>::type Device::getGroupSurfacePresentModesKHX( SurfaceKHR surface ) const
29988 {
29989 DeviceGroupPresentModeFlagsKHX modes;
29990 Result result = static_cast<Result>( vkGetDeviceGroupSurfacePresentModesKHX( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHX*>( &modes ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029991 return createResultValue( result, modes, "VULKAN_HPP_NAMESPACE::Device::getGroupSurfacePresentModesKHX" );
Mark Young0f183a82017-02-28 09:58:04 -070029992 }
29993#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29994
29995 VULKAN_HPP_INLINE Result Device::acquireNextImage2KHX( const AcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex ) const
29996 {
29997 return static_cast<Result>( vkAcquireNextImage2KHX( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHX*>( pAcquireInfo ), pImageIndex ) );
29998 }
29999#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30000 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImage2KHX( const AcquireNextImageInfoKHX & acquireInfo ) const
30001 {
30002 uint32_t imageIndex;
30003 Result result = static_cast<Result>( vkAcquireNextImage2KHX( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHX*>( &acquireInfo ), &imageIndex ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030004 return createResultValue( result, imageIndex, "VULKAN_HPP_NAMESPACE::Device::acquireNextImage2KHX", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
Mark Young0f183a82017-02-28 09:58:04 -070030005 }
30006#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30007
30008 VULKAN_HPP_INLINE Result Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) const
30009 {
30010 return static_cast<Result>( vkCreateDescriptorUpdateTemplateKHR( m_device, reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorUpdateTemplateKHR*>( pDescriptorUpdateTemplate ) ) );
30011 }
30012#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30013 VULKAN_HPP_INLINE ResultValueType<DescriptorUpdateTemplateKHR>::type Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
30014 {
30015 DescriptorUpdateTemplateKHR descriptorUpdateTemplate;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030016 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060030017 return createResultValue( result, descriptorUpdateTemplate, "VULKAN_HPP_NAMESPACE::Device::createDescriptorUpdateTemplateKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070030018 }
30019#ifndef VULKAN_HPP_NO_SMART_HANDLE
30020 VULKAN_HPP_INLINE UniqueDescriptorUpdateTemplateKHR Device::createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
30021 {
30022 DescriptorUpdateTemplateKHRDeleter deleter( *this, allocator );
30023 return UniqueDescriptorUpdateTemplateKHR( createDescriptorUpdateTemplateKHR( createInfo, allocator ), deleter );
30024 }
30025#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30026#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30027
30028 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const AllocationCallbacks* pAllocator ) const
30029 {
30030 vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
30031 }
30032#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30033 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator ) const
30034 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030035 vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070030036 }
30037#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30038
30039 VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData ) const
30040 {
30041 vkUpdateDescriptorSetWithTemplateKHR( m_device, static_cast<VkDescriptorSet>( descriptorSet ), static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), pData );
30042 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030043
30044 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata ) const
30045 {
30046 vkSetHdrMetadataEXT( m_device, swapchainCount, reinterpret_cast<const VkSwapchainKHR*>( pSwapchains ), reinterpret_cast<const VkHdrMetadataEXT*>( pMetadata ) );
30047 }
30048#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30049 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata ) const
30050 {
30051#ifdef VULKAN_HPP_NO_EXCEPTIONS
30052 assert( swapchains.size() == metadata.size() );
30053#else
30054 if ( swapchains.size() != metadata.size() )
30055 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030056 throw LogicError( "VULKAN_HPP_NAMESPACE::Device::setHdrMetadataEXT: swapchains.size() != metadata.size()" );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030057 }
30058#endif // VULKAN_HPP_NO_EXCEPTIONS
30059 vkSetHdrMetadataEXT( m_device, swapchains.size() , reinterpret_cast<const VkSwapchainKHR*>( swapchains.data() ), reinterpret_cast<const VkHdrMetadataEXT*>( metadata.data() ) );
30060 }
30061#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30062
Mark Lobodzinski54385432017-05-15 10:27:52 -060030063#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
30064 VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( SwapchainKHR swapchain ) const
30065 {
30066 return static_cast<Result>( vkGetSwapchainStatusKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ) ) );
30067 }
30068#else
30069 VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( SwapchainKHR swapchain ) const
30070 {
30071 Result result = static_cast<Result>( vkGetSwapchainStatusKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030072 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::getSwapchainStatusKHR", { Result::eSuccess, Result::eSuboptimalKHR } );
Mark Lobodzinski54385432017-05-15 10:27:52 -060030073 }
30074#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30075
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030076 VULKAN_HPP_INLINE Result Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const
30077 {
30078 return static_cast<Result>( vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( pDisplayTimingProperties ) ) );
30079 }
30080#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30081 VULKAN_HPP_INLINE ResultValueType<RefreshCycleDurationGOOGLE>::type Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain ) const
30082 {
30083 RefreshCycleDurationGOOGLE displayTimingProperties;
30084 Result result = static_cast<Result>( vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( &displayTimingProperties ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030085 return createResultValue( result, displayTimingProperties, "VULKAN_HPP_NAMESPACE::Device::getRefreshCycleDurationGOOGLE" );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030086 }
30087#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30088
30089 VULKAN_HPP_INLINE Result Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings ) const
30090 {
30091 return static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), pPresentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( pPresentationTimings ) ) );
30092 }
30093#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30094 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030095 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain ) const
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030096 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030097 std::vector<PastPresentationTimingGOOGLE,Allocator> presentationTimings;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030098 uint32_t presentationTimingCount;
30099 Result result = static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, nullptr ) );
30100 if ( ( result == Result::eSuccess ) && presentationTimingCount )
30101 {
30102 presentationTimings.resize( presentationTimingCount );
30103 result = static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( presentationTimings.data() ) ) );
30104 }
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030105 return createResultValue( result, presentationTimings, "VULKAN_HPP_NAMESPACE::Device::getPastPresentationTimingGOOGLE" );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030106 }
30107#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30108
Mark Youngabc2d6e2017-07-07 07:59:56 -060030109 VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR* pInfo, MemoryRequirements2KHR* pMemoryRequirements ) const
30110 {
30111 vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2KHR*>( pInfo ), reinterpret_cast<VkMemoryRequirements2KHR*>( pMemoryRequirements ) );
30112 }
30113#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30114 VULKAN_HPP_INLINE MemoryRequirements2KHR Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR & info ) const
30115 {
30116 MemoryRequirements2KHR memoryRequirements;
30117 vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2KHR*>( &info ), reinterpret_cast<VkMemoryRequirements2KHR*>( &memoryRequirements ) );
30118 return memoryRequirements;
30119 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030120 template <typename ...T>
30121 VULKAN_HPP_INLINE StructureChain<T...> Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR & info ) const
30122 {
30123 StructureChain<T...> structureChain;
30124 MemoryRequirements2KHR& memoryRequirements = structureChain.template get<MemoryRequirements2KHR>();
30125 vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2KHR*>( &info ), reinterpret_cast<VkMemoryRequirements2KHR*>( &memoryRequirements ) );
30126 return structureChain;
30127 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060030128#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30129
30130 VULKAN_HPP_INLINE void Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR* pInfo, MemoryRequirements2KHR* pMemoryRequirements ) const
30131 {
30132 vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2KHR*>( pInfo ), reinterpret_cast<VkMemoryRequirements2KHR*>( pMemoryRequirements ) );
30133 }
30134#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30135 VULKAN_HPP_INLINE MemoryRequirements2KHR Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR & info ) const
30136 {
30137 MemoryRequirements2KHR memoryRequirements;
30138 vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2KHR*>( &info ), reinterpret_cast<VkMemoryRequirements2KHR*>( &memoryRequirements ) );
30139 return memoryRequirements;
30140 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030141 template <typename ...T>
30142 VULKAN_HPP_INLINE StructureChain<T...> Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR & info ) const
30143 {
30144 StructureChain<T...> structureChain;
30145 MemoryRequirements2KHR& memoryRequirements = structureChain.template get<MemoryRequirements2KHR>();
30146 vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2KHR*>( &info ), reinterpret_cast<VkMemoryRequirements2KHR*>( &memoryRequirements ) );
30147 return structureChain;
30148 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060030149#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30150
30151 VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2KHR* pInfo, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements2KHR* pSparseMemoryRequirements ) const
30152 {
30153 vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2KHR*>( pInfo ), pSparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements2KHR*>( pSparseMemoryRequirements ) );
30154 }
30155#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30156 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030157 VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements2KHR,Allocator> Device::getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2KHR & info ) const
Mark Youngabc2d6e2017-07-07 07:59:56 -060030158 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030159 std::vector<SparseImageMemoryRequirements2KHR,Allocator> sparseMemoryRequirements;
Mark Youngabc2d6e2017-07-07 07:59:56 -060030160 uint32_t sparseMemoryRequirementCount;
30161 vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2KHR*>( &info ), &sparseMemoryRequirementCount, nullptr );
30162 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
30163 vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2KHR*>( &info ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements2KHR*>( sparseMemoryRequirements.data() ) );
30164 return sparseMemoryRequirements;
30165 }
30166#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30167
Lenny Komowb79f04a2017-09-18 17:07:00 -060030168 VULKAN_HPP_INLINE Result Device::createSamplerYcbcrConversionKHR( const SamplerYcbcrConversionCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SamplerYcbcrConversionKHR* pYcbcrConversion ) const
30169 {
30170 return static_cast<Result>( vkCreateSamplerYcbcrConversionKHR( m_device, reinterpret_cast<const VkSamplerYcbcrConversionCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSamplerYcbcrConversionKHR*>( pYcbcrConversion ) ) );
30171 }
30172#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30173 VULKAN_HPP_INLINE ResultValueType<SamplerYcbcrConversionKHR>::type Device::createSamplerYcbcrConversionKHR( const SamplerYcbcrConversionCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
30174 {
30175 SamplerYcbcrConversionKHR ycbcrConversion;
30176 Result result = static_cast<Result>( vkCreateSamplerYcbcrConversionKHR( m_device, reinterpret_cast<const VkSamplerYcbcrConversionCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSamplerYcbcrConversionKHR*>( &ycbcrConversion ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030177 return createResultValue( result, ycbcrConversion, "VULKAN_HPP_NAMESPACE::Device::createSamplerYcbcrConversionKHR" );
Lenny Komowb79f04a2017-09-18 17:07:00 -060030178 }
30179#ifndef VULKAN_HPP_NO_SMART_HANDLE
30180 VULKAN_HPP_INLINE UniqueSamplerYcbcrConversionKHR Device::createSamplerYcbcrConversionKHRUnique( const SamplerYcbcrConversionCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
30181 {
30182 SamplerYcbcrConversionKHRDeleter deleter( *this, allocator );
30183 return UniqueSamplerYcbcrConversionKHR( createSamplerYcbcrConversionKHR( createInfo, allocator ), deleter );
30184 }
30185#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30186#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30187
30188 VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversionKHR( SamplerYcbcrConversionKHR ycbcrConversion, const AllocationCallbacks* pAllocator ) const
30189 {
30190 vkDestroySamplerYcbcrConversionKHR( m_device, static_cast<VkSamplerYcbcrConversionKHR>( ycbcrConversion ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
30191 }
30192#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30193 VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversionKHR( SamplerYcbcrConversionKHR ycbcrConversion, Optional<const AllocationCallbacks> allocator ) const
30194 {
30195 vkDestroySamplerYcbcrConversionKHR( m_device, static_cast<VkSamplerYcbcrConversionKHR>( ycbcrConversion ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
30196 }
30197#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30198
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030199 VULKAN_HPP_INLINE Result Device::createValidationCacheEXT( const ValidationCacheCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, ValidationCacheEXT* pValidationCache ) const
30200 {
30201 return static_cast<Result>( vkCreateValidationCacheEXT( m_device, reinterpret_cast<const VkValidationCacheCreateInfoEXT*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkValidationCacheEXT*>( pValidationCache ) ) );
30202 }
30203#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30204 VULKAN_HPP_INLINE ResultValueType<ValidationCacheEXT>::type Device::createValidationCacheEXT( const ValidationCacheCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
30205 {
30206 ValidationCacheEXT validationCache;
30207 Result result = static_cast<Result>( vkCreateValidationCacheEXT( m_device, reinterpret_cast<const VkValidationCacheCreateInfoEXT*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkValidationCacheEXT*>( &validationCache ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030208 return createResultValue( result, validationCache, "VULKAN_HPP_NAMESPACE::Device::createValidationCacheEXT" );
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030209 }
30210#ifndef VULKAN_HPP_NO_SMART_HANDLE
30211 VULKAN_HPP_INLINE UniqueValidationCacheEXT Device::createValidationCacheEXTUnique( const ValidationCacheCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
30212 {
30213 ValidationCacheEXTDeleter deleter( *this, allocator );
30214 return UniqueValidationCacheEXT( createValidationCacheEXT( createInfo, allocator ), deleter );
30215 }
30216#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30217#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30218
30219 VULKAN_HPP_INLINE void Device::destroyValidationCacheEXT( ValidationCacheEXT validationCache, const AllocationCallbacks* pAllocator ) const
30220 {
30221 vkDestroyValidationCacheEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
30222 }
30223#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30224 VULKAN_HPP_INLINE void Device::destroyValidationCacheEXT( ValidationCacheEXT validationCache, Optional<const AllocationCallbacks> allocator ) const
30225 {
30226 vkDestroyValidationCacheEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
30227 }
30228#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30229
30230 VULKAN_HPP_INLINE Result Device::getValidationCacheDataEXT( ValidationCacheEXT validationCache, size_t* pDataSize, void* pData ) const
30231 {
30232 return static_cast<Result>( vkGetValidationCacheDataEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), pDataSize, pData ) );
30233 }
30234#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30235 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030236 VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getValidationCacheDataEXT( ValidationCacheEXT validationCache ) const
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030237 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030238 std::vector<uint8_t,Allocator> data;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030239 size_t dataSize;
30240 Result result;
30241 do
30242 {
30243 result = static_cast<Result>( vkGetValidationCacheDataEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), &dataSize, nullptr ) );
30244 if ( ( result == Result::eSuccess ) && dataSize )
30245 {
30246 data.resize( dataSize );
30247 result = static_cast<Result>( vkGetValidationCacheDataEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), &dataSize, reinterpret_cast<void*>( data.data() ) ) );
30248 }
30249 } while ( result == Result::eIncomplete );
30250 assert( dataSize <= data.size() );
30251 data.resize( dataSize );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030252 return createResultValue( result, data, "VULKAN_HPP_NAMESPACE::Device::getValidationCacheDataEXT" );
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030253 }
30254#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30255
30256 VULKAN_HPP_INLINE Result Device::mergeValidationCachesEXT( ValidationCacheEXT dstCache, uint32_t srcCacheCount, const ValidationCacheEXT* pSrcCaches ) const
30257 {
30258 return static_cast<Result>( vkMergeValidationCachesEXT( m_device, static_cast<VkValidationCacheEXT>( dstCache ), srcCacheCount, reinterpret_cast<const VkValidationCacheEXT*>( pSrcCaches ) ) );
30259 }
30260#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30261 VULKAN_HPP_INLINE ResultValueType<void>::type Device::mergeValidationCachesEXT( ValidationCacheEXT dstCache, ArrayProxy<const ValidationCacheEXT> srcCaches ) const
30262 {
30263 Result result = static_cast<Result>( vkMergeValidationCachesEXT( m_device, static_cast<VkValidationCacheEXT>( dstCache ), srcCaches.size() , reinterpret_cast<const VkValidationCacheEXT*>( srcCaches.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030264 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::mergeValidationCachesEXT" );
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030265 }
30266#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30267
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030268 VULKAN_HPP_INLINE Result Device::getShaderInfoAMD( Pipeline pipeline, ShaderStageFlagBits shaderStage, ShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo ) const
30269 {
30270 return static_cast<Result>( vkGetShaderInfoAMD( m_device, static_cast<VkPipeline>( pipeline ), static_cast<VkShaderStageFlagBits>( shaderStage ), static_cast<VkShaderInfoTypeAMD>( infoType ), pInfoSize, pInfo ) );
30271 }
30272#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30273 template <typename Allocator>
30274 VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getShaderInfoAMD( Pipeline pipeline, ShaderStageFlagBits shaderStage, ShaderInfoTypeAMD infoType ) const
30275 {
30276 std::vector<uint8_t,Allocator> info;
30277 size_t infoSize;
30278 Result result;
30279 do
30280 {
30281 result = static_cast<Result>( vkGetShaderInfoAMD( m_device, static_cast<VkPipeline>( pipeline ), static_cast<VkShaderStageFlagBits>( shaderStage ), static_cast<VkShaderInfoTypeAMD>( infoType ), &infoSize, nullptr ) );
30282 if ( ( result == Result::eSuccess ) && infoSize )
30283 {
30284 info.resize( infoSize );
30285 result = static_cast<Result>( vkGetShaderInfoAMD( m_device, static_cast<VkPipeline>( pipeline ), static_cast<VkShaderStageFlagBits>( shaderStage ), static_cast<VkShaderInfoTypeAMD>( infoType ), &infoSize, reinterpret_cast<void*>( info.data() ) ) );
30286 }
30287 } while ( result == Result::eIncomplete );
30288 assert( infoSize <= info.size() );
30289 info.resize( infoSize );
30290 return createResultValue( result, info, "VULKAN_HPP_NAMESPACE::Device::getShaderInfoAMD" );
30291 }
30292#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30293
Mark Lobodzinski417d5702017-11-27 12:00:45 -070030294 VULKAN_HPP_INLINE Result Device::getMemoryHostPointerPropertiesEXT( ExternalMemoryHandleTypeFlagBitsKHR handleType, const void* pHostPointer, MemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties ) const
30295 {
30296 return static_cast<Result>( vkGetMemoryHostPointerPropertiesEXT( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), pHostPointer, reinterpret_cast<VkMemoryHostPointerPropertiesEXT*>( pMemoryHostPointerProperties ) ) );
30297 }
30298#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30299 VULKAN_HPP_INLINE ResultValueType<MemoryHostPointerPropertiesEXT>::type Device::getMemoryHostPointerPropertiesEXT( ExternalMemoryHandleTypeFlagBitsKHR handleType, const void* pHostPointer ) const
30300 {
30301 MemoryHostPointerPropertiesEXT memoryHostPointerProperties;
30302 Result result = static_cast<Result>( vkGetMemoryHostPointerPropertiesEXT( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), pHostPointer, reinterpret_cast<VkMemoryHostPointerPropertiesEXT*>( &memoryHostPointerProperties ) ) );
30303 return createResultValue( result, memoryHostPointerProperties, "VULKAN_HPP_NAMESPACE::Device::getMemoryHostPointerPropertiesEXT" );
30304 }
30305#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30306
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030307#ifndef VULKAN_HPP_NO_SMART_HANDLE
30308 class DeviceDeleter;
30309 using UniqueDevice = UniqueHandle<Device, DeviceDeleter>;
30310#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30311
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030312 class PhysicalDevice
30313 {
30314 public:
30315 PhysicalDevice()
30316 : m_physicalDevice(VK_NULL_HANDLE)
30317 {}
30318
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070030319 PhysicalDevice( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030320 : m_physicalDevice(VK_NULL_HANDLE)
30321 {}
30322
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030323 VULKAN_HPP_TYPESAFE_EXPLICIT PhysicalDevice( VkPhysicalDevice physicalDevice )
30324 : m_physicalDevice( physicalDevice )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030325 {}
30326
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070030327#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030328 PhysicalDevice & operator=(VkPhysicalDevice physicalDevice)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030329 {
30330 m_physicalDevice = physicalDevice;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030331 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030332 }
30333#endif
30334
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030335 PhysicalDevice & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030336 {
30337 m_physicalDevice = VK_NULL_HANDLE;
30338 return *this;
30339 }
30340
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030341 bool operator==( PhysicalDevice const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060030342 {
30343 return m_physicalDevice == rhs.m_physicalDevice;
30344 }
30345
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030346 bool operator!=(PhysicalDevice const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060030347 {
30348 return m_physicalDevice != rhs.m_physicalDevice;
30349 }
30350
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030351 bool operator<(PhysicalDevice const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060030352 {
30353 return m_physicalDevice < rhs.m_physicalDevice;
30354 }
30355
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030356 void getProperties( PhysicalDeviceProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030357#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030358 PhysicalDeviceProperties getProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030359#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30360
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030361 void getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030362#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030363 template <typename Allocator = std::allocator<QueueFamilyProperties>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030364 std::vector<QueueFamilyProperties,Allocator> getQueueFamilyProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030365#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30366
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030367 void getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030368#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030369 PhysicalDeviceMemoryProperties getMemoryProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030370#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30371
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030372 void getFeatures( PhysicalDeviceFeatures* pFeatures ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030373#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030374 PhysicalDeviceFeatures getFeatures() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030375#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30376
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030377 void getFormatProperties( Format format, FormatProperties* pFormatProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030378#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030379 FormatProperties getFormatProperties( Format format ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030380#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30381
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030382 Result getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030383#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030384 ResultValueType<ImageFormatProperties>::type getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030385#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30386
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030387 Result createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030388#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030389 ResultValueType<Device>::type createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
30390#ifndef VULKAN_HPP_NO_SMART_HANDLE
30391 UniqueDevice createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
30392#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030393#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30394
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030395 Result enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030396#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030397 template <typename Allocator = std::allocator<LayerProperties>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030398 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateDeviceLayerProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030399#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30400
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030401 Result enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030402#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030403 template <typename Allocator = std::allocator<ExtensionProperties>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030404 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateDeviceExtensionProperties( Optional<const std::string> layerName = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030405#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30406
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030407 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 -060030408#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030409 template <typename Allocator = std::allocator<SparseImageFormatProperties>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030410 std::vector<SparseImageFormatProperties,Allocator> getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030411#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30412
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030413 Result getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030414#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030415 template <typename Allocator = std::allocator<DisplayPropertiesKHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030416 typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type getDisplayPropertiesKHR() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030417#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30418
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030419 Result getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030420#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030421 template <typename Allocator = std::allocator<DisplayPlanePropertiesKHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030422 typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type getDisplayPlanePropertiesKHR() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030423#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30424
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030425 Result getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030426#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030427 template <typename Allocator = std::allocator<DisplayKHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030428 typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030429#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30430
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030431 Result getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030432#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030433 template <typename Allocator = std::allocator<DisplayModePropertiesKHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030434 typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type getDisplayModePropertiesKHR( DisplayKHR display ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030435#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30436
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030437 Result createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030438#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030439 ResultValueType<DisplayModeKHR>::type createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030440#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30441
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030442 Result getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030443#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030444 ResultValueType<DisplayPlaneCapabilitiesKHR>::type getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030445#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30446
30447#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030448 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection ) const;
30449#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30450 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection ) const;
30451#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030452#endif /*VK_USE_PLATFORM_MIR_KHR*/
30453
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030454 Result getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030455#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030456 ResultValueType<Bool32>::type getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030457#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30458
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030459 Result getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030460#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030461 ResultValueType<SurfaceCapabilitiesKHR>::type getSurfaceCapabilitiesKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030462#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30463
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030464 Result getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030465#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030466 template <typename Allocator = std::allocator<SurfaceFormatKHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030467 typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type getSurfaceFormatsKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030468#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30469
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030470 Result getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030471#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030472 template <typename Allocator = std::allocator<PresentModeKHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030473 typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type getSurfacePresentModesKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030474#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30475
30476#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030477 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display ) const;
30478#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30479 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const;
30480#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030481#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
30482
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030483#ifdef VK_USE_PLATFORM_WIN32_KHR
30484 Bool32 getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const;
30485#endif /*VK_USE_PLATFORM_WIN32_KHR*/
30486
30487#ifdef VK_USE_PLATFORM_XLIB_KHR
30488 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030489#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030490 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const;
30491#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30492#endif /*VK_USE_PLATFORM_XLIB_KHR*/
30493
30494#ifdef VK_USE_PLATFORM_XCB_KHR
30495 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const;
30496#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30497 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const;
30498#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30499#endif /*VK_USE_PLATFORM_XCB_KHR*/
30500
30501 Result getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const;
30502#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30503 ResultValueType<ExternalImageFormatPropertiesNV>::type getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType ) const;
30504#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30505
30506 void getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits ) const;
30507#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30508 DeviceGeneratedCommandsLimitsNVX getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features ) const;
30509#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30510
30511 void getFeatures2KHR( PhysicalDeviceFeatures2KHR* pFeatures ) const;
30512#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30513 PhysicalDeviceFeatures2KHR getFeatures2KHR() const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030514 template <typename ...T>
30515 StructureChain<T...> getFeatures2KHR() const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030516#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30517
30518 void getProperties2KHR( PhysicalDeviceProperties2KHR* pProperties ) const;
30519#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30520 PhysicalDeviceProperties2KHR getProperties2KHR() const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030521 template <typename ...T>
30522 StructureChain<T...> getProperties2KHR() const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030523#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30524
30525 void getFormatProperties2KHR( Format format, FormatProperties2KHR* pFormatProperties ) const;
30526#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30527 FormatProperties2KHR getFormatProperties2KHR( Format format ) const;
30528#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30529
30530 Result getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, ImageFormatProperties2KHR* pImageFormatProperties ) const;
30531#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30532 ResultValueType<ImageFormatProperties2KHR>::type getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030533 template <typename ...T>
30534 typename ResultValueType<StructureChain<T...>>::type getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030535#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30536
30537 void getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2KHR* pQueueFamilyProperties ) const;
30538#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30539 template <typename Allocator = std::allocator<QueueFamilyProperties2KHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030540 std::vector<QueueFamilyProperties2KHR,Allocator> getQueueFamilyProperties2KHR() const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030541#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30542
30543 void getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2KHR* pMemoryProperties ) const;
30544#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30545 PhysicalDeviceMemoryProperties2KHR getMemoryProperties2KHR() const;
30546#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30547
30548 void getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2KHR* pProperties ) const;
30549#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30550 template <typename Allocator = std::allocator<SparseImageFormatProperties2KHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030551 std::vector<SparseImageFormatProperties2KHR,Allocator> getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR & formatInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030552#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30553
Mark Youngabc2d6e2017-07-07 07:59:56 -060030554 void getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfoKHR* pExternalBufferInfo, ExternalBufferPropertiesKHR* pExternalBufferProperties ) const;
Mark Young0f183a82017-02-28 09:58:04 -070030555#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060030556 ExternalBufferPropertiesKHR getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfoKHR & externalBufferInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070030557#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30558
Mark Youngabc2d6e2017-07-07 07:59:56 -060030559 void getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfoKHR* pExternalSemaphoreInfo, ExternalSemaphorePropertiesKHR* pExternalSemaphoreProperties ) const;
Mark Young0f183a82017-02-28 09:58:04 -070030560#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060030561 ExternalSemaphorePropertiesKHR getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfoKHR & externalSemaphoreInfo ) const;
30562#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30563
30564 void getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfoKHR* pExternalFenceInfo, ExternalFencePropertiesKHR* pExternalFenceProperties ) const;
30565#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30566 ExternalFencePropertiesKHR getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfoKHR & externalFenceInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070030567#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30568
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030569#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030570 Result releaseDisplayEXT( DisplayKHR display ) const;
30571#else
30572 ResultValueType<void>::type releaseDisplayEXT( DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070030573#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30574
30575#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030576 Result acquireXlibDisplayEXT( Display* dpy, DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070030577#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030578 ResultValueType<Display>::type acquireXlibDisplayEXT( DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070030579#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young39389872017-01-19 21:10:49 -070030580#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
30581
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030582#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
30583 Result getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay ) const;
Mark Young39389872017-01-19 21:10:49 -070030584#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030585 ResultValueType<DisplayKHR>::type getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const;
Mark Young39389872017-01-19 21:10:49 -070030586#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030587#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
Mark Young39389872017-01-19 21:10:49 -070030588
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030589 Result getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities ) const;
Mark Young39389872017-01-19 21:10:49 -070030590#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030591 ResultValueType<SurfaceCapabilities2EXT>::type getSurfaceCapabilities2EXT( SurfaceKHR surface ) const;
Mark Young39389872017-01-19 21:10:49 -070030592#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30593
Mark Young0f183a82017-02-28 09:58:04 -070030594 Result getPresentRectanglesKHX( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects ) const;
30595#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30596 template <typename Allocator = std::allocator<Rect2D>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030597 typename ResultValueType<std::vector<Rect2D,Allocator>>::type getPresentRectanglesKHX( SurfaceKHR surface ) const;
Mark Young0f183a82017-02-28 09:58:04 -070030598#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30599
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030600 void getMultisamplePropertiesEXT( SampleCountFlagBits samples, MultisamplePropertiesEXT* pMultisampleProperties ) const;
30601#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30602 MultisamplePropertiesEXT getMultisamplePropertiesEXT( SampleCountFlagBits samples ) const;
30603#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30604
Mark Lobodzinski54385432017-05-15 10:27:52 -060030605 Result getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, SurfaceCapabilities2KHR* pSurfaceCapabilities ) const;
30606#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030607 ResultValueType<SurfaceCapabilities2KHR>::type getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030608 template <typename ...T>
30609 typename ResultValueType<StructureChain<T...>>::type getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
Mark Lobodzinski54385432017-05-15 10:27:52 -060030610#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30611
30612 Result getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, SurfaceFormat2KHR* pSurfaceFormats ) const;
30613#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30614 template <typename Allocator = std::allocator<SurfaceFormat2KHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030615 typename ResultValueType<std::vector<SurfaceFormat2KHR,Allocator>>::type getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
Mark Lobodzinski54385432017-05-15 10:27:52 -060030616#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30617
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030618
30619
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070030620 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPhysicalDevice() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030621 {
30622 return m_physicalDevice;
30623 }
30624
30625 explicit operator bool() const
30626 {
30627 return m_physicalDevice != VK_NULL_HANDLE;
30628 }
30629
30630 bool operator!() const
30631 {
30632 return m_physicalDevice == VK_NULL_HANDLE;
30633 }
30634
30635 private:
30636 VkPhysicalDevice m_physicalDevice;
30637 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030638
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030639 static_assert( sizeof( PhysicalDevice ) == sizeof( VkPhysicalDevice ), "handle and wrapper have different size!" );
30640
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030641#ifndef VULKAN_HPP_NO_SMART_HANDLE
30642 class DeviceDeleter
30643 {
30644 public:
30645 DeviceDeleter( Optional<const AllocationCallbacks> allocator = nullptr )
30646 : m_allocator( allocator )
30647 {}
30648
30649 void operator()( Device device )
30650 {
30651 device.destroy( m_allocator );
30652 }
30653
30654 private:
30655 Optional<const AllocationCallbacks> m_allocator;
30656 };
30657#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30658
30659 VULKAN_HPP_INLINE void PhysicalDevice::getProperties( PhysicalDeviceProperties* pProperties ) const
30660 {
30661 vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( pProperties ) );
30662 }
30663#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30664 VULKAN_HPP_INLINE PhysicalDeviceProperties PhysicalDevice::getProperties() const
30665 {
30666 PhysicalDeviceProperties properties;
30667 vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( &properties ) );
30668 return properties;
30669 }
30670#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30671
30672 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties ) const
30673 {
30674 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( pQueueFamilyProperties ) );
30675 }
30676#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30677 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030678 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties,Allocator> PhysicalDevice::getQueueFamilyProperties() const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030679 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030680 std::vector<QueueFamilyProperties,Allocator> queueFamilyProperties;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030681 uint32_t queueFamilyPropertyCount;
30682 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
30683 queueFamilyProperties.resize( queueFamilyPropertyCount );
30684 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( queueFamilyProperties.data() ) );
30685 return queueFamilyProperties;
30686 }
30687#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30688
30689 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties ) const
30690 {
30691 vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( pMemoryProperties ) );
30692 }
30693#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30694 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties PhysicalDevice::getMemoryProperties() const
30695 {
30696 PhysicalDeviceMemoryProperties memoryProperties;
30697 vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( &memoryProperties ) );
30698 return memoryProperties;
30699 }
30700#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30701
30702 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures( PhysicalDeviceFeatures* pFeatures ) const
30703 {
30704 vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( pFeatures ) );
30705 }
30706#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30707 VULKAN_HPP_INLINE PhysicalDeviceFeatures PhysicalDevice::getFeatures() const
30708 {
30709 PhysicalDeviceFeatures features;
30710 vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( &features ) );
30711 return features;
30712 }
30713#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30714
30715 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties( Format format, FormatProperties* pFormatProperties ) const
30716 {
30717 vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( pFormatProperties ) );
30718 }
30719#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30720 VULKAN_HPP_INLINE FormatProperties PhysicalDevice::getFormatProperties( Format format ) const
30721 {
30722 FormatProperties formatProperties;
30723 vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( &formatProperties ) );
30724 return formatProperties;
30725 }
30726#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30727
30728 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties ) const
30729 {
30730 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 ) ) );
30731 }
30732#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30733 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties>::type PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const
30734 {
30735 ImageFormatProperties imageFormatProperties;
30736 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 ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030737 return createResultValue( result, imageFormatProperties, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getImageFormatProperties" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030738 }
30739#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30740
30741 VULKAN_HPP_INLINE Result PhysicalDevice::createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice ) const
30742 {
30743 return static_cast<Result>( vkCreateDevice( m_physicalDevice, reinterpret_cast<const VkDeviceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDevice*>( pDevice ) ) );
30744 }
30745#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30746 VULKAN_HPP_INLINE ResultValueType<Device>::type PhysicalDevice::createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
30747 {
30748 Device device;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030749 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060030750 return createResultValue( result, device, "VULKAN_HPP_NAMESPACE::PhysicalDevice::createDevice" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030751 }
30752#ifndef VULKAN_HPP_NO_SMART_HANDLE
30753 VULKAN_HPP_INLINE UniqueDevice PhysicalDevice::createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
30754 {
30755 DeviceDeleter deleter( allocator );
30756 return UniqueDevice( createDevice( createInfo, allocator ), deleter );
30757 }
30758#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30759#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30760
30761 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties ) const
30762 {
30763 return static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
30764 }
30765#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30766 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030767 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type PhysicalDevice::enumerateDeviceLayerProperties() const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030768 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030769 std::vector<LayerProperties,Allocator> properties;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030770 uint32_t propertyCount;
30771 Result result;
30772 do
30773 {
30774 result = static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, nullptr ) );
30775 if ( ( result == Result::eSuccess ) && propertyCount )
30776 {
30777 properties.resize( propertyCount );
30778 result = static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
30779 }
30780 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030781 assert( propertyCount <= properties.size() );
30782 properties.resize( propertyCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030783 return createResultValue( result, properties, "VULKAN_HPP_NAMESPACE::PhysicalDevice::enumerateDeviceLayerProperties" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030784 }
30785#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30786
30787 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties ) const
30788 {
30789 return static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
30790 }
30791#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30792 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030793 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type PhysicalDevice::enumerateDeviceExtensionProperties( Optional<const std::string> layerName ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030794 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030795 std::vector<ExtensionProperties,Allocator> properties;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030796 uint32_t propertyCount;
30797 Result result;
30798 do
30799 {
30800 result = static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
30801 if ( ( result == Result::eSuccess ) && propertyCount )
30802 {
30803 properties.resize( propertyCount );
30804 result = static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
30805 }
30806 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030807 assert( propertyCount <= properties.size() );
30808 properties.resize( propertyCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030809 return createResultValue( result, properties, "VULKAN_HPP_NAMESPACE::PhysicalDevice::enumerateDeviceExtensionProperties" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030810 }
30811#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30812
30813 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling, uint32_t* pPropertyCount, SparseImageFormatProperties* pProperties ) const
30814 {
30815 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 ) );
30816 }
30817#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30818 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030819 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties,Allocator> PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030820 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030821 std::vector<SparseImageFormatProperties,Allocator> properties;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030822 uint32_t propertyCount;
30823 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 );
30824 properties.resize( propertyCount );
30825 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() ) );
30826 return properties;
30827 }
30828#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30829
30830 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties ) const
30831 {
30832 return static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( pProperties ) ) );
30833 }
30834#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30835 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030836 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPropertiesKHR() const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030837 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030838 std::vector<DisplayPropertiesKHR,Allocator> properties;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030839 uint32_t propertyCount;
30840 Result result;
30841 do
30842 {
30843 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
30844 if ( ( result == Result::eSuccess ) && propertyCount )
30845 {
30846 properties.resize( propertyCount );
30847 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( properties.data() ) ) );
30848 }
30849 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030850 assert( propertyCount <= properties.size() );
30851 properties.resize( propertyCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030852 return createResultValue( result, properties, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getDisplayPropertiesKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030853 }
30854#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30855
30856 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties ) const
30857 {
30858 return static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( pProperties ) ) );
30859 }
30860#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30861 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030862 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPlanePropertiesKHR() const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030863 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030864 std::vector<DisplayPlanePropertiesKHR,Allocator> properties;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030865 uint32_t propertyCount;
30866 Result result;
30867 do
30868 {
30869 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
30870 if ( ( result == Result::eSuccess ) && propertyCount )
30871 {
30872 properties.resize( propertyCount );
30873 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( properties.data() ) ) );
30874 }
30875 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030876 assert( propertyCount <= properties.size() );
30877 properties.resize( propertyCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030878 return createResultValue( result, properties, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getDisplayPlanePropertiesKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030879 }
30880#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30881
30882 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays ) const
30883 {
30884 return static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, pDisplayCount, reinterpret_cast<VkDisplayKHR*>( pDisplays ) ) );
30885 }
30886#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30887 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030888 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030889 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030890 std::vector<DisplayKHR,Allocator> displays;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030891 uint32_t displayCount;
30892 Result result;
30893 do
30894 {
30895 result = static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, nullptr ) );
30896 if ( ( result == Result::eSuccess ) && displayCount )
30897 {
30898 displays.resize( displayCount );
30899 result = static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, reinterpret_cast<VkDisplayKHR*>( displays.data() ) ) );
30900 }
30901 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030902 assert( displayCount <= displays.size() );
30903 displays.resize( displayCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030904 return createResultValue( result, displays, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030905 }
30906#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30907
30908 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties ) const
30909 {
30910 return static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), pPropertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( pProperties ) ) );
30911 }
30912#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30913 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030914 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030915 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030916 std::vector<DisplayModePropertiesKHR,Allocator> properties;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030917 uint32_t propertyCount;
30918 Result result;
30919 do
30920 {
30921 result = static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, nullptr ) );
30922 if ( ( result == Result::eSuccess ) && propertyCount )
30923 {
30924 properties.resize( propertyCount );
30925 result = static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( properties.data() ) ) );
30926 }
30927 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030928 assert( propertyCount <= properties.size() );
30929 properties.resize( propertyCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030930 return createResultValue( result, properties, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getDisplayModePropertiesKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030931 }
30932#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30933
30934 VULKAN_HPP_INLINE Result PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode ) const
30935 {
30936 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 ) ) );
30937 }
30938#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30939 VULKAN_HPP_INLINE ResultValueType<DisplayModeKHR>::type PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
30940 {
30941 DisplayModeKHR mode;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030942 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060030943 return createResultValue( result, mode, "VULKAN_HPP_NAMESPACE::PhysicalDevice::createDisplayModeKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030944 }
30945#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30946
30947 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities ) const
30948 {
30949 return static_cast<Result>( vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( pCapabilities ) ) );
30950 }
30951#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30952 VULKAN_HPP_INLINE ResultValueType<DisplayPlaneCapabilitiesKHR>::type PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex ) const
30953 {
30954 DisplayPlaneCapabilitiesKHR capabilities;
30955 Result result = static_cast<Result>( vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( &capabilities ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030956 return createResultValue( result, capabilities, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getDisplayPlaneCapabilitiesKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030957 }
30958#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30959
30960#ifdef VK_USE_PLATFORM_MIR_KHR
30961 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection ) const
30962 {
30963 return vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection );
30964 }
30965#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30966 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection ) const
30967 {
30968 return vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection );
30969 }
30970#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30971#endif /*VK_USE_PLATFORM_MIR_KHR*/
30972
30973 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported ) const
30974 {
30975 return static_cast<Result>( vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), pSupported ) );
30976 }
30977#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30978 VULKAN_HPP_INLINE ResultValueType<Bool32>::type PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface ) const
30979 {
30980 Bool32 supported;
30981 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), &supported ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030982 return createResultValue( result, supported, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getSurfaceSupportKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030983 }
30984#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30985
30986 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities ) const
30987 {
30988 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( pSurfaceCapabilities ) ) );
30989 }
30990#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30991 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilitiesKHR>::type PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface ) const
30992 {
30993 SurfaceCapabilitiesKHR surfaceCapabilities;
30994 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( &surfaceCapabilities ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030995 return createResultValue( result, surfaceCapabilities, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getSurfaceCapabilitiesKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030996 }
30997#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30998
30999 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats ) const
31000 {
31001 return static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pSurfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( pSurfaceFormats ) ) );
31002 }
31003#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31004 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031005 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031006 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031007 std::vector<SurfaceFormatKHR,Allocator> surfaceFormats;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031008 uint32_t surfaceFormatCount;
31009 Result result;
31010 do
31011 {
31012 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, nullptr ) );
31013 if ( ( result == Result::eSuccess ) && surfaceFormatCount )
31014 {
31015 surfaceFormats.resize( surfaceFormatCount );
31016 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( surfaceFormats.data() ) ) );
31017 }
31018 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031019 assert( surfaceFormatCount <= surfaceFormats.size() );
31020 surfaceFormats.resize( surfaceFormatCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031021 return createResultValue( result, surfaceFormats, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getSurfaceFormatsKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031022 }
31023#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31024
31025 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes ) const
31026 {
31027 return static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pPresentModeCount, reinterpret_cast<VkPresentModeKHR*>( pPresentModes ) ) );
31028 }
31029#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31030 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031031 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031032 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031033 std::vector<PresentModeKHR,Allocator> presentModes;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031034 uint32_t presentModeCount;
31035 Result result;
31036 do
31037 {
31038 result = static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, nullptr ) );
31039 if ( ( result == Result::eSuccess ) && presentModeCount )
31040 {
31041 presentModes.resize( presentModeCount );
31042 result = static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, reinterpret_cast<VkPresentModeKHR*>( presentModes.data() ) ) );
31043 }
31044 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031045 assert( presentModeCount <= presentModes.size() );
31046 presentModes.resize( presentModeCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031047 return createResultValue( result, presentModes, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getSurfacePresentModesKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031048 }
31049#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31050
31051#ifdef VK_USE_PLATFORM_WAYLAND_KHR
31052 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display ) const
31053 {
31054 return vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, display );
31055 }
31056#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31057 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const
31058 {
31059 return vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &display );
31060 }
31061#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31062#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
31063
31064#ifdef VK_USE_PLATFORM_WIN32_KHR
31065 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const
31066 {
31067 return vkGetPhysicalDeviceWin32PresentationSupportKHR( m_physicalDevice, queueFamilyIndex );
31068 }
31069#endif /*VK_USE_PLATFORM_WIN32_KHR*/
31070
31071#ifdef VK_USE_PLATFORM_XLIB_KHR
31072 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const
31073 {
31074 return vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, dpy, visualID );
31075 }
31076#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31077 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const
31078 {
31079 return vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &dpy, visualID );
31080 }
31081#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31082#endif /*VK_USE_PLATFORM_XLIB_KHR*/
31083
31084#ifdef VK_USE_PLATFORM_XCB_KHR
31085 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const
31086 {
31087 return vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection, visual_id );
31088 }
31089#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31090 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const
31091 {
31092 return vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection, visual_id );
31093 }
31094#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31095#endif /*VK_USE_PLATFORM_XCB_KHR*/
31096
31097 VULKAN_HPP_INLINE Result PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const
31098 {
31099 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 ) ) );
31100 }
31101#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31102 VULKAN_HPP_INLINE ResultValueType<ExternalImageFormatPropertiesNV>::type PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType ) const
31103 {
31104 ExternalImageFormatPropertiesNV externalImageFormatProperties;
31105 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 ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031106 return createResultValue( result, externalImageFormatProperties, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getExternalImageFormatPropertiesNV" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031107 }
31108#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31109
31110 VULKAN_HPP_INLINE void PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits ) const
31111 {
31112 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( pFeatures ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( pLimits ) );
31113 }
31114#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31115 VULKAN_HPP_INLINE DeviceGeneratedCommandsLimitsNVX PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features ) const
31116 {
31117 DeviceGeneratedCommandsLimitsNVX limits;
31118 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( &features ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( &limits ) );
31119 return limits;
31120 }
31121#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31122
31123 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures2KHR( PhysicalDeviceFeatures2KHR* pFeatures ) const
31124 {
31125 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( pFeatures ) );
31126 }
31127#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31128 VULKAN_HPP_INLINE PhysicalDeviceFeatures2KHR PhysicalDevice::getFeatures2KHR() const
31129 {
31130 PhysicalDeviceFeatures2KHR features;
31131 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( &features ) );
31132 return features;
31133 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031134 template <typename ...T>
31135 VULKAN_HPP_INLINE StructureChain<T...> PhysicalDevice::getFeatures2KHR() const
31136 {
31137 StructureChain<T...> structureChain;
31138 PhysicalDeviceFeatures2KHR& features = structureChain.template get<PhysicalDeviceFeatures2KHR>();
31139 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( &features ) );
31140 return structureChain;
31141 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031142#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31143
31144 VULKAN_HPP_INLINE void PhysicalDevice::getProperties2KHR( PhysicalDeviceProperties2KHR* pProperties ) const
31145 {
31146 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( pProperties ) );
31147 }
31148#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31149 VULKAN_HPP_INLINE PhysicalDeviceProperties2KHR PhysicalDevice::getProperties2KHR() const
31150 {
31151 PhysicalDeviceProperties2KHR properties;
31152 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( &properties ) );
31153 return properties;
31154 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031155 template <typename ...T>
31156 VULKAN_HPP_INLINE StructureChain<T...> PhysicalDevice::getProperties2KHR() const
31157 {
31158 StructureChain<T...> structureChain;
31159 PhysicalDeviceProperties2KHR& properties = structureChain.template get<PhysicalDeviceProperties2KHR>();
31160 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( &properties ) );
31161 return structureChain;
31162 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031163#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31164
31165 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties2KHR( Format format, FormatProperties2KHR* pFormatProperties ) const
31166 {
31167 vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2KHR*>( pFormatProperties ) );
31168 }
31169#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31170 VULKAN_HPP_INLINE FormatProperties2KHR PhysicalDevice::getFormatProperties2KHR( Format format ) const
31171 {
31172 FormatProperties2KHR formatProperties;
31173 vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2KHR*>( &formatProperties ) );
31174 return formatProperties;
31175 }
31176#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31177
31178 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, ImageFormatProperties2KHR* pImageFormatProperties ) const
31179 {
31180 return static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( pImageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( pImageFormatProperties ) ) );
31181 }
31182#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31183 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties2KHR>::type PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const
31184 {
31185 ImageFormatProperties2KHR imageFormatProperties;
31186 Result result = static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( &imageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( &imageFormatProperties ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031187 return createResultValue( result, imageFormatProperties, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getImageFormatProperties2KHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031188 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031189 template <typename ...T>
31190 VULKAN_HPP_INLINE typename ResultValueType<StructureChain<T...>>::type PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const
31191 {
31192 StructureChain<T...> structureChain;
31193 ImageFormatProperties2KHR& imageFormatProperties = structureChain.template get<ImageFormatProperties2KHR>();
31194 Result result = static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( &imageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( &imageFormatProperties ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031195 return createResultValue( result, structureChain, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getImageFormatProperties2KHR" );
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031196 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031197#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31198
31199 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2KHR* pQueueFamilyProperties ) const
31200 {
31201 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2KHR*>( pQueueFamilyProperties ) );
31202 }
31203#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31204 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031205 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties2KHR,Allocator> PhysicalDevice::getQueueFamilyProperties2KHR() const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031206 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031207 std::vector<QueueFamilyProperties2KHR,Allocator> queueFamilyProperties;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031208 uint32_t queueFamilyPropertyCount;
31209 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
31210 queueFamilyProperties.resize( queueFamilyPropertyCount );
31211 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2KHR*>( queueFamilyProperties.data() ) );
31212 return queueFamilyProperties;
31213 }
31214#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31215
31216 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2KHR* pMemoryProperties ) const
31217 {
31218 vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2KHR*>( pMemoryProperties ) );
31219 }
31220#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31221 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties2KHR PhysicalDevice::getMemoryProperties2KHR() const
31222 {
31223 PhysicalDeviceMemoryProperties2KHR memoryProperties;
31224 vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2KHR*>( &memoryProperties ) );
31225 return memoryProperties;
31226 }
31227#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31228
31229 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2KHR* pProperties ) const
31230 {
31231 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( pFormatInfo ), pPropertyCount, reinterpret_cast<VkSparseImageFormatProperties2KHR*>( pProperties ) );
31232 }
31233#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31234 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031235 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties2KHR,Allocator> PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR & formatInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031236 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031237 std::vector<SparseImageFormatProperties2KHR,Allocator> properties;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031238 uint32_t propertyCount;
31239 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( &formatInfo ), &propertyCount, nullptr );
31240 properties.resize( propertyCount );
31241 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( &formatInfo ), &propertyCount, reinterpret_cast<VkSparseImageFormatProperties2KHR*>( properties.data() ) );
31242 return properties;
31243 }
31244#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31245
Mark Youngabc2d6e2017-07-07 07:59:56 -060031246 VULKAN_HPP_INLINE void PhysicalDevice::getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfoKHR* pExternalBufferInfo, ExternalBufferPropertiesKHR* pExternalBufferProperties ) const
Mark Young0f183a82017-02-28 09:58:04 -070031247 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060031248 vkGetPhysicalDeviceExternalBufferPropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHR*>( pExternalBufferInfo ), reinterpret_cast<VkExternalBufferPropertiesKHR*>( pExternalBufferProperties ) );
Mark Young0f183a82017-02-28 09:58:04 -070031249 }
31250#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060031251 VULKAN_HPP_INLINE ExternalBufferPropertiesKHR PhysicalDevice::getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfoKHR & externalBufferInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070031252 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060031253 ExternalBufferPropertiesKHR externalBufferProperties;
31254 vkGetPhysicalDeviceExternalBufferPropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHR*>( &externalBufferInfo ), reinterpret_cast<VkExternalBufferPropertiesKHR*>( &externalBufferProperties ) );
Mark Young0f183a82017-02-28 09:58:04 -070031255 return externalBufferProperties;
31256 }
31257#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31258
Mark Youngabc2d6e2017-07-07 07:59:56 -060031259 VULKAN_HPP_INLINE void PhysicalDevice::getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfoKHR* pExternalSemaphoreInfo, ExternalSemaphorePropertiesKHR* pExternalSemaphoreProperties ) const
Mark Young0f183a82017-02-28 09:58:04 -070031260 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060031261 vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHR*>( pExternalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphorePropertiesKHR*>( pExternalSemaphoreProperties ) );
Mark Young0f183a82017-02-28 09:58:04 -070031262 }
31263#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060031264 VULKAN_HPP_INLINE ExternalSemaphorePropertiesKHR PhysicalDevice::getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfoKHR & externalSemaphoreInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070031265 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060031266 ExternalSemaphorePropertiesKHR externalSemaphoreProperties;
31267 vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHR*>( &externalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphorePropertiesKHR*>( &externalSemaphoreProperties ) );
Mark Young0f183a82017-02-28 09:58:04 -070031268 return externalSemaphoreProperties;
31269 }
31270#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31271
Mark Youngabc2d6e2017-07-07 07:59:56 -060031272 VULKAN_HPP_INLINE void PhysicalDevice::getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfoKHR* pExternalFenceInfo, ExternalFencePropertiesKHR* pExternalFenceProperties ) const
31273 {
31274 vkGetPhysicalDeviceExternalFencePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalFenceInfoKHR*>( pExternalFenceInfo ), reinterpret_cast<VkExternalFencePropertiesKHR*>( pExternalFenceProperties ) );
31275 }
31276#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31277 VULKAN_HPP_INLINE ExternalFencePropertiesKHR PhysicalDevice::getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfoKHR & externalFenceInfo ) const
31278 {
31279 ExternalFencePropertiesKHR externalFenceProperties;
31280 vkGetPhysicalDeviceExternalFencePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalFenceInfoKHR*>( &externalFenceInfo ), reinterpret_cast<VkExternalFencePropertiesKHR*>( &externalFenceProperties ) );
31281 return externalFenceProperties;
31282 }
31283#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31284
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031285#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
31286 VULKAN_HPP_INLINE Result PhysicalDevice::releaseDisplayEXT( DisplayKHR display ) const
31287 {
31288 return static_cast<Result>( vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
31289 }
31290#else
31291 VULKAN_HPP_INLINE ResultValueType<void>::type PhysicalDevice::releaseDisplayEXT( DisplayKHR display ) const
31292 {
31293 Result result = static_cast<Result>( vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031294 return createResultValue( result, "VULKAN_HPP_NAMESPACE::PhysicalDevice::releaseDisplayEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031295 }
31296#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31297
31298#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
31299 VULKAN_HPP_INLINE Result PhysicalDevice::acquireXlibDisplayEXT( Display* dpy, DisplayKHR display ) const
31300 {
31301 return static_cast<Result>( vkAcquireXlibDisplayEXT( m_physicalDevice, dpy, static_cast<VkDisplayKHR>( display ) ) );
31302 }
31303#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31304 VULKAN_HPP_INLINE ResultValueType<Display>::type PhysicalDevice::acquireXlibDisplayEXT( DisplayKHR display ) const
31305 {
31306 Display dpy;
31307 Result result = static_cast<Result>( vkAcquireXlibDisplayEXT( m_physicalDevice, &dpy, static_cast<VkDisplayKHR>( display ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031308 return createResultValue( result, dpy, "VULKAN_HPP_NAMESPACE::PhysicalDevice::acquireXlibDisplayEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031309 }
31310#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31311#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
31312
31313#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
31314 VULKAN_HPP_INLINE Result PhysicalDevice::getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay ) const
31315 {
31316 return static_cast<Result>( vkGetRandROutputDisplayEXT( m_physicalDevice, dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( pDisplay ) ) );
31317 }
31318#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31319 VULKAN_HPP_INLINE ResultValueType<DisplayKHR>::type PhysicalDevice::getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const
31320 {
31321 DisplayKHR display;
31322 Result result = static_cast<Result>( vkGetRandROutputDisplayEXT( m_physicalDevice, &dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( &display ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031323 return createResultValue( result, display, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getRandROutputDisplayEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031324 }
31325#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31326#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
31327
31328 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities ) const
31329 {
31330 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( pSurfaceCapabilities ) ) );
31331 }
31332#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31333 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilities2EXT>::type PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface ) const
31334 {
31335 SurfaceCapabilities2EXT surfaceCapabilities;
31336 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( &surfaceCapabilities ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031337 return createResultValue( result, surfaceCapabilities, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getSurfaceCapabilities2EXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031338 }
31339#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070031340
31341 VULKAN_HPP_INLINE Result PhysicalDevice::getPresentRectanglesKHX( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects ) const
31342 {
31343 return static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pRectCount, reinterpret_cast<VkRect2D*>( pRects ) ) );
31344 }
31345#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31346 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031347 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Rect2D,Allocator>>::type PhysicalDevice::getPresentRectanglesKHX( SurfaceKHR surface ) const
Mark Young0f183a82017-02-28 09:58:04 -070031348 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031349 std::vector<Rect2D,Allocator> rects;
Mark Young0f183a82017-02-28 09:58:04 -070031350 uint32_t rectCount;
31351 Result result;
31352 do
31353 {
31354 result = static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, nullptr ) );
31355 if ( ( result == Result::eSuccess ) && rectCount )
31356 {
31357 rects.resize( rectCount );
31358 result = static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, reinterpret_cast<VkRect2D*>( rects.data() ) ) );
31359 }
31360 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031361 assert( rectCount <= rects.size() );
31362 rects.resize( rectCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031363 return createResultValue( result, rects, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getPresentRectanglesKHX" );
Mark Young0f183a82017-02-28 09:58:04 -070031364 }
31365#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031366
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031367 VULKAN_HPP_INLINE void PhysicalDevice::getMultisamplePropertiesEXT( SampleCountFlagBits samples, MultisamplePropertiesEXT* pMultisampleProperties ) const
31368 {
31369 vkGetPhysicalDeviceMultisamplePropertiesEXT( m_physicalDevice, static_cast<VkSampleCountFlagBits>( samples ), reinterpret_cast<VkMultisamplePropertiesEXT*>( pMultisampleProperties ) );
31370 }
31371#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31372 VULKAN_HPP_INLINE MultisamplePropertiesEXT PhysicalDevice::getMultisamplePropertiesEXT( SampleCountFlagBits samples ) const
31373 {
31374 MultisamplePropertiesEXT multisampleProperties;
31375 vkGetPhysicalDeviceMultisamplePropertiesEXT( m_physicalDevice, static_cast<VkSampleCountFlagBits>( samples ), reinterpret_cast<VkMultisamplePropertiesEXT*>( &multisampleProperties ) );
31376 return multisampleProperties;
31377 }
31378#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31379
Mark Lobodzinski54385432017-05-15 10:27:52 -060031380 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, SurfaceCapabilities2KHR* pSurfaceCapabilities ) const
31381 {
31382 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( pSurfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( pSurfaceCapabilities ) ) );
31383 }
31384#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031385 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilities2KHR>::type PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
Mark Lobodzinski54385432017-05-15 10:27:52 -060031386 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031387 SurfaceCapabilities2KHR surfaceCapabilities;
Mark Lobodzinski54385432017-05-15 10:27:52 -060031388 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( &surfaceCapabilities ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031389 return createResultValue( result, surfaceCapabilities, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getSurfaceCapabilities2KHR" );
Mark Lobodzinski54385432017-05-15 10:27:52 -060031390 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031391 template <typename ...T>
31392 VULKAN_HPP_INLINE typename ResultValueType<StructureChain<T...>>::type PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
31393 {
31394 StructureChain<T...> structureChain;
31395 SurfaceCapabilities2KHR& surfaceCapabilities = structureChain.template get<SurfaceCapabilities2KHR>();
31396 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( &surfaceCapabilities ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031397 return createResultValue( result, structureChain, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getSurfaceCapabilities2KHR" );
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031398 }
Mark Lobodzinski54385432017-05-15 10:27:52 -060031399#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31400
31401 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, SurfaceFormat2KHR* pSurfaceFormats ) const
31402 {
31403 return static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( pSurfaceInfo ), pSurfaceFormatCount, reinterpret_cast<VkSurfaceFormat2KHR*>( pSurfaceFormats ) ) );
31404 }
31405#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31406 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031407 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormat2KHR,Allocator>>::type PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
Mark Lobodzinski54385432017-05-15 10:27:52 -060031408 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031409 std::vector<SurfaceFormat2KHR,Allocator> surfaceFormats;
Mark Lobodzinski54385432017-05-15 10:27:52 -060031410 uint32_t surfaceFormatCount;
31411 Result result;
31412 do
31413 {
31414 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), &surfaceFormatCount, nullptr ) );
31415 if ( ( result == Result::eSuccess ) && surfaceFormatCount )
31416 {
31417 surfaceFormats.resize( surfaceFormatCount );
31418 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormat2KHR*>( surfaceFormats.data() ) ) );
31419 }
31420 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031421 assert( surfaceFormatCount <= surfaceFormats.size() );
31422 surfaceFormats.resize( surfaceFormatCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031423 return createResultValue( result, surfaceFormats, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getSurfaceFormats2KHR" );
Mark Lobodzinski54385432017-05-15 10:27:52 -060031424 }
31425#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31426
Mark Young0f183a82017-02-28 09:58:04 -070031427 struct CmdProcessCommandsInfoNVX
31428 {
31429 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 )
31430 : sType( StructureType::eCmdProcessCommandsInfoNVX )
31431 , pNext( nullptr )
31432 , objectTable( objectTable_ )
31433 , indirectCommandsLayout( indirectCommandsLayout_ )
31434 , indirectCommandsTokenCount( indirectCommandsTokenCount_ )
31435 , pIndirectCommandsTokens( pIndirectCommandsTokens_ )
31436 , maxSequencesCount( maxSequencesCount_ )
31437 , targetCommandBuffer( targetCommandBuffer_ )
31438 , sequencesCountBuffer( sequencesCountBuffer_ )
31439 , sequencesCountOffset( sequencesCountOffset_ )
31440 , sequencesIndexBuffer( sequencesIndexBuffer_ )
31441 , sequencesIndexOffset( sequencesIndexOffset_ )
31442 {
31443 }
31444
31445 CmdProcessCommandsInfoNVX( VkCmdProcessCommandsInfoNVX const & rhs )
31446 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031447 memcpy( this, &rhs, sizeof( CmdProcessCommandsInfoNVX ) );
Mark Young0f183a82017-02-28 09:58:04 -070031448 }
31449
31450 CmdProcessCommandsInfoNVX& operator=( VkCmdProcessCommandsInfoNVX const & rhs )
31451 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031452 memcpy( this, &rhs, sizeof( CmdProcessCommandsInfoNVX ) );
Mark Young0f183a82017-02-28 09:58:04 -070031453 return *this;
31454 }
Mark Young0f183a82017-02-28 09:58:04 -070031455 CmdProcessCommandsInfoNVX& setPNext( const void* pNext_ )
31456 {
31457 pNext = pNext_;
31458 return *this;
31459 }
31460
31461 CmdProcessCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
31462 {
31463 objectTable = objectTable_;
31464 return *this;
31465 }
31466
31467 CmdProcessCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
31468 {
31469 indirectCommandsLayout = indirectCommandsLayout_;
31470 return *this;
31471 }
31472
31473 CmdProcessCommandsInfoNVX& setIndirectCommandsTokenCount( uint32_t indirectCommandsTokenCount_ )
31474 {
31475 indirectCommandsTokenCount = indirectCommandsTokenCount_;
31476 return *this;
31477 }
31478
31479 CmdProcessCommandsInfoNVX& setPIndirectCommandsTokens( const IndirectCommandsTokenNVX* pIndirectCommandsTokens_ )
31480 {
31481 pIndirectCommandsTokens = pIndirectCommandsTokens_;
31482 return *this;
31483 }
31484
31485 CmdProcessCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
31486 {
31487 maxSequencesCount = maxSequencesCount_;
31488 return *this;
31489 }
31490
31491 CmdProcessCommandsInfoNVX& setTargetCommandBuffer( CommandBuffer targetCommandBuffer_ )
31492 {
31493 targetCommandBuffer = targetCommandBuffer_;
31494 return *this;
31495 }
31496
31497 CmdProcessCommandsInfoNVX& setSequencesCountBuffer( Buffer sequencesCountBuffer_ )
31498 {
31499 sequencesCountBuffer = sequencesCountBuffer_;
31500 return *this;
31501 }
31502
31503 CmdProcessCommandsInfoNVX& setSequencesCountOffset( DeviceSize sequencesCountOffset_ )
31504 {
31505 sequencesCountOffset = sequencesCountOffset_;
31506 return *this;
31507 }
31508
31509 CmdProcessCommandsInfoNVX& setSequencesIndexBuffer( Buffer sequencesIndexBuffer_ )
31510 {
31511 sequencesIndexBuffer = sequencesIndexBuffer_;
31512 return *this;
31513 }
31514
31515 CmdProcessCommandsInfoNVX& setSequencesIndexOffset( DeviceSize sequencesIndexOffset_ )
31516 {
31517 sequencesIndexOffset = sequencesIndexOffset_;
31518 return *this;
31519 }
31520
31521 operator const VkCmdProcessCommandsInfoNVX&() const
31522 {
31523 return *reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>(this);
31524 }
31525
31526 bool operator==( CmdProcessCommandsInfoNVX const& rhs ) const
31527 {
31528 return ( sType == rhs.sType )
31529 && ( pNext == rhs.pNext )
31530 && ( objectTable == rhs.objectTable )
31531 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
31532 && ( indirectCommandsTokenCount == rhs.indirectCommandsTokenCount )
31533 && ( pIndirectCommandsTokens == rhs.pIndirectCommandsTokens )
31534 && ( maxSequencesCount == rhs.maxSequencesCount )
31535 && ( targetCommandBuffer == rhs.targetCommandBuffer )
31536 && ( sequencesCountBuffer == rhs.sequencesCountBuffer )
31537 && ( sequencesCountOffset == rhs.sequencesCountOffset )
31538 && ( sequencesIndexBuffer == rhs.sequencesIndexBuffer )
31539 && ( sequencesIndexOffset == rhs.sequencesIndexOffset );
31540 }
31541
31542 bool operator!=( CmdProcessCommandsInfoNVX const& rhs ) const
31543 {
31544 return !operator==( rhs );
31545 }
31546
31547 private:
31548 StructureType sType;
31549
31550 public:
31551 const void* pNext;
31552 ObjectTableNVX objectTable;
31553 IndirectCommandsLayoutNVX indirectCommandsLayout;
31554 uint32_t indirectCommandsTokenCount;
31555 const IndirectCommandsTokenNVX* pIndirectCommandsTokens;
31556 uint32_t maxSequencesCount;
31557 CommandBuffer targetCommandBuffer;
31558 Buffer sequencesCountBuffer;
31559 DeviceSize sequencesCountOffset;
31560 Buffer sequencesIndexBuffer;
31561 DeviceSize sequencesIndexOffset;
31562 };
31563 static_assert( sizeof( CmdProcessCommandsInfoNVX ) == sizeof( VkCmdProcessCommandsInfoNVX ), "struct and wrapper have different size!" );
31564
31565 struct PhysicalDeviceGroupPropertiesKHX
31566 {
31567 operator const VkPhysicalDeviceGroupPropertiesKHX&() const
31568 {
31569 return *reinterpret_cast<const VkPhysicalDeviceGroupPropertiesKHX*>(this);
31570 }
31571
31572 bool operator==( PhysicalDeviceGroupPropertiesKHX const& rhs ) const
31573 {
31574 return ( sType == rhs.sType )
31575 && ( pNext == rhs.pNext )
31576 && ( physicalDeviceCount == rhs.physicalDeviceCount )
31577 && ( memcmp( physicalDevices, rhs.physicalDevices, VK_MAX_DEVICE_GROUP_SIZE_KHX * sizeof( PhysicalDevice ) ) == 0 )
31578 && ( subsetAllocation == rhs.subsetAllocation );
31579 }
31580
31581 bool operator!=( PhysicalDeviceGroupPropertiesKHX const& rhs ) const
31582 {
31583 return !operator==( rhs );
31584 }
31585
31586 private:
31587 StructureType sType;
31588
31589 public:
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060031590 void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070031591 uint32_t physicalDeviceCount;
31592 PhysicalDevice physicalDevices[VK_MAX_DEVICE_GROUP_SIZE_KHX];
31593 Bool32 subsetAllocation;
31594 };
31595 static_assert( sizeof( PhysicalDeviceGroupPropertiesKHX ) == sizeof( VkPhysicalDeviceGroupPropertiesKHX ), "struct and wrapper have different size!" );
31596
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031597#ifndef VULKAN_HPP_NO_SMART_HANDLE
31598 class DebugReportCallbackEXTDeleter;
31599 using UniqueDebugReportCallbackEXT = UniqueHandle<DebugReportCallbackEXT, DebugReportCallbackEXTDeleter>;
31600 class SurfaceKHRDeleter;
31601 using UniqueSurfaceKHR = UniqueHandle<SurfaceKHR, SurfaceKHRDeleter>;
31602#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31603
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031604 class Instance
31605 {
31606 public:
31607 Instance()
31608 : m_instance(VK_NULL_HANDLE)
31609 {}
31610
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070031611 Instance( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031612 : m_instance(VK_NULL_HANDLE)
31613 {}
31614
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031615 VULKAN_HPP_TYPESAFE_EXPLICIT Instance( VkInstance instance )
31616 : m_instance( instance )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031617 {}
31618
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070031619#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031620 Instance & operator=(VkInstance instance)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031621 {
31622 m_instance = instance;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031623 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031624 }
31625#endif
31626
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031627 Instance & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031628 {
31629 m_instance = VK_NULL_HANDLE;
31630 return *this;
31631 }
31632
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031633 bool operator==( Instance const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060031634 {
31635 return m_instance == rhs.m_instance;
31636 }
31637
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031638 bool operator!=(Instance const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060031639 {
31640 return m_instance != rhs.m_instance;
31641 }
31642
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031643 bool operator<(Instance const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060031644 {
31645 return m_instance < rhs.m_instance;
31646 }
31647
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031648 void destroy( const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031649#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031650 void destroy( Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031651#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31652
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031653 Result enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031654#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031655 template <typename Allocator = std::allocator<PhysicalDevice>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031656 typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type enumeratePhysicalDevices() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031657#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31658
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031659 PFN_vkVoidFunction getProcAddr( const char* pName ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031660#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031661 PFN_vkVoidFunction getProcAddr( const std::string & name ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031662#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31663
31664#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031665 Result createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031666#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031667 ResultValueType<SurfaceKHR>::type createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31668#ifndef VULKAN_HPP_NO_SMART_HANDLE
31669 UniqueSurfaceKHR createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31670#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031671#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031672#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031673
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031674 Result createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031675#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031676 ResultValueType<SurfaceKHR>::type createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31677#ifndef VULKAN_HPP_NO_SMART_HANDLE
31678 UniqueSurfaceKHR createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31679#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031680#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31681
31682#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031683 Result createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031684#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031685 ResultValueType<SurfaceKHR>::type createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31686#ifndef VULKAN_HPP_NO_SMART_HANDLE
31687 UniqueSurfaceKHR createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31688#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031689#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031690#endif /*VK_USE_PLATFORM_MIR_KHR*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031691
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031692 void destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031693#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031694 void destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031695#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31696
Mark Young39389872017-01-19 21:10:49 -070031697#ifdef VK_USE_PLATFORM_VI_NN
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031698 Result createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31699#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31700 ResultValueType<SurfaceKHR>::type createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31701#ifndef VULKAN_HPP_NO_SMART_HANDLE
31702 UniqueSurfaceKHR createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31703#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31704#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young39389872017-01-19 21:10:49 -070031705#endif /*VK_USE_PLATFORM_VI_NN*/
31706
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031707#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031708 Result createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31709#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31710 ResultValueType<SurfaceKHR>::type createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31711#ifndef VULKAN_HPP_NO_SMART_HANDLE
31712 UniqueSurfaceKHR createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31713#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31714#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031715#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
31716
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031717#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031718 Result createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31719#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31720 ResultValueType<SurfaceKHR>::type createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31721#ifndef VULKAN_HPP_NO_SMART_HANDLE
31722 UniqueSurfaceKHR createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31723#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31724#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031725#endif /*VK_USE_PLATFORM_WIN32_KHR*/
31726
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031727#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031728 Result createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31729#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31730 ResultValueType<SurfaceKHR>::type createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31731#ifndef VULKAN_HPP_NO_SMART_HANDLE
31732 UniqueSurfaceKHR createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31733#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31734#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031735#endif /*VK_USE_PLATFORM_XLIB_KHR*/
31736
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031737#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031738 Result createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31739#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31740 ResultValueType<SurfaceKHR>::type createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31741#ifndef VULKAN_HPP_NO_SMART_HANDLE
31742 UniqueSurfaceKHR createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31743#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31744#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031745#endif /*VK_USE_PLATFORM_XCB_KHR*/
31746
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031747 Result createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031748#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031749 ResultValueType<DebugReportCallbackEXT>::type createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31750#ifndef VULKAN_HPP_NO_SMART_HANDLE
31751 UniqueDebugReportCallbackEXT createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31752#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031753#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31754
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031755 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031756#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031757 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031758#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31759
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031760 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 -060031761#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031762 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 -060031763#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31764
Mark Young0f183a82017-02-28 09:58:04 -070031765 Result enumeratePhysicalDeviceGroupsKHX( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ) const;
31766#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31767 template <typename Allocator = std::allocator<PhysicalDeviceGroupPropertiesKHX>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031768 typename ResultValueType<std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator>>::type enumeratePhysicalDeviceGroupsKHX() const;
Mark Young0f183a82017-02-28 09:58:04 -070031769#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31770
31771#ifdef VK_USE_PLATFORM_IOS_MVK
31772 Result createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31773#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31774 ResultValueType<SurfaceKHR>::type createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31775#ifndef VULKAN_HPP_NO_SMART_HANDLE
31776 UniqueSurfaceKHR createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31777#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31778#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31779#endif /*VK_USE_PLATFORM_IOS_MVK*/
31780
31781#ifdef VK_USE_PLATFORM_MACOS_MVK
31782 Result createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31783#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31784 ResultValueType<SurfaceKHR>::type createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31785#ifndef VULKAN_HPP_NO_SMART_HANDLE
31786 UniqueSurfaceKHR createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31787#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31788#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31789#endif /*VK_USE_PLATFORM_MACOS_MVK*/
31790
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031791
31792
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070031793 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkInstance() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031794 {
31795 return m_instance;
31796 }
31797
31798 explicit operator bool() const
31799 {
31800 return m_instance != VK_NULL_HANDLE;
31801 }
31802
31803 bool operator!() const
31804 {
31805 return m_instance == VK_NULL_HANDLE;
31806 }
31807
31808 private:
31809 VkInstance m_instance;
31810 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031811
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031812 static_assert( sizeof( Instance ) == sizeof( VkInstance ), "handle and wrapper have different size!" );
31813
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031814#ifndef VULKAN_HPP_NO_SMART_HANDLE
31815 class DebugReportCallbackEXTDeleter
31816 {
31817 public:
31818 DebugReportCallbackEXTDeleter( Instance instance = Instance(), Optional<const AllocationCallbacks> allocator = nullptr )
31819 : m_instance( instance )
31820 , m_allocator( allocator )
31821 {}
31822
31823 void operator()( DebugReportCallbackEXT debugReportCallbackEXT )
31824 {
31825 m_instance.destroyDebugReportCallbackEXT( debugReportCallbackEXT, m_allocator );
31826 }
31827
31828 private:
31829 Instance m_instance;
31830 Optional<const AllocationCallbacks> m_allocator;
31831 };
31832
31833 class SurfaceKHRDeleter
31834 {
31835 public:
31836 SurfaceKHRDeleter( Instance instance = Instance(), Optional<const AllocationCallbacks> allocator = nullptr )
31837 : m_instance( instance )
31838 , m_allocator( allocator )
31839 {}
31840
31841 void operator()( SurfaceKHR surfaceKHR )
31842 {
31843 m_instance.destroySurfaceKHR( surfaceKHR, m_allocator );
31844 }
31845
31846 private:
31847 Instance m_instance;
31848 Optional<const AllocationCallbacks> m_allocator;
31849 };
31850#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31851
31852 VULKAN_HPP_INLINE void Instance::destroy( const AllocationCallbacks* pAllocator ) const
31853 {
31854 vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
31855 }
31856#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31857 VULKAN_HPP_INLINE void Instance::destroy( Optional<const AllocationCallbacks> allocator ) const
31858 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031859 vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031860 }
31861#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31862
31863 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices ) const
31864 {
31865 return static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, pPhysicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( pPhysicalDevices ) ) );
31866 }
31867#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31868 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031869 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type Instance::enumeratePhysicalDevices() const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031870 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031871 std::vector<PhysicalDevice,Allocator> physicalDevices;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031872 uint32_t physicalDeviceCount;
31873 Result result;
31874 do
31875 {
31876 result = static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, nullptr ) );
31877 if ( ( result == Result::eSuccess ) && physicalDeviceCount )
31878 {
31879 physicalDevices.resize( physicalDeviceCount );
31880 result = static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( physicalDevices.data() ) ) );
31881 }
31882 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031883 assert( physicalDeviceCount <= physicalDevices.size() );
31884 physicalDevices.resize( physicalDeviceCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031885 return createResultValue( result, physicalDevices, "VULKAN_HPP_NAMESPACE::Instance::enumeratePhysicalDevices" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031886 }
31887#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31888
31889 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const char* pName ) const
31890 {
31891 return vkGetInstanceProcAddr( m_instance, pName );
31892 }
31893#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31894 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const std::string & name ) const
31895 {
31896 return vkGetInstanceProcAddr( m_instance, name.c_str() );
31897 }
31898#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31899
31900#ifdef VK_USE_PLATFORM_ANDROID_KHR
31901 VULKAN_HPP_INLINE Result Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31902 {
31903 return static_cast<Result>( vkCreateAndroidSurfaceKHR( m_instance, reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31904 }
31905#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31906 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31907 {
31908 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031909 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060031910 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createAndroidSurfaceKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031911 }
31912#ifndef VULKAN_HPP_NO_SMART_HANDLE
31913 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31914 {
31915 SurfaceKHRDeleter deleter( *this, allocator );
31916 return UniqueSurfaceKHR( createAndroidSurfaceKHR( createInfo, allocator ), deleter );
31917 }
31918#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31919#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31920#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
31921
31922 VULKAN_HPP_INLINE Result Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31923 {
31924 return static_cast<Result>( vkCreateDisplayPlaneSurfaceKHR( m_instance, reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31925 }
31926#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31927 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31928 {
31929 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031930 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060031931 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createDisplayPlaneSurfaceKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031932 }
31933#ifndef VULKAN_HPP_NO_SMART_HANDLE
31934 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31935 {
31936 SurfaceKHRDeleter deleter( *this, allocator );
31937 return UniqueSurfaceKHR( createDisplayPlaneSurfaceKHR( createInfo, allocator ), deleter );
31938 }
31939#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31940#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31941
31942#ifdef VK_USE_PLATFORM_MIR_KHR
31943 VULKAN_HPP_INLINE Result Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31944 {
31945 return static_cast<Result>( vkCreateMirSurfaceKHR( m_instance, reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31946 }
31947#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31948 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31949 {
31950 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031951 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060031952 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createMirSurfaceKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031953 }
31954#ifndef VULKAN_HPP_NO_SMART_HANDLE
31955 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31956 {
31957 SurfaceKHRDeleter deleter( *this, allocator );
31958 return UniqueSurfaceKHR( createMirSurfaceKHR( createInfo, allocator ), deleter );
31959 }
31960#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31961#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31962#endif /*VK_USE_PLATFORM_MIR_KHR*/
31963
31964 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator ) const
31965 {
31966 vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
31967 }
31968#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31969 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator ) const
31970 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031971 vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031972 }
31973#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31974
31975#ifdef VK_USE_PLATFORM_VI_NN
31976 VULKAN_HPP_INLINE Result Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31977 {
31978 return static_cast<Result>( vkCreateViSurfaceNN( m_instance, reinterpret_cast<const VkViSurfaceCreateInfoNN*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31979 }
31980#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31981 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator ) const
31982 {
31983 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031984 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060031985 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createViSurfaceNN" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031986 }
31987#ifndef VULKAN_HPP_NO_SMART_HANDLE
31988 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator ) const
31989 {
31990 SurfaceKHRDeleter deleter( *this, allocator );
31991 return UniqueSurfaceKHR( createViSurfaceNN( createInfo, allocator ), deleter );
31992 }
31993#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31994#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31995#endif /*VK_USE_PLATFORM_VI_NN*/
31996
31997#ifdef VK_USE_PLATFORM_WAYLAND_KHR
31998 VULKAN_HPP_INLINE Result Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31999 {
32000 return static_cast<Result>( vkCreateWaylandSurfaceKHR( m_instance, reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
32001 }
32002#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32003 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
32004 {
32005 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060032006 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060032007 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createWaylandSurfaceKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032008 }
32009#ifndef VULKAN_HPP_NO_SMART_HANDLE
32010 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
32011 {
32012 SurfaceKHRDeleter deleter( *this, allocator );
32013 return UniqueSurfaceKHR( createWaylandSurfaceKHR( createInfo, allocator ), deleter );
32014 }
32015#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
32016#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32017#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
32018
32019#ifdef VK_USE_PLATFORM_WIN32_KHR
32020 VULKAN_HPP_INLINE Result Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
32021 {
32022 return static_cast<Result>( vkCreateWin32SurfaceKHR( m_instance, reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
32023 }
32024#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32025 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
32026 {
32027 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060032028 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060032029 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createWin32SurfaceKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032030 }
32031#ifndef VULKAN_HPP_NO_SMART_HANDLE
32032 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
32033 {
32034 SurfaceKHRDeleter deleter( *this, allocator );
32035 return UniqueSurfaceKHR( createWin32SurfaceKHR( createInfo, allocator ), deleter );
32036 }
32037#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
32038#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32039#endif /*VK_USE_PLATFORM_WIN32_KHR*/
32040
32041#ifdef VK_USE_PLATFORM_XLIB_KHR
32042 VULKAN_HPP_INLINE Result Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
32043 {
32044 return static_cast<Result>( vkCreateXlibSurfaceKHR( m_instance, reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
32045 }
32046#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32047 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
32048 {
32049 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060032050 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060032051 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createXlibSurfaceKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032052 }
32053#ifndef VULKAN_HPP_NO_SMART_HANDLE
32054 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
32055 {
32056 SurfaceKHRDeleter deleter( *this, allocator );
32057 return UniqueSurfaceKHR( createXlibSurfaceKHR( createInfo, allocator ), deleter );
32058 }
32059#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
32060#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32061#endif /*VK_USE_PLATFORM_XLIB_KHR*/
32062
32063#ifdef VK_USE_PLATFORM_XCB_KHR
32064 VULKAN_HPP_INLINE Result Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
32065 {
32066 return static_cast<Result>( vkCreateXcbSurfaceKHR( m_instance, reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
32067 }
32068#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32069 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
32070 {
32071 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060032072 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060032073 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createXcbSurfaceKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032074 }
32075#ifndef VULKAN_HPP_NO_SMART_HANDLE
32076 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
32077 {
32078 SurfaceKHRDeleter deleter( *this, allocator );
32079 return UniqueSurfaceKHR( createXcbSurfaceKHR( createInfo, allocator ), deleter );
32080 }
32081#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
32082#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32083#endif /*VK_USE_PLATFORM_XCB_KHR*/
32084
32085 VULKAN_HPP_INLINE Result Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback ) const
32086 {
32087 return static_cast<Result>( vkCreateDebugReportCallbackEXT( m_instance, reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDebugReportCallbackEXT*>( pCallback ) ) );
32088 }
32089#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32090 VULKAN_HPP_INLINE ResultValueType<DebugReportCallbackEXT>::type Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
32091 {
32092 DebugReportCallbackEXT callback;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060032093 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060032094 return createResultValue( result, callback, "VULKAN_HPP_NAMESPACE::Instance::createDebugReportCallbackEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032095 }
32096#ifndef VULKAN_HPP_NO_SMART_HANDLE
32097 VULKAN_HPP_INLINE UniqueDebugReportCallbackEXT Instance::createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
32098 {
32099 DebugReportCallbackEXTDeleter deleter( *this, allocator );
32100 return UniqueDebugReportCallbackEXT( createDebugReportCallbackEXT( createInfo, allocator ), deleter );
32101 }
32102#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
32103#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32104
32105 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator ) const
32106 {
32107 vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
32108 }
32109#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32110 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator ) const
32111 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060032112 vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032113 }
32114#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32115
32116 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
32117 {
32118 vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, pLayerPrefix, pMessage );
32119 }
32120#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32121 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
32122 {
32123#ifdef VULKAN_HPP_NO_EXCEPTIONS
32124 assert( layerPrefix.size() == message.size() );
32125#else
32126 if ( layerPrefix.size() != message.size() )
32127 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060032128 throw LogicError( "VULKAN_HPP_NAMESPACE::Instance::debugReportMessageEXT: layerPrefix.size() != message.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032129 }
32130#endif // VULKAN_HPP_NO_EXCEPTIONS
32131 vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, layerPrefix.c_str(), message.c_str() );
32132 }
32133#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070032134
32135 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDeviceGroupsKHX( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ) const
Lenny Komow68432d72016-09-29 14:16:59 -060032136 {
Mark Young0f183a82017-02-28 09:58:04 -070032137 return static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, pPhysicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupPropertiesKHX*>( pPhysicalDeviceGroupProperties ) ) );
32138 }
32139#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32140 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060032141 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator>>::type Instance::enumeratePhysicalDeviceGroupsKHX() const
Mark Young0f183a82017-02-28 09:58:04 -070032142 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060032143 std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator> physicalDeviceGroupProperties;
Mark Young0f183a82017-02-28 09:58:04 -070032144 uint32_t physicalDeviceGroupCount;
32145 Result result;
32146 do
32147 {
32148 result = static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, &physicalDeviceGroupCount, nullptr ) );
32149 if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount )
32150 {
32151 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
32152 result = static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, &physicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupPropertiesKHX*>( physicalDeviceGroupProperties.data() ) ) );
32153 }
32154 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060032155 assert( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() );
32156 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060032157 return createResultValue( result, physicalDeviceGroupProperties, "VULKAN_HPP_NAMESPACE::Instance::enumeratePhysicalDeviceGroupsKHX" );
Mark Young0f183a82017-02-28 09:58:04 -070032158 }
32159#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32160
32161#ifdef VK_USE_PLATFORM_IOS_MVK
32162 VULKAN_HPP_INLINE Result Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
32163 {
32164 return static_cast<Result>( vkCreateIOSSurfaceMVK( m_instance, reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
32165 }
32166#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32167 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
32168 {
32169 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060032170 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060032171 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createIOSSurfaceMVK" );
Mark Young0f183a82017-02-28 09:58:04 -070032172 }
32173#ifndef VULKAN_HPP_NO_SMART_HANDLE
32174 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
32175 {
32176 SurfaceKHRDeleter deleter( *this, allocator );
32177 return UniqueSurfaceKHR( createIOSSurfaceMVK( createInfo, allocator ), deleter );
32178 }
32179#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
32180#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32181#endif /*VK_USE_PLATFORM_IOS_MVK*/
32182
32183#ifdef VK_USE_PLATFORM_MACOS_MVK
32184 VULKAN_HPP_INLINE Result Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
32185 {
32186 return static_cast<Result>( vkCreateMacOSSurfaceMVK( m_instance, reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
32187 }
32188#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
32189 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
32190 {
32191 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060032192 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 Lobodzinskie3f891d2017-10-09 13:06:50 -060032193 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createMacOSSurfaceMVK" );
Mark Young0f183a82017-02-28 09:58:04 -070032194 }
32195#ifndef VULKAN_HPP_NO_SMART_HANDLE
32196 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
32197 {
32198 SurfaceKHRDeleter deleter( *this, allocator );
32199 return UniqueSurfaceKHR( createMacOSSurfaceMVK( createInfo, allocator ), deleter );
32200 }
32201#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
32202#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32203#endif /*VK_USE_PLATFORM_MACOS_MVK*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060032204
Mark Young0f183a82017-02-28 09:58:04 -070032205 struct DeviceGroupDeviceCreateInfoKHX
32206 {
32207 DeviceGroupDeviceCreateInfoKHX( uint32_t physicalDeviceCount_ = 0, const PhysicalDevice* pPhysicalDevices_ = nullptr )
32208 : sType( StructureType::eDeviceGroupDeviceCreateInfoKHX )
Lenny Komow68432d72016-09-29 14:16:59 -060032209 , pNext( nullptr )
Mark Young0f183a82017-02-28 09:58:04 -070032210 , physicalDeviceCount( physicalDeviceCount_ )
32211 , pPhysicalDevices( pPhysicalDevices_ )
Lenny Komow68432d72016-09-29 14:16:59 -060032212 {
32213 }
32214
Mark Young0f183a82017-02-28 09:58:04 -070032215 DeviceGroupDeviceCreateInfoKHX( VkDeviceGroupDeviceCreateInfoKHX const & rhs )
Lenny Komow68432d72016-09-29 14:16:59 -060032216 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060032217 memcpy( this, &rhs, sizeof( DeviceGroupDeviceCreateInfoKHX ) );
Lenny Komow68432d72016-09-29 14:16:59 -060032218 }
32219
Mark Young0f183a82017-02-28 09:58:04 -070032220 DeviceGroupDeviceCreateInfoKHX& operator=( VkDeviceGroupDeviceCreateInfoKHX const & rhs )
Lenny Komow68432d72016-09-29 14:16:59 -060032221 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060032222 memcpy( this, &rhs, sizeof( DeviceGroupDeviceCreateInfoKHX ) );
Lenny Komow68432d72016-09-29 14:16:59 -060032223 return *this;
32224 }
Mark Young0f183a82017-02-28 09:58:04 -070032225 DeviceGroupDeviceCreateInfoKHX& setPNext( const void* pNext_ )
Lenny Komow68432d72016-09-29 14:16:59 -060032226 {
32227 pNext = pNext_;
32228 return *this;
32229 }
32230
Mark Young0f183a82017-02-28 09:58:04 -070032231 DeviceGroupDeviceCreateInfoKHX& setPhysicalDeviceCount( uint32_t physicalDeviceCount_ )
Lenny Komow68432d72016-09-29 14:16:59 -060032232 {
Mark Young0f183a82017-02-28 09:58:04 -070032233 physicalDeviceCount = physicalDeviceCount_;
Lenny Komow68432d72016-09-29 14:16:59 -060032234 return *this;
32235 }
32236
Mark Young0f183a82017-02-28 09:58:04 -070032237 DeviceGroupDeviceCreateInfoKHX& setPPhysicalDevices( const PhysicalDevice* pPhysicalDevices_ )
Lenny Komow68432d72016-09-29 14:16:59 -060032238 {
Mark Young0f183a82017-02-28 09:58:04 -070032239 pPhysicalDevices = pPhysicalDevices_;
Lenny Komow68432d72016-09-29 14:16:59 -060032240 return *this;
32241 }
32242
Mark Young0f183a82017-02-28 09:58:04 -070032243 operator const VkDeviceGroupDeviceCreateInfoKHX&() const
Lenny Komow68432d72016-09-29 14:16:59 -060032244 {
Mark Young0f183a82017-02-28 09:58:04 -070032245 return *reinterpret_cast<const VkDeviceGroupDeviceCreateInfoKHX*>(this);
Lenny Komow68432d72016-09-29 14:16:59 -060032246 }
32247
Mark Young0f183a82017-02-28 09:58:04 -070032248 bool operator==( DeviceGroupDeviceCreateInfoKHX const& rhs ) const
Lenny Komow68432d72016-09-29 14:16:59 -060032249 {
32250 return ( sType == rhs.sType )
32251 && ( pNext == rhs.pNext )
Mark Young0f183a82017-02-28 09:58:04 -070032252 && ( physicalDeviceCount == rhs.physicalDeviceCount )
32253 && ( pPhysicalDevices == rhs.pPhysicalDevices );
Lenny Komow68432d72016-09-29 14:16:59 -060032254 }
32255
Mark Young0f183a82017-02-28 09:58:04 -070032256 bool operator!=( DeviceGroupDeviceCreateInfoKHX const& rhs ) const
Lenny Komow68432d72016-09-29 14:16:59 -060032257 {
32258 return !operator==( rhs );
32259 }
32260
32261 private:
32262 StructureType sType;
32263
32264 public:
32265 const void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070032266 uint32_t physicalDeviceCount;
32267 const PhysicalDevice* pPhysicalDevices;
Lenny Komow68432d72016-09-29 14:16:59 -060032268 };
Mark Young0f183a82017-02-28 09:58:04 -070032269 static_assert( sizeof( DeviceGroupDeviceCreateInfoKHX ) == sizeof( VkDeviceGroupDeviceCreateInfoKHX ), "struct and wrapper have different size!" );
Lenny Komow68432d72016-09-29 14:16:59 -060032270
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032271#ifndef VULKAN_HPP_NO_SMART_HANDLE
32272 class InstanceDeleter;
32273 using UniqueInstance = UniqueHandle<Instance, InstanceDeleter>;
32274#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
32275
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060032276 Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032277#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060032278 ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032279#ifndef VULKAN_HPP_NO_SMART_HANDLE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060032280 UniqueInstance createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032281#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
32282#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32283
32284#ifndef VULKAN_HPP_NO_SMART_HANDLE
32285 class InstanceDeleter
32286 {
32287 public:
32288 InstanceDeleter( Optional<const AllocationCallbacks> allocator = nullptr )
32289 : m_allocator( allocator )
32290 {}
32291
32292 void operator()( Instance instance )
32293 {
32294 instance.destroy( m_allocator );
32295 }
32296
32297 private:
32298 Optional<const AllocationCallbacks> m_allocator;
32299 };
32300#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
32301
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032302 VULKAN_HPP_INLINE Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032303 {
32304 return static_cast<Result>( vkCreateInstance( reinterpret_cast<const VkInstanceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkInstance*>( pInstance ) ) );
32305 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032306#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032307 VULKAN_HPP_INLINE ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032308 {
32309 Instance instance;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060032310 Result result = static_cast<Result>( vkCreateInstance( reinterpret_cast<const VkInstanceCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkInstance*>( &instance ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060032311 return createResultValue( result, instance, "VULKAN_HPP_NAMESPACE::createInstance" );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032312 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032313#ifndef VULKAN_HPP_NO_SMART_HANDLE
32314 VULKAN_HPP_INLINE UniqueInstance createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator )
32315 {
32316 InstanceDeleter deleter( allocator );
32317 return UniqueInstance( createInstance( createInfo, allocator ), deleter );
32318 }
32319#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032320#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32321
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060032322
Mark Lobodzinski417d5702017-11-27 12:00:45 -070032323 template <> struct isStructureChainValid<PresentInfoKHR, DisplayPresentInfoKHR>{ enum { value = true }; };
32324 template <> struct isStructureChainValid<ImageCreateInfo, DedicatedAllocationImageCreateInfoNV>{ enum { value = true }; };
32325 template <> struct isStructureChainValid<BufferCreateInfo, DedicatedAllocationBufferCreateInfoNV>{ enum { value = true }; };
32326 template <> struct isStructureChainValid<MemoryAllocateInfo, DedicatedAllocationMemoryAllocateInfoNV>{ enum { value = true }; };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032327#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski417d5702017-11-27 12:00:45 -070032328 template <> struct isStructureChainValid<MemoryAllocateInfo, ExportMemoryWin32HandleInfoNV>{ enum { value = true }; };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032329#endif /*VK_USE_PLATFORM_WIN32_KHR*/
32330#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski417d5702017-11-27 12:00:45 -070032331 template <> struct isStructureChainValid<SubmitInfo, Win32KeyedMutexAcquireReleaseInfoNV>{ enum { value = true }; };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032332#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Lobodzinski417d5702017-11-27 12:00:45 -070032333 template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceFeatures2KHR>{ enum { value = true }; };
32334 template <> struct isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDevicePushDescriptorPropertiesKHR>{ enum { value = true }; };
32335 template <> struct isStructureChainValid<PresentInfoKHR, PresentRegionsKHR>{ enum { value = true }; };
32336 template <> struct isStructureChainValid<PhysicalDeviceFeatures2KHR, PhysicalDeviceVariablePointerFeaturesKHR>{ enum { value = true }; };
32337 template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceVariablePointerFeaturesKHR>{ enum { value = true }; };
32338 template <> struct isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceIDPropertiesKHR>{ enum { value = true }; };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032339#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski417d5702017-11-27 12:00:45 -070032340 template <> struct isStructureChainValid<MemoryAllocateInfo, ExportMemoryWin32HandleInfoKHR>{ enum { value = true }; };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032341#endif /*VK_USE_PLATFORM_WIN32_KHR*/
32342#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski417d5702017-11-27 12:00:45 -070032343 template <> struct isStructureChainValid<SubmitInfo, Win32KeyedMutexAcquireReleaseInfoKHR>{ enum { value = true }; };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032344#endif /*VK_USE_PLATFORM_WIN32_KHR*/
32345#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski417d5702017-11-27 12:00:45 -070032346 template <> struct isStructureChainValid<SemaphoreCreateInfo, ExportSemaphoreWin32HandleInfoKHR>{ enum { value = true }; };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032347#endif /*VK_USE_PLATFORM_WIN32_KHR*/
32348#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski417d5702017-11-27 12:00:45 -070032349 template <> struct isStructureChainValid<SubmitInfo, D3D12FenceSubmitInfoKHR>{ enum { value = true }; };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032350#endif /*VK_USE_PLATFORM_WIN32_KHR*/
32351#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski417d5702017-11-27 12:00:45 -070032352 template <> struct isStructureChainValid<FenceCreateInfo, ExportFenceWin32HandleInfoKHR>{ enum { value = true }; };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032353#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Lobodzinski417d5702017-11-27 12:00:45 -070032354 template <> struct isStructureChainValid<PhysicalDeviceFeatures2KHR, PhysicalDeviceMultiviewFeaturesKHX>{ enum { value = true }; };
32355 template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceMultiviewFeaturesKHX>{ enum { value = true }; };
32356 template <> struct isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceMultiviewPropertiesKHX>{ enum { value = true }; };
32357 template <> struct isStructureChainValid<RenderPassCreateInfo, RenderPassMultiviewCreateInfoKHX>{ enum { value = true }; };
32358 template <> struct isStructureChainValid<BindBufferMemoryInfoKHR, BindBufferMemoryDeviceGroupInfoKHX>{ enum { value = true }; };
32359 template <> struct isStructureChainValid<BindImageMemoryInfoKHR, BindImageMemoryDeviceGroupInfoKHX>{ enum { value = true }; };
32360 template <> struct isStructureChainValid<RenderPassBeginInfo, DeviceGroupRenderPassBeginInfoKHX>{ enum { value = true }; };
32361 template <> struct isStructureChainValid<CommandBufferBeginInfo, DeviceGroupCommandBufferBeginInfoKHX>{ enum { value = true }; };
32362 template <> struct isStructureChainValid<SubmitInfo, DeviceGroupSubmitInfoKHX>{ enum { value = true }; };
32363 template <> struct isStructureChainValid<BindSparseInfo, DeviceGroupBindSparseInfoKHX>{ enum { value = true }; };
32364 template <> struct isStructureChainValid<ImageCreateInfo, ImageSwapchainCreateInfoKHX>{ enum { value = true }; };
32365 template <> struct isStructureChainValid<BindImageMemoryInfoKHR, BindImageMemorySwapchainInfoKHX>{ enum { value = true }; };
32366 template <> struct isStructureChainValid<PresentInfoKHR, PresentTimesInfoGOOGLE>{ enum { value = true }; };
32367 template <> struct isStructureChainValid<PipelineViewportStateCreateInfo, PipelineViewportWScalingStateCreateInfoNV>{ enum { value = true }; };
32368 template <> struct isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceDiscardRectanglePropertiesEXT>{ enum { value = true }; };
32369 template <> struct isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX>{ enum { value = true }; };
32370 template <> struct isStructureChainValid<PhysicalDeviceFeatures2KHR, PhysicalDevice16BitStorageFeaturesKHR>{ enum { value = true }; };
32371 template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDevice16BitStorageFeaturesKHR>{ enum { value = true }; };
32372 template <> struct isStructureChainValid<MemoryRequirements2KHR, MemoryDedicatedRequirementsKHR>{ enum { value = true }; };
32373 template <> struct isStructureChainValid<MemoryAllocateInfo, MemoryDedicatedAllocateInfoKHR>{ enum { value = true }; };
32374 template <> struct isStructureChainValid<SamplerCreateInfo, SamplerYcbcrConversionInfoKHR>{ enum { value = true }; };
32375 template <> struct isStructureChainValid<ImageViewCreateInfo, SamplerYcbcrConversionInfoKHR>{ enum { value = true }; };
32376 template <> struct isStructureChainValid<PhysicalDeviceFeatures2KHR, PhysicalDeviceSamplerYcbcrConversionFeaturesKHR>{ enum { value = true }; };
32377 template <> struct isStructureChainValid<DeviceCreateInfo, PhysicalDeviceSamplerYcbcrConversionFeaturesKHR>{ enum { value = true }; };
32378 template <> struct isStructureChainValid<ImageFormatProperties2KHR, SamplerYcbcrConversionImageFormatPropertiesKHR>{ enum { value = true }; };
32379 template <> struct isStructureChainValid<ImageFormatProperties2KHR, TextureLODGatherFormatPropertiesAMD>{ enum { value = true }; };
32380 template <> struct isStructureChainValid<PipelineMultisampleStateCreateInfo, PipelineCoverageToColorStateCreateInfoNV>{ enum { value = true }; };
32381 template <> struct isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceSamplerFilterMinmaxPropertiesEXT>{ enum { value = true }; };
32382 template <> struct isStructureChainValid<PhysicalDeviceFeatures2KHR, PhysicalDeviceBlendOperationAdvancedFeaturesEXT>{ enum { value = true }; };
32383 template <> struct isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceBlendOperationAdvancedPropertiesEXT>{ enum { value = true }; };
32384 template <> struct isStructureChainValid<ImageCreateInfo, ImageFormatListCreateInfoKHR>{ enum { value = true }; };
32385 template <> struct isStructureChainValid<ShaderModuleCreateInfo, ShaderModuleValidationCacheCreateInfoEXT>{ enum { value = true }; };
32386 template <> struct isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceExternalMemoryHostPropertiesEXT>{ enum { value = true }; };
32387 template <> struct isStructureChainValid<SurfaceCapabilities2KHR, SharedPresentSurfaceCapabilitiesKHR>{ enum { value = true }; };
32388 template <> struct isStructureChainValid<ImageViewCreateInfo, ImageViewUsageCreateInfoKHR>{ enum { value = true }; };
32389 template <> struct isStructureChainValid<RenderPassCreateInfo, RenderPassInputAttachmentAspectCreateInfoKHR>{ enum { value = true }; };
32390 template <> struct isStructureChainValid<BindImageMemoryInfoKHR, BindImagePlaneMemoryInfoKHR>{ enum { value = true }; };
32391 template <> struct isStructureChainValid<ImageMemoryRequirementsInfo2KHR, ImagePlaneMemoryRequirementsInfoKHR>{ enum { value = true }; };
32392 template <> struct isStructureChainValid<ImageMemoryBarrier, SampleLocationsInfoEXT>{ enum { value = true }; };
32393 template <> struct isStructureChainValid<RenderPassBeginInfo, RenderPassSampleLocationsBeginInfoEXT>{ enum { value = true }; };
32394 template <> struct isStructureChainValid<PipelineMultisampleStateCreateInfo, PipelineSampleLocationsStateCreateInfoEXT>{ enum { value = true }; };
32395 template <> struct isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceSampleLocationsPropertiesEXT>{ enum { value = true }; };
32396 template <> struct isStructureChainValid<InstanceCreateInfo, DebugReportCallbackCreateInfoEXT>{ enum { value = true }; };
32397 template <> struct isStructureChainValid<PipelineRasterizationStateCreateInfo, PipelineRasterizationStateRasterizationOrderAMD>{ enum { value = true }; };
32398 template <> struct isStructureChainValid<ImageCreateInfo, ExternalMemoryImageCreateInfoNV>{ enum { value = true }; };
32399 template <> struct isStructureChainValid<MemoryAllocateInfo, ExportMemoryAllocateInfoNV>{ enum { value = true }; };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032400#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski417d5702017-11-27 12:00:45 -070032401 template <> struct isStructureChainValid<MemoryAllocateInfo, ImportMemoryWin32HandleInfoNV>{ enum { value = true }; };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032402#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Lobodzinski417d5702017-11-27 12:00:45 -070032403 template <> struct isStructureChainValid<InstanceCreateInfo, ValidationFlagsEXT>{ enum { value = true }; };
32404 template <> struct isStructureChainValid<PhysicalDeviceImageFormatInfo2KHR, PhysicalDeviceExternalImageFormatInfoKHR>{ enum { value = true }; };
32405 template <> struct isStructureChainValid<ImageCreateInfo, ExternalMemoryImageCreateInfoKHR>{ enum { value = true }; };
32406 template <> struct isStructureChainValid<BufferCreateInfo, ExternalMemoryBufferCreateInfoKHR>{ enum { value = true }; };
32407 template <> struct isStructureChainValid<MemoryAllocateInfo, ExportMemoryAllocateInfoKHR>{ enum { value = true }; };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032408#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski417d5702017-11-27 12:00:45 -070032409 template <> struct isStructureChainValid<MemoryAllocateInfo, ImportMemoryWin32HandleInfoKHR>{ enum { value = true }; };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032410#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Lobodzinski417d5702017-11-27 12:00:45 -070032411 template <> struct isStructureChainValid<MemoryAllocateInfo, ImportMemoryFdInfoKHR>{ enum { value = true }; };
32412 template <> struct isStructureChainValid<MemoryAllocateInfo, ImportMemoryHostPointerInfoEXT>{ enum { value = true }; };
32413 template <> struct isStructureChainValid<ImageFormatProperties2KHR, ExternalImageFormatPropertiesKHR>{ enum { value = true }; };
32414 template <> struct isStructureChainValid<SemaphoreCreateInfo, ExportSemaphoreCreateInfoKHR>{ enum { value = true }; };
32415 template <> struct isStructureChainValid<FenceCreateInfo, ExportFenceCreateInfoKHR>{ enum { value = true }; };
32416 template <> struct isStructureChainValid<SwapchainCreateInfoKHR, SwapchainCounterCreateInfoEXT>{ enum { value = true }; };
32417 template <> struct isStructureChainValid<MemoryAllocateInfo, MemoryAllocateFlagsInfoKHX>{ enum { value = true }; };
32418 template <> struct isStructureChainValid<PresentInfoKHR, DeviceGroupPresentInfoKHX>{ enum { value = true }; };
32419 template <> struct isStructureChainValid<SwapchainCreateInfoKHR, DeviceGroupSwapchainCreateInfoKHX>{ enum { value = true }; };
32420 template <> struct isStructureChainValid<PipelineViewportStateCreateInfo, PipelineViewportSwizzleStateCreateInfoNV>{ enum { value = true }; };
32421 template <> struct isStructureChainValid<GraphicsPipelineCreateInfo, PipelineDiscardRectangleStateCreateInfoEXT>{ enum { value = true }; };
32422 template <> struct isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDevicePointClippingPropertiesKHR>{ enum { value = true }; };
32423 template <> struct isStructureChainValid<SamplerCreateInfo, SamplerReductionModeCreateInfoEXT>{ enum { value = true }; };
32424 template <> struct isStructureChainValid<PipelineTessellationStateCreateInfo, PipelineTessellationDomainOriginStateCreateInfoKHR>{ enum { value = true }; };
32425 template <> struct isStructureChainValid<PipelineColorBlendStateCreateInfo, PipelineColorBlendAdvancedStateCreateInfoEXT>{ enum { value = true }; };
32426 template <> struct isStructureChainValid<PipelineMultisampleStateCreateInfo, PipelineCoverageModulationStateCreateInfoNV>{ enum { value = true }; };
32427 template <> struct isStructureChainValid<DeviceQueueCreateInfo, DeviceQueueGlobalPriorityCreateInfoEXT>{ enum { value = true }; };
32428 template <> struct isStructureChainValid<DeviceCreateInfo, DeviceGroupDeviceCreateInfoKHX>{ enum { value = true }; };
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032429 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032430 {
32431 return "(void)";
32432 }
32433
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032434 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032435 {
32436 return "{}";
32437 }
32438
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032439 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032440 {
32441 return "(void)";
32442 }
32443
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032444 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032445 {
32446 return "{}";
32447 }
32448
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032449 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032450 {
32451 return "(void)";
32452 }
32453
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032454 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032455 {
32456 return "{}";
32457 }
32458
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032459 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032460 {
32461 return "(void)";
32462 }
32463
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032464 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032465 {
32466 return "{}";
32467 }
32468
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032469 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032470 {
32471 return "(void)";
32472 }
32473
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032474 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032475 {
32476 return "{}";
32477 }
32478
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032479 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032480 {
32481 return "(void)";
32482 }
32483
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032484 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032485 {
32486 return "{}";
32487 }
32488
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032489 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032490 {
32491 return "(void)";
32492 }
32493
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032494 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032495 {
32496 return "{}";
32497 }
32498
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032499 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032500 {
32501 return "(void)";
32502 }
32503
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032504 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032505 {
32506 return "{}";
32507 }
32508
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032509 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032510 {
32511 return "(void)";
32512 }
32513
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032514 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032515 {
32516 return "{}";
32517 }
32518
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032519 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032520 {
32521 return "(void)";
32522 }
32523
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032524 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032525 {
32526 return "{}";
32527 }
32528
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032529 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032530 {
32531 return "(void)";
32532 }
32533
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032534 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032535 {
32536 return "{}";
32537 }
32538
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032539 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032540 {
32541 return "(void)";
32542 }
32543
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032544 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032545 {
32546 return "{}";
32547 }
32548
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032549 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032550 {
32551 return "(void)";
32552 }
32553
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032554 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032555 {
32556 return "{}";
32557 }
32558
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032559 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032560 {
32561 return "(void)";
32562 }
32563
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032564 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032565 {
32566 return "{}";
32567 }
32568
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032569 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032570 {
32571 return "(void)";
32572 }
32573
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032574 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032575 {
32576 return "{}";
32577 }
32578
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032579 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032580 {
32581 return "(void)";
32582 }
32583
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032584 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032585 {
32586 return "{}";
32587 }
32588
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032589 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032590 {
32591 return "(void)";
32592 }
32593
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032594 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032595 {
32596 return "{}";
32597 }
32598
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032599 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032600 {
32601 return "(void)";
32602 }
32603
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032604 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032605 {
32606 return "{}";
32607 }
32608
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032609 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032610 {
32611 return "(void)";
32612 }
32613
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032614 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032615 {
32616 return "{}";
32617 }
32618
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032619 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032620 {
32621 return "(void)";
32622 }
32623
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032624 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032625 {
32626 return "{}";
32627 }
32628
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032629 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032630 {
32631 return "(void)";
32632 }
32633
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032634 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032635 {
32636 return "{}";
32637 }
32638
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032639 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032640 {
32641 return "(void)";
32642 }
32643
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032644 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032645 {
32646 return "{}";
32647 }
32648
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032649 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032650 {
32651 return "(void)";
32652 }
32653
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032654 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032655 {
32656 return "{}";
32657 }
32658
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032659 VULKAN_HPP_INLINE std::string to_string(EventCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032660 {
32661 return "(void)";
32662 }
32663
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032664 VULKAN_HPP_INLINE std::string to_string(EventCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032665 {
32666 return "{}";
32667 }
32668
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032669 VULKAN_HPP_INLINE std::string to_string(MemoryMapFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032670 {
32671 return "(void)";
32672 }
32673
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032674 VULKAN_HPP_INLINE std::string to_string(MemoryMapFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032675 {
32676 return "{}";
32677 }
32678
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032679 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032680 {
32681 return "(void)";
32682 }
32683
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032684 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032685 {
32686 return "{}";
32687 }
32688
Mark Young0f183a82017-02-28 09:58:04 -070032689 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032690 {
32691 return "(void)";
32692 }
32693
Mark Young0f183a82017-02-28 09:58:04 -070032694 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032695 {
32696 return "{}";
32697 }
32698
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032699 VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032700 {
32701 return "(void)";
32702 }
32703
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032704 VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032705 {
32706 return "{}";
32707 }
32708
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032709 VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032710 {
32711 return "(void)";
32712 }
32713
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032714 VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032715 {
32716 return "{}";
32717 }
32718
32719#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032720 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032721 {
32722 return "(void)";
32723 }
32724#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
32725
32726#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032727 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032728 {
32729 return "{}";
32730 }
32731#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
32732
32733#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032734 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032735 {
32736 return "(void)";
32737 }
32738#endif /*VK_USE_PLATFORM_MIR_KHR*/
32739
32740#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032741 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032742 {
32743 return "{}";
32744 }
32745#endif /*VK_USE_PLATFORM_MIR_KHR*/
32746
Mark Young39389872017-01-19 21:10:49 -070032747#ifdef VK_USE_PLATFORM_VI_NN
32748 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagBitsNN)
32749 {
32750 return "(void)";
32751 }
32752#endif /*VK_USE_PLATFORM_VI_NN*/
32753
32754#ifdef VK_USE_PLATFORM_VI_NN
32755 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagsNN)
32756 {
32757 return "{}";
32758 }
32759#endif /*VK_USE_PLATFORM_VI_NN*/
32760
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032761#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032762 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032763 {
32764 return "(void)";
32765 }
32766#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
32767
32768#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032769 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032770 {
32771 return "{}";
32772 }
32773#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
32774
32775#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032776 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032777 {
32778 return "(void)";
32779 }
32780#endif /*VK_USE_PLATFORM_WIN32_KHR*/
32781
32782#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032783 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032784 {
32785 return "{}";
32786 }
32787#endif /*VK_USE_PLATFORM_WIN32_KHR*/
32788
32789#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032790 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032791 {
32792 return "(void)";
32793 }
32794#endif /*VK_USE_PLATFORM_XLIB_KHR*/
32795
32796#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032797 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032798 {
32799 return "{}";
32800 }
32801#endif /*VK_USE_PLATFORM_XLIB_KHR*/
32802
32803#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032804 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032805 {
32806 return "(void)";
32807 }
32808#endif /*VK_USE_PLATFORM_XCB_KHR*/
32809
32810#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032811 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032812 {
32813 return "{}";
32814 }
32815#endif /*VK_USE_PLATFORM_XCB_KHR*/
32816
Mark Young0f183a82017-02-28 09:58:04 -070032817#ifdef VK_USE_PLATFORM_IOS_MVK
32818 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagBitsMVK)
32819 {
32820 return "(void)";
32821 }
32822#endif /*VK_USE_PLATFORM_IOS_MVK*/
32823
32824#ifdef VK_USE_PLATFORM_IOS_MVK
32825 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagsMVK)
32826 {
32827 return "{}";
32828 }
32829#endif /*VK_USE_PLATFORM_IOS_MVK*/
32830
32831#ifdef VK_USE_PLATFORM_MACOS_MVK
32832 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagBitsMVK)
32833 {
32834 return "(void)";
32835 }
32836#endif /*VK_USE_PLATFORM_MACOS_MVK*/
32837
32838#ifdef VK_USE_PLATFORM_MACOS_MVK
32839 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagsMVK)
32840 {
32841 return "{}";
32842 }
32843#endif /*VK_USE_PLATFORM_MACOS_MVK*/
32844
Mark Young39389872017-01-19 21:10:49 -070032845 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagBitsKHR)
32846 {
32847 return "(void)";
32848 }
32849
32850 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagsKHR)
32851 {
32852 return "{}";
32853 }
32854
Mark Young0f183a82017-02-28 09:58:04 -070032855 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagBitsNV)
32856 {
32857 return "(void)";
32858 }
32859
32860 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagsNV)
32861 {
32862 return "{}";
32863 }
32864
32865 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagBitsEXT)
32866 {
32867 return "(void)";
32868 }
32869
32870 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagsEXT)
32871 {
32872 return "{}";
32873 }
32874
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060032875 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageToColorStateCreateFlagBitsNV)
32876 {
32877 return "(void)";
32878 }
32879
32880 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageToColorStateCreateFlagsNV)
32881 {
32882 return "{}";
32883 }
32884
32885 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageModulationStateCreateFlagBitsNV)
32886 {
32887 return "(void)";
32888 }
32889
32890 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageModulationStateCreateFlagsNV)
32891 {
32892 return "{}";
32893 }
32894
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032895 VULKAN_HPP_INLINE std::string to_string(ValidationCacheCreateFlagBitsEXT)
32896 {
32897 return "(void)";
32898 }
32899
32900 VULKAN_HPP_INLINE std::string to_string(ValidationCacheCreateFlagsEXT)
32901 {
32902 return "{}";
32903 }
32904
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032905 VULKAN_HPP_INLINE std::string to_string(ImageLayout value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032906 {
32907 switch (value)
32908 {
32909 case ImageLayout::eUndefined: return "Undefined";
32910 case ImageLayout::eGeneral: return "General";
32911 case ImageLayout::eColorAttachmentOptimal: return "ColorAttachmentOptimal";
32912 case ImageLayout::eDepthStencilAttachmentOptimal: return "DepthStencilAttachmentOptimal";
32913 case ImageLayout::eDepthStencilReadOnlyOptimal: return "DepthStencilReadOnlyOptimal";
32914 case ImageLayout::eShaderReadOnlyOptimal: return "ShaderReadOnlyOptimal";
32915 case ImageLayout::eTransferSrcOptimal: return "TransferSrcOptimal";
32916 case ImageLayout::eTransferDstOptimal: return "TransferDstOptimal";
32917 case ImageLayout::ePreinitialized: return "Preinitialized";
32918 case ImageLayout::ePresentSrcKHR: return "PresentSrcKHR";
Mark Lobodzinski54385432017-05-15 10:27:52 -060032919 case ImageLayout::eSharedPresentKHR: return "SharedPresentKHR";
Lenny Komowb79f04a2017-09-18 17:07:00 -060032920 case ImageLayout::eDepthReadOnlyStencilAttachmentOptimalKHR: return "DepthReadOnlyStencilAttachmentOptimalKHR";
32921 case ImageLayout::eDepthAttachmentStencilReadOnlyOptimalKHR: return "DepthAttachmentStencilReadOnlyOptimalKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032922 default: return "invalid";
32923 }
32924 }
32925
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032926 VULKAN_HPP_INLINE std::string to_string(AttachmentLoadOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032927 {
32928 switch (value)
32929 {
32930 case AttachmentLoadOp::eLoad: return "Load";
32931 case AttachmentLoadOp::eClear: return "Clear";
32932 case AttachmentLoadOp::eDontCare: return "DontCare";
32933 default: return "invalid";
32934 }
32935 }
32936
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032937 VULKAN_HPP_INLINE std::string to_string(AttachmentStoreOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032938 {
32939 switch (value)
32940 {
32941 case AttachmentStoreOp::eStore: return "Store";
32942 case AttachmentStoreOp::eDontCare: return "DontCare";
32943 default: return "invalid";
32944 }
32945 }
32946
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032947 VULKAN_HPP_INLINE std::string to_string(ImageType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032948 {
32949 switch (value)
32950 {
32951 case ImageType::e1D: return "1D";
32952 case ImageType::e2D: return "2D";
32953 case ImageType::e3D: return "3D";
32954 default: return "invalid";
32955 }
32956 }
32957
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032958 VULKAN_HPP_INLINE std::string to_string(ImageTiling value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032959 {
32960 switch (value)
32961 {
32962 case ImageTiling::eOptimal: return "Optimal";
32963 case ImageTiling::eLinear: return "Linear";
32964 default: return "invalid";
32965 }
32966 }
32967
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032968 VULKAN_HPP_INLINE std::string to_string(ImageViewType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032969 {
32970 switch (value)
32971 {
32972 case ImageViewType::e1D: return "1D";
32973 case ImageViewType::e2D: return "2D";
32974 case ImageViewType::e3D: return "3D";
32975 case ImageViewType::eCube: return "Cube";
32976 case ImageViewType::e1DArray: return "1DArray";
32977 case ImageViewType::e2DArray: return "2DArray";
32978 case ImageViewType::eCubeArray: return "CubeArray";
32979 default: return "invalid";
32980 }
32981 }
32982
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032983 VULKAN_HPP_INLINE std::string to_string(CommandBufferLevel value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032984 {
32985 switch (value)
32986 {
32987 case CommandBufferLevel::ePrimary: return "Primary";
32988 case CommandBufferLevel::eSecondary: return "Secondary";
32989 default: return "invalid";
32990 }
32991 }
32992
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032993 VULKAN_HPP_INLINE std::string to_string(ComponentSwizzle value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032994 {
32995 switch (value)
32996 {
32997 case ComponentSwizzle::eIdentity: return "Identity";
32998 case ComponentSwizzle::eZero: return "Zero";
32999 case ComponentSwizzle::eOne: return "One";
33000 case ComponentSwizzle::eR: return "R";
33001 case ComponentSwizzle::eG: return "G";
33002 case ComponentSwizzle::eB: return "B";
33003 case ComponentSwizzle::eA: return "A";
33004 default: return "invalid";
33005 }
33006 }
33007
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033008 VULKAN_HPP_INLINE std::string to_string(DescriptorType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033009 {
33010 switch (value)
33011 {
33012 case DescriptorType::eSampler: return "Sampler";
33013 case DescriptorType::eCombinedImageSampler: return "CombinedImageSampler";
33014 case DescriptorType::eSampledImage: return "SampledImage";
33015 case DescriptorType::eStorageImage: return "StorageImage";
33016 case DescriptorType::eUniformTexelBuffer: return "UniformTexelBuffer";
33017 case DescriptorType::eStorageTexelBuffer: return "StorageTexelBuffer";
33018 case DescriptorType::eUniformBuffer: return "UniformBuffer";
33019 case DescriptorType::eStorageBuffer: return "StorageBuffer";
33020 case DescriptorType::eUniformBufferDynamic: return "UniformBufferDynamic";
33021 case DescriptorType::eStorageBufferDynamic: return "StorageBufferDynamic";
33022 case DescriptorType::eInputAttachment: return "InputAttachment";
33023 default: return "invalid";
33024 }
33025 }
33026
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033027 VULKAN_HPP_INLINE std::string to_string(QueryType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033028 {
33029 switch (value)
33030 {
33031 case QueryType::eOcclusion: return "Occlusion";
33032 case QueryType::ePipelineStatistics: return "PipelineStatistics";
33033 case QueryType::eTimestamp: return "Timestamp";
33034 default: return "invalid";
33035 }
33036 }
33037
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033038 VULKAN_HPP_INLINE std::string to_string(BorderColor value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033039 {
33040 switch (value)
33041 {
33042 case BorderColor::eFloatTransparentBlack: return "FloatTransparentBlack";
33043 case BorderColor::eIntTransparentBlack: return "IntTransparentBlack";
33044 case BorderColor::eFloatOpaqueBlack: return "FloatOpaqueBlack";
33045 case BorderColor::eIntOpaqueBlack: return "IntOpaqueBlack";
33046 case BorderColor::eFloatOpaqueWhite: return "FloatOpaqueWhite";
33047 case BorderColor::eIntOpaqueWhite: return "IntOpaqueWhite";
33048 default: return "invalid";
33049 }
33050 }
33051
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033052 VULKAN_HPP_INLINE std::string to_string(PipelineBindPoint value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033053 {
33054 switch (value)
33055 {
33056 case PipelineBindPoint::eGraphics: return "Graphics";
33057 case PipelineBindPoint::eCompute: return "Compute";
33058 default: return "invalid";
33059 }
33060 }
33061
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033062 VULKAN_HPP_INLINE std::string to_string(PipelineCacheHeaderVersion value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033063 {
33064 switch (value)
33065 {
33066 case PipelineCacheHeaderVersion::eOne: return "One";
33067 default: return "invalid";
33068 }
33069 }
33070
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033071 VULKAN_HPP_INLINE std::string to_string(PrimitiveTopology value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033072 {
33073 switch (value)
33074 {
33075 case PrimitiveTopology::ePointList: return "PointList";
33076 case PrimitiveTopology::eLineList: return "LineList";
33077 case PrimitiveTopology::eLineStrip: return "LineStrip";
33078 case PrimitiveTopology::eTriangleList: return "TriangleList";
33079 case PrimitiveTopology::eTriangleStrip: return "TriangleStrip";
33080 case PrimitiveTopology::eTriangleFan: return "TriangleFan";
33081 case PrimitiveTopology::eLineListWithAdjacency: return "LineListWithAdjacency";
33082 case PrimitiveTopology::eLineStripWithAdjacency: return "LineStripWithAdjacency";
33083 case PrimitiveTopology::eTriangleListWithAdjacency: return "TriangleListWithAdjacency";
33084 case PrimitiveTopology::eTriangleStripWithAdjacency: return "TriangleStripWithAdjacency";
33085 case PrimitiveTopology::ePatchList: return "PatchList";
33086 default: return "invalid";
33087 }
33088 }
33089
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033090 VULKAN_HPP_INLINE std::string to_string(SharingMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033091 {
33092 switch (value)
33093 {
33094 case SharingMode::eExclusive: return "Exclusive";
33095 case SharingMode::eConcurrent: return "Concurrent";
33096 default: return "invalid";
33097 }
33098 }
33099
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033100 VULKAN_HPP_INLINE std::string to_string(IndexType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033101 {
33102 switch (value)
33103 {
33104 case IndexType::eUint16: return "Uint16";
33105 case IndexType::eUint32: return "Uint32";
33106 default: return "invalid";
33107 }
33108 }
33109
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033110 VULKAN_HPP_INLINE std::string to_string(Filter value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033111 {
33112 switch (value)
33113 {
33114 case Filter::eNearest: return "Nearest";
33115 case Filter::eLinear: return "Linear";
33116 case Filter::eCubicIMG: return "CubicIMG";
33117 default: return "invalid";
33118 }
33119 }
33120
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033121 VULKAN_HPP_INLINE std::string to_string(SamplerMipmapMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033122 {
33123 switch (value)
33124 {
33125 case SamplerMipmapMode::eNearest: return "Nearest";
33126 case SamplerMipmapMode::eLinear: return "Linear";
33127 default: return "invalid";
33128 }
33129 }
33130
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033131 VULKAN_HPP_INLINE std::string to_string(SamplerAddressMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033132 {
33133 switch (value)
33134 {
33135 case SamplerAddressMode::eRepeat: return "Repeat";
33136 case SamplerAddressMode::eMirroredRepeat: return "MirroredRepeat";
33137 case SamplerAddressMode::eClampToEdge: return "ClampToEdge";
33138 case SamplerAddressMode::eClampToBorder: return "ClampToBorder";
33139 case SamplerAddressMode::eMirrorClampToEdge: return "MirrorClampToEdge";
33140 default: return "invalid";
33141 }
33142 }
33143
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033144 VULKAN_HPP_INLINE std::string to_string(CompareOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033145 {
33146 switch (value)
33147 {
33148 case CompareOp::eNever: return "Never";
33149 case CompareOp::eLess: return "Less";
33150 case CompareOp::eEqual: return "Equal";
33151 case CompareOp::eLessOrEqual: return "LessOrEqual";
33152 case CompareOp::eGreater: return "Greater";
33153 case CompareOp::eNotEqual: return "NotEqual";
33154 case CompareOp::eGreaterOrEqual: return "GreaterOrEqual";
33155 case CompareOp::eAlways: return "Always";
33156 default: return "invalid";
33157 }
33158 }
33159
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033160 VULKAN_HPP_INLINE std::string to_string(PolygonMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033161 {
33162 switch (value)
33163 {
33164 case PolygonMode::eFill: return "Fill";
33165 case PolygonMode::eLine: return "Line";
33166 case PolygonMode::ePoint: return "Point";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060033167 case PolygonMode::eFillRectangleNV: return "FillRectangleNV";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033168 default: return "invalid";
33169 }
33170 }
33171
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033172 VULKAN_HPP_INLINE std::string to_string(CullModeFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033173 {
33174 switch (value)
33175 {
33176 case CullModeFlagBits::eNone: return "None";
33177 case CullModeFlagBits::eFront: return "Front";
33178 case CullModeFlagBits::eBack: return "Back";
33179 case CullModeFlagBits::eFrontAndBack: return "FrontAndBack";
33180 default: return "invalid";
33181 }
33182 }
33183
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033184 VULKAN_HPP_INLINE std::string to_string(CullModeFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033185 {
33186 if (!value) return "{}";
33187 std::string result;
33188 if (value & CullModeFlagBits::eNone) result += "None | ";
33189 if (value & CullModeFlagBits::eFront) result += "Front | ";
33190 if (value & CullModeFlagBits::eBack) result += "Back | ";
33191 if (value & CullModeFlagBits::eFrontAndBack) result += "FrontAndBack | ";
33192 return "{" + result.substr(0, result.size() - 3) + "}";
33193 }
33194
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033195 VULKAN_HPP_INLINE std::string to_string(FrontFace value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033196 {
33197 switch (value)
33198 {
33199 case FrontFace::eCounterClockwise: return "CounterClockwise";
33200 case FrontFace::eClockwise: return "Clockwise";
33201 default: return "invalid";
33202 }
33203 }
33204
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033205 VULKAN_HPP_INLINE std::string to_string(BlendFactor value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033206 {
33207 switch (value)
33208 {
33209 case BlendFactor::eZero: return "Zero";
33210 case BlendFactor::eOne: return "One";
33211 case BlendFactor::eSrcColor: return "SrcColor";
33212 case BlendFactor::eOneMinusSrcColor: return "OneMinusSrcColor";
33213 case BlendFactor::eDstColor: return "DstColor";
33214 case BlendFactor::eOneMinusDstColor: return "OneMinusDstColor";
33215 case BlendFactor::eSrcAlpha: return "SrcAlpha";
33216 case BlendFactor::eOneMinusSrcAlpha: return "OneMinusSrcAlpha";
33217 case BlendFactor::eDstAlpha: return "DstAlpha";
33218 case BlendFactor::eOneMinusDstAlpha: return "OneMinusDstAlpha";
33219 case BlendFactor::eConstantColor: return "ConstantColor";
33220 case BlendFactor::eOneMinusConstantColor: return "OneMinusConstantColor";
33221 case BlendFactor::eConstantAlpha: return "ConstantAlpha";
33222 case BlendFactor::eOneMinusConstantAlpha: return "OneMinusConstantAlpha";
33223 case BlendFactor::eSrcAlphaSaturate: return "SrcAlphaSaturate";
33224 case BlendFactor::eSrc1Color: return "Src1Color";
33225 case BlendFactor::eOneMinusSrc1Color: return "OneMinusSrc1Color";
33226 case BlendFactor::eSrc1Alpha: return "Src1Alpha";
33227 case BlendFactor::eOneMinusSrc1Alpha: return "OneMinusSrc1Alpha";
33228 default: return "invalid";
33229 }
33230 }
33231
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033232 VULKAN_HPP_INLINE std::string to_string(BlendOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033233 {
33234 switch (value)
33235 {
33236 case BlendOp::eAdd: return "Add";
33237 case BlendOp::eSubtract: return "Subtract";
33238 case BlendOp::eReverseSubtract: return "ReverseSubtract";
33239 case BlendOp::eMin: return "Min";
33240 case BlendOp::eMax: return "Max";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060033241 case BlendOp::eZeroEXT: return "ZeroEXT";
33242 case BlendOp::eSrcEXT: return "SrcEXT";
33243 case BlendOp::eDstEXT: return "DstEXT";
33244 case BlendOp::eSrcOverEXT: return "SrcOverEXT";
33245 case BlendOp::eDstOverEXT: return "DstOverEXT";
33246 case BlendOp::eSrcInEXT: return "SrcInEXT";
33247 case BlendOp::eDstInEXT: return "DstInEXT";
33248 case BlendOp::eSrcOutEXT: return "SrcOutEXT";
33249 case BlendOp::eDstOutEXT: return "DstOutEXT";
33250 case BlendOp::eSrcAtopEXT: return "SrcAtopEXT";
33251 case BlendOp::eDstAtopEXT: return "DstAtopEXT";
33252 case BlendOp::eXorEXT: return "XorEXT";
33253 case BlendOp::eMultiplyEXT: return "MultiplyEXT";
33254 case BlendOp::eScreenEXT: return "ScreenEXT";
33255 case BlendOp::eOverlayEXT: return "OverlayEXT";
33256 case BlendOp::eDarkenEXT: return "DarkenEXT";
33257 case BlendOp::eLightenEXT: return "LightenEXT";
33258 case BlendOp::eColordodgeEXT: return "ColordodgeEXT";
33259 case BlendOp::eColorburnEXT: return "ColorburnEXT";
33260 case BlendOp::eHardlightEXT: return "HardlightEXT";
33261 case BlendOp::eSoftlightEXT: return "SoftlightEXT";
33262 case BlendOp::eDifferenceEXT: return "DifferenceEXT";
33263 case BlendOp::eExclusionEXT: return "ExclusionEXT";
33264 case BlendOp::eInvertEXT: return "InvertEXT";
33265 case BlendOp::eInvertRgbEXT: return "InvertRgbEXT";
33266 case BlendOp::eLineardodgeEXT: return "LineardodgeEXT";
33267 case BlendOp::eLinearburnEXT: return "LinearburnEXT";
33268 case BlendOp::eVividlightEXT: return "VividlightEXT";
33269 case BlendOp::eLinearlightEXT: return "LinearlightEXT";
33270 case BlendOp::ePinlightEXT: return "PinlightEXT";
33271 case BlendOp::eHardmixEXT: return "HardmixEXT";
33272 case BlendOp::eHslHueEXT: return "HslHueEXT";
33273 case BlendOp::eHslSaturationEXT: return "HslSaturationEXT";
33274 case BlendOp::eHslColorEXT: return "HslColorEXT";
33275 case BlendOp::eHslLuminosityEXT: return "HslLuminosityEXT";
33276 case BlendOp::ePlusEXT: return "PlusEXT";
33277 case BlendOp::ePlusClampedEXT: return "PlusClampedEXT";
33278 case BlendOp::ePlusClampedAlphaEXT: return "PlusClampedAlphaEXT";
33279 case BlendOp::ePlusDarkerEXT: return "PlusDarkerEXT";
33280 case BlendOp::eMinusEXT: return "MinusEXT";
33281 case BlendOp::eMinusClampedEXT: return "MinusClampedEXT";
33282 case BlendOp::eContrastEXT: return "ContrastEXT";
33283 case BlendOp::eInvertOvgEXT: return "InvertOvgEXT";
33284 case BlendOp::eRedEXT: return "RedEXT";
33285 case BlendOp::eGreenEXT: return "GreenEXT";
33286 case BlendOp::eBlueEXT: return "BlueEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033287 default: return "invalid";
33288 }
33289 }
33290
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033291 VULKAN_HPP_INLINE std::string to_string(StencilOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033292 {
33293 switch (value)
33294 {
33295 case StencilOp::eKeep: return "Keep";
33296 case StencilOp::eZero: return "Zero";
33297 case StencilOp::eReplace: return "Replace";
33298 case StencilOp::eIncrementAndClamp: return "IncrementAndClamp";
33299 case StencilOp::eDecrementAndClamp: return "DecrementAndClamp";
33300 case StencilOp::eInvert: return "Invert";
33301 case StencilOp::eIncrementAndWrap: return "IncrementAndWrap";
33302 case StencilOp::eDecrementAndWrap: return "DecrementAndWrap";
33303 default: return "invalid";
33304 }
33305 }
33306
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033307 VULKAN_HPP_INLINE std::string to_string(LogicOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033308 {
33309 switch (value)
33310 {
33311 case LogicOp::eClear: return "Clear";
33312 case LogicOp::eAnd: return "And";
33313 case LogicOp::eAndReverse: return "AndReverse";
33314 case LogicOp::eCopy: return "Copy";
33315 case LogicOp::eAndInverted: return "AndInverted";
33316 case LogicOp::eNoOp: return "NoOp";
33317 case LogicOp::eXor: return "Xor";
33318 case LogicOp::eOr: return "Or";
33319 case LogicOp::eNor: return "Nor";
33320 case LogicOp::eEquivalent: return "Equivalent";
33321 case LogicOp::eInvert: return "Invert";
33322 case LogicOp::eOrReverse: return "OrReverse";
33323 case LogicOp::eCopyInverted: return "CopyInverted";
33324 case LogicOp::eOrInverted: return "OrInverted";
33325 case LogicOp::eNand: return "Nand";
33326 case LogicOp::eSet: return "Set";
33327 default: return "invalid";
33328 }
33329 }
33330
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033331 VULKAN_HPP_INLINE std::string to_string(InternalAllocationType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033332 {
33333 switch (value)
33334 {
33335 case InternalAllocationType::eExecutable: return "Executable";
33336 default: return "invalid";
33337 }
33338 }
33339
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033340 VULKAN_HPP_INLINE std::string to_string(SystemAllocationScope value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033341 {
33342 switch (value)
33343 {
33344 case SystemAllocationScope::eCommand: return "Command";
33345 case SystemAllocationScope::eObject: return "Object";
33346 case SystemAllocationScope::eCache: return "Cache";
33347 case SystemAllocationScope::eDevice: return "Device";
33348 case SystemAllocationScope::eInstance: return "Instance";
33349 default: return "invalid";
33350 }
33351 }
33352
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033353 VULKAN_HPP_INLINE std::string to_string(PhysicalDeviceType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033354 {
33355 switch (value)
33356 {
33357 case PhysicalDeviceType::eOther: return "Other";
33358 case PhysicalDeviceType::eIntegratedGpu: return "IntegratedGpu";
33359 case PhysicalDeviceType::eDiscreteGpu: return "DiscreteGpu";
33360 case PhysicalDeviceType::eVirtualGpu: return "VirtualGpu";
33361 case PhysicalDeviceType::eCpu: return "Cpu";
33362 default: return "invalid";
33363 }
33364 }
33365
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033366 VULKAN_HPP_INLINE std::string to_string(VertexInputRate value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033367 {
33368 switch (value)
33369 {
33370 case VertexInputRate::eVertex: return "Vertex";
33371 case VertexInputRate::eInstance: return "Instance";
33372 default: return "invalid";
33373 }
33374 }
33375
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033376 VULKAN_HPP_INLINE std::string to_string(Format value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033377 {
33378 switch (value)
33379 {
33380 case Format::eUndefined: return "Undefined";
33381 case Format::eR4G4UnormPack8: return "R4G4UnormPack8";
33382 case Format::eR4G4B4A4UnormPack16: return "R4G4B4A4UnormPack16";
33383 case Format::eB4G4R4A4UnormPack16: return "B4G4R4A4UnormPack16";
33384 case Format::eR5G6B5UnormPack16: return "R5G6B5UnormPack16";
33385 case Format::eB5G6R5UnormPack16: return "B5G6R5UnormPack16";
33386 case Format::eR5G5B5A1UnormPack16: return "R5G5B5A1UnormPack16";
33387 case Format::eB5G5R5A1UnormPack16: return "B5G5R5A1UnormPack16";
33388 case Format::eA1R5G5B5UnormPack16: return "A1R5G5B5UnormPack16";
33389 case Format::eR8Unorm: return "R8Unorm";
33390 case Format::eR8Snorm: return "R8Snorm";
33391 case Format::eR8Uscaled: return "R8Uscaled";
33392 case Format::eR8Sscaled: return "R8Sscaled";
33393 case Format::eR8Uint: return "R8Uint";
33394 case Format::eR8Sint: return "R8Sint";
33395 case Format::eR8Srgb: return "R8Srgb";
33396 case Format::eR8G8Unorm: return "R8G8Unorm";
33397 case Format::eR8G8Snorm: return "R8G8Snorm";
33398 case Format::eR8G8Uscaled: return "R8G8Uscaled";
33399 case Format::eR8G8Sscaled: return "R8G8Sscaled";
33400 case Format::eR8G8Uint: return "R8G8Uint";
33401 case Format::eR8G8Sint: return "R8G8Sint";
33402 case Format::eR8G8Srgb: return "R8G8Srgb";
33403 case Format::eR8G8B8Unorm: return "R8G8B8Unorm";
33404 case Format::eR8G8B8Snorm: return "R8G8B8Snorm";
33405 case Format::eR8G8B8Uscaled: return "R8G8B8Uscaled";
33406 case Format::eR8G8B8Sscaled: return "R8G8B8Sscaled";
33407 case Format::eR8G8B8Uint: return "R8G8B8Uint";
33408 case Format::eR8G8B8Sint: return "R8G8B8Sint";
33409 case Format::eR8G8B8Srgb: return "R8G8B8Srgb";
33410 case Format::eB8G8R8Unorm: return "B8G8R8Unorm";
33411 case Format::eB8G8R8Snorm: return "B8G8R8Snorm";
33412 case Format::eB8G8R8Uscaled: return "B8G8R8Uscaled";
33413 case Format::eB8G8R8Sscaled: return "B8G8R8Sscaled";
33414 case Format::eB8G8R8Uint: return "B8G8R8Uint";
33415 case Format::eB8G8R8Sint: return "B8G8R8Sint";
33416 case Format::eB8G8R8Srgb: return "B8G8R8Srgb";
33417 case Format::eR8G8B8A8Unorm: return "R8G8B8A8Unorm";
33418 case Format::eR8G8B8A8Snorm: return "R8G8B8A8Snorm";
33419 case Format::eR8G8B8A8Uscaled: return "R8G8B8A8Uscaled";
33420 case Format::eR8G8B8A8Sscaled: return "R8G8B8A8Sscaled";
33421 case Format::eR8G8B8A8Uint: return "R8G8B8A8Uint";
33422 case Format::eR8G8B8A8Sint: return "R8G8B8A8Sint";
33423 case Format::eR8G8B8A8Srgb: return "R8G8B8A8Srgb";
33424 case Format::eB8G8R8A8Unorm: return "B8G8R8A8Unorm";
33425 case Format::eB8G8R8A8Snorm: return "B8G8R8A8Snorm";
33426 case Format::eB8G8R8A8Uscaled: return "B8G8R8A8Uscaled";
33427 case Format::eB8G8R8A8Sscaled: return "B8G8R8A8Sscaled";
33428 case Format::eB8G8R8A8Uint: return "B8G8R8A8Uint";
33429 case Format::eB8G8R8A8Sint: return "B8G8R8A8Sint";
33430 case Format::eB8G8R8A8Srgb: return "B8G8R8A8Srgb";
33431 case Format::eA8B8G8R8UnormPack32: return "A8B8G8R8UnormPack32";
33432 case Format::eA8B8G8R8SnormPack32: return "A8B8G8R8SnormPack32";
33433 case Format::eA8B8G8R8UscaledPack32: return "A8B8G8R8UscaledPack32";
33434 case Format::eA8B8G8R8SscaledPack32: return "A8B8G8R8SscaledPack32";
33435 case Format::eA8B8G8R8UintPack32: return "A8B8G8R8UintPack32";
33436 case Format::eA8B8G8R8SintPack32: return "A8B8G8R8SintPack32";
33437 case Format::eA8B8G8R8SrgbPack32: return "A8B8G8R8SrgbPack32";
33438 case Format::eA2R10G10B10UnormPack32: return "A2R10G10B10UnormPack32";
33439 case Format::eA2R10G10B10SnormPack32: return "A2R10G10B10SnormPack32";
33440 case Format::eA2R10G10B10UscaledPack32: return "A2R10G10B10UscaledPack32";
33441 case Format::eA2R10G10B10SscaledPack32: return "A2R10G10B10SscaledPack32";
33442 case Format::eA2R10G10B10UintPack32: return "A2R10G10B10UintPack32";
33443 case Format::eA2R10G10B10SintPack32: return "A2R10G10B10SintPack32";
33444 case Format::eA2B10G10R10UnormPack32: return "A2B10G10R10UnormPack32";
33445 case Format::eA2B10G10R10SnormPack32: return "A2B10G10R10SnormPack32";
33446 case Format::eA2B10G10R10UscaledPack32: return "A2B10G10R10UscaledPack32";
33447 case Format::eA2B10G10R10SscaledPack32: return "A2B10G10R10SscaledPack32";
33448 case Format::eA2B10G10R10UintPack32: return "A2B10G10R10UintPack32";
33449 case Format::eA2B10G10R10SintPack32: return "A2B10G10R10SintPack32";
33450 case Format::eR16Unorm: return "R16Unorm";
33451 case Format::eR16Snorm: return "R16Snorm";
33452 case Format::eR16Uscaled: return "R16Uscaled";
33453 case Format::eR16Sscaled: return "R16Sscaled";
33454 case Format::eR16Uint: return "R16Uint";
33455 case Format::eR16Sint: return "R16Sint";
33456 case Format::eR16Sfloat: return "R16Sfloat";
33457 case Format::eR16G16Unorm: return "R16G16Unorm";
33458 case Format::eR16G16Snorm: return "R16G16Snorm";
33459 case Format::eR16G16Uscaled: return "R16G16Uscaled";
33460 case Format::eR16G16Sscaled: return "R16G16Sscaled";
33461 case Format::eR16G16Uint: return "R16G16Uint";
33462 case Format::eR16G16Sint: return "R16G16Sint";
33463 case Format::eR16G16Sfloat: return "R16G16Sfloat";
33464 case Format::eR16G16B16Unorm: return "R16G16B16Unorm";
33465 case Format::eR16G16B16Snorm: return "R16G16B16Snorm";
33466 case Format::eR16G16B16Uscaled: return "R16G16B16Uscaled";
33467 case Format::eR16G16B16Sscaled: return "R16G16B16Sscaled";
33468 case Format::eR16G16B16Uint: return "R16G16B16Uint";
33469 case Format::eR16G16B16Sint: return "R16G16B16Sint";
33470 case Format::eR16G16B16Sfloat: return "R16G16B16Sfloat";
33471 case Format::eR16G16B16A16Unorm: return "R16G16B16A16Unorm";
33472 case Format::eR16G16B16A16Snorm: return "R16G16B16A16Snorm";
33473 case Format::eR16G16B16A16Uscaled: return "R16G16B16A16Uscaled";
33474 case Format::eR16G16B16A16Sscaled: return "R16G16B16A16Sscaled";
33475 case Format::eR16G16B16A16Uint: return "R16G16B16A16Uint";
33476 case Format::eR16G16B16A16Sint: return "R16G16B16A16Sint";
33477 case Format::eR16G16B16A16Sfloat: return "R16G16B16A16Sfloat";
33478 case Format::eR32Uint: return "R32Uint";
33479 case Format::eR32Sint: return "R32Sint";
33480 case Format::eR32Sfloat: return "R32Sfloat";
33481 case Format::eR32G32Uint: return "R32G32Uint";
33482 case Format::eR32G32Sint: return "R32G32Sint";
33483 case Format::eR32G32Sfloat: return "R32G32Sfloat";
33484 case Format::eR32G32B32Uint: return "R32G32B32Uint";
33485 case Format::eR32G32B32Sint: return "R32G32B32Sint";
33486 case Format::eR32G32B32Sfloat: return "R32G32B32Sfloat";
33487 case Format::eR32G32B32A32Uint: return "R32G32B32A32Uint";
33488 case Format::eR32G32B32A32Sint: return "R32G32B32A32Sint";
33489 case Format::eR32G32B32A32Sfloat: return "R32G32B32A32Sfloat";
33490 case Format::eR64Uint: return "R64Uint";
33491 case Format::eR64Sint: return "R64Sint";
33492 case Format::eR64Sfloat: return "R64Sfloat";
33493 case Format::eR64G64Uint: return "R64G64Uint";
33494 case Format::eR64G64Sint: return "R64G64Sint";
33495 case Format::eR64G64Sfloat: return "R64G64Sfloat";
33496 case Format::eR64G64B64Uint: return "R64G64B64Uint";
33497 case Format::eR64G64B64Sint: return "R64G64B64Sint";
33498 case Format::eR64G64B64Sfloat: return "R64G64B64Sfloat";
33499 case Format::eR64G64B64A64Uint: return "R64G64B64A64Uint";
33500 case Format::eR64G64B64A64Sint: return "R64G64B64A64Sint";
33501 case Format::eR64G64B64A64Sfloat: return "R64G64B64A64Sfloat";
33502 case Format::eB10G11R11UfloatPack32: return "B10G11R11UfloatPack32";
33503 case Format::eE5B9G9R9UfloatPack32: return "E5B9G9R9UfloatPack32";
33504 case Format::eD16Unorm: return "D16Unorm";
33505 case Format::eX8D24UnormPack32: return "X8D24UnormPack32";
33506 case Format::eD32Sfloat: return "D32Sfloat";
33507 case Format::eS8Uint: return "S8Uint";
33508 case Format::eD16UnormS8Uint: return "D16UnormS8Uint";
33509 case Format::eD24UnormS8Uint: return "D24UnormS8Uint";
33510 case Format::eD32SfloatS8Uint: return "D32SfloatS8Uint";
33511 case Format::eBc1RgbUnormBlock: return "Bc1RgbUnormBlock";
33512 case Format::eBc1RgbSrgbBlock: return "Bc1RgbSrgbBlock";
33513 case Format::eBc1RgbaUnormBlock: return "Bc1RgbaUnormBlock";
33514 case Format::eBc1RgbaSrgbBlock: return "Bc1RgbaSrgbBlock";
33515 case Format::eBc2UnormBlock: return "Bc2UnormBlock";
33516 case Format::eBc2SrgbBlock: return "Bc2SrgbBlock";
33517 case Format::eBc3UnormBlock: return "Bc3UnormBlock";
33518 case Format::eBc3SrgbBlock: return "Bc3SrgbBlock";
33519 case Format::eBc4UnormBlock: return "Bc4UnormBlock";
33520 case Format::eBc4SnormBlock: return "Bc4SnormBlock";
33521 case Format::eBc5UnormBlock: return "Bc5UnormBlock";
33522 case Format::eBc5SnormBlock: return "Bc5SnormBlock";
33523 case Format::eBc6HUfloatBlock: return "Bc6HUfloatBlock";
33524 case Format::eBc6HSfloatBlock: return "Bc6HSfloatBlock";
33525 case Format::eBc7UnormBlock: return "Bc7UnormBlock";
33526 case Format::eBc7SrgbBlock: return "Bc7SrgbBlock";
33527 case Format::eEtc2R8G8B8UnormBlock: return "Etc2R8G8B8UnormBlock";
33528 case Format::eEtc2R8G8B8SrgbBlock: return "Etc2R8G8B8SrgbBlock";
33529 case Format::eEtc2R8G8B8A1UnormBlock: return "Etc2R8G8B8A1UnormBlock";
33530 case Format::eEtc2R8G8B8A1SrgbBlock: return "Etc2R8G8B8A1SrgbBlock";
33531 case Format::eEtc2R8G8B8A8UnormBlock: return "Etc2R8G8B8A8UnormBlock";
33532 case Format::eEtc2R8G8B8A8SrgbBlock: return "Etc2R8G8B8A8SrgbBlock";
33533 case Format::eEacR11UnormBlock: return "EacR11UnormBlock";
33534 case Format::eEacR11SnormBlock: return "EacR11SnormBlock";
33535 case Format::eEacR11G11UnormBlock: return "EacR11G11UnormBlock";
33536 case Format::eEacR11G11SnormBlock: return "EacR11G11SnormBlock";
33537 case Format::eAstc4x4UnormBlock: return "Astc4x4UnormBlock";
33538 case Format::eAstc4x4SrgbBlock: return "Astc4x4SrgbBlock";
33539 case Format::eAstc5x4UnormBlock: return "Astc5x4UnormBlock";
33540 case Format::eAstc5x4SrgbBlock: return "Astc5x4SrgbBlock";
33541 case Format::eAstc5x5UnormBlock: return "Astc5x5UnormBlock";
33542 case Format::eAstc5x5SrgbBlock: return "Astc5x5SrgbBlock";
33543 case Format::eAstc6x5UnormBlock: return "Astc6x5UnormBlock";
33544 case Format::eAstc6x5SrgbBlock: return "Astc6x5SrgbBlock";
33545 case Format::eAstc6x6UnormBlock: return "Astc6x6UnormBlock";
33546 case Format::eAstc6x6SrgbBlock: return "Astc6x6SrgbBlock";
33547 case Format::eAstc8x5UnormBlock: return "Astc8x5UnormBlock";
33548 case Format::eAstc8x5SrgbBlock: return "Astc8x5SrgbBlock";
33549 case Format::eAstc8x6UnormBlock: return "Astc8x6UnormBlock";
33550 case Format::eAstc8x6SrgbBlock: return "Astc8x6SrgbBlock";
33551 case Format::eAstc8x8UnormBlock: return "Astc8x8UnormBlock";
33552 case Format::eAstc8x8SrgbBlock: return "Astc8x8SrgbBlock";
33553 case Format::eAstc10x5UnormBlock: return "Astc10x5UnormBlock";
33554 case Format::eAstc10x5SrgbBlock: return "Astc10x5SrgbBlock";
33555 case Format::eAstc10x6UnormBlock: return "Astc10x6UnormBlock";
33556 case Format::eAstc10x6SrgbBlock: return "Astc10x6SrgbBlock";
33557 case Format::eAstc10x8UnormBlock: return "Astc10x8UnormBlock";
33558 case Format::eAstc10x8SrgbBlock: return "Astc10x8SrgbBlock";
33559 case Format::eAstc10x10UnormBlock: return "Astc10x10UnormBlock";
33560 case Format::eAstc10x10SrgbBlock: return "Astc10x10SrgbBlock";
33561 case Format::eAstc12x10UnormBlock: return "Astc12x10UnormBlock";
33562 case Format::eAstc12x10SrgbBlock: return "Astc12x10SrgbBlock";
33563 case Format::eAstc12x12UnormBlock: return "Astc12x12UnormBlock";
33564 case Format::eAstc12x12SrgbBlock: return "Astc12x12SrgbBlock";
Lenny Komowebf33162016-08-26 14:10:08 -060033565 case Format::ePvrtc12BppUnormBlockIMG: return "Pvrtc12BppUnormBlockIMG";
33566 case Format::ePvrtc14BppUnormBlockIMG: return "Pvrtc14BppUnormBlockIMG";
33567 case Format::ePvrtc22BppUnormBlockIMG: return "Pvrtc22BppUnormBlockIMG";
33568 case Format::ePvrtc24BppUnormBlockIMG: return "Pvrtc24BppUnormBlockIMG";
33569 case Format::ePvrtc12BppSrgbBlockIMG: return "Pvrtc12BppSrgbBlockIMG";
33570 case Format::ePvrtc14BppSrgbBlockIMG: return "Pvrtc14BppSrgbBlockIMG";
33571 case Format::ePvrtc22BppSrgbBlockIMG: return "Pvrtc22BppSrgbBlockIMG";
33572 case Format::ePvrtc24BppSrgbBlockIMG: return "Pvrtc24BppSrgbBlockIMG";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033573 case Format::eG8B8G8R8422UnormKHR: return "G8B8G8R8422UnormKHR";
33574 case Format::eB8G8R8G8422UnormKHR: return "B8G8R8G8422UnormKHR";
33575 case Format::eG8B8R83Plane420UnormKHR: return "G8B8R83Plane420UnormKHR";
33576 case Format::eG8B8R82Plane420UnormKHR: return "G8B8R82Plane420UnormKHR";
33577 case Format::eG8B8R83Plane422UnormKHR: return "G8B8R83Plane422UnormKHR";
33578 case Format::eG8B8R82Plane422UnormKHR: return "G8B8R82Plane422UnormKHR";
33579 case Format::eG8B8R83Plane444UnormKHR: return "G8B8R83Plane444UnormKHR";
33580 case Format::eR10X6UnormPack16KHR: return "R10X6UnormPack16KHR";
33581 case Format::eR10X6G10X6Unorm2Pack16KHR: return "R10X6G10X6Unorm2Pack16KHR";
33582 case Format::eR10X6G10X6B10X6A10X6Unorm4Pack16KHR: return "R10X6G10X6B10X6A10X6Unorm4Pack16KHR";
33583 case Format::eG10X6B10X6G10X6R10X6422Unorm4Pack16KHR: return "G10X6B10X6G10X6R10X6422Unorm4Pack16KHR";
33584 case Format::eB10X6G10X6R10X6G10X6422Unorm4Pack16KHR: return "B10X6G10X6R10X6G10X6422Unorm4Pack16KHR";
33585 case Format::eG10X6B10X6R10X63Plane420Unorm3Pack16KHR: return "G10X6B10X6R10X63Plane420Unorm3Pack16KHR";
33586 case Format::eG10X6B10X6R10X62Plane420Unorm3Pack16KHR: return "G10X6B10X6R10X62Plane420Unorm3Pack16KHR";
33587 case Format::eG10X6B10X6R10X63Plane422Unorm3Pack16KHR: return "G10X6B10X6R10X63Plane422Unorm3Pack16KHR";
33588 case Format::eG10X6B10X6R10X62Plane422Unorm3Pack16KHR: return "G10X6B10X6R10X62Plane422Unorm3Pack16KHR";
33589 case Format::eG10X6B10X6R10X63Plane444Unorm3Pack16KHR: return "G10X6B10X6R10X63Plane444Unorm3Pack16KHR";
33590 case Format::eR12X4UnormPack16KHR: return "R12X4UnormPack16KHR";
33591 case Format::eR12X4G12X4Unorm2Pack16KHR: return "R12X4G12X4Unorm2Pack16KHR";
33592 case Format::eR12X4G12X4B12X4A12X4Unorm4Pack16KHR: return "R12X4G12X4B12X4A12X4Unorm4Pack16KHR";
33593 case Format::eG12X4B12X4G12X4R12X4422Unorm4Pack16KHR: return "G12X4B12X4G12X4R12X4422Unorm4Pack16KHR";
33594 case Format::eB12X4G12X4R12X4G12X4422Unorm4Pack16KHR: return "B12X4G12X4R12X4G12X4422Unorm4Pack16KHR";
33595 case Format::eG12X4B12X4R12X43Plane420Unorm3Pack16KHR: return "G12X4B12X4R12X43Plane420Unorm3Pack16KHR";
33596 case Format::eG12X4B12X4R12X42Plane420Unorm3Pack16KHR: return "G12X4B12X4R12X42Plane420Unorm3Pack16KHR";
33597 case Format::eG12X4B12X4R12X43Plane422Unorm3Pack16KHR: return "G12X4B12X4R12X43Plane422Unorm3Pack16KHR";
33598 case Format::eG12X4B12X4R12X42Plane422Unorm3Pack16KHR: return "G12X4B12X4R12X42Plane422Unorm3Pack16KHR";
33599 case Format::eG12X4B12X4R12X43Plane444Unorm3Pack16KHR: return "G12X4B12X4R12X43Plane444Unorm3Pack16KHR";
33600 case Format::eG16B16G16R16422UnormKHR: return "G16B16G16R16422UnormKHR";
33601 case Format::eB16G16R16G16422UnormKHR: return "B16G16R16G16422UnormKHR";
33602 case Format::eG16B16R163Plane420UnormKHR: return "G16B16R163Plane420UnormKHR";
33603 case Format::eG16B16R162Plane420UnormKHR: return "G16B16R162Plane420UnormKHR";
33604 case Format::eG16B16R163Plane422UnormKHR: return "G16B16R163Plane422UnormKHR";
33605 case Format::eG16B16R162Plane422UnormKHR: return "G16B16R162Plane422UnormKHR";
33606 case Format::eG16B16R163Plane444UnormKHR: return "G16B16R163Plane444UnormKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033607 default: return "invalid";
33608 }
33609 }
33610
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033611 VULKAN_HPP_INLINE std::string to_string(StructureType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033612 {
33613 switch (value)
33614 {
33615 case StructureType::eApplicationInfo: return "ApplicationInfo";
33616 case StructureType::eInstanceCreateInfo: return "InstanceCreateInfo";
33617 case StructureType::eDeviceQueueCreateInfo: return "DeviceQueueCreateInfo";
33618 case StructureType::eDeviceCreateInfo: return "DeviceCreateInfo";
33619 case StructureType::eSubmitInfo: return "SubmitInfo";
33620 case StructureType::eMemoryAllocateInfo: return "MemoryAllocateInfo";
33621 case StructureType::eMappedMemoryRange: return "MappedMemoryRange";
33622 case StructureType::eBindSparseInfo: return "BindSparseInfo";
33623 case StructureType::eFenceCreateInfo: return "FenceCreateInfo";
33624 case StructureType::eSemaphoreCreateInfo: return "SemaphoreCreateInfo";
33625 case StructureType::eEventCreateInfo: return "EventCreateInfo";
33626 case StructureType::eQueryPoolCreateInfo: return "QueryPoolCreateInfo";
33627 case StructureType::eBufferCreateInfo: return "BufferCreateInfo";
33628 case StructureType::eBufferViewCreateInfo: return "BufferViewCreateInfo";
33629 case StructureType::eImageCreateInfo: return "ImageCreateInfo";
33630 case StructureType::eImageViewCreateInfo: return "ImageViewCreateInfo";
33631 case StructureType::eShaderModuleCreateInfo: return "ShaderModuleCreateInfo";
33632 case StructureType::ePipelineCacheCreateInfo: return "PipelineCacheCreateInfo";
33633 case StructureType::ePipelineShaderStageCreateInfo: return "PipelineShaderStageCreateInfo";
33634 case StructureType::ePipelineVertexInputStateCreateInfo: return "PipelineVertexInputStateCreateInfo";
33635 case StructureType::ePipelineInputAssemblyStateCreateInfo: return "PipelineInputAssemblyStateCreateInfo";
33636 case StructureType::ePipelineTessellationStateCreateInfo: return "PipelineTessellationStateCreateInfo";
33637 case StructureType::ePipelineViewportStateCreateInfo: return "PipelineViewportStateCreateInfo";
33638 case StructureType::ePipelineRasterizationStateCreateInfo: return "PipelineRasterizationStateCreateInfo";
33639 case StructureType::ePipelineMultisampleStateCreateInfo: return "PipelineMultisampleStateCreateInfo";
33640 case StructureType::ePipelineDepthStencilStateCreateInfo: return "PipelineDepthStencilStateCreateInfo";
33641 case StructureType::ePipelineColorBlendStateCreateInfo: return "PipelineColorBlendStateCreateInfo";
33642 case StructureType::ePipelineDynamicStateCreateInfo: return "PipelineDynamicStateCreateInfo";
33643 case StructureType::eGraphicsPipelineCreateInfo: return "GraphicsPipelineCreateInfo";
33644 case StructureType::eComputePipelineCreateInfo: return "ComputePipelineCreateInfo";
33645 case StructureType::ePipelineLayoutCreateInfo: return "PipelineLayoutCreateInfo";
33646 case StructureType::eSamplerCreateInfo: return "SamplerCreateInfo";
33647 case StructureType::eDescriptorSetLayoutCreateInfo: return "DescriptorSetLayoutCreateInfo";
33648 case StructureType::eDescriptorPoolCreateInfo: return "DescriptorPoolCreateInfo";
33649 case StructureType::eDescriptorSetAllocateInfo: return "DescriptorSetAllocateInfo";
33650 case StructureType::eWriteDescriptorSet: return "WriteDescriptorSet";
33651 case StructureType::eCopyDescriptorSet: return "CopyDescriptorSet";
33652 case StructureType::eFramebufferCreateInfo: return "FramebufferCreateInfo";
33653 case StructureType::eRenderPassCreateInfo: return "RenderPassCreateInfo";
33654 case StructureType::eCommandPoolCreateInfo: return "CommandPoolCreateInfo";
33655 case StructureType::eCommandBufferAllocateInfo: return "CommandBufferAllocateInfo";
33656 case StructureType::eCommandBufferInheritanceInfo: return "CommandBufferInheritanceInfo";
33657 case StructureType::eCommandBufferBeginInfo: return "CommandBufferBeginInfo";
33658 case StructureType::eRenderPassBeginInfo: return "RenderPassBeginInfo";
33659 case StructureType::eBufferMemoryBarrier: return "BufferMemoryBarrier";
33660 case StructureType::eImageMemoryBarrier: return "ImageMemoryBarrier";
33661 case StructureType::eMemoryBarrier: return "MemoryBarrier";
33662 case StructureType::eLoaderInstanceCreateInfo: return "LoaderInstanceCreateInfo";
33663 case StructureType::eLoaderDeviceCreateInfo: return "LoaderDeviceCreateInfo";
33664 case StructureType::eSwapchainCreateInfoKHR: return "SwapchainCreateInfoKHR";
33665 case StructureType::ePresentInfoKHR: return "PresentInfoKHR";
33666 case StructureType::eDisplayModeCreateInfoKHR: return "DisplayModeCreateInfoKHR";
33667 case StructureType::eDisplaySurfaceCreateInfoKHR: return "DisplaySurfaceCreateInfoKHR";
33668 case StructureType::eDisplayPresentInfoKHR: return "DisplayPresentInfoKHR";
33669 case StructureType::eXlibSurfaceCreateInfoKHR: return "XlibSurfaceCreateInfoKHR";
33670 case StructureType::eXcbSurfaceCreateInfoKHR: return "XcbSurfaceCreateInfoKHR";
33671 case StructureType::eWaylandSurfaceCreateInfoKHR: return "WaylandSurfaceCreateInfoKHR";
33672 case StructureType::eMirSurfaceCreateInfoKHR: return "MirSurfaceCreateInfoKHR";
33673 case StructureType::eAndroidSurfaceCreateInfoKHR: return "AndroidSurfaceCreateInfoKHR";
33674 case StructureType::eWin32SurfaceCreateInfoKHR: return "Win32SurfaceCreateInfoKHR";
33675 case StructureType::eDebugReportCallbackCreateInfoEXT: return "DebugReportCallbackCreateInfoEXT";
33676 case StructureType::ePipelineRasterizationStateRasterizationOrderAMD: return "PipelineRasterizationStateRasterizationOrderAMD";
33677 case StructureType::eDebugMarkerObjectNameInfoEXT: return "DebugMarkerObjectNameInfoEXT";
33678 case StructureType::eDebugMarkerObjectTagInfoEXT: return "DebugMarkerObjectTagInfoEXT";
33679 case StructureType::eDebugMarkerMarkerInfoEXT: return "DebugMarkerMarkerInfoEXT";
33680 case StructureType::eDedicatedAllocationImageCreateInfoNV: return "DedicatedAllocationImageCreateInfoNV";
33681 case StructureType::eDedicatedAllocationBufferCreateInfoNV: return "DedicatedAllocationBufferCreateInfoNV";
33682 case StructureType::eDedicatedAllocationMemoryAllocateInfoNV: return "DedicatedAllocationMemoryAllocateInfoNV";
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060033683 case StructureType::eTextureLodGatherFormatPropertiesAMD: return "TextureLodGatherFormatPropertiesAMD";
Mark Young0f183a82017-02-28 09:58:04 -070033684 case StructureType::eRenderPassMultiviewCreateInfoKHX: return "RenderPassMultiviewCreateInfoKHX";
33685 case StructureType::ePhysicalDeviceMultiviewFeaturesKHX: return "PhysicalDeviceMultiviewFeaturesKHX";
33686 case StructureType::ePhysicalDeviceMultiviewPropertiesKHX: return "PhysicalDeviceMultiviewPropertiesKHX";
Lenny Komow6501c122016-08-31 15:03:49 -060033687 case StructureType::eExternalMemoryImageCreateInfoNV: return "ExternalMemoryImageCreateInfoNV";
33688 case StructureType::eExportMemoryAllocateInfoNV: return "ExportMemoryAllocateInfoNV";
33689 case StructureType::eImportMemoryWin32HandleInfoNV: return "ImportMemoryWin32HandleInfoNV";
33690 case StructureType::eExportMemoryWin32HandleInfoNV: return "ExportMemoryWin32HandleInfoNV";
33691 case StructureType::eWin32KeyedMutexAcquireReleaseInfoNV: return "Win32KeyedMutexAcquireReleaseInfoNV";
Mark Young39389872017-01-19 21:10:49 -070033692 case StructureType::ePhysicalDeviceFeatures2KHR: return "PhysicalDeviceFeatures2KHR";
33693 case StructureType::ePhysicalDeviceProperties2KHR: return "PhysicalDeviceProperties2KHR";
33694 case StructureType::eFormatProperties2KHR: return "FormatProperties2KHR";
33695 case StructureType::eImageFormatProperties2KHR: return "ImageFormatProperties2KHR";
33696 case StructureType::ePhysicalDeviceImageFormatInfo2KHR: return "PhysicalDeviceImageFormatInfo2KHR";
33697 case StructureType::eQueueFamilyProperties2KHR: return "QueueFamilyProperties2KHR";
33698 case StructureType::ePhysicalDeviceMemoryProperties2KHR: return "PhysicalDeviceMemoryProperties2KHR";
33699 case StructureType::eSparseImageFormatProperties2KHR: return "SparseImageFormatProperties2KHR";
33700 case StructureType::ePhysicalDeviceSparseImageFormatInfo2KHR: return "PhysicalDeviceSparseImageFormatInfo2KHR";
Mark Young0f183a82017-02-28 09:58:04 -070033701 case StructureType::eMemoryAllocateFlagsInfoKHX: return "MemoryAllocateFlagsInfoKHX";
Mark Young0f183a82017-02-28 09:58:04 -070033702 case StructureType::eDeviceGroupRenderPassBeginInfoKHX: return "DeviceGroupRenderPassBeginInfoKHX";
33703 case StructureType::eDeviceGroupCommandBufferBeginInfoKHX: return "DeviceGroupCommandBufferBeginInfoKHX";
33704 case StructureType::eDeviceGroupSubmitInfoKHX: return "DeviceGroupSubmitInfoKHX";
33705 case StructureType::eDeviceGroupBindSparseInfoKHX: return "DeviceGroupBindSparseInfoKHX";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033706 case StructureType::eAcquireNextImageInfoKHX: return "AcquireNextImageInfoKHX";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033707 case StructureType::eBindBufferMemoryDeviceGroupInfoKHX: return "BindBufferMemoryDeviceGroupInfoKHX";
33708 case StructureType::eBindImageMemoryDeviceGroupInfoKHX: return "BindImageMemoryDeviceGroupInfoKHX";
Mark Young0f183a82017-02-28 09:58:04 -070033709 case StructureType::eDeviceGroupPresentCapabilitiesKHX: return "DeviceGroupPresentCapabilitiesKHX";
33710 case StructureType::eImageSwapchainCreateInfoKHX: return "ImageSwapchainCreateInfoKHX";
33711 case StructureType::eBindImageMemorySwapchainInfoKHX: return "BindImageMemorySwapchainInfoKHX";
Mark Young0f183a82017-02-28 09:58:04 -070033712 case StructureType::eDeviceGroupPresentInfoKHX: return "DeviceGroupPresentInfoKHX";
33713 case StructureType::eDeviceGroupSwapchainCreateInfoKHX: return "DeviceGroupSwapchainCreateInfoKHX";
Lenny Komow68432d72016-09-29 14:16:59 -060033714 case StructureType::eValidationFlagsEXT: return "ValidationFlagsEXT";
Mark Young39389872017-01-19 21:10:49 -070033715 case StructureType::eViSurfaceCreateInfoNN: return "ViSurfaceCreateInfoNN";
Mark Young0f183a82017-02-28 09:58:04 -070033716 case StructureType::ePhysicalDeviceGroupPropertiesKHX: return "PhysicalDeviceGroupPropertiesKHX";
33717 case StructureType::eDeviceGroupDeviceCreateInfoKHX: return "DeviceGroupDeviceCreateInfoKHX";
Mark Youngabc2d6e2017-07-07 07:59:56 -060033718 case StructureType::ePhysicalDeviceExternalImageFormatInfoKHR: return "PhysicalDeviceExternalImageFormatInfoKHR";
33719 case StructureType::eExternalImageFormatPropertiesKHR: return "ExternalImageFormatPropertiesKHR";
33720 case StructureType::ePhysicalDeviceExternalBufferInfoKHR: return "PhysicalDeviceExternalBufferInfoKHR";
33721 case StructureType::eExternalBufferPropertiesKHR: return "ExternalBufferPropertiesKHR";
33722 case StructureType::ePhysicalDeviceIdPropertiesKHR: return "PhysicalDeviceIdPropertiesKHR";
33723 case StructureType::eExternalMemoryBufferCreateInfoKHR: return "ExternalMemoryBufferCreateInfoKHR";
33724 case StructureType::eExternalMemoryImageCreateInfoKHR: return "ExternalMemoryImageCreateInfoKHR";
33725 case StructureType::eExportMemoryAllocateInfoKHR: return "ExportMemoryAllocateInfoKHR";
33726 case StructureType::eImportMemoryWin32HandleInfoKHR: return "ImportMemoryWin32HandleInfoKHR";
33727 case StructureType::eExportMemoryWin32HandleInfoKHR: return "ExportMemoryWin32HandleInfoKHR";
33728 case StructureType::eMemoryWin32HandlePropertiesKHR: return "MemoryWin32HandlePropertiesKHR";
33729 case StructureType::eMemoryGetWin32HandleInfoKHR: return "MemoryGetWin32HandleInfoKHR";
33730 case StructureType::eImportMemoryFdInfoKHR: return "ImportMemoryFdInfoKHR";
33731 case StructureType::eMemoryFdPropertiesKHR: return "MemoryFdPropertiesKHR";
33732 case StructureType::eMemoryGetFdInfoKHR: return "MemoryGetFdInfoKHR";
33733 case StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR: return "Win32KeyedMutexAcquireReleaseInfoKHR";
33734 case StructureType::ePhysicalDeviceExternalSemaphoreInfoKHR: return "PhysicalDeviceExternalSemaphoreInfoKHR";
33735 case StructureType::eExternalSemaphorePropertiesKHR: return "ExternalSemaphorePropertiesKHR";
33736 case StructureType::eExportSemaphoreCreateInfoKHR: return "ExportSemaphoreCreateInfoKHR";
33737 case StructureType::eImportSemaphoreWin32HandleInfoKHR: return "ImportSemaphoreWin32HandleInfoKHR";
33738 case StructureType::eExportSemaphoreWin32HandleInfoKHR: return "ExportSemaphoreWin32HandleInfoKHR";
33739 case StructureType::eD3D12FenceSubmitInfoKHR: return "D3D12FenceSubmitInfoKHR";
33740 case StructureType::eSemaphoreGetWin32HandleInfoKHR: return "SemaphoreGetWin32HandleInfoKHR";
33741 case StructureType::eImportSemaphoreFdInfoKHR: return "ImportSemaphoreFdInfoKHR";
33742 case StructureType::eSemaphoreGetFdInfoKHR: return "SemaphoreGetFdInfoKHR";
Mark Young0f183a82017-02-28 09:58:04 -070033743 case StructureType::ePhysicalDevicePushDescriptorPropertiesKHR: return "PhysicalDevicePushDescriptorPropertiesKHR";
Mark Youngabc2d6e2017-07-07 07:59:56 -060033744 case StructureType::ePhysicalDevice16BitStorageFeaturesKHR: return "PhysicalDevice16BitStorageFeaturesKHR";
Mark Lobodzinski3289d762017-04-03 08:22:04 -060033745 case StructureType::ePresentRegionsKHR: return "PresentRegionsKHR";
Mark Young0f183a82017-02-28 09:58:04 -070033746 case StructureType::eDescriptorUpdateTemplateCreateInfoKHR: return "DescriptorUpdateTemplateCreateInfoKHR";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033747 case StructureType::eObjectTableCreateInfoNVX: return "ObjectTableCreateInfoNVX";
33748 case StructureType::eIndirectCommandsLayoutCreateInfoNVX: return "IndirectCommandsLayoutCreateInfoNVX";
33749 case StructureType::eCmdProcessCommandsInfoNVX: return "CmdProcessCommandsInfoNVX";
33750 case StructureType::eCmdReserveSpaceForCommandsInfoNVX: return "CmdReserveSpaceForCommandsInfoNVX";
33751 case StructureType::eDeviceGeneratedCommandsLimitsNVX: return "DeviceGeneratedCommandsLimitsNVX";
33752 case StructureType::eDeviceGeneratedCommandsFeaturesNVX: return "DeviceGeneratedCommandsFeaturesNVX";
Mark Young0f183a82017-02-28 09:58:04 -070033753 case StructureType::ePipelineViewportWScalingStateCreateInfoNV: return "PipelineViewportWScalingStateCreateInfoNV";
Mark Young39389872017-01-19 21:10:49 -070033754 case StructureType::eSurfaceCapabilities2EXT: return "SurfaceCapabilities2EXT";
33755 case StructureType::eDisplayPowerInfoEXT: return "DisplayPowerInfoEXT";
33756 case StructureType::eDeviceEventInfoEXT: return "DeviceEventInfoEXT";
33757 case StructureType::eDisplayEventInfoEXT: return "DisplayEventInfoEXT";
33758 case StructureType::eSwapchainCounterCreateInfoEXT: return "SwapchainCounterCreateInfoEXT";
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060033759 case StructureType::ePresentTimesInfoGOOGLE: return "PresentTimesInfoGOOGLE";
Mark Young0f183a82017-02-28 09:58:04 -070033760 case StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX: return "PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX";
33761 case StructureType::ePipelineViewportSwizzleStateCreateInfoNV: return "PipelineViewportSwizzleStateCreateInfoNV";
33762 case StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT: return "PhysicalDeviceDiscardRectanglePropertiesEXT";
33763 case StructureType::ePipelineDiscardRectangleStateCreateInfoEXT: return "PipelineDiscardRectangleStateCreateInfoEXT";
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060033764 case StructureType::eHdrMetadataEXT: return "HdrMetadataEXT";
Mark Lobodzinski54385432017-05-15 10:27:52 -060033765 case StructureType::eSharedPresentSurfaceCapabilitiesKHR: return "SharedPresentSurfaceCapabilitiesKHR";
Mark Youngabc2d6e2017-07-07 07:59:56 -060033766 case StructureType::ePhysicalDeviceExternalFenceInfoKHR: return "PhysicalDeviceExternalFenceInfoKHR";
33767 case StructureType::eExternalFencePropertiesKHR: return "ExternalFencePropertiesKHR";
33768 case StructureType::eExportFenceCreateInfoKHR: return "ExportFenceCreateInfoKHR";
33769 case StructureType::eImportFenceWin32HandleInfoKHR: return "ImportFenceWin32HandleInfoKHR";
33770 case StructureType::eExportFenceWin32HandleInfoKHR: return "ExportFenceWin32HandleInfoKHR";
33771 case StructureType::eFenceGetWin32HandleInfoKHR: return "FenceGetWin32HandleInfoKHR";
33772 case StructureType::eImportFenceFdInfoKHR: return "ImportFenceFdInfoKHR";
33773 case StructureType::eFenceGetFdInfoKHR: return "FenceGetFdInfoKHR";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033774 case StructureType::ePhysicalDevicePointClippingPropertiesKHR: return "PhysicalDevicePointClippingPropertiesKHR";
33775 case StructureType::eRenderPassInputAttachmentAspectCreateInfoKHR: return "RenderPassInputAttachmentAspectCreateInfoKHR";
33776 case StructureType::eImageViewUsageCreateInfoKHR: return "ImageViewUsageCreateInfoKHR";
33777 case StructureType::ePipelineTessellationDomainOriginStateCreateInfoKHR: return "PipelineTessellationDomainOriginStateCreateInfoKHR";
Mark Lobodzinski54385432017-05-15 10:27:52 -060033778 case StructureType::ePhysicalDeviceSurfaceInfo2KHR: return "PhysicalDeviceSurfaceInfo2KHR";
33779 case StructureType::eSurfaceCapabilities2KHR: return "SurfaceCapabilities2KHR";
33780 case StructureType::eSurfaceFormat2KHR: return "SurfaceFormat2KHR";
Mark Youngabc2d6e2017-07-07 07:59:56 -060033781 case StructureType::ePhysicalDeviceVariablePointerFeaturesKHR: return "PhysicalDeviceVariablePointerFeaturesKHR";
Mark Young0f183a82017-02-28 09:58:04 -070033782 case StructureType::eIosSurfaceCreateInfoMVK: return "IosSurfaceCreateInfoMVK";
33783 case StructureType::eMacosSurfaceCreateInfoMVK: return "MacosSurfaceCreateInfoMVK";
Mark Youngabc2d6e2017-07-07 07:59:56 -060033784 case StructureType::eMemoryDedicatedRequirementsKHR: return "MemoryDedicatedRequirementsKHR";
33785 case StructureType::eMemoryDedicatedAllocateInfoKHR: return "MemoryDedicatedAllocateInfoKHR";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060033786 case StructureType::ePhysicalDeviceSamplerFilterMinmaxPropertiesEXT: return "PhysicalDeviceSamplerFilterMinmaxPropertiesEXT";
33787 case StructureType::eSamplerReductionModeCreateInfoEXT: return "SamplerReductionModeCreateInfoEXT";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033788 case StructureType::eSampleLocationsInfoEXT: return "SampleLocationsInfoEXT";
33789 case StructureType::eRenderPassSampleLocationsBeginInfoEXT: return "RenderPassSampleLocationsBeginInfoEXT";
33790 case StructureType::ePipelineSampleLocationsStateCreateInfoEXT: return "PipelineSampleLocationsStateCreateInfoEXT";
33791 case StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT: return "PhysicalDeviceSampleLocationsPropertiesEXT";
33792 case StructureType::eMultisamplePropertiesEXT: return "MultisamplePropertiesEXT";
Mark Youngabc2d6e2017-07-07 07:59:56 -060033793 case StructureType::eBufferMemoryRequirementsInfo2KHR: return "BufferMemoryRequirementsInfo2KHR";
33794 case StructureType::eImageMemoryRequirementsInfo2KHR: return "ImageMemoryRequirementsInfo2KHR";
33795 case StructureType::eImageSparseMemoryRequirementsInfo2KHR: return "ImageSparseMemoryRequirementsInfo2KHR";
33796 case StructureType::eMemoryRequirements2KHR: return "MemoryRequirements2KHR";
33797 case StructureType::eSparseImageMemoryRequirements2KHR: return "SparseImageMemoryRequirements2KHR";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033798 case StructureType::eImageFormatListCreateInfoKHR: return "ImageFormatListCreateInfoKHR";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060033799 case StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT: return "PhysicalDeviceBlendOperationAdvancedFeaturesEXT";
33800 case StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT: return "PhysicalDeviceBlendOperationAdvancedPropertiesEXT";
33801 case StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT: return "PipelineColorBlendAdvancedStateCreateInfoEXT";
33802 case StructureType::ePipelineCoverageToColorStateCreateInfoNV: return "PipelineCoverageToColorStateCreateInfoNV";
33803 case StructureType::ePipelineCoverageModulationStateCreateInfoNV: return "PipelineCoverageModulationStateCreateInfoNV";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033804 case StructureType::eSamplerYcbcrConversionCreateInfoKHR: return "SamplerYcbcrConversionCreateInfoKHR";
33805 case StructureType::eSamplerYcbcrConversionInfoKHR: return "SamplerYcbcrConversionInfoKHR";
33806 case StructureType::eBindImagePlaneMemoryInfoKHR: return "BindImagePlaneMemoryInfoKHR";
33807 case StructureType::eImagePlaneMemoryRequirementsInfoKHR: return "ImagePlaneMemoryRequirementsInfoKHR";
33808 case StructureType::ePhysicalDeviceSamplerYcbcrConversionFeaturesKHR: return "PhysicalDeviceSamplerYcbcrConversionFeaturesKHR";
33809 case StructureType::eSamplerYcbcrConversionImageFormatPropertiesKHR: return "SamplerYcbcrConversionImageFormatPropertiesKHR";
33810 case StructureType::eBindBufferMemoryInfoKHR: return "BindBufferMemoryInfoKHR";
33811 case StructureType::eBindImageMemoryInfoKHR: return "BindImageMemoryInfoKHR";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033812 case StructureType::eValidationCacheCreateInfoEXT: return "ValidationCacheCreateInfoEXT";
33813 case StructureType::eShaderModuleValidationCacheCreateInfoEXT: return "ShaderModuleValidationCacheCreateInfoEXT";
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060033814 case StructureType::eDeviceQueueGlobalPriorityCreateInfoEXT: return "DeviceQueueGlobalPriorityCreateInfoEXT";
Mark Lobodzinski417d5702017-11-27 12:00:45 -070033815 case StructureType::eImportMemoryHostPointerInfoEXT: return "ImportMemoryHostPointerInfoEXT";
33816 case StructureType::eMemoryHostPointerPropertiesEXT: return "MemoryHostPointerPropertiesEXT";
33817 case StructureType::ePhysicalDeviceExternalMemoryHostPropertiesEXT: return "PhysicalDeviceExternalMemoryHostPropertiesEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033818 default: return "invalid";
33819 }
33820 }
33821
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033822 VULKAN_HPP_INLINE std::string to_string(SubpassContents value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033823 {
33824 switch (value)
33825 {
33826 case SubpassContents::eInline: return "Inline";
33827 case SubpassContents::eSecondaryCommandBuffers: return "SecondaryCommandBuffers";
33828 default: return "invalid";
33829 }
33830 }
33831
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033832 VULKAN_HPP_INLINE std::string to_string(DynamicState value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033833 {
33834 switch (value)
33835 {
33836 case DynamicState::eViewport: return "Viewport";
33837 case DynamicState::eScissor: return "Scissor";
33838 case DynamicState::eLineWidth: return "LineWidth";
33839 case DynamicState::eDepthBias: return "DepthBias";
33840 case DynamicState::eBlendConstants: return "BlendConstants";
33841 case DynamicState::eDepthBounds: return "DepthBounds";
33842 case DynamicState::eStencilCompareMask: return "StencilCompareMask";
33843 case DynamicState::eStencilWriteMask: return "StencilWriteMask";
33844 case DynamicState::eStencilReference: return "StencilReference";
Mark Young0f183a82017-02-28 09:58:04 -070033845 case DynamicState::eViewportWScalingNV: return "ViewportWScalingNV";
33846 case DynamicState::eDiscardRectangleEXT: return "DiscardRectangleEXT";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033847 case DynamicState::eSampleLocationsEXT: return "SampleLocationsEXT";
Mark Young0f183a82017-02-28 09:58:04 -070033848 default: return "invalid";
33849 }
33850 }
33851
33852 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateTypeKHR value)
33853 {
33854 switch (value)
33855 {
33856 case DescriptorUpdateTemplateTypeKHR::eDescriptorSet: return "DescriptorSet";
33857 case DescriptorUpdateTemplateTypeKHR::ePushDescriptors: return "PushDescriptors";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033858 default: return "invalid";
33859 }
33860 }
33861
Mark Lobodzinski54385432017-05-15 10:27:52 -060033862 VULKAN_HPP_INLINE std::string to_string(ObjectType value)
33863 {
33864 switch (value)
33865 {
33866 case ObjectType::eUnknown: return "Unknown";
33867 case ObjectType::eInstance: return "Instance";
33868 case ObjectType::ePhysicalDevice: return "PhysicalDevice";
33869 case ObjectType::eDevice: return "Device";
33870 case ObjectType::eQueue: return "Queue";
33871 case ObjectType::eSemaphore: return "Semaphore";
33872 case ObjectType::eCommandBuffer: return "CommandBuffer";
33873 case ObjectType::eFence: return "Fence";
33874 case ObjectType::eDeviceMemory: return "DeviceMemory";
33875 case ObjectType::eBuffer: return "Buffer";
33876 case ObjectType::eImage: return "Image";
33877 case ObjectType::eEvent: return "Event";
33878 case ObjectType::eQueryPool: return "QueryPool";
33879 case ObjectType::eBufferView: return "BufferView";
33880 case ObjectType::eImageView: return "ImageView";
33881 case ObjectType::eShaderModule: return "ShaderModule";
33882 case ObjectType::ePipelineCache: return "PipelineCache";
33883 case ObjectType::ePipelineLayout: return "PipelineLayout";
33884 case ObjectType::eRenderPass: return "RenderPass";
33885 case ObjectType::ePipeline: return "Pipeline";
33886 case ObjectType::eDescriptorSetLayout: return "DescriptorSetLayout";
33887 case ObjectType::eSampler: return "Sampler";
33888 case ObjectType::eDescriptorPool: return "DescriptorPool";
33889 case ObjectType::eDescriptorSet: return "DescriptorSet";
33890 case ObjectType::eFramebuffer: return "Framebuffer";
33891 case ObjectType::eCommandPool: return "CommandPool";
33892 case ObjectType::eSurfaceKHR: return "SurfaceKHR";
33893 case ObjectType::eSwapchainKHR: return "SwapchainKHR";
33894 case ObjectType::eDisplayKHR: return "DisplayKHR";
33895 case ObjectType::eDisplayModeKHR: return "DisplayModeKHR";
33896 case ObjectType::eDebugReportCallbackEXT: return "DebugReportCallbackEXT";
33897 case ObjectType::eDescriptorUpdateTemplateKHR: return "DescriptorUpdateTemplateKHR";
33898 case ObjectType::eObjectTableNVX: return "ObjectTableNVX";
33899 case ObjectType::eIndirectCommandsLayoutNVX: return "IndirectCommandsLayoutNVX";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033900 case ObjectType::eSamplerYcbcrConversionKHR: return "SamplerYcbcrConversionKHR";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033901 case ObjectType::eValidationCacheEXT: return "ValidationCacheEXT";
Mark Lobodzinski54385432017-05-15 10:27:52 -060033902 default: return "invalid";
33903 }
33904 }
33905
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033906 VULKAN_HPP_INLINE std::string to_string(QueueFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033907 {
33908 switch (value)
33909 {
33910 case QueueFlagBits::eGraphics: return "Graphics";
33911 case QueueFlagBits::eCompute: return "Compute";
33912 case QueueFlagBits::eTransfer: return "Transfer";
33913 case QueueFlagBits::eSparseBinding: return "SparseBinding";
33914 default: return "invalid";
33915 }
33916 }
33917
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033918 VULKAN_HPP_INLINE std::string to_string(QueueFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033919 {
33920 if (!value) return "{}";
33921 std::string result;
33922 if (value & QueueFlagBits::eGraphics) result += "Graphics | ";
33923 if (value & QueueFlagBits::eCompute) result += "Compute | ";
33924 if (value & QueueFlagBits::eTransfer) result += "Transfer | ";
33925 if (value & QueueFlagBits::eSparseBinding) result += "SparseBinding | ";
33926 return "{" + result.substr(0, result.size() - 3) + "}";
33927 }
33928
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033929 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033930 {
33931 switch (value)
33932 {
33933 case MemoryPropertyFlagBits::eDeviceLocal: return "DeviceLocal";
33934 case MemoryPropertyFlagBits::eHostVisible: return "HostVisible";
33935 case MemoryPropertyFlagBits::eHostCoherent: return "HostCoherent";
33936 case MemoryPropertyFlagBits::eHostCached: return "HostCached";
33937 case MemoryPropertyFlagBits::eLazilyAllocated: return "LazilyAllocated";
33938 default: return "invalid";
33939 }
33940 }
33941
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033942 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033943 {
33944 if (!value) return "{}";
33945 std::string result;
33946 if (value & MemoryPropertyFlagBits::eDeviceLocal) result += "DeviceLocal | ";
33947 if (value & MemoryPropertyFlagBits::eHostVisible) result += "HostVisible | ";
33948 if (value & MemoryPropertyFlagBits::eHostCoherent) result += "HostCoherent | ";
33949 if (value & MemoryPropertyFlagBits::eHostCached) result += "HostCached | ";
33950 if (value & MemoryPropertyFlagBits::eLazilyAllocated) result += "LazilyAllocated | ";
33951 return "{" + result.substr(0, result.size() - 3) + "}";
33952 }
33953
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033954 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033955 {
33956 switch (value)
33957 {
33958 case MemoryHeapFlagBits::eDeviceLocal: return "DeviceLocal";
Mark Young0f183a82017-02-28 09:58:04 -070033959 case MemoryHeapFlagBits::eMultiInstanceKHX: return "MultiInstanceKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033960 default: return "invalid";
33961 }
33962 }
33963
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033964 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033965 {
33966 if (!value) return "{}";
33967 std::string result;
33968 if (value & MemoryHeapFlagBits::eDeviceLocal) result += "DeviceLocal | ";
Mark Young0f183a82017-02-28 09:58:04 -070033969 if (value & MemoryHeapFlagBits::eMultiInstanceKHX) result += "MultiInstanceKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033970 return "{" + result.substr(0, result.size() - 3) + "}";
33971 }
33972
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033973 VULKAN_HPP_INLINE std::string to_string(AccessFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033974 {
33975 switch (value)
33976 {
33977 case AccessFlagBits::eIndirectCommandRead: return "IndirectCommandRead";
33978 case AccessFlagBits::eIndexRead: return "IndexRead";
33979 case AccessFlagBits::eVertexAttributeRead: return "VertexAttributeRead";
33980 case AccessFlagBits::eUniformRead: return "UniformRead";
33981 case AccessFlagBits::eInputAttachmentRead: return "InputAttachmentRead";
33982 case AccessFlagBits::eShaderRead: return "ShaderRead";
33983 case AccessFlagBits::eShaderWrite: return "ShaderWrite";
33984 case AccessFlagBits::eColorAttachmentRead: return "ColorAttachmentRead";
33985 case AccessFlagBits::eColorAttachmentWrite: return "ColorAttachmentWrite";
33986 case AccessFlagBits::eDepthStencilAttachmentRead: return "DepthStencilAttachmentRead";
33987 case AccessFlagBits::eDepthStencilAttachmentWrite: return "DepthStencilAttachmentWrite";
33988 case AccessFlagBits::eTransferRead: return "TransferRead";
33989 case AccessFlagBits::eTransferWrite: return "TransferWrite";
33990 case AccessFlagBits::eHostRead: return "HostRead";
33991 case AccessFlagBits::eHostWrite: return "HostWrite";
33992 case AccessFlagBits::eMemoryRead: return "MemoryRead";
33993 case AccessFlagBits::eMemoryWrite: return "MemoryWrite";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033994 case AccessFlagBits::eCommandProcessReadNVX: return "CommandProcessReadNVX";
33995 case AccessFlagBits::eCommandProcessWriteNVX: return "CommandProcessWriteNVX";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060033996 case AccessFlagBits::eColorAttachmentReadNoncoherentEXT: return "ColorAttachmentReadNoncoherentEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033997 default: return "invalid";
33998 }
33999 }
34000
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034001 VULKAN_HPP_INLINE std::string to_string(AccessFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034002 {
34003 if (!value) return "{}";
34004 std::string result;
34005 if (value & AccessFlagBits::eIndirectCommandRead) result += "IndirectCommandRead | ";
34006 if (value & AccessFlagBits::eIndexRead) result += "IndexRead | ";
34007 if (value & AccessFlagBits::eVertexAttributeRead) result += "VertexAttributeRead | ";
34008 if (value & AccessFlagBits::eUniformRead) result += "UniformRead | ";
34009 if (value & AccessFlagBits::eInputAttachmentRead) result += "InputAttachmentRead | ";
34010 if (value & AccessFlagBits::eShaderRead) result += "ShaderRead | ";
34011 if (value & AccessFlagBits::eShaderWrite) result += "ShaderWrite | ";
34012 if (value & AccessFlagBits::eColorAttachmentRead) result += "ColorAttachmentRead | ";
34013 if (value & AccessFlagBits::eColorAttachmentWrite) result += "ColorAttachmentWrite | ";
34014 if (value & AccessFlagBits::eDepthStencilAttachmentRead) result += "DepthStencilAttachmentRead | ";
34015 if (value & AccessFlagBits::eDepthStencilAttachmentWrite) result += "DepthStencilAttachmentWrite | ";
34016 if (value & AccessFlagBits::eTransferRead) result += "TransferRead | ";
34017 if (value & AccessFlagBits::eTransferWrite) result += "TransferWrite | ";
34018 if (value & AccessFlagBits::eHostRead) result += "HostRead | ";
34019 if (value & AccessFlagBits::eHostWrite) result += "HostWrite | ";
34020 if (value & AccessFlagBits::eMemoryRead) result += "MemoryRead | ";
34021 if (value & AccessFlagBits::eMemoryWrite) result += "MemoryWrite | ";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034022 if (value & AccessFlagBits::eCommandProcessReadNVX) result += "CommandProcessReadNVX | ";
34023 if (value & AccessFlagBits::eCommandProcessWriteNVX) result += "CommandProcessWriteNVX | ";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060034024 if (value & AccessFlagBits::eColorAttachmentReadNoncoherentEXT) result += "ColorAttachmentReadNoncoherentEXT | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034025 return "{" + result.substr(0, result.size() - 3) + "}";
34026 }
34027
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034028 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034029 {
34030 switch (value)
34031 {
34032 case BufferUsageFlagBits::eTransferSrc: return "TransferSrc";
34033 case BufferUsageFlagBits::eTransferDst: return "TransferDst";
34034 case BufferUsageFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
34035 case BufferUsageFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
34036 case BufferUsageFlagBits::eUniformBuffer: return "UniformBuffer";
34037 case BufferUsageFlagBits::eStorageBuffer: return "StorageBuffer";
34038 case BufferUsageFlagBits::eIndexBuffer: return "IndexBuffer";
34039 case BufferUsageFlagBits::eVertexBuffer: return "VertexBuffer";
34040 case BufferUsageFlagBits::eIndirectBuffer: return "IndirectBuffer";
34041 default: return "invalid";
34042 }
34043 }
34044
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034045 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034046 {
34047 if (!value) return "{}";
34048 std::string result;
34049 if (value & BufferUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
34050 if (value & BufferUsageFlagBits::eTransferDst) result += "TransferDst | ";
34051 if (value & BufferUsageFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
34052 if (value & BufferUsageFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
34053 if (value & BufferUsageFlagBits::eUniformBuffer) result += "UniformBuffer | ";
34054 if (value & BufferUsageFlagBits::eStorageBuffer) result += "StorageBuffer | ";
34055 if (value & BufferUsageFlagBits::eIndexBuffer) result += "IndexBuffer | ";
34056 if (value & BufferUsageFlagBits::eVertexBuffer) result += "VertexBuffer | ";
34057 if (value & BufferUsageFlagBits::eIndirectBuffer) result += "IndirectBuffer | ";
34058 return "{" + result.substr(0, result.size() - 3) + "}";
34059 }
34060
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034061 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034062 {
34063 switch (value)
34064 {
34065 case BufferCreateFlagBits::eSparseBinding: return "SparseBinding";
34066 case BufferCreateFlagBits::eSparseResidency: return "SparseResidency";
34067 case BufferCreateFlagBits::eSparseAliased: return "SparseAliased";
34068 default: return "invalid";
34069 }
34070 }
34071
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034072 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034073 {
34074 if (!value) return "{}";
34075 std::string result;
34076 if (value & BufferCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
34077 if (value & BufferCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
34078 if (value & BufferCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
34079 return "{" + result.substr(0, result.size() - 3) + "}";
34080 }
34081
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034082 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034083 {
34084 switch (value)
34085 {
34086 case ShaderStageFlagBits::eVertex: return "Vertex";
34087 case ShaderStageFlagBits::eTessellationControl: return "TessellationControl";
34088 case ShaderStageFlagBits::eTessellationEvaluation: return "TessellationEvaluation";
34089 case ShaderStageFlagBits::eGeometry: return "Geometry";
34090 case ShaderStageFlagBits::eFragment: return "Fragment";
34091 case ShaderStageFlagBits::eCompute: return "Compute";
34092 case ShaderStageFlagBits::eAllGraphics: return "AllGraphics";
34093 case ShaderStageFlagBits::eAll: return "All";
34094 default: return "invalid";
34095 }
34096 }
34097
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034098 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034099 {
34100 if (!value) return "{}";
34101 std::string result;
34102 if (value & ShaderStageFlagBits::eVertex) result += "Vertex | ";
34103 if (value & ShaderStageFlagBits::eTessellationControl) result += "TessellationControl | ";
34104 if (value & ShaderStageFlagBits::eTessellationEvaluation) result += "TessellationEvaluation | ";
34105 if (value & ShaderStageFlagBits::eGeometry) result += "Geometry | ";
34106 if (value & ShaderStageFlagBits::eFragment) result += "Fragment | ";
34107 if (value & ShaderStageFlagBits::eCompute) result += "Compute | ";
34108 if (value & ShaderStageFlagBits::eAllGraphics) result += "AllGraphics | ";
34109 if (value & ShaderStageFlagBits::eAll) result += "All | ";
34110 return "{" + result.substr(0, result.size() - 3) + "}";
34111 }
34112
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034113 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034114 {
34115 switch (value)
34116 {
34117 case ImageUsageFlagBits::eTransferSrc: return "TransferSrc";
34118 case ImageUsageFlagBits::eTransferDst: return "TransferDst";
34119 case ImageUsageFlagBits::eSampled: return "Sampled";
34120 case ImageUsageFlagBits::eStorage: return "Storage";
34121 case ImageUsageFlagBits::eColorAttachment: return "ColorAttachment";
34122 case ImageUsageFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
34123 case ImageUsageFlagBits::eTransientAttachment: return "TransientAttachment";
34124 case ImageUsageFlagBits::eInputAttachment: return "InputAttachment";
34125 default: return "invalid";
34126 }
34127 }
34128
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034129 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034130 {
34131 if (!value) return "{}";
34132 std::string result;
34133 if (value & ImageUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
34134 if (value & ImageUsageFlagBits::eTransferDst) result += "TransferDst | ";
34135 if (value & ImageUsageFlagBits::eSampled) result += "Sampled | ";
34136 if (value & ImageUsageFlagBits::eStorage) result += "Storage | ";
34137 if (value & ImageUsageFlagBits::eColorAttachment) result += "ColorAttachment | ";
34138 if (value & ImageUsageFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
34139 if (value & ImageUsageFlagBits::eTransientAttachment) result += "TransientAttachment | ";
34140 if (value & ImageUsageFlagBits::eInputAttachment) result += "InputAttachment | ";
34141 return "{" + result.substr(0, result.size() - 3) + "}";
34142 }
34143
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034144 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034145 {
34146 switch (value)
34147 {
34148 case ImageCreateFlagBits::eSparseBinding: return "SparseBinding";
34149 case ImageCreateFlagBits::eSparseResidency: return "SparseResidency";
34150 case ImageCreateFlagBits::eSparseAliased: return "SparseAliased";
34151 case ImageCreateFlagBits::eMutableFormat: return "MutableFormat";
34152 case ImageCreateFlagBits::eCubeCompatible: return "CubeCompatible";
Mark Young0f183a82017-02-28 09:58:04 -070034153 case ImageCreateFlagBits::eBindSfrKHX: return "BindSfrKHX";
Mark Young39389872017-01-19 21:10:49 -070034154 case ImageCreateFlagBits::e2DArrayCompatibleKHR: return "2DArrayCompatibleKHR";
Lenny Komowb79f04a2017-09-18 17:07:00 -060034155 case ImageCreateFlagBits::eBlockTexelViewCompatibleKHR: return "BlockTexelViewCompatibleKHR";
34156 case ImageCreateFlagBits::eExtendedUsageKHR: return "ExtendedUsageKHR";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060034157 case ImageCreateFlagBits::eSampleLocationsCompatibleDepthEXT: return "SampleLocationsCompatibleDepthEXT";
Lenny Komowb79f04a2017-09-18 17:07:00 -060034158 case ImageCreateFlagBits::eDisjointKHR: return "DisjointKHR";
34159 case ImageCreateFlagBits::eAliasKHR: return "AliasKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034160 default: return "invalid";
34161 }
34162 }
34163
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034164 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034165 {
34166 if (!value) return "{}";
34167 std::string result;
34168 if (value & ImageCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
34169 if (value & ImageCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
34170 if (value & ImageCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
34171 if (value & ImageCreateFlagBits::eMutableFormat) result += "MutableFormat | ";
34172 if (value & ImageCreateFlagBits::eCubeCompatible) result += "CubeCompatible | ";
Mark Young0f183a82017-02-28 09:58:04 -070034173 if (value & ImageCreateFlagBits::eBindSfrKHX) result += "BindSfrKHX | ";
Mark Young39389872017-01-19 21:10:49 -070034174 if (value & ImageCreateFlagBits::e2DArrayCompatibleKHR) result += "2DArrayCompatibleKHR | ";
Lenny Komowb79f04a2017-09-18 17:07:00 -060034175 if (value & ImageCreateFlagBits::eBlockTexelViewCompatibleKHR) result += "BlockTexelViewCompatibleKHR | ";
34176 if (value & ImageCreateFlagBits::eExtendedUsageKHR) result += "ExtendedUsageKHR | ";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060034177 if (value & ImageCreateFlagBits::eSampleLocationsCompatibleDepthEXT) result += "SampleLocationsCompatibleDepthEXT | ";
Lenny Komowb79f04a2017-09-18 17:07:00 -060034178 if (value & ImageCreateFlagBits::eDisjointKHR) result += "DisjointKHR | ";
34179 if (value & ImageCreateFlagBits::eAliasKHR) result += "AliasKHR | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034180 return "{" + result.substr(0, result.size() - 3) + "}";
34181 }
34182
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034183 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034184 {
34185 switch (value)
34186 {
34187 case PipelineCreateFlagBits::eDisableOptimization: return "DisableOptimization";
34188 case PipelineCreateFlagBits::eAllowDerivatives: return "AllowDerivatives";
34189 case PipelineCreateFlagBits::eDerivative: return "Derivative";
Mark Young0f183a82017-02-28 09:58:04 -070034190 case PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX: return "ViewIndexFromDeviceIndexKHX";
34191 case PipelineCreateFlagBits::eDispatchBaseKHX: return "DispatchBaseKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034192 default: return "invalid";
34193 }
34194 }
34195
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034196 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034197 {
34198 if (!value) return "{}";
34199 std::string result;
34200 if (value & PipelineCreateFlagBits::eDisableOptimization) result += "DisableOptimization | ";
34201 if (value & PipelineCreateFlagBits::eAllowDerivatives) result += "AllowDerivatives | ";
34202 if (value & PipelineCreateFlagBits::eDerivative) result += "Derivative | ";
Mark Young0f183a82017-02-28 09:58:04 -070034203 if (value & PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX) result += "ViewIndexFromDeviceIndexKHX | ";
34204 if (value & PipelineCreateFlagBits::eDispatchBaseKHX) result += "DispatchBaseKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034205 return "{" + result.substr(0, result.size() - 3) + "}";
34206 }
34207
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034208 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034209 {
34210 switch (value)
34211 {
34212 case ColorComponentFlagBits::eR: return "R";
34213 case ColorComponentFlagBits::eG: return "G";
34214 case ColorComponentFlagBits::eB: return "B";
34215 case ColorComponentFlagBits::eA: return "A";
34216 default: return "invalid";
34217 }
34218 }
34219
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034220 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034221 {
34222 if (!value) return "{}";
34223 std::string result;
34224 if (value & ColorComponentFlagBits::eR) result += "R | ";
34225 if (value & ColorComponentFlagBits::eG) result += "G | ";
34226 if (value & ColorComponentFlagBits::eB) result += "B | ";
34227 if (value & ColorComponentFlagBits::eA) result += "A | ";
34228 return "{" + result.substr(0, result.size() - 3) + "}";
34229 }
34230
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034231 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034232 {
34233 switch (value)
34234 {
34235 case FenceCreateFlagBits::eSignaled: return "Signaled";
34236 default: return "invalid";
34237 }
34238 }
34239
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034240 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034241 {
34242 if (!value) return "{}";
34243 std::string result;
34244 if (value & FenceCreateFlagBits::eSignaled) result += "Signaled | ";
34245 return "{" + result.substr(0, result.size() - 3) + "}";
34246 }
34247
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034248 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034249 {
34250 switch (value)
34251 {
34252 case FormatFeatureFlagBits::eSampledImage: return "SampledImage";
34253 case FormatFeatureFlagBits::eStorageImage: return "StorageImage";
34254 case FormatFeatureFlagBits::eStorageImageAtomic: return "StorageImageAtomic";
34255 case FormatFeatureFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
34256 case FormatFeatureFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
34257 case FormatFeatureFlagBits::eStorageTexelBufferAtomic: return "StorageTexelBufferAtomic";
34258 case FormatFeatureFlagBits::eVertexBuffer: return "VertexBuffer";
34259 case FormatFeatureFlagBits::eColorAttachment: return "ColorAttachment";
34260 case FormatFeatureFlagBits::eColorAttachmentBlend: return "ColorAttachmentBlend";
34261 case FormatFeatureFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
34262 case FormatFeatureFlagBits::eBlitSrc: return "BlitSrc";
34263 case FormatFeatureFlagBits::eBlitDst: return "BlitDst";
34264 case FormatFeatureFlagBits::eSampledImageFilterLinear: return "SampledImageFilterLinear";
34265 case FormatFeatureFlagBits::eSampledImageFilterCubicIMG: return "SampledImageFilterCubicIMG";
Mark Young39389872017-01-19 21:10:49 -070034266 case FormatFeatureFlagBits::eTransferSrcKHR: return "TransferSrcKHR";
34267 case FormatFeatureFlagBits::eTransferDstKHR: return "TransferDstKHR";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060034268 case FormatFeatureFlagBits::eSampledImageFilterMinmaxEXT: return "SampledImageFilterMinmaxEXT";
Lenny Komowb79f04a2017-09-18 17:07:00 -060034269 case FormatFeatureFlagBits::eMidpointChromaSamplesKHR: return "MidpointChromaSamplesKHR";
34270 case FormatFeatureFlagBits::eSampledImageYcbcrConversionLinearFilterKHR: return "SampledImageYcbcrConversionLinearFilterKHR";
34271 case FormatFeatureFlagBits::eSampledImageYcbcrConversionSeparateReconstructionFilterKHR: return "SampledImageYcbcrConversionSeparateReconstructionFilterKHR";
34272 case FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitKHR: return "SampledImageYcbcrConversionChromaReconstructionExplicitKHR";
34273 case FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR: return "SampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR";
34274 case FormatFeatureFlagBits::eDisjointKHR: return "DisjointKHR";
34275 case FormatFeatureFlagBits::eCositedChromaSamplesKHR: return "CositedChromaSamplesKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034276 default: return "invalid";
34277 }
34278 }
34279
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034280 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034281 {
34282 if (!value) return "{}";
34283 std::string result;
34284 if (value & FormatFeatureFlagBits::eSampledImage) result += "SampledImage | ";
34285 if (value & FormatFeatureFlagBits::eStorageImage) result += "StorageImage | ";
34286 if (value & FormatFeatureFlagBits::eStorageImageAtomic) result += "StorageImageAtomic | ";
34287 if (value & FormatFeatureFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
34288 if (value & FormatFeatureFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
34289 if (value & FormatFeatureFlagBits::eStorageTexelBufferAtomic) result += "StorageTexelBufferAtomic | ";
34290 if (value & FormatFeatureFlagBits::eVertexBuffer) result += "VertexBuffer | ";
34291 if (value & FormatFeatureFlagBits::eColorAttachment) result += "ColorAttachment | ";
34292 if (value & FormatFeatureFlagBits::eColorAttachmentBlend) result += "ColorAttachmentBlend | ";
34293 if (value & FormatFeatureFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
34294 if (value & FormatFeatureFlagBits::eBlitSrc) result += "BlitSrc | ";
34295 if (value & FormatFeatureFlagBits::eBlitDst) result += "BlitDst | ";
34296 if (value & FormatFeatureFlagBits::eSampledImageFilterLinear) result += "SampledImageFilterLinear | ";
34297 if (value & FormatFeatureFlagBits::eSampledImageFilterCubicIMG) result += "SampledImageFilterCubicIMG | ";
Mark Young39389872017-01-19 21:10:49 -070034298 if (value & FormatFeatureFlagBits::eTransferSrcKHR) result += "TransferSrcKHR | ";
34299 if (value & FormatFeatureFlagBits::eTransferDstKHR) result += "TransferDstKHR | ";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060034300 if (value & FormatFeatureFlagBits::eSampledImageFilterMinmaxEXT) result += "SampledImageFilterMinmaxEXT | ";
Lenny Komowb79f04a2017-09-18 17:07:00 -060034301 if (value & FormatFeatureFlagBits::eMidpointChromaSamplesKHR) result += "MidpointChromaSamplesKHR | ";
34302 if (value & FormatFeatureFlagBits::eSampledImageYcbcrConversionLinearFilterKHR) result += "SampledImageYcbcrConversionLinearFilterKHR | ";
34303 if (value & FormatFeatureFlagBits::eSampledImageYcbcrConversionSeparateReconstructionFilterKHR) result += "SampledImageYcbcrConversionSeparateReconstructionFilterKHR | ";
34304 if (value & FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitKHR) result += "SampledImageYcbcrConversionChromaReconstructionExplicitKHR | ";
34305 if (value & FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR) result += "SampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR | ";
34306 if (value & FormatFeatureFlagBits::eDisjointKHR) result += "DisjointKHR | ";
34307 if (value & FormatFeatureFlagBits::eCositedChromaSamplesKHR) result += "CositedChromaSamplesKHR | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034308 return "{" + result.substr(0, result.size() - 3) + "}";
34309 }
34310
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034311 VULKAN_HPP_INLINE std::string to_string(QueryControlFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034312 {
34313 switch (value)
34314 {
34315 case QueryControlFlagBits::ePrecise: return "Precise";
34316 default: return "invalid";
34317 }
34318 }
34319
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034320 VULKAN_HPP_INLINE std::string to_string(QueryControlFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034321 {
34322 if (!value) return "{}";
34323 std::string result;
34324 if (value & QueryControlFlagBits::ePrecise) result += "Precise | ";
34325 return "{" + result.substr(0, result.size() - 3) + "}";
34326 }
34327
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034328 VULKAN_HPP_INLINE std::string to_string(QueryResultFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034329 {
34330 switch (value)
34331 {
34332 case QueryResultFlagBits::e64: return "64";
34333 case QueryResultFlagBits::eWait: return "Wait";
34334 case QueryResultFlagBits::eWithAvailability: return "WithAvailability";
34335 case QueryResultFlagBits::ePartial: return "Partial";
34336 default: return "invalid";
34337 }
34338 }
34339
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034340 VULKAN_HPP_INLINE std::string to_string(QueryResultFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034341 {
34342 if (!value) return "{}";
34343 std::string result;
34344 if (value & QueryResultFlagBits::e64) result += "64 | ";
34345 if (value & QueryResultFlagBits::eWait) result += "Wait | ";
34346 if (value & QueryResultFlagBits::eWithAvailability) result += "WithAvailability | ";
34347 if (value & QueryResultFlagBits::ePartial) result += "Partial | ";
34348 return "{" + result.substr(0, result.size() - 3) + "}";
34349 }
34350
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034351 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034352 {
34353 switch (value)
34354 {
34355 case CommandBufferUsageFlagBits::eOneTimeSubmit: return "OneTimeSubmit";
34356 case CommandBufferUsageFlagBits::eRenderPassContinue: return "RenderPassContinue";
34357 case CommandBufferUsageFlagBits::eSimultaneousUse: return "SimultaneousUse";
34358 default: return "invalid";
34359 }
34360 }
34361
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034362 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034363 {
34364 if (!value) return "{}";
34365 std::string result;
34366 if (value & CommandBufferUsageFlagBits::eOneTimeSubmit) result += "OneTimeSubmit | ";
34367 if (value & CommandBufferUsageFlagBits::eRenderPassContinue) result += "RenderPassContinue | ";
34368 if (value & CommandBufferUsageFlagBits::eSimultaneousUse) result += "SimultaneousUse | ";
34369 return "{" + result.substr(0, result.size() - 3) + "}";
34370 }
34371
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034372 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034373 {
34374 switch (value)
34375 {
34376 case QueryPipelineStatisticFlagBits::eInputAssemblyVertices: return "InputAssemblyVertices";
34377 case QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives: return "InputAssemblyPrimitives";
34378 case QueryPipelineStatisticFlagBits::eVertexShaderInvocations: return "VertexShaderInvocations";
34379 case QueryPipelineStatisticFlagBits::eGeometryShaderInvocations: return "GeometryShaderInvocations";
34380 case QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives: return "GeometryShaderPrimitives";
34381 case QueryPipelineStatisticFlagBits::eClippingInvocations: return "ClippingInvocations";
34382 case QueryPipelineStatisticFlagBits::eClippingPrimitives: return "ClippingPrimitives";
34383 case QueryPipelineStatisticFlagBits::eFragmentShaderInvocations: return "FragmentShaderInvocations";
34384 case QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches: return "TessellationControlShaderPatches";
34385 case QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations: return "TessellationEvaluationShaderInvocations";
34386 case QueryPipelineStatisticFlagBits::eComputeShaderInvocations: return "ComputeShaderInvocations";
34387 default: return "invalid";
34388 }
34389 }
34390
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034391 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034392 {
34393 if (!value) return "{}";
34394 std::string result;
34395 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyVertices) result += "InputAssemblyVertices | ";
34396 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives) result += "InputAssemblyPrimitives | ";
34397 if (value & QueryPipelineStatisticFlagBits::eVertexShaderInvocations) result += "VertexShaderInvocations | ";
34398 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderInvocations) result += "GeometryShaderInvocations | ";
34399 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives) result += "GeometryShaderPrimitives | ";
34400 if (value & QueryPipelineStatisticFlagBits::eClippingInvocations) result += "ClippingInvocations | ";
34401 if (value & QueryPipelineStatisticFlagBits::eClippingPrimitives) result += "ClippingPrimitives | ";
34402 if (value & QueryPipelineStatisticFlagBits::eFragmentShaderInvocations) result += "FragmentShaderInvocations | ";
34403 if (value & QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches) result += "TessellationControlShaderPatches | ";
34404 if (value & QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations) result += "TessellationEvaluationShaderInvocations | ";
34405 if (value & QueryPipelineStatisticFlagBits::eComputeShaderInvocations) result += "ComputeShaderInvocations | ";
34406 return "{" + result.substr(0, result.size() - 3) + "}";
34407 }
34408
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034409 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034410 {
34411 switch (value)
34412 {
34413 case ImageAspectFlagBits::eColor: return "Color";
34414 case ImageAspectFlagBits::eDepth: return "Depth";
34415 case ImageAspectFlagBits::eStencil: return "Stencil";
34416 case ImageAspectFlagBits::eMetadata: return "Metadata";
Lenny Komowb79f04a2017-09-18 17:07:00 -060034417 case ImageAspectFlagBits::ePlane0KHR: return "Plane0KHR";
34418 case ImageAspectFlagBits::ePlane1KHR: return "Plane1KHR";
34419 case ImageAspectFlagBits::ePlane2KHR: return "Plane2KHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034420 default: return "invalid";
34421 }
34422 }
34423
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034424 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034425 {
34426 if (!value) return "{}";
34427 std::string result;
34428 if (value & ImageAspectFlagBits::eColor) result += "Color | ";
34429 if (value & ImageAspectFlagBits::eDepth) result += "Depth | ";
34430 if (value & ImageAspectFlagBits::eStencil) result += "Stencil | ";
34431 if (value & ImageAspectFlagBits::eMetadata) result += "Metadata | ";
Lenny Komowb79f04a2017-09-18 17:07:00 -060034432 if (value & ImageAspectFlagBits::ePlane0KHR) result += "Plane0KHR | ";
34433 if (value & ImageAspectFlagBits::ePlane1KHR) result += "Plane1KHR | ";
34434 if (value & ImageAspectFlagBits::ePlane2KHR) result += "Plane2KHR | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034435 return "{" + result.substr(0, result.size() - 3) + "}";
34436 }
34437
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034438 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034439 {
34440 switch (value)
34441 {
34442 case SparseImageFormatFlagBits::eSingleMiptail: return "SingleMiptail";
34443 case SparseImageFormatFlagBits::eAlignedMipSize: return "AlignedMipSize";
34444 case SparseImageFormatFlagBits::eNonstandardBlockSize: return "NonstandardBlockSize";
34445 default: return "invalid";
34446 }
34447 }
34448
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034449 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034450 {
34451 if (!value) return "{}";
34452 std::string result;
34453 if (value & SparseImageFormatFlagBits::eSingleMiptail) result += "SingleMiptail | ";
34454 if (value & SparseImageFormatFlagBits::eAlignedMipSize) result += "AlignedMipSize | ";
34455 if (value & SparseImageFormatFlagBits::eNonstandardBlockSize) result += "NonstandardBlockSize | ";
34456 return "{" + result.substr(0, result.size() - 3) + "}";
34457 }
34458
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034459 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034460 {
34461 switch (value)
34462 {
34463 case SparseMemoryBindFlagBits::eMetadata: return "Metadata";
34464 default: return "invalid";
34465 }
34466 }
34467
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034468 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034469 {
34470 if (!value) return "{}";
34471 std::string result;
34472 if (value & SparseMemoryBindFlagBits::eMetadata) result += "Metadata | ";
34473 return "{" + result.substr(0, result.size() - 3) + "}";
34474 }
34475
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034476 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034477 {
34478 switch (value)
34479 {
34480 case PipelineStageFlagBits::eTopOfPipe: return "TopOfPipe";
34481 case PipelineStageFlagBits::eDrawIndirect: return "DrawIndirect";
34482 case PipelineStageFlagBits::eVertexInput: return "VertexInput";
34483 case PipelineStageFlagBits::eVertexShader: return "VertexShader";
34484 case PipelineStageFlagBits::eTessellationControlShader: return "TessellationControlShader";
34485 case PipelineStageFlagBits::eTessellationEvaluationShader: return "TessellationEvaluationShader";
34486 case PipelineStageFlagBits::eGeometryShader: return "GeometryShader";
34487 case PipelineStageFlagBits::eFragmentShader: return "FragmentShader";
34488 case PipelineStageFlagBits::eEarlyFragmentTests: return "EarlyFragmentTests";
34489 case PipelineStageFlagBits::eLateFragmentTests: return "LateFragmentTests";
34490 case PipelineStageFlagBits::eColorAttachmentOutput: return "ColorAttachmentOutput";
34491 case PipelineStageFlagBits::eComputeShader: return "ComputeShader";
34492 case PipelineStageFlagBits::eTransfer: return "Transfer";
34493 case PipelineStageFlagBits::eBottomOfPipe: return "BottomOfPipe";
34494 case PipelineStageFlagBits::eHost: return "Host";
34495 case PipelineStageFlagBits::eAllGraphics: return "AllGraphics";
34496 case PipelineStageFlagBits::eAllCommands: return "AllCommands";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034497 case PipelineStageFlagBits::eCommandProcessNVX: return "CommandProcessNVX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034498 default: return "invalid";
34499 }
34500 }
34501
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034502 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034503 {
34504 if (!value) return "{}";
34505 std::string result;
34506 if (value & PipelineStageFlagBits::eTopOfPipe) result += "TopOfPipe | ";
34507 if (value & PipelineStageFlagBits::eDrawIndirect) result += "DrawIndirect | ";
34508 if (value & PipelineStageFlagBits::eVertexInput) result += "VertexInput | ";
34509 if (value & PipelineStageFlagBits::eVertexShader) result += "VertexShader | ";
34510 if (value & PipelineStageFlagBits::eTessellationControlShader) result += "TessellationControlShader | ";
34511 if (value & PipelineStageFlagBits::eTessellationEvaluationShader) result += "TessellationEvaluationShader | ";
34512 if (value & PipelineStageFlagBits::eGeometryShader) result += "GeometryShader | ";
34513 if (value & PipelineStageFlagBits::eFragmentShader) result += "FragmentShader | ";
34514 if (value & PipelineStageFlagBits::eEarlyFragmentTests) result += "EarlyFragmentTests | ";
34515 if (value & PipelineStageFlagBits::eLateFragmentTests) result += "LateFragmentTests | ";
34516 if (value & PipelineStageFlagBits::eColorAttachmentOutput) result += "ColorAttachmentOutput | ";
34517 if (value & PipelineStageFlagBits::eComputeShader) result += "ComputeShader | ";
34518 if (value & PipelineStageFlagBits::eTransfer) result += "Transfer | ";
34519 if (value & PipelineStageFlagBits::eBottomOfPipe) result += "BottomOfPipe | ";
34520 if (value & PipelineStageFlagBits::eHost) result += "Host | ";
34521 if (value & PipelineStageFlagBits::eAllGraphics) result += "AllGraphics | ";
34522 if (value & PipelineStageFlagBits::eAllCommands) result += "AllCommands | ";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034523 if (value & PipelineStageFlagBits::eCommandProcessNVX) result += "CommandProcessNVX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034524 return "{" + result.substr(0, result.size() - 3) + "}";
34525 }
34526
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034527 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034528 {
34529 switch (value)
34530 {
34531 case CommandPoolCreateFlagBits::eTransient: return "Transient";
34532 case CommandPoolCreateFlagBits::eResetCommandBuffer: return "ResetCommandBuffer";
34533 default: return "invalid";
34534 }
34535 }
34536
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034537 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034538 {
34539 if (!value) return "{}";
34540 std::string result;
34541 if (value & CommandPoolCreateFlagBits::eTransient) result += "Transient | ";
34542 if (value & CommandPoolCreateFlagBits::eResetCommandBuffer) result += "ResetCommandBuffer | ";
34543 return "{" + result.substr(0, result.size() - 3) + "}";
34544 }
34545
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034546 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034547 {
34548 switch (value)
34549 {
34550 case CommandPoolResetFlagBits::eReleaseResources: return "ReleaseResources";
34551 default: return "invalid";
34552 }
34553 }
34554
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034555 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034556 {
34557 if (!value) return "{}";
34558 std::string result;
34559 if (value & CommandPoolResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
34560 return "{" + result.substr(0, result.size() - 3) + "}";
34561 }
34562
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034563 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034564 {
34565 switch (value)
34566 {
34567 case CommandBufferResetFlagBits::eReleaseResources: return "ReleaseResources";
34568 default: return "invalid";
34569 }
34570 }
34571
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034572 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034573 {
34574 if (!value) return "{}";
34575 std::string result;
34576 if (value & CommandBufferResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
34577 return "{" + result.substr(0, result.size() - 3) + "}";
34578 }
34579
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034580 VULKAN_HPP_INLINE std::string to_string(SampleCountFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034581 {
34582 switch (value)
34583 {
34584 case SampleCountFlagBits::e1: return "1";
34585 case SampleCountFlagBits::e2: return "2";
34586 case SampleCountFlagBits::e4: return "4";
34587 case SampleCountFlagBits::e8: return "8";
34588 case SampleCountFlagBits::e16: return "16";
34589 case SampleCountFlagBits::e32: return "32";
34590 case SampleCountFlagBits::e64: return "64";
34591 default: return "invalid";
34592 }
34593 }
34594
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034595 VULKAN_HPP_INLINE std::string to_string(SampleCountFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034596 {
34597 if (!value) return "{}";
34598 std::string result;
34599 if (value & SampleCountFlagBits::e1) result += "1 | ";
34600 if (value & SampleCountFlagBits::e2) result += "2 | ";
34601 if (value & SampleCountFlagBits::e4) result += "4 | ";
34602 if (value & SampleCountFlagBits::e8) result += "8 | ";
34603 if (value & SampleCountFlagBits::e16) result += "16 | ";
34604 if (value & SampleCountFlagBits::e32) result += "32 | ";
34605 if (value & SampleCountFlagBits::e64) result += "64 | ";
34606 return "{" + result.substr(0, result.size() - 3) + "}";
34607 }
34608
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034609 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034610 {
34611 switch (value)
34612 {
34613 case AttachmentDescriptionFlagBits::eMayAlias: return "MayAlias";
34614 default: return "invalid";
34615 }
34616 }
34617
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034618 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034619 {
34620 if (!value) return "{}";
34621 std::string result;
34622 if (value & AttachmentDescriptionFlagBits::eMayAlias) result += "MayAlias | ";
34623 return "{" + result.substr(0, result.size() - 3) + "}";
34624 }
34625
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034626 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034627 {
34628 switch (value)
34629 {
34630 case StencilFaceFlagBits::eFront: return "Front";
34631 case StencilFaceFlagBits::eBack: return "Back";
34632 case StencilFaceFlagBits::eVkStencilFrontAndBack: return "VkStencilFrontAndBack";
34633 default: return "invalid";
34634 }
34635 }
34636
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034637 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034638 {
34639 if (!value) return "{}";
34640 std::string result;
34641 if (value & StencilFaceFlagBits::eFront) result += "Front | ";
34642 if (value & StencilFaceFlagBits::eBack) result += "Back | ";
34643 if (value & StencilFaceFlagBits::eVkStencilFrontAndBack) result += "VkStencilFrontAndBack | ";
34644 return "{" + result.substr(0, result.size() - 3) + "}";
34645 }
34646
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034647 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034648 {
34649 switch (value)
34650 {
34651 case DescriptorPoolCreateFlagBits::eFreeDescriptorSet: return "FreeDescriptorSet";
34652 default: return "invalid";
34653 }
34654 }
34655
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034656 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034657 {
34658 if (!value) return "{}";
34659 std::string result;
34660 if (value & DescriptorPoolCreateFlagBits::eFreeDescriptorSet) result += "FreeDescriptorSet | ";
34661 return "{" + result.substr(0, result.size() - 3) + "}";
34662 }
34663
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034664 VULKAN_HPP_INLINE std::string to_string(DependencyFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034665 {
34666 switch (value)
34667 {
34668 case DependencyFlagBits::eByRegion: return "ByRegion";
Mark Young0f183a82017-02-28 09:58:04 -070034669 case DependencyFlagBits::eViewLocalKHX: return "ViewLocalKHX";
34670 case DependencyFlagBits::eDeviceGroupKHX: return "DeviceGroupKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034671 default: return "invalid";
34672 }
34673 }
34674
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034675 VULKAN_HPP_INLINE std::string to_string(DependencyFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034676 {
34677 if (!value) return "{}";
34678 std::string result;
34679 if (value & DependencyFlagBits::eByRegion) result += "ByRegion | ";
Mark Young0f183a82017-02-28 09:58:04 -070034680 if (value & DependencyFlagBits::eViewLocalKHX) result += "ViewLocalKHX | ";
34681 if (value & DependencyFlagBits::eDeviceGroupKHX) result += "DeviceGroupKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034682 return "{" + result.substr(0, result.size() - 3) + "}";
34683 }
34684
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034685 VULKAN_HPP_INLINE std::string to_string(PresentModeKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034686 {
34687 switch (value)
34688 {
34689 case PresentModeKHR::eImmediate: return "Immediate";
34690 case PresentModeKHR::eMailbox: return "Mailbox";
34691 case PresentModeKHR::eFifo: return "Fifo";
34692 case PresentModeKHR::eFifoRelaxed: return "FifoRelaxed";
Mark Lobodzinski54385432017-05-15 10:27:52 -060034693 case PresentModeKHR::eSharedDemandRefresh: return "SharedDemandRefresh";
34694 case PresentModeKHR::eSharedContinuousRefresh: return "SharedContinuousRefresh";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034695 default: return "invalid";
34696 }
34697 }
34698
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034699 VULKAN_HPP_INLINE std::string to_string(ColorSpaceKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034700 {
34701 switch (value)
34702 {
34703 case ColorSpaceKHR::eSrgbNonlinear: return "SrgbNonlinear";
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060034704 case ColorSpaceKHR::eDisplayP3NonlinearEXT: return "DisplayP3NonlinearEXT";
34705 case ColorSpaceKHR::eExtendedSrgbLinearEXT: return "ExtendedSrgbLinearEXT";
34706 case ColorSpaceKHR::eDciP3LinearEXT: return "DciP3LinearEXT";
34707 case ColorSpaceKHR::eDciP3NonlinearEXT: return "DciP3NonlinearEXT";
34708 case ColorSpaceKHR::eBt709LinearEXT: return "Bt709LinearEXT";
34709 case ColorSpaceKHR::eBt709NonlinearEXT: return "Bt709NonlinearEXT";
34710 case ColorSpaceKHR::eBt2020LinearEXT: return "Bt2020LinearEXT";
34711 case ColorSpaceKHR::eHdr10St2084EXT: return "Hdr10St2084EXT";
34712 case ColorSpaceKHR::eDolbyvisionEXT: return "DolbyvisionEXT";
34713 case ColorSpaceKHR::eHdr10HlgEXT: return "Hdr10HlgEXT";
34714 case ColorSpaceKHR::eAdobergbLinearEXT: return "AdobergbLinearEXT";
34715 case ColorSpaceKHR::eAdobergbNonlinearEXT: return "AdobergbNonlinearEXT";
34716 case ColorSpaceKHR::ePassThroughEXT: return "PassThroughEXT";
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060034717 case ColorSpaceKHR::eExtendedSrgbNonlinearEXT: return "ExtendedSrgbNonlinearEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034718 default: return "invalid";
34719 }
34720 }
34721
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034722 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034723 {
34724 switch (value)
34725 {
34726 case DisplayPlaneAlphaFlagBitsKHR::eOpaque: return "Opaque";
34727 case DisplayPlaneAlphaFlagBitsKHR::eGlobal: return "Global";
34728 case DisplayPlaneAlphaFlagBitsKHR::ePerPixel: return "PerPixel";
34729 case DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied: return "PerPixelPremultiplied";
34730 default: return "invalid";
34731 }
34732 }
34733
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034734 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034735 {
34736 if (!value) return "{}";
34737 std::string result;
34738 if (value & DisplayPlaneAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
34739 if (value & DisplayPlaneAlphaFlagBitsKHR::eGlobal) result += "Global | ";
34740 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixel) result += "PerPixel | ";
34741 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied) result += "PerPixelPremultiplied | ";
34742 return "{" + result.substr(0, result.size() - 3) + "}";
34743 }
34744
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034745 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034746 {
34747 switch (value)
34748 {
34749 case CompositeAlphaFlagBitsKHR::eOpaque: return "Opaque";
34750 case CompositeAlphaFlagBitsKHR::ePreMultiplied: return "PreMultiplied";
34751 case CompositeAlphaFlagBitsKHR::ePostMultiplied: return "PostMultiplied";
34752 case CompositeAlphaFlagBitsKHR::eInherit: return "Inherit";
34753 default: return "invalid";
34754 }
34755 }
34756
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034757 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034758 {
34759 if (!value) return "{}";
34760 std::string result;
34761 if (value & CompositeAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
34762 if (value & CompositeAlphaFlagBitsKHR::ePreMultiplied) result += "PreMultiplied | ";
34763 if (value & CompositeAlphaFlagBitsKHR::ePostMultiplied) result += "PostMultiplied | ";
34764 if (value & CompositeAlphaFlagBitsKHR::eInherit) result += "Inherit | ";
34765 return "{" + result.substr(0, result.size() - 3) + "}";
34766 }
34767
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034768 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034769 {
34770 switch (value)
34771 {
34772 case SurfaceTransformFlagBitsKHR::eIdentity: return "Identity";
34773 case SurfaceTransformFlagBitsKHR::eRotate90: return "Rotate90";
34774 case SurfaceTransformFlagBitsKHR::eRotate180: return "Rotate180";
34775 case SurfaceTransformFlagBitsKHR::eRotate270: return "Rotate270";
34776 case SurfaceTransformFlagBitsKHR::eHorizontalMirror: return "HorizontalMirror";
34777 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90: return "HorizontalMirrorRotate90";
34778 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180: return "HorizontalMirrorRotate180";
34779 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270: return "HorizontalMirrorRotate270";
34780 case SurfaceTransformFlagBitsKHR::eInherit: return "Inherit";
34781 default: return "invalid";
34782 }
34783 }
34784
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034785 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034786 {
34787 if (!value) return "{}";
34788 std::string result;
34789 if (value & SurfaceTransformFlagBitsKHR::eIdentity) result += "Identity | ";
34790 if (value & SurfaceTransformFlagBitsKHR::eRotate90) result += "Rotate90 | ";
34791 if (value & SurfaceTransformFlagBitsKHR::eRotate180) result += "Rotate180 | ";
34792 if (value & SurfaceTransformFlagBitsKHR::eRotate270) result += "Rotate270 | ";
34793 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirror) result += "HorizontalMirror | ";
34794 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90) result += "HorizontalMirrorRotate90 | ";
34795 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180) result += "HorizontalMirrorRotate180 | ";
34796 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270) result += "HorizontalMirrorRotate270 | ";
34797 if (value & SurfaceTransformFlagBitsKHR::eInherit) result += "Inherit | ";
34798 return "{" + result.substr(0, result.size() - 3) + "}";
34799 }
34800
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034801 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagBitsEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034802 {
34803 switch (value)
34804 {
34805 case DebugReportFlagBitsEXT::eInformation: return "Information";
34806 case DebugReportFlagBitsEXT::eWarning: return "Warning";
34807 case DebugReportFlagBitsEXT::ePerformanceWarning: return "PerformanceWarning";
34808 case DebugReportFlagBitsEXT::eError: return "Error";
34809 case DebugReportFlagBitsEXT::eDebug: return "Debug";
34810 default: return "invalid";
34811 }
34812 }
34813
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034814 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagsEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034815 {
34816 if (!value) return "{}";
34817 std::string result;
34818 if (value & DebugReportFlagBitsEXT::eInformation) result += "Information | ";
34819 if (value & DebugReportFlagBitsEXT::eWarning) result += "Warning | ";
34820 if (value & DebugReportFlagBitsEXT::ePerformanceWarning) result += "PerformanceWarning | ";
34821 if (value & DebugReportFlagBitsEXT::eError) result += "Error | ";
34822 if (value & DebugReportFlagBitsEXT::eDebug) result += "Debug | ";
34823 return "{" + result.substr(0, result.size() - 3) + "}";
34824 }
34825
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034826 VULKAN_HPP_INLINE std::string to_string(DebugReportObjectTypeEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034827 {
34828 switch (value)
34829 {
34830 case DebugReportObjectTypeEXT::eUnknown: return "Unknown";
34831 case DebugReportObjectTypeEXT::eInstance: return "Instance";
34832 case DebugReportObjectTypeEXT::ePhysicalDevice: return "PhysicalDevice";
34833 case DebugReportObjectTypeEXT::eDevice: return "Device";
34834 case DebugReportObjectTypeEXT::eQueue: return "Queue";
34835 case DebugReportObjectTypeEXT::eSemaphore: return "Semaphore";
34836 case DebugReportObjectTypeEXT::eCommandBuffer: return "CommandBuffer";
34837 case DebugReportObjectTypeEXT::eFence: return "Fence";
34838 case DebugReportObjectTypeEXT::eDeviceMemory: return "DeviceMemory";
34839 case DebugReportObjectTypeEXT::eBuffer: return "Buffer";
34840 case DebugReportObjectTypeEXT::eImage: return "Image";
34841 case DebugReportObjectTypeEXT::eEvent: return "Event";
34842 case DebugReportObjectTypeEXT::eQueryPool: return "QueryPool";
34843 case DebugReportObjectTypeEXT::eBufferView: return "BufferView";
34844 case DebugReportObjectTypeEXT::eImageView: return "ImageView";
34845 case DebugReportObjectTypeEXT::eShaderModule: return "ShaderModule";
34846 case DebugReportObjectTypeEXT::ePipelineCache: return "PipelineCache";
34847 case DebugReportObjectTypeEXT::ePipelineLayout: return "PipelineLayout";
34848 case DebugReportObjectTypeEXT::eRenderPass: return "RenderPass";
34849 case DebugReportObjectTypeEXT::ePipeline: return "Pipeline";
34850 case DebugReportObjectTypeEXT::eDescriptorSetLayout: return "DescriptorSetLayout";
34851 case DebugReportObjectTypeEXT::eSampler: return "Sampler";
34852 case DebugReportObjectTypeEXT::eDescriptorPool: return "DescriptorPool";
34853 case DebugReportObjectTypeEXT::eDescriptorSet: return "DescriptorSet";
34854 case DebugReportObjectTypeEXT::eFramebuffer: return "Framebuffer";
34855 case DebugReportObjectTypeEXT::eCommandPool: return "CommandPool";
34856 case DebugReportObjectTypeEXT::eSurfaceKhr: return "SurfaceKhr";
34857 case DebugReportObjectTypeEXT::eSwapchainKhr: return "SwapchainKhr";
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060034858 case DebugReportObjectTypeEXT::eDebugReportCallbackExt: return "DebugReportCallbackExt";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034859 case DebugReportObjectTypeEXT::eDisplayKhr: return "DisplayKhr";
34860 case DebugReportObjectTypeEXT::eDisplayModeKhr: return "DisplayModeKhr";
34861 case DebugReportObjectTypeEXT::eObjectTableNvx: return "ObjectTableNvx";
34862 case DebugReportObjectTypeEXT::eIndirectCommandsLayoutNvx: return "IndirectCommandsLayoutNvx";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060034863 case DebugReportObjectTypeEXT::eValidationCache: return "ValidationCache";
Mark Lobodzinski54385432017-05-15 10:27:52 -060034864 case DebugReportObjectTypeEXT::eDescriptorUpdateTemplateKHR: return "DescriptorUpdateTemplateKHR";
Lenny Komowb79f04a2017-09-18 17:07:00 -060034865 case DebugReportObjectTypeEXT::eSamplerYcbcrConversionKHR: return "SamplerYcbcrConversionKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034866 default: return "invalid";
34867 }
34868 }
34869
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034870 VULKAN_HPP_INLINE std::string to_string(RasterizationOrderAMD value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034871 {
34872 switch (value)
34873 {
34874 case RasterizationOrderAMD::eStrict: return "Strict";
34875 case RasterizationOrderAMD::eRelaxed: return "Relaxed";
34876 default: return "invalid";
34877 }
34878 }
34879
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034880 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060034881 {
34882 switch (value)
34883 {
34884 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32: return "OpaqueWin32";
34885 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
34886 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image: return "D3D11Image";
34887 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt: return "D3D11ImageKmt";
34888 default: return "invalid";
34889 }
34890 }
34891
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034892 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060034893 {
34894 if (!value) return "{}";
34895 std::string result;
34896 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) result += "OpaqueWin32 | ";
34897 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
34898 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) result += "D3D11Image | ";
34899 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt) result += "D3D11ImageKmt | ";
34900 return "{" + result.substr(0, result.size() - 3) + "}";
34901 }
34902
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034903 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060034904 {
34905 switch (value)
34906 {
34907 case ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly: return "DedicatedOnly";
34908 case ExternalMemoryFeatureFlagBitsNV::eExportable: return "Exportable";
34909 case ExternalMemoryFeatureFlagBitsNV::eImportable: return "Importable";
34910 default: return "invalid";
34911 }
34912 }
34913
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034914 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060034915 {
34916 if (!value) return "{}";
34917 std::string result;
34918 if (value & ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) result += "DedicatedOnly | ";
34919 if (value & ExternalMemoryFeatureFlagBitsNV::eExportable) result += "Exportable | ";
34920 if (value & ExternalMemoryFeatureFlagBitsNV::eImportable) result += "Importable | ";
34921 return "{" + result.substr(0, result.size() - 3) + "}";
34922 }
34923
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034924 VULKAN_HPP_INLINE std::string to_string(ValidationCheckEXT value)
Lenny Komow68432d72016-09-29 14:16:59 -060034925 {
34926 switch (value)
34927 {
34928 case ValidationCheckEXT::eAll: return "All";
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060034929 case ValidationCheckEXT::eShaders: return "Shaders";
Lenny Komow68432d72016-09-29 14:16:59 -060034930 default: return "invalid";
34931 }
34932 }
34933
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034934 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagBitsNVX value)
34935 {
34936 switch (value)
34937 {
34938 case IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences: return "UnorderedSequences";
34939 case IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences: return "SparseSequences";
34940 case IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions: return "EmptyExecutions";
34941 case IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences: return "IndexedSequences";
34942 default: return "invalid";
34943 }
34944 }
34945
34946 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagsNVX value)
34947 {
34948 if (!value) return "{}";
34949 std::string result;
34950 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) result += "UnorderedSequences | ";
34951 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) result += "SparseSequences | ";
34952 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) result += "EmptyExecutions | ";
34953 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences) result += "IndexedSequences | ";
34954 return "{" + result.substr(0, result.size() - 3) + "}";
34955 }
34956
34957 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagBitsNVX value)
34958 {
34959 switch (value)
34960 {
34961 case ObjectEntryUsageFlagBitsNVX::eGraphics: return "Graphics";
34962 case ObjectEntryUsageFlagBitsNVX::eCompute: return "Compute";
34963 default: return "invalid";
34964 }
34965 }
34966
34967 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagsNVX value)
34968 {
34969 if (!value) return "{}";
34970 std::string result;
34971 if (value & ObjectEntryUsageFlagBitsNVX::eGraphics) result += "Graphics | ";
34972 if (value & ObjectEntryUsageFlagBitsNVX::eCompute) result += "Compute | ";
34973 return "{" + result.substr(0, result.size() - 3) + "}";
34974 }
34975
34976 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsTokenTypeNVX value)
34977 {
34978 switch (value)
34979 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060034980 case IndirectCommandsTokenTypeNVX::ePipeline: return "Pipeline";
34981 case IndirectCommandsTokenTypeNVX::eDescriptorSet: return "DescriptorSet";
34982 case IndirectCommandsTokenTypeNVX::eIndexBuffer: return "IndexBuffer";
34983 case IndirectCommandsTokenTypeNVX::eVertexBuffer: return "VertexBuffer";
34984 case IndirectCommandsTokenTypeNVX::ePushConstant: return "PushConstant";
34985 case IndirectCommandsTokenTypeNVX::eDrawIndexed: return "DrawIndexed";
34986 case IndirectCommandsTokenTypeNVX::eDraw: return "Draw";
34987 case IndirectCommandsTokenTypeNVX::eDispatch: return "Dispatch";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034988 default: return "invalid";
34989 }
34990 }
34991
34992 VULKAN_HPP_INLINE std::string to_string(ObjectEntryTypeNVX value)
34993 {
34994 switch (value)
34995 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060034996 case ObjectEntryTypeNVX::eDescriptorSet: return "DescriptorSet";
34997 case ObjectEntryTypeNVX::ePipeline: return "Pipeline";
34998 case ObjectEntryTypeNVX::eIndexBuffer: return "IndexBuffer";
34999 case ObjectEntryTypeNVX::eVertexBuffer: return "VertexBuffer";
35000 case ObjectEntryTypeNVX::ePushConstant: return "PushConstant";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070035001 default: return "invalid";
35002 }
35003 }
35004
Mark Young0f183a82017-02-28 09:58:04 -070035005 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlagBits value)
35006 {
35007 switch (value)
35008 {
35009 case DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR: return "PushDescriptorKHR";
35010 default: return "invalid";
35011 }
35012 }
35013
35014 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlags value)
35015 {
35016 if (!value) return "{}";
35017 std::string result;
35018 if (value & DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR) result += "PushDescriptorKHR | ";
35019 return "{" + result.substr(0, result.size() - 3) + "}";
35020 }
35021
Mark Youngabc2d6e2017-07-07 07:59:56 -060035022 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070035023 {
35024 switch (value)
35025 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060035026 case ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd: return "OpaqueFd";
35027 case ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32: return "OpaqueWin32";
35028 case ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
35029 case ExternalMemoryHandleTypeFlagBitsKHR::eD3D11Texture: return "D3D11Texture";
35030 case ExternalMemoryHandleTypeFlagBitsKHR::eD3D11TextureKmt: return "D3D11TextureKmt";
35031 case ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Heap: return "D3D12Heap";
35032 case ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Resource: return "D3D12Resource";
Mark Lobodzinski417d5702017-11-27 12:00:45 -070035033 case ExternalMemoryHandleTypeFlagBitsKHR::eDmaBufEXT: return "DmaBufEXT";
35034 case ExternalMemoryHandleTypeFlagBitsKHR::eHostAllocationEXT: return "HostAllocationEXT";
35035 case ExternalMemoryHandleTypeFlagBitsKHR::eHostMappedForeignMemoryEXT: return "HostMappedForeignMemoryEXT";
Mark Young0f183a82017-02-28 09:58:04 -070035036 default: return "invalid";
35037 }
35038 }
35039
Mark Youngabc2d6e2017-07-07 07:59:56 -060035040 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070035041 {
35042 if (!value) return "{}";
35043 std::string result;
Mark Youngabc2d6e2017-07-07 07:59:56 -060035044 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd) result += "OpaqueFd | ";
35045 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32) result += "OpaqueWin32 | ";
35046 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
35047 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eD3D11Texture) result += "D3D11Texture | ";
35048 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eD3D11TextureKmt) result += "D3D11TextureKmt | ";
35049 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Heap) result += "D3D12Heap | ";
35050 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Resource) result += "D3D12Resource | ";
Mark Lobodzinski417d5702017-11-27 12:00:45 -070035051 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eDmaBufEXT) result += "DmaBufEXT | ";
35052 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eHostAllocationEXT) result += "HostAllocationEXT | ";
35053 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eHostMappedForeignMemoryEXT) result += "HostMappedForeignMemoryEXT | ";
Mark Young0f183a82017-02-28 09:58:04 -070035054 return "{" + result.substr(0, result.size() - 3) + "}";
35055 }
35056
Mark Youngabc2d6e2017-07-07 07:59:56 -060035057 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070035058 {
35059 switch (value)
35060 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060035061 case ExternalMemoryFeatureFlagBitsKHR::eDedicatedOnly: return "DedicatedOnly";
35062 case ExternalMemoryFeatureFlagBitsKHR::eExportable: return "Exportable";
35063 case ExternalMemoryFeatureFlagBitsKHR::eImportable: return "Importable";
Mark Young0f183a82017-02-28 09:58:04 -070035064 default: return "invalid";
35065 }
35066 }
35067
Mark Youngabc2d6e2017-07-07 07:59:56 -060035068 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070035069 {
35070 if (!value) return "{}";
35071 std::string result;
Mark Youngabc2d6e2017-07-07 07:59:56 -060035072 if (value & ExternalMemoryFeatureFlagBitsKHR::eDedicatedOnly) result += "DedicatedOnly | ";
35073 if (value & ExternalMemoryFeatureFlagBitsKHR::eExportable) result += "Exportable | ";
35074 if (value & ExternalMemoryFeatureFlagBitsKHR::eImportable) result += "Importable | ";
Mark Young0f183a82017-02-28 09:58:04 -070035075 return "{" + result.substr(0, result.size() - 3) + "}";
35076 }
35077
Mark Youngabc2d6e2017-07-07 07:59:56 -060035078 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagBitsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070035079 {
35080 switch (value)
35081 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060035082 case ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd: return "OpaqueFd";
35083 case ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32: return "OpaqueWin32";
35084 case ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
35085 case ExternalSemaphoreHandleTypeFlagBitsKHR::eD3D12Fence: return "D3D12Fence";
35086 case ExternalSemaphoreHandleTypeFlagBitsKHR::eSyncFd: return "SyncFd";
Mark Young0f183a82017-02-28 09:58:04 -070035087 default: return "invalid";
35088 }
35089 }
35090
Mark Youngabc2d6e2017-07-07 07:59:56 -060035091 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070035092 {
35093 if (!value) return "{}";
35094 std::string result;
Mark Youngabc2d6e2017-07-07 07:59:56 -060035095 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd) result += "OpaqueFd | ";
35096 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32) result += "OpaqueWin32 | ";
35097 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
35098 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eD3D12Fence) result += "D3D12Fence | ";
35099 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eSyncFd) result += "SyncFd | ";
Mark Young0f183a82017-02-28 09:58:04 -070035100 return "{" + result.substr(0, result.size() - 3) + "}";
35101 }
35102
Mark Youngabc2d6e2017-07-07 07:59:56 -060035103 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagBitsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070035104 {
35105 switch (value)
35106 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060035107 case ExternalSemaphoreFeatureFlagBitsKHR::eExportable: return "Exportable";
35108 case ExternalSemaphoreFeatureFlagBitsKHR::eImportable: return "Importable";
Mark Young0f183a82017-02-28 09:58:04 -070035109 default: return "invalid";
35110 }
35111 }
35112
Mark Youngabc2d6e2017-07-07 07:59:56 -060035113 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070035114 {
35115 if (!value) return "{}";
35116 std::string result;
Mark Youngabc2d6e2017-07-07 07:59:56 -060035117 if (value & ExternalSemaphoreFeatureFlagBitsKHR::eExportable) result += "Exportable | ";
35118 if (value & ExternalSemaphoreFeatureFlagBitsKHR::eImportable) result += "Importable | ";
35119 return "{" + result.substr(0, result.size() - 3) + "}";
35120 }
35121
35122 VULKAN_HPP_INLINE std::string to_string(SemaphoreImportFlagBitsKHR value)
35123 {
35124 switch (value)
35125 {
35126 case SemaphoreImportFlagBitsKHR::eTemporary: return "Temporary";
35127 default: return "invalid";
35128 }
35129 }
35130
35131 VULKAN_HPP_INLINE std::string to_string(SemaphoreImportFlagsKHR value)
35132 {
35133 if (!value) return "{}";
35134 std::string result;
35135 if (value & SemaphoreImportFlagBitsKHR::eTemporary) result += "Temporary | ";
35136 return "{" + result.substr(0, result.size() - 3) + "}";
35137 }
35138
35139 VULKAN_HPP_INLINE std::string to_string(ExternalFenceHandleTypeFlagBitsKHR value)
35140 {
35141 switch (value)
35142 {
35143 case ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd: return "OpaqueFd";
35144 case ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32: return "OpaqueWin32";
35145 case ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
35146 case ExternalFenceHandleTypeFlagBitsKHR::eSyncFd: return "SyncFd";
35147 default: return "invalid";
35148 }
35149 }
35150
35151 VULKAN_HPP_INLINE std::string to_string(ExternalFenceHandleTypeFlagsKHR value)
35152 {
35153 if (!value) return "{}";
35154 std::string result;
35155 if (value & ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd) result += "OpaqueFd | ";
35156 if (value & ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32) result += "OpaqueWin32 | ";
35157 if (value & ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
35158 if (value & ExternalFenceHandleTypeFlagBitsKHR::eSyncFd) result += "SyncFd | ";
35159 return "{" + result.substr(0, result.size() - 3) + "}";
35160 }
35161
35162 VULKAN_HPP_INLINE std::string to_string(ExternalFenceFeatureFlagBitsKHR value)
35163 {
35164 switch (value)
35165 {
35166 case ExternalFenceFeatureFlagBitsKHR::eExportable: return "Exportable";
35167 case ExternalFenceFeatureFlagBitsKHR::eImportable: return "Importable";
35168 default: return "invalid";
35169 }
35170 }
35171
35172 VULKAN_HPP_INLINE std::string to_string(ExternalFenceFeatureFlagsKHR value)
35173 {
35174 if (!value) return "{}";
35175 std::string result;
35176 if (value & ExternalFenceFeatureFlagBitsKHR::eExportable) result += "Exportable | ";
35177 if (value & ExternalFenceFeatureFlagBitsKHR::eImportable) result += "Importable | ";
35178 return "{" + result.substr(0, result.size() - 3) + "}";
35179 }
35180
35181 VULKAN_HPP_INLINE std::string to_string(FenceImportFlagBitsKHR value)
35182 {
35183 switch (value)
35184 {
35185 case FenceImportFlagBitsKHR::eTemporary: return "Temporary";
35186 default: return "invalid";
35187 }
35188 }
35189
35190 VULKAN_HPP_INLINE std::string to_string(FenceImportFlagsKHR value)
35191 {
35192 if (!value) return "{}";
35193 std::string result;
35194 if (value & FenceImportFlagBitsKHR::eTemporary) result += "Temporary | ";
Mark Young0f183a82017-02-28 09:58:04 -070035195 return "{" + result.substr(0, result.size() - 3) + "}";
35196 }
35197
Mark Young39389872017-01-19 21:10:49 -070035198 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagBitsEXT value)
35199 {
35200 switch (value)
35201 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060035202 case SurfaceCounterFlagBitsEXT::eVblank: return "Vblank";
Mark Young39389872017-01-19 21:10:49 -070035203 default: return "invalid";
35204 }
35205 }
35206
35207 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagsEXT value)
35208 {
35209 if (!value) return "{}";
35210 std::string result;
Mark Lobodzinski54385432017-05-15 10:27:52 -060035211 if (value & SurfaceCounterFlagBitsEXT::eVblank) result += "Vblank | ";
Mark Young39389872017-01-19 21:10:49 -070035212 return "{" + result.substr(0, result.size() - 3) + "}";
35213 }
35214
35215 VULKAN_HPP_INLINE std::string to_string(DisplayPowerStateEXT value)
35216 {
35217 switch (value)
35218 {
35219 case DisplayPowerStateEXT::eOff: return "Off";
35220 case DisplayPowerStateEXT::eSuspend: return "Suspend";
35221 case DisplayPowerStateEXT::eOn: return "On";
35222 default: return "invalid";
35223 }
35224 }
35225
35226 VULKAN_HPP_INLINE std::string to_string(DeviceEventTypeEXT value)
35227 {
35228 switch (value)
35229 {
35230 case DeviceEventTypeEXT::eDisplayHotplug: return "DisplayHotplug";
35231 default: return "invalid";
35232 }
35233 }
35234
35235 VULKAN_HPP_INLINE std::string to_string(DisplayEventTypeEXT value)
35236 {
35237 switch (value)
35238 {
35239 case DisplayEventTypeEXT::eFirstPixelOut: return "FirstPixelOut";
35240 default: return "invalid";
35241 }
35242 }
35243
Mark Young0f183a82017-02-28 09:58:04 -070035244 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagBitsKHX value)
35245 {
35246 switch (value)
35247 {
35248 case PeerMemoryFeatureFlagBitsKHX::eCopySrc: return "CopySrc";
35249 case PeerMemoryFeatureFlagBitsKHX::eCopyDst: return "CopyDst";
35250 case PeerMemoryFeatureFlagBitsKHX::eGenericSrc: return "GenericSrc";
35251 case PeerMemoryFeatureFlagBitsKHX::eGenericDst: return "GenericDst";
35252 default: return "invalid";
35253 }
35254 }
35255
35256 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagsKHX value)
35257 {
35258 if (!value) return "{}";
35259 std::string result;
35260 if (value & PeerMemoryFeatureFlagBitsKHX::eCopySrc) result += "CopySrc | ";
35261 if (value & PeerMemoryFeatureFlagBitsKHX::eCopyDst) result += "CopyDst | ";
35262 if (value & PeerMemoryFeatureFlagBitsKHX::eGenericSrc) result += "GenericSrc | ";
35263 if (value & PeerMemoryFeatureFlagBitsKHX::eGenericDst) result += "GenericDst | ";
35264 return "{" + result.substr(0, result.size() - 3) + "}";
35265 }
35266
35267 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagBitsKHX value)
35268 {
35269 switch (value)
35270 {
35271 case MemoryAllocateFlagBitsKHX::eDeviceMask: return "DeviceMask";
35272 default: return "invalid";
35273 }
35274 }
35275
35276 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagsKHX value)
35277 {
35278 if (!value) return "{}";
35279 std::string result;
35280 if (value & MemoryAllocateFlagBitsKHX::eDeviceMask) result += "DeviceMask | ";
35281 return "{" + result.substr(0, result.size() - 3) + "}";
35282 }
35283
35284 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagBitsKHX value)
35285 {
35286 switch (value)
35287 {
35288 case DeviceGroupPresentModeFlagBitsKHX::eLocal: return "Local";
35289 case DeviceGroupPresentModeFlagBitsKHX::eRemote: return "Remote";
35290 case DeviceGroupPresentModeFlagBitsKHX::eSum: return "Sum";
35291 case DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice: return "LocalMultiDevice";
35292 default: return "invalid";
35293 }
35294 }
35295
35296 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagsKHX value)
35297 {
35298 if (!value) return "{}";
35299 std::string result;
35300 if (value & DeviceGroupPresentModeFlagBitsKHX::eLocal) result += "Local | ";
35301 if (value & DeviceGroupPresentModeFlagBitsKHX::eRemote) result += "Remote | ";
35302 if (value & DeviceGroupPresentModeFlagBitsKHX::eSum) result += "Sum | ";
35303 if (value & DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice) result += "LocalMultiDevice | ";
35304 return "{" + result.substr(0, result.size() - 3) + "}";
35305 }
35306
35307 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagBitsKHR value)
35308 {
35309 switch (value)
35310 {
35311 case SwapchainCreateFlagBitsKHR::eBindSfrKHX: return "BindSfrKHX";
35312 default: return "invalid";
35313 }
35314 }
35315
35316 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagsKHR value)
35317 {
35318 if (!value) return "{}";
35319 std::string result;
35320 if (value & SwapchainCreateFlagBitsKHR::eBindSfrKHX) result += "BindSfrKHX | ";
35321 return "{" + result.substr(0, result.size() - 3) + "}";
35322 }
35323
35324 VULKAN_HPP_INLINE std::string to_string(ViewportCoordinateSwizzleNV value)
35325 {
35326 switch (value)
35327 {
35328 case ViewportCoordinateSwizzleNV::ePositiveX: return "PositiveX";
35329 case ViewportCoordinateSwizzleNV::eNegativeX: return "NegativeX";
35330 case ViewportCoordinateSwizzleNV::ePositiveY: return "PositiveY";
35331 case ViewportCoordinateSwizzleNV::eNegativeY: return "NegativeY";
35332 case ViewportCoordinateSwizzleNV::ePositiveZ: return "PositiveZ";
35333 case ViewportCoordinateSwizzleNV::eNegativeZ: return "NegativeZ";
35334 case ViewportCoordinateSwizzleNV::ePositiveW: return "PositiveW";
35335 case ViewportCoordinateSwizzleNV::eNegativeW: return "NegativeW";
35336 default: return "invalid";
35337 }
35338 }
35339
35340 VULKAN_HPP_INLINE std::string to_string(DiscardRectangleModeEXT value)
35341 {
35342 switch (value)
35343 {
35344 case DiscardRectangleModeEXT::eInclusive: return "Inclusive";
35345 case DiscardRectangleModeEXT::eExclusive: return "Exclusive";
35346 default: return "invalid";
35347 }
35348 }
35349
35350 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlagBits value)
35351 {
35352 switch (value)
35353 {
35354 case SubpassDescriptionFlagBits::ePerViewAttributesNVX: return "PerViewAttributesNVX";
35355 case SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX: return "PerViewPositionXOnlyNVX";
35356 default: return "invalid";
35357 }
35358 }
35359
35360 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlags value)
35361 {
35362 if (!value) return "{}";
35363 std::string result;
35364 if (value & SubpassDescriptionFlagBits::ePerViewAttributesNVX) result += "PerViewAttributesNVX | ";
35365 if (value & SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX) result += "PerViewPositionXOnlyNVX | ";
35366 return "{" + result.substr(0, result.size() - 3) + "}";
35367 }
35368
Lenny Komowb79f04a2017-09-18 17:07:00 -060035369 VULKAN_HPP_INLINE std::string to_string(PointClippingBehaviorKHR value)
35370 {
35371 switch (value)
35372 {
35373 case PointClippingBehaviorKHR::eAllClipPlanes: return "AllClipPlanes";
35374 case PointClippingBehaviorKHR::eUserClipPlanesOnly: return "UserClipPlanesOnly";
35375 default: return "invalid";
35376 }
35377 }
35378
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060035379 VULKAN_HPP_INLINE std::string to_string(SamplerReductionModeEXT value)
35380 {
35381 switch (value)
35382 {
35383 case SamplerReductionModeEXT::eWeightedAverage: return "WeightedAverage";
35384 case SamplerReductionModeEXT::eMin: return "Min";
35385 case SamplerReductionModeEXT::eMax: return "Max";
35386 default: return "invalid";
35387 }
35388 }
35389
Lenny Komowb79f04a2017-09-18 17:07:00 -060035390 VULKAN_HPP_INLINE std::string to_string(TessellationDomainOriginKHR value)
35391 {
35392 switch (value)
35393 {
35394 case TessellationDomainOriginKHR::eUpperLeft: return "UpperLeft";
35395 case TessellationDomainOriginKHR::eLowerLeft: return "LowerLeft";
35396 default: return "invalid";
35397 }
35398 }
35399
35400 VULKAN_HPP_INLINE std::string to_string(SamplerYcbcrModelConversionKHR value)
35401 {
35402 switch (value)
35403 {
35404 case SamplerYcbcrModelConversionKHR::eRgbIdentity: return "RgbIdentity";
35405 case SamplerYcbcrModelConversionKHR::eYcbcrIdentity: return "YcbcrIdentity";
35406 case SamplerYcbcrModelConversionKHR::eYcbcr709: return "Ycbcr709";
35407 case SamplerYcbcrModelConversionKHR::eYcbcr601: return "Ycbcr601";
35408 case SamplerYcbcrModelConversionKHR::eYcbcr2020: return "Ycbcr2020";
35409 default: return "invalid";
35410 }
35411 }
35412
35413 VULKAN_HPP_INLINE std::string to_string(SamplerYcbcrRangeKHR value)
35414 {
35415 switch (value)
35416 {
35417 case SamplerYcbcrRangeKHR::eItuFull: return "ItuFull";
35418 case SamplerYcbcrRangeKHR::eItuNarrow: return "ItuNarrow";
35419 default: return "invalid";
35420 }
35421 }
35422
35423 VULKAN_HPP_INLINE std::string to_string(ChromaLocationKHR value)
35424 {
35425 switch (value)
35426 {
35427 case ChromaLocationKHR::eCositedEven: return "CositedEven";
35428 case ChromaLocationKHR::eMidpoint: return "Midpoint";
35429 default: return "invalid";
35430 }
35431 }
35432
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060035433 VULKAN_HPP_INLINE std::string to_string(BlendOverlapEXT value)
35434 {
35435 switch (value)
35436 {
35437 case BlendOverlapEXT::eUncorrelated: return "Uncorrelated";
35438 case BlendOverlapEXT::eDisjoint: return "Disjoint";
35439 case BlendOverlapEXT::eConjoint: return "Conjoint";
35440 default: return "invalid";
35441 }
35442 }
35443
35444 VULKAN_HPP_INLINE std::string to_string(CoverageModulationModeNV value)
35445 {
35446 switch (value)
35447 {
35448 case CoverageModulationModeNV::eNone: return "None";
35449 case CoverageModulationModeNV::eRgb: return "Rgb";
35450 case CoverageModulationModeNV::eAlpha: return "Alpha";
35451 case CoverageModulationModeNV::eRgba: return "Rgba";
35452 default: return "invalid";
35453 }
35454 }
35455
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060035456 VULKAN_HPP_INLINE std::string to_string(ValidationCacheHeaderVersionEXT value)
35457 {
35458 switch (value)
35459 {
35460 case ValidationCacheHeaderVersionEXT::eOne: return "One";
35461 default: return "invalid";
35462 }
35463 }
35464
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060035465 VULKAN_HPP_INLINE std::string to_string(ShaderInfoTypeAMD value)
35466 {
35467 switch (value)
35468 {
35469 case ShaderInfoTypeAMD::eStatistics: return "Statistics";
35470 case ShaderInfoTypeAMD::eBinary: return "Binary";
35471 case ShaderInfoTypeAMD::eDisassembly: return "Disassembly";
35472 default: return "invalid";
35473 }
35474 }
35475
35476 VULKAN_HPP_INLINE std::string to_string(QueueGlobalPriorityEXT value)
35477 {
35478 switch (value)
35479 {
35480 case QueueGlobalPriorityEXT::eLow: return "Low";
35481 case QueueGlobalPriorityEXT::eMedium: return "Medium";
35482 case QueueGlobalPriorityEXT::eHigh: return "High";
35483 case QueueGlobalPriorityEXT::eRealtime: return "Realtime";
35484 default: return "invalid";
35485 }
35486 }
35487
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060035488} // namespace VULKAN_HPP_NAMESPACE
Lenny Komowbed9b5c2016-08-11 11:23:15 -060035489
35490#endif