blob: c96889c9bc9cdad57b361643f77043a03ba8f98a [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 Lobodzinskie3f891d2017-10-09 13:06:50 -060036static_assert( VK_HEADER_VERSION == 62 , "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#if defined(VULKAN_HPP_NO_EXCEPTIONS) && !defined(VULKAN_HPP_NO_SMART_HANDLE)
326# define VULKAN_HPP_NO_SMART_HANDLE
327#endif
328
329#ifndef VULKAN_HPP_NO_SMART_HANDLE
330 template <typename Type, typename Deleter>
331 class UniqueHandle
332 {
333 public:
334 explicit UniqueHandle( Type const& value = Type(), Deleter const& deleter = Deleter() )
335 : m_value( value )
336 , m_deleter( deleter )
337 {}
338
339 UniqueHandle( UniqueHandle const& ) = delete;
340
341 UniqueHandle( UniqueHandle && other )
342 : m_value( other.release() )
343 , m_deleter( std::move( other.m_deleter ) )
344 {}
345
346 ~UniqueHandle()
347 {
348 destroy();
349 }
350
351 UniqueHandle & operator=( UniqueHandle const& ) = delete;
352
353 UniqueHandle & operator=( UniqueHandle && other )
354 {
355 reset( other.release() );
356 m_deleter = std::move( other.m_deleter );
357 return *this;
358 }
359
360 explicit operator bool() const
361 {
362 return m_value.operator bool();
363 }
364
365 Type const* operator->() const
366 {
367 return &m_value;
368 }
369
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -0600370 Type * operator->()
371 {
372 return &m_value;
373 }
374
Mark Lobodzinski36c33862017-02-13 10:15:53 -0700375 Type const& operator*() const
376 {
377 return m_value;
378 }
379
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -0600380 Type & operator*()
381 {
382 return m_value;
383 }
384
385 const Type & get() const
386 {
387 return m_value;
388 }
389
390 Type & get()
Mark Lobodzinski36c33862017-02-13 10:15:53 -0700391 {
392 return m_value;
393 }
394
395 Deleter & getDeleter()
396 {
397 return m_deleter;
398 }
399
400 Deleter const& getDeleter() const
401 {
402 return m_deleter;
403 }
404
405 void reset( Type const& value = Type() )
406 {
407 if ( m_value != value )
408 {
409 destroy();
410 m_value = value;
411 }
412 }
413
414 Type release()
415 {
416 Type value = m_value;
417 m_value = nullptr;
418 return value;
419 }
420
421 void swap( UniqueHandle<Type, Deleter> & rhs )
422 {
423 std::swap(m_value, rhs.m_value);
424 std::swap(m_deleter, rhs.m_deleter);
425 }
426
427 private:
428 void destroy()
429 {
430 if ( m_value )
431 {
432 m_deleter( m_value );
433 }
434 }
435
436 private:
437 Type m_value;
438 Deleter m_deleter;
439 };
440
441 template <typename Type, typename Deleter>
442 VULKAN_HPP_INLINE void swap( UniqueHandle<Type,Deleter> & lhs, UniqueHandle<Type,Deleter> & rhs )
443 {
444 lhs.swap( rhs );
445 }
446#endif
447
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -0600448
Mike Schuchardt2ece4b72017-09-19 15:00:40 -0600449 template <typename X, typename Y> constexpr bool isStructureChainValid() { return false; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -0600450
451 template <class Element>
452 class StructureChainElement
453 {
454 public:
455 explicit operator Element&() { return value; }
456 explicit operator const Element&() const { return value; }
457 private:
458 Element value;
459 };
460
461 template<typename ...StructureElements>
462 class StructureChain : private StructureChainElement<StructureElements>...
463 {
464 public:
465 StructureChain()
466 {
467 link<StructureElements...>();
468 }
469
470 StructureChain(StructureChain const &rhs)
471 {
472 linkAndCopy<StructureElements...>(rhs);
473 }
474
475 StructureChain& operator=(StructureChain const &rhs)
476 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -0600477 linkAndCopy<StructureElements...>(rhs);
478 return *this;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -0600479 }
480
481 template<typename ClassType> ClassType& get() { return static_cast<ClassType&>(*this);}
482
483 private:
484 template<typename X>
485 void link()
486 {
487 }
488
489 template<typename X, typename Y, typename ...Z>
490 void link()
491 {
492 static_assert(isStructureChainValid<X,Y>(), "The structure chain is not valid!");
493 X& x = static_cast<X&>(*this);
494 Y& y = static_cast<Y&>(*this);
495 x.pNext = &y;
496 link<Y, Z...>();
497 }
498
499 template<typename X>
500 void linkAndCopy(StructureChain const &rhs)
501 {
502 static_cast<X&>(*this) = static_cast<X const &>(rhs);
503 }
504
505 template<typename X, typename Y, typename ...Z>
506 void linkAndCopy(StructureChain const &rhs)
507 {
508 static_assert(isStructureChainValid<X,Y>(), "The structure chain is not valid!");
509 X& x = static_cast<X&>(*this);
510 Y& y = static_cast<Y&>(*this);
511 x = static_cast<X const &>(rhs);
512 x.pNext = &y;
513 linkAndCopy<Y, Z...>(rhs);
514 }
515
516};
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600517 enum class Result
518 {
519 eSuccess = VK_SUCCESS,
520 eNotReady = VK_NOT_READY,
521 eTimeout = VK_TIMEOUT,
522 eEventSet = VK_EVENT_SET,
523 eEventReset = VK_EVENT_RESET,
524 eIncomplete = VK_INCOMPLETE,
525 eErrorOutOfHostMemory = VK_ERROR_OUT_OF_HOST_MEMORY,
526 eErrorOutOfDeviceMemory = VK_ERROR_OUT_OF_DEVICE_MEMORY,
527 eErrorInitializationFailed = VK_ERROR_INITIALIZATION_FAILED,
528 eErrorDeviceLost = VK_ERROR_DEVICE_LOST,
529 eErrorMemoryMapFailed = VK_ERROR_MEMORY_MAP_FAILED,
530 eErrorLayerNotPresent = VK_ERROR_LAYER_NOT_PRESENT,
531 eErrorExtensionNotPresent = VK_ERROR_EXTENSION_NOT_PRESENT,
532 eErrorFeatureNotPresent = VK_ERROR_FEATURE_NOT_PRESENT,
533 eErrorIncompatibleDriver = VK_ERROR_INCOMPATIBLE_DRIVER,
534 eErrorTooManyObjects = VK_ERROR_TOO_MANY_OBJECTS,
535 eErrorFormatNotSupported = VK_ERROR_FORMAT_NOT_SUPPORTED,
Lenny Komowebf33162016-08-26 14:10:08 -0600536 eErrorFragmentedPool = VK_ERROR_FRAGMENTED_POOL,
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600537 eErrorSurfaceLostKHR = VK_ERROR_SURFACE_LOST_KHR,
538 eErrorNativeWindowInUseKHR = VK_ERROR_NATIVE_WINDOW_IN_USE_KHR,
539 eSuboptimalKHR = VK_SUBOPTIMAL_KHR,
540 eErrorOutOfDateKHR = VK_ERROR_OUT_OF_DATE_KHR,
541 eErrorIncompatibleDisplayKHR = VK_ERROR_INCOMPATIBLE_DISPLAY_KHR,
542 eErrorValidationFailedEXT = VK_ERROR_VALIDATION_FAILED_EXT,
Mark Young39389872017-01-19 21:10:49 -0700543 eErrorInvalidShaderNV = VK_ERROR_INVALID_SHADER_NV,
Mark Young0f183a82017-02-28 09:58:04 -0700544 eErrorOutOfPoolMemoryKHR = VK_ERROR_OUT_OF_POOL_MEMORY_KHR,
Mark Youngabc2d6e2017-07-07 07:59:56 -0600545 eErrorInvalidExternalHandleKHR = VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600546 };
547
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700548 VULKAN_HPP_INLINE std::string to_string(Result value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600549 {
550 switch (value)
551 {
552 case Result::eSuccess: return "Success";
553 case Result::eNotReady: return "NotReady";
554 case Result::eTimeout: return "Timeout";
555 case Result::eEventSet: return "EventSet";
556 case Result::eEventReset: return "EventReset";
557 case Result::eIncomplete: return "Incomplete";
558 case Result::eErrorOutOfHostMemory: return "ErrorOutOfHostMemory";
559 case Result::eErrorOutOfDeviceMemory: return "ErrorOutOfDeviceMemory";
560 case Result::eErrorInitializationFailed: return "ErrorInitializationFailed";
561 case Result::eErrorDeviceLost: return "ErrorDeviceLost";
562 case Result::eErrorMemoryMapFailed: return "ErrorMemoryMapFailed";
563 case Result::eErrorLayerNotPresent: return "ErrorLayerNotPresent";
564 case Result::eErrorExtensionNotPresent: return "ErrorExtensionNotPresent";
565 case Result::eErrorFeatureNotPresent: return "ErrorFeatureNotPresent";
566 case Result::eErrorIncompatibleDriver: return "ErrorIncompatibleDriver";
567 case Result::eErrorTooManyObjects: return "ErrorTooManyObjects";
568 case Result::eErrorFormatNotSupported: return "ErrorFormatNotSupported";
Lenny Komowebf33162016-08-26 14:10:08 -0600569 case Result::eErrorFragmentedPool: return "ErrorFragmentedPool";
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600570 case Result::eErrorSurfaceLostKHR: return "ErrorSurfaceLostKHR";
571 case Result::eErrorNativeWindowInUseKHR: return "ErrorNativeWindowInUseKHR";
572 case Result::eSuboptimalKHR: return "SuboptimalKHR";
573 case Result::eErrorOutOfDateKHR: return "ErrorOutOfDateKHR";
574 case Result::eErrorIncompatibleDisplayKHR: return "ErrorIncompatibleDisplayKHR";
575 case Result::eErrorValidationFailedEXT: return "ErrorValidationFailedEXT";
576 case Result::eErrorInvalidShaderNV: return "ErrorInvalidShaderNV";
Mark Young39389872017-01-19 21:10:49 -0700577 case Result::eErrorOutOfPoolMemoryKHR: return "ErrorOutOfPoolMemoryKHR";
Mark Youngabc2d6e2017-07-07 07:59:56 -0600578 case Result::eErrorInvalidExternalHandleKHR: return "ErrorInvalidExternalHandleKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600579 default: return "invalid";
580 }
581 }
582
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -0600583#ifndef VULKAN_HPP_NO_EXCEPTIONS
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600584#if defined(_MSC_VER) && (_MSC_VER == 1800)
585# define noexcept _NOEXCEPT
586#endif
587
588 class ErrorCategoryImpl : public std::error_category
589 {
590 public:
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -0600591 virtual const char* name() const noexcept override { return "VULKAN_HPP_NAMESPACE::Result"; }
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600592 virtual std::string message(int ev) const override { return to_string(static_cast<Result>(ev)); }
593 };
594
595#if defined(_MSC_VER) && (_MSC_VER == 1800)
596# undef noexcept
597#endif
598
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700599 VULKAN_HPP_INLINE const std::error_category& errorCategory()
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600600 {
601 static ErrorCategoryImpl instance;
602 return instance;
603 }
604
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700605 VULKAN_HPP_INLINE std::error_code make_error_code(Result e)
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600606 {
607 return std::error_code(static_cast<int>(e), errorCategory());
608 }
609
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700610 VULKAN_HPP_INLINE std::error_condition make_error_condition(Result e)
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600611 {
612 return std::error_condition(static_cast<int>(e), errorCategory());
613 }
614
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600615#if defined(_MSC_VER) && (_MSC_VER == 1800)
616# define noexcept _NOEXCEPT
617#endif
618
619 class Error
620 {
621 public:
622 virtual ~Error() = default;
623
624 virtual const char* what() const noexcept = 0;
625 };
626
627 class LogicError : public Error, public std::logic_error
628 {
629 public:
630 explicit LogicError( const std::string& what )
631 : Error(), std::logic_error(what) {}
632 explicit LogicError( char const * what )
633 : Error(), std::logic_error(what) {}
634 virtual ~LogicError() = default;
635
636 virtual const char* what() const noexcept { return std::logic_error::what(); }
637 };
638
639 class SystemError : public Error, public std::system_error
640 {
641 public:
642 SystemError( std::error_code ec )
643 : Error(), std::system_error(ec) {}
644 SystemError( std::error_code ec, std::string const& what )
645 : Error(), std::system_error(ec, what) {}
646 SystemError( std::error_code ec, char const * what )
647 : Error(), std::system_error(ec, what) {}
648 SystemError( int ev, std::error_category const& ecat )
649 : Error(), std::system_error(ev, ecat) {}
650 SystemError( int ev, std::error_category const& ecat, std::string const& what)
651 : Error(), std::system_error(ev, ecat, what) {}
652 SystemError( int ev, std::error_category const& ecat, char const * what)
653 : Error(), std::system_error(ev, ecat, what) {}
654 virtual ~SystemError() = default;
655
656 virtual const char* what() const noexcept { return std::system_error::what(); }
657 };
658
659#if defined(_MSC_VER) && (_MSC_VER == 1800)
660# undef noexcept
661#endif
662
663 class OutOfHostMemoryError : public SystemError
664 {
665 public:
666 OutOfHostMemoryError( std::string const& message )
667 : SystemError( make_error_code( Result::eErrorOutOfHostMemory ), message ) {}
668 OutOfHostMemoryError( char const * message )
669 : SystemError( make_error_code( Result::eErrorOutOfHostMemory ), message ) {}
670 };
671 class OutOfDeviceMemoryError : public SystemError
672 {
673 public:
674 OutOfDeviceMemoryError( std::string const& message )
675 : SystemError( make_error_code( Result::eErrorOutOfDeviceMemory ), message ) {}
676 OutOfDeviceMemoryError( char const * message )
677 : SystemError( make_error_code( Result::eErrorOutOfDeviceMemory ), message ) {}
678 };
679 class InitializationFailedError : public SystemError
680 {
681 public:
682 InitializationFailedError( std::string const& message )
683 : SystemError( make_error_code( Result::eErrorInitializationFailed ), message ) {}
684 InitializationFailedError( char const * message )
685 : SystemError( make_error_code( Result::eErrorInitializationFailed ), message ) {}
686 };
687 class DeviceLostError : public SystemError
688 {
689 public:
690 DeviceLostError( std::string const& message )
691 : SystemError( make_error_code( Result::eErrorDeviceLost ), message ) {}
692 DeviceLostError( char const * message )
693 : SystemError( make_error_code( Result::eErrorDeviceLost ), message ) {}
694 };
695 class MemoryMapFailedError : public SystemError
696 {
697 public:
698 MemoryMapFailedError( std::string const& message )
699 : SystemError( make_error_code( Result::eErrorMemoryMapFailed ), message ) {}
700 MemoryMapFailedError( char const * message )
701 : SystemError( make_error_code( Result::eErrorMemoryMapFailed ), message ) {}
702 };
703 class LayerNotPresentError : public SystemError
704 {
705 public:
706 LayerNotPresentError( std::string const& message )
707 : SystemError( make_error_code( Result::eErrorLayerNotPresent ), message ) {}
708 LayerNotPresentError( char const * message )
709 : SystemError( make_error_code( Result::eErrorLayerNotPresent ), message ) {}
710 };
711 class ExtensionNotPresentError : public SystemError
712 {
713 public:
714 ExtensionNotPresentError( std::string const& message )
715 : SystemError( make_error_code( Result::eErrorExtensionNotPresent ), message ) {}
716 ExtensionNotPresentError( char const * message )
717 : SystemError( make_error_code( Result::eErrorExtensionNotPresent ), message ) {}
718 };
719 class FeatureNotPresentError : public SystemError
720 {
721 public:
722 FeatureNotPresentError( std::string const& message )
723 : SystemError( make_error_code( Result::eErrorFeatureNotPresent ), message ) {}
724 FeatureNotPresentError( char const * message )
725 : SystemError( make_error_code( Result::eErrorFeatureNotPresent ), message ) {}
726 };
727 class IncompatibleDriverError : public SystemError
728 {
729 public:
730 IncompatibleDriverError( std::string const& message )
731 : SystemError( make_error_code( Result::eErrorIncompatibleDriver ), message ) {}
732 IncompatibleDriverError( char const * message )
733 : SystemError( make_error_code( Result::eErrorIncompatibleDriver ), message ) {}
734 };
735 class TooManyObjectsError : public SystemError
736 {
737 public:
738 TooManyObjectsError( std::string const& message )
739 : SystemError( make_error_code( Result::eErrorTooManyObjects ), message ) {}
740 TooManyObjectsError( char const * message )
741 : SystemError( make_error_code( Result::eErrorTooManyObjects ), message ) {}
742 };
743 class FormatNotSupportedError : public SystemError
744 {
745 public:
746 FormatNotSupportedError( std::string const& message )
747 : SystemError( make_error_code( Result::eErrorFormatNotSupported ), message ) {}
748 FormatNotSupportedError( char const * message )
749 : SystemError( make_error_code( Result::eErrorFormatNotSupported ), message ) {}
750 };
751 class FragmentedPoolError : public SystemError
752 {
753 public:
754 FragmentedPoolError( std::string const& message )
755 : SystemError( make_error_code( Result::eErrorFragmentedPool ), message ) {}
756 FragmentedPoolError( char const * message )
757 : SystemError( make_error_code( Result::eErrorFragmentedPool ), message ) {}
758 };
759 class SurfaceLostKHRError : public SystemError
760 {
761 public:
762 SurfaceLostKHRError( std::string const& message )
763 : SystemError( make_error_code( Result::eErrorSurfaceLostKHR ), message ) {}
764 SurfaceLostKHRError( char const * message )
765 : SystemError( make_error_code( Result::eErrorSurfaceLostKHR ), message ) {}
766 };
767 class NativeWindowInUseKHRError : public SystemError
768 {
769 public:
770 NativeWindowInUseKHRError( std::string const& message )
771 : SystemError( make_error_code( Result::eErrorNativeWindowInUseKHR ), message ) {}
772 NativeWindowInUseKHRError( char const * message )
773 : SystemError( make_error_code( Result::eErrorNativeWindowInUseKHR ), message ) {}
774 };
775 class OutOfDateKHRError : public SystemError
776 {
777 public:
778 OutOfDateKHRError( std::string const& message )
779 : SystemError( make_error_code( Result::eErrorOutOfDateKHR ), message ) {}
780 OutOfDateKHRError( char const * message )
781 : SystemError( make_error_code( Result::eErrorOutOfDateKHR ), message ) {}
782 };
783 class IncompatibleDisplayKHRError : public SystemError
784 {
785 public:
786 IncompatibleDisplayKHRError( std::string const& message )
787 : SystemError( make_error_code( Result::eErrorIncompatibleDisplayKHR ), message ) {}
788 IncompatibleDisplayKHRError( char const * message )
789 : SystemError( make_error_code( Result::eErrorIncompatibleDisplayKHR ), message ) {}
790 };
791 class ValidationFailedEXTError : public SystemError
792 {
793 public:
794 ValidationFailedEXTError( std::string const& message )
795 : SystemError( make_error_code( Result::eErrorValidationFailedEXT ), message ) {}
796 ValidationFailedEXTError( char const * message )
797 : SystemError( make_error_code( Result::eErrorValidationFailedEXT ), message ) {}
798 };
799 class InvalidShaderNVError : public SystemError
800 {
801 public:
802 InvalidShaderNVError( std::string const& message )
803 : SystemError( make_error_code( Result::eErrorInvalidShaderNV ), message ) {}
804 InvalidShaderNVError( char const * message )
805 : SystemError( make_error_code( Result::eErrorInvalidShaderNV ), message ) {}
806 };
807 class OutOfPoolMemoryKHRError : public SystemError
808 {
809 public:
810 OutOfPoolMemoryKHRError( std::string const& message )
811 : SystemError( make_error_code( Result::eErrorOutOfPoolMemoryKHR ), message ) {}
812 OutOfPoolMemoryKHRError( char const * message )
813 : SystemError( make_error_code( Result::eErrorOutOfPoolMemoryKHR ), message ) {}
814 };
Mark Youngabc2d6e2017-07-07 07:59:56 -0600815 class InvalidExternalHandleKHRError : public SystemError
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600816 {
817 public:
Mark Youngabc2d6e2017-07-07 07:59:56 -0600818 InvalidExternalHandleKHRError( std::string const& message )
819 : SystemError( make_error_code( Result::eErrorInvalidExternalHandleKHR ), message ) {}
820 InvalidExternalHandleKHRError( char const * message )
821 : SystemError( make_error_code( Result::eErrorInvalidExternalHandleKHR ), message ) {}
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600822 };
823
824 VULKAN_HPP_INLINE void throwResultException( Result result, char const * message )
825 {
826 assert ( static_cast<long long int>(result) < 0 );
827 switch ( result )
828 {
829 case Result::eErrorOutOfHostMemory: throw OutOfHostMemoryError ( message );
830 case Result::eErrorOutOfDeviceMemory: throw OutOfDeviceMemoryError ( message );
831 case Result::eErrorInitializationFailed: throw InitializationFailedError ( message );
832 case Result::eErrorDeviceLost: throw DeviceLostError ( message );
833 case Result::eErrorMemoryMapFailed: throw MemoryMapFailedError ( message );
834 case Result::eErrorLayerNotPresent: throw LayerNotPresentError ( message );
835 case Result::eErrorExtensionNotPresent: throw ExtensionNotPresentError ( message );
836 case Result::eErrorFeatureNotPresent: throw FeatureNotPresentError ( message );
837 case Result::eErrorIncompatibleDriver: throw IncompatibleDriverError ( message );
838 case Result::eErrorTooManyObjects: throw TooManyObjectsError ( message );
839 case Result::eErrorFormatNotSupported: throw FormatNotSupportedError ( message );
840 case Result::eErrorFragmentedPool: throw FragmentedPoolError ( message );
841 case Result::eErrorSurfaceLostKHR: throw SurfaceLostKHRError ( message );
842 case Result::eErrorNativeWindowInUseKHR: throw NativeWindowInUseKHRError ( message );
843 case Result::eErrorOutOfDateKHR: throw OutOfDateKHRError ( message );
844 case Result::eErrorIncompatibleDisplayKHR: throw IncompatibleDisplayKHRError ( message );
845 case Result::eErrorValidationFailedEXT: throw ValidationFailedEXTError ( message );
846 case Result::eErrorInvalidShaderNV: throw InvalidShaderNVError ( message );
847 case Result::eErrorOutOfPoolMemoryKHR: throw OutOfPoolMemoryKHRError ( message );
Mark Youngabc2d6e2017-07-07 07:59:56 -0600848 case Result::eErrorInvalidExternalHandleKHR: throw InvalidExternalHandleKHRError ( message );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600849 default: throw SystemError( make_error_code( result ) );
850 }
851 }
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -0600852#endif
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -0600853} // namespace VULKAN_HPP_NAMESPACE
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600854
855namespace std
856{
857 template <>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -0600858 struct is_error_code_enum<VULKAN_HPP_NAMESPACE::Result> : public true_type
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600859 {};
860}
861
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -0600862namespace VULKAN_HPP_NAMESPACE
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600863{
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600864
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600865 template <typename T>
866 struct ResultValue
867 {
868 ResultValue( Result r, T & v )
869 : result( r )
870 , value( v )
871 {}
872
873 Result result;
874 T value;
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700875
876 operator std::tuple<Result&, T&>() { return std::tuple<Result&, T&>(result, value); }
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600877 };
878
879 template <typename T>
880 struct ResultValueType
881 {
882#ifdef VULKAN_HPP_NO_EXCEPTIONS
883 typedef ResultValue<T> type;
884#else
885 typedef T type;
886#endif
887 };
888
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600889 template <>
890 struct ResultValueType<void>
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600891 {
892#ifdef VULKAN_HPP_NO_EXCEPTIONS
893 typedef Result type;
894#else
895 typedef void type;
896#endif
897 };
898
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700899 VULKAN_HPP_INLINE ResultValueType<void>::type createResultValue( Result result, char const * message )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600900 {
901#ifdef VULKAN_HPP_NO_EXCEPTIONS
902 assert( result == Result::eSuccess );
903 return result;
904#else
905 if ( result != Result::eSuccess )
906 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600907 throwResultException( result, message );
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600908 }
909#endif
910 }
911
912 template <typename T>
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700913 VULKAN_HPP_INLINE typename ResultValueType<T>::type createResultValue( Result result, T & data, char const * message )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600914 {
915#ifdef VULKAN_HPP_NO_EXCEPTIONS
916 assert( result == Result::eSuccess );
917 return ResultValue<T>( result, data );
918#else
919 if ( result != Result::eSuccess )
920 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600921 throwResultException( result, message );
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600922 }
923 return data;
924#endif
925 }
926
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700927 VULKAN_HPP_INLINE Result createResultValue( Result result, char const * message, std::initializer_list<Result> successCodes )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600928 {
929#ifdef VULKAN_HPP_NO_EXCEPTIONS
930 assert( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() );
931#else
932 if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() )
933 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600934 throwResultException( result, message );
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600935 }
936#endif
937 return result;
938 }
939
940 template <typename T>
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700941 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 -0600942 {
943#ifdef VULKAN_HPP_NO_EXCEPTIONS
944 assert( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() );
945#else
946 if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() )
947 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600948 throwResultException( result, message );
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600949 }
950#endif
951 return ResultValue<T>( result, data );
952 }
953
954 using SampleMask = uint32_t;
955
956 using Bool32 = uint32_t;
957
958 using DeviceSize = uint64_t;
959
960 enum class FramebufferCreateFlagBits
961 {
962 };
963
964 using FramebufferCreateFlags = Flags<FramebufferCreateFlagBits, VkFramebufferCreateFlags>;
965
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600966 enum class QueryPoolCreateFlagBits
967 {
968 };
969
970 using QueryPoolCreateFlags = Flags<QueryPoolCreateFlagBits, VkQueryPoolCreateFlags>;
971
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600972 enum class RenderPassCreateFlagBits
973 {
974 };
975
976 using RenderPassCreateFlags = Flags<RenderPassCreateFlagBits, VkRenderPassCreateFlags>;
977
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600978 enum class SamplerCreateFlagBits
979 {
980 };
981
982 using SamplerCreateFlags = Flags<SamplerCreateFlagBits, VkSamplerCreateFlags>;
983
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600984 enum class PipelineLayoutCreateFlagBits
985 {
986 };
987
988 using PipelineLayoutCreateFlags = Flags<PipelineLayoutCreateFlagBits, VkPipelineLayoutCreateFlags>;
989
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600990 enum class PipelineCacheCreateFlagBits
991 {
992 };
993
994 using PipelineCacheCreateFlags = Flags<PipelineCacheCreateFlagBits, VkPipelineCacheCreateFlags>;
995
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600996 enum class PipelineDepthStencilStateCreateFlagBits
997 {
998 };
999
1000 using PipelineDepthStencilStateCreateFlags = Flags<PipelineDepthStencilStateCreateFlagBits, VkPipelineDepthStencilStateCreateFlags>;
1001
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001002 enum class PipelineDynamicStateCreateFlagBits
1003 {
1004 };
1005
1006 using PipelineDynamicStateCreateFlags = Flags<PipelineDynamicStateCreateFlagBits, VkPipelineDynamicStateCreateFlags>;
1007
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001008 enum class PipelineColorBlendStateCreateFlagBits
1009 {
1010 };
1011
1012 using PipelineColorBlendStateCreateFlags = Flags<PipelineColorBlendStateCreateFlagBits, VkPipelineColorBlendStateCreateFlags>;
1013
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001014 enum class PipelineMultisampleStateCreateFlagBits
1015 {
1016 };
1017
1018 using PipelineMultisampleStateCreateFlags = Flags<PipelineMultisampleStateCreateFlagBits, VkPipelineMultisampleStateCreateFlags>;
1019
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001020 enum class PipelineRasterizationStateCreateFlagBits
1021 {
1022 };
1023
1024 using PipelineRasterizationStateCreateFlags = Flags<PipelineRasterizationStateCreateFlagBits, VkPipelineRasterizationStateCreateFlags>;
1025
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001026 enum class PipelineViewportStateCreateFlagBits
1027 {
1028 };
1029
1030 using PipelineViewportStateCreateFlags = Flags<PipelineViewportStateCreateFlagBits, VkPipelineViewportStateCreateFlags>;
1031
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001032 enum class PipelineTessellationStateCreateFlagBits
1033 {
1034 };
1035
1036 using PipelineTessellationStateCreateFlags = Flags<PipelineTessellationStateCreateFlagBits, VkPipelineTessellationStateCreateFlags>;
1037
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001038 enum class PipelineInputAssemblyStateCreateFlagBits
1039 {
1040 };
1041
1042 using PipelineInputAssemblyStateCreateFlags = Flags<PipelineInputAssemblyStateCreateFlagBits, VkPipelineInputAssemblyStateCreateFlags>;
1043
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001044 enum class PipelineVertexInputStateCreateFlagBits
1045 {
1046 };
1047
1048 using PipelineVertexInputStateCreateFlags = Flags<PipelineVertexInputStateCreateFlagBits, VkPipelineVertexInputStateCreateFlags>;
1049
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001050 enum class PipelineShaderStageCreateFlagBits
1051 {
1052 };
1053
1054 using PipelineShaderStageCreateFlags = Flags<PipelineShaderStageCreateFlagBits, VkPipelineShaderStageCreateFlags>;
1055
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001056 enum class BufferViewCreateFlagBits
1057 {
1058 };
1059
1060 using BufferViewCreateFlags = Flags<BufferViewCreateFlagBits, VkBufferViewCreateFlags>;
1061
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001062 enum class InstanceCreateFlagBits
1063 {
1064 };
1065
1066 using InstanceCreateFlags = Flags<InstanceCreateFlagBits, VkInstanceCreateFlags>;
1067
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001068 enum class DeviceCreateFlagBits
1069 {
1070 };
1071
1072 using DeviceCreateFlags = Flags<DeviceCreateFlagBits, VkDeviceCreateFlags>;
1073
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001074 enum class DeviceQueueCreateFlagBits
1075 {
1076 };
1077
1078 using DeviceQueueCreateFlags = Flags<DeviceQueueCreateFlagBits, VkDeviceQueueCreateFlags>;
1079
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001080 enum class ImageViewCreateFlagBits
1081 {
1082 };
1083
1084 using ImageViewCreateFlags = Flags<ImageViewCreateFlagBits, VkImageViewCreateFlags>;
1085
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001086 enum class SemaphoreCreateFlagBits
1087 {
1088 };
1089
1090 using SemaphoreCreateFlags = Flags<SemaphoreCreateFlagBits, VkSemaphoreCreateFlags>;
1091
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001092 enum class ShaderModuleCreateFlagBits
1093 {
1094 };
1095
1096 using ShaderModuleCreateFlags = Flags<ShaderModuleCreateFlagBits, VkShaderModuleCreateFlags>;
1097
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001098 enum class EventCreateFlagBits
1099 {
1100 };
1101
1102 using EventCreateFlags = Flags<EventCreateFlagBits, VkEventCreateFlags>;
1103
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001104 enum class MemoryMapFlagBits
1105 {
1106 };
1107
1108 using MemoryMapFlags = Flags<MemoryMapFlagBits, VkMemoryMapFlags>;
1109
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001110 enum class DescriptorPoolResetFlagBits
1111 {
1112 };
1113
1114 using DescriptorPoolResetFlags = Flags<DescriptorPoolResetFlagBits, VkDescriptorPoolResetFlags>;
1115
Mark Young0f183a82017-02-28 09:58:04 -07001116 enum class DescriptorUpdateTemplateCreateFlagBitsKHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001117 {
1118 };
1119
Mark Young0f183a82017-02-28 09:58:04 -07001120 using DescriptorUpdateTemplateCreateFlagsKHR = Flags<DescriptorUpdateTemplateCreateFlagBitsKHR, VkDescriptorUpdateTemplateCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001121
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001122 enum class DisplayModeCreateFlagBitsKHR
1123 {
1124 };
1125
1126 using DisplayModeCreateFlagsKHR = Flags<DisplayModeCreateFlagBitsKHR, VkDisplayModeCreateFlagsKHR>;
1127
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001128 enum class DisplaySurfaceCreateFlagBitsKHR
1129 {
1130 };
1131
1132 using DisplaySurfaceCreateFlagsKHR = Flags<DisplaySurfaceCreateFlagBitsKHR, VkDisplaySurfaceCreateFlagsKHR>;
1133
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001134#ifdef VK_USE_PLATFORM_ANDROID_KHR
1135 enum class AndroidSurfaceCreateFlagBitsKHR
1136 {
1137 };
1138#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
1139
1140#ifdef VK_USE_PLATFORM_ANDROID_KHR
1141 using AndroidSurfaceCreateFlagsKHR = Flags<AndroidSurfaceCreateFlagBitsKHR, VkAndroidSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001142#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
1143
1144#ifdef VK_USE_PLATFORM_MIR_KHR
1145 enum class MirSurfaceCreateFlagBitsKHR
1146 {
1147 };
1148#endif /*VK_USE_PLATFORM_MIR_KHR*/
1149
1150#ifdef VK_USE_PLATFORM_MIR_KHR
1151 using MirSurfaceCreateFlagsKHR = Flags<MirSurfaceCreateFlagBitsKHR, VkMirSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001152#endif /*VK_USE_PLATFORM_MIR_KHR*/
1153
Mark Young39389872017-01-19 21:10:49 -07001154#ifdef VK_USE_PLATFORM_VI_NN
1155 enum class ViSurfaceCreateFlagBitsNN
1156 {
1157 };
1158#endif /*VK_USE_PLATFORM_VI_NN*/
1159
1160#ifdef VK_USE_PLATFORM_VI_NN
1161 using ViSurfaceCreateFlagsNN = Flags<ViSurfaceCreateFlagBitsNN, VkViSurfaceCreateFlagsNN>;
Mark Young39389872017-01-19 21:10:49 -07001162#endif /*VK_USE_PLATFORM_VI_NN*/
1163
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001164#ifdef VK_USE_PLATFORM_WAYLAND_KHR
1165 enum class WaylandSurfaceCreateFlagBitsKHR
1166 {
1167 };
1168#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
1169
1170#ifdef VK_USE_PLATFORM_WAYLAND_KHR
1171 using WaylandSurfaceCreateFlagsKHR = Flags<WaylandSurfaceCreateFlagBitsKHR, VkWaylandSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001172#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
1173
1174#ifdef VK_USE_PLATFORM_WIN32_KHR
1175 enum class Win32SurfaceCreateFlagBitsKHR
1176 {
1177 };
1178#endif /*VK_USE_PLATFORM_WIN32_KHR*/
1179
1180#ifdef VK_USE_PLATFORM_WIN32_KHR
1181 using Win32SurfaceCreateFlagsKHR = Flags<Win32SurfaceCreateFlagBitsKHR, VkWin32SurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001182#endif /*VK_USE_PLATFORM_WIN32_KHR*/
1183
1184#ifdef VK_USE_PLATFORM_XLIB_KHR
1185 enum class XlibSurfaceCreateFlagBitsKHR
1186 {
1187 };
1188#endif /*VK_USE_PLATFORM_XLIB_KHR*/
1189
1190#ifdef VK_USE_PLATFORM_XLIB_KHR
1191 using XlibSurfaceCreateFlagsKHR = Flags<XlibSurfaceCreateFlagBitsKHR, VkXlibSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001192#endif /*VK_USE_PLATFORM_XLIB_KHR*/
1193
1194#ifdef VK_USE_PLATFORM_XCB_KHR
1195 enum class XcbSurfaceCreateFlagBitsKHR
1196 {
1197 };
1198#endif /*VK_USE_PLATFORM_XCB_KHR*/
1199
1200#ifdef VK_USE_PLATFORM_XCB_KHR
1201 using XcbSurfaceCreateFlagsKHR = Flags<XcbSurfaceCreateFlagBitsKHR, VkXcbSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001202#endif /*VK_USE_PLATFORM_XCB_KHR*/
1203
Mark Young0f183a82017-02-28 09:58:04 -07001204#ifdef VK_USE_PLATFORM_IOS_MVK
1205 enum class IOSSurfaceCreateFlagBitsMVK
1206 {
1207 };
1208#endif /*VK_USE_PLATFORM_IOS_MVK*/
1209
1210#ifdef VK_USE_PLATFORM_IOS_MVK
1211 using IOSSurfaceCreateFlagsMVK = Flags<IOSSurfaceCreateFlagBitsMVK, VkIOSSurfaceCreateFlagsMVK>;
Mark Young0f183a82017-02-28 09:58:04 -07001212#endif /*VK_USE_PLATFORM_IOS_MVK*/
1213
1214#ifdef VK_USE_PLATFORM_MACOS_MVK
1215 enum class MacOSSurfaceCreateFlagBitsMVK
1216 {
1217 };
1218#endif /*VK_USE_PLATFORM_MACOS_MVK*/
1219
1220#ifdef VK_USE_PLATFORM_MACOS_MVK
1221 using MacOSSurfaceCreateFlagsMVK = Flags<MacOSSurfaceCreateFlagBitsMVK, VkMacOSSurfaceCreateFlagsMVK>;
Mark Young0f183a82017-02-28 09:58:04 -07001222#endif /*VK_USE_PLATFORM_MACOS_MVK*/
1223
Mark Young39389872017-01-19 21:10:49 -07001224 enum class CommandPoolTrimFlagBitsKHR
1225 {
1226 };
1227
1228 using CommandPoolTrimFlagsKHR = Flags<CommandPoolTrimFlagBitsKHR, VkCommandPoolTrimFlagsKHR>;
1229
Mark Young0f183a82017-02-28 09:58:04 -07001230 enum class PipelineViewportSwizzleStateCreateFlagBitsNV
1231 {
1232 };
1233
1234 using PipelineViewportSwizzleStateCreateFlagsNV = Flags<PipelineViewportSwizzleStateCreateFlagBitsNV, VkPipelineViewportSwizzleStateCreateFlagsNV>;
1235
Mark Young0f183a82017-02-28 09:58:04 -07001236 enum class PipelineDiscardRectangleStateCreateFlagBitsEXT
1237 {
1238 };
1239
1240 using PipelineDiscardRectangleStateCreateFlagsEXT = Flags<PipelineDiscardRectangleStateCreateFlagBitsEXT, VkPipelineDiscardRectangleStateCreateFlagsEXT>;
1241
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06001242 enum class PipelineCoverageToColorStateCreateFlagBitsNV
1243 {
1244 };
1245
1246 using PipelineCoverageToColorStateCreateFlagsNV = Flags<PipelineCoverageToColorStateCreateFlagBitsNV, VkPipelineCoverageToColorStateCreateFlagsNV>;
1247
1248 enum class PipelineCoverageModulationStateCreateFlagBitsNV
1249 {
1250 };
1251
1252 using PipelineCoverageModulationStateCreateFlagsNV = Flags<PipelineCoverageModulationStateCreateFlagBitsNV, VkPipelineCoverageModulationStateCreateFlagsNV>;
1253
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06001254 enum class ValidationCacheCreateFlagBitsEXT
1255 {
1256 };
1257
1258 using ValidationCacheCreateFlagsEXT = Flags<ValidationCacheCreateFlagBitsEXT, VkValidationCacheCreateFlagsEXT>;
1259
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001260 class DeviceMemory
1261 {
1262 public:
1263 DeviceMemory()
1264 : m_deviceMemory(VK_NULL_HANDLE)
1265 {}
1266
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001267 DeviceMemory( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001268 : m_deviceMemory(VK_NULL_HANDLE)
1269 {}
1270
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001271 VULKAN_HPP_TYPESAFE_EXPLICIT DeviceMemory( VkDeviceMemory deviceMemory )
1272 : m_deviceMemory( deviceMemory )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001273 {}
1274
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001275#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001276 DeviceMemory & operator=(VkDeviceMemory deviceMemory)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001277 {
1278 m_deviceMemory = deviceMemory;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001279 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001280 }
1281#endif
1282
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001283 DeviceMemory & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001284 {
1285 m_deviceMemory = VK_NULL_HANDLE;
1286 return *this;
1287 }
1288
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001289 bool operator==( DeviceMemory const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001290 {
1291 return m_deviceMemory == rhs.m_deviceMemory;
1292 }
1293
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001294 bool operator!=(DeviceMemory const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001295 {
1296 return m_deviceMemory != rhs.m_deviceMemory;
1297 }
1298
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001299 bool operator<(DeviceMemory const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001300 {
1301 return m_deviceMemory < rhs.m_deviceMemory;
1302 }
1303
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001304
1305
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001306 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDeviceMemory() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001307 {
1308 return m_deviceMemory;
1309 }
1310
1311 explicit operator bool() const
1312 {
1313 return m_deviceMemory != VK_NULL_HANDLE;
1314 }
1315
1316 bool operator!() const
1317 {
1318 return m_deviceMemory == VK_NULL_HANDLE;
1319 }
1320
1321 private:
1322 VkDeviceMemory m_deviceMemory;
1323 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001324
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001325 static_assert( sizeof( DeviceMemory ) == sizeof( VkDeviceMemory ), "handle and wrapper have different size!" );
1326
1327 class CommandPool
1328 {
1329 public:
1330 CommandPool()
1331 : m_commandPool(VK_NULL_HANDLE)
1332 {}
1333
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001334 CommandPool( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001335 : m_commandPool(VK_NULL_HANDLE)
1336 {}
1337
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001338 VULKAN_HPP_TYPESAFE_EXPLICIT CommandPool( VkCommandPool commandPool )
1339 : m_commandPool( commandPool )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001340 {}
1341
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001342#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001343 CommandPool & operator=(VkCommandPool commandPool)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001344 {
1345 m_commandPool = commandPool;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001346 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001347 }
1348#endif
1349
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001350 CommandPool & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001351 {
1352 m_commandPool = VK_NULL_HANDLE;
1353 return *this;
1354 }
1355
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001356 bool operator==( CommandPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001357 {
1358 return m_commandPool == rhs.m_commandPool;
1359 }
1360
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001361 bool operator!=(CommandPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001362 {
1363 return m_commandPool != rhs.m_commandPool;
1364 }
1365
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001366 bool operator<(CommandPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001367 {
1368 return m_commandPool < rhs.m_commandPool;
1369 }
1370
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001371
1372
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001373 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandPool() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001374 {
1375 return m_commandPool;
1376 }
1377
1378 explicit operator bool() const
1379 {
1380 return m_commandPool != VK_NULL_HANDLE;
1381 }
1382
1383 bool operator!() const
1384 {
1385 return m_commandPool == VK_NULL_HANDLE;
1386 }
1387
1388 private:
1389 VkCommandPool m_commandPool;
1390 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001391
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001392 static_assert( sizeof( CommandPool ) == sizeof( VkCommandPool ), "handle and wrapper have different size!" );
1393
1394 class Buffer
1395 {
1396 public:
1397 Buffer()
1398 : m_buffer(VK_NULL_HANDLE)
1399 {}
1400
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001401 Buffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001402 : m_buffer(VK_NULL_HANDLE)
1403 {}
1404
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001405 VULKAN_HPP_TYPESAFE_EXPLICIT Buffer( VkBuffer buffer )
1406 : m_buffer( buffer )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001407 {}
1408
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001409#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001410 Buffer & operator=(VkBuffer buffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001411 {
1412 m_buffer = buffer;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001413 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001414 }
1415#endif
1416
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001417 Buffer & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001418 {
1419 m_buffer = VK_NULL_HANDLE;
1420 return *this;
1421 }
1422
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001423 bool operator==( Buffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001424 {
1425 return m_buffer == rhs.m_buffer;
1426 }
1427
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001428 bool operator!=(Buffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001429 {
1430 return m_buffer != rhs.m_buffer;
1431 }
1432
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001433 bool operator<(Buffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001434 {
1435 return m_buffer < rhs.m_buffer;
1436 }
1437
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001438
1439
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001440 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkBuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001441 {
1442 return m_buffer;
1443 }
1444
1445 explicit operator bool() const
1446 {
1447 return m_buffer != VK_NULL_HANDLE;
1448 }
1449
1450 bool operator!() const
1451 {
1452 return m_buffer == VK_NULL_HANDLE;
1453 }
1454
1455 private:
1456 VkBuffer m_buffer;
1457 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001458
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001459 static_assert( sizeof( Buffer ) == sizeof( VkBuffer ), "handle and wrapper have different size!" );
1460
1461 class BufferView
1462 {
1463 public:
1464 BufferView()
1465 : m_bufferView(VK_NULL_HANDLE)
1466 {}
1467
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001468 BufferView( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001469 : m_bufferView(VK_NULL_HANDLE)
1470 {}
1471
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001472 VULKAN_HPP_TYPESAFE_EXPLICIT BufferView( VkBufferView bufferView )
1473 : m_bufferView( bufferView )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001474 {}
1475
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001476#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001477 BufferView & operator=(VkBufferView bufferView)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001478 {
1479 m_bufferView = bufferView;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001480 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001481 }
1482#endif
1483
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001484 BufferView & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001485 {
1486 m_bufferView = VK_NULL_HANDLE;
1487 return *this;
1488 }
1489
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001490 bool operator==( BufferView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001491 {
1492 return m_bufferView == rhs.m_bufferView;
1493 }
1494
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001495 bool operator!=(BufferView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001496 {
1497 return m_bufferView != rhs.m_bufferView;
1498 }
1499
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001500 bool operator<(BufferView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001501 {
1502 return m_bufferView < rhs.m_bufferView;
1503 }
1504
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001505
1506
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001507 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkBufferView() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001508 {
1509 return m_bufferView;
1510 }
1511
1512 explicit operator bool() const
1513 {
1514 return m_bufferView != VK_NULL_HANDLE;
1515 }
1516
1517 bool operator!() const
1518 {
1519 return m_bufferView == VK_NULL_HANDLE;
1520 }
1521
1522 private:
1523 VkBufferView m_bufferView;
1524 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001525
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001526 static_assert( sizeof( BufferView ) == sizeof( VkBufferView ), "handle and wrapper have different size!" );
1527
1528 class Image
1529 {
1530 public:
1531 Image()
1532 : m_image(VK_NULL_HANDLE)
1533 {}
1534
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001535 Image( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001536 : m_image(VK_NULL_HANDLE)
1537 {}
1538
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001539 VULKAN_HPP_TYPESAFE_EXPLICIT Image( VkImage image )
1540 : m_image( image )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001541 {}
1542
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001543#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001544 Image & operator=(VkImage image)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001545 {
1546 m_image = image;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001547 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001548 }
1549#endif
1550
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001551 Image & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001552 {
1553 m_image = VK_NULL_HANDLE;
1554 return *this;
1555 }
1556
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001557 bool operator==( Image const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001558 {
1559 return m_image == rhs.m_image;
1560 }
1561
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001562 bool operator!=(Image const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001563 {
1564 return m_image != rhs.m_image;
1565 }
1566
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001567 bool operator<(Image const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001568 {
1569 return m_image < rhs.m_image;
1570 }
1571
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001572
1573
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001574 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkImage() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001575 {
1576 return m_image;
1577 }
1578
1579 explicit operator bool() const
1580 {
1581 return m_image != VK_NULL_HANDLE;
1582 }
1583
1584 bool operator!() const
1585 {
1586 return m_image == VK_NULL_HANDLE;
1587 }
1588
1589 private:
1590 VkImage m_image;
1591 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001592
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001593 static_assert( sizeof( Image ) == sizeof( VkImage ), "handle and wrapper have different size!" );
1594
1595 class ImageView
1596 {
1597 public:
1598 ImageView()
1599 : m_imageView(VK_NULL_HANDLE)
1600 {}
1601
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001602 ImageView( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001603 : m_imageView(VK_NULL_HANDLE)
1604 {}
1605
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001606 VULKAN_HPP_TYPESAFE_EXPLICIT ImageView( VkImageView imageView )
1607 : m_imageView( imageView )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001608 {}
1609
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001610#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001611 ImageView & operator=(VkImageView imageView)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001612 {
1613 m_imageView = imageView;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001614 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001615 }
1616#endif
1617
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001618 ImageView & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001619 {
1620 m_imageView = VK_NULL_HANDLE;
1621 return *this;
1622 }
1623
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001624 bool operator==( ImageView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001625 {
1626 return m_imageView == rhs.m_imageView;
1627 }
1628
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001629 bool operator!=(ImageView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001630 {
1631 return m_imageView != rhs.m_imageView;
1632 }
1633
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001634 bool operator<(ImageView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001635 {
1636 return m_imageView < rhs.m_imageView;
1637 }
1638
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001639
1640
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001641 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkImageView() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001642 {
1643 return m_imageView;
1644 }
1645
1646 explicit operator bool() const
1647 {
1648 return m_imageView != VK_NULL_HANDLE;
1649 }
1650
1651 bool operator!() const
1652 {
1653 return m_imageView == VK_NULL_HANDLE;
1654 }
1655
1656 private:
1657 VkImageView m_imageView;
1658 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001659
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001660 static_assert( sizeof( ImageView ) == sizeof( VkImageView ), "handle and wrapper have different size!" );
1661
1662 class ShaderModule
1663 {
1664 public:
1665 ShaderModule()
1666 : m_shaderModule(VK_NULL_HANDLE)
1667 {}
1668
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001669 ShaderModule( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001670 : m_shaderModule(VK_NULL_HANDLE)
1671 {}
1672
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001673 VULKAN_HPP_TYPESAFE_EXPLICIT ShaderModule( VkShaderModule shaderModule )
1674 : m_shaderModule( shaderModule )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001675 {}
1676
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001677#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001678 ShaderModule & operator=(VkShaderModule shaderModule)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001679 {
1680 m_shaderModule = shaderModule;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001681 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001682 }
1683#endif
1684
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001685 ShaderModule & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001686 {
1687 m_shaderModule = VK_NULL_HANDLE;
1688 return *this;
1689 }
1690
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001691 bool operator==( ShaderModule const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001692 {
1693 return m_shaderModule == rhs.m_shaderModule;
1694 }
1695
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001696 bool operator!=(ShaderModule const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001697 {
1698 return m_shaderModule != rhs.m_shaderModule;
1699 }
1700
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001701 bool operator<(ShaderModule const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001702 {
1703 return m_shaderModule < rhs.m_shaderModule;
1704 }
1705
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001706
1707
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001708 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkShaderModule() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001709 {
1710 return m_shaderModule;
1711 }
1712
1713 explicit operator bool() const
1714 {
1715 return m_shaderModule != VK_NULL_HANDLE;
1716 }
1717
1718 bool operator!() const
1719 {
1720 return m_shaderModule == VK_NULL_HANDLE;
1721 }
1722
1723 private:
1724 VkShaderModule m_shaderModule;
1725 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001726
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001727 static_assert( sizeof( ShaderModule ) == sizeof( VkShaderModule ), "handle and wrapper have different size!" );
1728
1729 class Pipeline
1730 {
1731 public:
1732 Pipeline()
1733 : m_pipeline(VK_NULL_HANDLE)
1734 {}
1735
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001736 Pipeline( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001737 : m_pipeline(VK_NULL_HANDLE)
1738 {}
1739
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001740 VULKAN_HPP_TYPESAFE_EXPLICIT Pipeline( VkPipeline pipeline )
1741 : m_pipeline( pipeline )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001742 {}
1743
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001744#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001745 Pipeline & operator=(VkPipeline pipeline)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001746 {
1747 m_pipeline = pipeline;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001748 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001749 }
1750#endif
1751
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001752 Pipeline & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001753 {
1754 m_pipeline = VK_NULL_HANDLE;
1755 return *this;
1756 }
1757
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001758 bool operator==( Pipeline const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001759 {
1760 return m_pipeline == rhs.m_pipeline;
1761 }
1762
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001763 bool operator!=(Pipeline const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001764 {
1765 return m_pipeline != rhs.m_pipeline;
1766 }
1767
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001768 bool operator<(Pipeline const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001769 {
1770 return m_pipeline < rhs.m_pipeline;
1771 }
1772
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001773
1774
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001775 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipeline() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001776 {
1777 return m_pipeline;
1778 }
1779
1780 explicit operator bool() const
1781 {
1782 return m_pipeline != VK_NULL_HANDLE;
1783 }
1784
1785 bool operator!() const
1786 {
1787 return m_pipeline == VK_NULL_HANDLE;
1788 }
1789
1790 private:
1791 VkPipeline m_pipeline;
1792 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001793
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001794 static_assert( sizeof( Pipeline ) == sizeof( VkPipeline ), "handle and wrapper have different size!" );
1795
1796 class PipelineLayout
1797 {
1798 public:
1799 PipelineLayout()
1800 : m_pipelineLayout(VK_NULL_HANDLE)
1801 {}
1802
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001803 PipelineLayout( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001804 : m_pipelineLayout(VK_NULL_HANDLE)
1805 {}
1806
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001807 VULKAN_HPP_TYPESAFE_EXPLICIT PipelineLayout( VkPipelineLayout pipelineLayout )
1808 : m_pipelineLayout( pipelineLayout )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001809 {}
1810
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001811#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001812 PipelineLayout & operator=(VkPipelineLayout pipelineLayout)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001813 {
1814 m_pipelineLayout = pipelineLayout;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001815 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001816 }
1817#endif
1818
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001819 PipelineLayout & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001820 {
1821 m_pipelineLayout = VK_NULL_HANDLE;
1822 return *this;
1823 }
1824
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001825 bool operator==( PipelineLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001826 {
1827 return m_pipelineLayout == rhs.m_pipelineLayout;
1828 }
1829
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001830 bool operator!=(PipelineLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001831 {
1832 return m_pipelineLayout != rhs.m_pipelineLayout;
1833 }
1834
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001835 bool operator<(PipelineLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001836 {
1837 return m_pipelineLayout < rhs.m_pipelineLayout;
1838 }
1839
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001840
1841
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001842 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipelineLayout() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001843 {
1844 return m_pipelineLayout;
1845 }
1846
1847 explicit operator bool() const
1848 {
1849 return m_pipelineLayout != VK_NULL_HANDLE;
1850 }
1851
1852 bool operator!() const
1853 {
1854 return m_pipelineLayout == VK_NULL_HANDLE;
1855 }
1856
1857 private:
1858 VkPipelineLayout m_pipelineLayout;
1859 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001860
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001861 static_assert( sizeof( PipelineLayout ) == sizeof( VkPipelineLayout ), "handle and wrapper have different size!" );
1862
1863 class Sampler
1864 {
1865 public:
1866 Sampler()
1867 : m_sampler(VK_NULL_HANDLE)
1868 {}
1869
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001870 Sampler( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001871 : m_sampler(VK_NULL_HANDLE)
1872 {}
1873
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001874 VULKAN_HPP_TYPESAFE_EXPLICIT Sampler( VkSampler sampler )
1875 : m_sampler( sampler )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001876 {}
1877
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001878#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001879 Sampler & operator=(VkSampler sampler)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001880 {
1881 m_sampler = sampler;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001882 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001883 }
1884#endif
1885
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001886 Sampler & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001887 {
1888 m_sampler = VK_NULL_HANDLE;
1889 return *this;
1890 }
1891
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001892 bool operator==( Sampler const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001893 {
1894 return m_sampler == rhs.m_sampler;
1895 }
1896
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001897 bool operator!=(Sampler const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001898 {
1899 return m_sampler != rhs.m_sampler;
1900 }
1901
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001902 bool operator<(Sampler const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001903 {
1904 return m_sampler < rhs.m_sampler;
1905 }
1906
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001907
1908
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001909 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSampler() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001910 {
1911 return m_sampler;
1912 }
1913
1914 explicit operator bool() const
1915 {
1916 return m_sampler != VK_NULL_HANDLE;
1917 }
1918
1919 bool operator!() const
1920 {
1921 return m_sampler == VK_NULL_HANDLE;
1922 }
1923
1924 private:
1925 VkSampler m_sampler;
1926 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001927
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001928 static_assert( sizeof( Sampler ) == sizeof( VkSampler ), "handle and wrapper have different size!" );
1929
1930 class DescriptorSet
1931 {
1932 public:
1933 DescriptorSet()
1934 : m_descriptorSet(VK_NULL_HANDLE)
1935 {}
1936
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001937 DescriptorSet( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001938 : m_descriptorSet(VK_NULL_HANDLE)
1939 {}
1940
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001941 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorSet( VkDescriptorSet descriptorSet )
1942 : m_descriptorSet( descriptorSet )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001943 {}
1944
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001945#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001946 DescriptorSet & operator=(VkDescriptorSet descriptorSet)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001947 {
1948 m_descriptorSet = descriptorSet;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001949 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001950 }
1951#endif
1952
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001953 DescriptorSet & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001954 {
1955 m_descriptorSet = VK_NULL_HANDLE;
1956 return *this;
1957 }
1958
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001959 bool operator==( DescriptorSet const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001960 {
1961 return m_descriptorSet == rhs.m_descriptorSet;
1962 }
1963
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001964 bool operator!=(DescriptorSet const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001965 {
1966 return m_descriptorSet != rhs.m_descriptorSet;
1967 }
1968
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001969 bool operator<(DescriptorSet const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001970 {
1971 return m_descriptorSet < rhs.m_descriptorSet;
1972 }
1973
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001974
1975
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001976 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorSet() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001977 {
1978 return m_descriptorSet;
1979 }
1980
1981 explicit operator bool() const
1982 {
1983 return m_descriptorSet != VK_NULL_HANDLE;
1984 }
1985
1986 bool operator!() const
1987 {
1988 return m_descriptorSet == VK_NULL_HANDLE;
1989 }
1990
1991 private:
1992 VkDescriptorSet m_descriptorSet;
1993 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001994
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001995 static_assert( sizeof( DescriptorSet ) == sizeof( VkDescriptorSet ), "handle and wrapper have different size!" );
1996
1997 class DescriptorSetLayout
1998 {
1999 public:
2000 DescriptorSetLayout()
2001 : m_descriptorSetLayout(VK_NULL_HANDLE)
2002 {}
2003
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002004 DescriptorSetLayout( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002005 : m_descriptorSetLayout(VK_NULL_HANDLE)
2006 {}
2007
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002008 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorSetLayout( VkDescriptorSetLayout descriptorSetLayout )
2009 : m_descriptorSetLayout( descriptorSetLayout )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002010 {}
2011
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002012#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002013 DescriptorSetLayout & operator=(VkDescriptorSetLayout descriptorSetLayout)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002014 {
2015 m_descriptorSetLayout = descriptorSetLayout;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002016 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002017 }
2018#endif
2019
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002020 DescriptorSetLayout & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002021 {
2022 m_descriptorSetLayout = VK_NULL_HANDLE;
2023 return *this;
2024 }
2025
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002026 bool operator==( DescriptorSetLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002027 {
2028 return m_descriptorSetLayout == rhs.m_descriptorSetLayout;
2029 }
2030
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002031 bool operator!=(DescriptorSetLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002032 {
2033 return m_descriptorSetLayout != rhs.m_descriptorSetLayout;
2034 }
2035
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002036 bool operator<(DescriptorSetLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002037 {
2038 return m_descriptorSetLayout < rhs.m_descriptorSetLayout;
2039 }
2040
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002041
2042
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002043 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorSetLayout() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002044 {
2045 return m_descriptorSetLayout;
2046 }
2047
2048 explicit operator bool() const
2049 {
2050 return m_descriptorSetLayout != VK_NULL_HANDLE;
2051 }
2052
2053 bool operator!() const
2054 {
2055 return m_descriptorSetLayout == VK_NULL_HANDLE;
2056 }
2057
2058 private:
2059 VkDescriptorSetLayout m_descriptorSetLayout;
2060 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002061
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002062 static_assert( sizeof( DescriptorSetLayout ) == sizeof( VkDescriptorSetLayout ), "handle and wrapper have different size!" );
2063
2064 class DescriptorPool
2065 {
2066 public:
2067 DescriptorPool()
2068 : m_descriptorPool(VK_NULL_HANDLE)
2069 {}
2070
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002071 DescriptorPool( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002072 : m_descriptorPool(VK_NULL_HANDLE)
2073 {}
2074
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002075 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorPool( VkDescriptorPool descriptorPool )
2076 : m_descriptorPool( descriptorPool )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002077 {}
2078
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002079#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002080 DescriptorPool & operator=(VkDescriptorPool descriptorPool)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002081 {
2082 m_descriptorPool = descriptorPool;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002083 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002084 }
2085#endif
2086
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002087 DescriptorPool & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002088 {
2089 m_descriptorPool = VK_NULL_HANDLE;
2090 return *this;
2091 }
2092
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002093 bool operator==( DescriptorPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002094 {
2095 return m_descriptorPool == rhs.m_descriptorPool;
2096 }
2097
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002098 bool operator!=(DescriptorPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002099 {
2100 return m_descriptorPool != rhs.m_descriptorPool;
2101 }
2102
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002103 bool operator<(DescriptorPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002104 {
2105 return m_descriptorPool < rhs.m_descriptorPool;
2106 }
2107
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002108
2109
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002110 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorPool() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002111 {
2112 return m_descriptorPool;
2113 }
2114
2115 explicit operator bool() const
2116 {
2117 return m_descriptorPool != VK_NULL_HANDLE;
2118 }
2119
2120 bool operator!() const
2121 {
2122 return m_descriptorPool == VK_NULL_HANDLE;
2123 }
2124
2125 private:
2126 VkDescriptorPool m_descriptorPool;
2127 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002128
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002129 static_assert( sizeof( DescriptorPool ) == sizeof( VkDescriptorPool ), "handle and wrapper have different size!" );
2130
2131 class Fence
2132 {
2133 public:
2134 Fence()
2135 : m_fence(VK_NULL_HANDLE)
2136 {}
2137
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002138 Fence( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002139 : m_fence(VK_NULL_HANDLE)
2140 {}
2141
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002142 VULKAN_HPP_TYPESAFE_EXPLICIT Fence( VkFence fence )
2143 : m_fence( fence )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002144 {}
2145
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002146#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002147 Fence & operator=(VkFence fence)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002148 {
2149 m_fence = fence;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002150 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002151 }
2152#endif
2153
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002154 Fence & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002155 {
2156 m_fence = VK_NULL_HANDLE;
2157 return *this;
2158 }
2159
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002160 bool operator==( Fence const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002161 {
2162 return m_fence == rhs.m_fence;
2163 }
2164
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002165 bool operator!=(Fence const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002166 {
2167 return m_fence != rhs.m_fence;
2168 }
2169
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002170 bool operator<(Fence const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002171 {
2172 return m_fence < rhs.m_fence;
2173 }
2174
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002175
2176
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002177 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkFence() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002178 {
2179 return m_fence;
2180 }
2181
2182 explicit operator bool() const
2183 {
2184 return m_fence != VK_NULL_HANDLE;
2185 }
2186
2187 bool operator!() const
2188 {
2189 return m_fence == VK_NULL_HANDLE;
2190 }
2191
2192 private:
2193 VkFence m_fence;
2194 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002195
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002196 static_assert( sizeof( Fence ) == sizeof( VkFence ), "handle and wrapper have different size!" );
2197
2198 class Semaphore
2199 {
2200 public:
2201 Semaphore()
2202 : m_semaphore(VK_NULL_HANDLE)
2203 {}
2204
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002205 Semaphore( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002206 : m_semaphore(VK_NULL_HANDLE)
2207 {}
2208
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002209 VULKAN_HPP_TYPESAFE_EXPLICIT Semaphore( VkSemaphore semaphore )
2210 : m_semaphore( semaphore )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002211 {}
2212
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002213#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002214 Semaphore & operator=(VkSemaphore semaphore)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002215 {
2216 m_semaphore = semaphore;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002217 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002218 }
2219#endif
2220
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002221 Semaphore & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002222 {
2223 m_semaphore = VK_NULL_HANDLE;
2224 return *this;
2225 }
2226
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002227 bool operator==( Semaphore const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002228 {
2229 return m_semaphore == rhs.m_semaphore;
2230 }
2231
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002232 bool operator!=(Semaphore const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002233 {
2234 return m_semaphore != rhs.m_semaphore;
2235 }
2236
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002237 bool operator<(Semaphore const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002238 {
2239 return m_semaphore < rhs.m_semaphore;
2240 }
2241
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002242
2243
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002244 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSemaphore() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002245 {
2246 return m_semaphore;
2247 }
2248
2249 explicit operator bool() const
2250 {
2251 return m_semaphore != VK_NULL_HANDLE;
2252 }
2253
2254 bool operator!() const
2255 {
2256 return m_semaphore == VK_NULL_HANDLE;
2257 }
2258
2259 private:
2260 VkSemaphore m_semaphore;
2261 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002262
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002263 static_assert( sizeof( Semaphore ) == sizeof( VkSemaphore ), "handle and wrapper have different size!" );
2264
2265 class Event
2266 {
2267 public:
2268 Event()
2269 : m_event(VK_NULL_HANDLE)
2270 {}
2271
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002272 Event( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002273 : m_event(VK_NULL_HANDLE)
2274 {}
2275
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002276 VULKAN_HPP_TYPESAFE_EXPLICIT Event( VkEvent event )
2277 : m_event( event )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002278 {}
2279
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002280#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002281 Event & operator=(VkEvent event)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002282 {
2283 m_event = event;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002284 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002285 }
2286#endif
2287
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002288 Event & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002289 {
2290 m_event = VK_NULL_HANDLE;
2291 return *this;
2292 }
2293
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002294 bool operator==( Event const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002295 {
2296 return m_event == rhs.m_event;
2297 }
2298
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002299 bool operator!=(Event const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002300 {
2301 return m_event != rhs.m_event;
2302 }
2303
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002304 bool operator<(Event const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002305 {
2306 return m_event < rhs.m_event;
2307 }
2308
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002309
2310
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002311 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkEvent() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002312 {
2313 return m_event;
2314 }
2315
2316 explicit operator bool() const
2317 {
2318 return m_event != VK_NULL_HANDLE;
2319 }
2320
2321 bool operator!() const
2322 {
2323 return m_event == VK_NULL_HANDLE;
2324 }
2325
2326 private:
2327 VkEvent m_event;
2328 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002329
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002330 static_assert( sizeof( Event ) == sizeof( VkEvent ), "handle and wrapper have different size!" );
2331
2332 class QueryPool
2333 {
2334 public:
2335 QueryPool()
2336 : m_queryPool(VK_NULL_HANDLE)
2337 {}
2338
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002339 QueryPool( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002340 : m_queryPool(VK_NULL_HANDLE)
2341 {}
2342
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002343 VULKAN_HPP_TYPESAFE_EXPLICIT QueryPool( VkQueryPool queryPool )
2344 : m_queryPool( queryPool )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002345 {}
2346
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002347#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002348 QueryPool & operator=(VkQueryPool queryPool)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002349 {
2350 m_queryPool = queryPool;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002351 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002352 }
2353#endif
2354
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002355 QueryPool & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002356 {
2357 m_queryPool = VK_NULL_HANDLE;
2358 return *this;
2359 }
2360
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002361 bool operator==( QueryPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002362 {
2363 return m_queryPool == rhs.m_queryPool;
2364 }
2365
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002366 bool operator!=(QueryPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002367 {
2368 return m_queryPool != rhs.m_queryPool;
2369 }
2370
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002371 bool operator<(QueryPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002372 {
2373 return m_queryPool < rhs.m_queryPool;
2374 }
2375
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002376
2377
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002378 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueryPool() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002379 {
2380 return m_queryPool;
2381 }
2382
2383 explicit operator bool() const
2384 {
2385 return m_queryPool != VK_NULL_HANDLE;
2386 }
2387
2388 bool operator!() const
2389 {
2390 return m_queryPool == VK_NULL_HANDLE;
2391 }
2392
2393 private:
2394 VkQueryPool m_queryPool;
2395 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002396
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002397 static_assert( sizeof( QueryPool ) == sizeof( VkQueryPool ), "handle and wrapper have different size!" );
2398
2399 class Framebuffer
2400 {
2401 public:
2402 Framebuffer()
2403 : m_framebuffer(VK_NULL_HANDLE)
2404 {}
2405
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002406 Framebuffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002407 : m_framebuffer(VK_NULL_HANDLE)
2408 {}
2409
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002410 VULKAN_HPP_TYPESAFE_EXPLICIT Framebuffer( VkFramebuffer framebuffer )
2411 : m_framebuffer( framebuffer )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002412 {}
2413
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002414#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002415 Framebuffer & operator=(VkFramebuffer framebuffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002416 {
2417 m_framebuffer = framebuffer;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002418 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002419 }
2420#endif
2421
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002422 Framebuffer & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002423 {
2424 m_framebuffer = VK_NULL_HANDLE;
2425 return *this;
2426 }
2427
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002428 bool operator==( Framebuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002429 {
2430 return m_framebuffer == rhs.m_framebuffer;
2431 }
2432
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002433 bool operator!=(Framebuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002434 {
2435 return m_framebuffer != rhs.m_framebuffer;
2436 }
2437
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002438 bool operator<(Framebuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002439 {
2440 return m_framebuffer < rhs.m_framebuffer;
2441 }
2442
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002443
2444
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002445 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkFramebuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002446 {
2447 return m_framebuffer;
2448 }
2449
2450 explicit operator bool() const
2451 {
2452 return m_framebuffer != VK_NULL_HANDLE;
2453 }
2454
2455 bool operator!() const
2456 {
2457 return m_framebuffer == VK_NULL_HANDLE;
2458 }
2459
2460 private:
2461 VkFramebuffer m_framebuffer;
2462 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002463
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002464 static_assert( sizeof( Framebuffer ) == sizeof( VkFramebuffer ), "handle and wrapper have different size!" );
2465
2466 class RenderPass
2467 {
2468 public:
2469 RenderPass()
2470 : m_renderPass(VK_NULL_HANDLE)
2471 {}
2472
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002473 RenderPass( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002474 : m_renderPass(VK_NULL_HANDLE)
2475 {}
2476
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002477 VULKAN_HPP_TYPESAFE_EXPLICIT RenderPass( VkRenderPass renderPass )
2478 : m_renderPass( renderPass )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002479 {}
2480
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002481#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002482 RenderPass & operator=(VkRenderPass renderPass)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002483 {
2484 m_renderPass = renderPass;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002485 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002486 }
2487#endif
2488
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002489 RenderPass & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002490 {
2491 m_renderPass = VK_NULL_HANDLE;
2492 return *this;
2493 }
2494
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002495 bool operator==( RenderPass const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002496 {
2497 return m_renderPass == rhs.m_renderPass;
2498 }
2499
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002500 bool operator!=(RenderPass const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002501 {
2502 return m_renderPass != rhs.m_renderPass;
2503 }
2504
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002505 bool operator<(RenderPass const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002506 {
2507 return m_renderPass < rhs.m_renderPass;
2508 }
2509
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002510
2511
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002512 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkRenderPass() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002513 {
2514 return m_renderPass;
2515 }
2516
2517 explicit operator bool() const
2518 {
2519 return m_renderPass != VK_NULL_HANDLE;
2520 }
2521
2522 bool operator!() const
2523 {
2524 return m_renderPass == VK_NULL_HANDLE;
2525 }
2526
2527 private:
2528 VkRenderPass m_renderPass;
2529 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002530
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002531 static_assert( sizeof( RenderPass ) == sizeof( VkRenderPass ), "handle and wrapper have different size!" );
2532
2533 class PipelineCache
2534 {
2535 public:
2536 PipelineCache()
2537 : m_pipelineCache(VK_NULL_HANDLE)
2538 {}
2539
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002540 PipelineCache( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002541 : m_pipelineCache(VK_NULL_HANDLE)
2542 {}
2543
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002544 VULKAN_HPP_TYPESAFE_EXPLICIT PipelineCache( VkPipelineCache pipelineCache )
2545 : m_pipelineCache( pipelineCache )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002546 {}
2547
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002548#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002549 PipelineCache & operator=(VkPipelineCache pipelineCache)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002550 {
2551 m_pipelineCache = pipelineCache;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002552 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002553 }
2554#endif
2555
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002556 PipelineCache & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002557 {
2558 m_pipelineCache = VK_NULL_HANDLE;
2559 return *this;
2560 }
2561
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002562 bool operator==( PipelineCache const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002563 {
2564 return m_pipelineCache == rhs.m_pipelineCache;
2565 }
2566
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002567 bool operator!=(PipelineCache const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002568 {
2569 return m_pipelineCache != rhs.m_pipelineCache;
2570 }
2571
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002572 bool operator<(PipelineCache const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002573 {
2574 return m_pipelineCache < rhs.m_pipelineCache;
2575 }
2576
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002577
2578
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002579 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipelineCache() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002580 {
2581 return m_pipelineCache;
2582 }
2583
2584 explicit operator bool() const
2585 {
2586 return m_pipelineCache != VK_NULL_HANDLE;
2587 }
2588
2589 bool operator!() const
2590 {
2591 return m_pipelineCache == VK_NULL_HANDLE;
2592 }
2593
2594 private:
2595 VkPipelineCache m_pipelineCache;
2596 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002597
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002598 static_assert( sizeof( PipelineCache ) == sizeof( VkPipelineCache ), "handle and wrapper have different size!" );
2599
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002600 class ObjectTableNVX
2601 {
2602 public:
2603 ObjectTableNVX()
2604 : m_objectTableNVX(VK_NULL_HANDLE)
2605 {}
2606
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002607 ObjectTableNVX( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002608 : m_objectTableNVX(VK_NULL_HANDLE)
2609 {}
2610
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002611 VULKAN_HPP_TYPESAFE_EXPLICIT ObjectTableNVX( VkObjectTableNVX objectTableNVX )
2612 : m_objectTableNVX( objectTableNVX )
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002613 {}
2614
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002615#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002616 ObjectTableNVX & operator=(VkObjectTableNVX objectTableNVX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002617 {
2618 m_objectTableNVX = objectTableNVX;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002619 return *this;
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002620 }
2621#endif
2622
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002623 ObjectTableNVX & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002624 {
2625 m_objectTableNVX = VK_NULL_HANDLE;
2626 return *this;
2627 }
2628
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002629 bool operator==( ObjectTableNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002630 {
2631 return m_objectTableNVX == rhs.m_objectTableNVX;
2632 }
2633
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002634 bool operator!=(ObjectTableNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002635 {
2636 return m_objectTableNVX != rhs.m_objectTableNVX;
2637 }
2638
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002639 bool operator<(ObjectTableNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002640 {
2641 return m_objectTableNVX < rhs.m_objectTableNVX;
2642 }
2643
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002644
2645
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002646 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkObjectTableNVX() const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002647 {
2648 return m_objectTableNVX;
2649 }
2650
2651 explicit operator bool() const
2652 {
2653 return m_objectTableNVX != VK_NULL_HANDLE;
2654 }
2655
2656 bool operator!() const
2657 {
2658 return m_objectTableNVX == VK_NULL_HANDLE;
2659 }
2660
2661 private:
2662 VkObjectTableNVX m_objectTableNVX;
2663 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002664
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002665 static_assert( sizeof( ObjectTableNVX ) == sizeof( VkObjectTableNVX ), "handle and wrapper have different size!" );
2666
2667 class IndirectCommandsLayoutNVX
2668 {
2669 public:
2670 IndirectCommandsLayoutNVX()
2671 : m_indirectCommandsLayoutNVX(VK_NULL_HANDLE)
2672 {}
2673
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002674 IndirectCommandsLayoutNVX( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002675 : m_indirectCommandsLayoutNVX(VK_NULL_HANDLE)
2676 {}
2677
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002678 VULKAN_HPP_TYPESAFE_EXPLICIT IndirectCommandsLayoutNVX( VkIndirectCommandsLayoutNVX indirectCommandsLayoutNVX )
2679 : m_indirectCommandsLayoutNVX( indirectCommandsLayoutNVX )
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002680 {}
2681
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002682#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002683 IndirectCommandsLayoutNVX & operator=(VkIndirectCommandsLayoutNVX indirectCommandsLayoutNVX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002684 {
2685 m_indirectCommandsLayoutNVX = indirectCommandsLayoutNVX;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002686 return *this;
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002687 }
2688#endif
2689
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002690 IndirectCommandsLayoutNVX & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002691 {
2692 m_indirectCommandsLayoutNVX = VK_NULL_HANDLE;
2693 return *this;
2694 }
2695
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002696 bool operator==( IndirectCommandsLayoutNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002697 {
2698 return m_indirectCommandsLayoutNVX == rhs.m_indirectCommandsLayoutNVX;
2699 }
2700
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002701 bool operator!=(IndirectCommandsLayoutNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002702 {
2703 return m_indirectCommandsLayoutNVX != rhs.m_indirectCommandsLayoutNVX;
2704 }
2705
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002706 bool operator<(IndirectCommandsLayoutNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002707 {
2708 return m_indirectCommandsLayoutNVX < rhs.m_indirectCommandsLayoutNVX;
2709 }
2710
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002711
2712
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002713 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkIndirectCommandsLayoutNVX() const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002714 {
2715 return m_indirectCommandsLayoutNVX;
2716 }
2717
2718 explicit operator bool() const
2719 {
2720 return m_indirectCommandsLayoutNVX != VK_NULL_HANDLE;
2721 }
2722
2723 bool operator!() const
2724 {
2725 return m_indirectCommandsLayoutNVX == VK_NULL_HANDLE;
2726 }
2727
2728 private:
2729 VkIndirectCommandsLayoutNVX m_indirectCommandsLayoutNVX;
2730 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002731
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002732 static_assert( sizeof( IndirectCommandsLayoutNVX ) == sizeof( VkIndirectCommandsLayoutNVX ), "handle and wrapper have different size!" );
2733
Mark Young0f183a82017-02-28 09:58:04 -07002734 class DescriptorUpdateTemplateKHR
2735 {
2736 public:
2737 DescriptorUpdateTemplateKHR()
2738 : m_descriptorUpdateTemplateKHR(VK_NULL_HANDLE)
2739 {}
2740
2741 DescriptorUpdateTemplateKHR( std::nullptr_t )
2742 : m_descriptorUpdateTemplateKHR(VK_NULL_HANDLE)
2743 {}
2744
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002745 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorUpdateTemplateKHR( VkDescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR )
2746 : m_descriptorUpdateTemplateKHR( descriptorUpdateTemplateKHR )
Mark Young0f183a82017-02-28 09:58:04 -07002747 {}
2748
2749#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002750 DescriptorUpdateTemplateKHR & operator=(VkDescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR)
Mark Young0f183a82017-02-28 09:58:04 -07002751 {
2752 m_descriptorUpdateTemplateKHR = descriptorUpdateTemplateKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002753 return *this;
Mark Young0f183a82017-02-28 09:58:04 -07002754 }
2755#endif
2756
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002757 DescriptorUpdateTemplateKHR & operator=( std::nullptr_t )
Mark Young0f183a82017-02-28 09:58:04 -07002758 {
2759 m_descriptorUpdateTemplateKHR = VK_NULL_HANDLE;
2760 return *this;
2761 }
2762
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002763 bool operator==( DescriptorUpdateTemplateKHR const & rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -07002764 {
2765 return m_descriptorUpdateTemplateKHR == rhs.m_descriptorUpdateTemplateKHR;
2766 }
2767
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002768 bool operator!=(DescriptorUpdateTemplateKHR const & rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -07002769 {
2770 return m_descriptorUpdateTemplateKHR != rhs.m_descriptorUpdateTemplateKHR;
2771 }
2772
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002773 bool operator<(DescriptorUpdateTemplateKHR const & rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -07002774 {
2775 return m_descriptorUpdateTemplateKHR < rhs.m_descriptorUpdateTemplateKHR;
2776 }
2777
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002778
2779
Mark Young0f183a82017-02-28 09:58:04 -07002780 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorUpdateTemplateKHR() const
2781 {
2782 return m_descriptorUpdateTemplateKHR;
2783 }
2784
2785 explicit operator bool() const
2786 {
2787 return m_descriptorUpdateTemplateKHR != VK_NULL_HANDLE;
2788 }
2789
2790 bool operator!() const
2791 {
2792 return m_descriptorUpdateTemplateKHR == VK_NULL_HANDLE;
2793 }
2794
2795 private:
2796 VkDescriptorUpdateTemplateKHR m_descriptorUpdateTemplateKHR;
2797 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002798
Mark Young0f183a82017-02-28 09:58:04 -07002799 static_assert( sizeof( DescriptorUpdateTemplateKHR ) == sizeof( VkDescriptorUpdateTemplateKHR ), "handle and wrapper have different size!" );
2800
Lenny Komowb79f04a2017-09-18 17:07:00 -06002801 class SamplerYcbcrConversionKHR
2802 {
2803 public:
2804 SamplerYcbcrConversionKHR()
2805 : m_samplerYcbcrConversionKHR(VK_NULL_HANDLE)
2806 {}
2807
2808 SamplerYcbcrConversionKHR( std::nullptr_t )
2809 : m_samplerYcbcrConversionKHR(VK_NULL_HANDLE)
2810 {}
2811
2812 VULKAN_HPP_TYPESAFE_EXPLICIT SamplerYcbcrConversionKHR( VkSamplerYcbcrConversionKHR samplerYcbcrConversionKHR )
2813 : m_samplerYcbcrConversionKHR( samplerYcbcrConversionKHR )
2814 {}
2815
2816#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
2817 SamplerYcbcrConversionKHR & operator=(VkSamplerYcbcrConversionKHR samplerYcbcrConversionKHR)
2818 {
2819 m_samplerYcbcrConversionKHR = samplerYcbcrConversionKHR;
2820 return *this;
2821 }
2822#endif
2823
2824 SamplerYcbcrConversionKHR & operator=( std::nullptr_t )
2825 {
2826 m_samplerYcbcrConversionKHR = VK_NULL_HANDLE;
2827 return *this;
2828 }
2829
2830 bool operator==( SamplerYcbcrConversionKHR const & rhs ) const
2831 {
2832 return m_samplerYcbcrConversionKHR == rhs.m_samplerYcbcrConversionKHR;
2833 }
2834
2835 bool operator!=(SamplerYcbcrConversionKHR const & rhs ) const
2836 {
2837 return m_samplerYcbcrConversionKHR != rhs.m_samplerYcbcrConversionKHR;
2838 }
2839
2840 bool operator<(SamplerYcbcrConversionKHR const & rhs ) const
2841 {
2842 return m_samplerYcbcrConversionKHR < rhs.m_samplerYcbcrConversionKHR;
2843 }
2844
2845
2846
2847 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSamplerYcbcrConversionKHR() const
2848 {
2849 return m_samplerYcbcrConversionKHR;
2850 }
2851
2852 explicit operator bool() const
2853 {
2854 return m_samplerYcbcrConversionKHR != VK_NULL_HANDLE;
2855 }
2856
2857 bool operator!() const
2858 {
2859 return m_samplerYcbcrConversionKHR == VK_NULL_HANDLE;
2860 }
2861
2862 private:
2863 VkSamplerYcbcrConversionKHR m_samplerYcbcrConversionKHR;
2864 };
2865
2866 static_assert( sizeof( SamplerYcbcrConversionKHR ) == sizeof( VkSamplerYcbcrConversionKHR ), "handle and wrapper have different size!" );
2867
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06002868 class ValidationCacheEXT
2869 {
2870 public:
2871 ValidationCacheEXT()
2872 : m_validationCacheEXT(VK_NULL_HANDLE)
2873 {}
2874
2875 ValidationCacheEXT( std::nullptr_t )
2876 : m_validationCacheEXT(VK_NULL_HANDLE)
2877 {}
2878
2879 VULKAN_HPP_TYPESAFE_EXPLICIT ValidationCacheEXT( VkValidationCacheEXT validationCacheEXT )
2880 : m_validationCacheEXT( validationCacheEXT )
2881 {}
2882
2883#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
2884 ValidationCacheEXT & operator=(VkValidationCacheEXT validationCacheEXT)
2885 {
2886 m_validationCacheEXT = validationCacheEXT;
2887 return *this;
2888 }
2889#endif
2890
2891 ValidationCacheEXT & operator=( std::nullptr_t )
2892 {
2893 m_validationCacheEXT = VK_NULL_HANDLE;
2894 return *this;
2895 }
2896
2897 bool operator==( ValidationCacheEXT const & rhs ) const
2898 {
2899 return m_validationCacheEXT == rhs.m_validationCacheEXT;
2900 }
2901
2902 bool operator!=(ValidationCacheEXT const & rhs ) const
2903 {
2904 return m_validationCacheEXT != rhs.m_validationCacheEXT;
2905 }
2906
2907 bool operator<(ValidationCacheEXT const & rhs ) const
2908 {
2909 return m_validationCacheEXT < rhs.m_validationCacheEXT;
2910 }
2911
2912
2913
2914 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkValidationCacheEXT() const
2915 {
2916 return m_validationCacheEXT;
2917 }
2918
2919 explicit operator bool() const
2920 {
2921 return m_validationCacheEXT != VK_NULL_HANDLE;
2922 }
2923
2924 bool operator!() const
2925 {
2926 return m_validationCacheEXT == VK_NULL_HANDLE;
2927 }
2928
2929 private:
2930 VkValidationCacheEXT m_validationCacheEXT;
2931 };
2932
2933 static_assert( sizeof( ValidationCacheEXT ) == sizeof( VkValidationCacheEXT ), "handle and wrapper have different size!" );
2934
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002935 class DisplayKHR
2936 {
2937 public:
2938 DisplayKHR()
2939 : m_displayKHR(VK_NULL_HANDLE)
2940 {}
2941
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002942 DisplayKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002943 : m_displayKHR(VK_NULL_HANDLE)
2944 {}
2945
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002946 VULKAN_HPP_TYPESAFE_EXPLICIT DisplayKHR( VkDisplayKHR displayKHR )
2947 : m_displayKHR( displayKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002948 {}
2949
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002950#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002951 DisplayKHR & operator=(VkDisplayKHR displayKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002952 {
2953 m_displayKHR = displayKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002954 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002955 }
2956#endif
2957
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002958 DisplayKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002959 {
2960 m_displayKHR = VK_NULL_HANDLE;
2961 return *this;
2962 }
2963
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002964 bool operator==( DisplayKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002965 {
2966 return m_displayKHR == rhs.m_displayKHR;
2967 }
2968
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002969 bool operator!=(DisplayKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002970 {
2971 return m_displayKHR != rhs.m_displayKHR;
2972 }
2973
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002974 bool operator<(DisplayKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002975 {
2976 return m_displayKHR < rhs.m_displayKHR;
2977 }
2978
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002979
2980
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002981 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDisplayKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002982 {
2983 return m_displayKHR;
2984 }
2985
2986 explicit operator bool() const
2987 {
2988 return m_displayKHR != VK_NULL_HANDLE;
2989 }
2990
2991 bool operator!() const
2992 {
2993 return m_displayKHR == VK_NULL_HANDLE;
2994 }
2995
2996 private:
2997 VkDisplayKHR m_displayKHR;
2998 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002999
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003000 static_assert( sizeof( DisplayKHR ) == sizeof( VkDisplayKHR ), "handle and wrapper have different size!" );
3001
3002 class DisplayModeKHR
3003 {
3004 public:
3005 DisplayModeKHR()
3006 : m_displayModeKHR(VK_NULL_HANDLE)
3007 {}
3008
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07003009 DisplayModeKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003010 : m_displayModeKHR(VK_NULL_HANDLE)
3011 {}
3012
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003013 VULKAN_HPP_TYPESAFE_EXPLICIT DisplayModeKHR( VkDisplayModeKHR displayModeKHR )
3014 : m_displayModeKHR( displayModeKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003015 {}
3016
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003017#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003018 DisplayModeKHR & operator=(VkDisplayModeKHR displayModeKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003019 {
3020 m_displayModeKHR = displayModeKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003021 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003022 }
3023#endif
3024
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003025 DisplayModeKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003026 {
3027 m_displayModeKHR = VK_NULL_HANDLE;
3028 return *this;
3029 }
3030
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003031 bool operator==( DisplayModeKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003032 {
3033 return m_displayModeKHR == rhs.m_displayModeKHR;
3034 }
3035
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003036 bool operator!=(DisplayModeKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003037 {
3038 return m_displayModeKHR != rhs.m_displayModeKHR;
3039 }
3040
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003041 bool operator<(DisplayModeKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003042 {
3043 return m_displayModeKHR < rhs.m_displayModeKHR;
3044 }
3045
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003046
3047
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003048 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDisplayModeKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003049 {
3050 return m_displayModeKHR;
3051 }
3052
3053 explicit operator bool() const
3054 {
3055 return m_displayModeKHR != VK_NULL_HANDLE;
3056 }
3057
3058 bool operator!() const
3059 {
3060 return m_displayModeKHR == VK_NULL_HANDLE;
3061 }
3062
3063 private:
3064 VkDisplayModeKHR m_displayModeKHR;
3065 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003066
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003067 static_assert( sizeof( DisplayModeKHR ) == sizeof( VkDisplayModeKHR ), "handle and wrapper have different size!" );
3068
3069 class SurfaceKHR
3070 {
3071 public:
3072 SurfaceKHR()
3073 : m_surfaceKHR(VK_NULL_HANDLE)
3074 {}
3075
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07003076 SurfaceKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003077 : m_surfaceKHR(VK_NULL_HANDLE)
3078 {}
3079
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003080 VULKAN_HPP_TYPESAFE_EXPLICIT SurfaceKHR( VkSurfaceKHR surfaceKHR )
3081 : m_surfaceKHR( surfaceKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003082 {}
3083
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003084#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003085 SurfaceKHR & operator=(VkSurfaceKHR surfaceKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003086 {
3087 m_surfaceKHR = surfaceKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003088 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003089 }
3090#endif
3091
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003092 SurfaceKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003093 {
3094 m_surfaceKHR = VK_NULL_HANDLE;
3095 return *this;
3096 }
3097
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003098 bool operator==( SurfaceKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003099 {
3100 return m_surfaceKHR == rhs.m_surfaceKHR;
3101 }
3102
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003103 bool operator!=(SurfaceKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003104 {
3105 return m_surfaceKHR != rhs.m_surfaceKHR;
3106 }
3107
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003108 bool operator<(SurfaceKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003109 {
3110 return m_surfaceKHR < rhs.m_surfaceKHR;
3111 }
3112
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003113
3114
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003115 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSurfaceKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003116 {
3117 return m_surfaceKHR;
3118 }
3119
3120 explicit operator bool() const
3121 {
3122 return m_surfaceKHR != VK_NULL_HANDLE;
3123 }
3124
3125 bool operator!() const
3126 {
3127 return m_surfaceKHR == VK_NULL_HANDLE;
3128 }
3129
3130 private:
3131 VkSurfaceKHR m_surfaceKHR;
3132 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003133
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003134 static_assert( sizeof( SurfaceKHR ) == sizeof( VkSurfaceKHR ), "handle and wrapper have different size!" );
3135
3136 class SwapchainKHR
3137 {
3138 public:
3139 SwapchainKHR()
3140 : m_swapchainKHR(VK_NULL_HANDLE)
3141 {}
3142
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07003143 SwapchainKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003144 : m_swapchainKHR(VK_NULL_HANDLE)
3145 {}
3146
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003147 VULKAN_HPP_TYPESAFE_EXPLICIT SwapchainKHR( VkSwapchainKHR swapchainKHR )
3148 : m_swapchainKHR( swapchainKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003149 {}
3150
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003151#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003152 SwapchainKHR & operator=(VkSwapchainKHR swapchainKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003153 {
3154 m_swapchainKHR = swapchainKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003155 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003156 }
3157#endif
3158
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003159 SwapchainKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003160 {
3161 m_swapchainKHR = VK_NULL_HANDLE;
3162 return *this;
3163 }
3164
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003165 bool operator==( SwapchainKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003166 {
3167 return m_swapchainKHR == rhs.m_swapchainKHR;
3168 }
3169
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003170 bool operator!=(SwapchainKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003171 {
3172 return m_swapchainKHR != rhs.m_swapchainKHR;
3173 }
3174
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003175 bool operator<(SwapchainKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003176 {
3177 return m_swapchainKHR < rhs.m_swapchainKHR;
3178 }
3179
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003180
3181
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003182 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSwapchainKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003183 {
3184 return m_swapchainKHR;
3185 }
3186
3187 explicit operator bool() const
3188 {
3189 return m_swapchainKHR != VK_NULL_HANDLE;
3190 }
3191
3192 bool operator!() const
3193 {
3194 return m_swapchainKHR == VK_NULL_HANDLE;
3195 }
3196
3197 private:
3198 VkSwapchainKHR m_swapchainKHR;
3199 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003200
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003201 static_assert( sizeof( SwapchainKHR ) == sizeof( VkSwapchainKHR ), "handle and wrapper have different size!" );
3202
3203 class DebugReportCallbackEXT
3204 {
3205 public:
3206 DebugReportCallbackEXT()
3207 : m_debugReportCallbackEXT(VK_NULL_HANDLE)
3208 {}
3209
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07003210 DebugReportCallbackEXT( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003211 : m_debugReportCallbackEXT(VK_NULL_HANDLE)
3212 {}
3213
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003214 VULKAN_HPP_TYPESAFE_EXPLICIT DebugReportCallbackEXT( VkDebugReportCallbackEXT debugReportCallbackEXT )
3215 : m_debugReportCallbackEXT( debugReportCallbackEXT )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003216 {}
3217
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003218#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003219 DebugReportCallbackEXT & operator=(VkDebugReportCallbackEXT debugReportCallbackEXT)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003220 {
3221 m_debugReportCallbackEXT = debugReportCallbackEXT;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003222 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003223 }
3224#endif
3225
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003226 DebugReportCallbackEXT & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003227 {
3228 m_debugReportCallbackEXT = VK_NULL_HANDLE;
3229 return *this;
3230 }
3231
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003232 bool operator==( DebugReportCallbackEXT const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003233 {
3234 return m_debugReportCallbackEXT == rhs.m_debugReportCallbackEXT;
3235 }
3236
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003237 bool operator!=(DebugReportCallbackEXT const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003238 {
3239 return m_debugReportCallbackEXT != rhs.m_debugReportCallbackEXT;
3240 }
3241
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003242 bool operator<(DebugReportCallbackEXT const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003243 {
3244 return m_debugReportCallbackEXT < rhs.m_debugReportCallbackEXT;
3245 }
3246
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003247
3248
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003249 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDebugReportCallbackEXT() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003250 {
3251 return m_debugReportCallbackEXT;
3252 }
3253
3254 explicit operator bool() const
3255 {
3256 return m_debugReportCallbackEXT != VK_NULL_HANDLE;
3257 }
3258
3259 bool operator!() const
3260 {
3261 return m_debugReportCallbackEXT == VK_NULL_HANDLE;
3262 }
3263
3264 private:
3265 VkDebugReportCallbackEXT m_debugReportCallbackEXT;
3266 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003267
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003268 static_assert( sizeof( DebugReportCallbackEXT ) == sizeof( VkDebugReportCallbackEXT ), "handle and wrapper have different size!" );
3269
3270 struct Offset2D
3271 {
3272 Offset2D( int32_t x_ = 0, int32_t y_ = 0 )
3273 : x( x_ )
3274 , y( y_ )
3275 {
3276 }
3277
3278 Offset2D( VkOffset2D const & rhs )
3279 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003280 memcpy( this, &rhs, sizeof( Offset2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003281 }
3282
3283 Offset2D& operator=( VkOffset2D const & rhs )
3284 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003285 memcpy( this, &rhs, sizeof( Offset2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003286 return *this;
3287 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003288 Offset2D& setX( int32_t x_ )
3289 {
3290 x = x_;
3291 return *this;
3292 }
3293
3294 Offset2D& setY( int32_t y_ )
3295 {
3296 y = y_;
3297 return *this;
3298 }
3299
3300 operator const VkOffset2D&() const
3301 {
3302 return *reinterpret_cast<const VkOffset2D*>(this);
3303 }
3304
3305 bool operator==( Offset2D const& rhs ) const
3306 {
3307 return ( x == rhs.x )
3308 && ( y == rhs.y );
3309 }
3310
3311 bool operator!=( Offset2D const& rhs ) const
3312 {
3313 return !operator==( rhs );
3314 }
3315
3316 int32_t x;
3317 int32_t y;
3318 };
3319 static_assert( sizeof( Offset2D ) == sizeof( VkOffset2D ), "struct and wrapper have different size!" );
3320
3321 struct Offset3D
3322 {
3323 Offset3D( int32_t x_ = 0, int32_t y_ = 0, int32_t z_ = 0 )
3324 : x( x_ )
3325 , y( y_ )
3326 , z( z_ )
3327 {
3328 }
3329
3330 Offset3D( VkOffset3D const & rhs )
3331 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003332 memcpy( this, &rhs, sizeof( Offset3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003333 }
3334
3335 Offset3D& operator=( VkOffset3D const & rhs )
3336 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003337 memcpy( this, &rhs, sizeof( Offset3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003338 return *this;
3339 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003340 Offset3D& setX( int32_t x_ )
3341 {
3342 x = x_;
3343 return *this;
3344 }
3345
3346 Offset3D& setY( int32_t y_ )
3347 {
3348 y = y_;
3349 return *this;
3350 }
3351
3352 Offset3D& setZ( int32_t z_ )
3353 {
3354 z = z_;
3355 return *this;
3356 }
3357
3358 operator const VkOffset3D&() const
3359 {
3360 return *reinterpret_cast<const VkOffset3D*>(this);
3361 }
3362
3363 bool operator==( Offset3D const& rhs ) const
3364 {
3365 return ( x == rhs.x )
3366 && ( y == rhs.y )
3367 && ( z == rhs.z );
3368 }
3369
3370 bool operator!=( Offset3D const& rhs ) const
3371 {
3372 return !operator==( rhs );
3373 }
3374
3375 int32_t x;
3376 int32_t y;
3377 int32_t z;
3378 };
3379 static_assert( sizeof( Offset3D ) == sizeof( VkOffset3D ), "struct and wrapper have different size!" );
3380
3381 struct Extent2D
3382 {
3383 Extent2D( uint32_t width_ = 0, uint32_t height_ = 0 )
3384 : width( width_ )
3385 , height( height_ )
3386 {
3387 }
3388
3389 Extent2D( VkExtent2D const & rhs )
3390 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003391 memcpy( this, &rhs, sizeof( Extent2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003392 }
3393
3394 Extent2D& operator=( VkExtent2D const & rhs )
3395 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003396 memcpy( this, &rhs, sizeof( Extent2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003397 return *this;
3398 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003399 Extent2D& setWidth( uint32_t width_ )
3400 {
3401 width = width_;
3402 return *this;
3403 }
3404
3405 Extent2D& setHeight( uint32_t height_ )
3406 {
3407 height = height_;
3408 return *this;
3409 }
3410
3411 operator const VkExtent2D&() const
3412 {
3413 return *reinterpret_cast<const VkExtent2D*>(this);
3414 }
3415
3416 bool operator==( Extent2D const& rhs ) const
3417 {
3418 return ( width == rhs.width )
3419 && ( height == rhs.height );
3420 }
3421
3422 bool operator!=( Extent2D const& rhs ) const
3423 {
3424 return !operator==( rhs );
3425 }
3426
3427 uint32_t width;
3428 uint32_t height;
3429 };
3430 static_assert( sizeof( Extent2D ) == sizeof( VkExtent2D ), "struct and wrapper have different size!" );
3431
3432 struct Extent3D
3433 {
3434 Extent3D( uint32_t width_ = 0, uint32_t height_ = 0, uint32_t depth_ = 0 )
3435 : width( width_ )
3436 , height( height_ )
3437 , depth( depth_ )
3438 {
3439 }
3440
3441 Extent3D( VkExtent3D const & rhs )
3442 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003443 memcpy( this, &rhs, sizeof( Extent3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003444 }
3445
3446 Extent3D& operator=( VkExtent3D const & rhs )
3447 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003448 memcpy( this, &rhs, sizeof( Extent3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003449 return *this;
3450 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003451 Extent3D& setWidth( uint32_t width_ )
3452 {
3453 width = width_;
3454 return *this;
3455 }
3456
3457 Extent3D& setHeight( uint32_t height_ )
3458 {
3459 height = height_;
3460 return *this;
3461 }
3462
3463 Extent3D& setDepth( uint32_t depth_ )
3464 {
3465 depth = depth_;
3466 return *this;
3467 }
3468
3469 operator const VkExtent3D&() const
3470 {
3471 return *reinterpret_cast<const VkExtent3D*>(this);
3472 }
3473
3474 bool operator==( Extent3D const& rhs ) const
3475 {
3476 return ( width == rhs.width )
3477 && ( height == rhs.height )
3478 && ( depth == rhs.depth );
3479 }
3480
3481 bool operator!=( Extent3D const& rhs ) const
3482 {
3483 return !operator==( rhs );
3484 }
3485
3486 uint32_t width;
3487 uint32_t height;
3488 uint32_t depth;
3489 };
3490 static_assert( sizeof( Extent3D ) == sizeof( VkExtent3D ), "struct and wrapper have different size!" );
3491
3492 struct Viewport
3493 {
3494 Viewport( float x_ = 0, float y_ = 0, float width_ = 0, float height_ = 0, float minDepth_ = 0, float maxDepth_ = 0 )
3495 : x( x_ )
3496 , y( y_ )
3497 , width( width_ )
3498 , height( height_ )
3499 , minDepth( minDepth_ )
3500 , maxDepth( maxDepth_ )
3501 {
3502 }
3503
3504 Viewport( VkViewport const & rhs )
3505 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003506 memcpy( this, &rhs, sizeof( Viewport ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003507 }
3508
3509 Viewport& operator=( VkViewport const & rhs )
3510 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003511 memcpy( this, &rhs, sizeof( Viewport ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003512 return *this;
3513 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003514 Viewport& setX( float x_ )
3515 {
3516 x = x_;
3517 return *this;
3518 }
3519
3520 Viewport& setY( float y_ )
3521 {
3522 y = y_;
3523 return *this;
3524 }
3525
3526 Viewport& setWidth( float width_ )
3527 {
3528 width = width_;
3529 return *this;
3530 }
3531
3532 Viewport& setHeight( float height_ )
3533 {
3534 height = height_;
3535 return *this;
3536 }
3537
3538 Viewport& setMinDepth( float minDepth_ )
3539 {
3540 minDepth = minDepth_;
3541 return *this;
3542 }
3543
3544 Viewport& setMaxDepth( float maxDepth_ )
3545 {
3546 maxDepth = maxDepth_;
3547 return *this;
3548 }
3549
3550 operator const VkViewport&() const
3551 {
3552 return *reinterpret_cast<const VkViewport*>(this);
3553 }
3554
3555 bool operator==( Viewport const& rhs ) const
3556 {
3557 return ( x == rhs.x )
3558 && ( y == rhs.y )
3559 && ( width == rhs.width )
3560 && ( height == rhs.height )
3561 && ( minDepth == rhs.minDepth )
3562 && ( maxDepth == rhs.maxDepth );
3563 }
3564
3565 bool operator!=( Viewport const& rhs ) const
3566 {
3567 return !operator==( rhs );
3568 }
3569
3570 float x;
3571 float y;
3572 float width;
3573 float height;
3574 float minDepth;
3575 float maxDepth;
3576 };
3577 static_assert( sizeof( Viewport ) == sizeof( VkViewport ), "struct and wrapper have different size!" );
3578
3579 struct Rect2D
3580 {
3581 Rect2D( Offset2D offset_ = Offset2D(), Extent2D extent_ = Extent2D() )
3582 : offset( offset_ )
3583 , extent( extent_ )
3584 {
3585 }
3586
3587 Rect2D( VkRect2D const & rhs )
3588 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003589 memcpy( this, &rhs, sizeof( Rect2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003590 }
3591
3592 Rect2D& operator=( VkRect2D const & rhs )
3593 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003594 memcpy( this, &rhs, sizeof( Rect2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003595 return *this;
3596 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003597 Rect2D& setOffset( Offset2D offset_ )
3598 {
3599 offset = offset_;
3600 return *this;
3601 }
3602
3603 Rect2D& setExtent( Extent2D extent_ )
3604 {
3605 extent = extent_;
3606 return *this;
3607 }
3608
3609 operator const VkRect2D&() const
3610 {
3611 return *reinterpret_cast<const VkRect2D*>(this);
3612 }
3613
3614 bool operator==( Rect2D const& rhs ) const
3615 {
3616 return ( offset == rhs.offset )
3617 && ( extent == rhs.extent );
3618 }
3619
3620 bool operator!=( Rect2D const& rhs ) const
3621 {
3622 return !operator==( rhs );
3623 }
3624
3625 Offset2D offset;
3626 Extent2D extent;
3627 };
3628 static_assert( sizeof( Rect2D ) == sizeof( VkRect2D ), "struct and wrapper have different size!" );
3629
3630 struct ClearRect
3631 {
3632 ClearRect( Rect2D rect_ = Rect2D(), uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
3633 : rect( rect_ )
3634 , baseArrayLayer( baseArrayLayer_ )
3635 , layerCount( layerCount_ )
3636 {
3637 }
3638
3639 ClearRect( VkClearRect const & rhs )
3640 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003641 memcpy( this, &rhs, sizeof( ClearRect ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003642 }
3643
3644 ClearRect& operator=( VkClearRect const & rhs )
3645 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003646 memcpy( this, &rhs, sizeof( ClearRect ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003647 return *this;
3648 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003649 ClearRect& setRect( Rect2D rect_ )
3650 {
3651 rect = rect_;
3652 return *this;
3653 }
3654
3655 ClearRect& setBaseArrayLayer( uint32_t baseArrayLayer_ )
3656 {
3657 baseArrayLayer = baseArrayLayer_;
3658 return *this;
3659 }
3660
3661 ClearRect& setLayerCount( uint32_t layerCount_ )
3662 {
3663 layerCount = layerCount_;
3664 return *this;
3665 }
3666
3667 operator const VkClearRect&() const
3668 {
3669 return *reinterpret_cast<const VkClearRect*>(this);
3670 }
3671
3672 bool operator==( ClearRect const& rhs ) const
3673 {
3674 return ( rect == rhs.rect )
3675 && ( baseArrayLayer == rhs.baseArrayLayer )
3676 && ( layerCount == rhs.layerCount );
3677 }
3678
3679 bool operator!=( ClearRect const& rhs ) const
3680 {
3681 return !operator==( rhs );
3682 }
3683
3684 Rect2D rect;
3685 uint32_t baseArrayLayer;
3686 uint32_t layerCount;
3687 };
3688 static_assert( sizeof( ClearRect ) == sizeof( VkClearRect ), "struct and wrapper have different size!" );
3689
3690 struct ExtensionProperties
3691 {
3692 operator const VkExtensionProperties&() const
3693 {
3694 return *reinterpret_cast<const VkExtensionProperties*>(this);
3695 }
3696
3697 bool operator==( ExtensionProperties const& rhs ) const
3698 {
3699 return ( memcmp( extensionName, rhs.extensionName, VK_MAX_EXTENSION_NAME_SIZE * sizeof( char ) ) == 0 )
3700 && ( specVersion == rhs.specVersion );
3701 }
3702
3703 bool operator!=( ExtensionProperties const& rhs ) const
3704 {
3705 return !operator==( rhs );
3706 }
3707
3708 char extensionName[VK_MAX_EXTENSION_NAME_SIZE];
3709 uint32_t specVersion;
3710 };
3711 static_assert( sizeof( ExtensionProperties ) == sizeof( VkExtensionProperties ), "struct and wrapper have different size!" );
3712
3713 struct LayerProperties
3714 {
3715 operator const VkLayerProperties&() const
3716 {
3717 return *reinterpret_cast<const VkLayerProperties*>(this);
3718 }
3719
3720 bool operator==( LayerProperties const& rhs ) const
3721 {
3722 return ( memcmp( layerName, rhs.layerName, VK_MAX_EXTENSION_NAME_SIZE * sizeof( char ) ) == 0 )
3723 && ( specVersion == rhs.specVersion )
3724 && ( implementationVersion == rhs.implementationVersion )
3725 && ( memcmp( description, rhs.description, VK_MAX_DESCRIPTION_SIZE * sizeof( char ) ) == 0 );
3726 }
3727
3728 bool operator!=( LayerProperties const& rhs ) const
3729 {
3730 return !operator==( rhs );
3731 }
3732
3733 char layerName[VK_MAX_EXTENSION_NAME_SIZE];
3734 uint32_t specVersion;
3735 uint32_t implementationVersion;
3736 char description[VK_MAX_DESCRIPTION_SIZE];
3737 };
3738 static_assert( sizeof( LayerProperties ) == sizeof( VkLayerProperties ), "struct and wrapper have different size!" );
3739
3740 struct AllocationCallbacks
3741 {
3742 AllocationCallbacks( void* pUserData_ = nullptr, PFN_vkAllocationFunction pfnAllocation_ = nullptr, PFN_vkReallocationFunction pfnReallocation_ = nullptr, PFN_vkFreeFunction pfnFree_ = nullptr, PFN_vkInternalAllocationNotification pfnInternalAllocation_ = nullptr, PFN_vkInternalFreeNotification pfnInternalFree_ = nullptr )
3743 : pUserData( pUserData_ )
3744 , pfnAllocation( pfnAllocation_ )
3745 , pfnReallocation( pfnReallocation_ )
3746 , pfnFree( pfnFree_ )
3747 , pfnInternalAllocation( pfnInternalAllocation_ )
3748 , pfnInternalFree( pfnInternalFree_ )
3749 {
3750 }
3751
3752 AllocationCallbacks( VkAllocationCallbacks const & rhs )
3753 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003754 memcpy( this, &rhs, sizeof( AllocationCallbacks ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003755 }
3756
3757 AllocationCallbacks& operator=( VkAllocationCallbacks const & rhs )
3758 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003759 memcpy( this, &rhs, sizeof( AllocationCallbacks ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003760 return *this;
3761 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003762 AllocationCallbacks& setPUserData( void* pUserData_ )
3763 {
3764 pUserData = pUserData_;
3765 return *this;
3766 }
3767
3768 AllocationCallbacks& setPfnAllocation( PFN_vkAllocationFunction pfnAllocation_ )
3769 {
3770 pfnAllocation = pfnAllocation_;
3771 return *this;
3772 }
3773
3774 AllocationCallbacks& setPfnReallocation( PFN_vkReallocationFunction pfnReallocation_ )
3775 {
3776 pfnReallocation = pfnReallocation_;
3777 return *this;
3778 }
3779
3780 AllocationCallbacks& setPfnFree( PFN_vkFreeFunction pfnFree_ )
3781 {
3782 pfnFree = pfnFree_;
3783 return *this;
3784 }
3785
3786 AllocationCallbacks& setPfnInternalAllocation( PFN_vkInternalAllocationNotification pfnInternalAllocation_ )
3787 {
3788 pfnInternalAllocation = pfnInternalAllocation_;
3789 return *this;
3790 }
3791
3792 AllocationCallbacks& setPfnInternalFree( PFN_vkInternalFreeNotification pfnInternalFree_ )
3793 {
3794 pfnInternalFree = pfnInternalFree_;
3795 return *this;
3796 }
3797
3798 operator const VkAllocationCallbacks&() const
3799 {
3800 return *reinterpret_cast<const VkAllocationCallbacks*>(this);
3801 }
3802
3803 bool operator==( AllocationCallbacks const& rhs ) const
3804 {
3805 return ( pUserData == rhs.pUserData )
3806 && ( pfnAllocation == rhs.pfnAllocation )
3807 && ( pfnReallocation == rhs.pfnReallocation )
3808 && ( pfnFree == rhs.pfnFree )
3809 && ( pfnInternalAllocation == rhs.pfnInternalAllocation )
3810 && ( pfnInternalFree == rhs.pfnInternalFree );
3811 }
3812
3813 bool operator!=( AllocationCallbacks const& rhs ) const
3814 {
3815 return !operator==( rhs );
3816 }
3817
3818 void* pUserData;
3819 PFN_vkAllocationFunction pfnAllocation;
3820 PFN_vkReallocationFunction pfnReallocation;
3821 PFN_vkFreeFunction pfnFree;
3822 PFN_vkInternalAllocationNotification pfnInternalAllocation;
3823 PFN_vkInternalFreeNotification pfnInternalFree;
3824 };
3825 static_assert( sizeof( AllocationCallbacks ) == sizeof( VkAllocationCallbacks ), "struct and wrapper have different size!" );
3826
3827 struct MemoryRequirements
3828 {
3829 operator const VkMemoryRequirements&() const
3830 {
3831 return *reinterpret_cast<const VkMemoryRequirements*>(this);
3832 }
3833
3834 bool operator==( MemoryRequirements const& rhs ) const
3835 {
3836 return ( size == rhs.size )
3837 && ( alignment == rhs.alignment )
3838 && ( memoryTypeBits == rhs.memoryTypeBits );
3839 }
3840
3841 bool operator!=( MemoryRequirements const& rhs ) const
3842 {
3843 return !operator==( rhs );
3844 }
3845
3846 DeviceSize size;
3847 DeviceSize alignment;
3848 uint32_t memoryTypeBits;
3849 };
3850 static_assert( sizeof( MemoryRequirements ) == sizeof( VkMemoryRequirements ), "struct and wrapper have different size!" );
3851
3852 struct DescriptorBufferInfo
3853 {
3854 DescriptorBufferInfo( Buffer buffer_ = Buffer(), DeviceSize offset_ = 0, DeviceSize range_ = 0 )
3855 : buffer( buffer_ )
3856 , offset( offset_ )
3857 , range( range_ )
3858 {
3859 }
3860
3861 DescriptorBufferInfo( VkDescriptorBufferInfo const & rhs )
3862 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003863 memcpy( this, &rhs, sizeof( DescriptorBufferInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003864 }
3865
3866 DescriptorBufferInfo& operator=( VkDescriptorBufferInfo const & rhs )
3867 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003868 memcpy( this, &rhs, sizeof( DescriptorBufferInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003869 return *this;
3870 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003871 DescriptorBufferInfo& setBuffer( Buffer buffer_ )
3872 {
3873 buffer = buffer_;
3874 return *this;
3875 }
3876
3877 DescriptorBufferInfo& setOffset( DeviceSize offset_ )
3878 {
3879 offset = offset_;
3880 return *this;
3881 }
3882
3883 DescriptorBufferInfo& setRange( DeviceSize range_ )
3884 {
3885 range = range_;
3886 return *this;
3887 }
3888
3889 operator const VkDescriptorBufferInfo&() const
3890 {
3891 return *reinterpret_cast<const VkDescriptorBufferInfo*>(this);
3892 }
3893
3894 bool operator==( DescriptorBufferInfo const& rhs ) const
3895 {
3896 return ( buffer == rhs.buffer )
3897 && ( offset == rhs.offset )
3898 && ( range == rhs.range );
3899 }
3900
3901 bool operator!=( DescriptorBufferInfo const& rhs ) const
3902 {
3903 return !operator==( rhs );
3904 }
3905
3906 Buffer buffer;
3907 DeviceSize offset;
3908 DeviceSize range;
3909 };
3910 static_assert( sizeof( DescriptorBufferInfo ) == sizeof( VkDescriptorBufferInfo ), "struct and wrapper have different size!" );
3911
3912 struct SubresourceLayout
3913 {
3914 operator const VkSubresourceLayout&() const
3915 {
3916 return *reinterpret_cast<const VkSubresourceLayout*>(this);
3917 }
3918
3919 bool operator==( SubresourceLayout const& rhs ) const
3920 {
3921 return ( offset == rhs.offset )
3922 && ( size == rhs.size )
3923 && ( rowPitch == rhs.rowPitch )
3924 && ( arrayPitch == rhs.arrayPitch )
3925 && ( depthPitch == rhs.depthPitch );
3926 }
3927
3928 bool operator!=( SubresourceLayout const& rhs ) const
3929 {
3930 return !operator==( rhs );
3931 }
3932
3933 DeviceSize offset;
3934 DeviceSize size;
3935 DeviceSize rowPitch;
3936 DeviceSize arrayPitch;
3937 DeviceSize depthPitch;
3938 };
3939 static_assert( sizeof( SubresourceLayout ) == sizeof( VkSubresourceLayout ), "struct and wrapper have different size!" );
3940
3941 struct BufferCopy
3942 {
3943 BufferCopy( DeviceSize srcOffset_ = 0, DeviceSize dstOffset_ = 0, DeviceSize size_ = 0 )
3944 : srcOffset( srcOffset_ )
3945 , dstOffset( dstOffset_ )
3946 , size( size_ )
3947 {
3948 }
3949
3950 BufferCopy( VkBufferCopy const & rhs )
3951 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003952 memcpy( this, &rhs, sizeof( BufferCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003953 }
3954
3955 BufferCopy& operator=( VkBufferCopy const & rhs )
3956 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003957 memcpy( this, &rhs, sizeof( BufferCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003958 return *this;
3959 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003960 BufferCopy& setSrcOffset( DeviceSize srcOffset_ )
3961 {
3962 srcOffset = srcOffset_;
3963 return *this;
3964 }
3965
3966 BufferCopy& setDstOffset( DeviceSize dstOffset_ )
3967 {
3968 dstOffset = dstOffset_;
3969 return *this;
3970 }
3971
3972 BufferCopy& setSize( DeviceSize size_ )
3973 {
3974 size = size_;
3975 return *this;
3976 }
3977
3978 operator const VkBufferCopy&() const
3979 {
3980 return *reinterpret_cast<const VkBufferCopy*>(this);
3981 }
3982
3983 bool operator==( BufferCopy const& rhs ) const
3984 {
3985 return ( srcOffset == rhs.srcOffset )
3986 && ( dstOffset == rhs.dstOffset )
3987 && ( size == rhs.size );
3988 }
3989
3990 bool operator!=( BufferCopy const& rhs ) const
3991 {
3992 return !operator==( rhs );
3993 }
3994
3995 DeviceSize srcOffset;
3996 DeviceSize dstOffset;
3997 DeviceSize size;
3998 };
3999 static_assert( sizeof( BufferCopy ) == sizeof( VkBufferCopy ), "struct and wrapper have different size!" );
4000
4001 struct SpecializationMapEntry
4002 {
4003 SpecializationMapEntry( uint32_t constantID_ = 0, uint32_t offset_ = 0, size_t size_ = 0 )
4004 : constantID( constantID_ )
4005 , offset( offset_ )
4006 , size( size_ )
4007 {
4008 }
4009
4010 SpecializationMapEntry( VkSpecializationMapEntry const & rhs )
4011 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004012 memcpy( this, &rhs, sizeof( SpecializationMapEntry ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004013 }
4014
4015 SpecializationMapEntry& operator=( VkSpecializationMapEntry const & rhs )
4016 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004017 memcpy( this, &rhs, sizeof( SpecializationMapEntry ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004018 return *this;
4019 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004020 SpecializationMapEntry& setConstantID( uint32_t constantID_ )
4021 {
4022 constantID = constantID_;
4023 return *this;
4024 }
4025
4026 SpecializationMapEntry& setOffset( uint32_t offset_ )
4027 {
4028 offset = offset_;
4029 return *this;
4030 }
4031
4032 SpecializationMapEntry& setSize( size_t size_ )
4033 {
4034 size = size_;
4035 return *this;
4036 }
4037
4038 operator const VkSpecializationMapEntry&() const
4039 {
4040 return *reinterpret_cast<const VkSpecializationMapEntry*>(this);
4041 }
4042
4043 bool operator==( SpecializationMapEntry const& rhs ) const
4044 {
4045 return ( constantID == rhs.constantID )
4046 && ( offset == rhs.offset )
4047 && ( size == rhs.size );
4048 }
4049
4050 bool operator!=( SpecializationMapEntry const& rhs ) const
4051 {
4052 return !operator==( rhs );
4053 }
4054
4055 uint32_t constantID;
4056 uint32_t offset;
4057 size_t size;
4058 };
4059 static_assert( sizeof( SpecializationMapEntry ) == sizeof( VkSpecializationMapEntry ), "struct and wrapper have different size!" );
4060
4061 struct SpecializationInfo
4062 {
4063 SpecializationInfo( uint32_t mapEntryCount_ = 0, const SpecializationMapEntry* pMapEntries_ = nullptr, size_t dataSize_ = 0, const void* pData_ = nullptr )
4064 : mapEntryCount( mapEntryCount_ )
4065 , pMapEntries( pMapEntries_ )
4066 , dataSize( dataSize_ )
4067 , pData( pData_ )
4068 {
4069 }
4070
4071 SpecializationInfo( VkSpecializationInfo const & rhs )
4072 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004073 memcpy( this, &rhs, sizeof( SpecializationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004074 }
4075
4076 SpecializationInfo& operator=( VkSpecializationInfo const & rhs )
4077 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004078 memcpy( this, &rhs, sizeof( SpecializationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004079 return *this;
4080 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004081 SpecializationInfo& setMapEntryCount( uint32_t mapEntryCount_ )
4082 {
4083 mapEntryCount = mapEntryCount_;
4084 return *this;
4085 }
4086
4087 SpecializationInfo& setPMapEntries( const SpecializationMapEntry* pMapEntries_ )
4088 {
4089 pMapEntries = pMapEntries_;
4090 return *this;
4091 }
4092
4093 SpecializationInfo& setDataSize( size_t dataSize_ )
4094 {
4095 dataSize = dataSize_;
4096 return *this;
4097 }
4098
4099 SpecializationInfo& setPData( const void* pData_ )
4100 {
4101 pData = pData_;
4102 return *this;
4103 }
4104
4105 operator const VkSpecializationInfo&() const
4106 {
4107 return *reinterpret_cast<const VkSpecializationInfo*>(this);
4108 }
4109
4110 bool operator==( SpecializationInfo const& rhs ) const
4111 {
4112 return ( mapEntryCount == rhs.mapEntryCount )
4113 && ( pMapEntries == rhs.pMapEntries )
4114 && ( dataSize == rhs.dataSize )
4115 && ( pData == rhs.pData );
4116 }
4117
4118 bool operator!=( SpecializationInfo const& rhs ) const
4119 {
4120 return !operator==( rhs );
4121 }
4122
4123 uint32_t mapEntryCount;
4124 const SpecializationMapEntry* pMapEntries;
4125 size_t dataSize;
4126 const void* pData;
4127 };
4128 static_assert( sizeof( SpecializationInfo ) == sizeof( VkSpecializationInfo ), "struct and wrapper have different size!" );
4129
4130 union ClearColorValue
4131 {
4132 ClearColorValue( const std::array<float,4>& float32_ = { {0} } )
4133 {
4134 memcpy( &float32, float32_.data(), 4 * sizeof( float ) );
4135 }
4136
4137 ClearColorValue( const std::array<int32_t,4>& int32_ )
4138 {
4139 memcpy( &int32, int32_.data(), 4 * sizeof( int32_t ) );
4140 }
4141
4142 ClearColorValue( const std::array<uint32_t,4>& uint32_ )
4143 {
4144 memcpy( &uint32, uint32_.data(), 4 * sizeof( uint32_t ) );
4145 }
4146
4147 ClearColorValue& setFloat32( std::array<float,4> float32_ )
4148 {
4149 memcpy( &float32, float32_.data(), 4 * sizeof( float ) );
4150 return *this;
4151 }
4152
4153 ClearColorValue& setInt32( std::array<int32_t,4> int32_ )
4154 {
4155 memcpy( &int32, int32_.data(), 4 * sizeof( int32_t ) );
4156 return *this;
4157 }
4158
4159 ClearColorValue& setUint32( std::array<uint32_t,4> uint32_ )
4160 {
4161 memcpy( &uint32, uint32_.data(), 4 * sizeof( uint32_t ) );
4162 return *this;
4163 }
4164
4165 operator VkClearColorValue const& () const
4166 {
4167 return *reinterpret_cast<const VkClearColorValue*>(this);
4168 }
4169
4170 float float32[4];
4171 int32_t int32[4];
4172 uint32_t uint32[4];
4173 };
4174
4175 struct ClearDepthStencilValue
4176 {
4177 ClearDepthStencilValue( float depth_ = 0, uint32_t stencil_ = 0 )
4178 : depth( depth_ )
4179 , stencil( stencil_ )
4180 {
4181 }
4182
4183 ClearDepthStencilValue( VkClearDepthStencilValue const & rhs )
4184 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004185 memcpy( this, &rhs, sizeof( ClearDepthStencilValue ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004186 }
4187
4188 ClearDepthStencilValue& operator=( VkClearDepthStencilValue const & rhs )
4189 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004190 memcpy( this, &rhs, sizeof( ClearDepthStencilValue ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004191 return *this;
4192 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004193 ClearDepthStencilValue& setDepth( float depth_ )
4194 {
4195 depth = depth_;
4196 return *this;
4197 }
4198
4199 ClearDepthStencilValue& setStencil( uint32_t stencil_ )
4200 {
4201 stencil = stencil_;
4202 return *this;
4203 }
4204
4205 operator const VkClearDepthStencilValue&() const
4206 {
4207 return *reinterpret_cast<const VkClearDepthStencilValue*>(this);
4208 }
4209
4210 bool operator==( ClearDepthStencilValue const& rhs ) const
4211 {
4212 return ( depth == rhs.depth )
4213 && ( stencil == rhs.stencil );
4214 }
4215
4216 bool operator!=( ClearDepthStencilValue const& rhs ) const
4217 {
4218 return !operator==( rhs );
4219 }
4220
4221 float depth;
4222 uint32_t stencil;
4223 };
4224 static_assert( sizeof( ClearDepthStencilValue ) == sizeof( VkClearDepthStencilValue ), "struct and wrapper have different size!" );
4225
4226 union ClearValue
4227 {
4228 ClearValue( ClearColorValue color_ = ClearColorValue() )
4229 {
4230 color = color_;
4231 }
4232
4233 ClearValue( ClearDepthStencilValue depthStencil_ )
4234 {
4235 depthStencil = depthStencil_;
4236 }
4237
4238 ClearValue& setColor( ClearColorValue color_ )
4239 {
4240 color = color_;
4241 return *this;
4242 }
4243
4244 ClearValue& setDepthStencil( ClearDepthStencilValue depthStencil_ )
4245 {
4246 depthStencil = depthStencil_;
4247 return *this;
4248 }
4249
4250 operator VkClearValue const& () const
4251 {
4252 return *reinterpret_cast<const VkClearValue*>(this);
4253 }
4254
4255#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
4256 ClearColorValue color;
4257 ClearDepthStencilValue depthStencil;
4258#else
4259 VkClearColorValue color;
4260 VkClearDepthStencilValue depthStencil;
4261#endif // VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
4262 };
4263
4264 struct PhysicalDeviceFeatures
4265 {
4266 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 )
4267 : robustBufferAccess( robustBufferAccess_ )
4268 , fullDrawIndexUint32( fullDrawIndexUint32_ )
4269 , imageCubeArray( imageCubeArray_ )
4270 , independentBlend( independentBlend_ )
4271 , geometryShader( geometryShader_ )
4272 , tessellationShader( tessellationShader_ )
4273 , sampleRateShading( sampleRateShading_ )
4274 , dualSrcBlend( dualSrcBlend_ )
4275 , logicOp( logicOp_ )
4276 , multiDrawIndirect( multiDrawIndirect_ )
4277 , drawIndirectFirstInstance( drawIndirectFirstInstance_ )
4278 , depthClamp( depthClamp_ )
4279 , depthBiasClamp( depthBiasClamp_ )
4280 , fillModeNonSolid( fillModeNonSolid_ )
4281 , depthBounds( depthBounds_ )
4282 , wideLines( wideLines_ )
4283 , largePoints( largePoints_ )
4284 , alphaToOne( alphaToOne_ )
4285 , multiViewport( multiViewport_ )
4286 , samplerAnisotropy( samplerAnisotropy_ )
4287 , textureCompressionETC2( textureCompressionETC2_ )
4288 , textureCompressionASTC_LDR( textureCompressionASTC_LDR_ )
4289 , textureCompressionBC( textureCompressionBC_ )
4290 , occlusionQueryPrecise( occlusionQueryPrecise_ )
4291 , pipelineStatisticsQuery( pipelineStatisticsQuery_ )
4292 , vertexPipelineStoresAndAtomics( vertexPipelineStoresAndAtomics_ )
4293 , fragmentStoresAndAtomics( fragmentStoresAndAtomics_ )
4294 , shaderTessellationAndGeometryPointSize( shaderTessellationAndGeometryPointSize_ )
4295 , shaderImageGatherExtended( shaderImageGatherExtended_ )
4296 , shaderStorageImageExtendedFormats( shaderStorageImageExtendedFormats_ )
4297 , shaderStorageImageMultisample( shaderStorageImageMultisample_ )
4298 , shaderStorageImageReadWithoutFormat( shaderStorageImageReadWithoutFormat_ )
4299 , shaderStorageImageWriteWithoutFormat( shaderStorageImageWriteWithoutFormat_ )
4300 , shaderUniformBufferArrayDynamicIndexing( shaderUniformBufferArrayDynamicIndexing_ )
4301 , shaderSampledImageArrayDynamicIndexing( shaderSampledImageArrayDynamicIndexing_ )
4302 , shaderStorageBufferArrayDynamicIndexing( shaderStorageBufferArrayDynamicIndexing_ )
4303 , shaderStorageImageArrayDynamicIndexing( shaderStorageImageArrayDynamicIndexing_ )
4304 , shaderClipDistance( shaderClipDistance_ )
4305 , shaderCullDistance( shaderCullDistance_ )
4306 , shaderFloat64( shaderFloat64_ )
4307 , shaderInt64( shaderInt64_ )
4308 , shaderInt16( shaderInt16_ )
4309 , shaderResourceResidency( shaderResourceResidency_ )
4310 , shaderResourceMinLod( shaderResourceMinLod_ )
4311 , sparseBinding( sparseBinding_ )
4312 , sparseResidencyBuffer( sparseResidencyBuffer_ )
4313 , sparseResidencyImage2D( sparseResidencyImage2D_ )
4314 , sparseResidencyImage3D( sparseResidencyImage3D_ )
4315 , sparseResidency2Samples( sparseResidency2Samples_ )
4316 , sparseResidency4Samples( sparseResidency4Samples_ )
4317 , sparseResidency8Samples( sparseResidency8Samples_ )
4318 , sparseResidency16Samples( sparseResidency16Samples_ )
4319 , sparseResidencyAliased( sparseResidencyAliased_ )
4320 , variableMultisampleRate( variableMultisampleRate_ )
4321 , inheritedQueries( inheritedQueries_ )
4322 {
4323 }
4324
4325 PhysicalDeviceFeatures( VkPhysicalDeviceFeatures const & rhs )
4326 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004327 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004328 }
4329
4330 PhysicalDeviceFeatures& operator=( VkPhysicalDeviceFeatures const & rhs )
4331 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004332 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004333 return *this;
4334 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004335 PhysicalDeviceFeatures& setRobustBufferAccess( Bool32 robustBufferAccess_ )
4336 {
4337 robustBufferAccess = robustBufferAccess_;
4338 return *this;
4339 }
4340
4341 PhysicalDeviceFeatures& setFullDrawIndexUint32( Bool32 fullDrawIndexUint32_ )
4342 {
4343 fullDrawIndexUint32 = fullDrawIndexUint32_;
4344 return *this;
4345 }
4346
4347 PhysicalDeviceFeatures& setImageCubeArray( Bool32 imageCubeArray_ )
4348 {
4349 imageCubeArray = imageCubeArray_;
4350 return *this;
4351 }
4352
4353 PhysicalDeviceFeatures& setIndependentBlend( Bool32 independentBlend_ )
4354 {
4355 independentBlend = independentBlend_;
4356 return *this;
4357 }
4358
4359 PhysicalDeviceFeatures& setGeometryShader( Bool32 geometryShader_ )
4360 {
4361 geometryShader = geometryShader_;
4362 return *this;
4363 }
4364
4365 PhysicalDeviceFeatures& setTessellationShader( Bool32 tessellationShader_ )
4366 {
4367 tessellationShader = tessellationShader_;
4368 return *this;
4369 }
4370
4371 PhysicalDeviceFeatures& setSampleRateShading( Bool32 sampleRateShading_ )
4372 {
4373 sampleRateShading = sampleRateShading_;
4374 return *this;
4375 }
4376
4377 PhysicalDeviceFeatures& setDualSrcBlend( Bool32 dualSrcBlend_ )
4378 {
4379 dualSrcBlend = dualSrcBlend_;
4380 return *this;
4381 }
4382
4383 PhysicalDeviceFeatures& setLogicOp( Bool32 logicOp_ )
4384 {
4385 logicOp = logicOp_;
4386 return *this;
4387 }
4388
4389 PhysicalDeviceFeatures& setMultiDrawIndirect( Bool32 multiDrawIndirect_ )
4390 {
4391 multiDrawIndirect = multiDrawIndirect_;
4392 return *this;
4393 }
4394
4395 PhysicalDeviceFeatures& setDrawIndirectFirstInstance( Bool32 drawIndirectFirstInstance_ )
4396 {
4397 drawIndirectFirstInstance = drawIndirectFirstInstance_;
4398 return *this;
4399 }
4400
4401 PhysicalDeviceFeatures& setDepthClamp( Bool32 depthClamp_ )
4402 {
4403 depthClamp = depthClamp_;
4404 return *this;
4405 }
4406
4407 PhysicalDeviceFeatures& setDepthBiasClamp( Bool32 depthBiasClamp_ )
4408 {
4409 depthBiasClamp = depthBiasClamp_;
4410 return *this;
4411 }
4412
4413 PhysicalDeviceFeatures& setFillModeNonSolid( Bool32 fillModeNonSolid_ )
4414 {
4415 fillModeNonSolid = fillModeNonSolid_;
4416 return *this;
4417 }
4418
4419 PhysicalDeviceFeatures& setDepthBounds( Bool32 depthBounds_ )
4420 {
4421 depthBounds = depthBounds_;
4422 return *this;
4423 }
4424
4425 PhysicalDeviceFeatures& setWideLines( Bool32 wideLines_ )
4426 {
4427 wideLines = wideLines_;
4428 return *this;
4429 }
4430
4431 PhysicalDeviceFeatures& setLargePoints( Bool32 largePoints_ )
4432 {
4433 largePoints = largePoints_;
4434 return *this;
4435 }
4436
4437 PhysicalDeviceFeatures& setAlphaToOne( Bool32 alphaToOne_ )
4438 {
4439 alphaToOne = alphaToOne_;
4440 return *this;
4441 }
4442
4443 PhysicalDeviceFeatures& setMultiViewport( Bool32 multiViewport_ )
4444 {
4445 multiViewport = multiViewport_;
4446 return *this;
4447 }
4448
4449 PhysicalDeviceFeatures& setSamplerAnisotropy( Bool32 samplerAnisotropy_ )
4450 {
4451 samplerAnisotropy = samplerAnisotropy_;
4452 return *this;
4453 }
4454
4455 PhysicalDeviceFeatures& setTextureCompressionETC2( Bool32 textureCompressionETC2_ )
4456 {
4457 textureCompressionETC2 = textureCompressionETC2_;
4458 return *this;
4459 }
4460
4461 PhysicalDeviceFeatures& setTextureCompressionASTC_LDR( Bool32 textureCompressionASTC_LDR_ )
4462 {
4463 textureCompressionASTC_LDR = textureCompressionASTC_LDR_;
4464 return *this;
4465 }
4466
4467 PhysicalDeviceFeatures& setTextureCompressionBC( Bool32 textureCompressionBC_ )
4468 {
4469 textureCompressionBC = textureCompressionBC_;
4470 return *this;
4471 }
4472
4473 PhysicalDeviceFeatures& setOcclusionQueryPrecise( Bool32 occlusionQueryPrecise_ )
4474 {
4475 occlusionQueryPrecise = occlusionQueryPrecise_;
4476 return *this;
4477 }
4478
4479 PhysicalDeviceFeatures& setPipelineStatisticsQuery( Bool32 pipelineStatisticsQuery_ )
4480 {
4481 pipelineStatisticsQuery = pipelineStatisticsQuery_;
4482 return *this;
4483 }
4484
4485 PhysicalDeviceFeatures& setVertexPipelineStoresAndAtomics( Bool32 vertexPipelineStoresAndAtomics_ )
4486 {
4487 vertexPipelineStoresAndAtomics = vertexPipelineStoresAndAtomics_;
4488 return *this;
4489 }
4490
4491 PhysicalDeviceFeatures& setFragmentStoresAndAtomics( Bool32 fragmentStoresAndAtomics_ )
4492 {
4493 fragmentStoresAndAtomics = fragmentStoresAndAtomics_;
4494 return *this;
4495 }
4496
4497 PhysicalDeviceFeatures& setShaderTessellationAndGeometryPointSize( Bool32 shaderTessellationAndGeometryPointSize_ )
4498 {
4499 shaderTessellationAndGeometryPointSize = shaderTessellationAndGeometryPointSize_;
4500 return *this;
4501 }
4502
4503 PhysicalDeviceFeatures& setShaderImageGatherExtended( Bool32 shaderImageGatherExtended_ )
4504 {
4505 shaderImageGatherExtended = shaderImageGatherExtended_;
4506 return *this;
4507 }
4508
4509 PhysicalDeviceFeatures& setShaderStorageImageExtendedFormats( Bool32 shaderStorageImageExtendedFormats_ )
4510 {
4511 shaderStorageImageExtendedFormats = shaderStorageImageExtendedFormats_;
4512 return *this;
4513 }
4514
4515 PhysicalDeviceFeatures& setShaderStorageImageMultisample( Bool32 shaderStorageImageMultisample_ )
4516 {
4517 shaderStorageImageMultisample = shaderStorageImageMultisample_;
4518 return *this;
4519 }
4520
4521 PhysicalDeviceFeatures& setShaderStorageImageReadWithoutFormat( Bool32 shaderStorageImageReadWithoutFormat_ )
4522 {
4523 shaderStorageImageReadWithoutFormat = shaderStorageImageReadWithoutFormat_;
4524 return *this;
4525 }
4526
4527 PhysicalDeviceFeatures& setShaderStorageImageWriteWithoutFormat( Bool32 shaderStorageImageWriteWithoutFormat_ )
4528 {
4529 shaderStorageImageWriteWithoutFormat = shaderStorageImageWriteWithoutFormat_;
4530 return *this;
4531 }
4532
4533 PhysicalDeviceFeatures& setShaderUniformBufferArrayDynamicIndexing( Bool32 shaderUniformBufferArrayDynamicIndexing_ )
4534 {
4535 shaderUniformBufferArrayDynamicIndexing = shaderUniformBufferArrayDynamicIndexing_;
4536 return *this;
4537 }
4538
4539 PhysicalDeviceFeatures& setShaderSampledImageArrayDynamicIndexing( Bool32 shaderSampledImageArrayDynamicIndexing_ )
4540 {
4541 shaderSampledImageArrayDynamicIndexing = shaderSampledImageArrayDynamicIndexing_;
4542 return *this;
4543 }
4544
4545 PhysicalDeviceFeatures& setShaderStorageBufferArrayDynamicIndexing( Bool32 shaderStorageBufferArrayDynamicIndexing_ )
4546 {
4547 shaderStorageBufferArrayDynamicIndexing = shaderStorageBufferArrayDynamicIndexing_;
4548 return *this;
4549 }
4550
4551 PhysicalDeviceFeatures& setShaderStorageImageArrayDynamicIndexing( Bool32 shaderStorageImageArrayDynamicIndexing_ )
4552 {
4553 shaderStorageImageArrayDynamicIndexing = shaderStorageImageArrayDynamicIndexing_;
4554 return *this;
4555 }
4556
4557 PhysicalDeviceFeatures& setShaderClipDistance( Bool32 shaderClipDistance_ )
4558 {
4559 shaderClipDistance = shaderClipDistance_;
4560 return *this;
4561 }
4562
4563 PhysicalDeviceFeatures& setShaderCullDistance( Bool32 shaderCullDistance_ )
4564 {
4565 shaderCullDistance = shaderCullDistance_;
4566 return *this;
4567 }
4568
4569 PhysicalDeviceFeatures& setShaderFloat64( Bool32 shaderFloat64_ )
4570 {
4571 shaderFloat64 = shaderFloat64_;
4572 return *this;
4573 }
4574
4575 PhysicalDeviceFeatures& setShaderInt64( Bool32 shaderInt64_ )
4576 {
4577 shaderInt64 = shaderInt64_;
4578 return *this;
4579 }
4580
4581 PhysicalDeviceFeatures& setShaderInt16( Bool32 shaderInt16_ )
4582 {
4583 shaderInt16 = shaderInt16_;
4584 return *this;
4585 }
4586
4587 PhysicalDeviceFeatures& setShaderResourceResidency( Bool32 shaderResourceResidency_ )
4588 {
4589 shaderResourceResidency = shaderResourceResidency_;
4590 return *this;
4591 }
4592
4593 PhysicalDeviceFeatures& setShaderResourceMinLod( Bool32 shaderResourceMinLod_ )
4594 {
4595 shaderResourceMinLod = shaderResourceMinLod_;
4596 return *this;
4597 }
4598
4599 PhysicalDeviceFeatures& setSparseBinding( Bool32 sparseBinding_ )
4600 {
4601 sparseBinding = sparseBinding_;
4602 return *this;
4603 }
4604
4605 PhysicalDeviceFeatures& setSparseResidencyBuffer( Bool32 sparseResidencyBuffer_ )
4606 {
4607 sparseResidencyBuffer = sparseResidencyBuffer_;
4608 return *this;
4609 }
4610
4611 PhysicalDeviceFeatures& setSparseResidencyImage2D( Bool32 sparseResidencyImage2D_ )
4612 {
4613 sparseResidencyImage2D = sparseResidencyImage2D_;
4614 return *this;
4615 }
4616
4617 PhysicalDeviceFeatures& setSparseResidencyImage3D( Bool32 sparseResidencyImage3D_ )
4618 {
4619 sparseResidencyImage3D = sparseResidencyImage3D_;
4620 return *this;
4621 }
4622
4623 PhysicalDeviceFeatures& setSparseResidency2Samples( Bool32 sparseResidency2Samples_ )
4624 {
4625 sparseResidency2Samples = sparseResidency2Samples_;
4626 return *this;
4627 }
4628
4629 PhysicalDeviceFeatures& setSparseResidency4Samples( Bool32 sparseResidency4Samples_ )
4630 {
4631 sparseResidency4Samples = sparseResidency4Samples_;
4632 return *this;
4633 }
4634
4635 PhysicalDeviceFeatures& setSparseResidency8Samples( Bool32 sparseResidency8Samples_ )
4636 {
4637 sparseResidency8Samples = sparseResidency8Samples_;
4638 return *this;
4639 }
4640
4641 PhysicalDeviceFeatures& setSparseResidency16Samples( Bool32 sparseResidency16Samples_ )
4642 {
4643 sparseResidency16Samples = sparseResidency16Samples_;
4644 return *this;
4645 }
4646
4647 PhysicalDeviceFeatures& setSparseResidencyAliased( Bool32 sparseResidencyAliased_ )
4648 {
4649 sparseResidencyAliased = sparseResidencyAliased_;
4650 return *this;
4651 }
4652
4653 PhysicalDeviceFeatures& setVariableMultisampleRate( Bool32 variableMultisampleRate_ )
4654 {
4655 variableMultisampleRate = variableMultisampleRate_;
4656 return *this;
4657 }
4658
4659 PhysicalDeviceFeatures& setInheritedQueries( Bool32 inheritedQueries_ )
4660 {
4661 inheritedQueries = inheritedQueries_;
4662 return *this;
4663 }
4664
4665 operator const VkPhysicalDeviceFeatures&() const
4666 {
4667 return *reinterpret_cast<const VkPhysicalDeviceFeatures*>(this);
4668 }
4669
4670 bool operator==( PhysicalDeviceFeatures const& rhs ) const
4671 {
4672 return ( robustBufferAccess == rhs.robustBufferAccess )
4673 && ( fullDrawIndexUint32 == rhs.fullDrawIndexUint32 )
4674 && ( imageCubeArray == rhs.imageCubeArray )
4675 && ( independentBlend == rhs.independentBlend )
4676 && ( geometryShader == rhs.geometryShader )
4677 && ( tessellationShader == rhs.tessellationShader )
4678 && ( sampleRateShading == rhs.sampleRateShading )
4679 && ( dualSrcBlend == rhs.dualSrcBlend )
4680 && ( logicOp == rhs.logicOp )
4681 && ( multiDrawIndirect == rhs.multiDrawIndirect )
4682 && ( drawIndirectFirstInstance == rhs.drawIndirectFirstInstance )
4683 && ( depthClamp == rhs.depthClamp )
4684 && ( depthBiasClamp == rhs.depthBiasClamp )
4685 && ( fillModeNonSolid == rhs.fillModeNonSolid )
4686 && ( depthBounds == rhs.depthBounds )
4687 && ( wideLines == rhs.wideLines )
4688 && ( largePoints == rhs.largePoints )
4689 && ( alphaToOne == rhs.alphaToOne )
4690 && ( multiViewport == rhs.multiViewport )
4691 && ( samplerAnisotropy == rhs.samplerAnisotropy )
4692 && ( textureCompressionETC2 == rhs.textureCompressionETC2 )
4693 && ( textureCompressionASTC_LDR == rhs.textureCompressionASTC_LDR )
4694 && ( textureCompressionBC == rhs.textureCompressionBC )
4695 && ( occlusionQueryPrecise == rhs.occlusionQueryPrecise )
4696 && ( pipelineStatisticsQuery == rhs.pipelineStatisticsQuery )
4697 && ( vertexPipelineStoresAndAtomics == rhs.vertexPipelineStoresAndAtomics )
4698 && ( fragmentStoresAndAtomics == rhs.fragmentStoresAndAtomics )
4699 && ( shaderTessellationAndGeometryPointSize == rhs.shaderTessellationAndGeometryPointSize )
4700 && ( shaderImageGatherExtended == rhs.shaderImageGatherExtended )
4701 && ( shaderStorageImageExtendedFormats == rhs.shaderStorageImageExtendedFormats )
4702 && ( shaderStorageImageMultisample == rhs.shaderStorageImageMultisample )
4703 && ( shaderStorageImageReadWithoutFormat == rhs.shaderStorageImageReadWithoutFormat )
4704 && ( shaderStorageImageWriteWithoutFormat == rhs.shaderStorageImageWriteWithoutFormat )
4705 && ( shaderUniformBufferArrayDynamicIndexing == rhs.shaderUniformBufferArrayDynamicIndexing )
4706 && ( shaderSampledImageArrayDynamicIndexing == rhs.shaderSampledImageArrayDynamicIndexing )
4707 && ( shaderStorageBufferArrayDynamicIndexing == rhs.shaderStorageBufferArrayDynamicIndexing )
4708 && ( shaderStorageImageArrayDynamicIndexing == rhs.shaderStorageImageArrayDynamicIndexing )
4709 && ( shaderClipDistance == rhs.shaderClipDistance )
4710 && ( shaderCullDistance == rhs.shaderCullDistance )
4711 && ( shaderFloat64 == rhs.shaderFloat64 )
4712 && ( shaderInt64 == rhs.shaderInt64 )
4713 && ( shaderInt16 == rhs.shaderInt16 )
4714 && ( shaderResourceResidency == rhs.shaderResourceResidency )
4715 && ( shaderResourceMinLod == rhs.shaderResourceMinLod )
4716 && ( sparseBinding == rhs.sparseBinding )
4717 && ( sparseResidencyBuffer == rhs.sparseResidencyBuffer )
4718 && ( sparseResidencyImage2D == rhs.sparseResidencyImage2D )
4719 && ( sparseResidencyImage3D == rhs.sparseResidencyImage3D )
4720 && ( sparseResidency2Samples == rhs.sparseResidency2Samples )
4721 && ( sparseResidency4Samples == rhs.sparseResidency4Samples )
4722 && ( sparseResidency8Samples == rhs.sparseResidency8Samples )
4723 && ( sparseResidency16Samples == rhs.sparseResidency16Samples )
4724 && ( sparseResidencyAliased == rhs.sparseResidencyAliased )
4725 && ( variableMultisampleRate == rhs.variableMultisampleRate )
4726 && ( inheritedQueries == rhs.inheritedQueries );
4727 }
4728
4729 bool operator!=( PhysicalDeviceFeatures const& rhs ) const
4730 {
4731 return !operator==( rhs );
4732 }
4733
4734 Bool32 robustBufferAccess;
4735 Bool32 fullDrawIndexUint32;
4736 Bool32 imageCubeArray;
4737 Bool32 independentBlend;
4738 Bool32 geometryShader;
4739 Bool32 tessellationShader;
4740 Bool32 sampleRateShading;
4741 Bool32 dualSrcBlend;
4742 Bool32 logicOp;
4743 Bool32 multiDrawIndirect;
4744 Bool32 drawIndirectFirstInstance;
4745 Bool32 depthClamp;
4746 Bool32 depthBiasClamp;
4747 Bool32 fillModeNonSolid;
4748 Bool32 depthBounds;
4749 Bool32 wideLines;
4750 Bool32 largePoints;
4751 Bool32 alphaToOne;
4752 Bool32 multiViewport;
4753 Bool32 samplerAnisotropy;
4754 Bool32 textureCompressionETC2;
4755 Bool32 textureCompressionASTC_LDR;
4756 Bool32 textureCompressionBC;
4757 Bool32 occlusionQueryPrecise;
4758 Bool32 pipelineStatisticsQuery;
4759 Bool32 vertexPipelineStoresAndAtomics;
4760 Bool32 fragmentStoresAndAtomics;
4761 Bool32 shaderTessellationAndGeometryPointSize;
4762 Bool32 shaderImageGatherExtended;
4763 Bool32 shaderStorageImageExtendedFormats;
4764 Bool32 shaderStorageImageMultisample;
4765 Bool32 shaderStorageImageReadWithoutFormat;
4766 Bool32 shaderStorageImageWriteWithoutFormat;
4767 Bool32 shaderUniformBufferArrayDynamicIndexing;
4768 Bool32 shaderSampledImageArrayDynamicIndexing;
4769 Bool32 shaderStorageBufferArrayDynamicIndexing;
4770 Bool32 shaderStorageImageArrayDynamicIndexing;
4771 Bool32 shaderClipDistance;
4772 Bool32 shaderCullDistance;
4773 Bool32 shaderFloat64;
4774 Bool32 shaderInt64;
4775 Bool32 shaderInt16;
4776 Bool32 shaderResourceResidency;
4777 Bool32 shaderResourceMinLod;
4778 Bool32 sparseBinding;
4779 Bool32 sparseResidencyBuffer;
4780 Bool32 sparseResidencyImage2D;
4781 Bool32 sparseResidencyImage3D;
4782 Bool32 sparseResidency2Samples;
4783 Bool32 sparseResidency4Samples;
4784 Bool32 sparseResidency8Samples;
4785 Bool32 sparseResidency16Samples;
4786 Bool32 sparseResidencyAliased;
4787 Bool32 variableMultisampleRate;
4788 Bool32 inheritedQueries;
4789 };
4790 static_assert( sizeof( PhysicalDeviceFeatures ) == sizeof( VkPhysicalDeviceFeatures ), "struct and wrapper have different size!" );
4791
4792 struct PhysicalDeviceSparseProperties
4793 {
4794 operator const VkPhysicalDeviceSparseProperties&() const
4795 {
4796 return *reinterpret_cast<const VkPhysicalDeviceSparseProperties*>(this);
4797 }
4798
4799 bool operator==( PhysicalDeviceSparseProperties const& rhs ) const
4800 {
4801 return ( residencyStandard2DBlockShape == rhs.residencyStandard2DBlockShape )
4802 && ( residencyStandard2DMultisampleBlockShape == rhs.residencyStandard2DMultisampleBlockShape )
4803 && ( residencyStandard3DBlockShape == rhs.residencyStandard3DBlockShape )
4804 && ( residencyAlignedMipSize == rhs.residencyAlignedMipSize )
4805 && ( residencyNonResidentStrict == rhs.residencyNonResidentStrict );
4806 }
4807
4808 bool operator!=( PhysicalDeviceSparseProperties const& rhs ) const
4809 {
4810 return !operator==( rhs );
4811 }
4812
4813 Bool32 residencyStandard2DBlockShape;
4814 Bool32 residencyStandard2DMultisampleBlockShape;
4815 Bool32 residencyStandard3DBlockShape;
4816 Bool32 residencyAlignedMipSize;
4817 Bool32 residencyNonResidentStrict;
4818 };
4819 static_assert( sizeof( PhysicalDeviceSparseProperties ) == sizeof( VkPhysicalDeviceSparseProperties ), "struct and wrapper have different size!" );
4820
4821 struct DrawIndirectCommand
4822 {
4823 DrawIndirectCommand( uint32_t vertexCount_ = 0, uint32_t instanceCount_ = 0, uint32_t firstVertex_ = 0, uint32_t firstInstance_ = 0 )
4824 : vertexCount( vertexCount_ )
4825 , instanceCount( instanceCount_ )
4826 , firstVertex( firstVertex_ )
4827 , firstInstance( firstInstance_ )
4828 {
4829 }
4830
4831 DrawIndirectCommand( VkDrawIndirectCommand const & rhs )
4832 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004833 memcpy( this, &rhs, sizeof( DrawIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004834 }
4835
4836 DrawIndirectCommand& operator=( VkDrawIndirectCommand const & rhs )
4837 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004838 memcpy( this, &rhs, sizeof( DrawIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004839 return *this;
4840 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004841 DrawIndirectCommand& setVertexCount( uint32_t vertexCount_ )
4842 {
4843 vertexCount = vertexCount_;
4844 return *this;
4845 }
4846
4847 DrawIndirectCommand& setInstanceCount( uint32_t instanceCount_ )
4848 {
4849 instanceCount = instanceCount_;
4850 return *this;
4851 }
4852
4853 DrawIndirectCommand& setFirstVertex( uint32_t firstVertex_ )
4854 {
4855 firstVertex = firstVertex_;
4856 return *this;
4857 }
4858
4859 DrawIndirectCommand& setFirstInstance( uint32_t firstInstance_ )
4860 {
4861 firstInstance = firstInstance_;
4862 return *this;
4863 }
4864
4865 operator const VkDrawIndirectCommand&() const
4866 {
4867 return *reinterpret_cast<const VkDrawIndirectCommand*>(this);
4868 }
4869
4870 bool operator==( DrawIndirectCommand const& rhs ) const
4871 {
4872 return ( vertexCount == rhs.vertexCount )
4873 && ( instanceCount == rhs.instanceCount )
4874 && ( firstVertex == rhs.firstVertex )
4875 && ( firstInstance == rhs.firstInstance );
4876 }
4877
4878 bool operator!=( DrawIndirectCommand const& rhs ) const
4879 {
4880 return !operator==( rhs );
4881 }
4882
4883 uint32_t vertexCount;
4884 uint32_t instanceCount;
4885 uint32_t firstVertex;
4886 uint32_t firstInstance;
4887 };
4888 static_assert( sizeof( DrawIndirectCommand ) == sizeof( VkDrawIndirectCommand ), "struct and wrapper have different size!" );
4889
4890 struct DrawIndexedIndirectCommand
4891 {
4892 DrawIndexedIndirectCommand( uint32_t indexCount_ = 0, uint32_t instanceCount_ = 0, uint32_t firstIndex_ = 0, int32_t vertexOffset_ = 0, uint32_t firstInstance_ = 0 )
4893 : indexCount( indexCount_ )
4894 , instanceCount( instanceCount_ )
4895 , firstIndex( firstIndex_ )
4896 , vertexOffset( vertexOffset_ )
4897 , firstInstance( firstInstance_ )
4898 {
4899 }
4900
4901 DrawIndexedIndirectCommand( VkDrawIndexedIndirectCommand const & rhs )
4902 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004903 memcpy( this, &rhs, sizeof( DrawIndexedIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004904 }
4905
4906 DrawIndexedIndirectCommand& operator=( VkDrawIndexedIndirectCommand const & rhs )
4907 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004908 memcpy( this, &rhs, sizeof( DrawIndexedIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004909 return *this;
4910 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004911 DrawIndexedIndirectCommand& setIndexCount( uint32_t indexCount_ )
4912 {
4913 indexCount = indexCount_;
4914 return *this;
4915 }
4916
4917 DrawIndexedIndirectCommand& setInstanceCount( uint32_t instanceCount_ )
4918 {
4919 instanceCount = instanceCount_;
4920 return *this;
4921 }
4922
4923 DrawIndexedIndirectCommand& setFirstIndex( uint32_t firstIndex_ )
4924 {
4925 firstIndex = firstIndex_;
4926 return *this;
4927 }
4928
4929 DrawIndexedIndirectCommand& setVertexOffset( int32_t vertexOffset_ )
4930 {
4931 vertexOffset = vertexOffset_;
4932 return *this;
4933 }
4934
4935 DrawIndexedIndirectCommand& setFirstInstance( uint32_t firstInstance_ )
4936 {
4937 firstInstance = firstInstance_;
4938 return *this;
4939 }
4940
4941 operator const VkDrawIndexedIndirectCommand&() const
4942 {
4943 return *reinterpret_cast<const VkDrawIndexedIndirectCommand*>(this);
4944 }
4945
4946 bool operator==( DrawIndexedIndirectCommand const& rhs ) const
4947 {
4948 return ( indexCount == rhs.indexCount )
4949 && ( instanceCount == rhs.instanceCount )
4950 && ( firstIndex == rhs.firstIndex )
4951 && ( vertexOffset == rhs.vertexOffset )
4952 && ( firstInstance == rhs.firstInstance );
4953 }
4954
4955 bool operator!=( DrawIndexedIndirectCommand const& rhs ) const
4956 {
4957 return !operator==( rhs );
4958 }
4959
4960 uint32_t indexCount;
4961 uint32_t instanceCount;
4962 uint32_t firstIndex;
4963 int32_t vertexOffset;
4964 uint32_t firstInstance;
4965 };
4966 static_assert( sizeof( DrawIndexedIndirectCommand ) == sizeof( VkDrawIndexedIndirectCommand ), "struct and wrapper have different size!" );
4967
4968 struct DispatchIndirectCommand
4969 {
4970 DispatchIndirectCommand( uint32_t x_ = 0, uint32_t y_ = 0, uint32_t z_ = 0 )
4971 : x( x_ )
4972 , y( y_ )
4973 , z( z_ )
4974 {
4975 }
4976
4977 DispatchIndirectCommand( VkDispatchIndirectCommand const & rhs )
4978 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004979 memcpy( this, &rhs, sizeof( DispatchIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004980 }
4981
4982 DispatchIndirectCommand& operator=( VkDispatchIndirectCommand const & rhs )
4983 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004984 memcpy( this, &rhs, sizeof( DispatchIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004985 return *this;
4986 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004987 DispatchIndirectCommand& setX( uint32_t x_ )
4988 {
4989 x = x_;
4990 return *this;
4991 }
4992
4993 DispatchIndirectCommand& setY( uint32_t y_ )
4994 {
4995 y = y_;
4996 return *this;
4997 }
4998
4999 DispatchIndirectCommand& setZ( uint32_t z_ )
5000 {
5001 z = z_;
5002 return *this;
5003 }
5004
5005 operator const VkDispatchIndirectCommand&() const
5006 {
5007 return *reinterpret_cast<const VkDispatchIndirectCommand*>(this);
5008 }
5009
5010 bool operator==( DispatchIndirectCommand const& rhs ) const
5011 {
5012 return ( x == rhs.x )
5013 && ( y == rhs.y )
5014 && ( z == rhs.z );
5015 }
5016
5017 bool operator!=( DispatchIndirectCommand const& rhs ) const
5018 {
5019 return !operator==( rhs );
5020 }
5021
5022 uint32_t x;
5023 uint32_t y;
5024 uint32_t z;
5025 };
5026 static_assert( sizeof( DispatchIndirectCommand ) == sizeof( VkDispatchIndirectCommand ), "struct and wrapper have different size!" );
5027
5028 struct DisplayPlanePropertiesKHR
5029 {
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005030 operator const VkDisplayPlanePropertiesKHR&() const
5031 {
5032 return *reinterpret_cast<const VkDisplayPlanePropertiesKHR*>(this);
5033 }
5034
5035 bool operator==( DisplayPlanePropertiesKHR const& rhs ) const
5036 {
5037 return ( currentDisplay == rhs.currentDisplay )
5038 && ( currentStackIndex == rhs.currentStackIndex );
5039 }
5040
5041 bool operator!=( DisplayPlanePropertiesKHR const& rhs ) const
5042 {
5043 return !operator==( rhs );
5044 }
5045
5046 DisplayKHR currentDisplay;
5047 uint32_t currentStackIndex;
5048 };
5049 static_assert( sizeof( DisplayPlanePropertiesKHR ) == sizeof( VkDisplayPlanePropertiesKHR ), "struct and wrapper have different size!" );
5050
5051 struct DisplayModeParametersKHR
5052 {
5053 DisplayModeParametersKHR( Extent2D visibleRegion_ = Extent2D(), uint32_t refreshRate_ = 0 )
5054 : visibleRegion( visibleRegion_ )
5055 , refreshRate( refreshRate_ )
5056 {
5057 }
5058
5059 DisplayModeParametersKHR( VkDisplayModeParametersKHR const & rhs )
5060 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005061 memcpy( this, &rhs, sizeof( DisplayModeParametersKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005062 }
5063
5064 DisplayModeParametersKHR& operator=( VkDisplayModeParametersKHR const & rhs )
5065 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005066 memcpy( this, &rhs, sizeof( DisplayModeParametersKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005067 return *this;
5068 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005069 DisplayModeParametersKHR& setVisibleRegion( Extent2D visibleRegion_ )
5070 {
5071 visibleRegion = visibleRegion_;
5072 return *this;
5073 }
5074
5075 DisplayModeParametersKHR& setRefreshRate( uint32_t refreshRate_ )
5076 {
5077 refreshRate = refreshRate_;
5078 return *this;
5079 }
5080
5081 operator const VkDisplayModeParametersKHR&() const
5082 {
5083 return *reinterpret_cast<const VkDisplayModeParametersKHR*>(this);
5084 }
5085
5086 bool operator==( DisplayModeParametersKHR const& rhs ) const
5087 {
5088 return ( visibleRegion == rhs.visibleRegion )
5089 && ( refreshRate == rhs.refreshRate );
5090 }
5091
5092 bool operator!=( DisplayModeParametersKHR const& rhs ) const
5093 {
5094 return !operator==( rhs );
5095 }
5096
5097 Extent2D visibleRegion;
5098 uint32_t refreshRate;
5099 };
5100 static_assert( sizeof( DisplayModeParametersKHR ) == sizeof( VkDisplayModeParametersKHR ), "struct and wrapper have different size!" );
5101
5102 struct DisplayModePropertiesKHR
5103 {
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005104 operator const VkDisplayModePropertiesKHR&() const
5105 {
5106 return *reinterpret_cast<const VkDisplayModePropertiesKHR*>(this);
5107 }
5108
5109 bool operator==( DisplayModePropertiesKHR const& rhs ) const
5110 {
5111 return ( displayMode == rhs.displayMode )
5112 && ( parameters == rhs.parameters );
5113 }
5114
5115 bool operator!=( DisplayModePropertiesKHR const& rhs ) const
5116 {
5117 return !operator==( rhs );
5118 }
5119
5120 DisplayModeKHR displayMode;
5121 DisplayModeParametersKHR parameters;
5122 };
5123 static_assert( sizeof( DisplayModePropertiesKHR ) == sizeof( VkDisplayModePropertiesKHR ), "struct and wrapper have different size!" );
5124
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005125 struct RectLayerKHR
5126 {
5127 RectLayerKHR( Offset2D offset_ = Offset2D(), Extent2D extent_ = Extent2D(), uint32_t layer_ = 0 )
5128 : offset( offset_ )
5129 , extent( extent_ )
5130 , layer( layer_ )
5131 {
5132 }
5133
5134 RectLayerKHR( VkRectLayerKHR const & rhs )
5135 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005136 memcpy( this, &rhs, sizeof( RectLayerKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005137 }
5138
5139 RectLayerKHR& operator=( VkRectLayerKHR const & rhs )
5140 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005141 memcpy( this, &rhs, sizeof( RectLayerKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005142 return *this;
5143 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005144 RectLayerKHR& setOffset( Offset2D offset_ )
5145 {
5146 offset = offset_;
5147 return *this;
5148 }
5149
5150 RectLayerKHR& setExtent( Extent2D extent_ )
5151 {
5152 extent = extent_;
5153 return *this;
5154 }
5155
5156 RectLayerKHR& setLayer( uint32_t layer_ )
5157 {
5158 layer = layer_;
5159 return *this;
5160 }
5161
5162 operator const VkRectLayerKHR&() const
5163 {
5164 return *reinterpret_cast<const VkRectLayerKHR*>(this);
5165 }
5166
5167 bool operator==( RectLayerKHR const& rhs ) const
5168 {
5169 return ( offset == rhs.offset )
5170 && ( extent == rhs.extent )
5171 && ( layer == rhs.layer );
5172 }
5173
5174 bool operator!=( RectLayerKHR const& rhs ) const
5175 {
5176 return !operator==( rhs );
5177 }
5178
5179 Offset2D offset;
5180 Extent2D extent;
5181 uint32_t layer;
5182 };
5183 static_assert( sizeof( RectLayerKHR ) == sizeof( VkRectLayerKHR ), "struct and wrapper have different size!" );
5184
5185 struct PresentRegionKHR
5186 {
5187 PresentRegionKHR( uint32_t rectangleCount_ = 0, const RectLayerKHR* pRectangles_ = nullptr )
5188 : rectangleCount( rectangleCount_ )
5189 , pRectangles( pRectangles_ )
5190 {
5191 }
5192
5193 PresentRegionKHR( VkPresentRegionKHR const & rhs )
5194 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005195 memcpy( this, &rhs, sizeof( PresentRegionKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005196 }
5197
5198 PresentRegionKHR& operator=( VkPresentRegionKHR const & rhs )
5199 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005200 memcpy( this, &rhs, sizeof( PresentRegionKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005201 return *this;
5202 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005203 PresentRegionKHR& setRectangleCount( uint32_t rectangleCount_ )
5204 {
5205 rectangleCount = rectangleCount_;
5206 return *this;
5207 }
5208
5209 PresentRegionKHR& setPRectangles( const RectLayerKHR* pRectangles_ )
5210 {
5211 pRectangles = pRectangles_;
5212 return *this;
5213 }
5214
5215 operator const VkPresentRegionKHR&() const
5216 {
5217 return *reinterpret_cast<const VkPresentRegionKHR*>(this);
5218 }
5219
5220 bool operator==( PresentRegionKHR const& rhs ) const
5221 {
5222 return ( rectangleCount == rhs.rectangleCount )
5223 && ( pRectangles == rhs.pRectangles );
5224 }
5225
5226 bool operator!=( PresentRegionKHR const& rhs ) const
5227 {
5228 return !operator==( rhs );
5229 }
5230
5231 uint32_t rectangleCount;
5232 const RectLayerKHR* pRectangles;
5233 };
5234 static_assert( sizeof( PresentRegionKHR ) == sizeof( VkPresentRegionKHR ), "struct and wrapper have different size!" );
5235
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005236 struct XYColorEXT
5237 {
5238 XYColorEXT( float x_ = 0, float y_ = 0 )
5239 : x( x_ )
5240 , y( y_ )
5241 {
5242 }
5243
5244 XYColorEXT( VkXYColorEXT const & rhs )
5245 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005246 memcpy( this, &rhs, sizeof( XYColorEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005247 }
5248
5249 XYColorEXT& operator=( VkXYColorEXT const & rhs )
5250 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005251 memcpy( this, &rhs, sizeof( XYColorEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005252 return *this;
5253 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005254 XYColorEXT& setX( float x_ )
5255 {
5256 x = x_;
5257 return *this;
5258 }
5259
5260 XYColorEXT& setY( float y_ )
5261 {
5262 y = y_;
5263 return *this;
5264 }
5265
5266 operator const VkXYColorEXT&() const
5267 {
5268 return *reinterpret_cast<const VkXYColorEXT*>(this);
5269 }
5270
5271 bool operator==( XYColorEXT const& rhs ) const
5272 {
5273 return ( x == rhs.x )
5274 && ( y == rhs.y );
5275 }
5276
5277 bool operator!=( XYColorEXT const& rhs ) const
5278 {
5279 return !operator==( rhs );
5280 }
5281
5282 float x;
5283 float y;
5284 };
5285 static_assert( sizeof( XYColorEXT ) == sizeof( VkXYColorEXT ), "struct and wrapper have different size!" );
5286
5287 struct RefreshCycleDurationGOOGLE
5288 {
5289 RefreshCycleDurationGOOGLE( uint64_t refreshDuration_ = 0 )
5290 : refreshDuration( refreshDuration_ )
5291 {
5292 }
5293
5294 RefreshCycleDurationGOOGLE( VkRefreshCycleDurationGOOGLE const & rhs )
5295 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005296 memcpy( this, &rhs, sizeof( RefreshCycleDurationGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005297 }
5298
5299 RefreshCycleDurationGOOGLE& operator=( VkRefreshCycleDurationGOOGLE const & rhs )
5300 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005301 memcpy( this, &rhs, sizeof( RefreshCycleDurationGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005302 return *this;
5303 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005304 RefreshCycleDurationGOOGLE& setRefreshDuration( uint64_t refreshDuration_ )
5305 {
5306 refreshDuration = refreshDuration_;
5307 return *this;
5308 }
5309
5310 operator const VkRefreshCycleDurationGOOGLE&() const
5311 {
5312 return *reinterpret_cast<const VkRefreshCycleDurationGOOGLE*>(this);
5313 }
5314
5315 bool operator==( RefreshCycleDurationGOOGLE const& rhs ) const
5316 {
5317 return ( refreshDuration == rhs.refreshDuration );
5318 }
5319
5320 bool operator!=( RefreshCycleDurationGOOGLE const& rhs ) const
5321 {
5322 return !operator==( rhs );
5323 }
5324
5325 uint64_t refreshDuration;
5326 };
5327 static_assert( sizeof( RefreshCycleDurationGOOGLE ) == sizeof( VkRefreshCycleDurationGOOGLE ), "struct and wrapper have different size!" );
5328
5329 struct PastPresentationTimingGOOGLE
5330 {
5331 PastPresentationTimingGOOGLE( uint32_t presentID_ = 0, uint64_t desiredPresentTime_ = 0, uint64_t actualPresentTime_ = 0, uint64_t earliestPresentTime_ = 0, uint64_t presentMargin_ = 0 )
5332 : presentID( presentID_ )
5333 , desiredPresentTime( desiredPresentTime_ )
5334 , actualPresentTime( actualPresentTime_ )
5335 , earliestPresentTime( earliestPresentTime_ )
5336 , presentMargin( presentMargin_ )
5337 {
5338 }
5339
5340 PastPresentationTimingGOOGLE( VkPastPresentationTimingGOOGLE const & rhs )
5341 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005342 memcpy( this, &rhs, sizeof( PastPresentationTimingGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005343 }
5344
5345 PastPresentationTimingGOOGLE& operator=( VkPastPresentationTimingGOOGLE const & rhs )
5346 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005347 memcpy( this, &rhs, sizeof( PastPresentationTimingGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005348 return *this;
5349 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005350 PastPresentationTimingGOOGLE& setPresentID( uint32_t presentID_ )
5351 {
5352 presentID = presentID_;
5353 return *this;
5354 }
5355
5356 PastPresentationTimingGOOGLE& setDesiredPresentTime( uint64_t desiredPresentTime_ )
5357 {
5358 desiredPresentTime = desiredPresentTime_;
5359 return *this;
5360 }
5361
5362 PastPresentationTimingGOOGLE& setActualPresentTime( uint64_t actualPresentTime_ )
5363 {
5364 actualPresentTime = actualPresentTime_;
5365 return *this;
5366 }
5367
5368 PastPresentationTimingGOOGLE& setEarliestPresentTime( uint64_t earliestPresentTime_ )
5369 {
5370 earliestPresentTime = earliestPresentTime_;
5371 return *this;
5372 }
5373
5374 PastPresentationTimingGOOGLE& setPresentMargin( uint64_t presentMargin_ )
5375 {
5376 presentMargin = presentMargin_;
5377 return *this;
5378 }
5379
5380 operator const VkPastPresentationTimingGOOGLE&() const
5381 {
5382 return *reinterpret_cast<const VkPastPresentationTimingGOOGLE*>(this);
5383 }
5384
5385 bool operator==( PastPresentationTimingGOOGLE const& rhs ) const
5386 {
5387 return ( presentID == rhs.presentID )
5388 && ( desiredPresentTime == rhs.desiredPresentTime )
5389 && ( actualPresentTime == rhs.actualPresentTime )
5390 && ( earliestPresentTime == rhs.earliestPresentTime )
5391 && ( presentMargin == rhs.presentMargin );
5392 }
5393
5394 bool operator!=( PastPresentationTimingGOOGLE const& rhs ) const
5395 {
5396 return !operator==( rhs );
5397 }
5398
5399 uint32_t presentID;
5400 uint64_t desiredPresentTime;
5401 uint64_t actualPresentTime;
5402 uint64_t earliestPresentTime;
5403 uint64_t presentMargin;
5404 };
5405 static_assert( sizeof( PastPresentationTimingGOOGLE ) == sizeof( VkPastPresentationTimingGOOGLE ), "struct and wrapper have different size!" );
5406
5407 struct PresentTimeGOOGLE
5408 {
5409 PresentTimeGOOGLE( uint32_t presentID_ = 0, uint64_t desiredPresentTime_ = 0 )
5410 : presentID( presentID_ )
5411 , desiredPresentTime( desiredPresentTime_ )
5412 {
5413 }
5414
5415 PresentTimeGOOGLE( VkPresentTimeGOOGLE const & rhs )
5416 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005417 memcpy( this, &rhs, sizeof( PresentTimeGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005418 }
5419
5420 PresentTimeGOOGLE& operator=( VkPresentTimeGOOGLE const & rhs )
5421 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005422 memcpy( this, &rhs, sizeof( PresentTimeGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005423 return *this;
5424 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005425 PresentTimeGOOGLE& setPresentID( uint32_t presentID_ )
5426 {
5427 presentID = presentID_;
5428 return *this;
5429 }
5430
5431 PresentTimeGOOGLE& setDesiredPresentTime( uint64_t desiredPresentTime_ )
5432 {
5433 desiredPresentTime = desiredPresentTime_;
5434 return *this;
5435 }
5436
5437 operator const VkPresentTimeGOOGLE&() const
5438 {
5439 return *reinterpret_cast<const VkPresentTimeGOOGLE*>(this);
5440 }
5441
5442 bool operator==( PresentTimeGOOGLE const& rhs ) const
5443 {
5444 return ( presentID == rhs.presentID )
5445 && ( desiredPresentTime == rhs.desiredPresentTime );
5446 }
5447
5448 bool operator!=( PresentTimeGOOGLE const& rhs ) const
5449 {
5450 return !operator==( rhs );
5451 }
5452
5453 uint32_t presentID;
5454 uint64_t desiredPresentTime;
5455 };
5456 static_assert( sizeof( PresentTimeGOOGLE ) == sizeof( VkPresentTimeGOOGLE ), "struct and wrapper have different size!" );
5457
Mark Young0f183a82017-02-28 09:58:04 -07005458 struct ViewportWScalingNV
5459 {
5460 ViewportWScalingNV( float xcoeff_ = 0, float ycoeff_ = 0 )
5461 : xcoeff( xcoeff_ )
5462 , ycoeff( ycoeff_ )
5463 {
5464 }
5465
5466 ViewportWScalingNV( VkViewportWScalingNV const & rhs )
5467 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005468 memcpy( this, &rhs, sizeof( ViewportWScalingNV ) );
Mark Young0f183a82017-02-28 09:58:04 -07005469 }
5470
5471 ViewportWScalingNV& operator=( VkViewportWScalingNV const & rhs )
5472 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005473 memcpy( this, &rhs, sizeof( ViewportWScalingNV ) );
Mark Young0f183a82017-02-28 09:58:04 -07005474 return *this;
5475 }
Mark Young0f183a82017-02-28 09:58:04 -07005476 ViewportWScalingNV& setXcoeff( float xcoeff_ )
5477 {
5478 xcoeff = xcoeff_;
5479 return *this;
5480 }
5481
5482 ViewportWScalingNV& setYcoeff( float ycoeff_ )
5483 {
5484 ycoeff = ycoeff_;
5485 return *this;
5486 }
5487
5488 operator const VkViewportWScalingNV&() const
5489 {
5490 return *reinterpret_cast<const VkViewportWScalingNV*>(this);
5491 }
5492
5493 bool operator==( ViewportWScalingNV const& rhs ) const
5494 {
5495 return ( xcoeff == rhs.xcoeff )
5496 && ( ycoeff == rhs.ycoeff );
5497 }
5498
5499 bool operator!=( ViewportWScalingNV const& rhs ) const
5500 {
5501 return !operator==( rhs );
5502 }
5503
5504 float xcoeff;
5505 float ycoeff;
5506 };
5507 static_assert( sizeof( ViewportWScalingNV ) == sizeof( VkViewportWScalingNV ), "struct and wrapper have different size!" );
5508
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06005509 struct SampleLocationEXT
5510 {
5511 SampleLocationEXT( float x_ = 0, float y_ = 0 )
5512 : x( x_ )
5513 , y( y_ )
5514 {
5515 }
5516
5517 SampleLocationEXT( VkSampleLocationEXT const & rhs )
5518 {
5519 memcpy( this, &rhs, sizeof( SampleLocationEXT ) );
5520 }
5521
5522 SampleLocationEXT& operator=( VkSampleLocationEXT const & rhs )
5523 {
5524 memcpy( this, &rhs, sizeof( SampleLocationEXT ) );
5525 return *this;
5526 }
5527 SampleLocationEXT& setX( float x_ )
5528 {
5529 x = x_;
5530 return *this;
5531 }
5532
5533 SampleLocationEXT& setY( float y_ )
5534 {
5535 y = y_;
5536 return *this;
5537 }
5538
5539 operator const VkSampleLocationEXT&() const
5540 {
5541 return *reinterpret_cast<const VkSampleLocationEXT*>(this);
5542 }
5543
5544 bool operator==( SampleLocationEXT const& rhs ) const
5545 {
5546 return ( x == rhs.x )
5547 && ( y == rhs.y );
5548 }
5549
5550 bool operator!=( SampleLocationEXT const& rhs ) const
5551 {
5552 return !operator==( rhs );
5553 }
5554
5555 float x;
5556 float y;
5557 };
5558 static_assert( sizeof( SampleLocationEXT ) == sizeof( VkSampleLocationEXT ), "struct and wrapper have different size!" );
5559
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005560 enum class ImageLayout
5561 {
5562 eUndefined = VK_IMAGE_LAYOUT_UNDEFINED,
5563 eGeneral = VK_IMAGE_LAYOUT_GENERAL,
5564 eColorAttachmentOptimal = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
5565 eDepthStencilAttachmentOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
5566 eDepthStencilReadOnlyOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,
5567 eShaderReadOnlyOptimal = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
5568 eTransferSrcOptimal = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
5569 eTransferDstOptimal = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
5570 ePreinitialized = VK_IMAGE_LAYOUT_PREINITIALIZED,
Mark Lobodzinski54385432017-05-15 10:27:52 -06005571 ePresentSrcKHR = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR,
Lenny Komowb79f04a2017-09-18 17:07:00 -06005572 eSharedPresentKHR = VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR,
5573 eDepthReadOnlyStencilAttachmentOptimalKHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR,
5574 eDepthAttachmentStencilReadOnlyOptimalKHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005575 };
5576
5577 struct DescriptorImageInfo
5578 {
5579 DescriptorImageInfo( Sampler sampler_ = Sampler(), ImageView imageView_ = ImageView(), ImageLayout imageLayout_ = ImageLayout::eUndefined )
5580 : sampler( sampler_ )
5581 , imageView( imageView_ )
5582 , imageLayout( imageLayout_ )
5583 {
5584 }
5585
5586 DescriptorImageInfo( VkDescriptorImageInfo const & rhs )
5587 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005588 memcpy( this, &rhs, sizeof( DescriptorImageInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005589 }
5590
5591 DescriptorImageInfo& operator=( VkDescriptorImageInfo const & rhs )
5592 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005593 memcpy( this, &rhs, sizeof( DescriptorImageInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005594 return *this;
5595 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005596 DescriptorImageInfo& setSampler( Sampler sampler_ )
5597 {
5598 sampler = sampler_;
5599 return *this;
5600 }
5601
5602 DescriptorImageInfo& setImageView( ImageView imageView_ )
5603 {
5604 imageView = imageView_;
5605 return *this;
5606 }
5607
5608 DescriptorImageInfo& setImageLayout( ImageLayout imageLayout_ )
5609 {
5610 imageLayout = imageLayout_;
5611 return *this;
5612 }
5613
5614 operator const VkDescriptorImageInfo&() const
5615 {
5616 return *reinterpret_cast<const VkDescriptorImageInfo*>(this);
5617 }
5618
5619 bool operator==( DescriptorImageInfo const& rhs ) const
5620 {
5621 return ( sampler == rhs.sampler )
5622 && ( imageView == rhs.imageView )
5623 && ( imageLayout == rhs.imageLayout );
5624 }
5625
5626 bool operator!=( DescriptorImageInfo const& rhs ) const
5627 {
5628 return !operator==( rhs );
5629 }
5630
5631 Sampler sampler;
5632 ImageView imageView;
5633 ImageLayout imageLayout;
5634 };
5635 static_assert( sizeof( DescriptorImageInfo ) == sizeof( VkDescriptorImageInfo ), "struct and wrapper have different size!" );
5636
5637 struct AttachmentReference
5638 {
5639 AttachmentReference( uint32_t attachment_ = 0, ImageLayout layout_ = ImageLayout::eUndefined )
5640 : attachment( attachment_ )
5641 , layout( layout_ )
5642 {
5643 }
5644
5645 AttachmentReference( VkAttachmentReference const & rhs )
5646 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005647 memcpy( this, &rhs, sizeof( AttachmentReference ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005648 }
5649
5650 AttachmentReference& operator=( VkAttachmentReference const & rhs )
5651 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005652 memcpy( this, &rhs, sizeof( AttachmentReference ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005653 return *this;
5654 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005655 AttachmentReference& setAttachment( uint32_t attachment_ )
5656 {
5657 attachment = attachment_;
5658 return *this;
5659 }
5660
5661 AttachmentReference& setLayout( ImageLayout layout_ )
5662 {
5663 layout = layout_;
5664 return *this;
5665 }
5666
5667 operator const VkAttachmentReference&() const
5668 {
5669 return *reinterpret_cast<const VkAttachmentReference*>(this);
5670 }
5671
5672 bool operator==( AttachmentReference const& rhs ) const
5673 {
5674 return ( attachment == rhs.attachment )
5675 && ( layout == rhs.layout );
5676 }
5677
5678 bool operator!=( AttachmentReference const& rhs ) const
5679 {
5680 return !operator==( rhs );
5681 }
5682
5683 uint32_t attachment;
5684 ImageLayout layout;
5685 };
5686 static_assert( sizeof( AttachmentReference ) == sizeof( VkAttachmentReference ), "struct and wrapper have different size!" );
5687
5688 enum class AttachmentLoadOp
5689 {
5690 eLoad = VK_ATTACHMENT_LOAD_OP_LOAD,
5691 eClear = VK_ATTACHMENT_LOAD_OP_CLEAR,
5692 eDontCare = VK_ATTACHMENT_LOAD_OP_DONT_CARE
5693 };
5694
5695 enum class AttachmentStoreOp
5696 {
5697 eStore = VK_ATTACHMENT_STORE_OP_STORE,
5698 eDontCare = VK_ATTACHMENT_STORE_OP_DONT_CARE
5699 };
5700
5701 enum class ImageType
5702 {
5703 e1D = VK_IMAGE_TYPE_1D,
5704 e2D = VK_IMAGE_TYPE_2D,
5705 e3D = VK_IMAGE_TYPE_3D
5706 };
5707
5708 enum class ImageTiling
5709 {
5710 eOptimal = VK_IMAGE_TILING_OPTIMAL,
5711 eLinear = VK_IMAGE_TILING_LINEAR
5712 };
5713
5714 enum class ImageViewType
5715 {
5716 e1D = VK_IMAGE_VIEW_TYPE_1D,
5717 e2D = VK_IMAGE_VIEW_TYPE_2D,
5718 e3D = VK_IMAGE_VIEW_TYPE_3D,
5719 eCube = VK_IMAGE_VIEW_TYPE_CUBE,
5720 e1DArray = VK_IMAGE_VIEW_TYPE_1D_ARRAY,
5721 e2DArray = VK_IMAGE_VIEW_TYPE_2D_ARRAY,
5722 eCubeArray = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
5723 };
5724
5725 enum class CommandBufferLevel
5726 {
5727 ePrimary = VK_COMMAND_BUFFER_LEVEL_PRIMARY,
5728 eSecondary = VK_COMMAND_BUFFER_LEVEL_SECONDARY
5729 };
5730
5731 enum class ComponentSwizzle
5732 {
5733 eIdentity = VK_COMPONENT_SWIZZLE_IDENTITY,
5734 eZero = VK_COMPONENT_SWIZZLE_ZERO,
5735 eOne = VK_COMPONENT_SWIZZLE_ONE,
5736 eR = VK_COMPONENT_SWIZZLE_R,
5737 eG = VK_COMPONENT_SWIZZLE_G,
5738 eB = VK_COMPONENT_SWIZZLE_B,
5739 eA = VK_COMPONENT_SWIZZLE_A
5740 };
5741
5742 struct ComponentMapping
5743 {
5744 ComponentMapping( ComponentSwizzle r_ = ComponentSwizzle::eIdentity, ComponentSwizzle g_ = ComponentSwizzle::eIdentity, ComponentSwizzle b_ = ComponentSwizzle::eIdentity, ComponentSwizzle a_ = ComponentSwizzle::eIdentity )
5745 : r( r_ )
5746 , g( g_ )
5747 , b( b_ )
5748 , a( a_ )
5749 {
5750 }
5751
5752 ComponentMapping( VkComponentMapping const & rhs )
5753 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005754 memcpy( this, &rhs, sizeof( ComponentMapping ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005755 }
5756
5757 ComponentMapping& operator=( VkComponentMapping const & rhs )
5758 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005759 memcpy( this, &rhs, sizeof( ComponentMapping ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005760 return *this;
5761 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005762 ComponentMapping& setR( ComponentSwizzle r_ )
5763 {
5764 r = r_;
5765 return *this;
5766 }
5767
5768 ComponentMapping& setG( ComponentSwizzle g_ )
5769 {
5770 g = g_;
5771 return *this;
5772 }
5773
5774 ComponentMapping& setB( ComponentSwizzle b_ )
5775 {
5776 b = b_;
5777 return *this;
5778 }
5779
5780 ComponentMapping& setA( ComponentSwizzle a_ )
5781 {
5782 a = a_;
5783 return *this;
5784 }
5785
5786 operator const VkComponentMapping&() const
5787 {
5788 return *reinterpret_cast<const VkComponentMapping*>(this);
5789 }
5790
5791 bool operator==( ComponentMapping const& rhs ) const
5792 {
5793 return ( r == rhs.r )
5794 && ( g == rhs.g )
5795 && ( b == rhs.b )
5796 && ( a == rhs.a );
5797 }
5798
5799 bool operator!=( ComponentMapping const& rhs ) const
5800 {
5801 return !operator==( rhs );
5802 }
5803
5804 ComponentSwizzle r;
5805 ComponentSwizzle g;
5806 ComponentSwizzle b;
5807 ComponentSwizzle a;
5808 };
5809 static_assert( sizeof( ComponentMapping ) == sizeof( VkComponentMapping ), "struct and wrapper have different size!" );
5810
5811 enum class DescriptorType
5812 {
5813 eSampler = VK_DESCRIPTOR_TYPE_SAMPLER,
5814 eCombinedImageSampler = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
5815 eSampledImage = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
5816 eStorageImage = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,
5817 eUniformTexelBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER,
5818 eStorageTexelBuffer = VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER,
5819 eUniformBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
5820 eStorageBuffer = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
5821 eUniformBufferDynamic = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
5822 eStorageBufferDynamic = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC,
5823 eInputAttachment = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
5824 };
5825
5826 struct DescriptorPoolSize
5827 {
5828 DescriptorPoolSize( DescriptorType type_ = DescriptorType::eSampler, uint32_t descriptorCount_ = 0 )
5829 : type( type_ )
5830 , descriptorCount( descriptorCount_ )
5831 {
5832 }
5833
5834 DescriptorPoolSize( VkDescriptorPoolSize const & rhs )
5835 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005836 memcpy( this, &rhs, sizeof( DescriptorPoolSize ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005837 }
5838
5839 DescriptorPoolSize& operator=( VkDescriptorPoolSize const & rhs )
5840 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005841 memcpy( this, &rhs, sizeof( DescriptorPoolSize ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005842 return *this;
5843 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005844 DescriptorPoolSize& setType( DescriptorType type_ )
5845 {
5846 type = type_;
5847 return *this;
5848 }
5849
5850 DescriptorPoolSize& setDescriptorCount( uint32_t descriptorCount_ )
5851 {
5852 descriptorCount = descriptorCount_;
5853 return *this;
5854 }
5855
5856 operator const VkDescriptorPoolSize&() const
5857 {
5858 return *reinterpret_cast<const VkDescriptorPoolSize*>(this);
5859 }
5860
5861 bool operator==( DescriptorPoolSize const& rhs ) const
5862 {
5863 return ( type == rhs.type )
5864 && ( descriptorCount == rhs.descriptorCount );
5865 }
5866
5867 bool operator!=( DescriptorPoolSize const& rhs ) const
5868 {
5869 return !operator==( rhs );
5870 }
5871
5872 DescriptorType type;
5873 uint32_t descriptorCount;
5874 };
5875 static_assert( sizeof( DescriptorPoolSize ) == sizeof( VkDescriptorPoolSize ), "struct and wrapper have different size!" );
5876
Mark Young0f183a82017-02-28 09:58:04 -07005877 struct DescriptorUpdateTemplateEntryKHR
5878 {
5879 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 )
5880 : dstBinding( dstBinding_ )
5881 , dstArrayElement( dstArrayElement_ )
5882 , descriptorCount( descriptorCount_ )
5883 , descriptorType( descriptorType_ )
5884 , offset( offset_ )
5885 , stride( stride_ )
5886 {
5887 }
5888
5889 DescriptorUpdateTemplateEntryKHR( VkDescriptorUpdateTemplateEntryKHR const & rhs )
5890 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005891 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateEntryKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -07005892 }
5893
5894 DescriptorUpdateTemplateEntryKHR& operator=( VkDescriptorUpdateTemplateEntryKHR const & rhs )
5895 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005896 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateEntryKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -07005897 return *this;
5898 }
Mark Young0f183a82017-02-28 09:58:04 -07005899 DescriptorUpdateTemplateEntryKHR& setDstBinding( uint32_t dstBinding_ )
5900 {
5901 dstBinding = dstBinding_;
5902 return *this;
5903 }
5904
5905 DescriptorUpdateTemplateEntryKHR& setDstArrayElement( uint32_t dstArrayElement_ )
5906 {
5907 dstArrayElement = dstArrayElement_;
5908 return *this;
5909 }
5910
5911 DescriptorUpdateTemplateEntryKHR& setDescriptorCount( uint32_t descriptorCount_ )
5912 {
5913 descriptorCount = descriptorCount_;
5914 return *this;
5915 }
5916
5917 DescriptorUpdateTemplateEntryKHR& setDescriptorType( DescriptorType descriptorType_ )
5918 {
5919 descriptorType = descriptorType_;
5920 return *this;
5921 }
5922
5923 DescriptorUpdateTemplateEntryKHR& setOffset( size_t offset_ )
5924 {
5925 offset = offset_;
5926 return *this;
5927 }
5928
5929 DescriptorUpdateTemplateEntryKHR& setStride( size_t stride_ )
5930 {
5931 stride = stride_;
5932 return *this;
5933 }
5934
5935 operator const VkDescriptorUpdateTemplateEntryKHR&() const
5936 {
5937 return *reinterpret_cast<const VkDescriptorUpdateTemplateEntryKHR*>(this);
5938 }
5939
5940 bool operator==( DescriptorUpdateTemplateEntryKHR const& rhs ) const
5941 {
5942 return ( dstBinding == rhs.dstBinding )
5943 && ( dstArrayElement == rhs.dstArrayElement )
5944 && ( descriptorCount == rhs.descriptorCount )
5945 && ( descriptorType == rhs.descriptorType )
5946 && ( offset == rhs.offset )
5947 && ( stride == rhs.stride );
5948 }
5949
5950 bool operator!=( DescriptorUpdateTemplateEntryKHR const& rhs ) const
5951 {
5952 return !operator==( rhs );
5953 }
5954
5955 uint32_t dstBinding;
5956 uint32_t dstArrayElement;
5957 uint32_t descriptorCount;
5958 DescriptorType descriptorType;
5959 size_t offset;
5960 size_t stride;
5961 };
5962 static_assert( sizeof( DescriptorUpdateTemplateEntryKHR ) == sizeof( VkDescriptorUpdateTemplateEntryKHR ), "struct and wrapper have different size!" );
5963
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005964 enum class QueryType
5965 {
5966 eOcclusion = VK_QUERY_TYPE_OCCLUSION,
5967 ePipelineStatistics = VK_QUERY_TYPE_PIPELINE_STATISTICS,
5968 eTimestamp = VK_QUERY_TYPE_TIMESTAMP
5969 };
5970
5971 enum class BorderColor
5972 {
5973 eFloatTransparentBlack = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,
5974 eIntTransparentBlack = VK_BORDER_COLOR_INT_TRANSPARENT_BLACK,
5975 eFloatOpaqueBlack = VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK,
5976 eIntOpaqueBlack = VK_BORDER_COLOR_INT_OPAQUE_BLACK,
5977 eFloatOpaqueWhite = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE,
5978 eIntOpaqueWhite = VK_BORDER_COLOR_INT_OPAQUE_WHITE
5979 };
5980
5981 enum class PipelineBindPoint
5982 {
5983 eGraphics = VK_PIPELINE_BIND_POINT_GRAPHICS,
5984 eCompute = VK_PIPELINE_BIND_POINT_COMPUTE
5985 };
5986
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005987 enum class PipelineCacheHeaderVersion
5988 {
5989 eOne = VK_PIPELINE_CACHE_HEADER_VERSION_ONE
5990 };
5991
5992 enum class PrimitiveTopology
5993 {
5994 ePointList = VK_PRIMITIVE_TOPOLOGY_POINT_LIST,
5995 eLineList = VK_PRIMITIVE_TOPOLOGY_LINE_LIST,
5996 eLineStrip = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP,
5997 eTriangleList = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,
5998 eTriangleStrip = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP,
5999 eTriangleFan = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN,
6000 eLineListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY,
6001 eLineStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY,
6002 eTriangleListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY,
6003 eTriangleStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY,
6004 ePatchList = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
6005 };
6006
6007 enum class SharingMode
6008 {
6009 eExclusive = VK_SHARING_MODE_EXCLUSIVE,
6010 eConcurrent = VK_SHARING_MODE_CONCURRENT
6011 };
6012
6013 enum class IndexType
6014 {
6015 eUint16 = VK_INDEX_TYPE_UINT16,
6016 eUint32 = VK_INDEX_TYPE_UINT32
6017 };
6018
6019 enum class Filter
6020 {
6021 eNearest = VK_FILTER_NEAREST,
6022 eLinear = VK_FILTER_LINEAR,
6023 eCubicIMG = VK_FILTER_CUBIC_IMG
6024 };
6025
6026 enum class SamplerMipmapMode
6027 {
6028 eNearest = VK_SAMPLER_MIPMAP_MODE_NEAREST,
6029 eLinear = VK_SAMPLER_MIPMAP_MODE_LINEAR
6030 };
6031
6032 enum class SamplerAddressMode
6033 {
6034 eRepeat = VK_SAMPLER_ADDRESS_MODE_REPEAT,
6035 eMirroredRepeat = VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT,
6036 eClampToEdge = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
6037 eClampToBorder = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER,
6038 eMirrorClampToEdge = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE
6039 };
6040
6041 enum class CompareOp
6042 {
6043 eNever = VK_COMPARE_OP_NEVER,
6044 eLess = VK_COMPARE_OP_LESS,
6045 eEqual = VK_COMPARE_OP_EQUAL,
6046 eLessOrEqual = VK_COMPARE_OP_LESS_OR_EQUAL,
6047 eGreater = VK_COMPARE_OP_GREATER,
6048 eNotEqual = VK_COMPARE_OP_NOT_EQUAL,
6049 eGreaterOrEqual = VK_COMPARE_OP_GREATER_OR_EQUAL,
6050 eAlways = VK_COMPARE_OP_ALWAYS
6051 };
6052
6053 enum class PolygonMode
6054 {
6055 eFill = VK_POLYGON_MODE_FILL,
6056 eLine = VK_POLYGON_MODE_LINE,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006057 ePoint = VK_POLYGON_MODE_POINT,
6058 eFillRectangleNV = VK_POLYGON_MODE_FILL_RECTANGLE_NV
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006059 };
6060
6061 enum class CullModeFlagBits
6062 {
6063 eNone = VK_CULL_MODE_NONE,
6064 eFront = VK_CULL_MODE_FRONT_BIT,
6065 eBack = VK_CULL_MODE_BACK_BIT,
6066 eFrontAndBack = VK_CULL_MODE_FRONT_AND_BACK
6067 };
6068
6069 using CullModeFlags = Flags<CullModeFlagBits, VkCullModeFlags>;
6070
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006071 VULKAN_HPP_INLINE CullModeFlags operator|( CullModeFlagBits bit0, CullModeFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006072 {
6073 return CullModeFlags( bit0 ) | bit1;
6074 }
6075
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006076 VULKAN_HPP_INLINE CullModeFlags operator~( CullModeFlagBits bits )
6077 {
6078 return ~( CullModeFlags( bits ) );
6079 }
6080
6081 template <> struct FlagTraits<CullModeFlagBits>
6082 {
6083 enum
6084 {
6085 allFlags = VkFlags(CullModeFlagBits::eNone) | VkFlags(CullModeFlagBits::eFront) | VkFlags(CullModeFlagBits::eBack) | VkFlags(CullModeFlagBits::eFrontAndBack)
6086 };
6087 };
6088
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006089 enum class FrontFace
6090 {
6091 eCounterClockwise = VK_FRONT_FACE_COUNTER_CLOCKWISE,
6092 eClockwise = VK_FRONT_FACE_CLOCKWISE
6093 };
6094
6095 enum class BlendFactor
6096 {
6097 eZero = VK_BLEND_FACTOR_ZERO,
6098 eOne = VK_BLEND_FACTOR_ONE,
6099 eSrcColor = VK_BLEND_FACTOR_SRC_COLOR,
6100 eOneMinusSrcColor = VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR,
6101 eDstColor = VK_BLEND_FACTOR_DST_COLOR,
6102 eOneMinusDstColor = VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR,
6103 eSrcAlpha = VK_BLEND_FACTOR_SRC_ALPHA,
6104 eOneMinusSrcAlpha = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA,
6105 eDstAlpha = VK_BLEND_FACTOR_DST_ALPHA,
6106 eOneMinusDstAlpha = VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA,
6107 eConstantColor = VK_BLEND_FACTOR_CONSTANT_COLOR,
6108 eOneMinusConstantColor = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR,
6109 eConstantAlpha = VK_BLEND_FACTOR_CONSTANT_ALPHA,
6110 eOneMinusConstantAlpha = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,
6111 eSrcAlphaSaturate = VK_BLEND_FACTOR_SRC_ALPHA_SATURATE,
6112 eSrc1Color = VK_BLEND_FACTOR_SRC1_COLOR,
6113 eOneMinusSrc1Color = VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,
6114 eSrc1Alpha = VK_BLEND_FACTOR_SRC1_ALPHA,
6115 eOneMinusSrc1Alpha = VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
6116 };
6117
6118 enum class BlendOp
6119 {
6120 eAdd = VK_BLEND_OP_ADD,
6121 eSubtract = VK_BLEND_OP_SUBTRACT,
6122 eReverseSubtract = VK_BLEND_OP_REVERSE_SUBTRACT,
6123 eMin = VK_BLEND_OP_MIN,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006124 eMax = VK_BLEND_OP_MAX,
6125 eZeroEXT = VK_BLEND_OP_ZERO_EXT,
6126 eSrcEXT = VK_BLEND_OP_SRC_EXT,
6127 eDstEXT = VK_BLEND_OP_DST_EXT,
6128 eSrcOverEXT = VK_BLEND_OP_SRC_OVER_EXT,
6129 eDstOverEXT = VK_BLEND_OP_DST_OVER_EXT,
6130 eSrcInEXT = VK_BLEND_OP_SRC_IN_EXT,
6131 eDstInEXT = VK_BLEND_OP_DST_IN_EXT,
6132 eSrcOutEXT = VK_BLEND_OP_SRC_OUT_EXT,
6133 eDstOutEXT = VK_BLEND_OP_DST_OUT_EXT,
6134 eSrcAtopEXT = VK_BLEND_OP_SRC_ATOP_EXT,
6135 eDstAtopEXT = VK_BLEND_OP_DST_ATOP_EXT,
6136 eXorEXT = VK_BLEND_OP_XOR_EXT,
6137 eMultiplyEXT = VK_BLEND_OP_MULTIPLY_EXT,
6138 eScreenEXT = VK_BLEND_OP_SCREEN_EXT,
6139 eOverlayEXT = VK_BLEND_OP_OVERLAY_EXT,
6140 eDarkenEXT = VK_BLEND_OP_DARKEN_EXT,
6141 eLightenEXT = VK_BLEND_OP_LIGHTEN_EXT,
6142 eColordodgeEXT = VK_BLEND_OP_COLORDODGE_EXT,
6143 eColorburnEXT = VK_BLEND_OP_COLORBURN_EXT,
6144 eHardlightEXT = VK_BLEND_OP_HARDLIGHT_EXT,
6145 eSoftlightEXT = VK_BLEND_OP_SOFTLIGHT_EXT,
6146 eDifferenceEXT = VK_BLEND_OP_DIFFERENCE_EXT,
6147 eExclusionEXT = VK_BLEND_OP_EXCLUSION_EXT,
6148 eInvertEXT = VK_BLEND_OP_INVERT_EXT,
6149 eInvertRgbEXT = VK_BLEND_OP_INVERT_RGB_EXT,
6150 eLineardodgeEXT = VK_BLEND_OP_LINEARDODGE_EXT,
6151 eLinearburnEXT = VK_BLEND_OP_LINEARBURN_EXT,
6152 eVividlightEXT = VK_BLEND_OP_VIVIDLIGHT_EXT,
6153 eLinearlightEXT = VK_BLEND_OP_LINEARLIGHT_EXT,
6154 ePinlightEXT = VK_BLEND_OP_PINLIGHT_EXT,
6155 eHardmixEXT = VK_BLEND_OP_HARDMIX_EXT,
6156 eHslHueEXT = VK_BLEND_OP_HSL_HUE_EXT,
6157 eHslSaturationEXT = VK_BLEND_OP_HSL_SATURATION_EXT,
6158 eHslColorEXT = VK_BLEND_OP_HSL_COLOR_EXT,
6159 eHslLuminosityEXT = VK_BLEND_OP_HSL_LUMINOSITY_EXT,
6160 ePlusEXT = VK_BLEND_OP_PLUS_EXT,
6161 ePlusClampedEXT = VK_BLEND_OP_PLUS_CLAMPED_EXT,
6162 ePlusClampedAlphaEXT = VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT,
6163 ePlusDarkerEXT = VK_BLEND_OP_PLUS_DARKER_EXT,
6164 eMinusEXT = VK_BLEND_OP_MINUS_EXT,
6165 eMinusClampedEXT = VK_BLEND_OP_MINUS_CLAMPED_EXT,
6166 eContrastEXT = VK_BLEND_OP_CONTRAST_EXT,
6167 eInvertOvgEXT = VK_BLEND_OP_INVERT_OVG_EXT,
6168 eRedEXT = VK_BLEND_OP_RED_EXT,
6169 eGreenEXT = VK_BLEND_OP_GREEN_EXT,
6170 eBlueEXT = VK_BLEND_OP_BLUE_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006171 };
6172
6173 enum class StencilOp
6174 {
6175 eKeep = VK_STENCIL_OP_KEEP,
6176 eZero = VK_STENCIL_OP_ZERO,
6177 eReplace = VK_STENCIL_OP_REPLACE,
6178 eIncrementAndClamp = VK_STENCIL_OP_INCREMENT_AND_CLAMP,
6179 eDecrementAndClamp = VK_STENCIL_OP_DECREMENT_AND_CLAMP,
6180 eInvert = VK_STENCIL_OP_INVERT,
6181 eIncrementAndWrap = VK_STENCIL_OP_INCREMENT_AND_WRAP,
6182 eDecrementAndWrap = VK_STENCIL_OP_DECREMENT_AND_WRAP
6183 };
6184
6185 struct StencilOpState
6186 {
6187 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 )
6188 : failOp( failOp_ )
6189 , passOp( passOp_ )
6190 , depthFailOp( depthFailOp_ )
6191 , compareOp( compareOp_ )
6192 , compareMask( compareMask_ )
6193 , writeMask( writeMask_ )
6194 , reference( reference_ )
6195 {
6196 }
6197
6198 StencilOpState( VkStencilOpState const & rhs )
6199 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006200 memcpy( this, &rhs, sizeof( StencilOpState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006201 }
6202
6203 StencilOpState& operator=( VkStencilOpState const & rhs )
6204 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006205 memcpy( this, &rhs, sizeof( StencilOpState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006206 return *this;
6207 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006208 StencilOpState& setFailOp( StencilOp failOp_ )
6209 {
6210 failOp = failOp_;
6211 return *this;
6212 }
6213
6214 StencilOpState& setPassOp( StencilOp passOp_ )
6215 {
6216 passOp = passOp_;
6217 return *this;
6218 }
6219
6220 StencilOpState& setDepthFailOp( StencilOp depthFailOp_ )
6221 {
6222 depthFailOp = depthFailOp_;
6223 return *this;
6224 }
6225
6226 StencilOpState& setCompareOp( CompareOp compareOp_ )
6227 {
6228 compareOp = compareOp_;
6229 return *this;
6230 }
6231
6232 StencilOpState& setCompareMask( uint32_t compareMask_ )
6233 {
6234 compareMask = compareMask_;
6235 return *this;
6236 }
6237
6238 StencilOpState& setWriteMask( uint32_t writeMask_ )
6239 {
6240 writeMask = writeMask_;
6241 return *this;
6242 }
6243
6244 StencilOpState& setReference( uint32_t reference_ )
6245 {
6246 reference = reference_;
6247 return *this;
6248 }
6249
6250 operator const VkStencilOpState&() const
6251 {
6252 return *reinterpret_cast<const VkStencilOpState*>(this);
6253 }
6254
6255 bool operator==( StencilOpState const& rhs ) const
6256 {
6257 return ( failOp == rhs.failOp )
6258 && ( passOp == rhs.passOp )
6259 && ( depthFailOp == rhs.depthFailOp )
6260 && ( compareOp == rhs.compareOp )
6261 && ( compareMask == rhs.compareMask )
6262 && ( writeMask == rhs.writeMask )
6263 && ( reference == rhs.reference );
6264 }
6265
6266 bool operator!=( StencilOpState const& rhs ) const
6267 {
6268 return !operator==( rhs );
6269 }
6270
6271 StencilOp failOp;
6272 StencilOp passOp;
6273 StencilOp depthFailOp;
6274 CompareOp compareOp;
6275 uint32_t compareMask;
6276 uint32_t writeMask;
6277 uint32_t reference;
6278 };
6279 static_assert( sizeof( StencilOpState ) == sizeof( VkStencilOpState ), "struct and wrapper have different size!" );
6280
6281 enum class LogicOp
6282 {
6283 eClear = VK_LOGIC_OP_CLEAR,
6284 eAnd = VK_LOGIC_OP_AND,
6285 eAndReverse = VK_LOGIC_OP_AND_REVERSE,
6286 eCopy = VK_LOGIC_OP_COPY,
6287 eAndInverted = VK_LOGIC_OP_AND_INVERTED,
6288 eNoOp = VK_LOGIC_OP_NO_OP,
6289 eXor = VK_LOGIC_OP_XOR,
6290 eOr = VK_LOGIC_OP_OR,
6291 eNor = VK_LOGIC_OP_NOR,
6292 eEquivalent = VK_LOGIC_OP_EQUIVALENT,
6293 eInvert = VK_LOGIC_OP_INVERT,
6294 eOrReverse = VK_LOGIC_OP_OR_REVERSE,
6295 eCopyInverted = VK_LOGIC_OP_COPY_INVERTED,
6296 eOrInverted = VK_LOGIC_OP_OR_INVERTED,
6297 eNand = VK_LOGIC_OP_NAND,
6298 eSet = VK_LOGIC_OP_SET
6299 };
6300
6301 enum class InternalAllocationType
6302 {
6303 eExecutable = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE
6304 };
6305
6306 enum class SystemAllocationScope
6307 {
6308 eCommand = VK_SYSTEM_ALLOCATION_SCOPE_COMMAND,
6309 eObject = VK_SYSTEM_ALLOCATION_SCOPE_OBJECT,
6310 eCache = VK_SYSTEM_ALLOCATION_SCOPE_CACHE,
6311 eDevice = VK_SYSTEM_ALLOCATION_SCOPE_DEVICE,
6312 eInstance = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE
6313 };
6314
6315 enum class PhysicalDeviceType
6316 {
6317 eOther = VK_PHYSICAL_DEVICE_TYPE_OTHER,
6318 eIntegratedGpu = VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU,
6319 eDiscreteGpu = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU,
6320 eVirtualGpu = VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU,
6321 eCpu = VK_PHYSICAL_DEVICE_TYPE_CPU
6322 };
6323
6324 enum class VertexInputRate
6325 {
6326 eVertex = VK_VERTEX_INPUT_RATE_VERTEX,
6327 eInstance = VK_VERTEX_INPUT_RATE_INSTANCE
6328 };
6329
6330 struct VertexInputBindingDescription
6331 {
6332 VertexInputBindingDescription( uint32_t binding_ = 0, uint32_t stride_ = 0, VertexInputRate inputRate_ = VertexInputRate::eVertex )
6333 : binding( binding_ )
6334 , stride( stride_ )
6335 , inputRate( inputRate_ )
6336 {
6337 }
6338
6339 VertexInputBindingDescription( VkVertexInputBindingDescription const & rhs )
6340 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006341 memcpy( this, &rhs, sizeof( VertexInputBindingDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006342 }
6343
6344 VertexInputBindingDescription& operator=( VkVertexInputBindingDescription const & rhs )
6345 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006346 memcpy( this, &rhs, sizeof( VertexInputBindingDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006347 return *this;
6348 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006349 VertexInputBindingDescription& setBinding( uint32_t binding_ )
6350 {
6351 binding = binding_;
6352 return *this;
6353 }
6354
6355 VertexInputBindingDescription& setStride( uint32_t stride_ )
6356 {
6357 stride = stride_;
6358 return *this;
6359 }
6360
6361 VertexInputBindingDescription& setInputRate( VertexInputRate inputRate_ )
6362 {
6363 inputRate = inputRate_;
6364 return *this;
6365 }
6366
6367 operator const VkVertexInputBindingDescription&() const
6368 {
6369 return *reinterpret_cast<const VkVertexInputBindingDescription*>(this);
6370 }
6371
6372 bool operator==( VertexInputBindingDescription const& rhs ) const
6373 {
6374 return ( binding == rhs.binding )
6375 && ( stride == rhs.stride )
6376 && ( inputRate == rhs.inputRate );
6377 }
6378
6379 bool operator!=( VertexInputBindingDescription const& rhs ) const
6380 {
6381 return !operator==( rhs );
6382 }
6383
6384 uint32_t binding;
6385 uint32_t stride;
6386 VertexInputRate inputRate;
6387 };
6388 static_assert( sizeof( VertexInputBindingDescription ) == sizeof( VkVertexInputBindingDescription ), "struct and wrapper have different size!" );
6389
6390 enum class Format
6391 {
6392 eUndefined = VK_FORMAT_UNDEFINED,
6393 eR4G4UnormPack8 = VK_FORMAT_R4G4_UNORM_PACK8,
6394 eR4G4B4A4UnormPack16 = VK_FORMAT_R4G4B4A4_UNORM_PACK16,
6395 eB4G4R4A4UnormPack16 = VK_FORMAT_B4G4R4A4_UNORM_PACK16,
6396 eR5G6B5UnormPack16 = VK_FORMAT_R5G6B5_UNORM_PACK16,
6397 eB5G6R5UnormPack16 = VK_FORMAT_B5G6R5_UNORM_PACK16,
6398 eR5G5B5A1UnormPack16 = VK_FORMAT_R5G5B5A1_UNORM_PACK16,
6399 eB5G5R5A1UnormPack16 = VK_FORMAT_B5G5R5A1_UNORM_PACK16,
6400 eA1R5G5B5UnormPack16 = VK_FORMAT_A1R5G5B5_UNORM_PACK16,
6401 eR8Unorm = VK_FORMAT_R8_UNORM,
6402 eR8Snorm = VK_FORMAT_R8_SNORM,
6403 eR8Uscaled = VK_FORMAT_R8_USCALED,
6404 eR8Sscaled = VK_FORMAT_R8_SSCALED,
6405 eR8Uint = VK_FORMAT_R8_UINT,
6406 eR8Sint = VK_FORMAT_R8_SINT,
6407 eR8Srgb = VK_FORMAT_R8_SRGB,
6408 eR8G8Unorm = VK_FORMAT_R8G8_UNORM,
6409 eR8G8Snorm = VK_FORMAT_R8G8_SNORM,
6410 eR8G8Uscaled = VK_FORMAT_R8G8_USCALED,
6411 eR8G8Sscaled = VK_FORMAT_R8G8_SSCALED,
6412 eR8G8Uint = VK_FORMAT_R8G8_UINT,
6413 eR8G8Sint = VK_FORMAT_R8G8_SINT,
6414 eR8G8Srgb = VK_FORMAT_R8G8_SRGB,
6415 eR8G8B8Unorm = VK_FORMAT_R8G8B8_UNORM,
6416 eR8G8B8Snorm = VK_FORMAT_R8G8B8_SNORM,
6417 eR8G8B8Uscaled = VK_FORMAT_R8G8B8_USCALED,
6418 eR8G8B8Sscaled = VK_FORMAT_R8G8B8_SSCALED,
6419 eR8G8B8Uint = VK_FORMAT_R8G8B8_UINT,
6420 eR8G8B8Sint = VK_FORMAT_R8G8B8_SINT,
6421 eR8G8B8Srgb = VK_FORMAT_R8G8B8_SRGB,
6422 eB8G8R8Unorm = VK_FORMAT_B8G8R8_UNORM,
6423 eB8G8R8Snorm = VK_FORMAT_B8G8R8_SNORM,
6424 eB8G8R8Uscaled = VK_FORMAT_B8G8R8_USCALED,
6425 eB8G8R8Sscaled = VK_FORMAT_B8G8R8_SSCALED,
6426 eB8G8R8Uint = VK_FORMAT_B8G8R8_UINT,
6427 eB8G8R8Sint = VK_FORMAT_B8G8R8_SINT,
6428 eB8G8R8Srgb = VK_FORMAT_B8G8R8_SRGB,
6429 eR8G8B8A8Unorm = VK_FORMAT_R8G8B8A8_UNORM,
6430 eR8G8B8A8Snorm = VK_FORMAT_R8G8B8A8_SNORM,
6431 eR8G8B8A8Uscaled = VK_FORMAT_R8G8B8A8_USCALED,
6432 eR8G8B8A8Sscaled = VK_FORMAT_R8G8B8A8_SSCALED,
6433 eR8G8B8A8Uint = VK_FORMAT_R8G8B8A8_UINT,
6434 eR8G8B8A8Sint = VK_FORMAT_R8G8B8A8_SINT,
6435 eR8G8B8A8Srgb = VK_FORMAT_R8G8B8A8_SRGB,
6436 eB8G8R8A8Unorm = VK_FORMAT_B8G8R8A8_UNORM,
6437 eB8G8R8A8Snorm = VK_FORMAT_B8G8R8A8_SNORM,
6438 eB8G8R8A8Uscaled = VK_FORMAT_B8G8R8A8_USCALED,
6439 eB8G8R8A8Sscaled = VK_FORMAT_B8G8R8A8_SSCALED,
6440 eB8G8R8A8Uint = VK_FORMAT_B8G8R8A8_UINT,
6441 eB8G8R8A8Sint = VK_FORMAT_B8G8R8A8_SINT,
6442 eB8G8R8A8Srgb = VK_FORMAT_B8G8R8A8_SRGB,
6443 eA8B8G8R8UnormPack32 = VK_FORMAT_A8B8G8R8_UNORM_PACK32,
6444 eA8B8G8R8SnormPack32 = VK_FORMAT_A8B8G8R8_SNORM_PACK32,
6445 eA8B8G8R8UscaledPack32 = VK_FORMAT_A8B8G8R8_USCALED_PACK32,
6446 eA8B8G8R8SscaledPack32 = VK_FORMAT_A8B8G8R8_SSCALED_PACK32,
6447 eA8B8G8R8UintPack32 = VK_FORMAT_A8B8G8R8_UINT_PACK32,
6448 eA8B8G8R8SintPack32 = VK_FORMAT_A8B8G8R8_SINT_PACK32,
6449 eA8B8G8R8SrgbPack32 = VK_FORMAT_A8B8G8R8_SRGB_PACK32,
6450 eA2R10G10B10UnormPack32 = VK_FORMAT_A2R10G10B10_UNORM_PACK32,
6451 eA2R10G10B10SnormPack32 = VK_FORMAT_A2R10G10B10_SNORM_PACK32,
6452 eA2R10G10B10UscaledPack32 = VK_FORMAT_A2R10G10B10_USCALED_PACK32,
6453 eA2R10G10B10SscaledPack32 = VK_FORMAT_A2R10G10B10_SSCALED_PACK32,
6454 eA2R10G10B10UintPack32 = VK_FORMAT_A2R10G10B10_UINT_PACK32,
6455 eA2R10G10B10SintPack32 = VK_FORMAT_A2R10G10B10_SINT_PACK32,
6456 eA2B10G10R10UnormPack32 = VK_FORMAT_A2B10G10R10_UNORM_PACK32,
6457 eA2B10G10R10SnormPack32 = VK_FORMAT_A2B10G10R10_SNORM_PACK32,
6458 eA2B10G10R10UscaledPack32 = VK_FORMAT_A2B10G10R10_USCALED_PACK32,
6459 eA2B10G10R10SscaledPack32 = VK_FORMAT_A2B10G10R10_SSCALED_PACK32,
6460 eA2B10G10R10UintPack32 = VK_FORMAT_A2B10G10R10_UINT_PACK32,
6461 eA2B10G10R10SintPack32 = VK_FORMAT_A2B10G10R10_SINT_PACK32,
6462 eR16Unorm = VK_FORMAT_R16_UNORM,
6463 eR16Snorm = VK_FORMAT_R16_SNORM,
6464 eR16Uscaled = VK_FORMAT_R16_USCALED,
6465 eR16Sscaled = VK_FORMAT_R16_SSCALED,
6466 eR16Uint = VK_FORMAT_R16_UINT,
6467 eR16Sint = VK_FORMAT_R16_SINT,
6468 eR16Sfloat = VK_FORMAT_R16_SFLOAT,
6469 eR16G16Unorm = VK_FORMAT_R16G16_UNORM,
6470 eR16G16Snorm = VK_FORMAT_R16G16_SNORM,
6471 eR16G16Uscaled = VK_FORMAT_R16G16_USCALED,
6472 eR16G16Sscaled = VK_FORMAT_R16G16_SSCALED,
6473 eR16G16Uint = VK_FORMAT_R16G16_UINT,
6474 eR16G16Sint = VK_FORMAT_R16G16_SINT,
6475 eR16G16Sfloat = VK_FORMAT_R16G16_SFLOAT,
6476 eR16G16B16Unorm = VK_FORMAT_R16G16B16_UNORM,
6477 eR16G16B16Snorm = VK_FORMAT_R16G16B16_SNORM,
6478 eR16G16B16Uscaled = VK_FORMAT_R16G16B16_USCALED,
6479 eR16G16B16Sscaled = VK_FORMAT_R16G16B16_SSCALED,
6480 eR16G16B16Uint = VK_FORMAT_R16G16B16_UINT,
6481 eR16G16B16Sint = VK_FORMAT_R16G16B16_SINT,
6482 eR16G16B16Sfloat = VK_FORMAT_R16G16B16_SFLOAT,
6483 eR16G16B16A16Unorm = VK_FORMAT_R16G16B16A16_UNORM,
6484 eR16G16B16A16Snorm = VK_FORMAT_R16G16B16A16_SNORM,
6485 eR16G16B16A16Uscaled = VK_FORMAT_R16G16B16A16_USCALED,
6486 eR16G16B16A16Sscaled = VK_FORMAT_R16G16B16A16_SSCALED,
6487 eR16G16B16A16Uint = VK_FORMAT_R16G16B16A16_UINT,
6488 eR16G16B16A16Sint = VK_FORMAT_R16G16B16A16_SINT,
6489 eR16G16B16A16Sfloat = VK_FORMAT_R16G16B16A16_SFLOAT,
6490 eR32Uint = VK_FORMAT_R32_UINT,
6491 eR32Sint = VK_FORMAT_R32_SINT,
6492 eR32Sfloat = VK_FORMAT_R32_SFLOAT,
6493 eR32G32Uint = VK_FORMAT_R32G32_UINT,
6494 eR32G32Sint = VK_FORMAT_R32G32_SINT,
6495 eR32G32Sfloat = VK_FORMAT_R32G32_SFLOAT,
6496 eR32G32B32Uint = VK_FORMAT_R32G32B32_UINT,
6497 eR32G32B32Sint = VK_FORMAT_R32G32B32_SINT,
6498 eR32G32B32Sfloat = VK_FORMAT_R32G32B32_SFLOAT,
6499 eR32G32B32A32Uint = VK_FORMAT_R32G32B32A32_UINT,
6500 eR32G32B32A32Sint = VK_FORMAT_R32G32B32A32_SINT,
6501 eR32G32B32A32Sfloat = VK_FORMAT_R32G32B32A32_SFLOAT,
6502 eR64Uint = VK_FORMAT_R64_UINT,
6503 eR64Sint = VK_FORMAT_R64_SINT,
6504 eR64Sfloat = VK_FORMAT_R64_SFLOAT,
6505 eR64G64Uint = VK_FORMAT_R64G64_UINT,
6506 eR64G64Sint = VK_FORMAT_R64G64_SINT,
6507 eR64G64Sfloat = VK_FORMAT_R64G64_SFLOAT,
6508 eR64G64B64Uint = VK_FORMAT_R64G64B64_UINT,
6509 eR64G64B64Sint = VK_FORMAT_R64G64B64_SINT,
6510 eR64G64B64Sfloat = VK_FORMAT_R64G64B64_SFLOAT,
6511 eR64G64B64A64Uint = VK_FORMAT_R64G64B64A64_UINT,
6512 eR64G64B64A64Sint = VK_FORMAT_R64G64B64A64_SINT,
6513 eR64G64B64A64Sfloat = VK_FORMAT_R64G64B64A64_SFLOAT,
6514 eB10G11R11UfloatPack32 = VK_FORMAT_B10G11R11_UFLOAT_PACK32,
6515 eE5B9G9R9UfloatPack32 = VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,
6516 eD16Unorm = VK_FORMAT_D16_UNORM,
6517 eX8D24UnormPack32 = VK_FORMAT_X8_D24_UNORM_PACK32,
6518 eD32Sfloat = VK_FORMAT_D32_SFLOAT,
6519 eS8Uint = VK_FORMAT_S8_UINT,
6520 eD16UnormS8Uint = VK_FORMAT_D16_UNORM_S8_UINT,
6521 eD24UnormS8Uint = VK_FORMAT_D24_UNORM_S8_UINT,
6522 eD32SfloatS8Uint = VK_FORMAT_D32_SFLOAT_S8_UINT,
6523 eBc1RgbUnormBlock = VK_FORMAT_BC1_RGB_UNORM_BLOCK,
6524 eBc1RgbSrgbBlock = VK_FORMAT_BC1_RGB_SRGB_BLOCK,
6525 eBc1RgbaUnormBlock = VK_FORMAT_BC1_RGBA_UNORM_BLOCK,
6526 eBc1RgbaSrgbBlock = VK_FORMAT_BC1_RGBA_SRGB_BLOCK,
6527 eBc2UnormBlock = VK_FORMAT_BC2_UNORM_BLOCK,
6528 eBc2SrgbBlock = VK_FORMAT_BC2_SRGB_BLOCK,
6529 eBc3UnormBlock = VK_FORMAT_BC3_UNORM_BLOCK,
6530 eBc3SrgbBlock = VK_FORMAT_BC3_SRGB_BLOCK,
6531 eBc4UnormBlock = VK_FORMAT_BC4_UNORM_BLOCK,
6532 eBc4SnormBlock = VK_FORMAT_BC4_SNORM_BLOCK,
6533 eBc5UnormBlock = VK_FORMAT_BC5_UNORM_BLOCK,
6534 eBc5SnormBlock = VK_FORMAT_BC5_SNORM_BLOCK,
6535 eBc6HUfloatBlock = VK_FORMAT_BC6H_UFLOAT_BLOCK,
6536 eBc6HSfloatBlock = VK_FORMAT_BC6H_SFLOAT_BLOCK,
6537 eBc7UnormBlock = VK_FORMAT_BC7_UNORM_BLOCK,
6538 eBc7SrgbBlock = VK_FORMAT_BC7_SRGB_BLOCK,
6539 eEtc2R8G8B8UnormBlock = VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK,
6540 eEtc2R8G8B8SrgbBlock = VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK,
6541 eEtc2R8G8B8A1UnormBlock = VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK,
6542 eEtc2R8G8B8A1SrgbBlock = VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK,
6543 eEtc2R8G8B8A8UnormBlock = VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK,
6544 eEtc2R8G8B8A8SrgbBlock = VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK,
6545 eEacR11UnormBlock = VK_FORMAT_EAC_R11_UNORM_BLOCK,
6546 eEacR11SnormBlock = VK_FORMAT_EAC_R11_SNORM_BLOCK,
6547 eEacR11G11UnormBlock = VK_FORMAT_EAC_R11G11_UNORM_BLOCK,
6548 eEacR11G11SnormBlock = VK_FORMAT_EAC_R11G11_SNORM_BLOCK,
6549 eAstc4x4UnormBlock = VK_FORMAT_ASTC_4x4_UNORM_BLOCK,
6550 eAstc4x4SrgbBlock = VK_FORMAT_ASTC_4x4_SRGB_BLOCK,
6551 eAstc5x4UnormBlock = VK_FORMAT_ASTC_5x4_UNORM_BLOCK,
6552 eAstc5x4SrgbBlock = VK_FORMAT_ASTC_5x4_SRGB_BLOCK,
6553 eAstc5x5UnormBlock = VK_FORMAT_ASTC_5x5_UNORM_BLOCK,
6554 eAstc5x5SrgbBlock = VK_FORMAT_ASTC_5x5_SRGB_BLOCK,
6555 eAstc6x5UnormBlock = VK_FORMAT_ASTC_6x5_UNORM_BLOCK,
6556 eAstc6x5SrgbBlock = VK_FORMAT_ASTC_6x5_SRGB_BLOCK,
6557 eAstc6x6UnormBlock = VK_FORMAT_ASTC_6x6_UNORM_BLOCK,
6558 eAstc6x6SrgbBlock = VK_FORMAT_ASTC_6x6_SRGB_BLOCK,
6559 eAstc8x5UnormBlock = VK_FORMAT_ASTC_8x5_UNORM_BLOCK,
6560 eAstc8x5SrgbBlock = VK_FORMAT_ASTC_8x5_SRGB_BLOCK,
6561 eAstc8x6UnormBlock = VK_FORMAT_ASTC_8x6_UNORM_BLOCK,
6562 eAstc8x6SrgbBlock = VK_FORMAT_ASTC_8x6_SRGB_BLOCK,
6563 eAstc8x8UnormBlock = VK_FORMAT_ASTC_8x8_UNORM_BLOCK,
6564 eAstc8x8SrgbBlock = VK_FORMAT_ASTC_8x8_SRGB_BLOCK,
6565 eAstc10x5UnormBlock = VK_FORMAT_ASTC_10x5_UNORM_BLOCK,
6566 eAstc10x5SrgbBlock = VK_FORMAT_ASTC_10x5_SRGB_BLOCK,
6567 eAstc10x6UnormBlock = VK_FORMAT_ASTC_10x6_UNORM_BLOCK,
6568 eAstc10x6SrgbBlock = VK_FORMAT_ASTC_10x6_SRGB_BLOCK,
6569 eAstc10x8UnormBlock = VK_FORMAT_ASTC_10x8_UNORM_BLOCK,
6570 eAstc10x8SrgbBlock = VK_FORMAT_ASTC_10x8_SRGB_BLOCK,
6571 eAstc10x10UnormBlock = VK_FORMAT_ASTC_10x10_UNORM_BLOCK,
6572 eAstc10x10SrgbBlock = VK_FORMAT_ASTC_10x10_SRGB_BLOCK,
6573 eAstc12x10UnormBlock = VK_FORMAT_ASTC_12x10_UNORM_BLOCK,
6574 eAstc12x10SrgbBlock = VK_FORMAT_ASTC_12x10_SRGB_BLOCK,
6575 eAstc12x12UnormBlock = VK_FORMAT_ASTC_12x12_UNORM_BLOCK,
Lenny Komowebf33162016-08-26 14:10:08 -06006576 eAstc12x12SrgbBlock = VK_FORMAT_ASTC_12x12_SRGB_BLOCK,
6577 ePvrtc12BppUnormBlockIMG = VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG,
6578 ePvrtc14BppUnormBlockIMG = VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG,
6579 ePvrtc22BppUnormBlockIMG = VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG,
6580 ePvrtc24BppUnormBlockIMG = VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG,
6581 ePvrtc12BppSrgbBlockIMG = VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG,
6582 ePvrtc14BppSrgbBlockIMG = VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG,
6583 ePvrtc22BppSrgbBlockIMG = VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG,
Lenny Komowb79f04a2017-09-18 17:07:00 -06006584 ePvrtc24BppSrgbBlockIMG = VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG,
6585 eG8B8G8R8422UnormKHR = VK_FORMAT_G8B8G8R8_422_UNORM_KHR,
6586 eB8G8R8G8422UnormKHR = VK_FORMAT_B8G8R8G8_422_UNORM_KHR,
6587 eG8B8R83Plane420UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR,
6588 eG8B8R82Plane420UnormKHR = VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR,
6589 eG8B8R83Plane422UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR,
6590 eG8B8R82Plane422UnormKHR = VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR,
6591 eG8B8R83Plane444UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR,
6592 eR10X6UnormPack16KHR = VK_FORMAT_R10X6_UNORM_PACK16_KHR,
6593 eR10X6G10X6Unorm2Pack16KHR = VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR,
6594 eR10X6G10X6B10X6A10X6Unorm4Pack16KHR = VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR,
6595 eG10X6B10X6G10X6R10X6422Unorm4Pack16KHR = VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR,
6596 eB10X6G10X6R10X6G10X6422Unorm4Pack16KHR = VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR,
6597 eG10X6B10X6R10X63Plane420Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR,
6598 eG10X6B10X6R10X62Plane420Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR,
6599 eG10X6B10X6R10X63Plane422Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR,
6600 eG10X6B10X6R10X62Plane422Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR,
6601 eG10X6B10X6R10X63Plane444Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR,
6602 eR12X4UnormPack16KHR = VK_FORMAT_R12X4_UNORM_PACK16_KHR,
6603 eR12X4G12X4Unorm2Pack16KHR = VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR,
6604 eR12X4G12X4B12X4A12X4Unorm4Pack16KHR = VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR,
6605 eG12X4B12X4G12X4R12X4422Unorm4Pack16KHR = VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR,
6606 eB12X4G12X4R12X4G12X4422Unorm4Pack16KHR = VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR,
6607 eG12X4B12X4R12X43Plane420Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR,
6608 eG12X4B12X4R12X42Plane420Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR,
6609 eG12X4B12X4R12X43Plane422Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR,
6610 eG12X4B12X4R12X42Plane422Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR,
6611 eG12X4B12X4R12X43Plane444Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR,
6612 eG16B16G16R16422UnormKHR = VK_FORMAT_G16B16G16R16_422_UNORM_KHR,
6613 eB16G16R16G16422UnormKHR = VK_FORMAT_B16G16R16G16_422_UNORM_KHR,
6614 eG16B16R163Plane420UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR,
6615 eG16B16R162Plane420UnormKHR = VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR,
6616 eG16B16R163Plane422UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR,
6617 eG16B16R162Plane422UnormKHR = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR,
6618 eG16B16R163Plane444UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006619 };
6620
6621 struct VertexInputAttributeDescription
6622 {
6623 VertexInputAttributeDescription( uint32_t location_ = 0, uint32_t binding_ = 0, Format format_ = Format::eUndefined, uint32_t offset_ = 0 )
6624 : location( location_ )
6625 , binding( binding_ )
6626 , format( format_ )
6627 , offset( offset_ )
6628 {
6629 }
6630
6631 VertexInputAttributeDescription( VkVertexInputAttributeDescription const & rhs )
6632 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006633 memcpy( this, &rhs, sizeof( VertexInputAttributeDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006634 }
6635
6636 VertexInputAttributeDescription& operator=( VkVertexInputAttributeDescription const & rhs )
6637 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006638 memcpy( this, &rhs, sizeof( VertexInputAttributeDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006639 return *this;
6640 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006641 VertexInputAttributeDescription& setLocation( uint32_t location_ )
6642 {
6643 location = location_;
6644 return *this;
6645 }
6646
6647 VertexInputAttributeDescription& setBinding( uint32_t binding_ )
6648 {
6649 binding = binding_;
6650 return *this;
6651 }
6652
6653 VertexInputAttributeDescription& setFormat( Format format_ )
6654 {
6655 format = format_;
6656 return *this;
6657 }
6658
6659 VertexInputAttributeDescription& setOffset( uint32_t offset_ )
6660 {
6661 offset = offset_;
6662 return *this;
6663 }
6664
6665 operator const VkVertexInputAttributeDescription&() const
6666 {
6667 return *reinterpret_cast<const VkVertexInputAttributeDescription*>(this);
6668 }
6669
6670 bool operator==( VertexInputAttributeDescription const& rhs ) const
6671 {
6672 return ( location == rhs.location )
6673 && ( binding == rhs.binding )
6674 && ( format == rhs.format )
6675 && ( offset == rhs.offset );
6676 }
6677
6678 bool operator!=( VertexInputAttributeDescription const& rhs ) const
6679 {
6680 return !operator==( rhs );
6681 }
6682
6683 uint32_t location;
6684 uint32_t binding;
6685 Format format;
6686 uint32_t offset;
6687 };
6688 static_assert( sizeof( VertexInputAttributeDescription ) == sizeof( VkVertexInputAttributeDescription ), "struct and wrapper have different size!" );
6689
6690 enum class StructureType
6691 {
6692 eApplicationInfo = VK_STRUCTURE_TYPE_APPLICATION_INFO,
6693 eInstanceCreateInfo = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
6694 eDeviceQueueCreateInfo = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO,
6695 eDeviceCreateInfo = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,
6696 eSubmitInfo = VK_STRUCTURE_TYPE_SUBMIT_INFO,
6697 eMemoryAllocateInfo = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
6698 eMappedMemoryRange = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE,
6699 eBindSparseInfo = VK_STRUCTURE_TYPE_BIND_SPARSE_INFO,
6700 eFenceCreateInfo = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO,
6701 eSemaphoreCreateInfo = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO,
6702 eEventCreateInfo = VK_STRUCTURE_TYPE_EVENT_CREATE_INFO,
6703 eQueryPoolCreateInfo = VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO,
6704 eBufferCreateInfo = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO,
6705 eBufferViewCreateInfo = VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO,
6706 eImageCreateInfo = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
6707 eImageViewCreateInfo = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
6708 eShaderModuleCreateInfo = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO,
6709 ePipelineCacheCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO,
6710 ePipelineShaderStageCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
6711 ePipelineVertexInputStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,
6712 ePipelineInputAssemblyStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,
6713 ePipelineTessellationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO,
6714 ePipelineViewportStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO,
6715 ePipelineRasterizationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO,
6716 ePipelineMultisampleStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,
6717 ePipelineDepthStencilStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO,
6718 ePipelineColorBlendStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,
6719 ePipelineDynamicStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO,
6720 eGraphicsPipelineCreateInfo = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO,
6721 eComputePipelineCreateInfo = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO,
6722 ePipelineLayoutCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO,
6723 eSamplerCreateInfo = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO,
6724 eDescriptorSetLayoutCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
6725 eDescriptorPoolCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO,
6726 eDescriptorSetAllocateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO,
6727 eWriteDescriptorSet = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET,
6728 eCopyDescriptorSet = VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET,
6729 eFramebufferCreateInfo = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO,
6730 eRenderPassCreateInfo = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
6731 eCommandPoolCreateInfo = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO,
6732 eCommandBufferAllocateInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO,
6733 eCommandBufferInheritanceInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO,
6734 eCommandBufferBeginInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
6735 eRenderPassBeginInfo = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,
6736 eBufferMemoryBarrier = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,
6737 eImageMemoryBarrier = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
6738 eMemoryBarrier = VK_STRUCTURE_TYPE_MEMORY_BARRIER,
6739 eLoaderInstanceCreateInfo = VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO,
6740 eLoaderDeviceCreateInfo = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
6741 eSwapchainCreateInfoKHR = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR,
6742 ePresentInfoKHR = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR,
6743 eDisplayModeCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR,
6744 eDisplaySurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR,
6745 eDisplayPresentInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR,
6746 eXlibSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR,
6747 eXcbSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR,
6748 eWaylandSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR,
6749 eMirSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR,
6750 eAndroidSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR,
6751 eWin32SurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR,
6752 eDebugReportCallbackCreateInfoEXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
6753 ePipelineRasterizationStateRasterizationOrderAMD = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD,
6754 eDebugMarkerObjectNameInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT,
6755 eDebugMarkerObjectTagInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT,
6756 eDebugMarkerMarkerInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT,
6757 eDedicatedAllocationImageCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,
6758 eDedicatedAllocationBufferCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV,
Lenny Komow6501c122016-08-31 15:03:49 -06006759 eDedicatedAllocationMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006760 eTextureLodGatherFormatPropertiesAMD = VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD,
Mark Young0f183a82017-02-28 09:58:04 -07006761 eRenderPassMultiviewCreateInfoKHX = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX,
6762 ePhysicalDeviceMultiviewFeaturesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHX,
6763 ePhysicalDeviceMultiviewPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHX,
Lenny Komow6501c122016-08-31 15:03:49 -06006764 eExternalMemoryImageCreateInfoNV = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,
6765 eExportMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV,
6766 eImportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV,
6767 eExportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV,
Lenny Komow68432d72016-09-29 14:16:59 -06006768 eWin32KeyedMutexAcquireReleaseInfoNV = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV,
Mark Young39389872017-01-19 21:10:49 -07006769 ePhysicalDeviceFeatures2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR,
6770 ePhysicalDeviceProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR,
6771 eFormatProperties2KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR,
6772 eImageFormatProperties2KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR,
6773 ePhysicalDeviceImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR,
6774 eQueueFamilyProperties2KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR,
6775 ePhysicalDeviceMemoryProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR,
6776 eSparseImageFormatProperties2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR,
6777 ePhysicalDeviceSparseImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006778 eMemoryAllocateFlagsInfoKHX = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHX,
Mark Young0f183a82017-02-28 09:58:04 -07006779 eDeviceGroupRenderPassBeginInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHX,
6780 eDeviceGroupCommandBufferBeginInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX,
6781 eDeviceGroupSubmitInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX,
6782 eDeviceGroupBindSparseInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06006783 eAcquireNextImageInfoKHX = VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX,
Lenny Komowb79f04a2017-09-18 17:07:00 -06006784 eBindBufferMemoryDeviceGroupInfoKHX = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHX,
6785 eBindImageMemoryDeviceGroupInfoKHX = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHX,
Mark Young0f183a82017-02-28 09:58:04 -07006786 eDeviceGroupPresentCapabilitiesKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX,
6787 eImageSwapchainCreateInfoKHX = VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX,
6788 eBindImageMemorySwapchainInfoKHX = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX,
Mark Young0f183a82017-02-28 09:58:04 -07006789 eDeviceGroupPresentInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX,
6790 eDeviceGroupSwapchainCreateInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX,
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006791 eValidationFlagsEXT = VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT,
Mark Young39389872017-01-19 21:10:49 -07006792 eViSurfaceCreateInfoNN = VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN,
Mark Young0f183a82017-02-28 09:58:04 -07006793 ePhysicalDeviceGroupPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHX,
6794 eDeviceGroupDeviceCreateInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHX,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006795 ePhysicalDeviceExternalImageFormatInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR,
6796 eExternalImageFormatPropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR,
6797 ePhysicalDeviceExternalBufferInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR,
6798 eExternalBufferPropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR,
6799 ePhysicalDeviceIdPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR,
6800 eExternalMemoryBufferCreateInfoKHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR,
6801 eExternalMemoryImageCreateInfoKHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR,
6802 eExportMemoryAllocateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR,
6803 eImportMemoryWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
6804 eExportMemoryWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
6805 eMemoryWin32HandlePropertiesKHR = VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR,
6806 eMemoryGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR,
6807 eImportMemoryFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR,
6808 eMemoryFdPropertiesKHR = VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR,
6809 eMemoryGetFdInfoKHR = VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR,
6810 eWin32KeyedMutexAcquireReleaseInfoKHR = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR,
6811 ePhysicalDeviceExternalSemaphoreInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR,
6812 eExternalSemaphorePropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR,
6813 eExportSemaphoreCreateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR,
6814 eImportSemaphoreWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
6815 eExportSemaphoreWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
6816 eD3D12FenceSubmitInfoKHR = VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR,
6817 eSemaphoreGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR,
6818 eImportSemaphoreFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR,
6819 eSemaphoreGetFdInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006820 ePhysicalDevicePushDescriptorPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006821 ePhysicalDevice16BitStorageFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR,
Mark Lobodzinski3289d762017-04-03 08:22:04 -06006822 ePresentRegionsKHR = VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006823 eDescriptorUpdateTemplateCreateInfoKHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR,
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006824 eObjectTableCreateInfoNVX = VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX,
6825 eIndirectCommandsLayoutCreateInfoNVX = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX,
6826 eCmdProcessCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX,
6827 eCmdReserveSpaceForCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX,
6828 eDeviceGeneratedCommandsLimitsNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX,
Mark Young39389872017-01-19 21:10:49 -07006829 eDeviceGeneratedCommandsFeaturesNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX,
Mark Young0f183a82017-02-28 09:58:04 -07006830 ePipelineViewportWScalingStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV,
Mark Lobodzinski11a1a342017-08-21 10:34:38 -06006831 eSurfaceCapabilities2EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT,
Mark Young39389872017-01-19 21:10:49 -07006832 eDisplayPowerInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT,
6833 eDeviceEventInfoEXT = VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT,
6834 eDisplayEventInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT,
Mark Young0f183a82017-02-28 09:58:04 -07006835 eSwapchainCounterCreateInfoEXT = VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT,
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06006836 ePresentTimesInfoGOOGLE = VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE,
Mark Young0f183a82017-02-28 09:58:04 -07006837 ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX,
6838 ePipelineViewportSwizzleStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV,
6839 ePhysicalDeviceDiscardRectanglePropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT,
6840 ePipelineDiscardRectangleStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT,
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06006841 eHdrMetadataEXT = VK_STRUCTURE_TYPE_HDR_METADATA_EXT,
Mark Lobodzinski54385432017-05-15 10:27:52 -06006842 eSharedPresentSurfaceCapabilitiesKHR = VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006843 ePhysicalDeviceExternalFenceInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR,
6844 eExternalFencePropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR,
6845 eExportFenceCreateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR,
6846 eImportFenceWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR,
6847 eExportFenceWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR,
6848 eFenceGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR,
6849 eImportFenceFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR,
6850 eFenceGetFdInfoKHR = VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR,
Lenny Komowb79f04a2017-09-18 17:07:00 -06006851 ePhysicalDevicePointClippingPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR,
6852 eRenderPassInputAttachmentAspectCreateInfoKHR = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR,
6853 eImageViewUsageCreateInfoKHR = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR,
6854 ePipelineTessellationDomainOriginStateCreateInfoKHR = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR,
Mark Lobodzinski54385432017-05-15 10:27:52 -06006855 ePhysicalDeviceSurfaceInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR,
6856 eSurfaceCapabilities2KHR = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR,
6857 eSurfaceFormat2KHR = VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006858 ePhysicalDeviceVariablePointerFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006859 eIosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006860 eMacosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006861 eMemoryDedicatedRequirementsKHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR,
6862 eMemoryDedicatedAllocateInfoKHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006863 ePhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT,
6864 eSamplerReductionModeCreateInfoEXT = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06006865 eSampleLocationsInfoEXT = VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT,
6866 eRenderPassSampleLocationsBeginInfoEXT = VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT,
6867 ePipelineSampleLocationsStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT,
6868 ePhysicalDeviceSampleLocationsPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT,
6869 eMultisamplePropertiesEXT = VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006870 eBufferMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR,
6871 eImageMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR,
6872 eImageSparseMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR,
6873 eMemoryRequirements2KHR = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR,
6874 eSparseImageMemoryRequirements2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR,
Lenny Komowb79f04a2017-09-18 17:07:00 -06006875 eImageFormatListCreateInfoKHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006876 ePhysicalDeviceBlendOperationAdvancedFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT,
6877 ePhysicalDeviceBlendOperationAdvancedPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT,
6878 ePipelineColorBlendAdvancedStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT,
6879 ePipelineCoverageToColorStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06006880 ePipelineCoverageModulationStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV,
Lenny Komowb79f04a2017-09-18 17:07:00 -06006881 eSamplerYcbcrConversionCreateInfoKHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR,
6882 eSamplerYcbcrConversionInfoKHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR,
6883 eBindImagePlaneMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR,
6884 eImagePlaneMemoryRequirementsInfoKHR = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR,
6885 ePhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR,
6886 eSamplerYcbcrConversionImageFormatPropertiesKHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR,
6887 eBindBufferMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR,
6888 eBindImageMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06006889 eValidationCacheCreateInfoEXT = VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT,
6890 eShaderModuleValidationCacheCreateInfoEXT = VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006891 };
6892
6893 struct ApplicationInfo
6894 {
6895 ApplicationInfo( const char* pApplicationName_ = nullptr, uint32_t applicationVersion_ = 0, const char* pEngineName_ = nullptr, uint32_t engineVersion_ = 0, uint32_t apiVersion_ = 0 )
6896 : sType( StructureType::eApplicationInfo )
6897 , pNext( nullptr )
6898 , pApplicationName( pApplicationName_ )
6899 , applicationVersion( applicationVersion_ )
6900 , pEngineName( pEngineName_ )
6901 , engineVersion( engineVersion_ )
6902 , apiVersion( apiVersion_ )
6903 {
6904 }
6905
6906 ApplicationInfo( VkApplicationInfo const & rhs )
6907 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006908 memcpy( this, &rhs, sizeof( ApplicationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006909 }
6910
6911 ApplicationInfo& operator=( VkApplicationInfo const & rhs )
6912 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006913 memcpy( this, &rhs, sizeof( ApplicationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006914 return *this;
6915 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006916 ApplicationInfo& setPNext( const void* pNext_ )
6917 {
6918 pNext = pNext_;
6919 return *this;
6920 }
6921
6922 ApplicationInfo& setPApplicationName( const char* pApplicationName_ )
6923 {
6924 pApplicationName = pApplicationName_;
6925 return *this;
6926 }
6927
6928 ApplicationInfo& setApplicationVersion( uint32_t applicationVersion_ )
6929 {
6930 applicationVersion = applicationVersion_;
6931 return *this;
6932 }
6933
6934 ApplicationInfo& setPEngineName( const char* pEngineName_ )
6935 {
6936 pEngineName = pEngineName_;
6937 return *this;
6938 }
6939
6940 ApplicationInfo& setEngineVersion( uint32_t engineVersion_ )
6941 {
6942 engineVersion = engineVersion_;
6943 return *this;
6944 }
6945
6946 ApplicationInfo& setApiVersion( uint32_t apiVersion_ )
6947 {
6948 apiVersion = apiVersion_;
6949 return *this;
6950 }
6951
6952 operator const VkApplicationInfo&() const
6953 {
6954 return *reinterpret_cast<const VkApplicationInfo*>(this);
6955 }
6956
6957 bool operator==( ApplicationInfo const& rhs ) const
6958 {
6959 return ( sType == rhs.sType )
6960 && ( pNext == rhs.pNext )
6961 && ( pApplicationName == rhs.pApplicationName )
6962 && ( applicationVersion == rhs.applicationVersion )
6963 && ( pEngineName == rhs.pEngineName )
6964 && ( engineVersion == rhs.engineVersion )
6965 && ( apiVersion == rhs.apiVersion );
6966 }
6967
6968 bool operator!=( ApplicationInfo const& rhs ) const
6969 {
6970 return !operator==( rhs );
6971 }
6972
6973 private:
6974 StructureType sType;
6975
6976 public:
6977 const void* pNext;
6978 const char* pApplicationName;
6979 uint32_t applicationVersion;
6980 const char* pEngineName;
6981 uint32_t engineVersion;
6982 uint32_t apiVersion;
6983 };
6984 static_assert( sizeof( ApplicationInfo ) == sizeof( VkApplicationInfo ), "struct and wrapper have different size!" );
6985
6986 struct DeviceQueueCreateInfo
6987 {
6988 DeviceQueueCreateInfo( DeviceQueueCreateFlags flags_ = DeviceQueueCreateFlags(), uint32_t queueFamilyIndex_ = 0, uint32_t queueCount_ = 0, const float* pQueuePriorities_ = nullptr )
6989 : sType( StructureType::eDeviceQueueCreateInfo )
6990 , pNext( nullptr )
6991 , flags( flags_ )
6992 , queueFamilyIndex( queueFamilyIndex_ )
6993 , queueCount( queueCount_ )
6994 , pQueuePriorities( pQueuePriorities_ )
6995 {
6996 }
6997
6998 DeviceQueueCreateInfo( VkDeviceQueueCreateInfo const & rhs )
6999 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007000 memcpy( this, &rhs, sizeof( DeviceQueueCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007001 }
7002
7003 DeviceQueueCreateInfo& operator=( VkDeviceQueueCreateInfo const & rhs )
7004 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007005 memcpy( this, &rhs, sizeof( DeviceQueueCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007006 return *this;
7007 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007008 DeviceQueueCreateInfo& setPNext( const void* pNext_ )
7009 {
7010 pNext = pNext_;
7011 return *this;
7012 }
7013
7014 DeviceQueueCreateInfo& setFlags( DeviceQueueCreateFlags flags_ )
7015 {
7016 flags = flags_;
7017 return *this;
7018 }
7019
7020 DeviceQueueCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
7021 {
7022 queueFamilyIndex = queueFamilyIndex_;
7023 return *this;
7024 }
7025
7026 DeviceQueueCreateInfo& setQueueCount( uint32_t queueCount_ )
7027 {
7028 queueCount = queueCount_;
7029 return *this;
7030 }
7031
7032 DeviceQueueCreateInfo& setPQueuePriorities( const float* pQueuePriorities_ )
7033 {
7034 pQueuePriorities = pQueuePriorities_;
7035 return *this;
7036 }
7037
7038 operator const VkDeviceQueueCreateInfo&() const
7039 {
7040 return *reinterpret_cast<const VkDeviceQueueCreateInfo*>(this);
7041 }
7042
7043 bool operator==( DeviceQueueCreateInfo const& rhs ) const
7044 {
7045 return ( sType == rhs.sType )
7046 && ( pNext == rhs.pNext )
7047 && ( flags == rhs.flags )
7048 && ( queueFamilyIndex == rhs.queueFamilyIndex )
7049 && ( queueCount == rhs.queueCount )
7050 && ( pQueuePriorities == rhs.pQueuePriorities );
7051 }
7052
7053 bool operator!=( DeviceQueueCreateInfo const& rhs ) const
7054 {
7055 return !operator==( rhs );
7056 }
7057
7058 private:
7059 StructureType sType;
7060
7061 public:
7062 const void* pNext;
7063 DeviceQueueCreateFlags flags;
7064 uint32_t queueFamilyIndex;
7065 uint32_t queueCount;
7066 const float* pQueuePriorities;
7067 };
7068 static_assert( sizeof( DeviceQueueCreateInfo ) == sizeof( VkDeviceQueueCreateInfo ), "struct and wrapper have different size!" );
7069
7070 struct DeviceCreateInfo
7071 {
7072 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 )
7073 : sType( StructureType::eDeviceCreateInfo )
7074 , pNext( nullptr )
7075 , flags( flags_ )
7076 , queueCreateInfoCount( queueCreateInfoCount_ )
7077 , pQueueCreateInfos( pQueueCreateInfos_ )
7078 , enabledLayerCount( enabledLayerCount_ )
7079 , ppEnabledLayerNames( ppEnabledLayerNames_ )
7080 , enabledExtensionCount( enabledExtensionCount_ )
7081 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
7082 , pEnabledFeatures( pEnabledFeatures_ )
7083 {
7084 }
7085
7086 DeviceCreateInfo( VkDeviceCreateInfo const & rhs )
7087 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007088 memcpy( this, &rhs, sizeof( DeviceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007089 }
7090
7091 DeviceCreateInfo& operator=( VkDeviceCreateInfo const & rhs )
7092 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007093 memcpy( this, &rhs, sizeof( DeviceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007094 return *this;
7095 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007096 DeviceCreateInfo& setPNext( const void* pNext_ )
7097 {
7098 pNext = pNext_;
7099 return *this;
7100 }
7101
7102 DeviceCreateInfo& setFlags( DeviceCreateFlags flags_ )
7103 {
7104 flags = flags_;
7105 return *this;
7106 }
7107
7108 DeviceCreateInfo& setQueueCreateInfoCount( uint32_t queueCreateInfoCount_ )
7109 {
7110 queueCreateInfoCount = queueCreateInfoCount_;
7111 return *this;
7112 }
7113
7114 DeviceCreateInfo& setPQueueCreateInfos( const DeviceQueueCreateInfo* pQueueCreateInfos_ )
7115 {
7116 pQueueCreateInfos = pQueueCreateInfos_;
7117 return *this;
7118 }
7119
7120 DeviceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
7121 {
7122 enabledLayerCount = enabledLayerCount_;
7123 return *this;
7124 }
7125
7126 DeviceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
7127 {
7128 ppEnabledLayerNames = ppEnabledLayerNames_;
7129 return *this;
7130 }
7131
7132 DeviceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
7133 {
7134 enabledExtensionCount = enabledExtensionCount_;
7135 return *this;
7136 }
7137
7138 DeviceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
7139 {
7140 ppEnabledExtensionNames = ppEnabledExtensionNames_;
7141 return *this;
7142 }
7143
7144 DeviceCreateInfo& setPEnabledFeatures( const PhysicalDeviceFeatures* pEnabledFeatures_ )
7145 {
7146 pEnabledFeatures = pEnabledFeatures_;
7147 return *this;
7148 }
7149
7150 operator const VkDeviceCreateInfo&() const
7151 {
7152 return *reinterpret_cast<const VkDeviceCreateInfo*>(this);
7153 }
7154
7155 bool operator==( DeviceCreateInfo const& rhs ) const
7156 {
7157 return ( sType == rhs.sType )
7158 && ( pNext == rhs.pNext )
7159 && ( flags == rhs.flags )
7160 && ( queueCreateInfoCount == rhs.queueCreateInfoCount )
7161 && ( pQueueCreateInfos == rhs.pQueueCreateInfos )
7162 && ( enabledLayerCount == rhs.enabledLayerCount )
7163 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
7164 && ( enabledExtensionCount == rhs.enabledExtensionCount )
7165 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames )
7166 && ( pEnabledFeatures == rhs.pEnabledFeatures );
7167 }
7168
7169 bool operator!=( DeviceCreateInfo const& rhs ) const
7170 {
7171 return !operator==( rhs );
7172 }
7173
7174 private:
7175 StructureType sType;
7176
7177 public:
7178 const void* pNext;
7179 DeviceCreateFlags flags;
7180 uint32_t queueCreateInfoCount;
7181 const DeviceQueueCreateInfo* pQueueCreateInfos;
7182 uint32_t enabledLayerCount;
7183 const char* const* ppEnabledLayerNames;
7184 uint32_t enabledExtensionCount;
7185 const char* const* ppEnabledExtensionNames;
7186 const PhysicalDeviceFeatures* pEnabledFeatures;
7187 };
7188 static_assert( sizeof( DeviceCreateInfo ) == sizeof( VkDeviceCreateInfo ), "struct and wrapper have different size!" );
7189
7190 struct InstanceCreateInfo
7191 {
7192 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 )
7193 : sType( StructureType::eInstanceCreateInfo )
7194 , pNext( nullptr )
7195 , flags( flags_ )
7196 , pApplicationInfo( pApplicationInfo_ )
7197 , enabledLayerCount( enabledLayerCount_ )
7198 , ppEnabledLayerNames( ppEnabledLayerNames_ )
7199 , enabledExtensionCount( enabledExtensionCount_ )
7200 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
7201 {
7202 }
7203
7204 InstanceCreateInfo( VkInstanceCreateInfo const & rhs )
7205 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007206 memcpy( this, &rhs, sizeof( InstanceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007207 }
7208
7209 InstanceCreateInfo& operator=( VkInstanceCreateInfo const & rhs )
7210 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007211 memcpy( this, &rhs, sizeof( InstanceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007212 return *this;
7213 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007214 InstanceCreateInfo& setPNext( const void* pNext_ )
7215 {
7216 pNext = pNext_;
7217 return *this;
7218 }
7219
7220 InstanceCreateInfo& setFlags( InstanceCreateFlags flags_ )
7221 {
7222 flags = flags_;
7223 return *this;
7224 }
7225
7226 InstanceCreateInfo& setPApplicationInfo( const ApplicationInfo* pApplicationInfo_ )
7227 {
7228 pApplicationInfo = pApplicationInfo_;
7229 return *this;
7230 }
7231
7232 InstanceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
7233 {
7234 enabledLayerCount = enabledLayerCount_;
7235 return *this;
7236 }
7237
7238 InstanceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
7239 {
7240 ppEnabledLayerNames = ppEnabledLayerNames_;
7241 return *this;
7242 }
7243
7244 InstanceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
7245 {
7246 enabledExtensionCount = enabledExtensionCount_;
7247 return *this;
7248 }
7249
7250 InstanceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
7251 {
7252 ppEnabledExtensionNames = ppEnabledExtensionNames_;
7253 return *this;
7254 }
7255
7256 operator const VkInstanceCreateInfo&() const
7257 {
7258 return *reinterpret_cast<const VkInstanceCreateInfo*>(this);
7259 }
7260
7261 bool operator==( InstanceCreateInfo const& rhs ) const
7262 {
7263 return ( sType == rhs.sType )
7264 && ( pNext == rhs.pNext )
7265 && ( flags == rhs.flags )
7266 && ( pApplicationInfo == rhs.pApplicationInfo )
7267 && ( enabledLayerCount == rhs.enabledLayerCount )
7268 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
7269 && ( enabledExtensionCount == rhs.enabledExtensionCount )
7270 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames );
7271 }
7272
7273 bool operator!=( InstanceCreateInfo const& rhs ) const
7274 {
7275 return !operator==( rhs );
7276 }
7277
7278 private:
7279 StructureType sType;
7280
7281 public:
7282 const void* pNext;
7283 InstanceCreateFlags flags;
7284 const ApplicationInfo* pApplicationInfo;
7285 uint32_t enabledLayerCount;
7286 const char* const* ppEnabledLayerNames;
7287 uint32_t enabledExtensionCount;
7288 const char* const* ppEnabledExtensionNames;
7289 };
7290 static_assert( sizeof( InstanceCreateInfo ) == sizeof( VkInstanceCreateInfo ), "struct and wrapper have different size!" );
7291
7292 struct MemoryAllocateInfo
7293 {
7294 MemoryAllocateInfo( DeviceSize allocationSize_ = 0, uint32_t memoryTypeIndex_ = 0 )
7295 : sType( StructureType::eMemoryAllocateInfo )
7296 , pNext( nullptr )
7297 , allocationSize( allocationSize_ )
7298 , memoryTypeIndex( memoryTypeIndex_ )
7299 {
7300 }
7301
7302 MemoryAllocateInfo( VkMemoryAllocateInfo const & rhs )
7303 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007304 memcpy( this, &rhs, sizeof( MemoryAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007305 }
7306
7307 MemoryAllocateInfo& operator=( VkMemoryAllocateInfo const & rhs )
7308 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007309 memcpy( this, &rhs, sizeof( MemoryAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007310 return *this;
7311 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007312 MemoryAllocateInfo& setPNext( const void* pNext_ )
7313 {
7314 pNext = pNext_;
7315 return *this;
7316 }
7317
7318 MemoryAllocateInfo& setAllocationSize( DeviceSize allocationSize_ )
7319 {
7320 allocationSize = allocationSize_;
7321 return *this;
7322 }
7323
7324 MemoryAllocateInfo& setMemoryTypeIndex( uint32_t memoryTypeIndex_ )
7325 {
7326 memoryTypeIndex = memoryTypeIndex_;
7327 return *this;
7328 }
7329
7330 operator const VkMemoryAllocateInfo&() const
7331 {
7332 return *reinterpret_cast<const VkMemoryAllocateInfo*>(this);
7333 }
7334
7335 bool operator==( MemoryAllocateInfo const& rhs ) const
7336 {
7337 return ( sType == rhs.sType )
7338 && ( pNext == rhs.pNext )
7339 && ( allocationSize == rhs.allocationSize )
7340 && ( memoryTypeIndex == rhs.memoryTypeIndex );
7341 }
7342
7343 bool operator!=( MemoryAllocateInfo const& rhs ) const
7344 {
7345 return !operator==( rhs );
7346 }
7347
7348 private:
7349 StructureType sType;
7350
7351 public:
7352 const void* pNext;
7353 DeviceSize allocationSize;
7354 uint32_t memoryTypeIndex;
7355 };
7356 static_assert( sizeof( MemoryAllocateInfo ) == sizeof( VkMemoryAllocateInfo ), "struct and wrapper have different size!" );
7357
7358 struct MappedMemoryRange
7359 {
7360 MappedMemoryRange( DeviceMemory memory_ = DeviceMemory(), DeviceSize offset_ = 0, DeviceSize size_ = 0 )
7361 : sType( StructureType::eMappedMemoryRange )
7362 , pNext( nullptr )
7363 , memory( memory_ )
7364 , offset( offset_ )
7365 , size( size_ )
7366 {
7367 }
7368
7369 MappedMemoryRange( VkMappedMemoryRange const & rhs )
7370 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007371 memcpy( this, &rhs, sizeof( MappedMemoryRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007372 }
7373
7374 MappedMemoryRange& operator=( VkMappedMemoryRange const & rhs )
7375 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007376 memcpy( this, &rhs, sizeof( MappedMemoryRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007377 return *this;
7378 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007379 MappedMemoryRange& setPNext( const void* pNext_ )
7380 {
7381 pNext = pNext_;
7382 return *this;
7383 }
7384
7385 MappedMemoryRange& setMemory( DeviceMemory memory_ )
7386 {
7387 memory = memory_;
7388 return *this;
7389 }
7390
7391 MappedMemoryRange& setOffset( DeviceSize offset_ )
7392 {
7393 offset = offset_;
7394 return *this;
7395 }
7396
7397 MappedMemoryRange& setSize( DeviceSize size_ )
7398 {
7399 size = size_;
7400 return *this;
7401 }
7402
7403 operator const VkMappedMemoryRange&() const
7404 {
7405 return *reinterpret_cast<const VkMappedMemoryRange*>(this);
7406 }
7407
7408 bool operator==( MappedMemoryRange const& rhs ) const
7409 {
7410 return ( sType == rhs.sType )
7411 && ( pNext == rhs.pNext )
7412 && ( memory == rhs.memory )
7413 && ( offset == rhs.offset )
7414 && ( size == rhs.size );
7415 }
7416
7417 bool operator!=( MappedMemoryRange const& rhs ) const
7418 {
7419 return !operator==( rhs );
7420 }
7421
7422 private:
7423 StructureType sType;
7424
7425 public:
7426 const void* pNext;
7427 DeviceMemory memory;
7428 DeviceSize offset;
7429 DeviceSize size;
7430 };
7431 static_assert( sizeof( MappedMemoryRange ) == sizeof( VkMappedMemoryRange ), "struct and wrapper have different size!" );
7432
7433 struct WriteDescriptorSet
7434 {
7435 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 )
7436 : sType( StructureType::eWriteDescriptorSet )
7437 , pNext( nullptr )
7438 , dstSet( dstSet_ )
7439 , dstBinding( dstBinding_ )
7440 , dstArrayElement( dstArrayElement_ )
7441 , descriptorCount( descriptorCount_ )
7442 , descriptorType( descriptorType_ )
7443 , pImageInfo( pImageInfo_ )
7444 , pBufferInfo( pBufferInfo_ )
7445 , pTexelBufferView( pTexelBufferView_ )
7446 {
7447 }
7448
7449 WriteDescriptorSet( VkWriteDescriptorSet const & rhs )
7450 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007451 memcpy( this, &rhs, sizeof( WriteDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007452 }
7453
7454 WriteDescriptorSet& operator=( VkWriteDescriptorSet const & rhs )
7455 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007456 memcpy( this, &rhs, sizeof( WriteDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007457 return *this;
7458 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007459 WriteDescriptorSet& setPNext( const void* pNext_ )
7460 {
7461 pNext = pNext_;
7462 return *this;
7463 }
7464
7465 WriteDescriptorSet& setDstSet( DescriptorSet dstSet_ )
7466 {
7467 dstSet = dstSet_;
7468 return *this;
7469 }
7470
7471 WriteDescriptorSet& setDstBinding( uint32_t dstBinding_ )
7472 {
7473 dstBinding = dstBinding_;
7474 return *this;
7475 }
7476
7477 WriteDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
7478 {
7479 dstArrayElement = dstArrayElement_;
7480 return *this;
7481 }
7482
7483 WriteDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
7484 {
7485 descriptorCount = descriptorCount_;
7486 return *this;
7487 }
7488
7489 WriteDescriptorSet& setDescriptorType( DescriptorType descriptorType_ )
7490 {
7491 descriptorType = descriptorType_;
7492 return *this;
7493 }
7494
7495 WriteDescriptorSet& setPImageInfo( const DescriptorImageInfo* pImageInfo_ )
7496 {
7497 pImageInfo = pImageInfo_;
7498 return *this;
7499 }
7500
7501 WriteDescriptorSet& setPBufferInfo( const DescriptorBufferInfo* pBufferInfo_ )
7502 {
7503 pBufferInfo = pBufferInfo_;
7504 return *this;
7505 }
7506
7507 WriteDescriptorSet& setPTexelBufferView( const BufferView* pTexelBufferView_ )
7508 {
7509 pTexelBufferView = pTexelBufferView_;
7510 return *this;
7511 }
7512
7513 operator const VkWriteDescriptorSet&() const
7514 {
7515 return *reinterpret_cast<const VkWriteDescriptorSet*>(this);
7516 }
7517
7518 bool operator==( WriteDescriptorSet const& rhs ) const
7519 {
7520 return ( sType == rhs.sType )
7521 && ( pNext == rhs.pNext )
7522 && ( dstSet == rhs.dstSet )
7523 && ( dstBinding == rhs.dstBinding )
7524 && ( dstArrayElement == rhs.dstArrayElement )
7525 && ( descriptorCount == rhs.descriptorCount )
7526 && ( descriptorType == rhs.descriptorType )
7527 && ( pImageInfo == rhs.pImageInfo )
7528 && ( pBufferInfo == rhs.pBufferInfo )
7529 && ( pTexelBufferView == rhs.pTexelBufferView );
7530 }
7531
7532 bool operator!=( WriteDescriptorSet const& rhs ) const
7533 {
7534 return !operator==( rhs );
7535 }
7536
7537 private:
7538 StructureType sType;
7539
7540 public:
7541 const void* pNext;
7542 DescriptorSet dstSet;
7543 uint32_t dstBinding;
7544 uint32_t dstArrayElement;
7545 uint32_t descriptorCount;
7546 DescriptorType descriptorType;
7547 const DescriptorImageInfo* pImageInfo;
7548 const DescriptorBufferInfo* pBufferInfo;
7549 const BufferView* pTexelBufferView;
7550 };
7551 static_assert( sizeof( WriteDescriptorSet ) == sizeof( VkWriteDescriptorSet ), "struct and wrapper have different size!" );
7552
7553 struct CopyDescriptorSet
7554 {
7555 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 )
7556 : sType( StructureType::eCopyDescriptorSet )
7557 , pNext( nullptr )
7558 , srcSet( srcSet_ )
7559 , srcBinding( srcBinding_ )
7560 , srcArrayElement( srcArrayElement_ )
7561 , dstSet( dstSet_ )
7562 , dstBinding( dstBinding_ )
7563 , dstArrayElement( dstArrayElement_ )
7564 , descriptorCount( descriptorCount_ )
7565 {
7566 }
7567
7568 CopyDescriptorSet( VkCopyDescriptorSet const & rhs )
7569 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007570 memcpy( this, &rhs, sizeof( CopyDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007571 }
7572
7573 CopyDescriptorSet& operator=( VkCopyDescriptorSet const & rhs )
7574 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007575 memcpy( this, &rhs, sizeof( CopyDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007576 return *this;
7577 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007578 CopyDescriptorSet& setPNext( const void* pNext_ )
7579 {
7580 pNext = pNext_;
7581 return *this;
7582 }
7583
7584 CopyDescriptorSet& setSrcSet( DescriptorSet srcSet_ )
7585 {
7586 srcSet = srcSet_;
7587 return *this;
7588 }
7589
7590 CopyDescriptorSet& setSrcBinding( uint32_t srcBinding_ )
7591 {
7592 srcBinding = srcBinding_;
7593 return *this;
7594 }
7595
7596 CopyDescriptorSet& setSrcArrayElement( uint32_t srcArrayElement_ )
7597 {
7598 srcArrayElement = srcArrayElement_;
7599 return *this;
7600 }
7601
7602 CopyDescriptorSet& setDstSet( DescriptorSet dstSet_ )
7603 {
7604 dstSet = dstSet_;
7605 return *this;
7606 }
7607
7608 CopyDescriptorSet& setDstBinding( uint32_t dstBinding_ )
7609 {
7610 dstBinding = dstBinding_;
7611 return *this;
7612 }
7613
7614 CopyDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
7615 {
7616 dstArrayElement = dstArrayElement_;
7617 return *this;
7618 }
7619
7620 CopyDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
7621 {
7622 descriptorCount = descriptorCount_;
7623 return *this;
7624 }
7625
7626 operator const VkCopyDescriptorSet&() const
7627 {
7628 return *reinterpret_cast<const VkCopyDescriptorSet*>(this);
7629 }
7630
7631 bool operator==( CopyDescriptorSet const& rhs ) const
7632 {
7633 return ( sType == rhs.sType )
7634 && ( pNext == rhs.pNext )
7635 && ( srcSet == rhs.srcSet )
7636 && ( srcBinding == rhs.srcBinding )
7637 && ( srcArrayElement == rhs.srcArrayElement )
7638 && ( dstSet == rhs.dstSet )
7639 && ( dstBinding == rhs.dstBinding )
7640 && ( dstArrayElement == rhs.dstArrayElement )
7641 && ( descriptorCount == rhs.descriptorCount );
7642 }
7643
7644 bool operator!=( CopyDescriptorSet const& rhs ) const
7645 {
7646 return !operator==( rhs );
7647 }
7648
7649 private:
7650 StructureType sType;
7651
7652 public:
7653 const void* pNext;
7654 DescriptorSet srcSet;
7655 uint32_t srcBinding;
7656 uint32_t srcArrayElement;
7657 DescriptorSet dstSet;
7658 uint32_t dstBinding;
7659 uint32_t dstArrayElement;
7660 uint32_t descriptorCount;
7661 };
7662 static_assert( sizeof( CopyDescriptorSet ) == sizeof( VkCopyDescriptorSet ), "struct and wrapper have different size!" );
7663
7664 struct BufferViewCreateInfo
7665 {
7666 BufferViewCreateInfo( BufferViewCreateFlags flags_ = BufferViewCreateFlags(), Buffer buffer_ = Buffer(), Format format_ = Format::eUndefined, DeviceSize offset_ = 0, DeviceSize range_ = 0 )
7667 : sType( StructureType::eBufferViewCreateInfo )
7668 , pNext( nullptr )
7669 , flags( flags_ )
7670 , buffer( buffer_ )
7671 , format( format_ )
7672 , offset( offset_ )
7673 , range( range_ )
7674 {
7675 }
7676
7677 BufferViewCreateInfo( VkBufferViewCreateInfo const & rhs )
7678 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007679 memcpy( this, &rhs, sizeof( BufferViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007680 }
7681
7682 BufferViewCreateInfo& operator=( VkBufferViewCreateInfo const & rhs )
7683 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007684 memcpy( this, &rhs, sizeof( BufferViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007685 return *this;
7686 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007687 BufferViewCreateInfo& setPNext( const void* pNext_ )
7688 {
7689 pNext = pNext_;
7690 return *this;
7691 }
7692
7693 BufferViewCreateInfo& setFlags( BufferViewCreateFlags flags_ )
7694 {
7695 flags = flags_;
7696 return *this;
7697 }
7698
7699 BufferViewCreateInfo& setBuffer( Buffer buffer_ )
7700 {
7701 buffer = buffer_;
7702 return *this;
7703 }
7704
7705 BufferViewCreateInfo& setFormat( Format format_ )
7706 {
7707 format = format_;
7708 return *this;
7709 }
7710
7711 BufferViewCreateInfo& setOffset( DeviceSize offset_ )
7712 {
7713 offset = offset_;
7714 return *this;
7715 }
7716
7717 BufferViewCreateInfo& setRange( DeviceSize range_ )
7718 {
7719 range = range_;
7720 return *this;
7721 }
7722
7723 operator const VkBufferViewCreateInfo&() const
7724 {
7725 return *reinterpret_cast<const VkBufferViewCreateInfo*>(this);
7726 }
7727
7728 bool operator==( BufferViewCreateInfo const& rhs ) const
7729 {
7730 return ( sType == rhs.sType )
7731 && ( pNext == rhs.pNext )
7732 && ( flags == rhs.flags )
7733 && ( buffer == rhs.buffer )
7734 && ( format == rhs.format )
7735 && ( offset == rhs.offset )
7736 && ( range == rhs.range );
7737 }
7738
7739 bool operator!=( BufferViewCreateInfo const& rhs ) const
7740 {
7741 return !operator==( rhs );
7742 }
7743
7744 private:
7745 StructureType sType;
7746
7747 public:
7748 const void* pNext;
7749 BufferViewCreateFlags flags;
7750 Buffer buffer;
7751 Format format;
7752 DeviceSize offset;
7753 DeviceSize range;
7754 };
7755 static_assert( sizeof( BufferViewCreateInfo ) == sizeof( VkBufferViewCreateInfo ), "struct and wrapper have different size!" );
7756
7757 struct ShaderModuleCreateInfo
7758 {
7759 ShaderModuleCreateInfo( ShaderModuleCreateFlags flags_ = ShaderModuleCreateFlags(), size_t codeSize_ = 0, const uint32_t* pCode_ = nullptr )
7760 : sType( StructureType::eShaderModuleCreateInfo )
7761 , pNext( nullptr )
7762 , flags( flags_ )
7763 , codeSize( codeSize_ )
7764 , pCode( pCode_ )
7765 {
7766 }
7767
7768 ShaderModuleCreateInfo( VkShaderModuleCreateInfo const & rhs )
7769 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007770 memcpy( this, &rhs, sizeof( ShaderModuleCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007771 }
7772
7773 ShaderModuleCreateInfo& operator=( VkShaderModuleCreateInfo const & rhs )
7774 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007775 memcpy( this, &rhs, sizeof( ShaderModuleCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007776 return *this;
7777 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007778 ShaderModuleCreateInfo& setPNext( const void* pNext_ )
7779 {
7780 pNext = pNext_;
7781 return *this;
7782 }
7783
7784 ShaderModuleCreateInfo& setFlags( ShaderModuleCreateFlags flags_ )
7785 {
7786 flags = flags_;
7787 return *this;
7788 }
7789
7790 ShaderModuleCreateInfo& setCodeSize( size_t codeSize_ )
7791 {
7792 codeSize = codeSize_;
7793 return *this;
7794 }
7795
7796 ShaderModuleCreateInfo& setPCode( const uint32_t* pCode_ )
7797 {
7798 pCode = pCode_;
7799 return *this;
7800 }
7801
7802 operator const VkShaderModuleCreateInfo&() const
7803 {
7804 return *reinterpret_cast<const VkShaderModuleCreateInfo*>(this);
7805 }
7806
7807 bool operator==( ShaderModuleCreateInfo const& rhs ) const
7808 {
7809 return ( sType == rhs.sType )
7810 && ( pNext == rhs.pNext )
7811 && ( flags == rhs.flags )
7812 && ( codeSize == rhs.codeSize )
7813 && ( pCode == rhs.pCode );
7814 }
7815
7816 bool operator!=( ShaderModuleCreateInfo const& rhs ) const
7817 {
7818 return !operator==( rhs );
7819 }
7820
7821 private:
7822 StructureType sType;
7823
7824 public:
7825 const void* pNext;
7826 ShaderModuleCreateFlags flags;
7827 size_t codeSize;
7828 const uint32_t* pCode;
7829 };
7830 static_assert( sizeof( ShaderModuleCreateInfo ) == sizeof( VkShaderModuleCreateInfo ), "struct and wrapper have different size!" );
7831
7832 struct DescriptorSetAllocateInfo
7833 {
7834 DescriptorSetAllocateInfo( DescriptorPool descriptorPool_ = DescriptorPool(), uint32_t descriptorSetCount_ = 0, const DescriptorSetLayout* pSetLayouts_ = nullptr )
7835 : sType( StructureType::eDescriptorSetAllocateInfo )
7836 , pNext( nullptr )
7837 , descriptorPool( descriptorPool_ )
7838 , descriptorSetCount( descriptorSetCount_ )
7839 , pSetLayouts( pSetLayouts_ )
7840 {
7841 }
7842
7843 DescriptorSetAllocateInfo( VkDescriptorSetAllocateInfo const & rhs )
7844 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007845 memcpy( this, &rhs, sizeof( DescriptorSetAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007846 }
7847
7848 DescriptorSetAllocateInfo& operator=( VkDescriptorSetAllocateInfo const & rhs )
7849 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007850 memcpy( this, &rhs, sizeof( DescriptorSetAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007851 return *this;
7852 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007853 DescriptorSetAllocateInfo& setPNext( const void* pNext_ )
7854 {
7855 pNext = pNext_;
7856 return *this;
7857 }
7858
7859 DescriptorSetAllocateInfo& setDescriptorPool( DescriptorPool descriptorPool_ )
7860 {
7861 descriptorPool = descriptorPool_;
7862 return *this;
7863 }
7864
7865 DescriptorSetAllocateInfo& setDescriptorSetCount( uint32_t descriptorSetCount_ )
7866 {
7867 descriptorSetCount = descriptorSetCount_;
7868 return *this;
7869 }
7870
7871 DescriptorSetAllocateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
7872 {
7873 pSetLayouts = pSetLayouts_;
7874 return *this;
7875 }
7876
7877 operator const VkDescriptorSetAllocateInfo&() const
7878 {
7879 return *reinterpret_cast<const VkDescriptorSetAllocateInfo*>(this);
7880 }
7881
7882 bool operator==( DescriptorSetAllocateInfo const& rhs ) const
7883 {
7884 return ( sType == rhs.sType )
7885 && ( pNext == rhs.pNext )
7886 && ( descriptorPool == rhs.descriptorPool )
7887 && ( descriptorSetCount == rhs.descriptorSetCount )
7888 && ( pSetLayouts == rhs.pSetLayouts );
7889 }
7890
7891 bool operator!=( DescriptorSetAllocateInfo const& rhs ) const
7892 {
7893 return !operator==( rhs );
7894 }
7895
7896 private:
7897 StructureType sType;
7898
7899 public:
7900 const void* pNext;
7901 DescriptorPool descriptorPool;
7902 uint32_t descriptorSetCount;
7903 const DescriptorSetLayout* pSetLayouts;
7904 };
7905 static_assert( sizeof( DescriptorSetAllocateInfo ) == sizeof( VkDescriptorSetAllocateInfo ), "struct and wrapper have different size!" );
7906
7907 struct PipelineVertexInputStateCreateInfo
7908 {
7909 PipelineVertexInputStateCreateInfo( PipelineVertexInputStateCreateFlags flags_ = PipelineVertexInputStateCreateFlags(), uint32_t vertexBindingDescriptionCount_ = 0, const VertexInputBindingDescription* pVertexBindingDescriptions_ = nullptr, uint32_t vertexAttributeDescriptionCount_ = 0, const VertexInputAttributeDescription* pVertexAttributeDescriptions_ = nullptr )
7910 : sType( StructureType::ePipelineVertexInputStateCreateInfo )
7911 , pNext( nullptr )
7912 , flags( flags_ )
7913 , vertexBindingDescriptionCount( vertexBindingDescriptionCount_ )
7914 , pVertexBindingDescriptions( pVertexBindingDescriptions_ )
7915 , vertexAttributeDescriptionCount( vertexAttributeDescriptionCount_ )
7916 , pVertexAttributeDescriptions( pVertexAttributeDescriptions_ )
7917 {
7918 }
7919
7920 PipelineVertexInputStateCreateInfo( VkPipelineVertexInputStateCreateInfo const & rhs )
7921 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007922 memcpy( this, &rhs, sizeof( PipelineVertexInputStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007923 }
7924
7925 PipelineVertexInputStateCreateInfo& operator=( VkPipelineVertexInputStateCreateInfo const & rhs )
7926 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007927 memcpy( this, &rhs, sizeof( PipelineVertexInputStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007928 return *this;
7929 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007930 PipelineVertexInputStateCreateInfo& setPNext( const void* pNext_ )
7931 {
7932 pNext = pNext_;
7933 return *this;
7934 }
7935
7936 PipelineVertexInputStateCreateInfo& setFlags( PipelineVertexInputStateCreateFlags flags_ )
7937 {
7938 flags = flags_;
7939 return *this;
7940 }
7941
7942 PipelineVertexInputStateCreateInfo& setVertexBindingDescriptionCount( uint32_t vertexBindingDescriptionCount_ )
7943 {
7944 vertexBindingDescriptionCount = vertexBindingDescriptionCount_;
7945 return *this;
7946 }
7947
7948 PipelineVertexInputStateCreateInfo& setPVertexBindingDescriptions( const VertexInputBindingDescription* pVertexBindingDescriptions_ )
7949 {
7950 pVertexBindingDescriptions = pVertexBindingDescriptions_;
7951 return *this;
7952 }
7953
7954 PipelineVertexInputStateCreateInfo& setVertexAttributeDescriptionCount( uint32_t vertexAttributeDescriptionCount_ )
7955 {
7956 vertexAttributeDescriptionCount = vertexAttributeDescriptionCount_;
7957 return *this;
7958 }
7959
7960 PipelineVertexInputStateCreateInfo& setPVertexAttributeDescriptions( const VertexInputAttributeDescription* pVertexAttributeDescriptions_ )
7961 {
7962 pVertexAttributeDescriptions = pVertexAttributeDescriptions_;
7963 return *this;
7964 }
7965
7966 operator const VkPipelineVertexInputStateCreateInfo&() const
7967 {
7968 return *reinterpret_cast<const VkPipelineVertexInputStateCreateInfo*>(this);
7969 }
7970
7971 bool operator==( PipelineVertexInputStateCreateInfo const& rhs ) const
7972 {
7973 return ( sType == rhs.sType )
7974 && ( pNext == rhs.pNext )
7975 && ( flags == rhs.flags )
7976 && ( vertexBindingDescriptionCount == rhs.vertexBindingDescriptionCount )
7977 && ( pVertexBindingDescriptions == rhs.pVertexBindingDescriptions )
7978 && ( vertexAttributeDescriptionCount == rhs.vertexAttributeDescriptionCount )
7979 && ( pVertexAttributeDescriptions == rhs.pVertexAttributeDescriptions );
7980 }
7981
7982 bool operator!=( PipelineVertexInputStateCreateInfo const& rhs ) const
7983 {
7984 return !operator==( rhs );
7985 }
7986
7987 private:
7988 StructureType sType;
7989
7990 public:
7991 const void* pNext;
7992 PipelineVertexInputStateCreateFlags flags;
7993 uint32_t vertexBindingDescriptionCount;
7994 const VertexInputBindingDescription* pVertexBindingDescriptions;
7995 uint32_t vertexAttributeDescriptionCount;
7996 const VertexInputAttributeDescription* pVertexAttributeDescriptions;
7997 };
7998 static_assert( sizeof( PipelineVertexInputStateCreateInfo ) == sizeof( VkPipelineVertexInputStateCreateInfo ), "struct and wrapper have different size!" );
7999
8000 struct PipelineInputAssemblyStateCreateInfo
8001 {
8002 PipelineInputAssemblyStateCreateInfo( PipelineInputAssemblyStateCreateFlags flags_ = PipelineInputAssemblyStateCreateFlags(), PrimitiveTopology topology_ = PrimitiveTopology::ePointList, Bool32 primitiveRestartEnable_ = 0 )
8003 : sType( StructureType::ePipelineInputAssemblyStateCreateInfo )
8004 , pNext( nullptr )
8005 , flags( flags_ )
8006 , topology( topology_ )
8007 , primitiveRestartEnable( primitiveRestartEnable_ )
8008 {
8009 }
8010
8011 PipelineInputAssemblyStateCreateInfo( VkPipelineInputAssemblyStateCreateInfo const & rhs )
8012 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008013 memcpy( this, &rhs, sizeof( PipelineInputAssemblyStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008014 }
8015
8016 PipelineInputAssemblyStateCreateInfo& operator=( VkPipelineInputAssemblyStateCreateInfo const & rhs )
8017 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008018 memcpy( this, &rhs, sizeof( PipelineInputAssemblyStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008019 return *this;
8020 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008021 PipelineInputAssemblyStateCreateInfo& setPNext( const void* pNext_ )
8022 {
8023 pNext = pNext_;
8024 return *this;
8025 }
8026
8027 PipelineInputAssemblyStateCreateInfo& setFlags( PipelineInputAssemblyStateCreateFlags flags_ )
8028 {
8029 flags = flags_;
8030 return *this;
8031 }
8032
8033 PipelineInputAssemblyStateCreateInfo& setTopology( PrimitiveTopology topology_ )
8034 {
8035 topology = topology_;
8036 return *this;
8037 }
8038
8039 PipelineInputAssemblyStateCreateInfo& setPrimitiveRestartEnable( Bool32 primitiveRestartEnable_ )
8040 {
8041 primitiveRestartEnable = primitiveRestartEnable_;
8042 return *this;
8043 }
8044
8045 operator const VkPipelineInputAssemblyStateCreateInfo&() const
8046 {
8047 return *reinterpret_cast<const VkPipelineInputAssemblyStateCreateInfo*>(this);
8048 }
8049
8050 bool operator==( PipelineInputAssemblyStateCreateInfo const& rhs ) const
8051 {
8052 return ( sType == rhs.sType )
8053 && ( pNext == rhs.pNext )
8054 && ( flags == rhs.flags )
8055 && ( topology == rhs.topology )
8056 && ( primitiveRestartEnable == rhs.primitiveRestartEnable );
8057 }
8058
8059 bool operator!=( PipelineInputAssemblyStateCreateInfo const& rhs ) const
8060 {
8061 return !operator==( rhs );
8062 }
8063
8064 private:
8065 StructureType sType;
8066
8067 public:
8068 const void* pNext;
8069 PipelineInputAssemblyStateCreateFlags flags;
8070 PrimitiveTopology topology;
8071 Bool32 primitiveRestartEnable;
8072 };
8073 static_assert( sizeof( PipelineInputAssemblyStateCreateInfo ) == sizeof( VkPipelineInputAssemblyStateCreateInfo ), "struct and wrapper have different size!" );
8074
8075 struct PipelineTessellationStateCreateInfo
8076 {
8077 PipelineTessellationStateCreateInfo( PipelineTessellationStateCreateFlags flags_ = PipelineTessellationStateCreateFlags(), uint32_t patchControlPoints_ = 0 )
8078 : sType( StructureType::ePipelineTessellationStateCreateInfo )
8079 , pNext( nullptr )
8080 , flags( flags_ )
8081 , patchControlPoints( patchControlPoints_ )
8082 {
8083 }
8084
8085 PipelineTessellationStateCreateInfo( VkPipelineTessellationStateCreateInfo const & rhs )
8086 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008087 memcpy( this, &rhs, sizeof( PipelineTessellationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008088 }
8089
8090 PipelineTessellationStateCreateInfo& operator=( VkPipelineTessellationStateCreateInfo const & rhs )
8091 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008092 memcpy( this, &rhs, sizeof( PipelineTessellationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008093 return *this;
8094 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008095 PipelineTessellationStateCreateInfo& setPNext( const void* pNext_ )
8096 {
8097 pNext = pNext_;
8098 return *this;
8099 }
8100
8101 PipelineTessellationStateCreateInfo& setFlags( PipelineTessellationStateCreateFlags flags_ )
8102 {
8103 flags = flags_;
8104 return *this;
8105 }
8106
8107 PipelineTessellationStateCreateInfo& setPatchControlPoints( uint32_t patchControlPoints_ )
8108 {
8109 patchControlPoints = patchControlPoints_;
8110 return *this;
8111 }
8112
8113 operator const VkPipelineTessellationStateCreateInfo&() const
8114 {
8115 return *reinterpret_cast<const VkPipelineTessellationStateCreateInfo*>(this);
8116 }
8117
8118 bool operator==( PipelineTessellationStateCreateInfo const& rhs ) const
8119 {
8120 return ( sType == rhs.sType )
8121 && ( pNext == rhs.pNext )
8122 && ( flags == rhs.flags )
8123 && ( patchControlPoints == rhs.patchControlPoints );
8124 }
8125
8126 bool operator!=( PipelineTessellationStateCreateInfo const& rhs ) const
8127 {
8128 return !operator==( rhs );
8129 }
8130
8131 private:
8132 StructureType sType;
8133
8134 public:
8135 const void* pNext;
8136 PipelineTessellationStateCreateFlags flags;
8137 uint32_t patchControlPoints;
8138 };
8139 static_assert( sizeof( PipelineTessellationStateCreateInfo ) == sizeof( VkPipelineTessellationStateCreateInfo ), "struct and wrapper have different size!" );
8140
8141 struct PipelineViewportStateCreateInfo
8142 {
8143 PipelineViewportStateCreateInfo( PipelineViewportStateCreateFlags flags_ = PipelineViewportStateCreateFlags(), uint32_t viewportCount_ = 0, const Viewport* pViewports_ = nullptr, uint32_t scissorCount_ = 0, const Rect2D* pScissors_ = nullptr )
8144 : sType( StructureType::ePipelineViewportStateCreateInfo )
8145 , pNext( nullptr )
8146 , flags( flags_ )
8147 , viewportCount( viewportCount_ )
8148 , pViewports( pViewports_ )
8149 , scissorCount( scissorCount_ )
8150 , pScissors( pScissors_ )
8151 {
8152 }
8153
8154 PipelineViewportStateCreateInfo( VkPipelineViewportStateCreateInfo const & rhs )
8155 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008156 memcpy( this, &rhs, sizeof( PipelineViewportStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008157 }
8158
8159 PipelineViewportStateCreateInfo& operator=( VkPipelineViewportStateCreateInfo const & rhs )
8160 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008161 memcpy( this, &rhs, sizeof( PipelineViewportStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008162 return *this;
8163 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008164 PipelineViewportStateCreateInfo& setPNext( const void* pNext_ )
8165 {
8166 pNext = pNext_;
8167 return *this;
8168 }
8169
8170 PipelineViewportStateCreateInfo& setFlags( PipelineViewportStateCreateFlags flags_ )
8171 {
8172 flags = flags_;
8173 return *this;
8174 }
8175
8176 PipelineViewportStateCreateInfo& setViewportCount( uint32_t viewportCount_ )
8177 {
8178 viewportCount = viewportCount_;
8179 return *this;
8180 }
8181
8182 PipelineViewportStateCreateInfo& setPViewports( const Viewport* pViewports_ )
8183 {
8184 pViewports = pViewports_;
8185 return *this;
8186 }
8187
8188 PipelineViewportStateCreateInfo& setScissorCount( uint32_t scissorCount_ )
8189 {
8190 scissorCount = scissorCount_;
8191 return *this;
8192 }
8193
8194 PipelineViewportStateCreateInfo& setPScissors( const Rect2D* pScissors_ )
8195 {
8196 pScissors = pScissors_;
8197 return *this;
8198 }
8199
8200 operator const VkPipelineViewportStateCreateInfo&() const
8201 {
8202 return *reinterpret_cast<const VkPipelineViewportStateCreateInfo*>(this);
8203 }
8204
8205 bool operator==( PipelineViewportStateCreateInfo const& rhs ) const
8206 {
8207 return ( sType == rhs.sType )
8208 && ( pNext == rhs.pNext )
8209 && ( flags == rhs.flags )
8210 && ( viewportCount == rhs.viewportCount )
8211 && ( pViewports == rhs.pViewports )
8212 && ( scissorCount == rhs.scissorCount )
8213 && ( pScissors == rhs.pScissors );
8214 }
8215
8216 bool operator!=( PipelineViewportStateCreateInfo const& rhs ) const
8217 {
8218 return !operator==( rhs );
8219 }
8220
8221 private:
8222 StructureType sType;
8223
8224 public:
8225 const void* pNext;
8226 PipelineViewportStateCreateFlags flags;
8227 uint32_t viewportCount;
8228 const Viewport* pViewports;
8229 uint32_t scissorCount;
8230 const Rect2D* pScissors;
8231 };
8232 static_assert( sizeof( PipelineViewportStateCreateInfo ) == sizeof( VkPipelineViewportStateCreateInfo ), "struct and wrapper have different size!" );
8233
8234 struct PipelineRasterizationStateCreateInfo
8235 {
8236 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 )
8237 : sType( StructureType::ePipelineRasterizationStateCreateInfo )
8238 , pNext( nullptr )
8239 , flags( flags_ )
8240 , depthClampEnable( depthClampEnable_ )
8241 , rasterizerDiscardEnable( rasterizerDiscardEnable_ )
8242 , polygonMode( polygonMode_ )
8243 , cullMode( cullMode_ )
8244 , frontFace( frontFace_ )
8245 , depthBiasEnable( depthBiasEnable_ )
8246 , depthBiasConstantFactor( depthBiasConstantFactor_ )
8247 , depthBiasClamp( depthBiasClamp_ )
8248 , depthBiasSlopeFactor( depthBiasSlopeFactor_ )
8249 , lineWidth( lineWidth_ )
8250 {
8251 }
8252
8253 PipelineRasterizationStateCreateInfo( VkPipelineRasterizationStateCreateInfo const & rhs )
8254 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008255 memcpy( this, &rhs, sizeof( PipelineRasterizationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008256 }
8257
8258 PipelineRasterizationStateCreateInfo& operator=( VkPipelineRasterizationStateCreateInfo const & rhs )
8259 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008260 memcpy( this, &rhs, sizeof( PipelineRasterizationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008261 return *this;
8262 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008263 PipelineRasterizationStateCreateInfo& setPNext( const void* pNext_ )
8264 {
8265 pNext = pNext_;
8266 return *this;
8267 }
8268
8269 PipelineRasterizationStateCreateInfo& setFlags( PipelineRasterizationStateCreateFlags flags_ )
8270 {
8271 flags = flags_;
8272 return *this;
8273 }
8274
8275 PipelineRasterizationStateCreateInfo& setDepthClampEnable( Bool32 depthClampEnable_ )
8276 {
8277 depthClampEnable = depthClampEnable_;
8278 return *this;
8279 }
8280
8281 PipelineRasterizationStateCreateInfo& setRasterizerDiscardEnable( Bool32 rasterizerDiscardEnable_ )
8282 {
8283 rasterizerDiscardEnable = rasterizerDiscardEnable_;
8284 return *this;
8285 }
8286
8287 PipelineRasterizationStateCreateInfo& setPolygonMode( PolygonMode polygonMode_ )
8288 {
8289 polygonMode = polygonMode_;
8290 return *this;
8291 }
8292
8293 PipelineRasterizationStateCreateInfo& setCullMode( CullModeFlags cullMode_ )
8294 {
8295 cullMode = cullMode_;
8296 return *this;
8297 }
8298
8299 PipelineRasterizationStateCreateInfo& setFrontFace( FrontFace frontFace_ )
8300 {
8301 frontFace = frontFace_;
8302 return *this;
8303 }
8304
8305 PipelineRasterizationStateCreateInfo& setDepthBiasEnable( Bool32 depthBiasEnable_ )
8306 {
8307 depthBiasEnable = depthBiasEnable_;
8308 return *this;
8309 }
8310
8311 PipelineRasterizationStateCreateInfo& setDepthBiasConstantFactor( float depthBiasConstantFactor_ )
8312 {
8313 depthBiasConstantFactor = depthBiasConstantFactor_;
8314 return *this;
8315 }
8316
8317 PipelineRasterizationStateCreateInfo& setDepthBiasClamp( float depthBiasClamp_ )
8318 {
8319 depthBiasClamp = depthBiasClamp_;
8320 return *this;
8321 }
8322
8323 PipelineRasterizationStateCreateInfo& setDepthBiasSlopeFactor( float depthBiasSlopeFactor_ )
8324 {
8325 depthBiasSlopeFactor = depthBiasSlopeFactor_;
8326 return *this;
8327 }
8328
8329 PipelineRasterizationStateCreateInfo& setLineWidth( float lineWidth_ )
8330 {
8331 lineWidth = lineWidth_;
8332 return *this;
8333 }
8334
8335 operator const VkPipelineRasterizationStateCreateInfo&() const
8336 {
8337 return *reinterpret_cast<const VkPipelineRasterizationStateCreateInfo*>(this);
8338 }
8339
8340 bool operator==( PipelineRasterizationStateCreateInfo const& rhs ) const
8341 {
8342 return ( sType == rhs.sType )
8343 && ( pNext == rhs.pNext )
8344 && ( flags == rhs.flags )
8345 && ( depthClampEnable == rhs.depthClampEnable )
8346 && ( rasterizerDiscardEnable == rhs.rasterizerDiscardEnable )
8347 && ( polygonMode == rhs.polygonMode )
8348 && ( cullMode == rhs.cullMode )
8349 && ( frontFace == rhs.frontFace )
8350 && ( depthBiasEnable == rhs.depthBiasEnable )
8351 && ( depthBiasConstantFactor == rhs.depthBiasConstantFactor )
8352 && ( depthBiasClamp == rhs.depthBiasClamp )
8353 && ( depthBiasSlopeFactor == rhs.depthBiasSlopeFactor )
8354 && ( lineWidth == rhs.lineWidth );
8355 }
8356
8357 bool operator!=( PipelineRasterizationStateCreateInfo const& rhs ) const
8358 {
8359 return !operator==( rhs );
8360 }
8361
8362 private:
8363 StructureType sType;
8364
8365 public:
8366 const void* pNext;
8367 PipelineRasterizationStateCreateFlags flags;
8368 Bool32 depthClampEnable;
8369 Bool32 rasterizerDiscardEnable;
8370 PolygonMode polygonMode;
8371 CullModeFlags cullMode;
8372 FrontFace frontFace;
8373 Bool32 depthBiasEnable;
8374 float depthBiasConstantFactor;
8375 float depthBiasClamp;
8376 float depthBiasSlopeFactor;
8377 float lineWidth;
8378 };
8379 static_assert( sizeof( PipelineRasterizationStateCreateInfo ) == sizeof( VkPipelineRasterizationStateCreateInfo ), "struct and wrapper have different size!" );
8380
8381 struct PipelineDepthStencilStateCreateInfo
8382 {
8383 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 )
8384 : sType( StructureType::ePipelineDepthStencilStateCreateInfo )
8385 , pNext( nullptr )
8386 , flags( flags_ )
8387 , depthTestEnable( depthTestEnable_ )
8388 , depthWriteEnable( depthWriteEnable_ )
8389 , depthCompareOp( depthCompareOp_ )
8390 , depthBoundsTestEnable( depthBoundsTestEnable_ )
8391 , stencilTestEnable( stencilTestEnable_ )
8392 , front( front_ )
8393 , back( back_ )
8394 , minDepthBounds( minDepthBounds_ )
8395 , maxDepthBounds( maxDepthBounds_ )
8396 {
8397 }
8398
8399 PipelineDepthStencilStateCreateInfo( VkPipelineDepthStencilStateCreateInfo const & rhs )
8400 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008401 memcpy( this, &rhs, sizeof( PipelineDepthStencilStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008402 }
8403
8404 PipelineDepthStencilStateCreateInfo& operator=( VkPipelineDepthStencilStateCreateInfo const & rhs )
8405 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008406 memcpy( this, &rhs, sizeof( PipelineDepthStencilStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008407 return *this;
8408 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008409 PipelineDepthStencilStateCreateInfo& setPNext( const void* pNext_ )
8410 {
8411 pNext = pNext_;
8412 return *this;
8413 }
8414
8415 PipelineDepthStencilStateCreateInfo& setFlags( PipelineDepthStencilStateCreateFlags flags_ )
8416 {
8417 flags = flags_;
8418 return *this;
8419 }
8420
8421 PipelineDepthStencilStateCreateInfo& setDepthTestEnable( Bool32 depthTestEnable_ )
8422 {
8423 depthTestEnable = depthTestEnable_;
8424 return *this;
8425 }
8426
8427 PipelineDepthStencilStateCreateInfo& setDepthWriteEnable( Bool32 depthWriteEnable_ )
8428 {
8429 depthWriteEnable = depthWriteEnable_;
8430 return *this;
8431 }
8432
8433 PipelineDepthStencilStateCreateInfo& setDepthCompareOp( CompareOp depthCompareOp_ )
8434 {
8435 depthCompareOp = depthCompareOp_;
8436 return *this;
8437 }
8438
8439 PipelineDepthStencilStateCreateInfo& setDepthBoundsTestEnable( Bool32 depthBoundsTestEnable_ )
8440 {
8441 depthBoundsTestEnable = depthBoundsTestEnable_;
8442 return *this;
8443 }
8444
8445 PipelineDepthStencilStateCreateInfo& setStencilTestEnable( Bool32 stencilTestEnable_ )
8446 {
8447 stencilTestEnable = stencilTestEnable_;
8448 return *this;
8449 }
8450
8451 PipelineDepthStencilStateCreateInfo& setFront( StencilOpState front_ )
8452 {
8453 front = front_;
8454 return *this;
8455 }
8456
8457 PipelineDepthStencilStateCreateInfo& setBack( StencilOpState back_ )
8458 {
8459 back = back_;
8460 return *this;
8461 }
8462
8463 PipelineDepthStencilStateCreateInfo& setMinDepthBounds( float minDepthBounds_ )
8464 {
8465 minDepthBounds = minDepthBounds_;
8466 return *this;
8467 }
8468
8469 PipelineDepthStencilStateCreateInfo& setMaxDepthBounds( float maxDepthBounds_ )
8470 {
8471 maxDepthBounds = maxDepthBounds_;
8472 return *this;
8473 }
8474
8475 operator const VkPipelineDepthStencilStateCreateInfo&() const
8476 {
8477 return *reinterpret_cast<const VkPipelineDepthStencilStateCreateInfo*>(this);
8478 }
8479
8480 bool operator==( PipelineDepthStencilStateCreateInfo const& rhs ) const
8481 {
8482 return ( sType == rhs.sType )
8483 && ( pNext == rhs.pNext )
8484 && ( flags == rhs.flags )
8485 && ( depthTestEnable == rhs.depthTestEnable )
8486 && ( depthWriteEnable == rhs.depthWriteEnable )
8487 && ( depthCompareOp == rhs.depthCompareOp )
8488 && ( depthBoundsTestEnable == rhs.depthBoundsTestEnable )
8489 && ( stencilTestEnable == rhs.stencilTestEnable )
8490 && ( front == rhs.front )
8491 && ( back == rhs.back )
8492 && ( minDepthBounds == rhs.minDepthBounds )
8493 && ( maxDepthBounds == rhs.maxDepthBounds );
8494 }
8495
8496 bool operator!=( PipelineDepthStencilStateCreateInfo const& rhs ) const
8497 {
8498 return !operator==( rhs );
8499 }
8500
8501 private:
8502 StructureType sType;
8503
8504 public:
8505 const void* pNext;
8506 PipelineDepthStencilStateCreateFlags flags;
8507 Bool32 depthTestEnable;
8508 Bool32 depthWriteEnable;
8509 CompareOp depthCompareOp;
8510 Bool32 depthBoundsTestEnable;
8511 Bool32 stencilTestEnable;
8512 StencilOpState front;
8513 StencilOpState back;
8514 float minDepthBounds;
8515 float maxDepthBounds;
8516 };
8517 static_assert( sizeof( PipelineDepthStencilStateCreateInfo ) == sizeof( VkPipelineDepthStencilStateCreateInfo ), "struct and wrapper have different size!" );
8518
8519 struct PipelineCacheCreateInfo
8520 {
8521 PipelineCacheCreateInfo( PipelineCacheCreateFlags flags_ = PipelineCacheCreateFlags(), size_t initialDataSize_ = 0, const void* pInitialData_ = nullptr )
8522 : sType( StructureType::ePipelineCacheCreateInfo )
8523 , pNext( nullptr )
8524 , flags( flags_ )
8525 , initialDataSize( initialDataSize_ )
8526 , pInitialData( pInitialData_ )
8527 {
8528 }
8529
8530 PipelineCacheCreateInfo( VkPipelineCacheCreateInfo const & rhs )
8531 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008532 memcpy( this, &rhs, sizeof( PipelineCacheCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008533 }
8534
8535 PipelineCacheCreateInfo& operator=( VkPipelineCacheCreateInfo const & rhs )
8536 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008537 memcpy( this, &rhs, sizeof( PipelineCacheCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008538 return *this;
8539 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008540 PipelineCacheCreateInfo& setPNext( const void* pNext_ )
8541 {
8542 pNext = pNext_;
8543 return *this;
8544 }
8545
8546 PipelineCacheCreateInfo& setFlags( PipelineCacheCreateFlags flags_ )
8547 {
8548 flags = flags_;
8549 return *this;
8550 }
8551
8552 PipelineCacheCreateInfo& setInitialDataSize( size_t initialDataSize_ )
8553 {
8554 initialDataSize = initialDataSize_;
8555 return *this;
8556 }
8557
8558 PipelineCacheCreateInfo& setPInitialData( const void* pInitialData_ )
8559 {
8560 pInitialData = pInitialData_;
8561 return *this;
8562 }
8563
8564 operator const VkPipelineCacheCreateInfo&() const
8565 {
8566 return *reinterpret_cast<const VkPipelineCacheCreateInfo*>(this);
8567 }
8568
8569 bool operator==( PipelineCacheCreateInfo const& rhs ) const
8570 {
8571 return ( sType == rhs.sType )
8572 && ( pNext == rhs.pNext )
8573 && ( flags == rhs.flags )
8574 && ( initialDataSize == rhs.initialDataSize )
8575 && ( pInitialData == rhs.pInitialData );
8576 }
8577
8578 bool operator!=( PipelineCacheCreateInfo const& rhs ) const
8579 {
8580 return !operator==( rhs );
8581 }
8582
8583 private:
8584 StructureType sType;
8585
8586 public:
8587 const void* pNext;
8588 PipelineCacheCreateFlags flags;
8589 size_t initialDataSize;
8590 const void* pInitialData;
8591 };
8592 static_assert( sizeof( PipelineCacheCreateInfo ) == sizeof( VkPipelineCacheCreateInfo ), "struct and wrapper have different size!" );
8593
8594 struct SamplerCreateInfo
8595 {
8596 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 )
8597 : sType( StructureType::eSamplerCreateInfo )
8598 , pNext( nullptr )
8599 , flags( flags_ )
8600 , magFilter( magFilter_ )
8601 , minFilter( minFilter_ )
8602 , mipmapMode( mipmapMode_ )
8603 , addressModeU( addressModeU_ )
8604 , addressModeV( addressModeV_ )
8605 , addressModeW( addressModeW_ )
8606 , mipLodBias( mipLodBias_ )
8607 , anisotropyEnable( anisotropyEnable_ )
8608 , maxAnisotropy( maxAnisotropy_ )
8609 , compareEnable( compareEnable_ )
8610 , compareOp( compareOp_ )
8611 , minLod( minLod_ )
8612 , maxLod( maxLod_ )
8613 , borderColor( borderColor_ )
8614 , unnormalizedCoordinates( unnormalizedCoordinates_ )
8615 {
8616 }
8617
8618 SamplerCreateInfo( VkSamplerCreateInfo const & rhs )
8619 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008620 memcpy( this, &rhs, sizeof( SamplerCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008621 }
8622
8623 SamplerCreateInfo& operator=( VkSamplerCreateInfo const & rhs )
8624 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008625 memcpy( this, &rhs, sizeof( SamplerCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008626 return *this;
8627 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008628 SamplerCreateInfo& setPNext( const void* pNext_ )
8629 {
8630 pNext = pNext_;
8631 return *this;
8632 }
8633
8634 SamplerCreateInfo& setFlags( SamplerCreateFlags flags_ )
8635 {
8636 flags = flags_;
8637 return *this;
8638 }
8639
8640 SamplerCreateInfo& setMagFilter( Filter magFilter_ )
8641 {
8642 magFilter = magFilter_;
8643 return *this;
8644 }
8645
8646 SamplerCreateInfo& setMinFilter( Filter minFilter_ )
8647 {
8648 minFilter = minFilter_;
8649 return *this;
8650 }
8651
8652 SamplerCreateInfo& setMipmapMode( SamplerMipmapMode mipmapMode_ )
8653 {
8654 mipmapMode = mipmapMode_;
8655 return *this;
8656 }
8657
8658 SamplerCreateInfo& setAddressModeU( SamplerAddressMode addressModeU_ )
8659 {
8660 addressModeU = addressModeU_;
8661 return *this;
8662 }
8663
8664 SamplerCreateInfo& setAddressModeV( SamplerAddressMode addressModeV_ )
8665 {
8666 addressModeV = addressModeV_;
8667 return *this;
8668 }
8669
8670 SamplerCreateInfo& setAddressModeW( SamplerAddressMode addressModeW_ )
8671 {
8672 addressModeW = addressModeW_;
8673 return *this;
8674 }
8675
8676 SamplerCreateInfo& setMipLodBias( float mipLodBias_ )
8677 {
8678 mipLodBias = mipLodBias_;
8679 return *this;
8680 }
8681
8682 SamplerCreateInfo& setAnisotropyEnable( Bool32 anisotropyEnable_ )
8683 {
8684 anisotropyEnable = anisotropyEnable_;
8685 return *this;
8686 }
8687
8688 SamplerCreateInfo& setMaxAnisotropy( float maxAnisotropy_ )
8689 {
8690 maxAnisotropy = maxAnisotropy_;
8691 return *this;
8692 }
8693
8694 SamplerCreateInfo& setCompareEnable( Bool32 compareEnable_ )
8695 {
8696 compareEnable = compareEnable_;
8697 return *this;
8698 }
8699
8700 SamplerCreateInfo& setCompareOp( CompareOp compareOp_ )
8701 {
8702 compareOp = compareOp_;
8703 return *this;
8704 }
8705
8706 SamplerCreateInfo& setMinLod( float minLod_ )
8707 {
8708 minLod = minLod_;
8709 return *this;
8710 }
8711
8712 SamplerCreateInfo& setMaxLod( float maxLod_ )
8713 {
8714 maxLod = maxLod_;
8715 return *this;
8716 }
8717
8718 SamplerCreateInfo& setBorderColor( BorderColor borderColor_ )
8719 {
8720 borderColor = borderColor_;
8721 return *this;
8722 }
8723
8724 SamplerCreateInfo& setUnnormalizedCoordinates( Bool32 unnormalizedCoordinates_ )
8725 {
8726 unnormalizedCoordinates = unnormalizedCoordinates_;
8727 return *this;
8728 }
8729
8730 operator const VkSamplerCreateInfo&() const
8731 {
8732 return *reinterpret_cast<const VkSamplerCreateInfo*>(this);
8733 }
8734
8735 bool operator==( SamplerCreateInfo const& rhs ) const
8736 {
8737 return ( sType == rhs.sType )
8738 && ( pNext == rhs.pNext )
8739 && ( flags == rhs.flags )
8740 && ( magFilter == rhs.magFilter )
8741 && ( minFilter == rhs.minFilter )
8742 && ( mipmapMode == rhs.mipmapMode )
8743 && ( addressModeU == rhs.addressModeU )
8744 && ( addressModeV == rhs.addressModeV )
8745 && ( addressModeW == rhs.addressModeW )
8746 && ( mipLodBias == rhs.mipLodBias )
8747 && ( anisotropyEnable == rhs.anisotropyEnable )
8748 && ( maxAnisotropy == rhs.maxAnisotropy )
8749 && ( compareEnable == rhs.compareEnable )
8750 && ( compareOp == rhs.compareOp )
8751 && ( minLod == rhs.minLod )
8752 && ( maxLod == rhs.maxLod )
8753 && ( borderColor == rhs.borderColor )
8754 && ( unnormalizedCoordinates == rhs.unnormalizedCoordinates );
8755 }
8756
8757 bool operator!=( SamplerCreateInfo const& rhs ) const
8758 {
8759 return !operator==( rhs );
8760 }
8761
8762 private:
8763 StructureType sType;
8764
8765 public:
8766 const void* pNext;
8767 SamplerCreateFlags flags;
8768 Filter magFilter;
8769 Filter minFilter;
8770 SamplerMipmapMode mipmapMode;
8771 SamplerAddressMode addressModeU;
8772 SamplerAddressMode addressModeV;
8773 SamplerAddressMode addressModeW;
8774 float mipLodBias;
8775 Bool32 anisotropyEnable;
8776 float maxAnisotropy;
8777 Bool32 compareEnable;
8778 CompareOp compareOp;
8779 float minLod;
8780 float maxLod;
8781 BorderColor borderColor;
8782 Bool32 unnormalizedCoordinates;
8783 };
8784 static_assert( sizeof( SamplerCreateInfo ) == sizeof( VkSamplerCreateInfo ), "struct and wrapper have different size!" );
8785
8786 struct CommandBufferAllocateInfo
8787 {
8788 CommandBufferAllocateInfo( CommandPool commandPool_ = CommandPool(), CommandBufferLevel level_ = CommandBufferLevel::ePrimary, uint32_t commandBufferCount_ = 0 )
8789 : sType( StructureType::eCommandBufferAllocateInfo )
8790 , pNext( nullptr )
8791 , commandPool( commandPool_ )
8792 , level( level_ )
8793 , commandBufferCount( commandBufferCount_ )
8794 {
8795 }
8796
8797 CommandBufferAllocateInfo( VkCommandBufferAllocateInfo const & rhs )
8798 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008799 memcpy( this, &rhs, sizeof( CommandBufferAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008800 }
8801
8802 CommandBufferAllocateInfo& operator=( VkCommandBufferAllocateInfo const & rhs )
8803 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008804 memcpy( this, &rhs, sizeof( CommandBufferAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008805 return *this;
8806 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008807 CommandBufferAllocateInfo& setPNext( const void* pNext_ )
8808 {
8809 pNext = pNext_;
8810 return *this;
8811 }
8812
8813 CommandBufferAllocateInfo& setCommandPool( CommandPool commandPool_ )
8814 {
8815 commandPool = commandPool_;
8816 return *this;
8817 }
8818
8819 CommandBufferAllocateInfo& setLevel( CommandBufferLevel level_ )
8820 {
8821 level = level_;
8822 return *this;
8823 }
8824
8825 CommandBufferAllocateInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
8826 {
8827 commandBufferCount = commandBufferCount_;
8828 return *this;
8829 }
8830
8831 operator const VkCommandBufferAllocateInfo&() const
8832 {
8833 return *reinterpret_cast<const VkCommandBufferAllocateInfo*>(this);
8834 }
8835
8836 bool operator==( CommandBufferAllocateInfo const& rhs ) const
8837 {
8838 return ( sType == rhs.sType )
8839 && ( pNext == rhs.pNext )
8840 && ( commandPool == rhs.commandPool )
8841 && ( level == rhs.level )
8842 && ( commandBufferCount == rhs.commandBufferCount );
8843 }
8844
8845 bool operator!=( CommandBufferAllocateInfo const& rhs ) const
8846 {
8847 return !operator==( rhs );
8848 }
8849
8850 private:
8851 StructureType sType;
8852
8853 public:
8854 const void* pNext;
8855 CommandPool commandPool;
8856 CommandBufferLevel level;
8857 uint32_t commandBufferCount;
8858 };
8859 static_assert( sizeof( CommandBufferAllocateInfo ) == sizeof( VkCommandBufferAllocateInfo ), "struct and wrapper have different size!" );
8860
8861 struct RenderPassBeginInfo
8862 {
8863 RenderPassBeginInfo( RenderPass renderPass_ = RenderPass(), Framebuffer framebuffer_ = Framebuffer(), Rect2D renderArea_ = Rect2D(), uint32_t clearValueCount_ = 0, const ClearValue* pClearValues_ = nullptr )
8864 : sType( StructureType::eRenderPassBeginInfo )
8865 , pNext( nullptr )
8866 , renderPass( renderPass_ )
8867 , framebuffer( framebuffer_ )
8868 , renderArea( renderArea_ )
8869 , clearValueCount( clearValueCount_ )
8870 , pClearValues( pClearValues_ )
8871 {
8872 }
8873
8874 RenderPassBeginInfo( VkRenderPassBeginInfo const & rhs )
8875 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008876 memcpy( this, &rhs, sizeof( RenderPassBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008877 }
8878
8879 RenderPassBeginInfo& operator=( VkRenderPassBeginInfo const & rhs )
8880 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008881 memcpy( this, &rhs, sizeof( RenderPassBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008882 return *this;
8883 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008884 RenderPassBeginInfo& setPNext( const void* pNext_ )
8885 {
8886 pNext = pNext_;
8887 return *this;
8888 }
8889
8890 RenderPassBeginInfo& setRenderPass( RenderPass renderPass_ )
8891 {
8892 renderPass = renderPass_;
8893 return *this;
8894 }
8895
8896 RenderPassBeginInfo& setFramebuffer( Framebuffer framebuffer_ )
8897 {
8898 framebuffer = framebuffer_;
8899 return *this;
8900 }
8901
8902 RenderPassBeginInfo& setRenderArea( Rect2D renderArea_ )
8903 {
8904 renderArea = renderArea_;
8905 return *this;
8906 }
8907
8908 RenderPassBeginInfo& setClearValueCount( uint32_t clearValueCount_ )
8909 {
8910 clearValueCount = clearValueCount_;
8911 return *this;
8912 }
8913
8914 RenderPassBeginInfo& setPClearValues( const ClearValue* pClearValues_ )
8915 {
8916 pClearValues = pClearValues_;
8917 return *this;
8918 }
8919
8920 operator const VkRenderPassBeginInfo&() const
8921 {
8922 return *reinterpret_cast<const VkRenderPassBeginInfo*>(this);
8923 }
8924
8925 bool operator==( RenderPassBeginInfo const& rhs ) const
8926 {
8927 return ( sType == rhs.sType )
8928 && ( pNext == rhs.pNext )
8929 && ( renderPass == rhs.renderPass )
8930 && ( framebuffer == rhs.framebuffer )
8931 && ( renderArea == rhs.renderArea )
8932 && ( clearValueCount == rhs.clearValueCount )
8933 && ( pClearValues == rhs.pClearValues );
8934 }
8935
8936 bool operator!=( RenderPassBeginInfo const& rhs ) const
8937 {
8938 return !operator==( rhs );
8939 }
8940
8941 private:
8942 StructureType sType;
8943
8944 public:
8945 const void* pNext;
8946 RenderPass renderPass;
8947 Framebuffer framebuffer;
8948 Rect2D renderArea;
8949 uint32_t clearValueCount;
8950 const ClearValue* pClearValues;
8951 };
8952 static_assert( sizeof( RenderPassBeginInfo ) == sizeof( VkRenderPassBeginInfo ), "struct and wrapper have different size!" );
8953
8954 struct EventCreateInfo
8955 {
8956 EventCreateInfo( EventCreateFlags flags_ = EventCreateFlags() )
8957 : sType( StructureType::eEventCreateInfo )
8958 , pNext( nullptr )
8959 , flags( flags_ )
8960 {
8961 }
8962
8963 EventCreateInfo( VkEventCreateInfo const & rhs )
8964 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008965 memcpy( this, &rhs, sizeof( EventCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008966 }
8967
8968 EventCreateInfo& operator=( VkEventCreateInfo const & rhs )
8969 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008970 memcpy( this, &rhs, sizeof( EventCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008971 return *this;
8972 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008973 EventCreateInfo& setPNext( const void* pNext_ )
8974 {
8975 pNext = pNext_;
8976 return *this;
8977 }
8978
8979 EventCreateInfo& setFlags( EventCreateFlags flags_ )
8980 {
8981 flags = flags_;
8982 return *this;
8983 }
8984
8985 operator const VkEventCreateInfo&() const
8986 {
8987 return *reinterpret_cast<const VkEventCreateInfo*>(this);
8988 }
8989
8990 bool operator==( EventCreateInfo const& rhs ) const
8991 {
8992 return ( sType == rhs.sType )
8993 && ( pNext == rhs.pNext )
8994 && ( flags == rhs.flags );
8995 }
8996
8997 bool operator!=( EventCreateInfo const& rhs ) const
8998 {
8999 return !operator==( rhs );
9000 }
9001
9002 private:
9003 StructureType sType;
9004
9005 public:
9006 const void* pNext;
9007 EventCreateFlags flags;
9008 };
9009 static_assert( sizeof( EventCreateInfo ) == sizeof( VkEventCreateInfo ), "struct and wrapper have different size!" );
9010
9011 struct SemaphoreCreateInfo
9012 {
9013 SemaphoreCreateInfo( SemaphoreCreateFlags flags_ = SemaphoreCreateFlags() )
9014 : sType( StructureType::eSemaphoreCreateInfo )
9015 , pNext( nullptr )
9016 , flags( flags_ )
9017 {
9018 }
9019
9020 SemaphoreCreateInfo( VkSemaphoreCreateInfo const & rhs )
9021 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009022 memcpy( this, &rhs, sizeof( SemaphoreCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009023 }
9024
9025 SemaphoreCreateInfo& operator=( VkSemaphoreCreateInfo const & rhs )
9026 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009027 memcpy( this, &rhs, sizeof( SemaphoreCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009028 return *this;
9029 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009030 SemaphoreCreateInfo& setPNext( const void* pNext_ )
9031 {
9032 pNext = pNext_;
9033 return *this;
9034 }
9035
9036 SemaphoreCreateInfo& setFlags( SemaphoreCreateFlags flags_ )
9037 {
9038 flags = flags_;
9039 return *this;
9040 }
9041
9042 operator const VkSemaphoreCreateInfo&() const
9043 {
9044 return *reinterpret_cast<const VkSemaphoreCreateInfo*>(this);
9045 }
9046
9047 bool operator==( SemaphoreCreateInfo const& rhs ) const
9048 {
9049 return ( sType == rhs.sType )
9050 && ( pNext == rhs.pNext )
9051 && ( flags == rhs.flags );
9052 }
9053
9054 bool operator!=( SemaphoreCreateInfo const& rhs ) const
9055 {
9056 return !operator==( rhs );
9057 }
9058
9059 private:
9060 StructureType sType;
9061
9062 public:
9063 const void* pNext;
9064 SemaphoreCreateFlags flags;
9065 };
9066 static_assert( sizeof( SemaphoreCreateInfo ) == sizeof( VkSemaphoreCreateInfo ), "struct and wrapper have different size!" );
9067
9068 struct FramebufferCreateInfo
9069 {
9070 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 )
9071 : sType( StructureType::eFramebufferCreateInfo )
9072 , pNext( nullptr )
9073 , flags( flags_ )
9074 , renderPass( renderPass_ )
9075 , attachmentCount( attachmentCount_ )
9076 , pAttachments( pAttachments_ )
9077 , width( width_ )
9078 , height( height_ )
9079 , layers( layers_ )
9080 {
9081 }
9082
9083 FramebufferCreateInfo( VkFramebufferCreateInfo const & rhs )
9084 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009085 memcpy( this, &rhs, sizeof( FramebufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009086 }
9087
9088 FramebufferCreateInfo& operator=( VkFramebufferCreateInfo const & rhs )
9089 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009090 memcpy( this, &rhs, sizeof( FramebufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009091 return *this;
9092 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009093 FramebufferCreateInfo& setPNext( const void* pNext_ )
9094 {
9095 pNext = pNext_;
9096 return *this;
9097 }
9098
9099 FramebufferCreateInfo& setFlags( FramebufferCreateFlags flags_ )
9100 {
9101 flags = flags_;
9102 return *this;
9103 }
9104
9105 FramebufferCreateInfo& setRenderPass( RenderPass renderPass_ )
9106 {
9107 renderPass = renderPass_;
9108 return *this;
9109 }
9110
9111 FramebufferCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
9112 {
9113 attachmentCount = attachmentCount_;
9114 return *this;
9115 }
9116
9117 FramebufferCreateInfo& setPAttachments( const ImageView* pAttachments_ )
9118 {
9119 pAttachments = pAttachments_;
9120 return *this;
9121 }
9122
9123 FramebufferCreateInfo& setWidth( uint32_t width_ )
9124 {
9125 width = width_;
9126 return *this;
9127 }
9128
9129 FramebufferCreateInfo& setHeight( uint32_t height_ )
9130 {
9131 height = height_;
9132 return *this;
9133 }
9134
9135 FramebufferCreateInfo& setLayers( uint32_t layers_ )
9136 {
9137 layers = layers_;
9138 return *this;
9139 }
9140
9141 operator const VkFramebufferCreateInfo&() const
9142 {
9143 return *reinterpret_cast<const VkFramebufferCreateInfo*>(this);
9144 }
9145
9146 bool operator==( FramebufferCreateInfo const& rhs ) const
9147 {
9148 return ( sType == rhs.sType )
9149 && ( pNext == rhs.pNext )
9150 && ( flags == rhs.flags )
9151 && ( renderPass == rhs.renderPass )
9152 && ( attachmentCount == rhs.attachmentCount )
9153 && ( pAttachments == rhs.pAttachments )
9154 && ( width == rhs.width )
9155 && ( height == rhs.height )
9156 && ( layers == rhs.layers );
9157 }
9158
9159 bool operator!=( FramebufferCreateInfo const& rhs ) const
9160 {
9161 return !operator==( rhs );
9162 }
9163
9164 private:
9165 StructureType sType;
9166
9167 public:
9168 const void* pNext;
9169 FramebufferCreateFlags flags;
9170 RenderPass renderPass;
9171 uint32_t attachmentCount;
9172 const ImageView* pAttachments;
9173 uint32_t width;
9174 uint32_t height;
9175 uint32_t layers;
9176 };
9177 static_assert( sizeof( FramebufferCreateInfo ) == sizeof( VkFramebufferCreateInfo ), "struct and wrapper have different size!" );
9178
9179 struct DisplayModeCreateInfoKHR
9180 {
9181 DisplayModeCreateInfoKHR( DisplayModeCreateFlagsKHR flags_ = DisplayModeCreateFlagsKHR(), DisplayModeParametersKHR parameters_ = DisplayModeParametersKHR() )
9182 : sType( StructureType::eDisplayModeCreateInfoKHR )
9183 , pNext( nullptr )
9184 , flags( flags_ )
9185 , parameters( parameters_ )
9186 {
9187 }
9188
9189 DisplayModeCreateInfoKHR( VkDisplayModeCreateInfoKHR const & rhs )
9190 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009191 memcpy( this, &rhs, sizeof( DisplayModeCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009192 }
9193
9194 DisplayModeCreateInfoKHR& operator=( VkDisplayModeCreateInfoKHR const & rhs )
9195 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009196 memcpy( this, &rhs, sizeof( DisplayModeCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009197 return *this;
9198 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009199 DisplayModeCreateInfoKHR& setPNext( const void* pNext_ )
9200 {
9201 pNext = pNext_;
9202 return *this;
9203 }
9204
9205 DisplayModeCreateInfoKHR& setFlags( DisplayModeCreateFlagsKHR flags_ )
9206 {
9207 flags = flags_;
9208 return *this;
9209 }
9210
9211 DisplayModeCreateInfoKHR& setParameters( DisplayModeParametersKHR parameters_ )
9212 {
9213 parameters = parameters_;
9214 return *this;
9215 }
9216
9217 operator const VkDisplayModeCreateInfoKHR&() const
9218 {
9219 return *reinterpret_cast<const VkDisplayModeCreateInfoKHR*>(this);
9220 }
9221
9222 bool operator==( DisplayModeCreateInfoKHR const& rhs ) const
9223 {
9224 return ( sType == rhs.sType )
9225 && ( pNext == rhs.pNext )
9226 && ( flags == rhs.flags )
9227 && ( parameters == rhs.parameters );
9228 }
9229
9230 bool operator!=( DisplayModeCreateInfoKHR const& rhs ) const
9231 {
9232 return !operator==( rhs );
9233 }
9234
9235 private:
9236 StructureType sType;
9237
9238 public:
9239 const void* pNext;
9240 DisplayModeCreateFlagsKHR flags;
9241 DisplayModeParametersKHR parameters;
9242 };
9243 static_assert( sizeof( DisplayModeCreateInfoKHR ) == sizeof( VkDisplayModeCreateInfoKHR ), "struct and wrapper have different size!" );
9244
9245 struct DisplayPresentInfoKHR
9246 {
9247 DisplayPresentInfoKHR( Rect2D srcRect_ = Rect2D(), Rect2D dstRect_ = Rect2D(), Bool32 persistent_ = 0 )
9248 : sType( StructureType::eDisplayPresentInfoKHR )
9249 , pNext( nullptr )
9250 , srcRect( srcRect_ )
9251 , dstRect( dstRect_ )
9252 , persistent( persistent_ )
9253 {
9254 }
9255
9256 DisplayPresentInfoKHR( VkDisplayPresentInfoKHR const & rhs )
9257 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009258 memcpy( this, &rhs, sizeof( DisplayPresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009259 }
9260
9261 DisplayPresentInfoKHR& operator=( VkDisplayPresentInfoKHR const & rhs )
9262 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009263 memcpy( this, &rhs, sizeof( DisplayPresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009264 return *this;
9265 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009266 DisplayPresentInfoKHR& setPNext( const void* pNext_ )
9267 {
9268 pNext = pNext_;
9269 return *this;
9270 }
9271
9272 DisplayPresentInfoKHR& setSrcRect( Rect2D srcRect_ )
9273 {
9274 srcRect = srcRect_;
9275 return *this;
9276 }
9277
9278 DisplayPresentInfoKHR& setDstRect( Rect2D dstRect_ )
9279 {
9280 dstRect = dstRect_;
9281 return *this;
9282 }
9283
9284 DisplayPresentInfoKHR& setPersistent( Bool32 persistent_ )
9285 {
9286 persistent = persistent_;
9287 return *this;
9288 }
9289
9290 operator const VkDisplayPresentInfoKHR&() const
9291 {
9292 return *reinterpret_cast<const VkDisplayPresentInfoKHR*>(this);
9293 }
9294
9295 bool operator==( DisplayPresentInfoKHR const& rhs ) const
9296 {
9297 return ( sType == rhs.sType )
9298 && ( pNext == rhs.pNext )
9299 && ( srcRect == rhs.srcRect )
9300 && ( dstRect == rhs.dstRect )
9301 && ( persistent == rhs.persistent );
9302 }
9303
9304 bool operator!=( DisplayPresentInfoKHR const& rhs ) const
9305 {
9306 return !operator==( rhs );
9307 }
9308
9309 private:
9310 StructureType sType;
9311
9312 public:
9313 const void* pNext;
9314 Rect2D srcRect;
9315 Rect2D dstRect;
9316 Bool32 persistent;
9317 };
9318 static_assert( sizeof( DisplayPresentInfoKHR ) == sizeof( VkDisplayPresentInfoKHR ), "struct and wrapper have different size!" );
9319
9320#ifdef VK_USE_PLATFORM_ANDROID_KHR
9321 struct AndroidSurfaceCreateInfoKHR
9322 {
9323 AndroidSurfaceCreateInfoKHR( AndroidSurfaceCreateFlagsKHR flags_ = AndroidSurfaceCreateFlagsKHR(), ANativeWindow* window_ = nullptr )
9324 : sType( StructureType::eAndroidSurfaceCreateInfoKHR )
9325 , pNext( nullptr )
9326 , flags( flags_ )
9327 , window( window_ )
9328 {
9329 }
9330
9331 AndroidSurfaceCreateInfoKHR( VkAndroidSurfaceCreateInfoKHR const & rhs )
9332 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009333 memcpy( this, &rhs, sizeof( AndroidSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009334 }
9335
9336 AndroidSurfaceCreateInfoKHR& operator=( VkAndroidSurfaceCreateInfoKHR const & rhs )
9337 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009338 memcpy( this, &rhs, sizeof( AndroidSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009339 return *this;
9340 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009341 AndroidSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9342 {
9343 pNext = pNext_;
9344 return *this;
9345 }
9346
9347 AndroidSurfaceCreateInfoKHR& setFlags( AndroidSurfaceCreateFlagsKHR flags_ )
9348 {
9349 flags = flags_;
9350 return *this;
9351 }
9352
9353 AndroidSurfaceCreateInfoKHR& setWindow( ANativeWindow* window_ )
9354 {
9355 window = window_;
9356 return *this;
9357 }
9358
9359 operator const VkAndroidSurfaceCreateInfoKHR&() const
9360 {
9361 return *reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>(this);
9362 }
9363
9364 bool operator==( AndroidSurfaceCreateInfoKHR const& rhs ) const
9365 {
9366 return ( sType == rhs.sType )
9367 && ( pNext == rhs.pNext )
9368 && ( flags == rhs.flags )
9369 && ( window == rhs.window );
9370 }
9371
9372 bool operator!=( AndroidSurfaceCreateInfoKHR const& rhs ) const
9373 {
9374 return !operator==( rhs );
9375 }
9376
9377 private:
9378 StructureType sType;
9379
9380 public:
9381 const void* pNext;
9382 AndroidSurfaceCreateFlagsKHR flags;
9383 ANativeWindow* window;
9384 };
9385 static_assert( sizeof( AndroidSurfaceCreateInfoKHR ) == sizeof( VkAndroidSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9386#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
9387
9388#ifdef VK_USE_PLATFORM_MIR_KHR
9389 struct MirSurfaceCreateInfoKHR
9390 {
9391 MirSurfaceCreateInfoKHR( MirSurfaceCreateFlagsKHR flags_ = MirSurfaceCreateFlagsKHR(), MirConnection* connection_ = nullptr, MirSurface* mirSurface_ = nullptr )
9392 : sType( StructureType::eMirSurfaceCreateInfoKHR )
9393 , pNext( nullptr )
9394 , flags( flags_ )
9395 , connection( connection_ )
9396 , mirSurface( mirSurface_ )
9397 {
9398 }
9399
9400 MirSurfaceCreateInfoKHR( VkMirSurfaceCreateInfoKHR const & rhs )
9401 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009402 memcpy( this, &rhs, sizeof( MirSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009403 }
9404
9405 MirSurfaceCreateInfoKHR& operator=( VkMirSurfaceCreateInfoKHR const & rhs )
9406 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009407 memcpy( this, &rhs, sizeof( MirSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009408 return *this;
9409 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009410 MirSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9411 {
9412 pNext = pNext_;
9413 return *this;
9414 }
9415
9416 MirSurfaceCreateInfoKHR& setFlags( MirSurfaceCreateFlagsKHR flags_ )
9417 {
9418 flags = flags_;
9419 return *this;
9420 }
9421
9422 MirSurfaceCreateInfoKHR& setConnection( MirConnection* connection_ )
9423 {
9424 connection = connection_;
9425 return *this;
9426 }
9427
9428 MirSurfaceCreateInfoKHR& setMirSurface( MirSurface* mirSurface_ )
9429 {
9430 mirSurface = mirSurface_;
9431 return *this;
9432 }
9433
9434 operator const VkMirSurfaceCreateInfoKHR&() const
9435 {
9436 return *reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>(this);
9437 }
9438
9439 bool operator==( MirSurfaceCreateInfoKHR const& rhs ) const
9440 {
9441 return ( sType == rhs.sType )
9442 && ( pNext == rhs.pNext )
9443 && ( flags == rhs.flags )
9444 && ( connection == rhs.connection )
9445 && ( mirSurface == rhs.mirSurface );
9446 }
9447
9448 bool operator!=( MirSurfaceCreateInfoKHR const& rhs ) const
9449 {
9450 return !operator==( rhs );
9451 }
9452
9453 private:
9454 StructureType sType;
9455
9456 public:
9457 const void* pNext;
9458 MirSurfaceCreateFlagsKHR flags;
9459 MirConnection* connection;
9460 MirSurface* mirSurface;
9461 };
9462 static_assert( sizeof( MirSurfaceCreateInfoKHR ) == sizeof( VkMirSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9463#endif /*VK_USE_PLATFORM_MIR_KHR*/
9464
Mark Young39389872017-01-19 21:10:49 -07009465#ifdef VK_USE_PLATFORM_VI_NN
9466 struct ViSurfaceCreateInfoNN
9467 {
9468 ViSurfaceCreateInfoNN( ViSurfaceCreateFlagsNN flags_ = ViSurfaceCreateFlagsNN(), void* window_ = nullptr )
9469 : sType( StructureType::eViSurfaceCreateInfoNN )
9470 , pNext( nullptr )
9471 , flags( flags_ )
9472 , window( window_ )
9473 {
9474 }
9475
9476 ViSurfaceCreateInfoNN( VkViSurfaceCreateInfoNN const & rhs )
9477 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009478 memcpy( this, &rhs, sizeof( ViSurfaceCreateInfoNN ) );
Mark Young39389872017-01-19 21:10:49 -07009479 }
9480
9481 ViSurfaceCreateInfoNN& operator=( VkViSurfaceCreateInfoNN const & rhs )
9482 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009483 memcpy( this, &rhs, sizeof( ViSurfaceCreateInfoNN ) );
Mark Young39389872017-01-19 21:10:49 -07009484 return *this;
9485 }
Mark Young39389872017-01-19 21:10:49 -07009486 ViSurfaceCreateInfoNN& setPNext( const void* pNext_ )
9487 {
9488 pNext = pNext_;
9489 return *this;
9490 }
9491
9492 ViSurfaceCreateInfoNN& setFlags( ViSurfaceCreateFlagsNN flags_ )
9493 {
9494 flags = flags_;
9495 return *this;
9496 }
9497
9498 ViSurfaceCreateInfoNN& setWindow( void* window_ )
9499 {
9500 window = window_;
9501 return *this;
9502 }
9503
9504 operator const VkViSurfaceCreateInfoNN&() const
9505 {
9506 return *reinterpret_cast<const VkViSurfaceCreateInfoNN*>(this);
9507 }
9508
9509 bool operator==( ViSurfaceCreateInfoNN const& rhs ) const
9510 {
9511 return ( sType == rhs.sType )
9512 && ( pNext == rhs.pNext )
9513 && ( flags == rhs.flags )
9514 && ( window == rhs.window );
9515 }
9516
9517 bool operator!=( ViSurfaceCreateInfoNN const& rhs ) const
9518 {
9519 return !operator==( rhs );
9520 }
9521
9522 private:
9523 StructureType sType;
9524
9525 public:
9526 const void* pNext;
9527 ViSurfaceCreateFlagsNN flags;
9528 void* window;
9529 };
9530 static_assert( sizeof( ViSurfaceCreateInfoNN ) == sizeof( VkViSurfaceCreateInfoNN ), "struct and wrapper have different size!" );
9531#endif /*VK_USE_PLATFORM_VI_NN*/
9532
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009533#ifdef VK_USE_PLATFORM_WAYLAND_KHR
9534 struct WaylandSurfaceCreateInfoKHR
9535 {
9536 WaylandSurfaceCreateInfoKHR( WaylandSurfaceCreateFlagsKHR flags_ = WaylandSurfaceCreateFlagsKHR(), struct wl_display* display_ = nullptr, struct wl_surface* surface_ = nullptr )
9537 : sType( StructureType::eWaylandSurfaceCreateInfoKHR )
9538 , pNext( nullptr )
9539 , flags( flags_ )
9540 , display( display_ )
9541 , surface( surface_ )
9542 {
9543 }
9544
9545 WaylandSurfaceCreateInfoKHR( VkWaylandSurfaceCreateInfoKHR const & rhs )
9546 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009547 memcpy( this, &rhs, sizeof( WaylandSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009548 }
9549
9550 WaylandSurfaceCreateInfoKHR& operator=( VkWaylandSurfaceCreateInfoKHR const & rhs )
9551 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009552 memcpy( this, &rhs, sizeof( WaylandSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009553 return *this;
9554 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009555 WaylandSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9556 {
9557 pNext = pNext_;
9558 return *this;
9559 }
9560
9561 WaylandSurfaceCreateInfoKHR& setFlags( WaylandSurfaceCreateFlagsKHR flags_ )
9562 {
9563 flags = flags_;
9564 return *this;
9565 }
9566
9567 WaylandSurfaceCreateInfoKHR& setDisplay( struct wl_display* display_ )
9568 {
9569 display = display_;
9570 return *this;
9571 }
9572
9573 WaylandSurfaceCreateInfoKHR& setSurface( struct wl_surface* surface_ )
9574 {
9575 surface = surface_;
9576 return *this;
9577 }
9578
9579 operator const VkWaylandSurfaceCreateInfoKHR&() const
9580 {
9581 return *reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>(this);
9582 }
9583
9584 bool operator==( WaylandSurfaceCreateInfoKHR const& rhs ) const
9585 {
9586 return ( sType == rhs.sType )
9587 && ( pNext == rhs.pNext )
9588 && ( flags == rhs.flags )
9589 && ( display == rhs.display )
9590 && ( surface == rhs.surface );
9591 }
9592
9593 bool operator!=( WaylandSurfaceCreateInfoKHR const& rhs ) const
9594 {
9595 return !operator==( rhs );
9596 }
9597
9598 private:
9599 StructureType sType;
9600
9601 public:
9602 const void* pNext;
9603 WaylandSurfaceCreateFlagsKHR flags;
9604 struct wl_display* display;
9605 struct wl_surface* surface;
9606 };
9607 static_assert( sizeof( WaylandSurfaceCreateInfoKHR ) == sizeof( VkWaylandSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9608#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
9609
9610#ifdef VK_USE_PLATFORM_WIN32_KHR
9611 struct Win32SurfaceCreateInfoKHR
9612 {
9613 Win32SurfaceCreateInfoKHR( Win32SurfaceCreateFlagsKHR flags_ = Win32SurfaceCreateFlagsKHR(), HINSTANCE hinstance_ = 0, HWND hwnd_ = 0 )
9614 : sType( StructureType::eWin32SurfaceCreateInfoKHR )
9615 , pNext( nullptr )
9616 , flags( flags_ )
9617 , hinstance( hinstance_ )
9618 , hwnd( hwnd_ )
9619 {
9620 }
9621
9622 Win32SurfaceCreateInfoKHR( VkWin32SurfaceCreateInfoKHR const & rhs )
9623 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009624 memcpy( this, &rhs, sizeof( Win32SurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009625 }
9626
9627 Win32SurfaceCreateInfoKHR& operator=( VkWin32SurfaceCreateInfoKHR const & rhs )
9628 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009629 memcpy( this, &rhs, sizeof( Win32SurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009630 return *this;
9631 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009632 Win32SurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9633 {
9634 pNext = pNext_;
9635 return *this;
9636 }
9637
9638 Win32SurfaceCreateInfoKHR& setFlags( Win32SurfaceCreateFlagsKHR flags_ )
9639 {
9640 flags = flags_;
9641 return *this;
9642 }
9643
9644 Win32SurfaceCreateInfoKHR& setHinstance( HINSTANCE hinstance_ )
9645 {
9646 hinstance = hinstance_;
9647 return *this;
9648 }
9649
9650 Win32SurfaceCreateInfoKHR& setHwnd( HWND hwnd_ )
9651 {
9652 hwnd = hwnd_;
9653 return *this;
9654 }
9655
9656 operator const VkWin32SurfaceCreateInfoKHR&() const
9657 {
9658 return *reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>(this);
9659 }
9660
9661 bool operator==( Win32SurfaceCreateInfoKHR const& rhs ) const
9662 {
9663 return ( sType == rhs.sType )
9664 && ( pNext == rhs.pNext )
9665 && ( flags == rhs.flags )
9666 && ( hinstance == rhs.hinstance )
9667 && ( hwnd == rhs.hwnd );
9668 }
9669
9670 bool operator!=( Win32SurfaceCreateInfoKHR const& rhs ) const
9671 {
9672 return !operator==( rhs );
9673 }
9674
9675 private:
9676 StructureType sType;
9677
9678 public:
9679 const void* pNext;
9680 Win32SurfaceCreateFlagsKHR flags;
9681 HINSTANCE hinstance;
9682 HWND hwnd;
9683 };
9684 static_assert( sizeof( Win32SurfaceCreateInfoKHR ) == sizeof( VkWin32SurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9685#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9686
9687#ifdef VK_USE_PLATFORM_XLIB_KHR
9688 struct XlibSurfaceCreateInfoKHR
9689 {
9690 XlibSurfaceCreateInfoKHR( XlibSurfaceCreateFlagsKHR flags_ = XlibSurfaceCreateFlagsKHR(), Display* dpy_ = nullptr, Window window_ = 0 )
9691 : sType( StructureType::eXlibSurfaceCreateInfoKHR )
9692 , pNext( nullptr )
9693 , flags( flags_ )
9694 , dpy( dpy_ )
9695 , window( window_ )
9696 {
9697 }
9698
9699 XlibSurfaceCreateInfoKHR( VkXlibSurfaceCreateInfoKHR const & rhs )
9700 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009701 memcpy( this, &rhs, sizeof( XlibSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009702 }
9703
9704 XlibSurfaceCreateInfoKHR& operator=( VkXlibSurfaceCreateInfoKHR const & rhs )
9705 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009706 memcpy( this, &rhs, sizeof( XlibSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009707 return *this;
9708 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009709 XlibSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9710 {
9711 pNext = pNext_;
9712 return *this;
9713 }
9714
9715 XlibSurfaceCreateInfoKHR& setFlags( XlibSurfaceCreateFlagsKHR flags_ )
9716 {
9717 flags = flags_;
9718 return *this;
9719 }
9720
9721 XlibSurfaceCreateInfoKHR& setDpy( Display* dpy_ )
9722 {
9723 dpy = dpy_;
9724 return *this;
9725 }
9726
9727 XlibSurfaceCreateInfoKHR& setWindow( Window window_ )
9728 {
9729 window = window_;
9730 return *this;
9731 }
9732
9733 operator const VkXlibSurfaceCreateInfoKHR&() const
9734 {
9735 return *reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>(this);
9736 }
9737
9738 bool operator==( XlibSurfaceCreateInfoKHR const& rhs ) const
9739 {
9740 return ( sType == rhs.sType )
9741 && ( pNext == rhs.pNext )
9742 && ( flags == rhs.flags )
9743 && ( dpy == rhs.dpy )
9744 && ( window == rhs.window );
9745 }
9746
9747 bool operator!=( XlibSurfaceCreateInfoKHR const& rhs ) const
9748 {
9749 return !operator==( rhs );
9750 }
9751
9752 private:
9753 StructureType sType;
9754
9755 public:
9756 const void* pNext;
9757 XlibSurfaceCreateFlagsKHR flags;
9758 Display* dpy;
9759 Window window;
9760 };
9761 static_assert( sizeof( XlibSurfaceCreateInfoKHR ) == sizeof( VkXlibSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9762#endif /*VK_USE_PLATFORM_XLIB_KHR*/
9763
9764#ifdef VK_USE_PLATFORM_XCB_KHR
9765 struct XcbSurfaceCreateInfoKHR
9766 {
9767 XcbSurfaceCreateInfoKHR( XcbSurfaceCreateFlagsKHR flags_ = XcbSurfaceCreateFlagsKHR(), xcb_connection_t* connection_ = nullptr, xcb_window_t window_ = 0 )
9768 : sType( StructureType::eXcbSurfaceCreateInfoKHR )
9769 , pNext( nullptr )
9770 , flags( flags_ )
9771 , connection( connection_ )
9772 , window( window_ )
9773 {
9774 }
9775
9776 XcbSurfaceCreateInfoKHR( VkXcbSurfaceCreateInfoKHR const & rhs )
9777 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009778 memcpy( this, &rhs, sizeof( XcbSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009779 }
9780
9781 XcbSurfaceCreateInfoKHR& operator=( VkXcbSurfaceCreateInfoKHR const & rhs )
9782 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009783 memcpy( this, &rhs, sizeof( XcbSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009784 return *this;
9785 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009786 XcbSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9787 {
9788 pNext = pNext_;
9789 return *this;
9790 }
9791
9792 XcbSurfaceCreateInfoKHR& setFlags( XcbSurfaceCreateFlagsKHR flags_ )
9793 {
9794 flags = flags_;
9795 return *this;
9796 }
9797
9798 XcbSurfaceCreateInfoKHR& setConnection( xcb_connection_t* connection_ )
9799 {
9800 connection = connection_;
9801 return *this;
9802 }
9803
9804 XcbSurfaceCreateInfoKHR& setWindow( xcb_window_t window_ )
9805 {
9806 window = window_;
9807 return *this;
9808 }
9809
9810 operator const VkXcbSurfaceCreateInfoKHR&() const
9811 {
9812 return *reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>(this);
9813 }
9814
9815 bool operator==( XcbSurfaceCreateInfoKHR const& rhs ) const
9816 {
9817 return ( sType == rhs.sType )
9818 && ( pNext == rhs.pNext )
9819 && ( flags == rhs.flags )
9820 && ( connection == rhs.connection )
9821 && ( window == rhs.window );
9822 }
9823
9824 bool operator!=( XcbSurfaceCreateInfoKHR const& rhs ) const
9825 {
9826 return !operator==( rhs );
9827 }
9828
9829 private:
9830 StructureType sType;
9831
9832 public:
9833 const void* pNext;
9834 XcbSurfaceCreateFlagsKHR flags;
9835 xcb_connection_t* connection;
9836 xcb_window_t window;
9837 };
9838 static_assert( sizeof( XcbSurfaceCreateInfoKHR ) == sizeof( VkXcbSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9839#endif /*VK_USE_PLATFORM_XCB_KHR*/
9840
9841 struct DebugMarkerMarkerInfoEXT
9842 {
9843 DebugMarkerMarkerInfoEXT( const char* pMarkerName_ = nullptr, std::array<float,4> const& color_ = { { 0, 0, 0, 0 } } )
9844 : sType( StructureType::eDebugMarkerMarkerInfoEXT )
9845 , pNext( nullptr )
9846 , pMarkerName( pMarkerName_ )
9847 {
9848 memcpy( &color, color_.data(), 4 * sizeof( float ) );
9849 }
9850
9851 DebugMarkerMarkerInfoEXT( VkDebugMarkerMarkerInfoEXT const & rhs )
9852 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009853 memcpy( this, &rhs, sizeof( DebugMarkerMarkerInfoEXT ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009854 }
9855
9856 DebugMarkerMarkerInfoEXT& operator=( VkDebugMarkerMarkerInfoEXT const & rhs )
9857 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009858 memcpy( this, &rhs, sizeof( DebugMarkerMarkerInfoEXT ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009859 return *this;
9860 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009861 DebugMarkerMarkerInfoEXT& setPNext( const void* pNext_ )
9862 {
9863 pNext = pNext_;
9864 return *this;
9865 }
9866
9867 DebugMarkerMarkerInfoEXT& setPMarkerName( const char* pMarkerName_ )
9868 {
9869 pMarkerName = pMarkerName_;
9870 return *this;
9871 }
9872
9873 DebugMarkerMarkerInfoEXT& setColor( std::array<float,4> color_ )
9874 {
9875 memcpy( &color, color_.data(), 4 * sizeof( float ) );
9876 return *this;
9877 }
9878
9879 operator const VkDebugMarkerMarkerInfoEXT&() const
9880 {
9881 return *reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>(this);
9882 }
9883
9884 bool operator==( DebugMarkerMarkerInfoEXT const& rhs ) const
9885 {
9886 return ( sType == rhs.sType )
9887 && ( pNext == rhs.pNext )
9888 && ( pMarkerName == rhs.pMarkerName )
9889 && ( memcmp( color, rhs.color, 4 * sizeof( float ) ) == 0 );
9890 }
9891
9892 bool operator!=( DebugMarkerMarkerInfoEXT const& rhs ) const
9893 {
9894 return !operator==( rhs );
9895 }
9896
9897 private:
9898 StructureType sType;
9899
9900 public:
9901 const void* pNext;
9902 const char* pMarkerName;
9903 float color[4];
9904 };
9905 static_assert( sizeof( DebugMarkerMarkerInfoEXT ) == sizeof( VkDebugMarkerMarkerInfoEXT ), "struct and wrapper have different size!" );
9906
9907 struct DedicatedAllocationImageCreateInfoNV
9908 {
9909 DedicatedAllocationImageCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
9910 : sType( StructureType::eDedicatedAllocationImageCreateInfoNV )
9911 , pNext( nullptr )
9912 , dedicatedAllocation( dedicatedAllocation_ )
9913 {
9914 }
9915
9916 DedicatedAllocationImageCreateInfoNV( VkDedicatedAllocationImageCreateInfoNV const & rhs )
9917 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009918 memcpy( this, &rhs, sizeof( DedicatedAllocationImageCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009919 }
9920
9921 DedicatedAllocationImageCreateInfoNV& operator=( VkDedicatedAllocationImageCreateInfoNV const & rhs )
9922 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009923 memcpy( this, &rhs, sizeof( DedicatedAllocationImageCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009924 return *this;
9925 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009926 DedicatedAllocationImageCreateInfoNV& setPNext( const void* pNext_ )
9927 {
9928 pNext = pNext_;
9929 return *this;
9930 }
9931
9932 DedicatedAllocationImageCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
9933 {
9934 dedicatedAllocation = dedicatedAllocation_;
9935 return *this;
9936 }
9937
9938 operator const VkDedicatedAllocationImageCreateInfoNV&() const
9939 {
9940 return *reinterpret_cast<const VkDedicatedAllocationImageCreateInfoNV*>(this);
9941 }
9942
9943 bool operator==( DedicatedAllocationImageCreateInfoNV const& rhs ) const
9944 {
9945 return ( sType == rhs.sType )
9946 && ( pNext == rhs.pNext )
9947 && ( dedicatedAllocation == rhs.dedicatedAllocation );
9948 }
9949
9950 bool operator!=( DedicatedAllocationImageCreateInfoNV const& rhs ) const
9951 {
9952 return !operator==( rhs );
9953 }
9954
9955 private:
9956 StructureType sType;
9957
9958 public:
9959 const void* pNext;
9960 Bool32 dedicatedAllocation;
9961 };
9962 static_assert( sizeof( DedicatedAllocationImageCreateInfoNV ) == sizeof( VkDedicatedAllocationImageCreateInfoNV ), "struct and wrapper have different size!" );
9963
9964 struct DedicatedAllocationBufferCreateInfoNV
9965 {
9966 DedicatedAllocationBufferCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
9967 : sType( StructureType::eDedicatedAllocationBufferCreateInfoNV )
9968 , pNext( nullptr )
9969 , dedicatedAllocation( dedicatedAllocation_ )
9970 {
9971 }
9972
9973 DedicatedAllocationBufferCreateInfoNV( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
9974 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009975 memcpy( this, &rhs, sizeof( DedicatedAllocationBufferCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009976 }
9977
9978 DedicatedAllocationBufferCreateInfoNV& operator=( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
9979 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009980 memcpy( this, &rhs, sizeof( DedicatedAllocationBufferCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009981 return *this;
9982 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009983 DedicatedAllocationBufferCreateInfoNV& setPNext( const void* pNext_ )
9984 {
9985 pNext = pNext_;
9986 return *this;
9987 }
9988
9989 DedicatedAllocationBufferCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
9990 {
9991 dedicatedAllocation = dedicatedAllocation_;
9992 return *this;
9993 }
9994
9995 operator const VkDedicatedAllocationBufferCreateInfoNV&() const
9996 {
9997 return *reinterpret_cast<const VkDedicatedAllocationBufferCreateInfoNV*>(this);
9998 }
9999
10000 bool operator==( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
10001 {
10002 return ( sType == rhs.sType )
10003 && ( pNext == rhs.pNext )
10004 && ( dedicatedAllocation == rhs.dedicatedAllocation );
10005 }
10006
10007 bool operator!=( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
10008 {
10009 return !operator==( rhs );
10010 }
10011
10012 private:
10013 StructureType sType;
10014
10015 public:
10016 const void* pNext;
10017 Bool32 dedicatedAllocation;
10018 };
10019 static_assert( sizeof( DedicatedAllocationBufferCreateInfoNV ) == sizeof( VkDedicatedAllocationBufferCreateInfoNV ), "struct and wrapper have different size!" );
10020
10021 struct DedicatedAllocationMemoryAllocateInfoNV
10022 {
10023 DedicatedAllocationMemoryAllocateInfoNV( Image image_ = Image(), Buffer buffer_ = Buffer() )
10024 : sType( StructureType::eDedicatedAllocationMemoryAllocateInfoNV )
10025 , pNext( nullptr )
10026 , image( image_ )
10027 , buffer( buffer_ )
10028 {
10029 }
10030
10031 DedicatedAllocationMemoryAllocateInfoNV( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
10032 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010033 memcpy( this, &rhs, sizeof( DedicatedAllocationMemoryAllocateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060010034 }
10035
10036 DedicatedAllocationMemoryAllocateInfoNV& operator=( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
10037 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010038 memcpy( this, &rhs, sizeof( DedicatedAllocationMemoryAllocateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060010039 return *this;
10040 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060010041 DedicatedAllocationMemoryAllocateInfoNV& setPNext( const void* pNext_ )
10042 {
10043 pNext = pNext_;
10044 return *this;
10045 }
10046
10047 DedicatedAllocationMemoryAllocateInfoNV& setImage( Image image_ )
10048 {
10049 image = image_;
10050 return *this;
10051 }
10052
10053 DedicatedAllocationMemoryAllocateInfoNV& setBuffer( Buffer buffer_ )
10054 {
10055 buffer = buffer_;
10056 return *this;
10057 }
10058
10059 operator const VkDedicatedAllocationMemoryAllocateInfoNV&() const
10060 {
10061 return *reinterpret_cast<const VkDedicatedAllocationMemoryAllocateInfoNV*>(this);
10062 }
10063
10064 bool operator==( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
10065 {
10066 return ( sType == rhs.sType )
10067 && ( pNext == rhs.pNext )
10068 && ( image == rhs.image )
10069 && ( buffer == rhs.buffer );
10070 }
10071
10072 bool operator!=( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
10073 {
10074 return !operator==( rhs );
10075 }
10076
10077 private:
10078 StructureType sType;
10079
10080 public:
10081 const void* pNext;
10082 Image image;
10083 Buffer buffer;
10084 };
10085 static_assert( sizeof( DedicatedAllocationMemoryAllocateInfoNV ) == sizeof( VkDedicatedAllocationMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
10086
Lenny Komow6501c122016-08-31 15:03:49 -060010087#ifdef VK_USE_PLATFORM_WIN32_KHR
10088 struct ExportMemoryWin32HandleInfoNV
10089 {
10090 ExportMemoryWin32HandleInfoNV( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0 )
10091 : sType( StructureType::eExportMemoryWin32HandleInfoNV )
10092 , pNext( nullptr )
10093 , pAttributes( pAttributes_ )
10094 , dwAccess( dwAccess_ )
10095 {
10096 }
10097
10098 ExportMemoryWin32HandleInfoNV( VkExportMemoryWin32HandleInfoNV const & rhs )
10099 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010100 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -060010101 }
10102
10103 ExportMemoryWin32HandleInfoNV& operator=( VkExportMemoryWin32HandleInfoNV const & rhs )
10104 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010105 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -060010106 return *this;
10107 }
Lenny Komow6501c122016-08-31 15:03:49 -060010108 ExportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
10109 {
10110 pNext = pNext_;
10111 return *this;
10112 }
10113
10114 ExportMemoryWin32HandleInfoNV& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
10115 {
10116 pAttributes = pAttributes_;
10117 return *this;
10118 }
10119
10120 ExportMemoryWin32HandleInfoNV& setDwAccess( DWORD dwAccess_ )
10121 {
10122 dwAccess = dwAccess_;
10123 return *this;
10124 }
10125
10126 operator const VkExportMemoryWin32HandleInfoNV&() const
10127 {
10128 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoNV*>(this);
10129 }
10130
10131 bool operator==( ExportMemoryWin32HandleInfoNV const& rhs ) const
10132 {
10133 return ( sType == rhs.sType )
10134 && ( pNext == rhs.pNext )
10135 && ( pAttributes == rhs.pAttributes )
10136 && ( dwAccess == rhs.dwAccess );
10137 }
10138
10139 bool operator!=( ExportMemoryWin32HandleInfoNV const& rhs ) const
10140 {
10141 return !operator==( rhs );
10142 }
10143
10144 private:
10145 StructureType sType;
10146
10147 public:
10148 const void* pNext;
10149 const SECURITY_ATTRIBUTES* pAttributes;
10150 DWORD dwAccess;
10151 };
10152 static_assert( sizeof( ExportMemoryWin32HandleInfoNV ) == sizeof( VkExportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
10153#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10154
10155#ifdef VK_USE_PLATFORM_WIN32_KHR
10156 struct Win32KeyedMutexAcquireReleaseInfoNV
10157 {
10158 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 )
10159 : sType( StructureType::eWin32KeyedMutexAcquireReleaseInfoNV )
10160 , pNext( nullptr )
10161 , acquireCount( acquireCount_ )
10162 , pAcquireSyncs( pAcquireSyncs_ )
10163 , pAcquireKeys( pAcquireKeys_ )
10164 , pAcquireTimeoutMilliseconds( pAcquireTimeoutMilliseconds_ )
10165 , releaseCount( releaseCount_ )
10166 , pReleaseSyncs( pReleaseSyncs_ )
10167 , pReleaseKeys( pReleaseKeys_ )
10168 {
10169 }
10170
10171 Win32KeyedMutexAcquireReleaseInfoNV( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
10172 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010173 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -060010174 }
10175
10176 Win32KeyedMutexAcquireReleaseInfoNV& operator=( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
10177 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010178 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -060010179 return *this;
10180 }
Lenny Komow6501c122016-08-31 15:03:49 -060010181 Win32KeyedMutexAcquireReleaseInfoNV& setPNext( const void* pNext_ )
10182 {
10183 pNext = pNext_;
10184 return *this;
10185 }
10186
10187 Win32KeyedMutexAcquireReleaseInfoNV& setAcquireCount( uint32_t acquireCount_ )
10188 {
10189 acquireCount = acquireCount_;
10190 return *this;
10191 }
10192
10193 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
10194 {
10195 pAcquireSyncs = pAcquireSyncs_;
10196 return *this;
10197 }
10198
10199 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
10200 {
10201 pAcquireKeys = pAcquireKeys_;
10202 return *this;
10203 }
10204
10205 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireTimeoutMilliseconds( const uint32_t* pAcquireTimeoutMilliseconds_ )
10206 {
10207 pAcquireTimeoutMilliseconds = pAcquireTimeoutMilliseconds_;
10208 return *this;
10209 }
10210
10211 Win32KeyedMutexAcquireReleaseInfoNV& setReleaseCount( uint32_t releaseCount_ )
10212 {
10213 releaseCount = releaseCount_;
10214 return *this;
10215 }
10216
10217 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
10218 {
10219 pReleaseSyncs = pReleaseSyncs_;
10220 return *this;
10221 }
10222
10223 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
10224 {
10225 pReleaseKeys = pReleaseKeys_;
10226 return *this;
10227 }
10228
10229 operator const VkWin32KeyedMutexAcquireReleaseInfoNV&() const
10230 {
10231 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoNV*>(this);
10232 }
10233
10234 bool operator==( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
10235 {
10236 return ( sType == rhs.sType )
10237 && ( pNext == rhs.pNext )
10238 && ( acquireCount == rhs.acquireCount )
10239 && ( pAcquireSyncs == rhs.pAcquireSyncs )
10240 && ( pAcquireKeys == rhs.pAcquireKeys )
10241 && ( pAcquireTimeoutMilliseconds == rhs.pAcquireTimeoutMilliseconds )
10242 && ( releaseCount == rhs.releaseCount )
10243 && ( pReleaseSyncs == rhs.pReleaseSyncs )
10244 && ( pReleaseKeys == rhs.pReleaseKeys );
10245 }
10246
10247 bool operator!=( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
10248 {
10249 return !operator==( rhs );
10250 }
10251
10252 private:
10253 StructureType sType;
10254
10255 public:
10256 const void* pNext;
10257 uint32_t acquireCount;
10258 const DeviceMemory* pAcquireSyncs;
10259 const uint64_t* pAcquireKeys;
10260 const uint32_t* pAcquireTimeoutMilliseconds;
10261 uint32_t releaseCount;
10262 const DeviceMemory* pReleaseSyncs;
10263 const uint64_t* pReleaseKeys;
10264 };
10265 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoNV ), "struct and wrapper have different size!" );
10266#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10267
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010268 struct DeviceGeneratedCommandsFeaturesNVX
10269 {
10270 DeviceGeneratedCommandsFeaturesNVX( Bool32 computeBindingPointSupport_ = 0 )
10271 : sType( StructureType::eDeviceGeneratedCommandsFeaturesNVX )
10272 , pNext( nullptr )
10273 , computeBindingPointSupport( computeBindingPointSupport_ )
10274 {
10275 }
10276
10277 DeviceGeneratedCommandsFeaturesNVX( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
10278 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010279 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsFeaturesNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010280 }
10281
10282 DeviceGeneratedCommandsFeaturesNVX& operator=( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
10283 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010284 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsFeaturesNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010285 return *this;
10286 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010287 DeviceGeneratedCommandsFeaturesNVX& setPNext( const void* pNext_ )
10288 {
10289 pNext = pNext_;
10290 return *this;
10291 }
10292
10293 DeviceGeneratedCommandsFeaturesNVX& setComputeBindingPointSupport( Bool32 computeBindingPointSupport_ )
10294 {
10295 computeBindingPointSupport = computeBindingPointSupport_;
10296 return *this;
10297 }
10298
10299 operator const VkDeviceGeneratedCommandsFeaturesNVX&() const
10300 {
10301 return *reinterpret_cast<const VkDeviceGeneratedCommandsFeaturesNVX*>(this);
10302 }
10303
10304 bool operator==( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
10305 {
10306 return ( sType == rhs.sType )
10307 && ( pNext == rhs.pNext )
10308 && ( computeBindingPointSupport == rhs.computeBindingPointSupport );
10309 }
10310
10311 bool operator!=( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
10312 {
10313 return !operator==( rhs );
10314 }
10315
10316 private:
10317 StructureType sType;
10318
10319 public:
10320 const void* pNext;
10321 Bool32 computeBindingPointSupport;
10322 };
10323 static_assert( sizeof( DeviceGeneratedCommandsFeaturesNVX ) == sizeof( VkDeviceGeneratedCommandsFeaturesNVX ), "struct and wrapper have different size!" );
10324
10325 struct DeviceGeneratedCommandsLimitsNVX
10326 {
10327 DeviceGeneratedCommandsLimitsNVX( uint32_t maxIndirectCommandsLayoutTokenCount_ = 0, uint32_t maxObjectEntryCounts_ = 0, uint32_t minSequenceCountBufferOffsetAlignment_ = 0, uint32_t minSequenceIndexBufferOffsetAlignment_ = 0, uint32_t minCommandsTokenBufferOffsetAlignment_ = 0 )
10328 : sType( StructureType::eDeviceGeneratedCommandsLimitsNVX )
10329 , pNext( nullptr )
10330 , maxIndirectCommandsLayoutTokenCount( maxIndirectCommandsLayoutTokenCount_ )
10331 , maxObjectEntryCounts( maxObjectEntryCounts_ )
10332 , minSequenceCountBufferOffsetAlignment( minSequenceCountBufferOffsetAlignment_ )
10333 , minSequenceIndexBufferOffsetAlignment( minSequenceIndexBufferOffsetAlignment_ )
10334 , minCommandsTokenBufferOffsetAlignment( minCommandsTokenBufferOffsetAlignment_ )
10335 {
10336 }
10337
10338 DeviceGeneratedCommandsLimitsNVX( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
10339 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010340 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsLimitsNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010341 }
10342
10343 DeviceGeneratedCommandsLimitsNVX& operator=( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
10344 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010345 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsLimitsNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010346 return *this;
10347 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010348 DeviceGeneratedCommandsLimitsNVX& setPNext( const void* pNext_ )
10349 {
10350 pNext = pNext_;
10351 return *this;
10352 }
10353
10354 DeviceGeneratedCommandsLimitsNVX& setMaxIndirectCommandsLayoutTokenCount( uint32_t maxIndirectCommandsLayoutTokenCount_ )
10355 {
10356 maxIndirectCommandsLayoutTokenCount = maxIndirectCommandsLayoutTokenCount_;
10357 return *this;
10358 }
10359
10360 DeviceGeneratedCommandsLimitsNVX& setMaxObjectEntryCounts( uint32_t maxObjectEntryCounts_ )
10361 {
10362 maxObjectEntryCounts = maxObjectEntryCounts_;
10363 return *this;
10364 }
10365
10366 DeviceGeneratedCommandsLimitsNVX& setMinSequenceCountBufferOffsetAlignment( uint32_t minSequenceCountBufferOffsetAlignment_ )
10367 {
10368 minSequenceCountBufferOffsetAlignment = minSequenceCountBufferOffsetAlignment_;
10369 return *this;
10370 }
10371
10372 DeviceGeneratedCommandsLimitsNVX& setMinSequenceIndexBufferOffsetAlignment( uint32_t minSequenceIndexBufferOffsetAlignment_ )
10373 {
10374 minSequenceIndexBufferOffsetAlignment = minSequenceIndexBufferOffsetAlignment_;
10375 return *this;
10376 }
10377
10378 DeviceGeneratedCommandsLimitsNVX& setMinCommandsTokenBufferOffsetAlignment( uint32_t minCommandsTokenBufferOffsetAlignment_ )
10379 {
10380 minCommandsTokenBufferOffsetAlignment = minCommandsTokenBufferOffsetAlignment_;
10381 return *this;
10382 }
10383
10384 operator const VkDeviceGeneratedCommandsLimitsNVX&() const
10385 {
10386 return *reinterpret_cast<const VkDeviceGeneratedCommandsLimitsNVX*>(this);
10387 }
10388
10389 bool operator==( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
10390 {
10391 return ( sType == rhs.sType )
10392 && ( pNext == rhs.pNext )
10393 && ( maxIndirectCommandsLayoutTokenCount == rhs.maxIndirectCommandsLayoutTokenCount )
10394 && ( maxObjectEntryCounts == rhs.maxObjectEntryCounts )
10395 && ( minSequenceCountBufferOffsetAlignment == rhs.minSequenceCountBufferOffsetAlignment )
10396 && ( minSequenceIndexBufferOffsetAlignment == rhs.minSequenceIndexBufferOffsetAlignment )
10397 && ( minCommandsTokenBufferOffsetAlignment == rhs.minCommandsTokenBufferOffsetAlignment );
10398 }
10399
10400 bool operator!=( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
10401 {
10402 return !operator==( rhs );
10403 }
10404
10405 private:
10406 StructureType sType;
10407
10408 public:
10409 const void* pNext;
10410 uint32_t maxIndirectCommandsLayoutTokenCount;
10411 uint32_t maxObjectEntryCounts;
10412 uint32_t minSequenceCountBufferOffsetAlignment;
10413 uint32_t minSequenceIndexBufferOffsetAlignment;
10414 uint32_t minCommandsTokenBufferOffsetAlignment;
10415 };
10416 static_assert( sizeof( DeviceGeneratedCommandsLimitsNVX ) == sizeof( VkDeviceGeneratedCommandsLimitsNVX ), "struct and wrapper have different size!" );
10417
10418 struct CmdReserveSpaceForCommandsInfoNVX
10419 {
10420 CmdReserveSpaceForCommandsInfoNVX( ObjectTableNVX objectTable_ = ObjectTableNVX(), IndirectCommandsLayoutNVX indirectCommandsLayout_ = IndirectCommandsLayoutNVX(), uint32_t maxSequencesCount_ = 0 )
10421 : sType( StructureType::eCmdReserveSpaceForCommandsInfoNVX )
10422 , pNext( nullptr )
10423 , objectTable( objectTable_ )
10424 , indirectCommandsLayout( indirectCommandsLayout_ )
10425 , maxSequencesCount( maxSequencesCount_ )
10426 {
10427 }
10428
10429 CmdReserveSpaceForCommandsInfoNVX( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
10430 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010431 memcpy( this, &rhs, sizeof( CmdReserveSpaceForCommandsInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010432 }
10433
10434 CmdReserveSpaceForCommandsInfoNVX& operator=( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
10435 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010436 memcpy( this, &rhs, sizeof( CmdReserveSpaceForCommandsInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010437 return *this;
10438 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010439 CmdReserveSpaceForCommandsInfoNVX& setPNext( const void* pNext_ )
10440 {
10441 pNext = pNext_;
10442 return *this;
10443 }
10444
10445 CmdReserveSpaceForCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
10446 {
10447 objectTable = objectTable_;
10448 return *this;
10449 }
10450
10451 CmdReserveSpaceForCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
10452 {
10453 indirectCommandsLayout = indirectCommandsLayout_;
10454 return *this;
10455 }
10456
10457 CmdReserveSpaceForCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
10458 {
10459 maxSequencesCount = maxSequencesCount_;
10460 return *this;
10461 }
10462
10463 operator const VkCmdReserveSpaceForCommandsInfoNVX&() const
10464 {
10465 return *reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>(this);
10466 }
10467
10468 bool operator==( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
10469 {
10470 return ( sType == rhs.sType )
10471 && ( pNext == rhs.pNext )
10472 && ( objectTable == rhs.objectTable )
10473 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
10474 && ( maxSequencesCount == rhs.maxSequencesCount );
10475 }
10476
10477 bool operator!=( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
10478 {
10479 return !operator==( rhs );
10480 }
10481
10482 private:
10483 StructureType sType;
10484
10485 public:
10486 const void* pNext;
10487 ObjectTableNVX objectTable;
10488 IndirectCommandsLayoutNVX indirectCommandsLayout;
10489 uint32_t maxSequencesCount;
10490 };
10491 static_assert( sizeof( CmdReserveSpaceForCommandsInfoNVX ) == sizeof( VkCmdReserveSpaceForCommandsInfoNVX ), "struct and wrapper have different size!" );
10492
Mark Young39389872017-01-19 21:10:49 -070010493 struct PhysicalDeviceFeatures2KHR
10494 {
10495 PhysicalDeviceFeatures2KHR( PhysicalDeviceFeatures features_ = PhysicalDeviceFeatures() )
10496 : sType( StructureType::ePhysicalDeviceFeatures2KHR )
10497 , pNext( nullptr )
10498 , features( features_ )
10499 {
10500 }
10501
10502 PhysicalDeviceFeatures2KHR( VkPhysicalDeviceFeatures2KHR const & rhs )
10503 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010504 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070010505 }
10506
10507 PhysicalDeviceFeatures2KHR& operator=( VkPhysicalDeviceFeatures2KHR const & rhs )
10508 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010509 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070010510 return *this;
10511 }
Mark Young39389872017-01-19 21:10:49 -070010512 PhysicalDeviceFeatures2KHR& setPNext( void* pNext_ )
10513 {
10514 pNext = pNext_;
10515 return *this;
10516 }
10517
10518 PhysicalDeviceFeatures2KHR& setFeatures( PhysicalDeviceFeatures features_ )
10519 {
10520 features = features_;
10521 return *this;
10522 }
10523
10524 operator const VkPhysicalDeviceFeatures2KHR&() const
10525 {
10526 return *reinterpret_cast<const VkPhysicalDeviceFeatures2KHR*>(this);
10527 }
10528
10529 bool operator==( PhysicalDeviceFeatures2KHR const& rhs ) const
10530 {
10531 return ( sType == rhs.sType )
10532 && ( pNext == rhs.pNext )
10533 && ( features == rhs.features );
10534 }
10535
10536 bool operator!=( PhysicalDeviceFeatures2KHR const& rhs ) const
10537 {
10538 return !operator==( rhs );
10539 }
10540
10541 private:
10542 StructureType sType;
10543
10544 public:
10545 void* pNext;
10546 PhysicalDeviceFeatures features;
10547 };
10548 static_assert( sizeof( PhysicalDeviceFeatures2KHR ) == sizeof( VkPhysicalDeviceFeatures2KHR ), "struct and wrapper have different size!" );
10549
Mark Young0f183a82017-02-28 09:58:04 -070010550 struct PhysicalDevicePushDescriptorPropertiesKHR
10551 {
10552 PhysicalDevicePushDescriptorPropertiesKHR( uint32_t maxPushDescriptors_ = 0 )
10553 : sType( StructureType::ePhysicalDevicePushDescriptorPropertiesKHR )
10554 , pNext( nullptr )
10555 , maxPushDescriptors( maxPushDescriptors_ )
10556 {
10557 }
10558
10559 PhysicalDevicePushDescriptorPropertiesKHR( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
10560 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010561 memcpy( this, &rhs, sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010562 }
10563
10564 PhysicalDevicePushDescriptorPropertiesKHR& operator=( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
10565 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010566 memcpy( this, &rhs, sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010567 return *this;
10568 }
Mark Young0f183a82017-02-28 09:58:04 -070010569 PhysicalDevicePushDescriptorPropertiesKHR& setPNext( void* pNext_ )
10570 {
10571 pNext = pNext_;
10572 return *this;
10573 }
10574
10575 PhysicalDevicePushDescriptorPropertiesKHR& setMaxPushDescriptors( uint32_t maxPushDescriptors_ )
10576 {
10577 maxPushDescriptors = maxPushDescriptors_;
10578 return *this;
10579 }
10580
10581 operator const VkPhysicalDevicePushDescriptorPropertiesKHR&() const
10582 {
10583 return *reinterpret_cast<const VkPhysicalDevicePushDescriptorPropertiesKHR*>(this);
10584 }
10585
10586 bool operator==( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
10587 {
10588 return ( sType == rhs.sType )
10589 && ( pNext == rhs.pNext )
10590 && ( maxPushDescriptors == rhs.maxPushDescriptors );
10591 }
10592
10593 bool operator!=( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
10594 {
10595 return !operator==( rhs );
10596 }
10597
10598 private:
10599 StructureType sType;
10600
10601 public:
10602 void* pNext;
10603 uint32_t maxPushDescriptors;
10604 };
10605 static_assert( sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) == sizeof( VkPhysicalDevicePushDescriptorPropertiesKHR ), "struct and wrapper have different size!" );
10606
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010607 struct PresentRegionsKHR
10608 {
10609 PresentRegionsKHR( uint32_t swapchainCount_ = 0, const PresentRegionKHR* pRegions_ = nullptr )
10610 : sType( StructureType::ePresentRegionsKHR )
10611 , pNext( nullptr )
10612 , swapchainCount( swapchainCount_ )
10613 , pRegions( pRegions_ )
10614 {
10615 }
10616
10617 PresentRegionsKHR( VkPresentRegionsKHR const & rhs )
10618 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010619 memcpy( this, &rhs, sizeof( PresentRegionsKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010620 }
10621
10622 PresentRegionsKHR& operator=( VkPresentRegionsKHR const & rhs )
10623 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010624 memcpy( this, &rhs, sizeof( PresentRegionsKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010625 return *this;
10626 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010627 PresentRegionsKHR& setPNext( const void* pNext_ )
10628 {
10629 pNext = pNext_;
10630 return *this;
10631 }
10632
10633 PresentRegionsKHR& setSwapchainCount( uint32_t swapchainCount_ )
10634 {
10635 swapchainCount = swapchainCount_;
10636 return *this;
10637 }
10638
10639 PresentRegionsKHR& setPRegions( const PresentRegionKHR* pRegions_ )
10640 {
10641 pRegions = pRegions_;
10642 return *this;
10643 }
10644
10645 operator const VkPresentRegionsKHR&() const
10646 {
10647 return *reinterpret_cast<const VkPresentRegionsKHR*>(this);
10648 }
10649
10650 bool operator==( PresentRegionsKHR const& rhs ) const
10651 {
10652 return ( sType == rhs.sType )
10653 && ( pNext == rhs.pNext )
10654 && ( swapchainCount == rhs.swapchainCount )
10655 && ( pRegions == rhs.pRegions );
10656 }
10657
10658 bool operator!=( PresentRegionsKHR const& rhs ) const
10659 {
10660 return !operator==( rhs );
10661 }
10662
10663 private:
10664 StructureType sType;
10665
10666 public:
10667 const void* pNext;
10668 uint32_t swapchainCount;
10669 const PresentRegionKHR* pRegions;
10670 };
10671 static_assert( sizeof( PresentRegionsKHR ) == sizeof( VkPresentRegionsKHR ), "struct and wrapper have different size!" );
10672
Mark Youngabc2d6e2017-07-07 07:59:56 -060010673 struct PhysicalDeviceVariablePointerFeaturesKHR
Mark Young0f183a82017-02-28 09:58:04 -070010674 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010675 PhysicalDeviceVariablePointerFeaturesKHR( Bool32 variablePointersStorageBuffer_ = 0, Bool32 variablePointers_ = 0 )
10676 : sType( StructureType::ePhysicalDeviceVariablePointerFeaturesKHR )
10677 , pNext( nullptr )
10678 , variablePointersStorageBuffer( variablePointersStorageBuffer_ )
10679 , variablePointers( variablePointers_ )
Mark Young0f183a82017-02-28 09:58:04 -070010680 {
Mark Young0f183a82017-02-28 09:58:04 -070010681 }
10682
Mark Youngabc2d6e2017-07-07 07:59:56 -060010683 PhysicalDeviceVariablePointerFeaturesKHR( VkPhysicalDeviceVariablePointerFeaturesKHR const & rhs )
10684 {
10685 memcpy( this, &rhs, sizeof( PhysicalDeviceVariablePointerFeaturesKHR ) );
10686 }
10687
10688 PhysicalDeviceVariablePointerFeaturesKHR& operator=( VkPhysicalDeviceVariablePointerFeaturesKHR const & rhs )
10689 {
10690 memcpy( this, &rhs, sizeof( PhysicalDeviceVariablePointerFeaturesKHR ) );
10691 return *this;
10692 }
10693 PhysicalDeviceVariablePointerFeaturesKHR& setPNext( void* pNext_ )
10694 {
10695 pNext = pNext_;
10696 return *this;
10697 }
10698
10699 PhysicalDeviceVariablePointerFeaturesKHR& setVariablePointersStorageBuffer( Bool32 variablePointersStorageBuffer_ )
10700 {
10701 variablePointersStorageBuffer = variablePointersStorageBuffer_;
10702 return *this;
10703 }
10704
10705 PhysicalDeviceVariablePointerFeaturesKHR& setVariablePointers( Bool32 variablePointers_ )
10706 {
10707 variablePointers = variablePointers_;
10708 return *this;
10709 }
10710
10711 operator const VkPhysicalDeviceVariablePointerFeaturesKHR&() const
10712 {
10713 return *reinterpret_cast<const VkPhysicalDeviceVariablePointerFeaturesKHR*>(this);
10714 }
10715
10716 bool operator==( PhysicalDeviceVariablePointerFeaturesKHR const& rhs ) const
10717 {
10718 return ( sType == rhs.sType )
10719 && ( pNext == rhs.pNext )
10720 && ( variablePointersStorageBuffer == rhs.variablePointersStorageBuffer )
10721 && ( variablePointers == rhs.variablePointers );
10722 }
10723
10724 bool operator!=( PhysicalDeviceVariablePointerFeaturesKHR const& rhs ) const
10725 {
10726 return !operator==( rhs );
10727 }
10728
10729 private:
10730 StructureType sType;
10731
10732 public:
10733 void* pNext;
10734 Bool32 variablePointersStorageBuffer;
10735 Bool32 variablePointers;
10736 };
10737 static_assert( sizeof( PhysicalDeviceVariablePointerFeaturesKHR ) == sizeof( VkPhysicalDeviceVariablePointerFeaturesKHR ), "struct and wrapper have different size!" );
10738
10739 struct PhysicalDeviceIDPropertiesKHR
10740 {
10741 operator const VkPhysicalDeviceIDPropertiesKHR&() const
10742 {
10743 return *reinterpret_cast<const VkPhysicalDeviceIDPropertiesKHR*>(this);
10744 }
10745
10746 bool operator==( PhysicalDeviceIDPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010747 {
10748 return ( sType == rhs.sType )
10749 && ( pNext == rhs.pNext )
10750 && ( memcmp( deviceUUID, rhs.deviceUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
10751 && ( memcmp( driverUUID, rhs.driverUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
Mark Youngabc2d6e2017-07-07 07:59:56 -060010752 && ( memcmp( deviceLUID, rhs.deviceLUID, VK_LUID_SIZE_KHR * sizeof( uint8_t ) ) == 0 )
10753 && ( deviceNodeMask == rhs.deviceNodeMask )
Mark Young0f183a82017-02-28 09:58:04 -070010754 && ( deviceLUIDValid == rhs.deviceLUIDValid );
10755 }
10756
Mark Youngabc2d6e2017-07-07 07:59:56 -060010757 bool operator!=( PhysicalDeviceIDPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010758 {
10759 return !operator==( rhs );
10760 }
10761
10762 private:
10763 StructureType sType;
10764
10765 public:
10766 void* pNext;
10767 uint8_t deviceUUID[VK_UUID_SIZE];
10768 uint8_t driverUUID[VK_UUID_SIZE];
Mark Youngabc2d6e2017-07-07 07:59:56 -060010769 uint8_t deviceLUID[VK_LUID_SIZE_KHR];
10770 uint32_t deviceNodeMask;
Mark Young0f183a82017-02-28 09:58:04 -070010771 Bool32 deviceLUIDValid;
10772 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060010773 static_assert( sizeof( PhysicalDeviceIDPropertiesKHR ) == sizeof( VkPhysicalDeviceIDPropertiesKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070010774
Mark Youngabc2d6e2017-07-07 07:59:56 -060010775#ifdef VK_USE_PLATFORM_WIN32_KHR
10776 struct ExportMemoryWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070010777 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010778 ExportMemoryWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
10779 : sType( StructureType::eExportMemoryWin32HandleInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070010780 , pNext( nullptr )
10781 , pAttributes( pAttributes_ )
10782 , dwAccess( dwAccess_ )
10783 , name( name_ )
10784 {
10785 }
10786
Mark Youngabc2d6e2017-07-07 07:59:56 -060010787 ExportMemoryWin32HandleInfoKHR( VkExportMemoryWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010788 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010789 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010790 }
10791
Mark Youngabc2d6e2017-07-07 07:59:56 -060010792 ExportMemoryWin32HandleInfoKHR& operator=( VkExportMemoryWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010793 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010794 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010795 return *this;
10796 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060010797 ExportMemoryWin32HandleInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070010798 {
10799 pNext = pNext_;
10800 return *this;
10801 }
10802
Mark Youngabc2d6e2017-07-07 07:59:56 -060010803 ExportMemoryWin32HandleInfoKHR& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
Mark Young0f183a82017-02-28 09:58:04 -070010804 {
10805 pAttributes = pAttributes_;
10806 return *this;
10807 }
10808
Mark Youngabc2d6e2017-07-07 07:59:56 -060010809 ExportMemoryWin32HandleInfoKHR& setDwAccess( DWORD dwAccess_ )
Mark Young0f183a82017-02-28 09:58:04 -070010810 {
10811 dwAccess = dwAccess_;
10812 return *this;
10813 }
10814
Mark Youngabc2d6e2017-07-07 07:59:56 -060010815 ExportMemoryWin32HandleInfoKHR& setName( LPCWSTR name_ )
Mark Young0f183a82017-02-28 09:58:04 -070010816 {
10817 name = name_;
10818 return *this;
10819 }
10820
Mark Youngabc2d6e2017-07-07 07:59:56 -060010821 operator const VkExportMemoryWin32HandleInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070010822 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010823 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070010824 }
10825
Mark Youngabc2d6e2017-07-07 07:59:56 -060010826 bool operator==( ExportMemoryWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010827 {
10828 return ( sType == rhs.sType )
10829 && ( pNext == rhs.pNext )
10830 && ( pAttributes == rhs.pAttributes )
10831 && ( dwAccess == rhs.dwAccess )
10832 && ( name == rhs.name );
10833 }
10834
Mark Youngabc2d6e2017-07-07 07:59:56 -060010835 bool operator!=( ExportMemoryWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010836 {
10837 return !operator==( rhs );
10838 }
10839
10840 private:
10841 StructureType sType;
10842
10843 public:
10844 const void* pNext;
10845 const SECURITY_ATTRIBUTES* pAttributes;
10846 DWORD dwAccess;
10847 LPCWSTR name;
10848 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060010849 static_assert( sizeof( ExportMemoryWin32HandleInfoKHR ) == sizeof( VkExportMemoryWin32HandleInfoKHR ), "struct and wrapper have different size!" );
10850#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070010851
10852#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Youngabc2d6e2017-07-07 07:59:56 -060010853 struct MemoryWin32HandlePropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070010854 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010855 operator const VkMemoryWin32HandlePropertiesKHR&() const
10856 {
10857 return *reinterpret_cast<const VkMemoryWin32HandlePropertiesKHR*>(this);
10858 }
10859
10860 bool operator==( MemoryWin32HandlePropertiesKHR const& rhs ) const
10861 {
10862 return ( sType == rhs.sType )
10863 && ( pNext == rhs.pNext )
10864 && ( memoryTypeBits == rhs.memoryTypeBits );
10865 }
10866
10867 bool operator!=( MemoryWin32HandlePropertiesKHR const& rhs ) const
10868 {
10869 return !operator==( rhs );
10870 }
10871
10872 private:
10873 StructureType sType;
10874
10875 public:
10876 void* pNext;
10877 uint32_t memoryTypeBits;
10878 };
10879 static_assert( sizeof( MemoryWin32HandlePropertiesKHR ) == sizeof( VkMemoryWin32HandlePropertiesKHR ), "struct and wrapper have different size!" );
10880#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10881
10882 struct MemoryFdPropertiesKHR
10883 {
10884 operator const VkMemoryFdPropertiesKHR&() const
10885 {
10886 return *reinterpret_cast<const VkMemoryFdPropertiesKHR*>(this);
10887 }
10888
10889 bool operator==( MemoryFdPropertiesKHR const& rhs ) const
10890 {
10891 return ( sType == rhs.sType )
10892 && ( pNext == rhs.pNext )
10893 && ( memoryTypeBits == rhs.memoryTypeBits );
10894 }
10895
10896 bool operator!=( MemoryFdPropertiesKHR const& rhs ) const
10897 {
10898 return !operator==( rhs );
10899 }
10900
10901 private:
10902 StructureType sType;
10903
10904 public:
10905 void* pNext;
10906 uint32_t memoryTypeBits;
10907 };
10908 static_assert( sizeof( MemoryFdPropertiesKHR ) == sizeof( VkMemoryFdPropertiesKHR ), "struct and wrapper have different size!" );
10909
10910#ifdef VK_USE_PLATFORM_WIN32_KHR
10911 struct Win32KeyedMutexAcquireReleaseInfoKHR
10912 {
10913 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 )
10914 : sType( StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070010915 , pNext( nullptr )
10916 , acquireCount( acquireCount_ )
10917 , pAcquireSyncs( pAcquireSyncs_ )
10918 , pAcquireKeys( pAcquireKeys_ )
10919 , pAcquireTimeouts( pAcquireTimeouts_ )
10920 , releaseCount( releaseCount_ )
10921 , pReleaseSyncs( pReleaseSyncs_ )
10922 , pReleaseKeys( pReleaseKeys_ )
10923 {
10924 }
10925
Mark Youngabc2d6e2017-07-07 07:59:56 -060010926 Win32KeyedMutexAcquireReleaseInfoKHR( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010927 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010928 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010929 }
10930
Mark Youngabc2d6e2017-07-07 07:59:56 -060010931 Win32KeyedMutexAcquireReleaseInfoKHR& operator=( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010932 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010933 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010934 return *this;
10935 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060010936 Win32KeyedMutexAcquireReleaseInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070010937 {
10938 pNext = pNext_;
10939 return *this;
10940 }
10941
Mark Youngabc2d6e2017-07-07 07:59:56 -060010942 Win32KeyedMutexAcquireReleaseInfoKHR& setAcquireCount( uint32_t acquireCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070010943 {
10944 acquireCount = acquireCount_;
10945 return *this;
10946 }
10947
Mark Youngabc2d6e2017-07-07 07:59:56 -060010948 Win32KeyedMutexAcquireReleaseInfoKHR& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
Mark Young0f183a82017-02-28 09:58:04 -070010949 {
10950 pAcquireSyncs = pAcquireSyncs_;
10951 return *this;
10952 }
10953
Mark Youngabc2d6e2017-07-07 07:59:56 -060010954 Win32KeyedMutexAcquireReleaseInfoKHR& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
Mark Young0f183a82017-02-28 09:58:04 -070010955 {
10956 pAcquireKeys = pAcquireKeys_;
10957 return *this;
10958 }
10959
Mark Youngabc2d6e2017-07-07 07:59:56 -060010960 Win32KeyedMutexAcquireReleaseInfoKHR& setPAcquireTimeouts( const uint32_t* pAcquireTimeouts_ )
Mark Young0f183a82017-02-28 09:58:04 -070010961 {
10962 pAcquireTimeouts = pAcquireTimeouts_;
10963 return *this;
10964 }
10965
Mark Youngabc2d6e2017-07-07 07:59:56 -060010966 Win32KeyedMutexAcquireReleaseInfoKHR& setReleaseCount( uint32_t releaseCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070010967 {
10968 releaseCount = releaseCount_;
10969 return *this;
10970 }
10971
Mark Youngabc2d6e2017-07-07 07:59:56 -060010972 Win32KeyedMutexAcquireReleaseInfoKHR& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
Mark Young0f183a82017-02-28 09:58:04 -070010973 {
10974 pReleaseSyncs = pReleaseSyncs_;
10975 return *this;
10976 }
10977
Mark Youngabc2d6e2017-07-07 07:59:56 -060010978 Win32KeyedMutexAcquireReleaseInfoKHR& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
Mark Young0f183a82017-02-28 09:58:04 -070010979 {
10980 pReleaseKeys = pReleaseKeys_;
10981 return *this;
10982 }
10983
Mark Youngabc2d6e2017-07-07 07:59:56 -060010984 operator const VkWin32KeyedMutexAcquireReleaseInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070010985 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010986 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070010987 }
10988
Mark Youngabc2d6e2017-07-07 07:59:56 -060010989 bool operator==( Win32KeyedMutexAcquireReleaseInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010990 {
10991 return ( sType == rhs.sType )
10992 && ( pNext == rhs.pNext )
10993 && ( acquireCount == rhs.acquireCount )
10994 && ( pAcquireSyncs == rhs.pAcquireSyncs )
10995 && ( pAcquireKeys == rhs.pAcquireKeys )
10996 && ( pAcquireTimeouts == rhs.pAcquireTimeouts )
10997 && ( releaseCount == rhs.releaseCount )
10998 && ( pReleaseSyncs == rhs.pReleaseSyncs )
10999 && ( pReleaseKeys == rhs.pReleaseKeys );
11000 }
11001
Mark Youngabc2d6e2017-07-07 07:59:56 -060011002 bool operator!=( Win32KeyedMutexAcquireReleaseInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011003 {
11004 return !operator==( rhs );
11005 }
11006
11007 private:
11008 StructureType sType;
11009
11010 public:
11011 const void* pNext;
11012 uint32_t acquireCount;
11013 const DeviceMemory* pAcquireSyncs;
11014 const uint64_t* pAcquireKeys;
11015 const uint32_t* pAcquireTimeouts;
11016 uint32_t releaseCount;
11017 const DeviceMemory* pReleaseSyncs;
11018 const uint64_t* pReleaseKeys;
11019 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060011020 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070011021#endif /*VK_USE_PLATFORM_WIN32_KHR*/
11022
Mark Youngabc2d6e2017-07-07 07:59:56 -060011023#ifdef VK_USE_PLATFORM_WIN32_KHR
11024 struct ExportSemaphoreWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070011025 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011026 ExportSemaphoreWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
11027 : sType( StructureType::eExportSemaphoreWin32HandleInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070011028 , pNext( nullptr )
11029 , pAttributes( pAttributes_ )
11030 , dwAccess( dwAccess_ )
11031 , name( name_ )
11032 {
11033 }
11034
Mark Youngabc2d6e2017-07-07 07:59:56 -060011035 ExportSemaphoreWin32HandleInfoKHR( VkExportSemaphoreWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011036 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011037 memcpy( this, &rhs, sizeof( ExportSemaphoreWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070011038 }
11039
Mark Youngabc2d6e2017-07-07 07:59:56 -060011040 ExportSemaphoreWin32HandleInfoKHR& operator=( VkExportSemaphoreWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011041 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011042 memcpy( this, &rhs, sizeof( ExportSemaphoreWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070011043 return *this;
11044 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060011045 ExportSemaphoreWin32HandleInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070011046 {
11047 pNext = pNext_;
11048 return *this;
11049 }
11050
Mark Youngabc2d6e2017-07-07 07:59:56 -060011051 ExportSemaphoreWin32HandleInfoKHR& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
Mark Young0f183a82017-02-28 09:58:04 -070011052 {
11053 pAttributes = pAttributes_;
11054 return *this;
11055 }
11056
Mark Youngabc2d6e2017-07-07 07:59:56 -060011057 ExportSemaphoreWin32HandleInfoKHR& setDwAccess( DWORD dwAccess_ )
Mark Young0f183a82017-02-28 09:58:04 -070011058 {
11059 dwAccess = dwAccess_;
11060 return *this;
11061 }
11062
Mark Youngabc2d6e2017-07-07 07:59:56 -060011063 ExportSemaphoreWin32HandleInfoKHR& setName( LPCWSTR name_ )
Mark Young0f183a82017-02-28 09:58:04 -070011064 {
11065 name = name_;
11066 return *this;
11067 }
11068
Mark Youngabc2d6e2017-07-07 07:59:56 -060011069 operator const VkExportSemaphoreWin32HandleInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070011070 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011071 return *reinterpret_cast<const VkExportSemaphoreWin32HandleInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070011072 }
11073
Mark Youngabc2d6e2017-07-07 07:59:56 -060011074 bool operator==( ExportSemaphoreWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011075 {
11076 return ( sType == rhs.sType )
11077 && ( pNext == rhs.pNext )
11078 && ( pAttributes == rhs.pAttributes )
11079 && ( dwAccess == rhs.dwAccess )
11080 && ( name == rhs.name );
11081 }
11082
Mark Youngabc2d6e2017-07-07 07:59:56 -060011083 bool operator!=( ExportSemaphoreWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011084 {
11085 return !operator==( rhs );
11086 }
11087
11088 private:
11089 StructureType sType;
11090
11091 public:
11092 const void* pNext;
11093 const SECURITY_ATTRIBUTES* pAttributes;
11094 DWORD dwAccess;
11095 LPCWSTR name;
11096 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060011097 static_assert( sizeof( ExportSemaphoreWin32HandleInfoKHR ) == sizeof( VkExportSemaphoreWin32HandleInfoKHR ), "struct and wrapper have different size!" );
11098#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070011099
Mark Youngabc2d6e2017-07-07 07:59:56 -060011100#ifdef VK_USE_PLATFORM_WIN32_KHR
11101 struct D3D12FenceSubmitInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070011102 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011103 D3D12FenceSubmitInfoKHR( uint32_t waitSemaphoreValuesCount_ = 0, const uint64_t* pWaitSemaphoreValues_ = nullptr, uint32_t signalSemaphoreValuesCount_ = 0, const uint64_t* pSignalSemaphoreValues_ = nullptr )
11104 : sType( StructureType::eD3D12FenceSubmitInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070011105 , pNext( nullptr )
11106 , waitSemaphoreValuesCount( waitSemaphoreValuesCount_ )
11107 , pWaitSemaphoreValues( pWaitSemaphoreValues_ )
11108 , signalSemaphoreValuesCount( signalSemaphoreValuesCount_ )
11109 , pSignalSemaphoreValues( pSignalSemaphoreValues_ )
11110 {
11111 }
11112
Mark Youngabc2d6e2017-07-07 07:59:56 -060011113 D3D12FenceSubmitInfoKHR( VkD3D12FenceSubmitInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011114 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011115 memcpy( this, &rhs, sizeof( D3D12FenceSubmitInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070011116 }
11117
Mark Youngabc2d6e2017-07-07 07:59:56 -060011118 D3D12FenceSubmitInfoKHR& operator=( VkD3D12FenceSubmitInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011119 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011120 memcpy( this, &rhs, sizeof( D3D12FenceSubmitInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070011121 return *this;
11122 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060011123 D3D12FenceSubmitInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070011124 {
11125 pNext = pNext_;
11126 return *this;
11127 }
11128
Mark Youngabc2d6e2017-07-07 07:59:56 -060011129 D3D12FenceSubmitInfoKHR& setWaitSemaphoreValuesCount( uint32_t waitSemaphoreValuesCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070011130 {
11131 waitSemaphoreValuesCount = waitSemaphoreValuesCount_;
11132 return *this;
11133 }
11134
Mark Youngabc2d6e2017-07-07 07:59:56 -060011135 D3D12FenceSubmitInfoKHR& setPWaitSemaphoreValues( const uint64_t* pWaitSemaphoreValues_ )
Mark Young0f183a82017-02-28 09:58:04 -070011136 {
11137 pWaitSemaphoreValues = pWaitSemaphoreValues_;
11138 return *this;
11139 }
11140
Mark Youngabc2d6e2017-07-07 07:59:56 -060011141 D3D12FenceSubmitInfoKHR& setSignalSemaphoreValuesCount( uint32_t signalSemaphoreValuesCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070011142 {
11143 signalSemaphoreValuesCount = signalSemaphoreValuesCount_;
11144 return *this;
11145 }
11146
Mark Youngabc2d6e2017-07-07 07:59:56 -060011147 D3D12FenceSubmitInfoKHR& setPSignalSemaphoreValues( const uint64_t* pSignalSemaphoreValues_ )
Mark Young0f183a82017-02-28 09:58:04 -070011148 {
11149 pSignalSemaphoreValues = pSignalSemaphoreValues_;
11150 return *this;
11151 }
11152
Mark Youngabc2d6e2017-07-07 07:59:56 -060011153 operator const VkD3D12FenceSubmitInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070011154 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011155 return *reinterpret_cast<const VkD3D12FenceSubmitInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070011156 }
11157
Mark Youngabc2d6e2017-07-07 07:59:56 -060011158 bool operator==( D3D12FenceSubmitInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011159 {
11160 return ( sType == rhs.sType )
11161 && ( pNext == rhs.pNext )
11162 && ( waitSemaphoreValuesCount == rhs.waitSemaphoreValuesCount )
11163 && ( pWaitSemaphoreValues == rhs.pWaitSemaphoreValues )
11164 && ( signalSemaphoreValuesCount == rhs.signalSemaphoreValuesCount )
11165 && ( pSignalSemaphoreValues == rhs.pSignalSemaphoreValues );
11166 }
11167
Mark Youngabc2d6e2017-07-07 07:59:56 -060011168 bool operator!=( D3D12FenceSubmitInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011169 {
11170 return !operator==( rhs );
11171 }
11172
11173 private:
11174 StructureType sType;
11175
11176 public:
11177 const void* pNext;
11178 uint32_t waitSemaphoreValuesCount;
11179 const uint64_t* pWaitSemaphoreValues;
11180 uint32_t signalSemaphoreValuesCount;
11181 const uint64_t* pSignalSemaphoreValues;
11182 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060011183 static_assert( sizeof( D3D12FenceSubmitInfoKHR ) == sizeof( VkD3D12FenceSubmitInfoKHR ), "struct and wrapper have different size!" );
11184#endif /*VK_USE_PLATFORM_WIN32_KHR*/
11185
11186#ifdef VK_USE_PLATFORM_WIN32_KHR
11187 struct ExportFenceWin32HandleInfoKHR
11188 {
11189 ExportFenceWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
11190 : sType( StructureType::eExportFenceWin32HandleInfoKHR )
11191 , pNext( nullptr )
11192 , pAttributes( pAttributes_ )
11193 , dwAccess( dwAccess_ )
11194 , name( name_ )
11195 {
11196 }
11197
11198 ExportFenceWin32HandleInfoKHR( VkExportFenceWin32HandleInfoKHR const & rhs )
11199 {
11200 memcpy( this, &rhs, sizeof( ExportFenceWin32HandleInfoKHR ) );
11201 }
11202
11203 ExportFenceWin32HandleInfoKHR& operator=( VkExportFenceWin32HandleInfoKHR const & rhs )
11204 {
11205 memcpy( this, &rhs, sizeof( ExportFenceWin32HandleInfoKHR ) );
11206 return *this;
11207 }
11208 ExportFenceWin32HandleInfoKHR& setPNext( const void* pNext_ )
11209 {
11210 pNext = pNext_;
11211 return *this;
11212 }
11213
11214 ExportFenceWin32HandleInfoKHR& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
11215 {
11216 pAttributes = pAttributes_;
11217 return *this;
11218 }
11219
11220 ExportFenceWin32HandleInfoKHR& setDwAccess( DWORD dwAccess_ )
11221 {
11222 dwAccess = dwAccess_;
11223 return *this;
11224 }
11225
11226 ExportFenceWin32HandleInfoKHR& setName( LPCWSTR name_ )
11227 {
11228 name = name_;
11229 return *this;
11230 }
11231
11232 operator const VkExportFenceWin32HandleInfoKHR&() const
11233 {
11234 return *reinterpret_cast<const VkExportFenceWin32HandleInfoKHR*>(this);
11235 }
11236
11237 bool operator==( ExportFenceWin32HandleInfoKHR const& rhs ) const
11238 {
11239 return ( sType == rhs.sType )
11240 && ( pNext == rhs.pNext )
11241 && ( pAttributes == rhs.pAttributes )
11242 && ( dwAccess == rhs.dwAccess )
11243 && ( name == rhs.name );
11244 }
11245
11246 bool operator!=( ExportFenceWin32HandleInfoKHR const& rhs ) const
11247 {
11248 return !operator==( rhs );
11249 }
11250
11251 private:
11252 StructureType sType;
11253
11254 public:
11255 const void* pNext;
11256 const SECURITY_ATTRIBUTES* pAttributes;
11257 DWORD dwAccess;
11258 LPCWSTR name;
11259 };
11260 static_assert( sizeof( ExportFenceWin32HandleInfoKHR ) == sizeof( VkExportFenceWin32HandleInfoKHR ), "struct and wrapper have different size!" );
11261#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070011262
11263 struct PhysicalDeviceMultiviewFeaturesKHX
11264 {
11265 PhysicalDeviceMultiviewFeaturesKHX( Bool32 multiview_ = 0, Bool32 multiviewGeometryShader_ = 0, Bool32 multiviewTessellationShader_ = 0 )
11266 : sType( StructureType::ePhysicalDeviceMultiviewFeaturesKHX )
11267 , pNext( nullptr )
11268 , multiview( multiview_ )
11269 , multiviewGeometryShader( multiviewGeometryShader_ )
11270 , multiviewTessellationShader( multiviewTessellationShader_ )
11271 {
11272 }
11273
11274 PhysicalDeviceMultiviewFeaturesKHX( VkPhysicalDeviceMultiviewFeaturesKHX const & rhs )
11275 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011276 memcpy( this, &rhs, sizeof( PhysicalDeviceMultiviewFeaturesKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011277 }
11278
11279 PhysicalDeviceMultiviewFeaturesKHX& operator=( VkPhysicalDeviceMultiviewFeaturesKHX const & rhs )
11280 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011281 memcpy( this, &rhs, sizeof( PhysicalDeviceMultiviewFeaturesKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011282 return *this;
11283 }
Mark Young0f183a82017-02-28 09:58:04 -070011284 PhysicalDeviceMultiviewFeaturesKHX& setPNext( void* pNext_ )
11285 {
11286 pNext = pNext_;
11287 return *this;
11288 }
11289
11290 PhysicalDeviceMultiviewFeaturesKHX& setMultiview( Bool32 multiview_ )
11291 {
11292 multiview = multiview_;
11293 return *this;
11294 }
11295
11296 PhysicalDeviceMultiviewFeaturesKHX& setMultiviewGeometryShader( Bool32 multiviewGeometryShader_ )
11297 {
11298 multiviewGeometryShader = multiviewGeometryShader_;
11299 return *this;
11300 }
11301
11302 PhysicalDeviceMultiviewFeaturesKHX& setMultiviewTessellationShader( Bool32 multiviewTessellationShader_ )
11303 {
11304 multiviewTessellationShader = multiviewTessellationShader_;
11305 return *this;
11306 }
11307
11308 operator const VkPhysicalDeviceMultiviewFeaturesKHX&() const
11309 {
11310 return *reinterpret_cast<const VkPhysicalDeviceMultiviewFeaturesKHX*>(this);
11311 }
11312
11313 bool operator==( PhysicalDeviceMultiviewFeaturesKHX const& rhs ) const
11314 {
11315 return ( sType == rhs.sType )
11316 && ( pNext == rhs.pNext )
11317 && ( multiview == rhs.multiview )
11318 && ( multiviewGeometryShader == rhs.multiviewGeometryShader )
11319 && ( multiviewTessellationShader == rhs.multiviewTessellationShader );
11320 }
11321
11322 bool operator!=( PhysicalDeviceMultiviewFeaturesKHX const& rhs ) const
11323 {
11324 return !operator==( rhs );
11325 }
11326
11327 private:
11328 StructureType sType;
11329
11330 public:
11331 void* pNext;
11332 Bool32 multiview;
11333 Bool32 multiviewGeometryShader;
11334 Bool32 multiviewTessellationShader;
11335 };
11336 static_assert( sizeof( PhysicalDeviceMultiviewFeaturesKHX ) == sizeof( VkPhysicalDeviceMultiviewFeaturesKHX ), "struct and wrapper have different size!" );
11337
11338 struct PhysicalDeviceMultiviewPropertiesKHX
11339 {
11340 operator const VkPhysicalDeviceMultiviewPropertiesKHX&() const
11341 {
11342 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPropertiesKHX*>(this);
11343 }
11344
11345 bool operator==( PhysicalDeviceMultiviewPropertiesKHX const& rhs ) const
11346 {
11347 return ( sType == rhs.sType )
11348 && ( pNext == rhs.pNext )
11349 && ( maxMultiviewViewCount == rhs.maxMultiviewViewCount )
11350 && ( maxMultiviewInstanceIndex == rhs.maxMultiviewInstanceIndex );
11351 }
11352
11353 bool operator!=( PhysicalDeviceMultiviewPropertiesKHX const& rhs ) const
11354 {
11355 return !operator==( rhs );
11356 }
11357
11358 private:
11359 StructureType sType;
11360
11361 public:
11362 void* pNext;
11363 uint32_t maxMultiviewViewCount;
11364 uint32_t maxMultiviewInstanceIndex;
11365 };
11366 static_assert( sizeof( PhysicalDeviceMultiviewPropertiesKHX ) == sizeof( VkPhysicalDeviceMultiviewPropertiesKHX ), "struct and wrapper have different size!" );
11367
11368 struct RenderPassMultiviewCreateInfoKHX
11369 {
11370 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 )
11371 : sType( StructureType::eRenderPassMultiviewCreateInfoKHX )
11372 , pNext( nullptr )
11373 , subpassCount( subpassCount_ )
11374 , pViewMasks( pViewMasks_ )
11375 , dependencyCount( dependencyCount_ )
11376 , pViewOffsets( pViewOffsets_ )
11377 , correlationMaskCount( correlationMaskCount_ )
11378 , pCorrelationMasks( pCorrelationMasks_ )
11379 {
11380 }
11381
11382 RenderPassMultiviewCreateInfoKHX( VkRenderPassMultiviewCreateInfoKHX const & rhs )
11383 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011384 memcpy( this, &rhs, sizeof( RenderPassMultiviewCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011385 }
11386
11387 RenderPassMultiviewCreateInfoKHX& operator=( VkRenderPassMultiviewCreateInfoKHX const & rhs )
11388 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011389 memcpy( this, &rhs, sizeof( RenderPassMultiviewCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011390 return *this;
11391 }
Mark Young0f183a82017-02-28 09:58:04 -070011392 RenderPassMultiviewCreateInfoKHX& setPNext( const void* pNext_ )
11393 {
11394 pNext = pNext_;
11395 return *this;
11396 }
11397
11398 RenderPassMultiviewCreateInfoKHX& setSubpassCount( uint32_t subpassCount_ )
11399 {
11400 subpassCount = subpassCount_;
11401 return *this;
11402 }
11403
11404 RenderPassMultiviewCreateInfoKHX& setPViewMasks( const uint32_t* pViewMasks_ )
11405 {
11406 pViewMasks = pViewMasks_;
11407 return *this;
11408 }
11409
11410 RenderPassMultiviewCreateInfoKHX& setDependencyCount( uint32_t dependencyCount_ )
11411 {
11412 dependencyCount = dependencyCount_;
11413 return *this;
11414 }
11415
11416 RenderPassMultiviewCreateInfoKHX& setPViewOffsets( const int32_t* pViewOffsets_ )
11417 {
11418 pViewOffsets = pViewOffsets_;
11419 return *this;
11420 }
11421
11422 RenderPassMultiviewCreateInfoKHX& setCorrelationMaskCount( uint32_t correlationMaskCount_ )
11423 {
11424 correlationMaskCount = correlationMaskCount_;
11425 return *this;
11426 }
11427
11428 RenderPassMultiviewCreateInfoKHX& setPCorrelationMasks( const uint32_t* pCorrelationMasks_ )
11429 {
11430 pCorrelationMasks = pCorrelationMasks_;
11431 return *this;
11432 }
11433
11434 operator const VkRenderPassMultiviewCreateInfoKHX&() const
11435 {
11436 return *reinterpret_cast<const VkRenderPassMultiviewCreateInfoKHX*>(this);
11437 }
11438
11439 bool operator==( RenderPassMultiviewCreateInfoKHX const& rhs ) const
11440 {
11441 return ( sType == rhs.sType )
11442 && ( pNext == rhs.pNext )
11443 && ( subpassCount == rhs.subpassCount )
11444 && ( pViewMasks == rhs.pViewMasks )
11445 && ( dependencyCount == rhs.dependencyCount )
11446 && ( pViewOffsets == rhs.pViewOffsets )
11447 && ( correlationMaskCount == rhs.correlationMaskCount )
11448 && ( pCorrelationMasks == rhs.pCorrelationMasks );
11449 }
11450
11451 bool operator!=( RenderPassMultiviewCreateInfoKHX const& rhs ) const
11452 {
11453 return !operator==( rhs );
11454 }
11455
11456 private:
11457 StructureType sType;
11458
11459 public:
11460 const void* pNext;
11461 uint32_t subpassCount;
11462 const uint32_t* pViewMasks;
11463 uint32_t dependencyCount;
11464 const int32_t* pViewOffsets;
11465 uint32_t correlationMaskCount;
11466 const uint32_t* pCorrelationMasks;
11467 };
11468 static_assert( sizeof( RenderPassMultiviewCreateInfoKHX ) == sizeof( VkRenderPassMultiviewCreateInfoKHX ), "struct and wrapper have different size!" );
11469
Lenny Komowb79f04a2017-09-18 17:07:00 -060011470 struct BindBufferMemoryInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070011471 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011472 BindBufferMemoryInfoKHR( Buffer buffer_ = Buffer(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0 )
11473 : sType( StructureType::eBindBufferMemoryInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070011474 , pNext( nullptr )
11475 , buffer( buffer_ )
11476 , memory( memory_ )
11477 , memoryOffset( memoryOffset_ )
Mark Young0f183a82017-02-28 09:58:04 -070011478 {
11479 }
11480
Lenny Komowb79f04a2017-09-18 17:07:00 -060011481 BindBufferMemoryInfoKHR( VkBindBufferMemoryInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011482 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011483 memcpy( this, &rhs, sizeof( BindBufferMemoryInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070011484 }
11485
Lenny Komowb79f04a2017-09-18 17:07:00 -060011486 BindBufferMemoryInfoKHR& operator=( VkBindBufferMemoryInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011487 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011488 memcpy( this, &rhs, sizeof( BindBufferMemoryInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070011489 return *this;
11490 }
Lenny Komowb79f04a2017-09-18 17:07:00 -060011491 BindBufferMemoryInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070011492 {
11493 pNext = pNext_;
11494 return *this;
11495 }
11496
Lenny Komowb79f04a2017-09-18 17:07:00 -060011497 BindBufferMemoryInfoKHR& setBuffer( Buffer buffer_ )
Mark Young0f183a82017-02-28 09:58:04 -070011498 {
11499 buffer = buffer_;
11500 return *this;
11501 }
11502
Lenny Komowb79f04a2017-09-18 17:07:00 -060011503 BindBufferMemoryInfoKHR& setMemory( DeviceMemory memory_ )
Mark Young0f183a82017-02-28 09:58:04 -070011504 {
11505 memory = memory_;
11506 return *this;
11507 }
11508
Lenny Komowb79f04a2017-09-18 17:07:00 -060011509 BindBufferMemoryInfoKHR& setMemoryOffset( DeviceSize memoryOffset_ )
Mark Young0f183a82017-02-28 09:58:04 -070011510 {
11511 memoryOffset = memoryOffset_;
11512 return *this;
11513 }
11514
Lenny Komowb79f04a2017-09-18 17:07:00 -060011515 operator const VkBindBufferMemoryInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070011516 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011517 return *reinterpret_cast<const VkBindBufferMemoryInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070011518 }
11519
Lenny Komowb79f04a2017-09-18 17:07:00 -060011520 bool operator==( BindBufferMemoryInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011521 {
11522 return ( sType == rhs.sType )
11523 && ( pNext == rhs.pNext )
11524 && ( buffer == rhs.buffer )
11525 && ( memory == rhs.memory )
Lenny Komowb79f04a2017-09-18 17:07:00 -060011526 && ( memoryOffset == rhs.memoryOffset );
Mark Young0f183a82017-02-28 09:58:04 -070011527 }
11528
Lenny Komowb79f04a2017-09-18 17:07:00 -060011529 bool operator!=( BindBufferMemoryInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011530 {
11531 return !operator==( rhs );
11532 }
11533
11534 private:
11535 StructureType sType;
11536
11537 public:
11538 const void* pNext;
11539 Buffer buffer;
11540 DeviceMemory memory;
11541 DeviceSize memoryOffset;
Mark Young0f183a82017-02-28 09:58:04 -070011542 };
Lenny Komowb79f04a2017-09-18 17:07:00 -060011543 static_assert( sizeof( BindBufferMemoryInfoKHR ) == sizeof( VkBindBufferMemoryInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070011544
Lenny Komowb79f04a2017-09-18 17:07:00 -060011545 struct BindBufferMemoryDeviceGroupInfoKHX
Mark Young0f183a82017-02-28 09:58:04 -070011546 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011547 BindBufferMemoryDeviceGroupInfoKHX( uint32_t deviceIndexCount_ = 0, const uint32_t* pDeviceIndices_ = nullptr )
11548 : sType( StructureType::eBindBufferMemoryDeviceGroupInfoKHX )
Mark Young0f183a82017-02-28 09:58:04 -070011549 , pNext( nullptr )
Mark Young0f183a82017-02-28 09:58:04 -070011550 , deviceIndexCount( deviceIndexCount_ )
11551 , pDeviceIndices( pDeviceIndices_ )
Mark Young0f183a82017-02-28 09:58:04 -070011552 {
11553 }
11554
Lenny Komowb79f04a2017-09-18 17:07:00 -060011555 BindBufferMemoryDeviceGroupInfoKHX( VkBindBufferMemoryDeviceGroupInfoKHX const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011556 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011557 memcpy( this, &rhs, sizeof( BindBufferMemoryDeviceGroupInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011558 }
11559
Lenny Komowb79f04a2017-09-18 17:07:00 -060011560 BindBufferMemoryDeviceGroupInfoKHX& operator=( VkBindBufferMemoryDeviceGroupInfoKHX const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011561 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011562 memcpy( this, &rhs, sizeof( BindBufferMemoryDeviceGroupInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011563 return *this;
11564 }
Lenny Komowb79f04a2017-09-18 17:07:00 -060011565 BindBufferMemoryDeviceGroupInfoKHX& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070011566 {
11567 pNext = pNext_;
11568 return *this;
11569 }
11570
Lenny Komowb79f04a2017-09-18 17:07:00 -060011571 BindBufferMemoryDeviceGroupInfoKHX& setDeviceIndexCount( uint32_t deviceIndexCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070011572 {
11573 deviceIndexCount = deviceIndexCount_;
11574 return *this;
11575 }
11576
Lenny Komowb79f04a2017-09-18 17:07:00 -060011577 BindBufferMemoryDeviceGroupInfoKHX& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
Mark Young0f183a82017-02-28 09:58:04 -070011578 {
11579 pDeviceIndices = pDeviceIndices_;
11580 return *this;
11581 }
11582
Lenny Komowb79f04a2017-09-18 17:07:00 -060011583 operator const VkBindBufferMemoryDeviceGroupInfoKHX&() const
Mark Young0f183a82017-02-28 09:58:04 -070011584 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011585 return *reinterpret_cast<const VkBindBufferMemoryDeviceGroupInfoKHX*>(this);
11586 }
11587
11588 bool operator==( BindBufferMemoryDeviceGroupInfoKHX const& rhs ) const
11589 {
11590 return ( sType == rhs.sType )
11591 && ( pNext == rhs.pNext )
11592 && ( deviceIndexCount == rhs.deviceIndexCount )
11593 && ( pDeviceIndices == rhs.pDeviceIndices );
11594 }
11595
11596 bool operator!=( BindBufferMemoryDeviceGroupInfoKHX const& rhs ) const
11597 {
11598 return !operator==( rhs );
11599 }
11600
11601 private:
11602 StructureType sType;
11603
11604 public:
11605 const void* pNext;
11606 uint32_t deviceIndexCount;
11607 const uint32_t* pDeviceIndices;
11608 };
11609 static_assert( sizeof( BindBufferMemoryDeviceGroupInfoKHX ) == sizeof( VkBindBufferMemoryDeviceGroupInfoKHX ), "struct and wrapper have different size!" );
11610
11611 struct BindImageMemoryInfoKHR
11612 {
11613 BindImageMemoryInfoKHR( Image image_ = Image(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0 )
11614 : sType( StructureType::eBindImageMemoryInfoKHR )
11615 , pNext( nullptr )
11616 , image( image_ )
11617 , memory( memory_ )
11618 , memoryOffset( memoryOffset_ )
11619 {
11620 }
11621
11622 BindImageMemoryInfoKHR( VkBindImageMemoryInfoKHR const & rhs )
11623 {
11624 memcpy( this, &rhs, sizeof( BindImageMemoryInfoKHR ) );
11625 }
11626
11627 BindImageMemoryInfoKHR& operator=( VkBindImageMemoryInfoKHR const & rhs )
11628 {
11629 memcpy( this, &rhs, sizeof( BindImageMemoryInfoKHR ) );
11630 return *this;
11631 }
11632 BindImageMemoryInfoKHR& setPNext( const void* pNext_ )
11633 {
11634 pNext = pNext_;
Mark Young0f183a82017-02-28 09:58:04 -070011635 return *this;
11636 }
11637
Lenny Komowb79f04a2017-09-18 17:07:00 -060011638 BindImageMemoryInfoKHR& setImage( Image image_ )
Mark Young0f183a82017-02-28 09:58:04 -070011639 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011640 image = image_;
Mark Young0f183a82017-02-28 09:58:04 -070011641 return *this;
11642 }
11643
Lenny Komowb79f04a2017-09-18 17:07:00 -060011644 BindImageMemoryInfoKHR& setMemory( DeviceMemory memory_ )
Mark Young0f183a82017-02-28 09:58:04 -070011645 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011646 memory = memory_;
11647 return *this;
Mark Young0f183a82017-02-28 09:58:04 -070011648 }
11649
Lenny Komowb79f04a2017-09-18 17:07:00 -060011650 BindImageMemoryInfoKHR& setMemoryOffset( DeviceSize memoryOffset_ )
11651 {
11652 memoryOffset = memoryOffset_;
11653 return *this;
11654 }
11655
11656 operator const VkBindImageMemoryInfoKHR&() const
11657 {
11658 return *reinterpret_cast<const VkBindImageMemoryInfoKHR*>(this);
11659 }
11660
11661 bool operator==( BindImageMemoryInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011662 {
11663 return ( sType == rhs.sType )
11664 && ( pNext == rhs.pNext )
11665 && ( image == rhs.image )
11666 && ( memory == rhs.memory )
Lenny Komowb79f04a2017-09-18 17:07:00 -060011667 && ( memoryOffset == rhs.memoryOffset );
Mark Young0f183a82017-02-28 09:58:04 -070011668 }
11669
Lenny Komowb79f04a2017-09-18 17:07:00 -060011670 bool operator!=( BindImageMemoryInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011671 {
11672 return !operator==( rhs );
11673 }
11674
11675 private:
11676 StructureType sType;
11677
11678 public:
11679 const void* pNext;
11680 Image image;
11681 DeviceMemory memory;
11682 DeviceSize memoryOffset;
Lenny Komowb79f04a2017-09-18 17:07:00 -060011683 };
11684 static_assert( sizeof( BindImageMemoryInfoKHR ) == sizeof( VkBindImageMemoryInfoKHR ), "struct and wrapper have different size!" );
11685
11686 struct BindImageMemoryDeviceGroupInfoKHX
11687 {
11688 BindImageMemoryDeviceGroupInfoKHX( uint32_t deviceIndexCount_ = 0, const uint32_t* pDeviceIndices_ = nullptr, uint32_t SFRRectCount_ = 0, const Rect2D* pSFRRects_ = nullptr )
11689 : sType( StructureType::eBindImageMemoryDeviceGroupInfoKHX )
11690 , pNext( nullptr )
11691 , deviceIndexCount( deviceIndexCount_ )
11692 , pDeviceIndices( pDeviceIndices_ )
11693 , SFRRectCount( SFRRectCount_ )
11694 , pSFRRects( pSFRRects_ )
11695 {
11696 }
11697
11698 BindImageMemoryDeviceGroupInfoKHX( VkBindImageMemoryDeviceGroupInfoKHX const & rhs )
11699 {
11700 memcpy( this, &rhs, sizeof( BindImageMemoryDeviceGroupInfoKHX ) );
11701 }
11702
11703 BindImageMemoryDeviceGroupInfoKHX& operator=( VkBindImageMemoryDeviceGroupInfoKHX const & rhs )
11704 {
11705 memcpy( this, &rhs, sizeof( BindImageMemoryDeviceGroupInfoKHX ) );
11706 return *this;
11707 }
11708 BindImageMemoryDeviceGroupInfoKHX& setPNext( const void* pNext_ )
11709 {
11710 pNext = pNext_;
11711 return *this;
11712 }
11713
11714 BindImageMemoryDeviceGroupInfoKHX& setDeviceIndexCount( uint32_t deviceIndexCount_ )
11715 {
11716 deviceIndexCount = deviceIndexCount_;
11717 return *this;
11718 }
11719
11720 BindImageMemoryDeviceGroupInfoKHX& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
11721 {
11722 pDeviceIndices = pDeviceIndices_;
11723 return *this;
11724 }
11725
11726 BindImageMemoryDeviceGroupInfoKHX& setSFRRectCount( uint32_t SFRRectCount_ )
11727 {
11728 SFRRectCount = SFRRectCount_;
11729 return *this;
11730 }
11731
11732 BindImageMemoryDeviceGroupInfoKHX& setPSFRRects( const Rect2D* pSFRRects_ )
11733 {
11734 pSFRRects = pSFRRects_;
11735 return *this;
11736 }
11737
11738 operator const VkBindImageMemoryDeviceGroupInfoKHX&() const
11739 {
11740 return *reinterpret_cast<const VkBindImageMemoryDeviceGroupInfoKHX*>(this);
11741 }
11742
11743 bool operator==( BindImageMemoryDeviceGroupInfoKHX const& rhs ) const
11744 {
11745 return ( sType == rhs.sType )
11746 && ( pNext == rhs.pNext )
11747 && ( deviceIndexCount == rhs.deviceIndexCount )
11748 && ( pDeviceIndices == rhs.pDeviceIndices )
11749 && ( SFRRectCount == rhs.SFRRectCount )
11750 && ( pSFRRects == rhs.pSFRRects );
11751 }
11752
11753 bool operator!=( BindImageMemoryDeviceGroupInfoKHX const& rhs ) const
11754 {
11755 return !operator==( rhs );
11756 }
11757
11758 private:
11759 StructureType sType;
11760
11761 public:
11762 const void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070011763 uint32_t deviceIndexCount;
11764 const uint32_t* pDeviceIndices;
11765 uint32_t SFRRectCount;
11766 const Rect2D* pSFRRects;
11767 };
Lenny Komowb79f04a2017-09-18 17:07:00 -060011768 static_assert( sizeof( BindImageMemoryDeviceGroupInfoKHX ) == sizeof( VkBindImageMemoryDeviceGroupInfoKHX ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070011769
11770 struct DeviceGroupRenderPassBeginInfoKHX
11771 {
11772 DeviceGroupRenderPassBeginInfoKHX( uint32_t deviceMask_ = 0, uint32_t deviceRenderAreaCount_ = 0, const Rect2D* pDeviceRenderAreas_ = nullptr )
11773 : sType( StructureType::eDeviceGroupRenderPassBeginInfoKHX )
11774 , pNext( nullptr )
11775 , deviceMask( deviceMask_ )
11776 , deviceRenderAreaCount( deviceRenderAreaCount_ )
11777 , pDeviceRenderAreas( pDeviceRenderAreas_ )
11778 {
11779 }
11780
11781 DeviceGroupRenderPassBeginInfoKHX( VkDeviceGroupRenderPassBeginInfoKHX const & rhs )
11782 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011783 memcpy( this, &rhs, sizeof( DeviceGroupRenderPassBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011784 }
11785
11786 DeviceGroupRenderPassBeginInfoKHX& operator=( VkDeviceGroupRenderPassBeginInfoKHX const & rhs )
11787 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011788 memcpy( this, &rhs, sizeof( DeviceGroupRenderPassBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011789 return *this;
11790 }
Mark Young0f183a82017-02-28 09:58:04 -070011791 DeviceGroupRenderPassBeginInfoKHX& setPNext( const void* pNext_ )
11792 {
11793 pNext = pNext_;
11794 return *this;
11795 }
11796
11797 DeviceGroupRenderPassBeginInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11798 {
11799 deviceMask = deviceMask_;
11800 return *this;
11801 }
11802
11803 DeviceGroupRenderPassBeginInfoKHX& setDeviceRenderAreaCount( uint32_t deviceRenderAreaCount_ )
11804 {
11805 deviceRenderAreaCount = deviceRenderAreaCount_;
11806 return *this;
11807 }
11808
11809 DeviceGroupRenderPassBeginInfoKHX& setPDeviceRenderAreas( const Rect2D* pDeviceRenderAreas_ )
11810 {
11811 pDeviceRenderAreas = pDeviceRenderAreas_;
11812 return *this;
11813 }
11814
11815 operator const VkDeviceGroupRenderPassBeginInfoKHX&() const
11816 {
11817 return *reinterpret_cast<const VkDeviceGroupRenderPassBeginInfoKHX*>(this);
11818 }
11819
11820 bool operator==( DeviceGroupRenderPassBeginInfoKHX const& rhs ) const
11821 {
11822 return ( sType == rhs.sType )
11823 && ( pNext == rhs.pNext )
11824 && ( deviceMask == rhs.deviceMask )
11825 && ( deviceRenderAreaCount == rhs.deviceRenderAreaCount )
11826 && ( pDeviceRenderAreas == rhs.pDeviceRenderAreas );
11827 }
11828
11829 bool operator!=( DeviceGroupRenderPassBeginInfoKHX const& rhs ) const
11830 {
11831 return !operator==( rhs );
11832 }
11833
11834 private:
11835 StructureType sType;
11836
11837 public:
11838 const void* pNext;
11839 uint32_t deviceMask;
11840 uint32_t deviceRenderAreaCount;
11841 const Rect2D* pDeviceRenderAreas;
11842 };
11843 static_assert( sizeof( DeviceGroupRenderPassBeginInfoKHX ) == sizeof( VkDeviceGroupRenderPassBeginInfoKHX ), "struct and wrapper have different size!" );
11844
11845 struct DeviceGroupCommandBufferBeginInfoKHX
11846 {
11847 DeviceGroupCommandBufferBeginInfoKHX( uint32_t deviceMask_ = 0 )
11848 : sType( StructureType::eDeviceGroupCommandBufferBeginInfoKHX )
11849 , pNext( nullptr )
11850 , deviceMask( deviceMask_ )
11851 {
11852 }
11853
11854 DeviceGroupCommandBufferBeginInfoKHX( VkDeviceGroupCommandBufferBeginInfoKHX const & rhs )
11855 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011856 memcpy( this, &rhs, sizeof( DeviceGroupCommandBufferBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011857 }
11858
11859 DeviceGroupCommandBufferBeginInfoKHX& operator=( VkDeviceGroupCommandBufferBeginInfoKHX const & rhs )
11860 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011861 memcpy( this, &rhs, sizeof( DeviceGroupCommandBufferBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011862 return *this;
11863 }
Mark Young0f183a82017-02-28 09:58:04 -070011864 DeviceGroupCommandBufferBeginInfoKHX& setPNext( const void* pNext_ )
11865 {
11866 pNext = pNext_;
11867 return *this;
11868 }
11869
11870 DeviceGroupCommandBufferBeginInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11871 {
11872 deviceMask = deviceMask_;
11873 return *this;
11874 }
11875
11876 operator const VkDeviceGroupCommandBufferBeginInfoKHX&() const
11877 {
11878 return *reinterpret_cast<const VkDeviceGroupCommandBufferBeginInfoKHX*>(this);
11879 }
11880
11881 bool operator==( DeviceGroupCommandBufferBeginInfoKHX const& rhs ) const
11882 {
11883 return ( sType == rhs.sType )
11884 && ( pNext == rhs.pNext )
11885 && ( deviceMask == rhs.deviceMask );
11886 }
11887
11888 bool operator!=( DeviceGroupCommandBufferBeginInfoKHX const& rhs ) const
11889 {
11890 return !operator==( rhs );
11891 }
11892
11893 private:
11894 StructureType sType;
11895
11896 public:
11897 const void* pNext;
11898 uint32_t deviceMask;
11899 };
11900 static_assert( sizeof( DeviceGroupCommandBufferBeginInfoKHX ) == sizeof( VkDeviceGroupCommandBufferBeginInfoKHX ), "struct and wrapper have different size!" );
11901
11902 struct DeviceGroupSubmitInfoKHX
11903 {
11904 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 )
11905 : sType( StructureType::eDeviceGroupSubmitInfoKHX )
11906 , pNext( nullptr )
11907 , waitSemaphoreCount( waitSemaphoreCount_ )
11908 , pWaitSemaphoreDeviceIndices( pWaitSemaphoreDeviceIndices_ )
11909 , commandBufferCount( commandBufferCount_ )
11910 , pCommandBufferDeviceMasks( pCommandBufferDeviceMasks_ )
11911 , signalSemaphoreCount( signalSemaphoreCount_ )
11912 , pSignalSemaphoreDeviceIndices( pSignalSemaphoreDeviceIndices_ )
11913 {
11914 }
11915
11916 DeviceGroupSubmitInfoKHX( VkDeviceGroupSubmitInfoKHX const & rhs )
11917 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011918 memcpy( this, &rhs, sizeof( DeviceGroupSubmitInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011919 }
11920
11921 DeviceGroupSubmitInfoKHX& operator=( VkDeviceGroupSubmitInfoKHX const & rhs )
11922 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011923 memcpy( this, &rhs, sizeof( DeviceGroupSubmitInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011924 return *this;
11925 }
Mark Young0f183a82017-02-28 09:58:04 -070011926 DeviceGroupSubmitInfoKHX& setPNext( const void* pNext_ )
11927 {
11928 pNext = pNext_;
11929 return *this;
11930 }
11931
11932 DeviceGroupSubmitInfoKHX& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
11933 {
11934 waitSemaphoreCount = waitSemaphoreCount_;
11935 return *this;
11936 }
11937
11938 DeviceGroupSubmitInfoKHX& setPWaitSemaphoreDeviceIndices( const uint32_t* pWaitSemaphoreDeviceIndices_ )
11939 {
11940 pWaitSemaphoreDeviceIndices = pWaitSemaphoreDeviceIndices_;
11941 return *this;
11942 }
11943
11944 DeviceGroupSubmitInfoKHX& setCommandBufferCount( uint32_t commandBufferCount_ )
11945 {
11946 commandBufferCount = commandBufferCount_;
11947 return *this;
11948 }
11949
11950 DeviceGroupSubmitInfoKHX& setPCommandBufferDeviceMasks( const uint32_t* pCommandBufferDeviceMasks_ )
11951 {
11952 pCommandBufferDeviceMasks = pCommandBufferDeviceMasks_;
11953 return *this;
11954 }
11955
11956 DeviceGroupSubmitInfoKHX& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
11957 {
11958 signalSemaphoreCount = signalSemaphoreCount_;
11959 return *this;
11960 }
11961
11962 DeviceGroupSubmitInfoKHX& setPSignalSemaphoreDeviceIndices( const uint32_t* pSignalSemaphoreDeviceIndices_ )
11963 {
11964 pSignalSemaphoreDeviceIndices = pSignalSemaphoreDeviceIndices_;
11965 return *this;
11966 }
11967
11968 operator const VkDeviceGroupSubmitInfoKHX&() const
11969 {
11970 return *reinterpret_cast<const VkDeviceGroupSubmitInfoKHX*>(this);
11971 }
11972
11973 bool operator==( DeviceGroupSubmitInfoKHX const& rhs ) const
11974 {
11975 return ( sType == rhs.sType )
11976 && ( pNext == rhs.pNext )
11977 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
11978 && ( pWaitSemaphoreDeviceIndices == rhs.pWaitSemaphoreDeviceIndices )
11979 && ( commandBufferCount == rhs.commandBufferCount )
11980 && ( pCommandBufferDeviceMasks == rhs.pCommandBufferDeviceMasks )
11981 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
11982 && ( pSignalSemaphoreDeviceIndices == rhs.pSignalSemaphoreDeviceIndices );
11983 }
11984
11985 bool operator!=( DeviceGroupSubmitInfoKHX const& rhs ) const
11986 {
11987 return !operator==( rhs );
11988 }
11989
11990 private:
11991 StructureType sType;
11992
11993 public:
11994 const void* pNext;
11995 uint32_t waitSemaphoreCount;
11996 const uint32_t* pWaitSemaphoreDeviceIndices;
11997 uint32_t commandBufferCount;
11998 const uint32_t* pCommandBufferDeviceMasks;
11999 uint32_t signalSemaphoreCount;
12000 const uint32_t* pSignalSemaphoreDeviceIndices;
12001 };
12002 static_assert( sizeof( DeviceGroupSubmitInfoKHX ) == sizeof( VkDeviceGroupSubmitInfoKHX ), "struct and wrapper have different size!" );
12003
12004 struct DeviceGroupBindSparseInfoKHX
12005 {
12006 DeviceGroupBindSparseInfoKHX( uint32_t resourceDeviceIndex_ = 0, uint32_t memoryDeviceIndex_ = 0 )
12007 : sType( StructureType::eDeviceGroupBindSparseInfoKHX )
12008 , pNext( nullptr )
12009 , resourceDeviceIndex( resourceDeviceIndex_ )
12010 , memoryDeviceIndex( memoryDeviceIndex_ )
12011 {
12012 }
12013
12014 DeviceGroupBindSparseInfoKHX( VkDeviceGroupBindSparseInfoKHX const & rhs )
12015 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012016 memcpy( this, &rhs, sizeof( DeviceGroupBindSparseInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012017 }
12018
12019 DeviceGroupBindSparseInfoKHX& operator=( VkDeviceGroupBindSparseInfoKHX const & rhs )
12020 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012021 memcpy( this, &rhs, sizeof( DeviceGroupBindSparseInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012022 return *this;
12023 }
Mark Young0f183a82017-02-28 09:58:04 -070012024 DeviceGroupBindSparseInfoKHX& setPNext( const void* pNext_ )
12025 {
12026 pNext = pNext_;
12027 return *this;
12028 }
12029
12030 DeviceGroupBindSparseInfoKHX& setResourceDeviceIndex( uint32_t resourceDeviceIndex_ )
12031 {
12032 resourceDeviceIndex = resourceDeviceIndex_;
12033 return *this;
12034 }
12035
12036 DeviceGroupBindSparseInfoKHX& setMemoryDeviceIndex( uint32_t memoryDeviceIndex_ )
12037 {
12038 memoryDeviceIndex = memoryDeviceIndex_;
12039 return *this;
12040 }
12041
12042 operator const VkDeviceGroupBindSparseInfoKHX&() const
12043 {
12044 return *reinterpret_cast<const VkDeviceGroupBindSparseInfoKHX*>(this);
12045 }
12046
12047 bool operator==( DeviceGroupBindSparseInfoKHX const& rhs ) const
12048 {
12049 return ( sType == rhs.sType )
12050 && ( pNext == rhs.pNext )
12051 && ( resourceDeviceIndex == rhs.resourceDeviceIndex )
12052 && ( memoryDeviceIndex == rhs.memoryDeviceIndex );
12053 }
12054
12055 bool operator!=( DeviceGroupBindSparseInfoKHX const& rhs ) const
12056 {
12057 return !operator==( rhs );
12058 }
12059
12060 private:
12061 StructureType sType;
12062
12063 public:
12064 const void* pNext;
12065 uint32_t resourceDeviceIndex;
12066 uint32_t memoryDeviceIndex;
12067 };
12068 static_assert( sizeof( DeviceGroupBindSparseInfoKHX ) == sizeof( VkDeviceGroupBindSparseInfoKHX ), "struct and wrapper have different size!" );
12069
12070 struct ImageSwapchainCreateInfoKHX
12071 {
12072 ImageSwapchainCreateInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR() )
12073 : sType( StructureType::eImageSwapchainCreateInfoKHX )
12074 , pNext( nullptr )
12075 , swapchain( swapchain_ )
12076 {
12077 }
12078
12079 ImageSwapchainCreateInfoKHX( VkImageSwapchainCreateInfoKHX const & rhs )
12080 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012081 memcpy( this, &rhs, sizeof( ImageSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012082 }
12083
12084 ImageSwapchainCreateInfoKHX& operator=( VkImageSwapchainCreateInfoKHX const & rhs )
12085 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012086 memcpy( this, &rhs, sizeof( ImageSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012087 return *this;
12088 }
Mark Young0f183a82017-02-28 09:58:04 -070012089 ImageSwapchainCreateInfoKHX& setPNext( const void* pNext_ )
12090 {
12091 pNext = pNext_;
12092 return *this;
12093 }
12094
12095 ImageSwapchainCreateInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
12096 {
12097 swapchain = swapchain_;
12098 return *this;
12099 }
12100
12101 operator const VkImageSwapchainCreateInfoKHX&() const
12102 {
12103 return *reinterpret_cast<const VkImageSwapchainCreateInfoKHX*>(this);
12104 }
12105
12106 bool operator==( ImageSwapchainCreateInfoKHX const& rhs ) const
12107 {
12108 return ( sType == rhs.sType )
12109 && ( pNext == rhs.pNext )
12110 && ( swapchain == rhs.swapchain );
12111 }
12112
12113 bool operator!=( ImageSwapchainCreateInfoKHX const& rhs ) const
12114 {
12115 return !operator==( rhs );
12116 }
12117
12118 private:
12119 StructureType sType;
12120
12121 public:
12122 const void* pNext;
12123 SwapchainKHR swapchain;
12124 };
12125 static_assert( sizeof( ImageSwapchainCreateInfoKHX ) == sizeof( VkImageSwapchainCreateInfoKHX ), "struct and wrapper have different size!" );
12126
12127 struct BindImageMemorySwapchainInfoKHX
12128 {
12129 BindImageMemorySwapchainInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR(), uint32_t imageIndex_ = 0 )
12130 : sType( StructureType::eBindImageMemorySwapchainInfoKHX )
12131 , pNext( nullptr )
12132 , swapchain( swapchain_ )
12133 , imageIndex( imageIndex_ )
12134 {
12135 }
12136
12137 BindImageMemorySwapchainInfoKHX( VkBindImageMemorySwapchainInfoKHX const & rhs )
12138 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012139 memcpy( this, &rhs, sizeof( BindImageMemorySwapchainInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012140 }
12141
12142 BindImageMemorySwapchainInfoKHX& operator=( VkBindImageMemorySwapchainInfoKHX const & rhs )
12143 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012144 memcpy( this, &rhs, sizeof( BindImageMemorySwapchainInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012145 return *this;
12146 }
Mark Young0f183a82017-02-28 09:58:04 -070012147 BindImageMemorySwapchainInfoKHX& setPNext( const void* pNext_ )
12148 {
12149 pNext = pNext_;
12150 return *this;
12151 }
12152
12153 BindImageMemorySwapchainInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
12154 {
12155 swapchain = swapchain_;
12156 return *this;
12157 }
12158
12159 BindImageMemorySwapchainInfoKHX& setImageIndex( uint32_t imageIndex_ )
12160 {
12161 imageIndex = imageIndex_;
12162 return *this;
12163 }
12164
12165 operator const VkBindImageMemorySwapchainInfoKHX&() const
12166 {
12167 return *reinterpret_cast<const VkBindImageMemorySwapchainInfoKHX*>(this);
12168 }
12169
12170 bool operator==( BindImageMemorySwapchainInfoKHX const& rhs ) const
12171 {
12172 return ( sType == rhs.sType )
12173 && ( pNext == rhs.pNext )
12174 && ( swapchain == rhs.swapchain )
12175 && ( imageIndex == rhs.imageIndex );
12176 }
12177
12178 bool operator!=( BindImageMemorySwapchainInfoKHX const& rhs ) const
12179 {
12180 return !operator==( rhs );
12181 }
12182
12183 private:
12184 StructureType sType;
12185
12186 public:
12187 const void* pNext;
12188 SwapchainKHR swapchain;
12189 uint32_t imageIndex;
12190 };
12191 static_assert( sizeof( BindImageMemorySwapchainInfoKHX ) == sizeof( VkBindImageMemorySwapchainInfoKHX ), "struct and wrapper have different size!" );
12192
12193 struct AcquireNextImageInfoKHX
12194 {
12195 AcquireNextImageInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR(), uint64_t timeout_ = 0, Semaphore semaphore_ = Semaphore(), Fence fence_ = Fence(), uint32_t deviceMask_ = 0 )
12196 : sType( StructureType::eAcquireNextImageInfoKHX )
12197 , pNext( nullptr )
12198 , swapchain( swapchain_ )
12199 , timeout( timeout_ )
12200 , semaphore( semaphore_ )
12201 , fence( fence_ )
12202 , deviceMask( deviceMask_ )
12203 {
12204 }
12205
12206 AcquireNextImageInfoKHX( VkAcquireNextImageInfoKHX const & rhs )
12207 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012208 memcpy( this, &rhs, sizeof( AcquireNextImageInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012209 }
12210
12211 AcquireNextImageInfoKHX& operator=( VkAcquireNextImageInfoKHX const & rhs )
12212 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012213 memcpy( this, &rhs, sizeof( AcquireNextImageInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012214 return *this;
12215 }
Mark Young0f183a82017-02-28 09:58:04 -070012216 AcquireNextImageInfoKHX& setPNext( const void* pNext_ )
12217 {
12218 pNext = pNext_;
12219 return *this;
12220 }
12221
12222 AcquireNextImageInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
12223 {
12224 swapchain = swapchain_;
12225 return *this;
12226 }
12227
12228 AcquireNextImageInfoKHX& setTimeout( uint64_t timeout_ )
12229 {
12230 timeout = timeout_;
12231 return *this;
12232 }
12233
12234 AcquireNextImageInfoKHX& setSemaphore( Semaphore semaphore_ )
12235 {
12236 semaphore = semaphore_;
12237 return *this;
12238 }
12239
12240 AcquireNextImageInfoKHX& setFence( Fence fence_ )
12241 {
12242 fence = fence_;
12243 return *this;
12244 }
12245
12246 AcquireNextImageInfoKHX& setDeviceMask( uint32_t deviceMask_ )
12247 {
12248 deviceMask = deviceMask_;
12249 return *this;
12250 }
12251
12252 operator const VkAcquireNextImageInfoKHX&() const
12253 {
12254 return *reinterpret_cast<const VkAcquireNextImageInfoKHX*>(this);
12255 }
12256
12257 bool operator==( AcquireNextImageInfoKHX const& rhs ) const
12258 {
12259 return ( sType == rhs.sType )
12260 && ( pNext == rhs.pNext )
12261 && ( swapchain == rhs.swapchain )
12262 && ( timeout == rhs.timeout )
12263 && ( semaphore == rhs.semaphore )
12264 && ( fence == rhs.fence )
12265 && ( deviceMask == rhs.deviceMask );
12266 }
12267
12268 bool operator!=( AcquireNextImageInfoKHX const& rhs ) const
12269 {
12270 return !operator==( rhs );
12271 }
12272
12273 private:
12274 StructureType sType;
12275
12276 public:
12277 const void* pNext;
12278 SwapchainKHR swapchain;
12279 uint64_t timeout;
12280 Semaphore semaphore;
12281 Fence fence;
12282 uint32_t deviceMask;
12283 };
12284 static_assert( sizeof( AcquireNextImageInfoKHX ) == sizeof( VkAcquireNextImageInfoKHX ), "struct and wrapper have different size!" );
12285
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012286 struct HdrMetadataEXT
12287 {
12288 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 )
12289 : sType( StructureType::eHdrMetadataEXT )
12290 , pNext( nullptr )
12291 , displayPrimaryRed( displayPrimaryRed_ )
12292 , displayPrimaryGreen( displayPrimaryGreen_ )
12293 , displayPrimaryBlue( displayPrimaryBlue_ )
12294 , whitePoint( whitePoint_ )
12295 , maxLuminance( maxLuminance_ )
12296 , minLuminance( minLuminance_ )
12297 , maxContentLightLevel( maxContentLightLevel_ )
12298 , maxFrameAverageLightLevel( maxFrameAverageLightLevel_ )
12299 {
12300 }
12301
12302 HdrMetadataEXT( VkHdrMetadataEXT const & rhs )
12303 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012304 memcpy( this, &rhs, sizeof( HdrMetadataEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012305 }
12306
12307 HdrMetadataEXT& operator=( VkHdrMetadataEXT const & rhs )
12308 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012309 memcpy( this, &rhs, sizeof( HdrMetadataEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012310 return *this;
12311 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012312 HdrMetadataEXT& setPNext( const void* pNext_ )
12313 {
12314 pNext = pNext_;
12315 return *this;
12316 }
12317
12318 HdrMetadataEXT& setDisplayPrimaryRed( XYColorEXT displayPrimaryRed_ )
12319 {
12320 displayPrimaryRed = displayPrimaryRed_;
12321 return *this;
12322 }
12323
12324 HdrMetadataEXT& setDisplayPrimaryGreen( XYColorEXT displayPrimaryGreen_ )
12325 {
12326 displayPrimaryGreen = displayPrimaryGreen_;
12327 return *this;
12328 }
12329
12330 HdrMetadataEXT& setDisplayPrimaryBlue( XYColorEXT displayPrimaryBlue_ )
12331 {
12332 displayPrimaryBlue = displayPrimaryBlue_;
12333 return *this;
12334 }
12335
12336 HdrMetadataEXT& setWhitePoint( XYColorEXT whitePoint_ )
12337 {
12338 whitePoint = whitePoint_;
12339 return *this;
12340 }
12341
12342 HdrMetadataEXT& setMaxLuminance( float maxLuminance_ )
12343 {
12344 maxLuminance = maxLuminance_;
12345 return *this;
12346 }
12347
12348 HdrMetadataEXT& setMinLuminance( float minLuminance_ )
12349 {
12350 minLuminance = minLuminance_;
12351 return *this;
12352 }
12353
12354 HdrMetadataEXT& setMaxContentLightLevel( float maxContentLightLevel_ )
12355 {
12356 maxContentLightLevel = maxContentLightLevel_;
12357 return *this;
12358 }
12359
12360 HdrMetadataEXT& setMaxFrameAverageLightLevel( float maxFrameAverageLightLevel_ )
12361 {
12362 maxFrameAverageLightLevel = maxFrameAverageLightLevel_;
12363 return *this;
12364 }
12365
12366 operator const VkHdrMetadataEXT&() const
12367 {
12368 return *reinterpret_cast<const VkHdrMetadataEXT*>(this);
12369 }
12370
12371 bool operator==( HdrMetadataEXT const& rhs ) const
12372 {
12373 return ( sType == rhs.sType )
12374 && ( pNext == rhs.pNext )
12375 && ( displayPrimaryRed == rhs.displayPrimaryRed )
12376 && ( displayPrimaryGreen == rhs.displayPrimaryGreen )
12377 && ( displayPrimaryBlue == rhs.displayPrimaryBlue )
12378 && ( whitePoint == rhs.whitePoint )
12379 && ( maxLuminance == rhs.maxLuminance )
12380 && ( minLuminance == rhs.minLuminance )
12381 && ( maxContentLightLevel == rhs.maxContentLightLevel )
12382 && ( maxFrameAverageLightLevel == rhs.maxFrameAverageLightLevel );
12383 }
12384
12385 bool operator!=( HdrMetadataEXT const& rhs ) const
12386 {
12387 return !operator==( rhs );
12388 }
12389
12390 private:
12391 StructureType sType;
12392
12393 public:
12394 const void* pNext;
12395 XYColorEXT displayPrimaryRed;
12396 XYColorEXT displayPrimaryGreen;
12397 XYColorEXT displayPrimaryBlue;
12398 XYColorEXT whitePoint;
12399 float maxLuminance;
12400 float minLuminance;
12401 float maxContentLightLevel;
12402 float maxFrameAverageLightLevel;
12403 };
12404 static_assert( sizeof( HdrMetadataEXT ) == sizeof( VkHdrMetadataEXT ), "struct and wrapper have different size!" );
12405
12406 struct PresentTimesInfoGOOGLE
12407 {
12408 PresentTimesInfoGOOGLE( uint32_t swapchainCount_ = 0, const PresentTimeGOOGLE* pTimes_ = nullptr )
12409 : sType( StructureType::ePresentTimesInfoGOOGLE )
12410 , pNext( nullptr )
12411 , swapchainCount( swapchainCount_ )
12412 , pTimes( pTimes_ )
12413 {
12414 }
12415
12416 PresentTimesInfoGOOGLE( VkPresentTimesInfoGOOGLE const & rhs )
12417 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012418 memcpy( this, &rhs, sizeof( PresentTimesInfoGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012419 }
12420
12421 PresentTimesInfoGOOGLE& operator=( VkPresentTimesInfoGOOGLE const & rhs )
12422 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012423 memcpy( this, &rhs, sizeof( PresentTimesInfoGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012424 return *this;
12425 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012426 PresentTimesInfoGOOGLE& setPNext( const void* pNext_ )
12427 {
12428 pNext = pNext_;
12429 return *this;
12430 }
12431
12432 PresentTimesInfoGOOGLE& setSwapchainCount( uint32_t swapchainCount_ )
12433 {
12434 swapchainCount = swapchainCount_;
12435 return *this;
12436 }
12437
12438 PresentTimesInfoGOOGLE& setPTimes( const PresentTimeGOOGLE* pTimes_ )
12439 {
12440 pTimes = pTimes_;
12441 return *this;
12442 }
12443
12444 operator const VkPresentTimesInfoGOOGLE&() const
12445 {
12446 return *reinterpret_cast<const VkPresentTimesInfoGOOGLE*>(this);
12447 }
12448
12449 bool operator==( PresentTimesInfoGOOGLE const& rhs ) const
12450 {
12451 return ( sType == rhs.sType )
12452 && ( pNext == rhs.pNext )
12453 && ( swapchainCount == rhs.swapchainCount )
12454 && ( pTimes == rhs.pTimes );
12455 }
12456
12457 bool operator!=( PresentTimesInfoGOOGLE const& rhs ) const
12458 {
12459 return !operator==( rhs );
12460 }
12461
12462 private:
12463 StructureType sType;
12464
12465 public:
12466 const void* pNext;
12467 uint32_t swapchainCount;
12468 const PresentTimeGOOGLE* pTimes;
12469 };
12470 static_assert( sizeof( PresentTimesInfoGOOGLE ) == sizeof( VkPresentTimesInfoGOOGLE ), "struct and wrapper have different size!" );
12471
Mark Young0f183a82017-02-28 09:58:04 -070012472#ifdef VK_USE_PLATFORM_IOS_MVK
12473 struct IOSSurfaceCreateInfoMVK
12474 {
12475 IOSSurfaceCreateInfoMVK( IOSSurfaceCreateFlagsMVK flags_ = IOSSurfaceCreateFlagsMVK(), const void* pView_ = nullptr )
12476 : sType( StructureType::eIOSSurfaceCreateInfoMVK )
12477 , pNext( nullptr )
12478 , flags( flags_ )
12479 , pView( pView_ )
12480 {
12481 }
12482
12483 IOSSurfaceCreateInfoMVK( VkIOSSurfaceCreateInfoMVK const & rhs )
12484 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012485 memcpy( this, &rhs, sizeof( IOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070012486 }
12487
12488 IOSSurfaceCreateInfoMVK& operator=( VkIOSSurfaceCreateInfoMVK const & rhs )
12489 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012490 memcpy( this, &rhs, sizeof( IOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070012491 return *this;
12492 }
Mark Young0f183a82017-02-28 09:58:04 -070012493 IOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
12494 {
12495 pNext = pNext_;
12496 return *this;
12497 }
12498
12499 IOSSurfaceCreateInfoMVK& setFlags( IOSSurfaceCreateFlagsMVK flags_ )
12500 {
12501 flags = flags_;
12502 return *this;
12503 }
12504
12505 IOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
12506 {
12507 pView = pView_;
12508 return *this;
12509 }
12510
12511 operator const VkIOSSurfaceCreateInfoMVK&() const
12512 {
12513 return *reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>(this);
12514 }
12515
12516 bool operator==( IOSSurfaceCreateInfoMVK const& rhs ) const
12517 {
12518 return ( sType == rhs.sType )
12519 && ( pNext == rhs.pNext )
12520 && ( flags == rhs.flags )
12521 && ( pView == rhs.pView );
12522 }
12523
12524 bool operator!=( IOSSurfaceCreateInfoMVK const& rhs ) const
12525 {
12526 return !operator==( rhs );
12527 }
12528
12529 private:
12530 StructureType sType;
12531
12532 public:
12533 const void* pNext;
12534 IOSSurfaceCreateFlagsMVK flags;
12535 const void* pView;
12536 };
12537 static_assert( sizeof( IOSSurfaceCreateInfoMVK ) == sizeof( VkIOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
12538#endif /*VK_USE_PLATFORM_IOS_MVK*/
12539
12540#ifdef VK_USE_PLATFORM_MACOS_MVK
12541 struct MacOSSurfaceCreateInfoMVK
12542 {
12543 MacOSSurfaceCreateInfoMVK( MacOSSurfaceCreateFlagsMVK flags_ = MacOSSurfaceCreateFlagsMVK(), const void* pView_ = nullptr )
12544 : sType( StructureType::eMacOSSurfaceCreateInfoMVK )
12545 , pNext( nullptr )
12546 , flags( flags_ )
12547 , pView( pView_ )
12548 {
12549 }
12550
12551 MacOSSurfaceCreateInfoMVK( VkMacOSSurfaceCreateInfoMVK const & rhs )
12552 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012553 memcpy( this, &rhs, sizeof( MacOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070012554 }
12555
12556 MacOSSurfaceCreateInfoMVK& operator=( VkMacOSSurfaceCreateInfoMVK const & rhs )
12557 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012558 memcpy( this, &rhs, sizeof( MacOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070012559 return *this;
12560 }
Mark Young0f183a82017-02-28 09:58:04 -070012561 MacOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
12562 {
12563 pNext = pNext_;
12564 return *this;
12565 }
12566
12567 MacOSSurfaceCreateInfoMVK& setFlags( MacOSSurfaceCreateFlagsMVK flags_ )
12568 {
12569 flags = flags_;
12570 return *this;
12571 }
12572
12573 MacOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
12574 {
12575 pView = pView_;
12576 return *this;
12577 }
12578
12579 operator const VkMacOSSurfaceCreateInfoMVK&() const
12580 {
12581 return *reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>(this);
12582 }
12583
12584 bool operator==( MacOSSurfaceCreateInfoMVK const& rhs ) const
12585 {
12586 return ( sType == rhs.sType )
12587 && ( pNext == rhs.pNext )
12588 && ( flags == rhs.flags )
12589 && ( pView == rhs.pView );
12590 }
12591
12592 bool operator!=( MacOSSurfaceCreateInfoMVK const& rhs ) const
12593 {
12594 return !operator==( rhs );
12595 }
12596
12597 private:
12598 StructureType sType;
12599
12600 public:
12601 const void* pNext;
12602 MacOSSurfaceCreateFlagsMVK flags;
12603 const void* pView;
12604 };
12605 static_assert( sizeof( MacOSSurfaceCreateInfoMVK ) == sizeof( VkMacOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
12606#endif /*VK_USE_PLATFORM_MACOS_MVK*/
12607
12608 struct PipelineViewportWScalingStateCreateInfoNV
12609 {
12610 PipelineViewportWScalingStateCreateInfoNV( Bool32 viewportWScalingEnable_ = 0, uint32_t viewportCount_ = 0, const ViewportWScalingNV* pViewportWScalings_ = nullptr )
12611 : sType( StructureType::ePipelineViewportWScalingStateCreateInfoNV )
12612 , pNext( nullptr )
12613 , viewportWScalingEnable( viewportWScalingEnable_ )
12614 , viewportCount( viewportCount_ )
12615 , pViewportWScalings( pViewportWScalings_ )
12616 {
12617 }
12618
12619 PipelineViewportWScalingStateCreateInfoNV( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
12620 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012621 memcpy( this, &rhs, sizeof( PipelineViewportWScalingStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070012622 }
12623
12624 PipelineViewportWScalingStateCreateInfoNV& operator=( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
12625 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012626 memcpy( this, &rhs, sizeof( PipelineViewportWScalingStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070012627 return *this;
12628 }
Mark Young0f183a82017-02-28 09:58:04 -070012629 PipelineViewportWScalingStateCreateInfoNV& setPNext( const void* pNext_ )
12630 {
12631 pNext = pNext_;
12632 return *this;
12633 }
12634
12635 PipelineViewportWScalingStateCreateInfoNV& setViewportWScalingEnable( Bool32 viewportWScalingEnable_ )
12636 {
12637 viewportWScalingEnable = viewportWScalingEnable_;
12638 return *this;
12639 }
12640
12641 PipelineViewportWScalingStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
12642 {
12643 viewportCount = viewportCount_;
12644 return *this;
12645 }
12646
12647 PipelineViewportWScalingStateCreateInfoNV& setPViewportWScalings( const ViewportWScalingNV* pViewportWScalings_ )
12648 {
12649 pViewportWScalings = pViewportWScalings_;
12650 return *this;
12651 }
12652
12653 operator const VkPipelineViewportWScalingStateCreateInfoNV&() const
12654 {
12655 return *reinterpret_cast<const VkPipelineViewportWScalingStateCreateInfoNV*>(this);
12656 }
12657
12658 bool operator==( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
12659 {
12660 return ( sType == rhs.sType )
12661 && ( pNext == rhs.pNext )
12662 && ( viewportWScalingEnable == rhs.viewportWScalingEnable )
12663 && ( viewportCount == rhs.viewportCount )
12664 && ( pViewportWScalings == rhs.pViewportWScalings );
12665 }
12666
12667 bool operator!=( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
12668 {
12669 return !operator==( rhs );
12670 }
12671
12672 private:
12673 StructureType sType;
12674
12675 public:
12676 const void* pNext;
12677 Bool32 viewportWScalingEnable;
12678 uint32_t viewportCount;
12679 const ViewportWScalingNV* pViewportWScalings;
12680 };
12681 static_assert( sizeof( PipelineViewportWScalingStateCreateInfoNV ) == sizeof( VkPipelineViewportWScalingStateCreateInfoNV ), "struct and wrapper have different size!" );
12682
12683 struct PhysicalDeviceDiscardRectanglePropertiesEXT
12684 {
12685 PhysicalDeviceDiscardRectanglePropertiesEXT( uint32_t maxDiscardRectangles_ = 0 )
12686 : sType( StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT )
12687 , pNext( nullptr )
12688 , maxDiscardRectangles( maxDiscardRectangles_ )
12689 {
12690 }
12691
12692 PhysicalDeviceDiscardRectanglePropertiesEXT( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
12693 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012694 memcpy( this, &rhs, sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070012695 }
12696
12697 PhysicalDeviceDiscardRectanglePropertiesEXT& operator=( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
12698 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012699 memcpy( this, &rhs, sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070012700 return *this;
12701 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -060012702 PhysicalDeviceDiscardRectanglePropertiesEXT& setPNext( void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070012703 {
12704 pNext = pNext_;
12705 return *this;
12706 }
12707
12708 PhysicalDeviceDiscardRectanglePropertiesEXT& setMaxDiscardRectangles( uint32_t maxDiscardRectangles_ )
12709 {
12710 maxDiscardRectangles = maxDiscardRectangles_;
12711 return *this;
12712 }
12713
12714 operator const VkPhysicalDeviceDiscardRectanglePropertiesEXT&() const
12715 {
12716 return *reinterpret_cast<const VkPhysicalDeviceDiscardRectanglePropertiesEXT*>(this);
12717 }
12718
12719 bool operator==( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
12720 {
12721 return ( sType == rhs.sType )
12722 && ( pNext == rhs.pNext )
12723 && ( maxDiscardRectangles == rhs.maxDiscardRectangles );
12724 }
12725
12726 bool operator!=( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
12727 {
12728 return !operator==( rhs );
12729 }
12730
12731 private:
12732 StructureType sType;
12733
12734 public:
Mark Lobodzinski3289d762017-04-03 08:22:04 -060012735 void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070012736 uint32_t maxDiscardRectangles;
12737 };
12738 static_assert( sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) == sizeof( VkPhysicalDeviceDiscardRectanglePropertiesEXT ), "struct and wrapper have different size!" );
12739
12740 struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
12741 {
12742 operator const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX&() const
12743 {
12744 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX*>(this);
12745 }
12746
12747 bool operator==( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
12748 {
12749 return ( sType == rhs.sType )
12750 && ( pNext == rhs.pNext )
12751 && ( perViewPositionAllComponents == rhs.perViewPositionAllComponents );
12752 }
12753
12754 bool operator!=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
12755 {
12756 return !operator==( rhs );
12757 }
12758
12759 private:
12760 StructureType sType;
12761
12762 public:
12763 void* pNext;
12764 Bool32 perViewPositionAllComponents;
12765 };
12766 static_assert( sizeof( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ) == sizeof( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ), "struct and wrapper have different size!" );
12767
Mark Lobodzinski54385432017-05-15 10:27:52 -060012768 struct PhysicalDeviceSurfaceInfo2KHR
12769 {
12770 PhysicalDeviceSurfaceInfo2KHR( SurfaceKHR surface_ = SurfaceKHR() )
12771 : sType( StructureType::ePhysicalDeviceSurfaceInfo2KHR )
12772 , pNext( nullptr )
12773 , surface( surface_ )
12774 {
12775 }
12776
12777 PhysicalDeviceSurfaceInfo2KHR( VkPhysicalDeviceSurfaceInfo2KHR const & rhs )
12778 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012779 memcpy( this, &rhs, sizeof( PhysicalDeviceSurfaceInfo2KHR ) );
Mark Lobodzinski54385432017-05-15 10:27:52 -060012780 }
12781
12782 PhysicalDeviceSurfaceInfo2KHR& operator=( VkPhysicalDeviceSurfaceInfo2KHR const & rhs )
12783 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012784 memcpy( this, &rhs, sizeof( PhysicalDeviceSurfaceInfo2KHR ) );
Mark Lobodzinski54385432017-05-15 10:27:52 -060012785 return *this;
12786 }
Mark Lobodzinski54385432017-05-15 10:27:52 -060012787 PhysicalDeviceSurfaceInfo2KHR& setPNext( const void* pNext_ )
12788 {
12789 pNext = pNext_;
12790 return *this;
12791 }
12792
12793 PhysicalDeviceSurfaceInfo2KHR& setSurface( SurfaceKHR surface_ )
12794 {
12795 surface = surface_;
12796 return *this;
12797 }
12798
12799 operator const VkPhysicalDeviceSurfaceInfo2KHR&() const
12800 {
12801 return *reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>(this);
12802 }
12803
12804 bool operator==( PhysicalDeviceSurfaceInfo2KHR const& rhs ) const
12805 {
12806 return ( sType == rhs.sType )
12807 && ( pNext == rhs.pNext )
12808 && ( surface == rhs.surface );
12809 }
12810
12811 bool operator!=( PhysicalDeviceSurfaceInfo2KHR const& rhs ) const
12812 {
12813 return !operator==( rhs );
12814 }
12815
12816 private:
12817 StructureType sType;
12818
12819 public:
12820 const void* pNext;
12821 SurfaceKHR surface;
12822 };
12823 static_assert( sizeof( PhysicalDeviceSurfaceInfo2KHR ) == sizeof( VkPhysicalDeviceSurfaceInfo2KHR ), "struct and wrapper have different size!" );
12824
Mark Youngabc2d6e2017-07-07 07:59:56 -060012825 struct PhysicalDevice16BitStorageFeaturesKHR
12826 {
12827 PhysicalDevice16BitStorageFeaturesKHR( Bool32 storageBuffer16BitAccess_ = 0, Bool32 uniformAndStorageBuffer16BitAccess_ = 0, Bool32 storagePushConstant16_ = 0, Bool32 storageInputOutput16_ = 0 )
12828 : sType( StructureType::ePhysicalDevice16BitStorageFeaturesKHR )
12829 , pNext( nullptr )
12830 , storageBuffer16BitAccess( storageBuffer16BitAccess_ )
12831 , uniformAndStorageBuffer16BitAccess( uniformAndStorageBuffer16BitAccess_ )
12832 , storagePushConstant16( storagePushConstant16_ )
12833 , storageInputOutput16( storageInputOutput16_ )
12834 {
12835 }
12836
12837 PhysicalDevice16BitStorageFeaturesKHR( VkPhysicalDevice16BitStorageFeaturesKHR const & rhs )
12838 {
12839 memcpy( this, &rhs, sizeof( PhysicalDevice16BitStorageFeaturesKHR ) );
12840 }
12841
12842 PhysicalDevice16BitStorageFeaturesKHR& operator=( VkPhysicalDevice16BitStorageFeaturesKHR const & rhs )
12843 {
12844 memcpy( this, &rhs, sizeof( PhysicalDevice16BitStorageFeaturesKHR ) );
12845 return *this;
12846 }
12847 PhysicalDevice16BitStorageFeaturesKHR& setPNext( void* pNext_ )
12848 {
12849 pNext = pNext_;
12850 return *this;
12851 }
12852
12853 PhysicalDevice16BitStorageFeaturesKHR& setStorageBuffer16BitAccess( Bool32 storageBuffer16BitAccess_ )
12854 {
12855 storageBuffer16BitAccess = storageBuffer16BitAccess_;
12856 return *this;
12857 }
12858
12859 PhysicalDevice16BitStorageFeaturesKHR& setUniformAndStorageBuffer16BitAccess( Bool32 uniformAndStorageBuffer16BitAccess_ )
12860 {
12861 uniformAndStorageBuffer16BitAccess = uniformAndStorageBuffer16BitAccess_;
12862 return *this;
12863 }
12864
12865 PhysicalDevice16BitStorageFeaturesKHR& setStoragePushConstant16( Bool32 storagePushConstant16_ )
12866 {
12867 storagePushConstant16 = storagePushConstant16_;
12868 return *this;
12869 }
12870
12871 PhysicalDevice16BitStorageFeaturesKHR& setStorageInputOutput16( Bool32 storageInputOutput16_ )
12872 {
12873 storageInputOutput16 = storageInputOutput16_;
12874 return *this;
12875 }
12876
12877 operator const VkPhysicalDevice16BitStorageFeaturesKHR&() const
12878 {
12879 return *reinterpret_cast<const VkPhysicalDevice16BitStorageFeaturesKHR*>(this);
12880 }
12881
12882 bool operator==( PhysicalDevice16BitStorageFeaturesKHR const& rhs ) const
12883 {
12884 return ( sType == rhs.sType )
12885 && ( pNext == rhs.pNext )
12886 && ( storageBuffer16BitAccess == rhs.storageBuffer16BitAccess )
12887 && ( uniformAndStorageBuffer16BitAccess == rhs.uniformAndStorageBuffer16BitAccess )
12888 && ( storagePushConstant16 == rhs.storagePushConstant16 )
12889 && ( storageInputOutput16 == rhs.storageInputOutput16 );
12890 }
12891
12892 bool operator!=( PhysicalDevice16BitStorageFeaturesKHR const& rhs ) const
12893 {
12894 return !operator==( rhs );
12895 }
12896
12897 private:
12898 StructureType sType;
12899
12900 public:
12901 void* pNext;
12902 Bool32 storageBuffer16BitAccess;
12903 Bool32 uniformAndStorageBuffer16BitAccess;
12904 Bool32 storagePushConstant16;
12905 Bool32 storageInputOutput16;
12906 };
12907 static_assert( sizeof( PhysicalDevice16BitStorageFeaturesKHR ) == sizeof( VkPhysicalDevice16BitStorageFeaturesKHR ), "struct and wrapper have different size!" );
12908
12909 struct BufferMemoryRequirementsInfo2KHR
12910 {
12911 BufferMemoryRequirementsInfo2KHR( Buffer buffer_ = Buffer() )
12912 : sType( StructureType::eBufferMemoryRequirementsInfo2KHR )
12913 , pNext( nullptr )
12914 , buffer( buffer_ )
12915 {
12916 }
12917
12918 BufferMemoryRequirementsInfo2KHR( VkBufferMemoryRequirementsInfo2KHR const & rhs )
12919 {
12920 memcpy( this, &rhs, sizeof( BufferMemoryRequirementsInfo2KHR ) );
12921 }
12922
12923 BufferMemoryRequirementsInfo2KHR& operator=( VkBufferMemoryRequirementsInfo2KHR const & rhs )
12924 {
12925 memcpy( this, &rhs, sizeof( BufferMemoryRequirementsInfo2KHR ) );
12926 return *this;
12927 }
12928 BufferMemoryRequirementsInfo2KHR& setPNext( const void* pNext_ )
12929 {
12930 pNext = pNext_;
12931 return *this;
12932 }
12933
12934 BufferMemoryRequirementsInfo2KHR& setBuffer( Buffer buffer_ )
12935 {
12936 buffer = buffer_;
12937 return *this;
12938 }
12939
12940 operator const VkBufferMemoryRequirementsInfo2KHR&() const
12941 {
12942 return *reinterpret_cast<const VkBufferMemoryRequirementsInfo2KHR*>(this);
12943 }
12944
12945 bool operator==( BufferMemoryRequirementsInfo2KHR const& rhs ) const
12946 {
12947 return ( sType == rhs.sType )
12948 && ( pNext == rhs.pNext )
12949 && ( buffer == rhs.buffer );
12950 }
12951
12952 bool operator!=( BufferMemoryRequirementsInfo2KHR const& rhs ) const
12953 {
12954 return !operator==( rhs );
12955 }
12956
12957 private:
12958 StructureType sType;
12959
12960 public:
12961 const void* pNext;
12962 Buffer buffer;
12963 };
12964 static_assert( sizeof( BufferMemoryRequirementsInfo2KHR ) == sizeof( VkBufferMemoryRequirementsInfo2KHR ), "struct and wrapper have different size!" );
12965
12966 struct ImageMemoryRequirementsInfo2KHR
12967 {
12968 ImageMemoryRequirementsInfo2KHR( Image image_ = Image() )
12969 : sType( StructureType::eImageMemoryRequirementsInfo2KHR )
12970 , pNext( nullptr )
12971 , image( image_ )
12972 {
12973 }
12974
12975 ImageMemoryRequirementsInfo2KHR( VkImageMemoryRequirementsInfo2KHR const & rhs )
12976 {
12977 memcpy( this, &rhs, sizeof( ImageMemoryRequirementsInfo2KHR ) );
12978 }
12979
12980 ImageMemoryRequirementsInfo2KHR& operator=( VkImageMemoryRequirementsInfo2KHR const & rhs )
12981 {
12982 memcpy( this, &rhs, sizeof( ImageMemoryRequirementsInfo2KHR ) );
12983 return *this;
12984 }
12985 ImageMemoryRequirementsInfo2KHR& setPNext( const void* pNext_ )
12986 {
12987 pNext = pNext_;
12988 return *this;
12989 }
12990
12991 ImageMemoryRequirementsInfo2KHR& setImage( Image image_ )
12992 {
12993 image = image_;
12994 return *this;
12995 }
12996
12997 operator const VkImageMemoryRequirementsInfo2KHR&() const
12998 {
12999 return *reinterpret_cast<const VkImageMemoryRequirementsInfo2KHR*>(this);
13000 }
13001
13002 bool operator==( ImageMemoryRequirementsInfo2KHR const& rhs ) const
13003 {
13004 return ( sType == rhs.sType )
13005 && ( pNext == rhs.pNext )
13006 && ( image == rhs.image );
13007 }
13008
13009 bool operator!=( ImageMemoryRequirementsInfo2KHR const& rhs ) const
13010 {
13011 return !operator==( rhs );
13012 }
13013
13014 private:
13015 StructureType sType;
13016
13017 public:
13018 const void* pNext;
13019 Image image;
13020 };
13021 static_assert( sizeof( ImageMemoryRequirementsInfo2KHR ) == sizeof( VkImageMemoryRequirementsInfo2KHR ), "struct and wrapper have different size!" );
13022
13023 struct ImageSparseMemoryRequirementsInfo2KHR
13024 {
13025 ImageSparseMemoryRequirementsInfo2KHR( Image image_ = Image() )
13026 : sType( StructureType::eImageSparseMemoryRequirementsInfo2KHR )
13027 , pNext( nullptr )
13028 , image( image_ )
13029 {
13030 }
13031
13032 ImageSparseMemoryRequirementsInfo2KHR( VkImageSparseMemoryRequirementsInfo2KHR const & rhs )
13033 {
13034 memcpy( this, &rhs, sizeof( ImageSparseMemoryRequirementsInfo2KHR ) );
13035 }
13036
13037 ImageSparseMemoryRequirementsInfo2KHR& operator=( VkImageSparseMemoryRequirementsInfo2KHR const & rhs )
13038 {
13039 memcpy( this, &rhs, sizeof( ImageSparseMemoryRequirementsInfo2KHR ) );
13040 return *this;
13041 }
13042 ImageSparseMemoryRequirementsInfo2KHR& setPNext( const void* pNext_ )
13043 {
13044 pNext = pNext_;
13045 return *this;
13046 }
13047
13048 ImageSparseMemoryRequirementsInfo2KHR& setImage( Image image_ )
13049 {
13050 image = image_;
13051 return *this;
13052 }
13053
13054 operator const VkImageSparseMemoryRequirementsInfo2KHR&() const
13055 {
13056 return *reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2KHR*>(this);
13057 }
13058
13059 bool operator==( ImageSparseMemoryRequirementsInfo2KHR const& rhs ) const
13060 {
13061 return ( sType == rhs.sType )
13062 && ( pNext == rhs.pNext )
13063 && ( image == rhs.image );
13064 }
13065
13066 bool operator!=( ImageSparseMemoryRequirementsInfo2KHR const& rhs ) const
13067 {
13068 return !operator==( rhs );
13069 }
13070
13071 private:
13072 StructureType sType;
13073
13074 public:
13075 const void* pNext;
13076 Image image;
13077 };
13078 static_assert( sizeof( ImageSparseMemoryRequirementsInfo2KHR ) == sizeof( VkImageSparseMemoryRequirementsInfo2KHR ), "struct and wrapper have different size!" );
13079
13080 struct MemoryRequirements2KHR
13081 {
13082 operator const VkMemoryRequirements2KHR&() const
13083 {
13084 return *reinterpret_cast<const VkMemoryRequirements2KHR*>(this);
13085 }
13086
13087 bool operator==( MemoryRequirements2KHR const& rhs ) const
13088 {
13089 return ( sType == rhs.sType )
13090 && ( pNext == rhs.pNext )
13091 && ( memoryRequirements == rhs.memoryRequirements );
13092 }
13093
13094 bool operator!=( MemoryRequirements2KHR const& rhs ) const
13095 {
13096 return !operator==( rhs );
13097 }
13098
13099 private:
13100 StructureType sType;
13101
13102 public:
13103 void* pNext;
13104 MemoryRequirements memoryRequirements;
13105 };
13106 static_assert( sizeof( MemoryRequirements2KHR ) == sizeof( VkMemoryRequirements2KHR ), "struct and wrapper have different size!" );
13107
13108 struct MemoryDedicatedRequirementsKHR
13109 {
13110 operator const VkMemoryDedicatedRequirementsKHR&() const
13111 {
13112 return *reinterpret_cast<const VkMemoryDedicatedRequirementsKHR*>(this);
13113 }
13114
13115 bool operator==( MemoryDedicatedRequirementsKHR const& rhs ) const
13116 {
13117 return ( sType == rhs.sType )
13118 && ( pNext == rhs.pNext )
13119 && ( prefersDedicatedAllocation == rhs.prefersDedicatedAllocation )
13120 && ( requiresDedicatedAllocation == rhs.requiresDedicatedAllocation );
13121 }
13122
13123 bool operator!=( MemoryDedicatedRequirementsKHR const& rhs ) const
13124 {
13125 return !operator==( rhs );
13126 }
13127
13128 private:
13129 StructureType sType;
13130
13131 public:
13132 void* pNext;
13133 Bool32 prefersDedicatedAllocation;
13134 Bool32 requiresDedicatedAllocation;
13135 };
13136 static_assert( sizeof( MemoryDedicatedRequirementsKHR ) == sizeof( VkMemoryDedicatedRequirementsKHR ), "struct and wrapper have different size!" );
13137
13138 struct MemoryDedicatedAllocateInfoKHR
13139 {
13140 MemoryDedicatedAllocateInfoKHR( Image image_ = Image(), Buffer buffer_ = Buffer() )
13141 : sType( StructureType::eMemoryDedicatedAllocateInfoKHR )
13142 , pNext( nullptr )
13143 , image( image_ )
13144 , buffer( buffer_ )
13145 {
13146 }
13147
13148 MemoryDedicatedAllocateInfoKHR( VkMemoryDedicatedAllocateInfoKHR const & rhs )
13149 {
13150 memcpy( this, &rhs, sizeof( MemoryDedicatedAllocateInfoKHR ) );
13151 }
13152
13153 MemoryDedicatedAllocateInfoKHR& operator=( VkMemoryDedicatedAllocateInfoKHR const & rhs )
13154 {
13155 memcpy( this, &rhs, sizeof( MemoryDedicatedAllocateInfoKHR ) );
13156 return *this;
13157 }
13158 MemoryDedicatedAllocateInfoKHR& setPNext( const void* pNext_ )
13159 {
13160 pNext = pNext_;
13161 return *this;
13162 }
13163
13164 MemoryDedicatedAllocateInfoKHR& setImage( Image image_ )
13165 {
13166 image = image_;
13167 return *this;
13168 }
13169
13170 MemoryDedicatedAllocateInfoKHR& setBuffer( Buffer buffer_ )
13171 {
13172 buffer = buffer_;
13173 return *this;
13174 }
13175
13176 operator const VkMemoryDedicatedAllocateInfoKHR&() const
13177 {
13178 return *reinterpret_cast<const VkMemoryDedicatedAllocateInfoKHR*>(this);
13179 }
13180
13181 bool operator==( MemoryDedicatedAllocateInfoKHR const& rhs ) const
13182 {
13183 return ( sType == rhs.sType )
13184 && ( pNext == rhs.pNext )
13185 && ( image == rhs.image )
13186 && ( buffer == rhs.buffer );
13187 }
13188
13189 bool operator!=( MemoryDedicatedAllocateInfoKHR const& rhs ) const
13190 {
13191 return !operator==( rhs );
13192 }
13193
13194 private:
13195 StructureType sType;
13196
13197 public:
13198 const void* pNext;
13199 Image image;
13200 Buffer buffer;
13201 };
13202 static_assert( sizeof( MemoryDedicatedAllocateInfoKHR ) == sizeof( VkMemoryDedicatedAllocateInfoKHR ), "struct and wrapper have different size!" );
13203
Lenny Komowb79f04a2017-09-18 17:07:00 -060013204 struct SamplerYcbcrConversionInfoKHR
13205 {
13206 SamplerYcbcrConversionInfoKHR( SamplerYcbcrConversionKHR conversion_ = SamplerYcbcrConversionKHR() )
13207 : sType( StructureType::eSamplerYcbcrConversionInfoKHR )
13208 , pNext( nullptr )
13209 , conversion( conversion_ )
13210 {
13211 }
13212
13213 SamplerYcbcrConversionInfoKHR( VkSamplerYcbcrConversionInfoKHR const & rhs )
13214 {
13215 memcpy( this, &rhs, sizeof( SamplerYcbcrConversionInfoKHR ) );
13216 }
13217
13218 SamplerYcbcrConversionInfoKHR& operator=( VkSamplerYcbcrConversionInfoKHR const & rhs )
13219 {
13220 memcpy( this, &rhs, sizeof( SamplerYcbcrConversionInfoKHR ) );
13221 return *this;
13222 }
13223 SamplerYcbcrConversionInfoKHR& setPNext( const void* pNext_ )
13224 {
13225 pNext = pNext_;
13226 return *this;
13227 }
13228
13229 SamplerYcbcrConversionInfoKHR& setConversion( SamplerYcbcrConversionKHR conversion_ )
13230 {
13231 conversion = conversion_;
13232 return *this;
13233 }
13234
13235 operator const VkSamplerYcbcrConversionInfoKHR&() const
13236 {
13237 return *reinterpret_cast<const VkSamplerYcbcrConversionInfoKHR*>(this);
13238 }
13239
13240 bool operator==( SamplerYcbcrConversionInfoKHR const& rhs ) const
13241 {
13242 return ( sType == rhs.sType )
13243 && ( pNext == rhs.pNext )
13244 && ( conversion == rhs.conversion );
13245 }
13246
13247 bool operator!=( SamplerYcbcrConversionInfoKHR const& rhs ) const
13248 {
13249 return !operator==( rhs );
13250 }
13251
13252 private:
13253 StructureType sType;
13254
13255 public:
13256 const void* pNext;
13257 SamplerYcbcrConversionKHR conversion;
13258 };
13259 static_assert( sizeof( SamplerYcbcrConversionInfoKHR ) == sizeof( VkSamplerYcbcrConversionInfoKHR ), "struct and wrapper have different size!" );
13260
13261 struct PhysicalDeviceSamplerYcbcrConversionFeaturesKHR
13262 {
13263 PhysicalDeviceSamplerYcbcrConversionFeaturesKHR( Bool32 samplerYcbcrConversion_ = 0 )
13264 : sType( StructureType::ePhysicalDeviceSamplerYcbcrConversionFeaturesKHR )
13265 , pNext( nullptr )
13266 , samplerYcbcrConversion( samplerYcbcrConversion_ )
13267 {
13268 }
13269
13270 PhysicalDeviceSamplerYcbcrConversionFeaturesKHR( VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR const & rhs )
13271 {
13272 memcpy( this, &rhs, sizeof( PhysicalDeviceSamplerYcbcrConversionFeaturesKHR ) );
13273 }
13274
13275 PhysicalDeviceSamplerYcbcrConversionFeaturesKHR& operator=( VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR const & rhs )
13276 {
13277 memcpy( this, &rhs, sizeof( PhysicalDeviceSamplerYcbcrConversionFeaturesKHR ) );
13278 return *this;
13279 }
13280 PhysicalDeviceSamplerYcbcrConversionFeaturesKHR& setPNext( void* pNext_ )
13281 {
13282 pNext = pNext_;
13283 return *this;
13284 }
13285
13286 PhysicalDeviceSamplerYcbcrConversionFeaturesKHR& setSamplerYcbcrConversion( Bool32 samplerYcbcrConversion_ )
13287 {
13288 samplerYcbcrConversion = samplerYcbcrConversion_;
13289 return *this;
13290 }
13291
13292 operator const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR&() const
13293 {
13294 return *reinterpret_cast<const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR*>(this);
13295 }
13296
13297 bool operator==( PhysicalDeviceSamplerYcbcrConversionFeaturesKHR const& rhs ) const
13298 {
13299 return ( sType == rhs.sType )
13300 && ( pNext == rhs.pNext )
13301 && ( samplerYcbcrConversion == rhs.samplerYcbcrConversion );
13302 }
13303
13304 bool operator!=( PhysicalDeviceSamplerYcbcrConversionFeaturesKHR const& rhs ) const
13305 {
13306 return !operator==( rhs );
13307 }
13308
13309 private:
13310 StructureType sType;
13311
13312 public:
13313 void* pNext;
13314 Bool32 samplerYcbcrConversion;
13315 };
13316 static_assert( sizeof( PhysicalDeviceSamplerYcbcrConversionFeaturesKHR ) == sizeof( VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR ), "struct and wrapper have different size!" );
13317
13318 struct SamplerYcbcrConversionImageFormatPropertiesKHR
13319 {
13320 operator const VkSamplerYcbcrConversionImageFormatPropertiesKHR&() const
13321 {
13322 return *reinterpret_cast<const VkSamplerYcbcrConversionImageFormatPropertiesKHR*>(this);
13323 }
13324
13325 bool operator==( SamplerYcbcrConversionImageFormatPropertiesKHR const& rhs ) const
13326 {
13327 return ( sType == rhs.sType )
13328 && ( pNext == rhs.pNext )
13329 && ( combinedImageSamplerDescriptorCount == rhs.combinedImageSamplerDescriptorCount );
13330 }
13331
13332 bool operator!=( SamplerYcbcrConversionImageFormatPropertiesKHR const& rhs ) const
13333 {
13334 return !operator==( rhs );
13335 }
13336
13337 private:
13338 StructureType sType;
13339
13340 public:
13341 void* pNext;
13342 uint32_t combinedImageSamplerDescriptorCount;
13343 };
13344 static_assert( sizeof( SamplerYcbcrConversionImageFormatPropertiesKHR ) == sizeof( VkSamplerYcbcrConversionImageFormatPropertiesKHR ), "struct and wrapper have different size!" );
13345
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013346 struct TextureLODGatherFormatPropertiesAMD
13347 {
13348 operator const VkTextureLODGatherFormatPropertiesAMD&() const
13349 {
13350 return *reinterpret_cast<const VkTextureLODGatherFormatPropertiesAMD*>(this);
13351 }
13352
13353 bool operator==( TextureLODGatherFormatPropertiesAMD const& rhs ) const
13354 {
13355 return ( sType == rhs.sType )
13356 && ( pNext == rhs.pNext )
13357 && ( supportsTextureGatherLODBiasAMD == rhs.supportsTextureGatherLODBiasAMD );
13358 }
13359
13360 bool operator!=( TextureLODGatherFormatPropertiesAMD const& rhs ) const
13361 {
13362 return !operator==( rhs );
13363 }
13364
13365 private:
13366 StructureType sType;
13367
13368 public:
13369 void* pNext;
13370 Bool32 supportsTextureGatherLODBiasAMD;
13371 };
13372 static_assert( sizeof( TextureLODGatherFormatPropertiesAMD ) == sizeof( VkTextureLODGatherFormatPropertiesAMD ), "struct and wrapper have different size!" );
13373
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060013374 struct PipelineCoverageToColorStateCreateInfoNV
13375 {
13376 PipelineCoverageToColorStateCreateInfoNV( PipelineCoverageToColorStateCreateFlagsNV flags_ = PipelineCoverageToColorStateCreateFlagsNV(), Bool32 coverageToColorEnable_ = 0, uint32_t coverageToColorLocation_ = 0 )
13377 : sType( StructureType::ePipelineCoverageToColorStateCreateInfoNV )
13378 , pNext( nullptr )
13379 , flags( flags_ )
13380 , coverageToColorEnable( coverageToColorEnable_ )
13381 , coverageToColorLocation( coverageToColorLocation_ )
13382 {
13383 }
13384
13385 PipelineCoverageToColorStateCreateInfoNV( VkPipelineCoverageToColorStateCreateInfoNV const & rhs )
13386 {
13387 memcpy( this, &rhs, sizeof( PipelineCoverageToColorStateCreateInfoNV ) );
13388 }
13389
13390 PipelineCoverageToColorStateCreateInfoNV& operator=( VkPipelineCoverageToColorStateCreateInfoNV const & rhs )
13391 {
13392 memcpy( this, &rhs, sizeof( PipelineCoverageToColorStateCreateInfoNV ) );
13393 return *this;
13394 }
13395 PipelineCoverageToColorStateCreateInfoNV& setPNext( const void* pNext_ )
13396 {
13397 pNext = pNext_;
13398 return *this;
13399 }
13400
13401 PipelineCoverageToColorStateCreateInfoNV& setFlags( PipelineCoverageToColorStateCreateFlagsNV flags_ )
13402 {
13403 flags = flags_;
13404 return *this;
13405 }
13406
13407 PipelineCoverageToColorStateCreateInfoNV& setCoverageToColorEnable( Bool32 coverageToColorEnable_ )
13408 {
13409 coverageToColorEnable = coverageToColorEnable_;
13410 return *this;
13411 }
13412
13413 PipelineCoverageToColorStateCreateInfoNV& setCoverageToColorLocation( uint32_t coverageToColorLocation_ )
13414 {
13415 coverageToColorLocation = coverageToColorLocation_;
13416 return *this;
13417 }
13418
13419 operator const VkPipelineCoverageToColorStateCreateInfoNV&() const
13420 {
13421 return *reinterpret_cast<const VkPipelineCoverageToColorStateCreateInfoNV*>(this);
13422 }
13423
13424 bool operator==( PipelineCoverageToColorStateCreateInfoNV const& rhs ) const
13425 {
13426 return ( sType == rhs.sType )
13427 && ( pNext == rhs.pNext )
13428 && ( flags == rhs.flags )
13429 && ( coverageToColorEnable == rhs.coverageToColorEnable )
13430 && ( coverageToColorLocation == rhs.coverageToColorLocation );
13431 }
13432
13433 bool operator!=( PipelineCoverageToColorStateCreateInfoNV const& rhs ) const
13434 {
13435 return !operator==( rhs );
13436 }
13437
13438 private:
13439 StructureType sType;
13440
13441 public:
13442 const void* pNext;
13443 PipelineCoverageToColorStateCreateFlagsNV flags;
13444 Bool32 coverageToColorEnable;
13445 uint32_t coverageToColorLocation;
13446 };
13447 static_assert( sizeof( PipelineCoverageToColorStateCreateInfoNV ) == sizeof( VkPipelineCoverageToColorStateCreateInfoNV ), "struct and wrapper have different size!" );
13448
13449 struct PhysicalDeviceSamplerFilterMinmaxPropertiesEXT
13450 {
13451 operator const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT&() const
13452 {
13453 return *reinterpret_cast<const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT*>(this);
13454 }
13455
13456 bool operator==( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT const& rhs ) const
13457 {
13458 return ( sType == rhs.sType )
13459 && ( pNext == rhs.pNext )
13460 && ( filterMinmaxSingleComponentFormats == rhs.filterMinmaxSingleComponentFormats )
13461 && ( filterMinmaxImageComponentMapping == rhs.filterMinmaxImageComponentMapping );
13462 }
13463
13464 bool operator!=( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT const& rhs ) const
13465 {
13466 return !operator==( rhs );
13467 }
13468
13469 private:
13470 StructureType sType;
13471
13472 public:
13473 void* pNext;
13474 Bool32 filterMinmaxSingleComponentFormats;
13475 Bool32 filterMinmaxImageComponentMapping;
13476 };
13477 static_assert( sizeof( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT ) == sizeof( VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT ), "struct and wrapper have different size!" );
13478
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060013479 struct MultisamplePropertiesEXT
13480 {
13481 operator const VkMultisamplePropertiesEXT&() const
13482 {
13483 return *reinterpret_cast<const VkMultisamplePropertiesEXT*>(this);
13484 }
13485
13486 bool operator==( MultisamplePropertiesEXT const& rhs ) const
13487 {
13488 return ( sType == rhs.sType )
13489 && ( pNext == rhs.pNext )
13490 && ( maxSampleLocationGridSize == rhs.maxSampleLocationGridSize );
13491 }
13492
13493 bool operator!=( MultisamplePropertiesEXT const& rhs ) const
13494 {
13495 return !operator==( rhs );
13496 }
13497
13498 private:
13499 StructureType sType;
13500
13501 public:
13502 void* pNext;
13503 Extent2D maxSampleLocationGridSize;
13504 };
13505 static_assert( sizeof( MultisamplePropertiesEXT ) == sizeof( VkMultisamplePropertiesEXT ), "struct and wrapper have different size!" );
13506
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060013507 struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT
13508 {
13509 PhysicalDeviceBlendOperationAdvancedFeaturesEXT( Bool32 advancedBlendCoherentOperations_ = 0 )
13510 : sType( StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT )
13511 , pNext( nullptr )
13512 , advancedBlendCoherentOperations( advancedBlendCoherentOperations_ )
13513 {
13514 }
13515
13516 PhysicalDeviceBlendOperationAdvancedFeaturesEXT( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs )
13517 {
13518 memcpy( this, &rhs, sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) );
13519 }
13520
13521 PhysicalDeviceBlendOperationAdvancedFeaturesEXT& operator=( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs )
13522 {
13523 memcpy( this, &rhs, sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) );
13524 return *this;
13525 }
13526 PhysicalDeviceBlendOperationAdvancedFeaturesEXT& setPNext( void* pNext_ )
13527 {
13528 pNext = pNext_;
13529 return *this;
13530 }
13531
13532 PhysicalDeviceBlendOperationAdvancedFeaturesEXT& setAdvancedBlendCoherentOperations( Bool32 advancedBlendCoherentOperations_ )
13533 {
13534 advancedBlendCoherentOperations = advancedBlendCoherentOperations_;
13535 return *this;
13536 }
13537
13538 operator const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT&() const
13539 {
13540 return *reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT*>(this);
13541 }
13542
13543 bool operator==( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const& rhs ) const
13544 {
13545 return ( sType == rhs.sType )
13546 && ( pNext == rhs.pNext )
13547 && ( advancedBlendCoherentOperations == rhs.advancedBlendCoherentOperations );
13548 }
13549
13550 bool operator!=( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const& rhs ) const
13551 {
13552 return !operator==( rhs );
13553 }
13554
13555 private:
13556 StructureType sType;
13557
13558 public:
13559 void* pNext;
13560 Bool32 advancedBlendCoherentOperations;
13561 };
13562 static_assert( sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) == sizeof( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT ), "struct and wrapper have different size!" );
13563
13564 struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT
13565 {
13566 operator const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT&() const
13567 {
13568 return *reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT*>(this);
13569 }
13570
13571 bool operator==( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const& rhs ) const
13572 {
13573 return ( sType == rhs.sType )
13574 && ( pNext == rhs.pNext )
13575 && ( advancedBlendMaxColorAttachments == rhs.advancedBlendMaxColorAttachments )
13576 && ( advancedBlendIndependentBlend == rhs.advancedBlendIndependentBlend )
13577 && ( advancedBlendNonPremultipliedSrcColor == rhs.advancedBlendNonPremultipliedSrcColor )
13578 && ( advancedBlendNonPremultipliedDstColor == rhs.advancedBlendNonPremultipliedDstColor )
13579 && ( advancedBlendCorrelatedOverlap == rhs.advancedBlendCorrelatedOverlap )
13580 && ( advancedBlendAllOperations == rhs.advancedBlendAllOperations );
13581 }
13582
13583 bool operator!=( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const& rhs ) const
13584 {
13585 return !operator==( rhs );
13586 }
13587
13588 private:
13589 StructureType sType;
13590
13591 public:
13592 void* pNext;
13593 uint32_t advancedBlendMaxColorAttachments;
13594 Bool32 advancedBlendIndependentBlend;
13595 Bool32 advancedBlendNonPremultipliedSrcColor;
13596 Bool32 advancedBlendNonPremultipliedDstColor;
13597 Bool32 advancedBlendCorrelatedOverlap;
13598 Bool32 advancedBlendAllOperations;
13599 };
13600 static_assert( sizeof( PhysicalDeviceBlendOperationAdvancedPropertiesEXT ) == sizeof( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT ), "struct and wrapper have different size!" );
13601
Lenny Komowb79f04a2017-09-18 17:07:00 -060013602 struct ImageFormatListCreateInfoKHR
13603 {
13604 ImageFormatListCreateInfoKHR( uint32_t viewFormatCount_ = 0, const Format* pViewFormats_ = nullptr )
13605 : sType( StructureType::eImageFormatListCreateInfoKHR )
13606 , pNext( nullptr )
13607 , viewFormatCount( viewFormatCount_ )
13608 , pViewFormats( pViewFormats_ )
13609 {
13610 }
13611
13612 ImageFormatListCreateInfoKHR( VkImageFormatListCreateInfoKHR const & rhs )
13613 {
13614 memcpy( this, &rhs, sizeof( ImageFormatListCreateInfoKHR ) );
13615 }
13616
13617 ImageFormatListCreateInfoKHR& operator=( VkImageFormatListCreateInfoKHR const & rhs )
13618 {
13619 memcpy( this, &rhs, sizeof( ImageFormatListCreateInfoKHR ) );
13620 return *this;
13621 }
13622 ImageFormatListCreateInfoKHR& setPNext( const void* pNext_ )
13623 {
13624 pNext = pNext_;
13625 return *this;
13626 }
13627
13628 ImageFormatListCreateInfoKHR& setViewFormatCount( uint32_t viewFormatCount_ )
13629 {
13630 viewFormatCount = viewFormatCount_;
13631 return *this;
13632 }
13633
13634 ImageFormatListCreateInfoKHR& setPViewFormats( const Format* pViewFormats_ )
13635 {
13636 pViewFormats = pViewFormats_;
13637 return *this;
13638 }
13639
13640 operator const VkImageFormatListCreateInfoKHR&() const
13641 {
13642 return *reinterpret_cast<const VkImageFormatListCreateInfoKHR*>(this);
13643 }
13644
13645 bool operator==( ImageFormatListCreateInfoKHR const& rhs ) const
13646 {
13647 return ( sType == rhs.sType )
13648 && ( pNext == rhs.pNext )
13649 && ( viewFormatCount == rhs.viewFormatCount )
13650 && ( pViewFormats == rhs.pViewFormats );
13651 }
13652
13653 bool operator!=( ImageFormatListCreateInfoKHR const& rhs ) const
13654 {
13655 return !operator==( rhs );
13656 }
13657
13658 private:
13659 StructureType sType;
13660
13661 public:
13662 const void* pNext;
13663 uint32_t viewFormatCount;
13664 const Format* pViewFormats;
13665 };
13666 static_assert( sizeof( ImageFormatListCreateInfoKHR ) == sizeof( VkImageFormatListCreateInfoKHR ), "struct and wrapper have different size!" );
13667
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060013668 struct ValidationCacheCreateInfoEXT
13669 {
13670 ValidationCacheCreateInfoEXT( ValidationCacheCreateFlagsEXT flags_ = ValidationCacheCreateFlagsEXT(), size_t initialDataSize_ = 0, const void* pInitialData_ = nullptr )
13671 : sType( StructureType::eValidationCacheCreateInfoEXT )
13672 , pNext( nullptr )
13673 , flags( flags_ )
13674 , initialDataSize( initialDataSize_ )
13675 , pInitialData( pInitialData_ )
13676 {
13677 }
13678
13679 ValidationCacheCreateInfoEXT( VkValidationCacheCreateInfoEXT const & rhs )
13680 {
13681 memcpy( this, &rhs, sizeof( ValidationCacheCreateInfoEXT ) );
13682 }
13683
13684 ValidationCacheCreateInfoEXT& operator=( VkValidationCacheCreateInfoEXT const & rhs )
13685 {
13686 memcpy( this, &rhs, sizeof( ValidationCacheCreateInfoEXT ) );
13687 return *this;
13688 }
13689 ValidationCacheCreateInfoEXT& setPNext( const void* pNext_ )
13690 {
13691 pNext = pNext_;
13692 return *this;
13693 }
13694
13695 ValidationCacheCreateInfoEXT& setFlags( ValidationCacheCreateFlagsEXT flags_ )
13696 {
13697 flags = flags_;
13698 return *this;
13699 }
13700
13701 ValidationCacheCreateInfoEXT& setInitialDataSize( size_t initialDataSize_ )
13702 {
13703 initialDataSize = initialDataSize_;
13704 return *this;
13705 }
13706
13707 ValidationCacheCreateInfoEXT& setPInitialData( const void* pInitialData_ )
13708 {
13709 pInitialData = pInitialData_;
13710 return *this;
13711 }
13712
13713 operator const VkValidationCacheCreateInfoEXT&() const
13714 {
13715 return *reinterpret_cast<const VkValidationCacheCreateInfoEXT*>(this);
13716 }
13717
13718 bool operator==( ValidationCacheCreateInfoEXT const& rhs ) const
13719 {
13720 return ( sType == rhs.sType )
13721 && ( pNext == rhs.pNext )
13722 && ( flags == rhs.flags )
13723 && ( initialDataSize == rhs.initialDataSize )
13724 && ( pInitialData == rhs.pInitialData );
13725 }
13726
13727 bool operator!=( ValidationCacheCreateInfoEXT const& rhs ) const
13728 {
13729 return !operator==( rhs );
13730 }
13731
13732 private:
13733 StructureType sType;
13734
13735 public:
13736 const void* pNext;
13737 ValidationCacheCreateFlagsEXT flags;
13738 size_t initialDataSize;
13739 const void* pInitialData;
13740 };
13741 static_assert( sizeof( ValidationCacheCreateInfoEXT ) == sizeof( VkValidationCacheCreateInfoEXT ), "struct and wrapper have different size!" );
13742
13743 struct ShaderModuleValidationCacheCreateInfoEXT
13744 {
13745 ShaderModuleValidationCacheCreateInfoEXT( ValidationCacheEXT validationCache_ = ValidationCacheEXT() )
13746 : sType( StructureType::eShaderModuleValidationCacheCreateInfoEXT )
13747 , pNext( nullptr )
13748 , validationCache( validationCache_ )
13749 {
13750 }
13751
13752 ShaderModuleValidationCacheCreateInfoEXT( VkShaderModuleValidationCacheCreateInfoEXT const & rhs )
13753 {
13754 memcpy( this, &rhs, sizeof( ShaderModuleValidationCacheCreateInfoEXT ) );
13755 }
13756
13757 ShaderModuleValidationCacheCreateInfoEXT& operator=( VkShaderModuleValidationCacheCreateInfoEXT const & rhs )
13758 {
13759 memcpy( this, &rhs, sizeof( ShaderModuleValidationCacheCreateInfoEXT ) );
13760 return *this;
13761 }
13762 ShaderModuleValidationCacheCreateInfoEXT& setPNext( const void* pNext_ )
13763 {
13764 pNext = pNext_;
13765 return *this;
13766 }
13767
13768 ShaderModuleValidationCacheCreateInfoEXT& setValidationCache( ValidationCacheEXT validationCache_ )
13769 {
13770 validationCache = validationCache_;
13771 return *this;
13772 }
13773
13774 operator const VkShaderModuleValidationCacheCreateInfoEXT&() const
13775 {
13776 return *reinterpret_cast<const VkShaderModuleValidationCacheCreateInfoEXT*>(this);
13777 }
13778
13779 bool operator==( ShaderModuleValidationCacheCreateInfoEXT const& rhs ) const
13780 {
13781 return ( sType == rhs.sType )
13782 && ( pNext == rhs.pNext )
13783 && ( validationCache == rhs.validationCache );
13784 }
13785
13786 bool operator!=( ShaderModuleValidationCacheCreateInfoEXT const& rhs ) const
13787 {
13788 return !operator==( rhs );
13789 }
13790
13791 private:
13792 StructureType sType;
13793
13794 public:
13795 const void* pNext;
13796 ValidationCacheEXT validationCache;
13797 };
13798 static_assert( sizeof( ShaderModuleValidationCacheCreateInfoEXT ) == sizeof( VkShaderModuleValidationCacheCreateInfoEXT ), "struct and wrapper have different size!" );
13799
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013800 enum class SubpassContents
13801 {
13802 eInline = VK_SUBPASS_CONTENTS_INLINE,
13803 eSecondaryCommandBuffers = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS
13804 };
13805
13806 struct PresentInfoKHR
13807 {
13808 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 )
13809 : sType( StructureType::ePresentInfoKHR )
13810 , pNext( nullptr )
13811 , waitSemaphoreCount( waitSemaphoreCount_ )
13812 , pWaitSemaphores( pWaitSemaphores_ )
13813 , swapchainCount( swapchainCount_ )
13814 , pSwapchains( pSwapchains_ )
13815 , pImageIndices( pImageIndices_ )
13816 , pResults( pResults_ )
13817 {
13818 }
13819
13820 PresentInfoKHR( VkPresentInfoKHR const & rhs )
13821 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013822 memcpy( this, &rhs, sizeof( PresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013823 }
13824
13825 PresentInfoKHR& operator=( VkPresentInfoKHR const & rhs )
13826 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013827 memcpy( this, &rhs, sizeof( PresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013828 return *this;
13829 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013830 PresentInfoKHR& setPNext( const void* pNext_ )
13831 {
13832 pNext = pNext_;
13833 return *this;
13834 }
13835
13836 PresentInfoKHR& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
13837 {
13838 waitSemaphoreCount = waitSemaphoreCount_;
13839 return *this;
13840 }
13841
13842 PresentInfoKHR& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
13843 {
13844 pWaitSemaphores = pWaitSemaphores_;
13845 return *this;
13846 }
13847
13848 PresentInfoKHR& setSwapchainCount( uint32_t swapchainCount_ )
13849 {
13850 swapchainCount = swapchainCount_;
13851 return *this;
13852 }
13853
13854 PresentInfoKHR& setPSwapchains( const SwapchainKHR* pSwapchains_ )
13855 {
13856 pSwapchains = pSwapchains_;
13857 return *this;
13858 }
13859
13860 PresentInfoKHR& setPImageIndices( const uint32_t* pImageIndices_ )
13861 {
13862 pImageIndices = pImageIndices_;
13863 return *this;
13864 }
13865
13866 PresentInfoKHR& setPResults( Result* pResults_ )
13867 {
13868 pResults = pResults_;
13869 return *this;
13870 }
13871
13872 operator const VkPresentInfoKHR&() const
13873 {
13874 return *reinterpret_cast<const VkPresentInfoKHR*>(this);
13875 }
13876
13877 bool operator==( PresentInfoKHR const& rhs ) const
13878 {
13879 return ( sType == rhs.sType )
13880 && ( pNext == rhs.pNext )
13881 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
13882 && ( pWaitSemaphores == rhs.pWaitSemaphores )
13883 && ( swapchainCount == rhs.swapchainCount )
13884 && ( pSwapchains == rhs.pSwapchains )
13885 && ( pImageIndices == rhs.pImageIndices )
13886 && ( pResults == rhs.pResults );
13887 }
13888
13889 bool operator!=( PresentInfoKHR const& rhs ) const
13890 {
13891 return !operator==( rhs );
13892 }
13893
13894 private:
13895 StructureType sType;
13896
13897 public:
13898 const void* pNext;
13899 uint32_t waitSemaphoreCount;
13900 const Semaphore* pWaitSemaphores;
13901 uint32_t swapchainCount;
13902 const SwapchainKHR* pSwapchains;
13903 const uint32_t* pImageIndices;
13904 Result* pResults;
13905 };
13906 static_assert( sizeof( PresentInfoKHR ) == sizeof( VkPresentInfoKHR ), "struct and wrapper have different size!" );
13907
13908 enum class DynamicState
13909 {
13910 eViewport = VK_DYNAMIC_STATE_VIEWPORT,
13911 eScissor = VK_DYNAMIC_STATE_SCISSOR,
13912 eLineWidth = VK_DYNAMIC_STATE_LINE_WIDTH,
13913 eDepthBias = VK_DYNAMIC_STATE_DEPTH_BIAS,
13914 eBlendConstants = VK_DYNAMIC_STATE_BLEND_CONSTANTS,
13915 eDepthBounds = VK_DYNAMIC_STATE_DEPTH_BOUNDS,
13916 eStencilCompareMask = VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK,
13917 eStencilWriteMask = VK_DYNAMIC_STATE_STENCIL_WRITE_MASK,
Mark Young0f183a82017-02-28 09:58:04 -070013918 eStencilReference = VK_DYNAMIC_STATE_STENCIL_REFERENCE,
13919 eViewportWScalingNV = VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060013920 eDiscardRectangleEXT = VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT,
13921 eSampleLocationsEXT = VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013922 };
13923
13924 struct PipelineDynamicStateCreateInfo
13925 {
13926 PipelineDynamicStateCreateInfo( PipelineDynamicStateCreateFlags flags_ = PipelineDynamicStateCreateFlags(), uint32_t dynamicStateCount_ = 0, const DynamicState* pDynamicStates_ = nullptr )
13927 : sType( StructureType::ePipelineDynamicStateCreateInfo )
13928 , pNext( nullptr )
13929 , flags( flags_ )
13930 , dynamicStateCount( dynamicStateCount_ )
13931 , pDynamicStates( pDynamicStates_ )
13932 {
13933 }
13934
13935 PipelineDynamicStateCreateInfo( VkPipelineDynamicStateCreateInfo const & rhs )
13936 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013937 memcpy( this, &rhs, sizeof( PipelineDynamicStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013938 }
13939
13940 PipelineDynamicStateCreateInfo& operator=( VkPipelineDynamicStateCreateInfo const & rhs )
13941 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013942 memcpy( this, &rhs, sizeof( PipelineDynamicStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013943 return *this;
13944 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013945 PipelineDynamicStateCreateInfo& setPNext( const void* pNext_ )
13946 {
13947 pNext = pNext_;
13948 return *this;
13949 }
13950
13951 PipelineDynamicStateCreateInfo& setFlags( PipelineDynamicStateCreateFlags flags_ )
13952 {
13953 flags = flags_;
13954 return *this;
13955 }
13956
13957 PipelineDynamicStateCreateInfo& setDynamicStateCount( uint32_t dynamicStateCount_ )
13958 {
13959 dynamicStateCount = dynamicStateCount_;
13960 return *this;
13961 }
13962
13963 PipelineDynamicStateCreateInfo& setPDynamicStates( const DynamicState* pDynamicStates_ )
13964 {
13965 pDynamicStates = pDynamicStates_;
13966 return *this;
13967 }
13968
13969 operator const VkPipelineDynamicStateCreateInfo&() const
13970 {
13971 return *reinterpret_cast<const VkPipelineDynamicStateCreateInfo*>(this);
13972 }
13973
13974 bool operator==( PipelineDynamicStateCreateInfo const& rhs ) const
13975 {
13976 return ( sType == rhs.sType )
13977 && ( pNext == rhs.pNext )
13978 && ( flags == rhs.flags )
13979 && ( dynamicStateCount == rhs.dynamicStateCount )
13980 && ( pDynamicStates == rhs.pDynamicStates );
13981 }
13982
13983 bool operator!=( PipelineDynamicStateCreateInfo const& rhs ) const
13984 {
13985 return !operator==( rhs );
13986 }
13987
13988 private:
13989 StructureType sType;
13990
13991 public:
13992 const void* pNext;
13993 PipelineDynamicStateCreateFlags flags;
13994 uint32_t dynamicStateCount;
13995 const DynamicState* pDynamicStates;
13996 };
13997 static_assert( sizeof( PipelineDynamicStateCreateInfo ) == sizeof( VkPipelineDynamicStateCreateInfo ), "struct and wrapper have different size!" );
13998
Mark Young0f183a82017-02-28 09:58:04 -070013999 enum class DescriptorUpdateTemplateTypeKHR
14000 {
14001 eDescriptorSet = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR,
14002 ePushDescriptors = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR
14003 };
14004
14005 struct DescriptorUpdateTemplateCreateInfoKHR
14006 {
14007 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 )
14008 : sType( StructureType::eDescriptorUpdateTemplateCreateInfoKHR )
14009 , pNext( nullptr )
14010 , flags( flags_ )
14011 , descriptorUpdateEntryCount( descriptorUpdateEntryCount_ )
14012 , pDescriptorUpdateEntries( pDescriptorUpdateEntries_ )
14013 , templateType( templateType_ )
14014 , descriptorSetLayout( descriptorSetLayout_ )
14015 , pipelineBindPoint( pipelineBindPoint_ )
14016 , pipelineLayout( pipelineLayout_ )
14017 , set( set_ )
14018 {
14019 }
14020
14021 DescriptorUpdateTemplateCreateInfoKHR( VkDescriptorUpdateTemplateCreateInfoKHR const & rhs )
14022 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014023 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070014024 }
14025
14026 DescriptorUpdateTemplateCreateInfoKHR& operator=( VkDescriptorUpdateTemplateCreateInfoKHR const & rhs )
14027 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014028 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070014029 return *this;
14030 }
Mark Young0f183a82017-02-28 09:58:04 -070014031 DescriptorUpdateTemplateCreateInfoKHR& setPNext( void* pNext_ )
14032 {
14033 pNext = pNext_;
14034 return *this;
14035 }
14036
14037 DescriptorUpdateTemplateCreateInfoKHR& setFlags( DescriptorUpdateTemplateCreateFlagsKHR flags_ )
14038 {
14039 flags = flags_;
14040 return *this;
14041 }
14042
14043 DescriptorUpdateTemplateCreateInfoKHR& setDescriptorUpdateEntryCount( uint32_t descriptorUpdateEntryCount_ )
14044 {
14045 descriptorUpdateEntryCount = descriptorUpdateEntryCount_;
14046 return *this;
14047 }
14048
14049 DescriptorUpdateTemplateCreateInfoKHR& setPDescriptorUpdateEntries( const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries_ )
14050 {
14051 pDescriptorUpdateEntries = pDescriptorUpdateEntries_;
14052 return *this;
14053 }
14054
14055 DescriptorUpdateTemplateCreateInfoKHR& setTemplateType( DescriptorUpdateTemplateTypeKHR templateType_ )
14056 {
14057 templateType = templateType_;
14058 return *this;
14059 }
14060
14061 DescriptorUpdateTemplateCreateInfoKHR& setDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout_ )
14062 {
14063 descriptorSetLayout = descriptorSetLayout_;
14064 return *this;
14065 }
14066
14067 DescriptorUpdateTemplateCreateInfoKHR& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
14068 {
14069 pipelineBindPoint = pipelineBindPoint_;
14070 return *this;
14071 }
14072
14073 DescriptorUpdateTemplateCreateInfoKHR& setPipelineLayout( PipelineLayout pipelineLayout_ )
14074 {
14075 pipelineLayout = pipelineLayout_;
14076 return *this;
14077 }
14078
14079 DescriptorUpdateTemplateCreateInfoKHR& setSet( uint32_t set_ )
14080 {
14081 set = set_;
14082 return *this;
14083 }
14084
14085 operator const VkDescriptorUpdateTemplateCreateInfoKHR&() const
14086 {
14087 return *reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>(this);
14088 }
14089
14090 bool operator==( DescriptorUpdateTemplateCreateInfoKHR const& rhs ) const
14091 {
14092 return ( sType == rhs.sType )
14093 && ( pNext == rhs.pNext )
14094 && ( flags == rhs.flags )
14095 && ( descriptorUpdateEntryCount == rhs.descriptorUpdateEntryCount )
14096 && ( pDescriptorUpdateEntries == rhs.pDescriptorUpdateEntries )
14097 && ( templateType == rhs.templateType )
14098 && ( descriptorSetLayout == rhs.descriptorSetLayout )
14099 && ( pipelineBindPoint == rhs.pipelineBindPoint )
14100 && ( pipelineLayout == rhs.pipelineLayout )
14101 && ( set == rhs.set );
14102 }
14103
14104 bool operator!=( DescriptorUpdateTemplateCreateInfoKHR const& rhs ) const
14105 {
14106 return !operator==( rhs );
14107 }
14108
14109 private:
14110 StructureType sType;
14111
14112 public:
14113 void* pNext;
14114 DescriptorUpdateTemplateCreateFlagsKHR flags;
14115 uint32_t descriptorUpdateEntryCount;
14116 const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries;
14117 DescriptorUpdateTemplateTypeKHR templateType;
14118 DescriptorSetLayout descriptorSetLayout;
14119 PipelineBindPoint pipelineBindPoint;
14120 PipelineLayout pipelineLayout;
14121 uint32_t set;
14122 };
14123 static_assert( sizeof( DescriptorUpdateTemplateCreateInfoKHR ) == sizeof( VkDescriptorUpdateTemplateCreateInfoKHR ), "struct and wrapper have different size!" );
14124
Mark Lobodzinski54385432017-05-15 10:27:52 -060014125 enum class ObjectType
14126 {
14127 eUnknown = VK_OBJECT_TYPE_UNKNOWN,
14128 eInstance = VK_OBJECT_TYPE_INSTANCE,
14129 ePhysicalDevice = VK_OBJECT_TYPE_PHYSICAL_DEVICE,
14130 eDevice = VK_OBJECT_TYPE_DEVICE,
14131 eQueue = VK_OBJECT_TYPE_QUEUE,
14132 eSemaphore = VK_OBJECT_TYPE_SEMAPHORE,
14133 eCommandBuffer = VK_OBJECT_TYPE_COMMAND_BUFFER,
14134 eFence = VK_OBJECT_TYPE_FENCE,
14135 eDeviceMemory = VK_OBJECT_TYPE_DEVICE_MEMORY,
14136 eBuffer = VK_OBJECT_TYPE_BUFFER,
14137 eImage = VK_OBJECT_TYPE_IMAGE,
14138 eEvent = VK_OBJECT_TYPE_EVENT,
14139 eQueryPool = VK_OBJECT_TYPE_QUERY_POOL,
14140 eBufferView = VK_OBJECT_TYPE_BUFFER_VIEW,
14141 eImageView = VK_OBJECT_TYPE_IMAGE_VIEW,
14142 eShaderModule = VK_OBJECT_TYPE_SHADER_MODULE,
14143 ePipelineCache = VK_OBJECT_TYPE_PIPELINE_CACHE,
14144 ePipelineLayout = VK_OBJECT_TYPE_PIPELINE_LAYOUT,
14145 eRenderPass = VK_OBJECT_TYPE_RENDER_PASS,
14146 ePipeline = VK_OBJECT_TYPE_PIPELINE,
14147 eDescriptorSetLayout = VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT,
14148 eSampler = VK_OBJECT_TYPE_SAMPLER,
14149 eDescriptorPool = VK_OBJECT_TYPE_DESCRIPTOR_POOL,
14150 eDescriptorSet = VK_OBJECT_TYPE_DESCRIPTOR_SET,
14151 eFramebuffer = VK_OBJECT_TYPE_FRAMEBUFFER,
14152 eCommandPool = VK_OBJECT_TYPE_COMMAND_POOL,
14153 eSurfaceKHR = VK_OBJECT_TYPE_SURFACE_KHR,
14154 eSwapchainKHR = VK_OBJECT_TYPE_SWAPCHAIN_KHR,
14155 eDisplayKHR = VK_OBJECT_TYPE_DISPLAY_KHR,
14156 eDisplayModeKHR = VK_OBJECT_TYPE_DISPLAY_MODE_KHR,
14157 eDebugReportCallbackEXT = VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT,
14158 eDescriptorUpdateTemplateKHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR,
14159 eObjectTableNVX = VK_OBJECT_TYPE_OBJECT_TABLE_NVX,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060014160 eIndirectCommandsLayoutNVX = VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX,
Lenny Komowb79f04a2017-09-18 17:07:00 -060014161 eSamplerYcbcrConversionKHR = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060014162 eValidationCacheEXT = VK_OBJECT_TYPE_VALIDATION_CACHE_EXT
Mark Lobodzinski54385432017-05-15 10:27:52 -060014163 };
14164
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014165 enum class QueueFlagBits
14166 {
14167 eGraphics = VK_QUEUE_GRAPHICS_BIT,
14168 eCompute = VK_QUEUE_COMPUTE_BIT,
14169 eTransfer = VK_QUEUE_TRANSFER_BIT,
14170 eSparseBinding = VK_QUEUE_SPARSE_BINDING_BIT
14171 };
14172
14173 using QueueFlags = Flags<QueueFlagBits, VkQueueFlags>;
14174
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014175 VULKAN_HPP_INLINE QueueFlags operator|( QueueFlagBits bit0, QueueFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014176 {
14177 return QueueFlags( bit0 ) | bit1;
14178 }
14179
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014180 VULKAN_HPP_INLINE QueueFlags operator~( QueueFlagBits bits )
14181 {
14182 return ~( QueueFlags( bits ) );
14183 }
14184
14185 template <> struct FlagTraits<QueueFlagBits>
14186 {
14187 enum
14188 {
14189 allFlags = VkFlags(QueueFlagBits::eGraphics) | VkFlags(QueueFlagBits::eCompute) | VkFlags(QueueFlagBits::eTransfer) | VkFlags(QueueFlagBits::eSparseBinding)
14190 };
14191 };
14192
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014193 struct QueueFamilyProperties
14194 {
14195 operator const VkQueueFamilyProperties&() const
14196 {
14197 return *reinterpret_cast<const VkQueueFamilyProperties*>(this);
14198 }
14199
14200 bool operator==( QueueFamilyProperties const& rhs ) const
14201 {
14202 return ( queueFlags == rhs.queueFlags )
14203 && ( queueCount == rhs.queueCount )
14204 && ( timestampValidBits == rhs.timestampValidBits )
14205 && ( minImageTransferGranularity == rhs.minImageTransferGranularity );
14206 }
14207
14208 bool operator!=( QueueFamilyProperties const& rhs ) const
14209 {
14210 return !operator==( rhs );
14211 }
14212
14213 QueueFlags queueFlags;
14214 uint32_t queueCount;
14215 uint32_t timestampValidBits;
14216 Extent3D minImageTransferGranularity;
14217 };
14218 static_assert( sizeof( QueueFamilyProperties ) == sizeof( VkQueueFamilyProperties ), "struct and wrapper have different size!" );
14219
Mark Young39389872017-01-19 21:10:49 -070014220 struct QueueFamilyProperties2KHR
14221 {
14222 operator const VkQueueFamilyProperties2KHR&() const
14223 {
14224 return *reinterpret_cast<const VkQueueFamilyProperties2KHR*>(this);
14225 }
14226
14227 bool operator==( QueueFamilyProperties2KHR const& rhs ) const
14228 {
14229 return ( sType == rhs.sType )
14230 && ( pNext == rhs.pNext )
14231 && ( queueFamilyProperties == rhs.queueFamilyProperties );
14232 }
14233
14234 bool operator!=( QueueFamilyProperties2KHR const& rhs ) const
14235 {
14236 return !operator==( rhs );
14237 }
14238
14239 private:
14240 StructureType sType;
14241
14242 public:
14243 void* pNext;
14244 QueueFamilyProperties queueFamilyProperties;
14245 };
14246 static_assert( sizeof( QueueFamilyProperties2KHR ) == sizeof( VkQueueFamilyProperties2KHR ), "struct and wrapper have different size!" );
14247
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014248 enum class MemoryPropertyFlagBits
14249 {
14250 eDeviceLocal = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
14251 eHostVisible = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
14252 eHostCoherent = VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
14253 eHostCached = VK_MEMORY_PROPERTY_HOST_CACHED_BIT,
14254 eLazilyAllocated = VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT
14255 };
14256
14257 using MemoryPropertyFlags = Flags<MemoryPropertyFlagBits, VkMemoryPropertyFlags>;
14258
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014259 VULKAN_HPP_INLINE MemoryPropertyFlags operator|( MemoryPropertyFlagBits bit0, MemoryPropertyFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014260 {
14261 return MemoryPropertyFlags( bit0 ) | bit1;
14262 }
14263
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014264 VULKAN_HPP_INLINE MemoryPropertyFlags operator~( MemoryPropertyFlagBits bits )
14265 {
14266 return ~( MemoryPropertyFlags( bits ) );
14267 }
14268
14269 template <> struct FlagTraits<MemoryPropertyFlagBits>
14270 {
14271 enum
14272 {
14273 allFlags = VkFlags(MemoryPropertyFlagBits::eDeviceLocal) | VkFlags(MemoryPropertyFlagBits::eHostVisible) | VkFlags(MemoryPropertyFlagBits::eHostCoherent) | VkFlags(MemoryPropertyFlagBits::eHostCached) | VkFlags(MemoryPropertyFlagBits::eLazilyAllocated)
14274 };
14275 };
14276
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014277 struct MemoryType
14278 {
14279 operator const VkMemoryType&() const
14280 {
14281 return *reinterpret_cast<const VkMemoryType*>(this);
14282 }
14283
14284 bool operator==( MemoryType const& rhs ) const
14285 {
14286 return ( propertyFlags == rhs.propertyFlags )
14287 && ( heapIndex == rhs.heapIndex );
14288 }
14289
14290 bool operator!=( MemoryType const& rhs ) const
14291 {
14292 return !operator==( rhs );
14293 }
14294
14295 MemoryPropertyFlags propertyFlags;
14296 uint32_t heapIndex;
14297 };
14298 static_assert( sizeof( MemoryType ) == sizeof( VkMemoryType ), "struct and wrapper have different size!" );
14299
14300 enum class MemoryHeapFlagBits
14301 {
Mark Young0f183a82017-02-28 09:58:04 -070014302 eDeviceLocal = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,
14303 eMultiInstanceKHX = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014304 };
14305
14306 using MemoryHeapFlags = Flags<MemoryHeapFlagBits, VkMemoryHeapFlags>;
14307
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014308 VULKAN_HPP_INLINE MemoryHeapFlags operator|( MemoryHeapFlagBits bit0, MemoryHeapFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014309 {
14310 return MemoryHeapFlags( bit0 ) | bit1;
14311 }
14312
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014313 VULKAN_HPP_INLINE MemoryHeapFlags operator~( MemoryHeapFlagBits bits )
14314 {
14315 return ~( MemoryHeapFlags( bits ) );
14316 }
14317
14318 template <> struct FlagTraits<MemoryHeapFlagBits>
14319 {
14320 enum
14321 {
Mark Young0f183a82017-02-28 09:58:04 -070014322 allFlags = VkFlags(MemoryHeapFlagBits::eDeviceLocal) | VkFlags(MemoryHeapFlagBits::eMultiInstanceKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014323 };
14324 };
14325
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014326 struct MemoryHeap
14327 {
14328 operator const VkMemoryHeap&() const
14329 {
14330 return *reinterpret_cast<const VkMemoryHeap*>(this);
14331 }
14332
14333 bool operator==( MemoryHeap const& rhs ) const
14334 {
14335 return ( size == rhs.size )
14336 && ( flags == rhs.flags );
14337 }
14338
14339 bool operator!=( MemoryHeap const& rhs ) const
14340 {
14341 return !operator==( rhs );
14342 }
14343
14344 DeviceSize size;
14345 MemoryHeapFlags flags;
14346 };
14347 static_assert( sizeof( MemoryHeap ) == sizeof( VkMemoryHeap ), "struct and wrapper have different size!" );
14348
14349 struct PhysicalDeviceMemoryProperties
14350 {
14351 operator const VkPhysicalDeviceMemoryProperties&() const
14352 {
14353 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties*>(this);
14354 }
14355
14356 bool operator==( PhysicalDeviceMemoryProperties const& rhs ) const
14357 {
14358 return ( memoryTypeCount == rhs.memoryTypeCount )
14359 && ( memcmp( memoryTypes, rhs.memoryTypes, VK_MAX_MEMORY_TYPES * sizeof( MemoryType ) ) == 0 )
14360 && ( memoryHeapCount == rhs.memoryHeapCount )
14361 && ( memcmp( memoryHeaps, rhs.memoryHeaps, VK_MAX_MEMORY_HEAPS * sizeof( MemoryHeap ) ) == 0 );
14362 }
14363
14364 bool operator!=( PhysicalDeviceMemoryProperties const& rhs ) const
14365 {
14366 return !operator==( rhs );
14367 }
14368
14369 uint32_t memoryTypeCount;
14370 MemoryType memoryTypes[VK_MAX_MEMORY_TYPES];
14371 uint32_t memoryHeapCount;
14372 MemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS];
14373 };
14374 static_assert( sizeof( PhysicalDeviceMemoryProperties ) == sizeof( VkPhysicalDeviceMemoryProperties ), "struct and wrapper have different size!" );
14375
Mark Young39389872017-01-19 21:10:49 -070014376 struct PhysicalDeviceMemoryProperties2KHR
14377 {
14378 operator const VkPhysicalDeviceMemoryProperties2KHR&() const
14379 {
14380 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties2KHR*>(this);
14381 }
14382
14383 bool operator==( PhysicalDeviceMemoryProperties2KHR const& rhs ) const
14384 {
14385 return ( sType == rhs.sType )
14386 && ( pNext == rhs.pNext )
14387 && ( memoryProperties == rhs.memoryProperties );
14388 }
14389
14390 bool operator!=( PhysicalDeviceMemoryProperties2KHR const& rhs ) const
14391 {
14392 return !operator==( rhs );
14393 }
14394
14395 private:
14396 StructureType sType;
14397
14398 public:
14399 void* pNext;
14400 PhysicalDeviceMemoryProperties memoryProperties;
14401 };
14402 static_assert( sizeof( PhysicalDeviceMemoryProperties2KHR ) == sizeof( VkPhysicalDeviceMemoryProperties2KHR ), "struct and wrapper have different size!" );
14403
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014404 enum class AccessFlagBits
14405 {
14406 eIndirectCommandRead = VK_ACCESS_INDIRECT_COMMAND_READ_BIT,
14407 eIndexRead = VK_ACCESS_INDEX_READ_BIT,
14408 eVertexAttributeRead = VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,
14409 eUniformRead = VK_ACCESS_UNIFORM_READ_BIT,
14410 eInputAttachmentRead = VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,
14411 eShaderRead = VK_ACCESS_SHADER_READ_BIT,
14412 eShaderWrite = VK_ACCESS_SHADER_WRITE_BIT,
14413 eColorAttachmentRead = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT,
14414 eColorAttachmentWrite = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
14415 eDepthStencilAttachmentRead = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT,
14416 eDepthStencilAttachmentWrite = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
14417 eTransferRead = VK_ACCESS_TRANSFER_READ_BIT,
14418 eTransferWrite = VK_ACCESS_TRANSFER_WRITE_BIT,
14419 eHostRead = VK_ACCESS_HOST_READ_BIT,
14420 eHostWrite = VK_ACCESS_HOST_WRITE_BIT,
14421 eMemoryRead = VK_ACCESS_MEMORY_READ_BIT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014422 eMemoryWrite = VK_ACCESS_MEMORY_WRITE_BIT,
14423 eCommandProcessReadNVX = VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060014424 eCommandProcessWriteNVX = VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX,
14425 eColorAttachmentReadNoncoherentEXT = VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014426 };
14427
14428 using AccessFlags = Flags<AccessFlagBits, VkAccessFlags>;
14429
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014430 VULKAN_HPP_INLINE AccessFlags operator|( AccessFlagBits bit0, AccessFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014431 {
14432 return AccessFlags( bit0 ) | bit1;
14433 }
14434
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014435 VULKAN_HPP_INLINE AccessFlags operator~( AccessFlagBits bits )
14436 {
14437 return ~( AccessFlags( bits ) );
14438 }
14439
14440 template <> struct FlagTraits<AccessFlagBits>
14441 {
14442 enum
14443 {
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060014444 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 -070014445 };
14446 };
14447
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014448 struct MemoryBarrier
14449 {
14450 MemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags() )
14451 : sType( StructureType::eMemoryBarrier )
14452 , pNext( nullptr )
14453 , srcAccessMask( srcAccessMask_ )
14454 , dstAccessMask( dstAccessMask_ )
14455 {
14456 }
14457
14458 MemoryBarrier( VkMemoryBarrier const & rhs )
14459 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014460 memcpy( this, &rhs, sizeof( MemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014461 }
14462
14463 MemoryBarrier& operator=( VkMemoryBarrier const & rhs )
14464 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014465 memcpy( this, &rhs, sizeof( MemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014466 return *this;
14467 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014468 MemoryBarrier& setPNext( const void* pNext_ )
14469 {
14470 pNext = pNext_;
14471 return *this;
14472 }
14473
14474 MemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
14475 {
14476 srcAccessMask = srcAccessMask_;
14477 return *this;
14478 }
14479
14480 MemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
14481 {
14482 dstAccessMask = dstAccessMask_;
14483 return *this;
14484 }
14485
14486 operator const VkMemoryBarrier&() const
14487 {
14488 return *reinterpret_cast<const VkMemoryBarrier*>(this);
14489 }
14490
14491 bool operator==( MemoryBarrier const& rhs ) const
14492 {
14493 return ( sType == rhs.sType )
14494 && ( pNext == rhs.pNext )
14495 && ( srcAccessMask == rhs.srcAccessMask )
14496 && ( dstAccessMask == rhs.dstAccessMask );
14497 }
14498
14499 bool operator!=( MemoryBarrier const& rhs ) const
14500 {
14501 return !operator==( rhs );
14502 }
14503
14504 private:
14505 StructureType sType;
14506
14507 public:
14508 const void* pNext;
14509 AccessFlags srcAccessMask;
14510 AccessFlags dstAccessMask;
14511 };
14512 static_assert( sizeof( MemoryBarrier ) == sizeof( VkMemoryBarrier ), "struct and wrapper have different size!" );
14513
14514 struct BufferMemoryBarrier
14515 {
14516 BufferMemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), uint32_t srcQueueFamilyIndex_ = 0, uint32_t dstQueueFamilyIndex_ = 0, Buffer buffer_ = Buffer(), DeviceSize offset_ = 0, DeviceSize size_ = 0 )
14517 : sType( StructureType::eBufferMemoryBarrier )
14518 , pNext( nullptr )
14519 , srcAccessMask( srcAccessMask_ )
14520 , dstAccessMask( dstAccessMask_ )
14521 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
14522 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
14523 , buffer( buffer_ )
14524 , offset( offset_ )
14525 , size( size_ )
14526 {
14527 }
14528
14529 BufferMemoryBarrier( VkBufferMemoryBarrier const & rhs )
14530 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014531 memcpy( this, &rhs, sizeof( BufferMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014532 }
14533
14534 BufferMemoryBarrier& operator=( VkBufferMemoryBarrier const & rhs )
14535 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014536 memcpy( this, &rhs, sizeof( BufferMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014537 return *this;
14538 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014539 BufferMemoryBarrier& setPNext( const void* pNext_ )
14540 {
14541 pNext = pNext_;
14542 return *this;
14543 }
14544
14545 BufferMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
14546 {
14547 srcAccessMask = srcAccessMask_;
14548 return *this;
14549 }
14550
14551 BufferMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
14552 {
14553 dstAccessMask = dstAccessMask_;
14554 return *this;
14555 }
14556
14557 BufferMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
14558 {
14559 srcQueueFamilyIndex = srcQueueFamilyIndex_;
14560 return *this;
14561 }
14562
14563 BufferMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
14564 {
14565 dstQueueFamilyIndex = dstQueueFamilyIndex_;
14566 return *this;
14567 }
14568
14569 BufferMemoryBarrier& setBuffer( Buffer buffer_ )
14570 {
14571 buffer = buffer_;
14572 return *this;
14573 }
14574
14575 BufferMemoryBarrier& setOffset( DeviceSize offset_ )
14576 {
14577 offset = offset_;
14578 return *this;
14579 }
14580
14581 BufferMemoryBarrier& setSize( DeviceSize size_ )
14582 {
14583 size = size_;
14584 return *this;
14585 }
14586
14587 operator const VkBufferMemoryBarrier&() const
14588 {
14589 return *reinterpret_cast<const VkBufferMemoryBarrier*>(this);
14590 }
14591
14592 bool operator==( BufferMemoryBarrier const& rhs ) const
14593 {
14594 return ( sType == rhs.sType )
14595 && ( pNext == rhs.pNext )
14596 && ( srcAccessMask == rhs.srcAccessMask )
14597 && ( dstAccessMask == rhs.dstAccessMask )
14598 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
14599 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
14600 && ( buffer == rhs.buffer )
14601 && ( offset == rhs.offset )
14602 && ( size == rhs.size );
14603 }
14604
14605 bool operator!=( BufferMemoryBarrier const& rhs ) const
14606 {
14607 return !operator==( rhs );
14608 }
14609
14610 private:
14611 StructureType sType;
14612
14613 public:
14614 const void* pNext;
14615 AccessFlags srcAccessMask;
14616 AccessFlags dstAccessMask;
14617 uint32_t srcQueueFamilyIndex;
14618 uint32_t dstQueueFamilyIndex;
14619 Buffer buffer;
14620 DeviceSize offset;
14621 DeviceSize size;
14622 };
14623 static_assert( sizeof( BufferMemoryBarrier ) == sizeof( VkBufferMemoryBarrier ), "struct and wrapper have different size!" );
14624
14625 enum class BufferUsageFlagBits
14626 {
14627 eTransferSrc = VK_BUFFER_USAGE_TRANSFER_SRC_BIT,
14628 eTransferDst = VK_BUFFER_USAGE_TRANSFER_DST_BIT,
14629 eUniformTexelBuffer = VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT,
14630 eStorageTexelBuffer = VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT,
14631 eUniformBuffer = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
14632 eStorageBuffer = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
14633 eIndexBuffer = VK_BUFFER_USAGE_INDEX_BUFFER_BIT,
14634 eVertexBuffer = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,
14635 eIndirectBuffer = VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
14636 };
14637
14638 using BufferUsageFlags = Flags<BufferUsageFlagBits, VkBufferUsageFlags>;
14639
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014640 VULKAN_HPP_INLINE BufferUsageFlags operator|( BufferUsageFlagBits bit0, BufferUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014641 {
14642 return BufferUsageFlags( bit0 ) | bit1;
14643 }
14644
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014645 VULKAN_HPP_INLINE BufferUsageFlags operator~( BufferUsageFlagBits bits )
14646 {
14647 return ~( BufferUsageFlags( bits ) );
14648 }
14649
14650 template <> struct FlagTraits<BufferUsageFlagBits>
14651 {
14652 enum
14653 {
14654 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)
14655 };
14656 };
14657
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014658 enum class BufferCreateFlagBits
14659 {
14660 eSparseBinding = VK_BUFFER_CREATE_SPARSE_BINDING_BIT,
14661 eSparseResidency = VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT,
14662 eSparseAliased = VK_BUFFER_CREATE_SPARSE_ALIASED_BIT
14663 };
14664
14665 using BufferCreateFlags = Flags<BufferCreateFlagBits, VkBufferCreateFlags>;
14666
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014667 VULKAN_HPP_INLINE BufferCreateFlags operator|( BufferCreateFlagBits bit0, BufferCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014668 {
14669 return BufferCreateFlags( bit0 ) | bit1;
14670 }
14671
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014672 VULKAN_HPP_INLINE BufferCreateFlags operator~( BufferCreateFlagBits bits )
14673 {
14674 return ~( BufferCreateFlags( bits ) );
14675 }
14676
14677 template <> struct FlagTraits<BufferCreateFlagBits>
14678 {
14679 enum
14680 {
14681 allFlags = VkFlags(BufferCreateFlagBits::eSparseBinding) | VkFlags(BufferCreateFlagBits::eSparseResidency) | VkFlags(BufferCreateFlagBits::eSparseAliased)
14682 };
14683 };
14684
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014685 struct BufferCreateInfo
14686 {
14687 BufferCreateInfo( BufferCreateFlags flags_ = BufferCreateFlags(), DeviceSize size_ = 0, BufferUsageFlags usage_ = BufferUsageFlags(), SharingMode sharingMode_ = SharingMode::eExclusive, uint32_t queueFamilyIndexCount_ = 0, const uint32_t* pQueueFamilyIndices_ = nullptr )
14688 : sType( StructureType::eBufferCreateInfo )
14689 , pNext( nullptr )
14690 , flags( flags_ )
14691 , size( size_ )
14692 , usage( usage_ )
14693 , sharingMode( sharingMode_ )
14694 , queueFamilyIndexCount( queueFamilyIndexCount_ )
14695 , pQueueFamilyIndices( pQueueFamilyIndices_ )
14696 {
14697 }
14698
14699 BufferCreateInfo( VkBufferCreateInfo const & rhs )
14700 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014701 memcpy( this, &rhs, sizeof( BufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014702 }
14703
14704 BufferCreateInfo& operator=( VkBufferCreateInfo const & rhs )
14705 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014706 memcpy( this, &rhs, sizeof( BufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014707 return *this;
14708 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014709 BufferCreateInfo& setPNext( const void* pNext_ )
14710 {
14711 pNext = pNext_;
14712 return *this;
14713 }
14714
14715 BufferCreateInfo& setFlags( BufferCreateFlags flags_ )
14716 {
14717 flags = flags_;
14718 return *this;
14719 }
14720
14721 BufferCreateInfo& setSize( DeviceSize size_ )
14722 {
14723 size = size_;
14724 return *this;
14725 }
14726
14727 BufferCreateInfo& setUsage( BufferUsageFlags usage_ )
14728 {
14729 usage = usage_;
14730 return *this;
14731 }
14732
14733 BufferCreateInfo& setSharingMode( SharingMode sharingMode_ )
14734 {
14735 sharingMode = sharingMode_;
14736 return *this;
14737 }
14738
14739 BufferCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
14740 {
14741 queueFamilyIndexCount = queueFamilyIndexCount_;
14742 return *this;
14743 }
14744
14745 BufferCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
14746 {
14747 pQueueFamilyIndices = pQueueFamilyIndices_;
14748 return *this;
14749 }
14750
14751 operator const VkBufferCreateInfo&() const
14752 {
14753 return *reinterpret_cast<const VkBufferCreateInfo*>(this);
14754 }
14755
14756 bool operator==( BufferCreateInfo const& rhs ) const
14757 {
14758 return ( sType == rhs.sType )
14759 && ( pNext == rhs.pNext )
14760 && ( flags == rhs.flags )
14761 && ( size == rhs.size )
14762 && ( usage == rhs.usage )
14763 && ( sharingMode == rhs.sharingMode )
14764 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
14765 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices );
14766 }
14767
14768 bool operator!=( BufferCreateInfo const& rhs ) const
14769 {
14770 return !operator==( rhs );
14771 }
14772
14773 private:
14774 StructureType sType;
14775
14776 public:
14777 const void* pNext;
14778 BufferCreateFlags flags;
14779 DeviceSize size;
14780 BufferUsageFlags usage;
14781 SharingMode sharingMode;
14782 uint32_t queueFamilyIndexCount;
14783 const uint32_t* pQueueFamilyIndices;
14784 };
14785 static_assert( sizeof( BufferCreateInfo ) == sizeof( VkBufferCreateInfo ), "struct and wrapper have different size!" );
14786
14787 enum class ShaderStageFlagBits
14788 {
14789 eVertex = VK_SHADER_STAGE_VERTEX_BIT,
14790 eTessellationControl = VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,
14791 eTessellationEvaluation = VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,
14792 eGeometry = VK_SHADER_STAGE_GEOMETRY_BIT,
14793 eFragment = VK_SHADER_STAGE_FRAGMENT_BIT,
14794 eCompute = VK_SHADER_STAGE_COMPUTE_BIT,
14795 eAllGraphics = VK_SHADER_STAGE_ALL_GRAPHICS,
14796 eAll = VK_SHADER_STAGE_ALL
14797 };
14798
14799 using ShaderStageFlags = Flags<ShaderStageFlagBits, VkShaderStageFlags>;
14800
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014801 VULKAN_HPP_INLINE ShaderStageFlags operator|( ShaderStageFlagBits bit0, ShaderStageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014802 {
14803 return ShaderStageFlags( bit0 ) | bit1;
14804 }
14805
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014806 VULKAN_HPP_INLINE ShaderStageFlags operator~( ShaderStageFlagBits bits )
14807 {
14808 return ~( ShaderStageFlags( bits ) );
14809 }
14810
14811 template <> struct FlagTraits<ShaderStageFlagBits>
14812 {
14813 enum
14814 {
14815 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)
14816 };
14817 };
14818
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014819 struct DescriptorSetLayoutBinding
14820 {
14821 DescriptorSetLayoutBinding( uint32_t binding_ = 0, DescriptorType descriptorType_ = DescriptorType::eSampler, uint32_t descriptorCount_ = 0, ShaderStageFlags stageFlags_ = ShaderStageFlags(), const Sampler* pImmutableSamplers_ = nullptr )
14822 : binding( binding_ )
14823 , descriptorType( descriptorType_ )
14824 , descriptorCount( descriptorCount_ )
14825 , stageFlags( stageFlags_ )
14826 , pImmutableSamplers( pImmutableSamplers_ )
14827 {
14828 }
14829
14830 DescriptorSetLayoutBinding( VkDescriptorSetLayoutBinding const & rhs )
14831 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014832 memcpy( this, &rhs, sizeof( DescriptorSetLayoutBinding ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014833 }
14834
14835 DescriptorSetLayoutBinding& operator=( VkDescriptorSetLayoutBinding const & rhs )
14836 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014837 memcpy( this, &rhs, sizeof( DescriptorSetLayoutBinding ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014838 return *this;
14839 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014840 DescriptorSetLayoutBinding& setBinding( uint32_t binding_ )
14841 {
14842 binding = binding_;
14843 return *this;
14844 }
14845
14846 DescriptorSetLayoutBinding& setDescriptorType( DescriptorType descriptorType_ )
14847 {
14848 descriptorType = descriptorType_;
14849 return *this;
14850 }
14851
14852 DescriptorSetLayoutBinding& setDescriptorCount( uint32_t descriptorCount_ )
14853 {
14854 descriptorCount = descriptorCount_;
14855 return *this;
14856 }
14857
14858 DescriptorSetLayoutBinding& setStageFlags( ShaderStageFlags stageFlags_ )
14859 {
14860 stageFlags = stageFlags_;
14861 return *this;
14862 }
14863
14864 DescriptorSetLayoutBinding& setPImmutableSamplers( const Sampler* pImmutableSamplers_ )
14865 {
14866 pImmutableSamplers = pImmutableSamplers_;
14867 return *this;
14868 }
14869
14870 operator const VkDescriptorSetLayoutBinding&() const
14871 {
14872 return *reinterpret_cast<const VkDescriptorSetLayoutBinding*>(this);
14873 }
14874
14875 bool operator==( DescriptorSetLayoutBinding const& rhs ) const
14876 {
14877 return ( binding == rhs.binding )
14878 && ( descriptorType == rhs.descriptorType )
14879 && ( descriptorCount == rhs.descriptorCount )
14880 && ( stageFlags == rhs.stageFlags )
14881 && ( pImmutableSamplers == rhs.pImmutableSamplers );
14882 }
14883
14884 bool operator!=( DescriptorSetLayoutBinding const& rhs ) const
14885 {
14886 return !operator==( rhs );
14887 }
14888
14889 uint32_t binding;
14890 DescriptorType descriptorType;
14891 uint32_t descriptorCount;
14892 ShaderStageFlags stageFlags;
14893 const Sampler* pImmutableSamplers;
14894 };
14895 static_assert( sizeof( DescriptorSetLayoutBinding ) == sizeof( VkDescriptorSetLayoutBinding ), "struct and wrapper have different size!" );
14896
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014897 struct PipelineShaderStageCreateInfo
14898 {
14899 PipelineShaderStageCreateInfo( PipelineShaderStageCreateFlags flags_ = PipelineShaderStageCreateFlags(), ShaderStageFlagBits stage_ = ShaderStageFlagBits::eVertex, ShaderModule module_ = ShaderModule(), const char* pName_ = nullptr, const SpecializationInfo* pSpecializationInfo_ = nullptr )
14900 : sType( StructureType::ePipelineShaderStageCreateInfo )
14901 , pNext( nullptr )
14902 , flags( flags_ )
14903 , stage( stage_ )
14904 , module( module_ )
14905 , pName( pName_ )
14906 , pSpecializationInfo( pSpecializationInfo_ )
14907 {
14908 }
14909
14910 PipelineShaderStageCreateInfo( VkPipelineShaderStageCreateInfo const & rhs )
14911 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014912 memcpy( this, &rhs, sizeof( PipelineShaderStageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014913 }
14914
14915 PipelineShaderStageCreateInfo& operator=( VkPipelineShaderStageCreateInfo const & rhs )
14916 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014917 memcpy( this, &rhs, sizeof( PipelineShaderStageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014918 return *this;
14919 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014920 PipelineShaderStageCreateInfo& setPNext( const void* pNext_ )
14921 {
14922 pNext = pNext_;
14923 return *this;
14924 }
14925
14926 PipelineShaderStageCreateInfo& setFlags( PipelineShaderStageCreateFlags flags_ )
14927 {
14928 flags = flags_;
14929 return *this;
14930 }
14931
14932 PipelineShaderStageCreateInfo& setStage( ShaderStageFlagBits stage_ )
14933 {
14934 stage = stage_;
14935 return *this;
14936 }
14937
14938 PipelineShaderStageCreateInfo& setModule( ShaderModule module_ )
14939 {
14940 module = module_;
14941 return *this;
14942 }
14943
14944 PipelineShaderStageCreateInfo& setPName( const char* pName_ )
14945 {
14946 pName = pName_;
14947 return *this;
14948 }
14949
14950 PipelineShaderStageCreateInfo& setPSpecializationInfo( const SpecializationInfo* pSpecializationInfo_ )
14951 {
14952 pSpecializationInfo = pSpecializationInfo_;
14953 return *this;
14954 }
14955
14956 operator const VkPipelineShaderStageCreateInfo&() const
14957 {
14958 return *reinterpret_cast<const VkPipelineShaderStageCreateInfo*>(this);
14959 }
14960
14961 bool operator==( PipelineShaderStageCreateInfo const& rhs ) const
14962 {
14963 return ( sType == rhs.sType )
14964 && ( pNext == rhs.pNext )
14965 && ( flags == rhs.flags )
14966 && ( stage == rhs.stage )
14967 && ( module == rhs.module )
14968 && ( pName == rhs.pName )
14969 && ( pSpecializationInfo == rhs.pSpecializationInfo );
14970 }
14971
14972 bool operator!=( PipelineShaderStageCreateInfo const& rhs ) const
14973 {
14974 return !operator==( rhs );
14975 }
14976
14977 private:
14978 StructureType sType;
14979
14980 public:
14981 const void* pNext;
14982 PipelineShaderStageCreateFlags flags;
14983 ShaderStageFlagBits stage;
14984 ShaderModule module;
14985 const char* pName;
14986 const SpecializationInfo* pSpecializationInfo;
14987 };
14988 static_assert( sizeof( PipelineShaderStageCreateInfo ) == sizeof( VkPipelineShaderStageCreateInfo ), "struct and wrapper have different size!" );
14989
14990 struct PushConstantRange
14991 {
14992 PushConstantRange( ShaderStageFlags stageFlags_ = ShaderStageFlags(), uint32_t offset_ = 0, uint32_t size_ = 0 )
14993 : stageFlags( stageFlags_ )
14994 , offset( offset_ )
14995 , size( size_ )
14996 {
14997 }
14998
14999 PushConstantRange( VkPushConstantRange const & rhs )
15000 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015001 memcpy( this, &rhs, sizeof( PushConstantRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015002 }
15003
15004 PushConstantRange& operator=( VkPushConstantRange const & rhs )
15005 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015006 memcpy( this, &rhs, sizeof( PushConstantRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015007 return *this;
15008 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015009 PushConstantRange& setStageFlags( ShaderStageFlags stageFlags_ )
15010 {
15011 stageFlags = stageFlags_;
15012 return *this;
15013 }
15014
15015 PushConstantRange& setOffset( uint32_t offset_ )
15016 {
15017 offset = offset_;
15018 return *this;
15019 }
15020
15021 PushConstantRange& setSize( uint32_t size_ )
15022 {
15023 size = size_;
15024 return *this;
15025 }
15026
15027 operator const VkPushConstantRange&() const
15028 {
15029 return *reinterpret_cast<const VkPushConstantRange*>(this);
15030 }
15031
15032 bool operator==( PushConstantRange const& rhs ) const
15033 {
15034 return ( stageFlags == rhs.stageFlags )
15035 && ( offset == rhs.offset )
15036 && ( size == rhs.size );
15037 }
15038
15039 bool operator!=( PushConstantRange const& rhs ) const
15040 {
15041 return !operator==( rhs );
15042 }
15043
15044 ShaderStageFlags stageFlags;
15045 uint32_t offset;
15046 uint32_t size;
15047 };
15048 static_assert( sizeof( PushConstantRange ) == sizeof( VkPushConstantRange ), "struct and wrapper have different size!" );
15049
15050 struct PipelineLayoutCreateInfo
15051 {
15052 PipelineLayoutCreateInfo( PipelineLayoutCreateFlags flags_ = PipelineLayoutCreateFlags(), uint32_t setLayoutCount_ = 0, const DescriptorSetLayout* pSetLayouts_ = nullptr, uint32_t pushConstantRangeCount_ = 0, const PushConstantRange* pPushConstantRanges_ = nullptr )
15053 : sType( StructureType::ePipelineLayoutCreateInfo )
15054 , pNext( nullptr )
15055 , flags( flags_ )
15056 , setLayoutCount( setLayoutCount_ )
15057 , pSetLayouts( pSetLayouts_ )
15058 , pushConstantRangeCount( pushConstantRangeCount_ )
15059 , pPushConstantRanges( pPushConstantRanges_ )
15060 {
15061 }
15062
15063 PipelineLayoutCreateInfo( VkPipelineLayoutCreateInfo const & rhs )
15064 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015065 memcpy( this, &rhs, sizeof( PipelineLayoutCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015066 }
15067
15068 PipelineLayoutCreateInfo& operator=( VkPipelineLayoutCreateInfo const & rhs )
15069 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015070 memcpy( this, &rhs, sizeof( PipelineLayoutCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015071 return *this;
15072 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015073 PipelineLayoutCreateInfo& setPNext( const void* pNext_ )
15074 {
15075 pNext = pNext_;
15076 return *this;
15077 }
15078
15079 PipelineLayoutCreateInfo& setFlags( PipelineLayoutCreateFlags flags_ )
15080 {
15081 flags = flags_;
15082 return *this;
15083 }
15084
15085 PipelineLayoutCreateInfo& setSetLayoutCount( uint32_t setLayoutCount_ )
15086 {
15087 setLayoutCount = setLayoutCount_;
15088 return *this;
15089 }
15090
15091 PipelineLayoutCreateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
15092 {
15093 pSetLayouts = pSetLayouts_;
15094 return *this;
15095 }
15096
15097 PipelineLayoutCreateInfo& setPushConstantRangeCount( uint32_t pushConstantRangeCount_ )
15098 {
15099 pushConstantRangeCount = pushConstantRangeCount_;
15100 return *this;
15101 }
15102
15103 PipelineLayoutCreateInfo& setPPushConstantRanges( const PushConstantRange* pPushConstantRanges_ )
15104 {
15105 pPushConstantRanges = pPushConstantRanges_;
15106 return *this;
15107 }
15108
15109 operator const VkPipelineLayoutCreateInfo&() const
15110 {
15111 return *reinterpret_cast<const VkPipelineLayoutCreateInfo*>(this);
15112 }
15113
15114 bool operator==( PipelineLayoutCreateInfo const& rhs ) const
15115 {
15116 return ( sType == rhs.sType )
15117 && ( pNext == rhs.pNext )
15118 && ( flags == rhs.flags )
15119 && ( setLayoutCount == rhs.setLayoutCount )
15120 && ( pSetLayouts == rhs.pSetLayouts )
15121 && ( pushConstantRangeCount == rhs.pushConstantRangeCount )
15122 && ( pPushConstantRanges == rhs.pPushConstantRanges );
15123 }
15124
15125 bool operator!=( PipelineLayoutCreateInfo const& rhs ) const
15126 {
15127 return !operator==( rhs );
15128 }
15129
15130 private:
15131 StructureType sType;
15132
15133 public:
15134 const void* pNext;
15135 PipelineLayoutCreateFlags flags;
15136 uint32_t setLayoutCount;
15137 const DescriptorSetLayout* pSetLayouts;
15138 uint32_t pushConstantRangeCount;
15139 const PushConstantRange* pPushConstantRanges;
15140 };
15141 static_assert( sizeof( PipelineLayoutCreateInfo ) == sizeof( VkPipelineLayoutCreateInfo ), "struct and wrapper have different size!" );
15142
15143 enum class ImageUsageFlagBits
15144 {
15145 eTransferSrc = VK_IMAGE_USAGE_TRANSFER_SRC_BIT,
15146 eTransferDst = VK_IMAGE_USAGE_TRANSFER_DST_BIT,
15147 eSampled = VK_IMAGE_USAGE_SAMPLED_BIT,
15148 eStorage = VK_IMAGE_USAGE_STORAGE_BIT,
15149 eColorAttachment = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
15150 eDepthStencilAttachment = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,
15151 eTransientAttachment = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,
15152 eInputAttachment = VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
15153 };
15154
15155 using ImageUsageFlags = Flags<ImageUsageFlagBits, VkImageUsageFlags>;
15156
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015157 VULKAN_HPP_INLINE ImageUsageFlags operator|( ImageUsageFlagBits bit0, ImageUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015158 {
15159 return ImageUsageFlags( bit0 ) | bit1;
15160 }
15161
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015162 VULKAN_HPP_INLINE ImageUsageFlags operator~( ImageUsageFlagBits bits )
15163 {
15164 return ~( ImageUsageFlags( bits ) );
15165 }
15166
15167 template <> struct FlagTraits<ImageUsageFlagBits>
15168 {
15169 enum
15170 {
15171 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)
15172 };
15173 };
15174
Mark Lobodzinski54385432017-05-15 10:27:52 -060015175 struct SharedPresentSurfaceCapabilitiesKHR
15176 {
15177 operator const VkSharedPresentSurfaceCapabilitiesKHR&() const
15178 {
15179 return *reinterpret_cast<const VkSharedPresentSurfaceCapabilitiesKHR*>(this);
15180 }
15181
15182 bool operator==( SharedPresentSurfaceCapabilitiesKHR const& rhs ) const
15183 {
15184 return ( sType == rhs.sType )
15185 && ( pNext == rhs.pNext )
15186 && ( sharedPresentSupportedUsageFlags == rhs.sharedPresentSupportedUsageFlags );
15187 }
15188
15189 bool operator!=( SharedPresentSurfaceCapabilitiesKHR const& rhs ) const
15190 {
15191 return !operator==( rhs );
15192 }
15193
15194 private:
15195 StructureType sType;
15196
15197 public:
15198 void* pNext;
15199 ImageUsageFlags sharedPresentSupportedUsageFlags;
15200 };
15201 static_assert( sizeof( SharedPresentSurfaceCapabilitiesKHR ) == sizeof( VkSharedPresentSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" );
15202
Lenny Komowb79f04a2017-09-18 17:07:00 -060015203 struct ImageViewUsageCreateInfoKHR
15204 {
15205 ImageViewUsageCreateInfoKHR( ImageUsageFlags usage_ = ImageUsageFlags() )
15206 : sType( StructureType::eImageViewUsageCreateInfoKHR )
15207 , pNext( nullptr )
15208 , usage( usage_ )
15209 {
15210 }
15211
15212 ImageViewUsageCreateInfoKHR( VkImageViewUsageCreateInfoKHR const & rhs )
15213 {
15214 memcpy( this, &rhs, sizeof( ImageViewUsageCreateInfoKHR ) );
15215 }
15216
15217 ImageViewUsageCreateInfoKHR& operator=( VkImageViewUsageCreateInfoKHR const & rhs )
15218 {
15219 memcpy( this, &rhs, sizeof( ImageViewUsageCreateInfoKHR ) );
15220 return *this;
15221 }
15222 ImageViewUsageCreateInfoKHR& setPNext( const void* pNext_ )
15223 {
15224 pNext = pNext_;
15225 return *this;
15226 }
15227
15228 ImageViewUsageCreateInfoKHR& setUsage( ImageUsageFlags usage_ )
15229 {
15230 usage = usage_;
15231 return *this;
15232 }
15233
15234 operator const VkImageViewUsageCreateInfoKHR&() const
15235 {
15236 return *reinterpret_cast<const VkImageViewUsageCreateInfoKHR*>(this);
15237 }
15238
15239 bool operator==( ImageViewUsageCreateInfoKHR const& rhs ) const
15240 {
15241 return ( sType == rhs.sType )
15242 && ( pNext == rhs.pNext )
15243 && ( usage == rhs.usage );
15244 }
15245
15246 bool operator!=( ImageViewUsageCreateInfoKHR const& rhs ) const
15247 {
15248 return !operator==( rhs );
15249 }
15250
15251 private:
15252 StructureType sType;
15253
15254 public:
15255 const void* pNext;
15256 ImageUsageFlags usage;
15257 };
15258 static_assert( sizeof( ImageViewUsageCreateInfoKHR ) == sizeof( VkImageViewUsageCreateInfoKHR ), "struct and wrapper have different size!" );
15259
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015260 enum class ImageCreateFlagBits
15261 {
15262 eSparseBinding = VK_IMAGE_CREATE_SPARSE_BINDING_BIT,
15263 eSparseResidency = VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT,
15264 eSparseAliased = VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,
15265 eMutableFormat = VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,
Mark Young39389872017-01-19 21:10:49 -070015266 eCubeCompatible = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,
Mark Young0f183a82017-02-28 09:58:04 -070015267 eBindSfrKHX = VK_IMAGE_CREATE_BIND_SFR_BIT_KHX,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060015268 e2DArrayCompatibleKHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR,
Lenny Komowb79f04a2017-09-18 17:07:00 -060015269 eBlockTexelViewCompatibleKHR = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR,
15270 eExtendedUsageKHR = VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR,
15271 eSampleLocationsCompatibleDepthEXT = VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT,
15272 eDisjointKHR = VK_IMAGE_CREATE_DISJOINT_BIT_KHR,
15273 eAliasKHR = VK_IMAGE_CREATE_ALIAS_BIT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015274 };
15275
15276 using ImageCreateFlags = Flags<ImageCreateFlagBits, VkImageCreateFlags>;
15277
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015278 VULKAN_HPP_INLINE ImageCreateFlags operator|( ImageCreateFlagBits bit0, ImageCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015279 {
15280 return ImageCreateFlags( bit0 ) | bit1;
15281 }
15282
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015283 VULKAN_HPP_INLINE ImageCreateFlags operator~( ImageCreateFlagBits bits )
15284 {
15285 return ~( ImageCreateFlags( bits ) );
15286 }
15287
15288 template <> struct FlagTraits<ImageCreateFlagBits>
15289 {
15290 enum
15291 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060015292 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 -070015293 };
15294 };
15295
Mark Young39389872017-01-19 21:10:49 -070015296 struct PhysicalDeviceImageFormatInfo2KHR
15297 {
15298 PhysicalDeviceImageFormatInfo2KHR( Format format_ = Format::eUndefined, ImageType type_ = ImageType::e1D, ImageTiling tiling_ = ImageTiling::eOptimal, ImageUsageFlags usage_ = ImageUsageFlags(), ImageCreateFlags flags_ = ImageCreateFlags() )
15299 : sType( StructureType::ePhysicalDeviceImageFormatInfo2KHR )
15300 , pNext( nullptr )
15301 , format( format_ )
15302 , type( type_ )
15303 , tiling( tiling_ )
15304 , usage( usage_ )
15305 , flags( flags_ )
15306 {
15307 }
15308
15309 PhysicalDeviceImageFormatInfo2KHR( VkPhysicalDeviceImageFormatInfo2KHR const & rhs )
15310 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015311 memcpy( this, &rhs, sizeof( PhysicalDeviceImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070015312 }
15313
15314 PhysicalDeviceImageFormatInfo2KHR& operator=( VkPhysicalDeviceImageFormatInfo2KHR const & rhs )
15315 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015316 memcpy( this, &rhs, sizeof( PhysicalDeviceImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070015317 return *this;
15318 }
Mark Young39389872017-01-19 21:10:49 -070015319 PhysicalDeviceImageFormatInfo2KHR& setPNext( const void* pNext_ )
15320 {
15321 pNext = pNext_;
15322 return *this;
15323 }
15324
15325 PhysicalDeviceImageFormatInfo2KHR& setFormat( Format format_ )
15326 {
15327 format = format_;
15328 return *this;
15329 }
15330
15331 PhysicalDeviceImageFormatInfo2KHR& setType( ImageType type_ )
15332 {
15333 type = type_;
15334 return *this;
15335 }
15336
15337 PhysicalDeviceImageFormatInfo2KHR& setTiling( ImageTiling tiling_ )
15338 {
15339 tiling = tiling_;
15340 return *this;
15341 }
15342
15343 PhysicalDeviceImageFormatInfo2KHR& setUsage( ImageUsageFlags usage_ )
15344 {
15345 usage = usage_;
15346 return *this;
15347 }
15348
15349 PhysicalDeviceImageFormatInfo2KHR& setFlags( ImageCreateFlags flags_ )
15350 {
15351 flags = flags_;
15352 return *this;
15353 }
15354
15355 operator const VkPhysicalDeviceImageFormatInfo2KHR&() const
15356 {
15357 return *reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>(this);
15358 }
15359
15360 bool operator==( PhysicalDeviceImageFormatInfo2KHR const& rhs ) const
15361 {
15362 return ( sType == rhs.sType )
15363 && ( pNext == rhs.pNext )
15364 && ( format == rhs.format )
15365 && ( type == rhs.type )
15366 && ( tiling == rhs.tiling )
15367 && ( usage == rhs.usage )
15368 && ( flags == rhs.flags );
15369 }
15370
15371 bool operator!=( PhysicalDeviceImageFormatInfo2KHR const& rhs ) const
15372 {
15373 return !operator==( rhs );
15374 }
15375
15376 private:
15377 StructureType sType;
15378
15379 public:
15380 const void* pNext;
15381 Format format;
15382 ImageType type;
15383 ImageTiling tiling;
15384 ImageUsageFlags usage;
15385 ImageCreateFlags flags;
15386 };
15387 static_assert( sizeof( PhysicalDeviceImageFormatInfo2KHR ) == sizeof( VkPhysicalDeviceImageFormatInfo2KHR ), "struct and wrapper have different size!" );
15388
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015389 enum class PipelineCreateFlagBits
15390 {
15391 eDisableOptimization = VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT,
15392 eAllowDerivatives = VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT,
Mark Young0f183a82017-02-28 09:58:04 -070015393 eDerivative = VK_PIPELINE_CREATE_DERIVATIVE_BIT,
15394 eViewIndexFromDeviceIndexKHX = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX,
15395 eDispatchBaseKHX = VK_PIPELINE_CREATE_DISPATCH_BASE_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015396 };
15397
15398 using PipelineCreateFlags = Flags<PipelineCreateFlagBits, VkPipelineCreateFlags>;
15399
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015400 VULKAN_HPP_INLINE PipelineCreateFlags operator|( PipelineCreateFlagBits bit0, PipelineCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015401 {
15402 return PipelineCreateFlags( bit0 ) | bit1;
15403 }
15404
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015405 VULKAN_HPP_INLINE PipelineCreateFlags operator~( PipelineCreateFlagBits bits )
15406 {
15407 return ~( PipelineCreateFlags( bits ) );
15408 }
15409
15410 template <> struct FlagTraits<PipelineCreateFlagBits>
15411 {
15412 enum
15413 {
Mark Young0f183a82017-02-28 09:58:04 -070015414 allFlags = VkFlags(PipelineCreateFlagBits::eDisableOptimization) | VkFlags(PipelineCreateFlagBits::eAllowDerivatives) | VkFlags(PipelineCreateFlagBits::eDerivative) | VkFlags(PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX) | VkFlags(PipelineCreateFlagBits::eDispatchBaseKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015415 };
15416 };
15417
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015418 struct ComputePipelineCreateInfo
15419 {
15420 ComputePipelineCreateInfo( PipelineCreateFlags flags_ = PipelineCreateFlags(), PipelineShaderStageCreateInfo stage_ = PipelineShaderStageCreateInfo(), PipelineLayout layout_ = PipelineLayout(), Pipeline basePipelineHandle_ = Pipeline(), int32_t basePipelineIndex_ = 0 )
15421 : sType( StructureType::eComputePipelineCreateInfo )
15422 , pNext( nullptr )
15423 , flags( flags_ )
15424 , stage( stage_ )
15425 , layout( layout_ )
15426 , basePipelineHandle( basePipelineHandle_ )
15427 , basePipelineIndex( basePipelineIndex_ )
15428 {
15429 }
15430
15431 ComputePipelineCreateInfo( VkComputePipelineCreateInfo const & rhs )
15432 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015433 memcpy( this, &rhs, sizeof( ComputePipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015434 }
15435
15436 ComputePipelineCreateInfo& operator=( VkComputePipelineCreateInfo const & rhs )
15437 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015438 memcpy( this, &rhs, sizeof( ComputePipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015439 return *this;
15440 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015441 ComputePipelineCreateInfo& setPNext( const void* pNext_ )
15442 {
15443 pNext = pNext_;
15444 return *this;
15445 }
15446
15447 ComputePipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
15448 {
15449 flags = flags_;
15450 return *this;
15451 }
15452
15453 ComputePipelineCreateInfo& setStage( PipelineShaderStageCreateInfo stage_ )
15454 {
15455 stage = stage_;
15456 return *this;
15457 }
15458
15459 ComputePipelineCreateInfo& setLayout( PipelineLayout layout_ )
15460 {
15461 layout = layout_;
15462 return *this;
15463 }
15464
15465 ComputePipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
15466 {
15467 basePipelineHandle = basePipelineHandle_;
15468 return *this;
15469 }
15470
15471 ComputePipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
15472 {
15473 basePipelineIndex = basePipelineIndex_;
15474 return *this;
15475 }
15476
15477 operator const VkComputePipelineCreateInfo&() const
15478 {
15479 return *reinterpret_cast<const VkComputePipelineCreateInfo*>(this);
15480 }
15481
15482 bool operator==( ComputePipelineCreateInfo const& rhs ) const
15483 {
15484 return ( sType == rhs.sType )
15485 && ( pNext == rhs.pNext )
15486 && ( flags == rhs.flags )
15487 && ( stage == rhs.stage )
15488 && ( layout == rhs.layout )
15489 && ( basePipelineHandle == rhs.basePipelineHandle )
15490 && ( basePipelineIndex == rhs.basePipelineIndex );
15491 }
15492
15493 bool operator!=( ComputePipelineCreateInfo const& rhs ) const
15494 {
15495 return !operator==( rhs );
15496 }
15497
15498 private:
15499 StructureType sType;
15500
15501 public:
15502 const void* pNext;
15503 PipelineCreateFlags flags;
15504 PipelineShaderStageCreateInfo stage;
15505 PipelineLayout layout;
15506 Pipeline basePipelineHandle;
15507 int32_t basePipelineIndex;
15508 };
15509 static_assert( sizeof( ComputePipelineCreateInfo ) == sizeof( VkComputePipelineCreateInfo ), "struct and wrapper have different size!" );
15510
15511 enum class ColorComponentFlagBits
15512 {
15513 eR = VK_COLOR_COMPONENT_R_BIT,
15514 eG = VK_COLOR_COMPONENT_G_BIT,
15515 eB = VK_COLOR_COMPONENT_B_BIT,
15516 eA = VK_COLOR_COMPONENT_A_BIT
15517 };
15518
15519 using ColorComponentFlags = Flags<ColorComponentFlagBits, VkColorComponentFlags>;
15520
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015521 VULKAN_HPP_INLINE ColorComponentFlags operator|( ColorComponentFlagBits bit0, ColorComponentFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015522 {
15523 return ColorComponentFlags( bit0 ) | bit1;
15524 }
15525
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015526 VULKAN_HPP_INLINE ColorComponentFlags operator~( ColorComponentFlagBits bits )
15527 {
15528 return ~( ColorComponentFlags( bits ) );
15529 }
15530
15531 template <> struct FlagTraits<ColorComponentFlagBits>
15532 {
15533 enum
15534 {
15535 allFlags = VkFlags(ColorComponentFlagBits::eR) | VkFlags(ColorComponentFlagBits::eG) | VkFlags(ColorComponentFlagBits::eB) | VkFlags(ColorComponentFlagBits::eA)
15536 };
15537 };
15538
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015539 struct PipelineColorBlendAttachmentState
15540 {
15541 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() )
15542 : blendEnable( blendEnable_ )
15543 , srcColorBlendFactor( srcColorBlendFactor_ )
15544 , dstColorBlendFactor( dstColorBlendFactor_ )
15545 , colorBlendOp( colorBlendOp_ )
15546 , srcAlphaBlendFactor( srcAlphaBlendFactor_ )
15547 , dstAlphaBlendFactor( dstAlphaBlendFactor_ )
15548 , alphaBlendOp( alphaBlendOp_ )
15549 , colorWriteMask( colorWriteMask_ )
15550 {
15551 }
15552
15553 PipelineColorBlendAttachmentState( VkPipelineColorBlendAttachmentState const & rhs )
15554 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015555 memcpy( this, &rhs, sizeof( PipelineColorBlendAttachmentState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015556 }
15557
15558 PipelineColorBlendAttachmentState& operator=( VkPipelineColorBlendAttachmentState const & rhs )
15559 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015560 memcpy( this, &rhs, sizeof( PipelineColorBlendAttachmentState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015561 return *this;
15562 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015563 PipelineColorBlendAttachmentState& setBlendEnable( Bool32 blendEnable_ )
15564 {
15565 blendEnable = blendEnable_;
15566 return *this;
15567 }
15568
15569 PipelineColorBlendAttachmentState& setSrcColorBlendFactor( BlendFactor srcColorBlendFactor_ )
15570 {
15571 srcColorBlendFactor = srcColorBlendFactor_;
15572 return *this;
15573 }
15574
15575 PipelineColorBlendAttachmentState& setDstColorBlendFactor( BlendFactor dstColorBlendFactor_ )
15576 {
15577 dstColorBlendFactor = dstColorBlendFactor_;
15578 return *this;
15579 }
15580
15581 PipelineColorBlendAttachmentState& setColorBlendOp( BlendOp colorBlendOp_ )
15582 {
15583 colorBlendOp = colorBlendOp_;
15584 return *this;
15585 }
15586
15587 PipelineColorBlendAttachmentState& setSrcAlphaBlendFactor( BlendFactor srcAlphaBlendFactor_ )
15588 {
15589 srcAlphaBlendFactor = srcAlphaBlendFactor_;
15590 return *this;
15591 }
15592
15593 PipelineColorBlendAttachmentState& setDstAlphaBlendFactor( BlendFactor dstAlphaBlendFactor_ )
15594 {
15595 dstAlphaBlendFactor = dstAlphaBlendFactor_;
15596 return *this;
15597 }
15598
15599 PipelineColorBlendAttachmentState& setAlphaBlendOp( BlendOp alphaBlendOp_ )
15600 {
15601 alphaBlendOp = alphaBlendOp_;
15602 return *this;
15603 }
15604
15605 PipelineColorBlendAttachmentState& setColorWriteMask( ColorComponentFlags colorWriteMask_ )
15606 {
15607 colorWriteMask = colorWriteMask_;
15608 return *this;
15609 }
15610
15611 operator const VkPipelineColorBlendAttachmentState&() const
15612 {
15613 return *reinterpret_cast<const VkPipelineColorBlendAttachmentState*>(this);
15614 }
15615
15616 bool operator==( PipelineColorBlendAttachmentState const& rhs ) const
15617 {
15618 return ( blendEnable == rhs.blendEnable )
15619 && ( srcColorBlendFactor == rhs.srcColorBlendFactor )
15620 && ( dstColorBlendFactor == rhs.dstColorBlendFactor )
15621 && ( colorBlendOp == rhs.colorBlendOp )
15622 && ( srcAlphaBlendFactor == rhs.srcAlphaBlendFactor )
15623 && ( dstAlphaBlendFactor == rhs.dstAlphaBlendFactor )
15624 && ( alphaBlendOp == rhs.alphaBlendOp )
15625 && ( colorWriteMask == rhs.colorWriteMask );
15626 }
15627
15628 bool operator!=( PipelineColorBlendAttachmentState const& rhs ) const
15629 {
15630 return !operator==( rhs );
15631 }
15632
15633 Bool32 blendEnable;
15634 BlendFactor srcColorBlendFactor;
15635 BlendFactor dstColorBlendFactor;
15636 BlendOp colorBlendOp;
15637 BlendFactor srcAlphaBlendFactor;
15638 BlendFactor dstAlphaBlendFactor;
15639 BlendOp alphaBlendOp;
15640 ColorComponentFlags colorWriteMask;
15641 };
15642 static_assert( sizeof( PipelineColorBlendAttachmentState ) == sizeof( VkPipelineColorBlendAttachmentState ), "struct and wrapper have different size!" );
15643
15644 struct PipelineColorBlendStateCreateInfo
15645 {
15646 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 } } )
15647 : sType( StructureType::ePipelineColorBlendStateCreateInfo )
15648 , pNext( nullptr )
15649 , flags( flags_ )
15650 , logicOpEnable( logicOpEnable_ )
15651 , logicOp( logicOp_ )
15652 , attachmentCount( attachmentCount_ )
15653 , pAttachments( pAttachments_ )
15654 {
15655 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
15656 }
15657
15658 PipelineColorBlendStateCreateInfo( VkPipelineColorBlendStateCreateInfo const & rhs )
15659 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015660 memcpy( this, &rhs, sizeof( PipelineColorBlendStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015661 }
15662
15663 PipelineColorBlendStateCreateInfo& operator=( VkPipelineColorBlendStateCreateInfo const & rhs )
15664 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015665 memcpy( this, &rhs, sizeof( PipelineColorBlendStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015666 return *this;
15667 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015668 PipelineColorBlendStateCreateInfo& setPNext( const void* pNext_ )
15669 {
15670 pNext = pNext_;
15671 return *this;
15672 }
15673
15674 PipelineColorBlendStateCreateInfo& setFlags( PipelineColorBlendStateCreateFlags flags_ )
15675 {
15676 flags = flags_;
15677 return *this;
15678 }
15679
15680 PipelineColorBlendStateCreateInfo& setLogicOpEnable( Bool32 logicOpEnable_ )
15681 {
15682 logicOpEnable = logicOpEnable_;
15683 return *this;
15684 }
15685
15686 PipelineColorBlendStateCreateInfo& setLogicOp( LogicOp logicOp_ )
15687 {
15688 logicOp = logicOp_;
15689 return *this;
15690 }
15691
15692 PipelineColorBlendStateCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
15693 {
15694 attachmentCount = attachmentCount_;
15695 return *this;
15696 }
15697
15698 PipelineColorBlendStateCreateInfo& setPAttachments( const PipelineColorBlendAttachmentState* pAttachments_ )
15699 {
15700 pAttachments = pAttachments_;
15701 return *this;
15702 }
15703
15704 PipelineColorBlendStateCreateInfo& setBlendConstants( std::array<float,4> blendConstants_ )
15705 {
15706 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
15707 return *this;
15708 }
15709
15710 operator const VkPipelineColorBlendStateCreateInfo&() const
15711 {
15712 return *reinterpret_cast<const VkPipelineColorBlendStateCreateInfo*>(this);
15713 }
15714
15715 bool operator==( PipelineColorBlendStateCreateInfo const& rhs ) const
15716 {
15717 return ( sType == rhs.sType )
15718 && ( pNext == rhs.pNext )
15719 && ( flags == rhs.flags )
15720 && ( logicOpEnable == rhs.logicOpEnable )
15721 && ( logicOp == rhs.logicOp )
15722 && ( attachmentCount == rhs.attachmentCount )
15723 && ( pAttachments == rhs.pAttachments )
15724 && ( memcmp( blendConstants, rhs.blendConstants, 4 * sizeof( float ) ) == 0 );
15725 }
15726
15727 bool operator!=( PipelineColorBlendStateCreateInfo const& rhs ) const
15728 {
15729 return !operator==( rhs );
15730 }
15731
15732 private:
15733 StructureType sType;
15734
15735 public:
15736 const void* pNext;
15737 PipelineColorBlendStateCreateFlags flags;
15738 Bool32 logicOpEnable;
15739 LogicOp logicOp;
15740 uint32_t attachmentCount;
15741 const PipelineColorBlendAttachmentState* pAttachments;
15742 float blendConstants[4];
15743 };
15744 static_assert( sizeof( PipelineColorBlendStateCreateInfo ) == sizeof( VkPipelineColorBlendStateCreateInfo ), "struct and wrapper have different size!" );
15745
15746 enum class FenceCreateFlagBits
15747 {
15748 eSignaled = VK_FENCE_CREATE_SIGNALED_BIT
15749 };
15750
15751 using FenceCreateFlags = Flags<FenceCreateFlagBits, VkFenceCreateFlags>;
15752
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015753 VULKAN_HPP_INLINE FenceCreateFlags operator|( FenceCreateFlagBits bit0, FenceCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015754 {
15755 return FenceCreateFlags( bit0 ) | bit1;
15756 }
15757
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015758 VULKAN_HPP_INLINE FenceCreateFlags operator~( FenceCreateFlagBits bits )
15759 {
15760 return ~( FenceCreateFlags( bits ) );
15761 }
15762
15763 template <> struct FlagTraits<FenceCreateFlagBits>
15764 {
15765 enum
15766 {
15767 allFlags = VkFlags(FenceCreateFlagBits::eSignaled)
15768 };
15769 };
15770
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015771 struct FenceCreateInfo
15772 {
15773 FenceCreateInfo( FenceCreateFlags flags_ = FenceCreateFlags() )
15774 : sType( StructureType::eFenceCreateInfo )
15775 , pNext( nullptr )
15776 , flags( flags_ )
15777 {
15778 }
15779
15780 FenceCreateInfo( VkFenceCreateInfo const & rhs )
15781 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015782 memcpy( this, &rhs, sizeof( FenceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015783 }
15784
15785 FenceCreateInfo& operator=( VkFenceCreateInfo const & rhs )
15786 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015787 memcpy( this, &rhs, sizeof( FenceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015788 return *this;
15789 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015790 FenceCreateInfo& setPNext( const void* pNext_ )
15791 {
15792 pNext = pNext_;
15793 return *this;
15794 }
15795
15796 FenceCreateInfo& setFlags( FenceCreateFlags flags_ )
15797 {
15798 flags = flags_;
15799 return *this;
15800 }
15801
15802 operator const VkFenceCreateInfo&() const
15803 {
15804 return *reinterpret_cast<const VkFenceCreateInfo*>(this);
15805 }
15806
15807 bool operator==( FenceCreateInfo const& rhs ) const
15808 {
15809 return ( sType == rhs.sType )
15810 && ( pNext == rhs.pNext )
15811 && ( flags == rhs.flags );
15812 }
15813
15814 bool operator!=( FenceCreateInfo const& rhs ) const
15815 {
15816 return !operator==( rhs );
15817 }
15818
15819 private:
15820 StructureType sType;
15821
15822 public:
15823 const void* pNext;
15824 FenceCreateFlags flags;
15825 };
15826 static_assert( sizeof( FenceCreateInfo ) == sizeof( VkFenceCreateInfo ), "struct and wrapper have different size!" );
15827
15828 enum class FormatFeatureFlagBits
15829 {
15830 eSampledImage = VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
15831 eStorageImage = VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,
15832 eStorageImageAtomic = VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT,
15833 eUniformTexelBuffer = VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT,
15834 eStorageTexelBuffer = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,
15835 eStorageTexelBufferAtomic = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT,
15836 eVertexBuffer = VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,
15837 eColorAttachment = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,
15838 eColorAttachmentBlend = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
15839 eDepthStencilAttachment = VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,
15840 eBlitSrc = VK_FORMAT_FEATURE_BLIT_SRC_BIT,
15841 eBlitDst = VK_FORMAT_FEATURE_BLIT_DST_BIT,
15842 eSampledImageFilterLinear = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,
Mark Young39389872017-01-19 21:10:49 -070015843 eSampledImageFilterCubicIMG = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG,
15844 eTransferSrcKHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060015845 eTransferDstKHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR,
Lenny Komowb79f04a2017-09-18 17:07:00 -060015846 eSampledImageFilterMinmaxEXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT,
15847 eMidpointChromaSamplesKHR = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR,
15848 eSampledImageYcbcrConversionLinearFilterKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR,
15849 eSampledImageYcbcrConversionSeparateReconstructionFilterKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR,
15850 eSampledImageYcbcrConversionChromaReconstructionExplicitKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR,
15851 eSampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR,
15852 eDisjointKHR = VK_FORMAT_FEATURE_DISJOINT_BIT_KHR,
15853 eCositedChromaSamplesKHR = VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015854 };
15855
15856 using FormatFeatureFlags = Flags<FormatFeatureFlagBits, VkFormatFeatureFlags>;
15857
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015858 VULKAN_HPP_INLINE FormatFeatureFlags operator|( FormatFeatureFlagBits bit0, FormatFeatureFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015859 {
15860 return FormatFeatureFlags( bit0 ) | bit1;
15861 }
15862
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015863 VULKAN_HPP_INLINE FormatFeatureFlags operator~( FormatFeatureFlagBits bits )
15864 {
15865 return ~( FormatFeatureFlags( bits ) );
15866 }
15867
15868 template <> struct FlagTraits<FormatFeatureFlagBits>
15869 {
15870 enum
15871 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060015872 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 -070015873 };
15874 };
15875
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015876 struct FormatProperties
15877 {
15878 operator const VkFormatProperties&() const
15879 {
15880 return *reinterpret_cast<const VkFormatProperties*>(this);
15881 }
15882
15883 bool operator==( FormatProperties const& rhs ) const
15884 {
15885 return ( linearTilingFeatures == rhs.linearTilingFeatures )
15886 && ( optimalTilingFeatures == rhs.optimalTilingFeatures )
15887 && ( bufferFeatures == rhs.bufferFeatures );
15888 }
15889
15890 bool operator!=( FormatProperties const& rhs ) const
15891 {
15892 return !operator==( rhs );
15893 }
15894
15895 FormatFeatureFlags linearTilingFeatures;
15896 FormatFeatureFlags optimalTilingFeatures;
15897 FormatFeatureFlags bufferFeatures;
15898 };
15899 static_assert( sizeof( FormatProperties ) == sizeof( VkFormatProperties ), "struct and wrapper have different size!" );
15900
Mark Young39389872017-01-19 21:10:49 -070015901 struct FormatProperties2KHR
15902 {
15903 operator const VkFormatProperties2KHR&() const
15904 {
15905 return *reinterpret_cast<const VkFormatProperties2KHR*>(this);
15906 }
15907
15908 bool operator==( FormatProperties2KHR const& rhs ) const
15909 {
15910 return ( sType == rhs.sType )
15911 && ( pNext == rhs.pNext )
15912 && ( formatProperties == rhs.formatProperties );
15913 }
15914
15915 bool operator!=( FormatProperties2KHR const& rhs ) const
15916 {
15917 return !operator==( rhs );
15918 }
15919
15920 private:
15921 StructureType sType;
15922
15923 public:
15924 void* pNext;
15925 FormatProperties formatProperties;
15926 };
15927 static_assert( sizeof( FormatProperties2KHR ) == sizeof( VkFormatProperties2KHR ), "struct and wrapper have different size!" );
15928
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015929 enum class QueryControlFlagBits
15930 {
15931 ePrecise = VK_QUERY_CONTROL_PRECISE_BIT
15932 };
15933
15934 using QueryControlFlags = Flags<QueryControlFlagBits, VkQueryControlFlags>;
15935
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015936 VULKAN_HPP_INLINE QueryControlFlags operator|( QueryControlFlagBits bit0, QueryControlFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015937 {
15938 return QueryControlFlags( bit0 ) | bit1;
15939 }
15940
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015941 VULKAN_HPP_INLINE QueryControlFlags operator~( QueryControlFlagBits bits )
15942 {
15943 return ~( QueryControlFlags( bits ) );
15944 }
15945
15946 template <> struct FlagTraits<QueryControlFlagBits>
15947 {
15948 enum
15949 {
15950 allFlags = VkFlags(QueryControlFlagBits::ePrecise)
15951 };
15952 };
15953
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015954 enum class QueryResultFlagBits
15955 {
15956 e64 = VK_QUERY_RESULT_64_BIT,
15957 eWait = VK_QUERY_RESULT_WAIT_BIT,
15958 eWithAvailability = VK_QUERY_RESULT_WITH_AVAILABILITY_BIT,
15959 ePartial = VK_QUERY_RESULT_PARTIAL_BIT
15960 };
15961
15962 using QueryResultFlags = Flags<QueryResultFlagBits, VkQueryResultFlags>;
15963
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015964 VULKAN_HPP_INLINE QueryResultFlags operator|( QueryResultFlagBits bit0, QueryResultFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015965 {
15966 return QueryResultFlags( bit0 ) | bit1;
15967 }
15968
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015969 VULKAN_HPP_INLINE QueryResultFlags operator~( QueryResultFlagBits bits )
15970 {
15971 return ~( QueryResultFlags( bits ) );
15972 }
15973
15974 template <> struct FlagTraits<QueryResultFlagBits>
15975 {
15976 enum
15977 {
15978 allFlags = VkFlags(QueryResultFlagBits::e64) | VkFlags(QueryResultFlagBits::eWait) | VkFlags(QueryResultFlagBits::eWithAvailability) | VkFlags(QueryResultFlagBits::ePartial)
15979 };
15980 };
15981
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015982 enum class CommandBufferUsageFlagBits
15983 {
15984 eOneTimeSubmit = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,
15985 eRenderPassContinue = VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT,
15986 eSimultaneousUse = VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
15987 };
15988
15989 using CommandBufferUsageFlags = Flags<CommandBufferUsageFlagBits, VkCommandBufferUsageFlags>;
15990
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015991 VULKAN_HPP_INLINE CommandBufferUsageFlags operator|( CommandBufferUsageFlagBits bit0, CommandBufferUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015992 {
15993 return CommandBufferUsageFlags( bit0 ) | bit1;
15994 }
15995
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015996 VULKAN_HPP_INLINE CommandBufferUsageFlags operator~( CommandBufferUsageFlagBits bits )
15997 {
15998 return ~( CommandBufferUsageFlags( bits ) );
15999 }
16000
16001 template <> struct FlagTraits<CommandBufferUsageFlagBits>
16002 {
16003 enum
16004 {
16005 allFlags = VkFlags(CommandBufferUsageFlagBits::eOneTimeSubmit) | VkFlags(CommandBufferUsageFlagBits::eRenderPassContinue) | VkFlags(CommandBufferUsageFlagBits::eSimultaneousUse)
16006 };
16007 };
16008
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016009 enum class QueryPipelineStatisticFlagBits
16010 {
16011 eInputAssemblyVertices = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT,
16012 eInputAssemblyPrimitives = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT,
16013 eVertexShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT,
16014 eGeometryShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT,
16015 eGeometryShaderPrimitives = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT,
16016 eClippingInvocations = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT,
16017 eClippingPrimitives = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT,
16018 eFragmentShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT,
16019 eTessellationControlShaderPatches = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT,
16020 eTessellationEvaluationShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT,
16021 eComputeShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT
16022 };
16023
16024 using QueryPipelineStatisticFlags = Flags<QueryPipelineStatisticFlagBits, VkQueryPipelineStatisticFlags>;
16025
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016026 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator|( QueryPipelineStatisticFlagBits bit0, QueryPipelineStatisticFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016027 {
16028 return QueryPipelineStatisticFlags( bit0 ) | bit1;
16029 }
16030
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016031 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator~( QueryPipelineStatisticFlagBits bits )
16032 {
16033 return ~( QueryPipelineStatisticFlags( bits ) );
16034 }
16035
16036 template <> struct FlagTraits<QueryPipelineStatisticFlagBits>
16037 {
16038 enum
16039 {
16040 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)
16041 };
16042 };
16043
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016044 struct CommandBufferInheritanceInfo
16045 {
16046 CommandBufferInheritanceInfo( RenderPass renderPass_ = RenderPass(), uint32_t subpass_ = 0, Framebuffer framebuffer_ = Framebuffer(), Bool32 occlusionQueryEnable_ = 0, QueryControlFlags queryFlags_ = QueryControlFlags(), QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
16047 : sType( StructureType::eCommandBufferInheritanceInfo )
16048 , pNext( nullptr )
16049 , renderPass( renderPass_ )
16050 , subpass( subpass_ )
16051 , framebuffer( framebuffer_ )
16052 , occlusionQueryEnable( occlusionQueryEnable_ )
16053 , queryFlags( queryFlags_ )
16054 , pipelineStatistics( pipelineStatistics_ )
16055 {
16056 }
16057
16058 CommandBufferInheritanceInfo( VkCommandBufferInheritanceInfo const & rhs )
16059 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016060 memcpy( this, &rhs, sizeof( CommandBufferInheritanceInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016061 }
16062
16063 CommandBufferInheritanceInfo& operator=( VkCommandBufferInheritanceInfo const & rhs )
16064 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016065 memcpy( this, &rhs, sizeof( CommandBufferInheritanceInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016066 return *this;
16067 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016068 CommandBufferInheritanceInfo& setPNext( const void* pNext_ )
16069 {
16070 pNext = pNext_;
16071 return *this;
16072 }
16073
16074 CommandBufferInheritanceInfo& setRenderPass( RenderPass renderPass_ )
16075 {
16076 renderPass = renderPass_;
16077 return *this;
16078 }
16079
16080 CommandBufferInheritanceInfo& setSubpass( uint32_t subpass_ )
16081 {
16082 subpass = subpass_;
16083 return *this;
16084 }
16085
16086 CommandBufferInheritanceInfo& setFramebuffer( Framebuffer framebuffer_ )
16087 {
16088 framebuffer = framebuffer_;
16089 return *this;
16090 }
16091
16092 CommandBufferInheritanceInfo& setOcclusionQueryEnable( Bool32 occlusionQueryEnable_ )
16093 {
16094 occlusionQueryEnable = occlusionQueryEnable_;
16095 return *this;
16096 }
16097
16098 CommandBufferInheritanceInfo& setQueryFlags( QueryControlFlags queryFlags_ )
16099 {
16100 queryFlags = queryFlags_;
16101 return *this;
16102 }
16103
16104 CommandBufferInheritanceInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
16105 {
16106 pipelineStatistics = pipelineStatistics_;
16107 return *this;
16108 }
16109
16110 operator const VkCommandBufferInheritanceInfo&() const
16111 {
16112 return *reinterpret_cast<const VkCommandBufferInheritanceInfo*>(this);
16113 }
16114
16115 bool operator==( CommandBufferInheritanceInfo const& rhs ) const
16116 {
16117 return ( sType == rhs.sType )
16118 && ( pNext == rhs.pNext )
16119 && ( renderPass == rhs.renderPass )
16120 && ( subpass == rhs.subpass )
16121 && ( framebuffer == rhs.framebuffer )
16122 && ( occlusionQueryEnable == rhs.occlusionQueryEnable )
16123 && ( queryFlags == rhs.queryFlags )
16124 && ( pipelineStatistics == rhs.pipelineStatistics );
16125 }
16126
16127 bool operator!=( CommandBufferInheritanceInfo const& rhs ) const
16128 {
16129 return !operator==( rhs );
16130 }
16131
16132 private:
16133 StructureType sType;
16134
16135 public:
16136 const void* pNext;
16137 RenderPass renderPass;
16138 uint32_t subpass;
16139 Framebuffer framebuffer;
16140 Bool32 occlusionQueryEnable;
16141 QueryControlFlags queryFlags;
16142 QueryPipelineStatisticFlags pipelineStatistics;
16143 };
16144 static_assert( sizeof( CommandBufferInheritanceInfo ) == sizeof( VkCommandBufferInheritanceInfo ), "struct and wrapper have different size!" );
16145
16146 struct CommandBufferBeginInfo
16147 {
16148 CommandBufferBeginInfo( CommandBufferUsageFlags flags_ = CommandBufferUsageFlags(), const CommandBufferInheritanceInfo* pInheritanceInfo_ = nullptr )
16149 : sType( StructureType::eCommandBufferBeginInfo )
16150 , pNext( nullptr )
16151 , flags( flags_ )
16152 , pInheritanceInfo( pInheritanceInfo_ )
16153 {
16154 }
16155
16156 CommandBufferBeginInfo( VkCommandBufferBeginInfo const & rhs )
16157 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016158 memcpy( this, &rhs, sizeof( CommandBufferBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016159 }
16160
16161 CommandBufferBeginInfo& operator=( VkCommandBufferBeginInfo const & rhs )
16162 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016163 memcpy( this, &rhs, sizeof( CommandBufferBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016164 return *this;
16165 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016166 CommandBufferBeginInfo& setPNext( const void* pNext_ )
16167 {
16168 pNext = pNext_;
16169 return *this;
16170 }
16171
16172 CommandBufferBeginInfo& setFlags( CommandBufferUsageFlags flags_ )
16173 {
16174 flags = flags_;
16175 return *this;
16176 }
16177
16178 CommandBufferBeginInfo& setPInheritanceInfo( const CommandBufferInheritanceInfo* pInheritanceInfo_ )
16179 {
16180 pInheritanceInfo = pInheritanceInfo_;
16181 return *this;
16182 }
16183
16184 operator const VkCommandBufferBeginInfo&() const
16185 {
16186 return *reinterpret_cast<const VkCommandBufferBeginInfo*>(this);
16187 }
16188
16189 bool operator==( CommandBufferBeginInfo const& rhs ) const
16190 {
16191 return ( sType == rhs.sType )
16192 && ( pNext == rhs.pNext )
16193 && ( flags == rhs.flags )
16194 && ( pInheritanceInfo == rhs.pInheritanceInfo );
16195 }
16196
16197 bool operator!=( CommandBufferBeginInfo const& rhs ) const
16198 {
16199 return !operator==( rhs );
16200 }
16201
16202 private:
16203 StructureType sType;
16204
16205 public:
16206 const void* pNext;
16207 CommandBufferUsageFlags flags;
16208 const CommandBufferInheritanceInfo* pInheritanceInfo;
16209 };
16210 static_assert( sizeof( CommandBufferBeginInfo ) == sizeof( VkCommandBufferBeginInfo ), "struct and wrapper have different size!" );
16211
16212 struct QueryPoolCreateInfo
16213 {
16214 QueryPoolCreateInfo( QueryPoolCreateFlags flags_ = QueryPoolCreateFlags(), QueryType queryType_ = QueryType::eOcclusion, uint32_t queryCount_ = 0, QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
16215 : sType( StructureType::eQueryPoolCreateInfo )
16216 , pNext( nullptr )
16217 , flags( flags_ )
16218 , queryType( queryType_ )
16219 , queryCount( queryCount_ )
16220 , pipelineStatistics( pipelineStatistics_ )
16221 {
16222 }
16223
16224 QueryPoolCreateInfo( VkQueryPoolCreateInfo const & rhs )
16225 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016226 memcpy( this, &rhs, sizeof( QueryPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016227 }
16228
16229 QueryPoolCreateInfo& operator=( VkQueryPoolCreateInfo const & rhs )
16230 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016231 memcpy( this, &rhs, sizeof( QueryPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016232 return *this;
16233 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016234 QueryPoolCreateInfo& setPNext( const void* pNext_ )
16235 {
16236 pNext = pNext_;
16237 return *this;
16238 }
16239
16240 QueryPoolCreateInfo& setFlags( QueryPoolCreateFlags flags_ )
16241 {
16242 flags = flags_;
16243 return *this;
16244 }
16245
16246 QueryPoolCreateInfo& setQueryType( QueryType queryType_ )
16247 {
16248 queryType = queryType_;
16249 return *this;
16250 }
16251
16252 QueryPoolCreateInfo& setQueryCount( uint32_t queryCount_ )
16253 {
16254 queryCount = queryCount_;
16255 return *this;
16256 }
16257
16258 QueryPoolCreateInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
16259 {
16260 pipelineStatistics = pipelineStatistics_;
16261 return *this;
16262 }
16263
16264 operator const VkQueryPoolCreateInfo&() const
16265 {
16266 return *reinterpret_cast<const VkQueryPoolCreateInfo*>(this);
16267 }
16268
16269 bool operator==( QueryPoolCreateInfo const& rhs ) const
16270 {
16271 return ( sType == rhs.sType )
16272 && ( pNext == rhs.pNext )
16273 && ( flags == rhs.flags )
16274 && ( queryType == rhs.queryType )
16275 && ( queryCount == rhs.queryCount )
16276 && ( pipelineStatistics == rhs.pipelineStatistics );
16277 }
16278
16279 bool operator!=( QueryPoolCreateInfo const& rhs ) const
16280 {
16281 return !operator==( rhs );
16282 }
16283
16284 private:
16285 StructureType sType;
16286
16287 public:
16288 const void* pNext;
16289 QueryPoolCreateFlags flags;
16290 QueryType queryType;
16291 uint32_t queryCount;
16292 QueryPipelineStatisticFlags pipelineStatistics;
16293 };
16294 static_assert( sizeof( QueryPoolCreateInfo ) == sizeof( VkQueryPoolCreateInfo ), "struct and wrapper have different size!" );
16295
16296 enum class ImageAspectFlagBits
16297 {
16298 eColor = VK_IMAGE_ASPECT_COLOR_BIT,
16299 eDepth = VK_IMAGE_ASPECT_DEPTH_BIT,
16300 eStencil = VK_IMAGE_ASPECT_STENCIL_BIT,
Lenny Komowb79f04a2017-09-18 17:07:00 -060016301 eMetadata = VK_IMAGE_ASPECT_METADATA_BIT,
16302 ePlane0KHR = VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
16303 ePlane1KHR = VK_IMAGE_ASPECT_PLANE_1_BIT_KHR,
16304 ePlane2KHR = VK_IMAGE_ASPECT_PLANE_2_BIT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016305 };
16306
16307 using ImageAspectFlags = Flags<ImageAspectFlagBits, VkImageAspectFlags>;
16308
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016309 VULKAN_HPP_INLINE ImageAspectFlags operator|( ImageAspectFlagBits bit0, ImageAspectFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016310 {
16311 return ImageAspectFlags( bit0 ) | bit1;
16312 }
16313
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016314 VULKAN_HPP_INLINE ImageAspectFlags operator~( ImageAspectFlagBits bits )
16315 {
16316 return ~( ImageAspectFlags( bits ) );
16317 }
16318
16319 template <> struct FlagTraits<ImageAspectFlagBits>
16320 {
16321 enum
16322 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060016323 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 -070016324 };
16325 };
16326
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016327 struct ImageSubresource
16328 {
16329 ImageSubresource( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t mipLevel_ = 0, uint32_t arrayLayer_ = 0 )
16330 : aspectMask( aspectMask_ )
16331 , mipLevel( mipLevel_ )
16332 , arrayLayer( arrayLayer_ )
16333 {
16334 }
16335
16336 ImageSubresource( VkImageSubresource const & rhs )
16337 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016338 memcpy( this, &rhs, sizeof( ImageSubresource ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016339 }
16340
16341 ImageSubresource& operator=( VkImageSubresource const & rhs )
16342 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016343 memcpy( this, &rhs, sizeof( ImageSubresource ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016344 return *this;
16345 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016346 ImageSubresource& setAspectMask( ImageAspectFlags aspectMask_ )
16347 {
16348 aspectMask = aspectMask_;
16349 return *this;
16350 }
16351
16352 ImageSubresource& setMipLevel( uint32_t mipLevel_ )
16353 {
16354 mipLevel = mipLevel_;
16355 return *this;
16356 }
16357
16358 ImageSubresource& setArrayLayer( uint32_t arrayLayer_ )
16359 {
16360 arrayLayer = arrayLayer_;
16361 return *this;
16362 }
16363
16364 operator const VkImageSubresource&() const
16365 {
16366 return *reinterpret_cast<const VkImageSubresource*>(this);
16367 }
16368
16369 bool operator==( ImageSubresource const& rhs ) const
16370 {
16371 return ( aspectMask == rhs.aspectMask )
16372 && ( mipLevel == rhs.mipLevel )
16373 && ( arrayLayer == rhs.arrayLayer );
16374 }
16375
16376 bool operator!=( ImageSubresource const& rhs ) const
16377 {
16378 return !operator==( rhs );
16379 }
16380
16381 ImageAspectFlags aspectMask;
16382 uint32_t mipLevel;
16383 uint32_t arrayLayer;
16384 };
16385 static_assert( sizeof( ImageSubresource ) == sizeof( VkImageSubresource ), "struct and wrapper have different size!" );
16386
16387 struct ImageSubresourceLayers
16388 {
16389 ImageSubresourceLayers( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t mipLevel_ = 0, uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
16390 : aspectMask( aspectMask_ )
16391 , mipLevel( mipLevel_ )
16392 , baseArrayLayer( baseArrayLayer_ )
16393 , layerCount( layerCount_ )
16394 {
16395 }
16396
16397 ImageSubresourceLayers( VkImageSubresourceLayers const & rhs )
16398 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016399 memcpy( this, &rhs, sizeof( ImageSubresourceLayers ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016400 }
16401
16402 ImageSubresourceLayers& operator=( VkImageSubresourceLayers const & rhs )
16403 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016404 memcpy( this, &rhs, sizeof( ImageSubresourceLayers ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016405 return *this;
16406 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016407 ImageSubresourceLayers& setAspectMask( ImageAspectFlags aspectMask_ )
16408 {
16409 aspectMask = aspectMask_;
16410 return *this;
16411 }
16412
16413 ImageSubresourceLayers& setMipLevel( uint32_t mipLevel_ )
16414 {
16415 mipLevel = mipLevel_;
16416 return *this;
16417 }
16418
16419 ImageSubresourceLayers& setBaseArrayLayer( uint32_t baseArrayLayer_ )
16420 {
16421 baseArrayLayer = baseArrayLayer_;
16422 return *this;
16423 }
16424
16425 ImageSubresourceLayers& setLayerCount( uint32_t layerCount_ )
16426 {
16427 layerCount = layerCount_;
16428 return *this;
16429 }
16430
16431 operator const VkImageSubresourceLayers&() const
16432 {
16433 return *reinterpret_cast<const VkImageSubresourceLayers*>(this);
16434 }
16435
16436 bool operator==( ImageSubresourceLayers const& rhs ) const
16437 {
16438 return ( aspectMask == rhs.aspectMask )
16439 && ( mipLevel == rhs.mipLevel )
16440 && ( baseArrayLayer == rhs.baseArrayLayer )
16441 && ( layerCount == rhs.layerCount );
16442 }
16443
16444 bool operator!=( ImageSubresourceLayers const& rhs ) const
16445 {
16446 return !operator==( rhs );
16447 }
16448
16449 ImageAspectFlags aspectMask;
16450 uint32_t mipLevel;
16451 uint32_t baseArrayLayer;
16452 uint32_t layerCount;
16453 };
16454 static_assert( sizeof( ImageSubresourceLayers ) == sizeof( VkImageSubresourceLayers ), "struct and wrapper have different size!" );
16455
16456 struct ImageSubresourceRange
16457 {
16458 ImageSubresourceRange( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t baseMipLevel_ = 0, uint32_t levelCount_ = 0, uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
16459 : aspectMask( aspectMask_ )
16460 , baseMipLevel( baseMipLevel_ )
16461 , levelCount( levelCount_ )
16462 , baseArrayLayer( baseArrayLayer_ )
16463 , layerCount( layerCount_ )
16464 {
16465 }
16466
16467 ImageSubresourceRange( VkImageSubresourceRange const & rhs )
16468 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016469 memcpy( this, &rhs, sizeof( ImageSubresourceRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016470 }
16471
16472 ImageSubresourceRange& operator=( VkImageSubresourceRange const & rhs )
16473 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016474 memcpy( this, &rhs, sizeof( ImageSubresourceRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016475 return *this;
16476 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016477 ImageSubresourceRange& setAspectMask( ImageAspectFlags aspectMask_ )
16478 {
16479 aspectMask = aspectMask_;
16480 return *this;
16481 }
16482
16483 ImageSubresourceRange& setBaseMipLevel( uint32_t baseMipLevel_ )
16484 {
16485 baseMipLevel = baseMipLevel_;
16486 return *this;
16487 }
16488
16489 ImageSubresourceRange& setLevelCount( uint32_t levelCount_ )
16490 {
16491 levelCount = levelCount_;
16492 return *this;
16493 }
16494
16495 ImageSubresourceRange& setBaseArrayLayer( uint32_t baseArrayLayer_ )
16496 {
16497 baseArrayLayer = baseArrayLayer_;
16498 return *this;
16499 }
16500
16501 ImageSubresourceRange& setLayerCount( uint32_t layerCount_ )
16502 {
16503 layerCount = layerCount_;
16504 return *this;
16505 }
16506
16507 operator const VkImageSubresourceRange&() const
16508 {
16509 return *reinterpret_cast<const VkImageSubresourceRange*>(this);
16510 }
16511
16512 bool operator==( ImageSubresourceRange const& rhs ) const
16513 {
16514 return ( aspectMask == rhs.aspectMask )
16515 && ( baseMipLevel == rhs.baseMipLevel )
16516 && ( levelCount == rhs.levelCount )
16517 && ( baseArrayLayer == rhs.baseArrayLayer )
16518 && ( layerCount == rhs.layerCount );
16519 }
16520
16521 bool operator!=( ImageSubresourceRange const& rhs ) const
16522 {
16523 return !operator==( rhs );
16524 }
16525
16526 ImageAspectFlags aspectMask;
16527 uint32_t baseMipLevel;
16528 uint32_t levelCount;
16529 uint32_t baseArrayLayer;
16530 uint32_t layerCount;
16531 };
16532 static_assert( sizeof( ImageSubresourceRange ) == sizeof( VkImageSubresourceRange ), "struct and wrapper have different size!" );
16533
16534 struct ImageMemoryBarrier
16535 {
16536 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() )
16537 : sType( StructureType::eImageMemoryBarrier )
16538 , pNext( nullptr )
16539 , srcAccessMask( srcAccessMask_ )
16540 , dstAccessMask( dstAccessMask_ )
16541 , oldLayout( oldLayout_ )
16542 , newLayout( newLayout_ )
16543 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
16544 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
16545 , image( image_ )
16546 , subresourceRange( subresourceRange_ )
16547 {
16548 }
16549
16550 ImageMemoryBarrier( VkImageMemoryBarrier const & rhs )
16551 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016552 memcpy( this, &rhs, sizeof( ImageMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016553 }
16554
16555 ImageMemoryBarrier& operator=( VkImageMemoryBarrier const & rhs )
16556 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016557 memcpy( this, &rhs, sizeof( ImageMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016558 return *this;
16559 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016560 ImageMemoryBarrier& setPNext( const void* pNext_ )
16561 {
16562 pNext = pNext_;
16563 return *this;
16564 }
16565
16566 ImageMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
16567 {
16568 srcAccessMask = srcAccessMask_;
16569 return *this;
16570 }
16571
16572 ImageMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
16573 {
16574 dstAccessMask = dstAccessMask_;
16575 return *this;
16576 }
16577
16578 ImageMemoryBarrier& setOldLayout( ImageLayout oldLayout_ )
16579 {
16580 oldLayout = oldLayout_;
16581 return *this;
16582 }
16583
16584 ImageMemoryBarrier& setNewLayout( ImageLayout newLayout_ )
16585 {
16586 newLayout = newLayout_;
16587 return *this;
16588 }
16589
16590 ImageMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
16591 {
16592 srcQueueFamilyIndex = srcQueueFamilyIndex_;
16593 return *this;
16594 }
16595
16596 ImageMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
16597 {
16598 dstQueueFamilyIndex = dstQueueFamilyIndex_;
16599 return *this;
16600 }
16601
16602 ImageMemoryBarrier& setImage( Image image_ )
16603 {
16604 image = image_;
16605 return *this;
16606 }
16607
16608 ImageMemoryBarrier& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
16609 {
16610 subresourceRange = subresourceRange_;
16611 return *this;
16612 }
16613
16614 operator const VkImageMemoryBarrier&() const
16615 {
16616 return *reinterpret_cast<const VkImageMemoryBarrier*>(this);
16617 }
16618
16619 bool operator==( ImageMemoryBarrier const& rhs ) const
16620 {
16621 return ( sType == rhs.sType )
16622 && ( pNext == rhs.pNext )
16623 && ( srcAccessMask == rhs.srcAccessMask )
16624 && ( dstAccessMask == rhs.dstAccessMask )
16625 && ( oldLayout == rhs.oldLayout )
16626 && ( newLayout == rhs.newLayout )
16627 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
16628 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
16629 && ( image == rhs.image )
16630 && ( subresourceRange == rhs.subresourceRange );
16631 }
16632
16633 bool operator!=( ImageMemoryBarrier const& rhs ) const
16634 {
16635 return !operator==( rhs );
16636 }
16637
16638 private:
16639 StructureType sType;
16640
16641 public:
16642 const void* pNext;
16643 AccessFlags srcAccessMask;
16644 AccessFlags dstAccessMask;
16645 ImageLayout oldLayout;
16646 ImageLayout newLayout;
16647 uint32_t srcQueueFamilyIndex;
16648 uint32_t dstQueueFamilyIndex;
16649 Image image;
16650 ImageSubresourceRange subresourceRange;
16651 };
16652 static_assert( sizeof( ImageMemoryBarrier ) == sizeof( VkImageMemoryBarrier ), "struct and wrapper have different size!" );
16653
16654 struct ImageViewCreateInfo
16655 {
16656 ImageViewCreateInfo( ImageViewCreateFlags flags_ = ImageViewCreateFlags(), Image image_ = Image(), ImageViewType viewType_ = ImageViewType::e1D, Format format_ = Format::eUndefined, ComponentMapping components_ = ComponentMapping(), ImageSubresourceRange subresourceRange_ = ImageSubresourceRange() )
16657 : sType( StructureType::eImageViewCreateInfo )
16658 , pNext( nullptr )
16659 , flags( flags_ )
16660 , image( image_ )
16661 , viewType( viewType_ )
16662 , format( format_ )
16663 , components( components_ )
16664 , subresourceRange( subresourceRange_ )
16665 {
16666 }
16667
16668 ImageViewCreateInfo( VkImageViewCreateInfo const & rhs )
16669 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016670 memcpy( this, &rhs, sizeof( ImageViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016671 }
16672
16673 ImageViewCreateInfo& operator=( VkImageViewCreateInfo const & rhs )
16674 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016675 memcpy( this, &rhs, sizeof( ImageViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016676 return *this;
16677 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016678 ImageViewCreateInfo& setPNext( const void* pNext_ )
16679 {
16680 pNext = pNext_;
16681 return *this;
16682 }
16683
16684 ImageViewCreateInfo& setFlags( ImageViewCreateFlags flags_ )
16685 {
16686 flags = flags_;
16687 return *this;
16688 }
16689
16690 ImageViewCreateInfo& setImage( Image image_ )
16691 {
16692 image = image_;
16693 return *this;
16694 }
16695
16696 ImageViewCreateInfo& setViewType( ImageViewType viewType_ )
16697 {
16698 viewType = viewType_;
16699 return *this;
16700 }
16701
16702 ImageViewCreateInfo& setFormat( Format format_ )
16703 {
16704 format = format_;
16705 return *this;
16706 }
16707
16708 ImageViewCreateInfo& setComponents( ComponentMapping components_ )
16709 {
16710 components = components_;
16711 return *this;
16712 }
16713
16714 ImageViewCreateInfo& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
16715 {
16716 subresourceRange = subresourceRange_;
16717 return *this;
16718 }
16719
16720 operator const VkImageViewCreateInfo&() const
16721 {
16722 return *reinterpret_cast<const VkImageViewCreateInfo*>(this);
16723 }
16724
16725 bool operator==( ImageViewCreateInfo const& rhs ) const
16726 {
16727 return ( sType == rhs.sType )
16728 && ( pNext == rhs.pNext )
16729 && ( flags == rhs.flags )
16730 && ( image == rhs.image )
16731 && ( viewType == rhs.viewType )
16732 && ( format == rhs.format )
16733 && ( components == rhs.components )
16734 && ( subresourceRange == rhs.subresourceRange );
16735 }
16736
16737 bool operator!=( ImageViewCreateInfo const& rhs ) const
16738 {
16739 return !operator==( rhs );
16740 }
16741
16742 private:
16743 StructureType sType;
16744
16745 public:
16746 const void* pNext;
16747 ImageViewCreateFlags flags;
16748 Image image;
16749 ImageViewType viewType;
16750 Format format;
16751 ComponentMapping components;
16752 ImageSubresourceRange subresourceRange;
16753 };
16754 static_assert( sizeof( ImageViewCreateInfo ) == sizeof( VkImageViewCreateInfo ), "struct and wrapper have different size!" );
16755
16756 struct ImageCopy
16757 {
16758 ImageCopy( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), Offset3D srcOffset_ = Offset3D(), ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), Offset3D dstOffset_ = Offset3D(), Extent3D extent_ = Extent3D() )
16759 : srcSubresource( srcSubresource_ )
16760 , srcOffset( srcOffset_ )
16761 , dstSubresource( dstSubresource_ )
16762 , dstOffset( dstOffset_ )
16763 , extent( extent_ )
16764 {
16765 }
16766
16767 ImageCopy( VkImageCopy const & rhs )
16768 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016769 memcpy( this, &rhs, sizeof( ImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016770 }
16771
16772 ImageCopy& operator=( VkImageCopy const & rhs )
16773 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016774 memcpy( this, &rhs, sizeof( ImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016775 return *this;
16776 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016777 ImageCopy& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
16778 {
16779 srcSubresource = srcSubresource_;
16780 return *this;
16781 }
16782
16783 ImageCopy& setSrcOffset( Offset3D srcOffset_ )
16784 {
16785 srcOffset = srcOffset_;
16786 return *this;
16787 }
16788
16789 ImageCopy& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
16790 {
16791 dstSubresource = dstSubresource_;
16792 return *this;
16793 }
16794
16795 ImageCopy& setDstOffset( Offset3D dstOffset_ )
16796 {
16797 dstOffset = dstOffset_;
16798 return *this;
16799 }
16800
16801 ImageCopy& setExtent( Extent3D extent_ )
16802 {
16803 extent = extent_;
16804 return *this;
16805 }
16806
16807 operator const VkImageCopy&() const
16808 {
16809 return *reinterpret_cast<const VkImageCopy*>(this);
16810 }
16811
16812 bool operator==( ImageCopy const& rhs ) const
16813 {
16814 return ( srcSubresource == rhs.srcSubresource )
16815 && ( srcOffset == rhs.srcOffset )
16816 && ( dstSubresource == rhs.dstSubresource )
16817 && ( dstOffset == rhs.dstOffset )
16818 && ( extent == rhs.extent );
16819 }
16820
16821 bool operator!=( ImageCopy const& rhs ) const
16822 {
16823 return !operator==( rhs );
16824 }
16825
16826 ImageSubresourceLayers srcSubresource;
16827 Offset3D srcOffset;
16828 ImageSubresourceLayers dstSubresource;
16829 Offset3D dstOffset;
16830 Extent3D extent;
16831 };
16832 static_assert( sizeof( ImageCopy ) == sizeof( VkImageCopy ), "struct and wrapper have different size!" );
16833
16834 struct ImageBlit
16835 {
16836 ImageBlit( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), std::array<Offset3D,2> const& srcOffsets_ = { { Offset3D(), Offset3D() } }, ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), std::array<Offset3D,2> const& dstOffsets_ = { { Offset3D(), Offset3D() } } )
16837 : srcSubresource( srcSubresource_ )
16838 , dstSubresource( dstSubresource_ )
16839 {
16840 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
16841 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
16842 }
16843
16844 ImageBlit( VkImageBlit const & rhs )
16845 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016846 memcpy( this, &rhs, sizeof( ImageBlit ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016847 }
16848
16849 ImageBlit& operator=( VkImageBlit const & rhs )
16850 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016851 memcpy( this, &rhs, sizeof( ImageBlit ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016852 return *this;
16853 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016854 ImageBlit& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
16855 {
16856 srcSubresource = srcSubresource_;
16857 return *this;
16858 }
16859
16860 ImageBlit& setSrcOffsets( std::array<Offset3D,2> srcOffsets_ )
16861 {
16862 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
16863 return *this;
16864 }
16865
16866 ImageBlit& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
16867 {
16868 dstSubresource = dstSubresource_;
16869 return *this;
16870 }
16871
16872 ImageBlit& setDstOffsets( std::array<Offset3D,2> dstOffsets_ )
16873 {
16874 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
16875 return *this;
16876 }
16877
16878 operator const VkImageBlit&() const
16879 {
16880 return *reinterpret_cast<const VkImageBlit*>(this);
16881 }
16882
16883 bool operator==( ImageBlit const& rhs ) const
16884 {
16885 return ( srcSubresource == rhs.srcSubresource )
16886 && ( memcmp( srcOffsets, rhs.srcOffsets, 2 * sizeof( Offset3D ) ) == 0 )
16887 && ( dstSubresource == rhs.dstSubresource )
16888 && ( memcmp( dstOffsets, rhs.dstOffsets, 2 * sizeof( Offset3D ) ) == 0 );
16889 }
16890
16891 bool operator!=( ImageBlit const& rhs ) const
16892 {
16893 return !operator==( rhs );
16894 }
16895
16896 ImageSubresourceLayers srcSubresource;
16897 Offset3D srcOffsets[2];
16898 ImageSubresourceLayers dstSubresource;
16899 Offset3D dstOffsets[2];
16900 };
16901 static_assert( sizeof( ImageBlit ) == sizeof( VkImageBlit ), "struct and wrapper have different size!" );
16902
16903 struct BufferImageCopy
16904 {
16905 BufferImageCopy( DeviceSize bufferOffset_ = 0, uint32_t bufferRowLength_ = 0, uint32_t bufferImageHeight_ = 0, ImageSubresourceLayers imageSubresource_ = ImageSubresourceLayers(), Offset3D imageOffset_ = Offset3D(), Extent3D imageExtent_ = Extent3D() )
16906 : bufferOffset( bufferOffset_ )
16907 , bufferRowLength( bufferRowLength_ )
16908 , bufferImageHeight( bufferImageHeight_ )
16909 , imageSubresource( imageSubresource_ )
16910 , imageOffset( imageOffset_ )
16911 , imageExtent( imageExtent_ )
16912 {
16913 }
16914
16915 BufferImageCopy( VkBufferImageCopy const & rhs )
16916 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016917 memcpy( this, &rhs, sizeof( BufferImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016918 }
16919
16920 BufferImageCopy& operator=( VkBufferImageCopy const & rhs )
16921 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016922 memcpy( this, &rhs, sizeof( BufferImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016923 return *this;
16924 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016925 BufferImageCopy& setBufferOffset( DeviceSize bufferOffset_ )
16926 {
16927 bufferOffset = bufferOffset_;
16928 return *this;
16929 }
16930
16931 BufferImageCopy& setBufferRowLength( uint32_t bufferRowLength_ )
16932 {
16933 bufferRowLength = bufferRowLength_;
16934 return *this;
16935 }
16936
16937 BufferImageCopy& setBufferImageHeight( uint32_t bufferImageHeight_ )
16938 {
16939 bufferImageHeight = bufferImageHeight_;
16940 return *this;
16941 }
16942
16943 BufferImageCopy& setImageSubresource( ImageSubresourceLayers imageSubresource_ )
16944 {
16945 imageSubresource = imageSubresource_;
16946 return *this;
16947 }
16948
16949 BufferImageCopy& setImageOffset( Offset3D imageOffset_ )
16950 {
16951 imageOffset = imageOffset_;
16952 return *this;
16953 }
16954
16955 BufferImageCopy& setImageExtent( Extent3D imageExtent_ )
16956 {
16957 imageExtent = imageExtent_;
16958 return *this;
16959 }
16960
16961 operator const VkBufferImageCopy&() const
16962 {
16963 return *reinterpret_cast<const VkBufferImageCopy*>(this);
16964 }
16965
16966 bool operator==( BufferImageCopy const& rhs ) const
16967 {
16968 return ( bufferOffset == rhs.bufferOffset )
16969 && ( bufferRowLength == rhs.bufferRowLength )
16970 && ( bufferImageHeight == rhs.bufferImageHeight )
16971 && ( imageSubresource == rhs.imageSubresource )
16972 && ( imageOffset == rhs.imageOffset )
16973 && ( imageExtent == rhs.imageExtent );
16974 }
16975
16976 bool operator!=( BufferImageCopy const& rhs ) const
16977 {
16978 return !operator==( rhs );
16979 }
16980
16981 DeviceSize bufferOffset;
16982 uint32_t bufferRowLength;
16983 uint32_t bufferImageHeight;
16984 ImageSubresourceLayers imageSubresource;
16985 Offset3D imageOffset;
16986 Extent3D imageExtent;
16987 };
16988 static_assert( sizeof( BufferImageCopy ) == sizeof( VkBufferImageCopy ), "struct and wrapper have different size!" );
16989
16990 struct ImageResolve
16991 {
16992 ImageResolve( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), Offset3D srcOffset_ = Offset3D(), ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), Offset3D dstOffset_ = Offset3D(), Extent3D extent_ = Extent3D() )
16993 : srcSubresource( srcSubresource_ )
16994 , srcOffset( srcOffset_ )
16995 , dstSubresource( dstSubresource_ )
16996 , dstOffset( dstOffset_ )
16997 , extent( extent_ )
16998 {
16999 }
17000
17001 ImageResolve( VkImageResolve const & rhs )
17002 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017003 memcpy( this, &rhs, sizeof( ImageResolve ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017004 }
17005
17006 ImageResolve& operator=( VkImageResolve const & rhs )
17007 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017008 memcpy( this, &rhs, sizeof( ImageResolve ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017009 return *this;
17010 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017011 ImageResolve& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
17012 {
17013 srcSubresource = srcSubresource_;
17014 return *this;
17015 }
17016
17017 ImageResolve& setSrcOffset( Offset3D srcOffset_ )
17018 {
17019 srcOffset = srcOffset_;
17020 return *this;
17021 }
17022
17023 ImageResolve& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
17024 {
17025 dstSubresource = dstSubresource_;
17026 return *this;
17027 }
17028
17029 ImageResolve& setDstOffset( Offset3D dstOffset_ )
17030 {
17031 dstOffset = dstOffset_;
17032 return *this;
17033 }
17034
17035 ImageResolve& setExtent( Extent3D extent_ )
17036 {
17037 extent = extent_;
17038 return *this;
17039 }
17040
17041 operator const VkImageResolve&() const
17042 {
17043 return *reinterpret_cast<const VkImageResolve*>(this);
17044 }
17045
17046 bool operator==( ImageResolve const& rhs ) const
17047 {
17048 return ( srcSubresource == rhs.srcSubresource )
17049 && ( srcOffset == rhs.srcOffset )
17050 && ( dstSubresource == rhs.dstSubresource )
17051 && ( dstOffset == rhs.dstOffset )
17052 && ( extent == rhs.extent );
17053 }
17054
17055 bool operator!=( ImageResolve const& rhs ) const
17056 {
17057 return !operator==( rhs );
17058 }
17059
17060 ImageSubresourceLayers srcSubresource;
17061 Offset3D srcOffset;
17062 ImageSubresourceLayers dstSubresource;
17063 Offset3D dstOffset;
17064 Extent3D extent;
17065 };
17066 static_assert( sizeof( ImageResolve ) == sizeof( VkImageResolve ), "struct and wrapper have different size!" );
17067
17068 struct ClearAttachment
17069 {
17070 ClearAttachment( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t colorAttachment_ = 0, ClearValue clearValue_ = ClearValue() )
17071 : aspectMask( aspectMask_ )
17072 , colorAttachment( colorAttachment_ )
17073 , clearValue( clearValue_ )
17074 {
17075 }
17076
17077 ClearAttachment( VkClearAttachment const & rhs )
17078 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017079 memcpy( this, &rhs, sizeof( ClearAttachment ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017080 }
17081
17082 ClearAttachment& operator=( VkClearAttachment const & rhs )
17083 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017084 memcpy( this, &rhs, sizeof( ClearAttachment ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017085 return *this;
17086 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017087 ClearAttachment& setAspectMask( ImageAspectFlags aspectMask_ )
17088 {
17089 aspectMask = aspectMask_;
17090 return *this;
17091 }
17092
17093 ClearAttachment& setColorAttachment( uint32_t colorAttachment_ )
17094 {
17095 colorAttachment = colorAttachment_;
17096 return *this;
17097 }
17098
17099 ClearAttachment& setClearValue( ClearValue clearValue_ )
17100 {
17101 clearValue = clearValue_;
17102 return *this;
17103 }
17104
17105 operator const VkClearAttachment&() const
17106 {
17107 return *reinterpret_cast<const VkClearAttachment*>(this);
17108 }
17109
17110 ImageAspectFlags aspectMask;
17111 uint32_t colorAttachment;
17112 ClearValue clearValue;
17113 };
17114 static_assert( sizeof( ClearAttachment ) == sizeof( VkClearAttachment ), "struct and wrapper have different size!" );
17115
Lenny Komowb79f04a2017-09-18 17:07:00 -060017116 struct InputAttachmentAspectReferenceKHR
17117 {
17118 InputAttachmentAspectReferenceKHR( uint32_t subpass_ = 0, uint32_t inputAttachmentIndex_ = 0, ImageAspectFlags aspectMask_ = ImageAspectFlags() )
17119 : subpass( subpass_ )
17120 , inputAttachmentIndex( inputAttachmentIndex_ )
17121 , aspectMask( aspectMask_ )
17122 {
17123 }
17124
17125 InputAttachmentAspectReferenceKHR( VkInputAttachmentAspectReferenceKHR const & rhs )
17126 {
17127 memcpy( this, &rhs, sizeof( InputAttachmentAspectReferenceKHR ) );
17128 }
17129
17130 InputAttachmentAspectReferenceKHR& operator=( VkInputAttachmentAspectReferenceKHR const & rhs )
17131 {
17132 memcpy( this, &rhs, sizeof( InputAttachmentAspectReferenceKHR ) );
17133 return *this;
17134 }
17135 InputAttachmentAspectReferenceKHR& setSubpass( uint32_t subpass_ )
17136 {
17137 subpass = subpass_;
17138 return *this;
17139 }
17140
17141 InputAttachmentAspectReferenceKHR& setInputAttachmentIndex( uint32_t inputAttachmentIndex_ )
17142 {
17143 inputAttachmentIndex = inputAttachmentIndex_;
17144 return *this;
17145 }
17146
17147 InputAttachmentAspectReferenceKHR& setAspectMask( ImageAspectFlags aspectMask_ )
17148 {
17149 aspectMask = aspectMask_;
17150 return *this;
17151 }
17152
17153 operator const VkInputAttachmentAspectReferenceKHR&() const
17154 {
17155 return *reinterpret_cast<const VkInputAttachmentAspectReferenceKHR*>(this);
17156 }
17157
17158 bool operator==( InputAttachmentAspectReferenceKHR const& rhs ) const
17159 {
17160 return ( subpass == rhs.subpass )
17161 && ( inputAttachmentIndex == rhs.inputAttachmentIndex )
17162 && ( aspectMask == rhs.aspectMask );
17163 }
17164
17165 bool operator!=( InputAttachmentAspectReferenceKHR const& rhs ) const
17166 {
17167 return !operator==( rhs );
17168 }
17169
17170 uint32_t subpass;
17171 uint32_t inputAttachmentIndex;
17172 ImageAspectFlags aspectMask;
17173 };
17174 static_assert( sizeof( InputAttachmentAspectReferenceKHR ) == sizeof( VkInputAttachmentAspectReferenceKHR ), "struct and wrapper have different size!" );
17175
17176 struct RenderPassInputAttachmentAspectCreateInfoKHR
17177 {
17178 RenderPassInputAttachmentAspectCreateInfoKHR( uint32_t aspectReferenceCount_ = 0, const InputAttachmentAspectReferenceKHR* pAspectReferences_ = nullptr )
17179 : sType( StructureType::eRenderPassInputAttachmentAspectCreateInfoKHR )
17180 , pNext( nullptr )
17181 , aspectReferenceCount( aspectReferenceCount_ )
17182 , pAspectReferences( pAspectReferences_ )
17183 {
17184 }
17185
17186 RenderPassInputAttachmentAspectCreateInfoKHR( VkRenderPassInputAttachmentAspectCreateInfoKHR const & rhs )
17187 {
17188 memcpy( this, &rhs, sizeof( RenderPassInputAttachmentAspectCreateInfoKHR ) );
17189 }
17190
17191 RenderPassInputAttachmentAspectCreateInfoKHR& operator=( VkRenderPassInputAttachmentAspectCreateInfoKHR const & rhs )
17192 {
17193 memcpy( this, &rhs, sizeof( RenderPassInputAttachmentAspectCreateInfoKHR ) );
17194 return *this;
17195 }
17196 RenderPassInputAttachmentAspectCreateInfoKHR& setPNext( const void* pNext_ )
17197 {
17198 pNext = pNext_;
17199 return *this;
17200 }
17201
17202 RenderPassInputAttachmentAspectCreateInfoKHR& setAspectReferenceCount( uint32_t aspectReferenceCount_ )
17203 {
17204 aspectReferenceCount = aspectReferenceCount_;
17205 return *this;
17206 }
17207
17208 RenderPassInputAttachmentAspectCreateInfoKHR& setPAspectReferences( const InputAttachmentAspectReferenceKHR* pAspectReferences_ )
17209 {
17210 pAspectReferences = pAspectReferences_;
17211 return *this;
17212 }
17213
17214 operator const VkRenderPassInputAttachmentAspectCreateInfoKHR&() const
17215 {
17216 return *reinterpret_cast<const VkRenderPassInputAttachmentAspectCreateInfoKHR*>(this);
17217 }
17218
17219 bool operator==( RenderPassInputAttachmentAspectCreateInfoKHR const& rhs ) const
17220 {
17221 return ( sType == rhs.sType )
17222 && ( pNext == rhs.pNext )
17223 && ( aspectReferenceCount == rhs.aspectReferenceCount )
17224 && ( pAspectReferences == rhs.pAspectReferences );
17225 }
17226
17227 bool operator!=( RenderPassInputAttachmentAspectCreateInfoKHR const& rhs ) const
17228 {
17229 return !operator==( rhs );
17230 }
17231
17232 private:
17233 StructureType sType;
17234
17235 public:
17236 const void* pNext;
17237 uint32_t aspectReferenceCount;
17238 const InputAttachmentAspectReferenceKHR* pAspectReferences;
17239 };
17240 static_assert( sizeof( RenderPassInputAttachmentAspectCreateInfoKHR ) == sizeof( VkRenderPassInputAttachmentAspectCreateInfoKHR ), "struct and wrapper have different size!" );
17241
17242 struct BindImagePlaneMemoryInfoKHR
17243 {
17244 BindImagePlaneMemoryInfoKHR( ImageAspectFlagBits planeAspect_ = ImageAspectFlagBits::eColor )
17245 : sType( StructureType::eBindImagePlaneMemoryInfoKHR )
17246 , pNext( nullptr )
17247 , planeAspect( planeAspect_ )
17248 {
17249 }
17250
17251 BindImagePlaneMemoryInfoKHR( VkBindImagePlaneMemoryInfoKHR const & rhs )
17252 {
17253 memcpy( this, &rhs, sizeof( BindImagePlaneMemoryInfoKHR ) );
17254 }
17255
17256 BindImagePlaneMemoryInfoKHR& operator=( VkBindImagePlaneMemoryInfoKHR const & rhs )
17257 {
17258 memcpy( this, &rhs, sizeof( BindImagePlaneMemoryInfoKHR ) );
17259 return *this;
17260 }
17261 BindImagePlaneMemoryInfoKHR& setPNext( const void* pNext_ )
17262 {
17263 pNext = pNext_;
17264 return *this;
17265 }
17266
17267 BindImagePlaneMemoryInfoKHR& setPlaneAspect( ImageAspectFlagBits planeAspect_ )
17268 {
17269 planeAspect = planeAspect_;
17270 return *this;
17271 }
17272
17273 operator const VkBindImagePlaneMemoryInfoKHR&() const
17274 {
17275 return *reinterpret_cast<const VkBindImagePlaneMemoryInfoKHR*>(this);
17276 }
17277
17278 bool operator==( BindImagePlaneMemoryInfoKHR const& rhs ) const
17279 {
17280 return ( sType == rhs.sType )
17281 && ( pNext == rhs.pNext )
17282 && ( planeAspect == rhs.planeAspect );
17283 }
17284
17285 bool operator!=( BindImagePlaneMemoryInfoKHR const& rhs ) const
17286 {
17287 return !operator==( rhs );
17288 }
17289
17290 private:
17291 StructureType sType;
17292
17293 public:
17294 const void* pNext;
17295 ImageAspectFlagBits planeAspect;
17296 };
17297 static_assert( sizeof( BindImagePlaneMemoryInfoKHR ) == sizeof( VkBindImagePlaneMemoryInfoKHR ), "struct and wrapper have different size!" );
17298
17299 struct ImagePlaneMemoryRequirementsInfoKHR
17300 {
17301 ImagePlaneMemoryRequirementsInfoKHR( ImageAspectFlagBits planeAspect_ = ImageAspectFlagBits::eColor )
17302 : sType( StructureType::eImagePlaneMemoryRequirementsInfoKHR )
17303 , pNext( nullptr )
17304 , planeAspect( planeAspect_ )
17305 {
17306 }
17307
17308 ImagePlaneMemoryRequirementsInfoKHR( VkImagePlaneMemoryRequirementsInfoKHR const & rhs )
17309 {
17310 memcpy( this, &rhs, sizeof( ImagePlaneMemoryRequirementsInfoKHR ) );
17311 }
17312
17313 ImagePlaneMemoryRequirementsInfoKHR& operator=( VkImagePlaneMemoryRequirementsInfoKHR const & rhs )
17314 {
17315 memcpy( this, &rhs, sizeof( ImagePlaneMemoryRequirementsInfoKHR ) );
17316 return *this;
17317 }
17318 ImagePlaneMemoryRequirementsInfoKHR& setPNext( const void* pNext_ )
17319 {
17320 pNext = pNext_;
17321 return *this;
17322 }
17323
17324 ImagePlaneMemoryRequirementsInfoKHR& setPlaneAspect( ImageAspectFlagBits planeAspect_ )
17325 {
17326 planeAspect = planeAspect_;
17327 return *this;
17328 }
17329
17330 operator const VkImagePlaneMemoryRequirementsInfoKHR&() const
17331 {
17332 return *reinterpret_cast<const VkImagePlaneMemoryRequirementsInfoKHR*>(this);
17333 }
17334
17335 bool operator==( ImagePlaneMemoryRequirementsInfoKHR const& rhs ) const
17336 {
17337 return ( sType == rhs.sType )
17338 && ( pNext == rhs.pNext )
17339 && ( planeAspect == rhs.planeAspect );
17340 }
17341
17342 bool operator!=( ImagePlaneMemoryRequirementsInfoKHR const& rhs ) const
17343 {
17344 return !operator==( rhs );
17345 }
17346
17347 private:
17348 StructureType sType;
17349
17350 public:
17351 const void* pNext;
17352 ImageAspectFlagBits planeAspect;
17353 };
17354 static_assert( sizeof( ImagePlaneMemoryRequirementsInfoKHR ) == sizeof( VkImagePlaneMemoryRequirementsInfoKHR ), "struct and wrapper have different size!" );
17355
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017356 enum class SparseImageFormatFlagBits
17357 {
17358 eSingleMiptail = VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT,
17359 eAlignedMipSize = VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT,
17360 eNonstandardBlockSize = VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT
17361 };
17362
17363 using SparseImageFormatFlags = Flags<SparseImageFormatFlagBits, VkSparseImageFormatFlags>;
17364
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017365 VULKAN_HPP_INLINE SparseImageFormatFlags operator|( SparseImageFormatFlagBits bit0, SparseImageFormatFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017366 {
17367 return SparseImageFormatFlags( bit0 ) | bit1;
17368 }
17369
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017370 VULKAN_HPP_INLINE SparseImageFormatFlags operator~( SparseImageFormatFlagBits bits )
17371 {
17372 return ~( SparseImageFormatFlags( bits ) );
17373 }
17374
17375 template <> struct FlagTraits<SparseImageFormatFlagBits>
17376 {
17377 enum
17378 {
17379 allFlags = VkFlags(SparseImageFormatFlagBits::eSingleMiptail) | VkFlags(SparseImageFormatFlagBits::eAlignedMipSize) | VkFlags(SparseImageFormatFlagBits::eNonstandardBlockSize)
17380 };
17381 };
17382
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017383 struct SparseImageFormatProperties
17384 {
17385 operator const VkSparseImageFormatProperties&() const
17386 {
17387 return *reinterpret_cast<const VkSparseImageFormatProperties*>(this);
17388 }
17389
17390 bool operator==( SparseImageFormatProperties const& rhs ) const
17391 {
17392 return ( aspectMask == rhs.aspectMask )
17393 && ( imageGranularity == rhs.imageGranularity )
17394 && ( flags == rhs.flags );
17395 }
17396
17397 bool operator!=( SparseImageFormatProperties const& rhs ) const
17398 {
17399 return !operator==( rhs );
17400 }
17401
17402 ImageAspectFlags aspectMask;
17403 Extent3D imageGranularity;
17404 SparseImageFormatFlags flags;
17405 };
17406 static_assert( sizeof( SparseImageFormatProperties ) == sizeof( VkSparseImageFormatProperties ), "struct and wrapper have different size!" );
17407
17408 struct SparseImageMemoryRequirements
17409 {
17410 operator const VkSparseImageMemoryRequirements&() const
17411 {
17412 return *reinterpret_cast<const VkSparseImageMemoryRequirements*>(this);
17413 }
17414
17415 bool operator==( SparseImageMemoryRequirements const& rhs ) const
17416 {
17417 return ( formatProperties == rhs.formatProperties )
17418 && ( imageMipTailFirstLod == rhs.imageMipTailFirstLod )
17419 && ( imageMipTailSize == rhs.imageMipTailSize )
17420 && ( imageMipTailOffset == rhs.imageMipTailOffset )
17421 && ( imageMipTailStride == rhs.imageMipTailStride );
17422 }
17423
17424 bool operator!=( SparseImageMemoryRequirements const& rhs ) const
17425 {
17426 return !operator==( rhs );
17427 }
17428
17429 SparseImageFormatProperties formatProperties;
17430 uint32_t imageMipTailFirstLod;
17431 DeviceSize imageMipTailSize;
17432 DeviceSize imageMipTailOffset;
17433 DeviceSize imageMipTailStride;
17434 };
17435 static_assert( sizeof( SparseImageMemoryRequirements ) == sizeof( VkSparseImageMemoryRequirements ), "struct and wrapper have different size!" );
17436
Mark Young39389872017-01-19 21:10:49 -070017437 struct SparseImageFormatProperties2KHR
17438 {
17439 operator const VkSparseImageFormatProperties2KHR&() const
17440 {
17441 return *reinterpret_cast<const VkSparseImageFormatProperties2KHR*>(this);
17442 }
17443
17444 bool operator==( SparseImageFormatProperties2KHR const& rhs ) const
17445 {
17446 return ( sType == rhs.sType )
17447 && ( pNext == rhs.pNext )
17448 && ( properties == rhs.properties );
17449 }
17450
17451 bool operator!=( SparseImageFormatProperties2KHR const& rhs ) const
17452 {
17453 return !operator==( rhs );
17454 }
17455
17456 private:
17457 StructureType sType;
17458
17459 public:
17460 void* pNext;
17461 SparseImageFormatProperties properties;
17462 };
17463 static_assert( sizeof( SparseImageFormatProperties2KHR ) == sizeof( VkSparseImageFormatProperties2KHR ), "struct and wrapper have different size!" );
17464
Mark Youngabc2d6e2017-07-07 07:59:56 -060017465 struct SparseImageMemoryRequirements2KHR
17466 {
17467 operator const VkSparseImageMemoryRequirements2KHR&() const
17468 {
17469 return *reinterpret_cast<const VkSparseImageMemoryRequirements2KHR*>(this);
17470 }
17471
17472 bool operator==( SparseImageMemoryRequirements2KHR const& rhs ) const
17473 {
17474 return ( sType == rhs.sType )
17475 && ( pNext == rhs.pNext )
17476 && ( memoryRequirements == rhs.memoryRequirements );
17477 }
17478
17479 bool operator!=( SparseImageMemoryRequirements2KHR const& rhs ) const
17480 {
17481 return !operator==( rhs );
17482 }
17483
17484 private:
17485 StructureType sType;
17486
17487 public:
17488 void* pNext;
17489 SparseImageMemoryRequirements memoryRequirements;
17490 };
17491 static_assert( sizeof( SparseImageMemoryRequirements2KHR ) == sizeof( VkSparseImageMemoryRequirements2KHR ), "struct and wrapper have different size!" );
17492
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017493 enum class SparseMemoryBindFlagBits
17494 {
17495 eMetadata = VK_SPARSE_MEMORY_BIND_METADATA_BIT
17496 };
17497
17498 using SparseMemoryBindFlags = Flags<SparseMemoryBindFlagBits, VkSparseMemoryBindFlags>;
17499
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017500 VULKAN_HPP_INLINE SparseMemoryBindFlags operator|( SparseMemoryBindFlagBits bit0, SparseMemoryBindFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017501 {
17502 return SparseMemoryBindFlags( bit0 ) | bit1;
17503 }
17504
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017505 VULKAN_HPP_INLINE SparseMemoryBindFlags operator~( SparseMemoryBindFlagBits bits )
17506 {
17507 return ~( SparseMemoryBindFlags( bits ) );
17508 }
17509
17510 template <> struct FlagTraits<SparseMemoryBindFlagBits>
17511 {
17512 enum
17513 {
17514 allFlags = VkFlags(SparseMemoryBindFlagBits::eMetadata)
17515 };
17516 };
17517
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017518 struct SparseMemoryBind
17519 {
17520 SparseMemoryBind( DeviceSize resourceOffset_ = 0, DeviceSize size_ = 0, DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
17521 : resourceOffset( resourceOffset_ )
17522 , size( size_ )
17523 , memory( memory_ )
17524 , memoryOffset( memoryOffset_ )
17525 , flags( flags_ )
17526 {
17527 }
17528
17529 SparseMemoryBind( VkSparseMemoryBind const & rhs )
17530 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017531 memcpy( this, &rhs, sizeof( SparseMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017532 }
17533
17534 SparseMemoryBind& operator=( VkSparseMemoryBind const & rhs )
17535 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017536 memcpy( this, &rhs, sizeof( SparseMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017537 return *this;
17538 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017539 SparseMemoryBind& setResourceOffset( DeviceSize resourceOffset_ )
17540 {
17541 resourceOffset = resourceOffset_;
17542 return *this;
17543 }
17544
17545 SparseMemoryBind& setSize( DeviceSize size_ )
17546 {
17547 size = size_;
17548 return *this;
17549 }
17550
17551 SparseMemoryBind& setMemory( DeviceMemory memory_ )
17552 {
17553 memory = memory_;
17554 return *this;
17555 }
17556
17557 SparseMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
17558 {
17559 memoryOffset = memoryOffset_;
17560 return *this;
17561 }
17562
17563 SparseMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
17564 {
17565 flags = flags_;
17566 return *this;
17567 }
17568
17569 operator const VkSparseMemoryBind&() const
17570 {
17571 return *reinterpret_cast<const VkSparseMemoryBind*>(this);
17572 }
17573
17574 bool operator==( SparseMemoryBind const& rhs ) const
17575 {
17576 return ( resourceOffset == rhs.resourceOffset )
17577 && ( size == rhs.size )
17578 && ( memory == rhs.memory )
17579 && ( memoryOffset == rhs.memoryOffset )
17580 && ( flags == rhs.flags );
17581 }
17582
17583 bool operator!=( SparseMemoryBind const& rhs ) const
17584 {
17585 return !operator==( rhs );
17586 }
17587
17588 DeviceSize resourceOffset;
17589 DeviceSize size;
17590 DeviceMemory memory;
17591 DeviceSize memoryOffset;
17592 SparseMemoryBindFlags flags;
17593 };
17594 static_assert( sizeof( SparseMemoryBind ) == sizeof( VkSparseMemoryBind ), "struct and wrapper have different size!" );
17595
17596 struct SparseImageMemoryBind
17597 {
17598 SparseImageMemoryBind( ImageSubresource subresource_ = ImageSubresource(), Offset3D offset_ = Offset3D(), Extent3D extent_ = Extent3D(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
17599 : subresource( subresource_ )
17600 , offset( offset_ )
17601 , extent( extent_ )
17602 , memory( memory_ )
17603 , memoryOffset( memoryOffset_ )
17604 , flags( flags_ )
17605 {
17606 }
17607
17608 SparseImageMemoryBind( VkSparseImageMemoryBind const & rhs )
17609 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017610 memcpy( this, &rhs, sizeof( SparseImageMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017611 }
17612
17613 SparseImageMemoryBind& operator=( VkSparseImageMemoryBind const & rhs )
17614 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017615 memcpy( this, &rhs, sizeof( SparseImageMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017616 return *this;
17617 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017618 SparseImageMemoryBind& setSubresource( ImageSubresource subresource_ )
17619 {
17620 subresource = subresource_;
17621 return *this;
17622 }
17623
17624 SparseImageMemoryBind& setOffset( Offset3D offset_ )
17625 {
17626 offset = offset_;
17627 return *this;
17628 }
17629
17630 SparseImageMemoryBind& setExtent( Extent3D extent_ )
17631 {
17632 extent = extent_;
17633 return *this;
17634 }
17635
17636 SparseImageMemoryBind& setMemory( DeviceMemory memory_ )
17637 {
17638 memory = memory_;
17639 return *this;
17640 }
17641
17642 SparseImageMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
17643 {
17644 memoryOffset = memoryOffset_;
17645 return *this;
17646 }
17647
17648 SparseImageMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
17649 {
17650 flags = flags_;
17651 return *this;
17652 }
17653
17654 operator const VkSparseImageMemoryBind&() const
17655 {
17656 return *reinterpret_cast<const VkSparseImageMemoryBind*>(this);
17657 }
17658
17659 bool operator==( SparseImageMemoryBind const& rhs ) const
17660 {
17661 return ( subresource == rhs.subresource )
17662 && ( offset == rhs.offset )
17663 && ( extent == rhs.extent )
17664 && ( memory == rhs.memory )
17665 && ( memoryOffset == rhs.memoryOffset )
17666 && ( flags == rhs.flags );
17667 }
17668
17669 bool operator!=( SparseImageMemoryBind const& rhs ) const
17670 {
17671 return !operator==( rhs );
17672 }
17673
17674 ImageSubresource subresource;
17675 Offset3D offset;
17676 Extent3D extent;
17677 DeviceMemory memory;
17678 DeviceSize memoryOffset;
17679 SparseMemoryBindFlags flags;
17680 };
17681 static_assert( sizeof( SparseImageMemoryBind ) == sizeof( VkSparseImageMemoryBind ), "struct and wrapper have different size!" );
17682
17683 struct SparseBufferMemoryBindInfo
17684 {
17685 SparseBufferMemoryBindInfo( Buffer buffer_ = Buffer(), uint32_t bindCount_ = 0, const SparseMemoryBind* pBinds_ = nullptr )
17686 : buffer( buffer_ )
17687 , bindCount( bindCount_ )
17688 , pBinds( pBinds_ )
17689 {
17690 }
17691
17692 SparseBufferMemoryBindInfo( VkSparseBufferMemoryBindInfo const & rhs )
17693 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017694 memcpy( this, &rhs, sizeof( SparseBufferMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017695 }
17696
17697 SparseBufferMemoryBindInfo& operator=( VkSparseBufferMemoryBindInfo const & rhs )
17698 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017699 memcpy( this, &rhs, sizeof( SparseBufferMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017700 return *this;
17701 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017702 SparseBufferMemoryBindInfo& setBuffer( Buffer buffer_ )
17703 {
17704 buffer = buffer_;
17705 return *this;
17706 }
17707
17708 SparseBufferMemoryBindInfo& setBindCount( uint32_t bindCount_ )
17709 {
17710 bindCount = bindCount_;
17711 return *this;
17712 }
17713
17714 SparseBufferMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
17715 {
17716 pBinds = pBinds_;
17717 return *this;
17718 }
17719
17720 operator const VkSparseBufferMemoryBindInfo&() const
17721 {
17722 return *reinterpret_cast<const VkSparseBufferMemoryBindInfo*>(this);
17723 }
17724
17725 bool operator==( SparseBufferMemoryBindInfo const& rhs ) const
17726 {
17727 return ( buffer == rhs.buffer )
17728 && ( bindCount == rhs.bindCount )
17729 && ( pBinds == rhs.pBinds );
17730 }
17731
17732 bool operator!=( SparseBufferMemoryBindInfo const& rhs ) const
17733 {
17734 return !operator==( rhs );
17735 }
17736
17737 Buffer buffer;
17738 uint32_t bindCount;
17739 const SparseMemoryBind* pBinds;
17740 };
17741 static_assert( sizeof( SparseBufferMemoryBindInfo ) == sizeof( VkSparseBufferMemoryBindInfo ), "struct and wrapper have different size!" );
17742
17743 struct SparseImageOpaqueMemoryBindInfo
17744 {
17745 SparseImageOpaqueMemoryBindInfo( Image image_ = Image(), uint32_t bindCount_ = 0, const SparseMemoryBind* pBinds_ = nullptr )
17746 : image( image_ )
17747 , bindCount( bindCount_ )
17748 , pBinds( pBinds_ )
17749 {
17750 }
17751
17752 SparseImageOpaqueMemoryBindInfo( VkSparseImageOpaqueMemoryBindInfo const & rhs )
17753 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017754 memcpy( this, &rhs, sizeof( SparseImageOpaqueMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017755 }
17756
17757 SparseImageOpaqueMemoryBindInfo& operator=( VkSparseImageOpaqueMemoryBindInfo const & rhs )
17758 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017759 memcpy( this, &rhs, sizeof( SparseImageOpaqueMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017760 return *this;
17761 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017762 SparseImageOpaqueMemoryBindInfo& setImage( Image image_ )
17763 {
17764 image = image_;
17765 return *this;
17766 }
17767
17768 SparseImageOpaqueMemoryBindInfo& setBindCount( uint32_t bindCount_ )
17769 {
17770 bindCount = bindCount_;
17771 return *this;
17772 }
17773
17774 SparseImageOpaqueMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
17775 {
17776 pBinds = pBinds_;
17777 return *this;
17778 }
17779
17780 operator const VkSparseImageOpaqueMemoryBindInfo&() const
17781 {
17782 return *reinterpret_cast<const VkSparseImageOpaqueMemoryBindInfo*>(this);
17783 }
17784
17785 bool operator==( SparseImageOpaqueMemoryBindInfo const& rhs ) const
17786 {
17787 return ( image == rhs.image )
17788 && ( bindCount == rhs.bindCount )
17789 && ( pBinds == rhs.pBinds );
17790 }
17791
17792 bool operator!=( SparseImageOpaqueMemoryBindInfo const& rhs ) const
17793 {
17794 return !operator==( rhs );
17795 }
17796
17797 Image image;
17798 uint32_t bindCount;
17799 const SparseMemoryBind* pBinds;
17800 };
17801 static_assert( sizeof( SparseImageOpaqueMemoryBindInfo ) == sizeof( VkSparseImageOpaqueMemoryBindInfo ), "struct and wrapper have different size!" );
17802
17803 struct SparseImageMemoryBindInfo
17804 {
17805 SparseImageMemoryBindInfo( Image image_ = Image(), uint32_t bindCount_ = 0, const SparseImageMemoryBind* pBinds_ = nullptr )
17806 : image( image_ )
17807 , bindCount( bindCount_ )
17808 , pBinds( pBinds_ )
17809 {
17810 }
17811
17812 SparseImageMemoryBindInfo( VkSparseImageMemoryBindInfo const & rhs )
17813 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017814 memcpy( this, &rhs, sizeof( SparseImageMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017815 }
17816
17817 SparseImageMemoryBindInfo& operator=( VkSparseImageMemoryBindInfo const & rhs )
17818 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017819 memcpy( this, &rhs, sizeof( SparseImageMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017820 return *this;
17821 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017822 SparseImageMemoryBindInfo& setImage( Image image_ )
17823 {
17824 image = image_;
17825 return *this;
17826 }
17827
17828 SparseImageMemoryBindInfo& setBindCount( uint32_t bindCount_ )
17829 {
17830 bindCount = bindCount_;
17831 return *this;
17832 }
17833
17834 SparseImageMemoryBindInfo& setPBinds( const SparseImageMemoryBind* pBinds_ )
17835 {
17836 pBinds = pBinds_;
17837 return *this;
17838 }
17839
17840 operator const VkSparseImageMemoryBindInfo&() const
17841 {
17842 return *reinterpret_cast<const VkSparseImageMemoryBindInfo*>(this);
17843 }
17844
17845 bool operator==( SparseImageMemoryBindInfo const& rhs ) const
17846 {
17847 return ( image == rhs.image )
17848 && ( bindCount == rhs.bindCount )
17849 && ( pBinds == rhs.pBinds );
17850 }
17851
17852 bool operator!=( SparseImageMemoryBindInfo const& rhs ) const
17853 {
17854 return !operator==( rhs );
17855 }
17856
17857 Image image;
17858 uint32_t bindCount;
17859 const SparseImageMemoryBind* pBinds;
17860 };
17861 static_assert( sizeof( SparseImageMemoryBindInfo ) == sizeof( VkSparseImageMemoryBindInfo ), "struct and wrapper have different size!" );
17862
17863 struct BindSparseInfo
17864 {
17865 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 )
17866 : sType( StructureType::eBindSparseInfo )
17867 , pNext( nullptr )
17868 , waitSemaphoreCount( waitSemaphoreCount_ )
17869 , pWaitSemaphores( pWaitSemaphores_ )
17870 , bufferBindCount( bufferBindCount_ )
17871 , pBufferBinds( pBufferBinds_ )
17872 , imageOpaqueBindCount( imageOpaqueBindCount_ )
17873 , pImageOpaqueBinds( pImageOpaqueBinds_ )
17874 , imageBindCount( imageBindCount_ )
17875 , pImageBinds( pImageBinds_ )
17876 , signalSemaphoreCount( signalSemaphoreCount_ )
17877 , pSignalSemaphores( pSignalSemaphores_ )
17878 {
17879 }
17880
17881 BindSparseInfo( VkBindSparseInfo const & rhs )
17882 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017883 memcpy( this, &rhs, sizeof( BindSparseInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017884 }
17885
17886 BindSparseInfo& operator=( VkBindSparseInfo const & rhs )
17887 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017888 memcpy( this, &rhs, sizeof( BindSparseInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017889 return *this;
17890 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017891 BindSparseInfo& setPNext( const void* pNext_ )
17892 {
17893 pNext = pNext_;
17894 return *this;
17895 }
17896
17897 BindSparseInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
17898 {
17899 waitSemaphoreCount = waitSemaphoreCount_;
17900 return *this;
17901 }
17902
17903 BindSparseInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
17904 {
17905 pWaitSemaphores = pWaitSemaphores_;
17906 return *this;
17907 }
17908
17909 BindSparseInfo& setBufferBindCount( uint32_t bufferBindCount_ )
17910 {
17911 bufferBindCount = bufferBindCount_;
17912 return *this;
17913 }
17914
17915 BindSparseInfo& setPBufferBinds( const SparseBufferMemoryBindInfo* pBufferBinds_ )
17916 {
17917 pBufferBinds = pBufferBinds_;
17918 return *this;
17919 }
17920
17921 BindSparseInfo& setImageOpaqueBindCount( uint32_t imageOpaqueBindCount_ )
17922 {
17923 imageOpaqueBindCount = imageOpaqueBindCount_;
17924 return *this;
17925 }
17926
17927 BindSparseInfo& setPImageOpaqueBinds( const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds_ )
17928 {
17929 pImageOpaqueBinds = pImageOpaqueBinds_;
17930 return *this;
17931 }
17932
17933 BindSparseInfo& setImageBindCount( uint32_t imageBindCount_ )
17934 {
17935 imageBindCount = imageBindCount_;
17936 return *this;
17937 }
17938
17939 BindSparseInfo& setPImageBinds( const SparseImageMemoryBindInfo* pImageBinds_ )
17940 {
17941 pImageBinds = pImageBinds_;
17942 return *this;
17943 }
17944
17945 BindSparseInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
17946 {
17947 signalSemaphoreCount = signalSemaphoreCount_;
17948 return *this;
17949 }
17950
17951 BindSparseInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
17952 {
17953 pSignalSemaphores = pSignalSemaphores_;
17954 return *this;
17955 }
17956
17957 operator const VkBindSparseInfo&() const
17958 {
17959 return *reinterpret_cast<const VkBindSparseInfo*>(this);
17960 }
17961
17962 bool operator==( BindSparseInfo const& rhs ) const
17963 {
17964 return ( sType == rhs.sType )
17965 && ( pNext == rhs.pNext )
17966 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
17967 && ( pWaitSemaphores == rhs.pWaitSemaphores )
17968 && ( bufferBindCount == rhs.bufferBindCount )
17969 && ( pBufferBinds == rhs.pBufferBinds )
17970 && ( imageOpaqueBindCount == rhs.imageOpaqueBindCount )
17971 && ( pImageOpaqueBinds == rhs.pImageOpaqueBinds )
17972 && ( imageBindCount == rhs.imageBindCount )
17973 && ( pImageBinds == rhs.pImageBinds )
17974 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
17975 && ( pSignalSemaphores == rhs.pSignalSemaphores );
17976 }
17977
17978 bool operator!=( BindSparseInfo const& rhs ) const
17979 {
17980 return !operator==( rhs );
17981 }
17982
17983 private:
17984 StructureType sType;
17985
17986 public:
17987 const void* pNext;
17988 uint32_t waitSemaphoreCount;
17989 const Semaphore* pWaitSemaphores;
17990 uint32_t bufferBindCount;
17991 const SparseBufferMemoryBindInfo* pBufferBinds;
17992 uint32_t imageOpaqueBindCount;
17993 const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds;
17994 uint32_t imageBindCount;
17995 const SparseImageMemoryBindInfo* pImageBinds;
17996 uint32_t signalSemaphoreCount;
17997 const Semaphore* pSignalSemaphores;
17998 };
17999 static_assert( sizeof( BindSparseInfo ) == sizeof( VkBindSparseInfo ), "struct and wrapper have different size!" );
18000
18001 enum class PipelineStageFlagBits
18002 {
18003 eTopOfPipe = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
18004 eDrawIndirect = VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,
18005 eVertexInput = VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,
18006 eVertexShader = VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,
18007 eTessellationControlShader = VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,
18008 eTessellationEvaluationShader = VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT,
18009 eGeometryShader = VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT,
18010 eFragmentShader = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
18011 eEarlyFragmentTests = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,
18012 eLateFragmentTests = VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
18013 eColorAttachmentOutput = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
18014 eComputeShader = VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
18015 eTransfer = VK_PIPELINE_STAGE_TRANSFER_BIT,
18016 eBottomOfPipe = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
18017 eHost = VK_PIPELINE_STAGE_HOST_BIT,
18018 eAllGraphics = VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018019 eAllCommands = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,
18020 eCommandProcessNVX = VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018021 };
18022
18023 using PipelineStageFlags = Flags<PipelineStageFlagBits, VkPipelineStageFlags>;
18024
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018025 VULKAN_HPP_INLINE PipelineStageFlags operator|( PipelineStageFlagBits bit0, PipelineStageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018026 {
18027 return PipelineStageFlags( bit0 ) | bit1;
18028 }
18029
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018030 VULKAN_HPP_INLINE PipelineStageFlags operator~( PipelineStageFlagBits bits )
18031 {
18032 return ~( PipelineStageFlags( bits ) );
18033 }
18034
18035 template <> struct FlagTraits<PipelineStageFlagBits>
18036 {
18037 enum
18038 {
18039 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)
18040 };
18041 };
18042
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018043 enum class CommandPoolCreateFlagBits
18044 {
18045 eTransient = VK_COMMAND_POOL_CREATE_TRANSIENT_BIT,
18046 eResetCommandBuffer = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT
18047 };
18048
18049 using CommandPoolCreateFlags = Flags<CommandPoolCreateFlagBits, VkCommandPoolCreateFlags>;
18050
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018051 VULKAN_HPP_INLINE CommandPoolCreateFlags operator|( CommandPoolCreateFlagBits bit0, CommandPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018052 {
18053 return CommandPoolCreateFlags( bit0 ) | bit1;
18054 }
18055
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018056 VULKAN_HPP_INLINE CommandPoolCreateFlags operator~( CommandPoolCreateFlagBits bits )
18057 {
18058 return ~( CommandPoolCreateFlags( bits ) );
18059 }
18060
18061 template <> struct FlagTraits<CommandPoolCreateFlagBits>
18062 {
18063 enum
18064 {
18065 allFlags = VkFlags(CommandPoolCreateFlagBits::eTransient) | VkFlags(CommandPoolCreateFlagBits::eResetCommandBuffer)
18066 };
18067 };
18068
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018069 struct CommandPoolCreateInfo
18070 {
18071 CommandPoolCreateInfo( CommandPoolCreateFlags flags_ = CommandPoolCreateFlags(), uint32_t queueFamilyIndex_ = 0 )
18072 : sType( StructureType::eCommandPoolCreateInfo )
18073 , pNext( nullptr )
18074 , flags( flags_ )
18075 , queueFamilyIndex( queueFamilyIndex_ )
18076 {
18077 }
18078
18079 CommandPoolCreateInfo( VkCommandPoolCreateInfo const & rhs )
18080 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018081 memcpy( this, &rhs, sizeof( CommandPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018082 }
18083
18084 CommandPoolCreateInfo& operator=( VkCommandPoolCreateInfo const & rhs )
18085 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018086 memcpy( this, &rhs, sizeof( CommandPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018087 return *this;
18088 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018089 CommandPoolCreateInfo& setPNext( const void* pNext_ )
18090 {
18091 pNext = pNext_;
18092 return *this;
18093 }
18094
18095 CommandPoolCreateInfo& setFlags( CommandPoolCreateFlags flags_ )
18096 {
18097 flags = flags_;
18098 return *this;
18099 }
18100
18101 CommandPoolCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
18102 {
18103 queueFamilyIndex = queueFamilyIndex_;
18104 return *this;
18105 }
18106
18107 operator const VkCommandPoolCreateInfo&() const
18108 {
18109 return *reinterpret_cast<const VkCommandPoolCreateInfo*>(this);
18110 }
18111
18112 bool operator==( CommandPoolCreateInfo const& rhs ) const
18113 {
18114 return ( sType == rhs.sType )
18115 && ( pNext == rhs.pNext )
18116 && ( flags == rhs.flags )
18117 && ( queueFamilyIndex == rhs.queueFamilyIndex );
18118 }
18119
18120 bool operator!=( CommandPoolCreateInfo const& rhs ) const
18121 {
18122 return !operator==( rhs );
18123 }
18124
18125 private:
18126 StructureType sType;
18127
18128 public:
18129 const void* pNext;
18130 CommandPoolCreateFlags flags;
18131 uint32_t queueFamilyIndex;
18132 };
18133 static_assert( sizeof( CommandPoolCreateInfo ) == sizeof( VkCommandPoolCreateInfo ), "struct and wrapper have different size!" );
18134
18135 enum class CommandPoolResetFlagBits
18136 {
18137 eReleaseResources = VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT
18138 };
18139
18140 using CommandPoolResetFlags = Flags<CommandPoolResetFlagBits, VkCommandPoolResetFlags>;
18141
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018142 VULKAN_HPP_INLINE CommandPoolResetFlags operator|( CommandPoolResetFlagBits bit0, CommandPoolResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018143 {
18144 return CommandPoolResetFlags( bit0 ) | bit1;
18145 }
18146
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018147 VULKAN_HPP_INLINE CommandPoolResetFlags operator~( CommandPoolResetFlagBits bits )
18148 {
18149 return ~( CommandPoolResetFlags( bits ) );
18150 }
18151
18152 template <> struct FlagTraits<CommandPoolResetFlagBits>
18153 {
18154 enum
18155 {
18156 allFlags = VkFlags(CommandPoolResetFlagBits::eReleaseResources)
18157 };
18158 };
18159
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018160 enum class CommandBufferResetFlagBits
18161 {
18162 eReleaseResources = VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT
18163 };
18164
18165 using CommandBufferResetFlags = Flags<CommandBufferResetFlagBits, VkCommandBufferResetFlags>;
18166
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018167 VULKAN_HPP_INLINE CommandBufferResetFlags operator|( CommandBufferResetFlagBits bit0, CommandBufferResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018168 {
18169 return CommandBufferResetFlags( bit0 ) | bit1;
18170 }
18171
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018172 VULKAN_HPP_INLINE CommandBufferResetFlags operator~( CommandBufferResetFlagBits bits )
18173 {
18174 return ~( CommandBufferResetFlags( bits ) );
18175 }
18176
18177 template <> struct FlagTraits<CommandBufferResetFlagBits>
18178 {
18179 enum
18180 {
18181 allFlags = VkFlags(CommandBufferResetFlagBits::eReleaseResources)
18182 };
18183 };
18184
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018185 enum class SampleCountFlagBits
18186 {
18187 e1 = VK_SAMPLE_COUNT_1_BIT,
18188 e2 = VK_SAMPLE_COUNT_2_BIT,
18189 e4 = VK_SAMPLE_COUNT_4_BIT,
18190 e8 = VK_SAMPLE_COUNT_8_BIT,
18191 e16 = VK_SAMPLE_COUNT_16_BIT,
18192 e32 = VK_SAMPLE_COUNT_32_BIT,
18193 e64 = VK_SAMPLE_COUNT_64_BIT
18194 };
18195
18196 using SampleCountFlags = Flags<SampleCountFlagBits, VkSampleCountFlags>;
18197
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018198 VULKAN_HPP_INLINE SampleCountFlags operator|( SampleCountFlagBits bit0, SampleCountFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018199 {
18200 return SampleCountFlags( bit0 ) | bit1;
18201 }
18202
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018203 VULKAN_HPP_INLINE SampleCountFlags operator~( SampleCountFlagBits bits )
18204 {
18205 return ~( SampleCountFlags( bits ) );
18206 }
18207
18208 template <> struct FlagTraits<SampleCountFlagBits>
18209 {
18210 enum
18211 {
18212 allFlags = VkFlags(SampleCountFlagBits::e1) | VkFlags(SampleCountFlagBits::e2) | VkFlags(SampleCountFlagBits::e4) | VkFlags(SampleCountFlagBits::e8) | VkFlags(SampleCountFlagBits::e16) | VkFlags(SampleCountFlagBits::e32) | VkFlags(SampleCountFlagBits::e64)
18213 };
18214 };
18215
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018216 struct ImageFormatProperties
18217 {
18218 operator const VkImageFormatProperties&() const
18219 {
18220 return *reinterpret_cast<const VkImageFormatProperties*>(this);
18221 }
18222
18223 bool operator==( ImageFormatProperties const& rhs ) const
18224 {
18225 return ( maxExtent == rhs.maxExtent )
18226 && ( maxMipLevels == rhs.maxMipLevels )
18227 && ( maxArrayLayers == rhs.maxArrayLayers )
18228 && ( sampleCounts == rhs.sampleCounts )
18229 && ( maxResourceSize == rhs.maxResourceSize );
18230 }
18231
18232 bool operator!=( ImageFormatProperties const& rhs ) const
18233 {
18234 return !operator==( rhs );
18235 }
18236
18237 Extent3D maxExtent;
18238 uint32_t maxMipLevels;
18239 uint32_t maxArrayLayers;
18240 SampleCountFlags sampleCounts;
18241 DeviceSize maxResourceSize;
18242 };
18243 static_assert( sizeof( ImageFormatProperties ) == sizeof( VkImageFormatProperties ), "struct and wrapper have different size!" );
18244
18245 struct ImageCreateInfo
18246 {
18247 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 )
18248 : sType( StructureType::eImageCreateInfo )
18249 , pNext( nullptr )
18250 , flags( flags_ )
18251 , imageType( imageType_ )
18252 , format( format_ )
18253 , extent( extent_ )
18254 , mipLevels( mipLevels_ )
18255 , arrayLayers( arrayLayers_ )
18256 , samples( samples_ )
18257 , tiling( tiling_ )
18258 , usage( usage_ )
18259 , sharingMode( sharingMode_ )
18260 , queueFamilyIndexCount( queueFamilyIndexCount_ )
18261 , pQueueFamilyIndices( pQueueFamilyIndices_ )
18262 , initialLayout( initialLayout_ )
18263 {
18264 }
18265
18266 ImageCreateInfo( VkImageCreateInfo const & rhs )
18267 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018268 memcpy( this, &rhs, sizeof( ImageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018269 }
18270
18271 ImageCreateInfo& operator=( VkImageCreateInfo const & rhs )
18272 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018273 memcpy( this, &rhs, sizeof( ImageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018274 return *this;
18275 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018276 ImageCreateInfo& setPNext( const void* pNext_ )
18277 {
18278 pNext = pNext_;
18279 return *this;
18280 }
18281
18282 ImageCreateInfo& setFlags( ImageCreateFlags flags_ )
18283 {
18284 flags = flags_;
18285 return *this;
18286 }
18287
18288 ImageCreateInfo& setImageType( ImageType imageType_ )
18289 {
18290 imageType = imageType_;
18291 return *this;
18292 }
18293
18294 ImageCreateInfo& setFormat( Format format_ )
18295 {
18296 format = format_;
18297 return *this;
18298 }
18299
18300 ImageCreateInfo& setExtent( Extent3D extent_ )
18301 {
18302 extent = extent_;
18303 return *this;
18304 }
18305
18306 ImageCreateInfo& setMipLevels( uint32_t mipLevels_ )
18307 {
18308 mipLevels = mipLevels_;
18309 return *this;
18310 }
18311
18312 ImageCreateInfo& setArrayLayers( uint32_t arrayLayers_ )
18313 {
18314 arrayLayers = arrayLayers_;
18315 return *this;
18316 }
18317
18318 ImageCreateInfo& setSamples( SampleCountFlagBits samples_ )
18319 {
18320 samples = samples_;
18321 return *this;
18322 }
18323
18324 ImageCreateInfo& setTiling( ImageTiling tiling_ )
18325 {
18326 tiling = tiling_;
18327 return *this;
18328 }
18329
18330 ImageCreateInfo& setUsage( ImageUsageFlags usage_ )
18331 {
18332 usage = usage_;
18333 return *this;
18334 }
18335
18336 ImageCreateInfo& setSharingMode( SharingMode sharingMode_ )
18337 {
18338 sharingMode = sharingMode_;
18339 return *this;
18340 }
18341
18342 ImageCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
18343 {
18344 queueFamilyIndexCount = queueFamilyIndexCount_;
18345 return *this;
18346 }
18347
18348 ImageCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
18349 {
18350 pQueueFamilyIndices = pQueueFamilyIndices_;
18351 return *this;
18352 }
18353
18354 ImageCreateInfo& setInitialLayout( ImageLayout initialLayout_ )
18355 {
18356 initialLayout = initialLayout_;
18357 return *this;
18358 }
18359
18360 operator const VkImageCreateInfo&() const
18361 {
18362 return *reinterpret_cast<const VkImageCreateInfo*>(this);
18363 }
18364
18365 bool operator==( ImageCreateInfo const& rhs ) const
18366 {
18367 return ( sType == rhs.sType )
18368 && ( pNext == rhs.pNext )
18369 && ( flags == rhs.flags )
18370 && ( imageType == rhs.imageType )
18371 && ( format == rhs.format )
18372 && ( extent == rhs.extent )
18373 && ( mipLevels == rhs.mipLevels )
18374 && ( arrayLayers == rhs.arrayLayers )
18375 && ( samples == rhs.samples )
18376 && ( tiling == rhs.tiling )
18377 && ( usage == rhs.usage )
18378 && ( sharingMode == rhs.sharingMode )
18379 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
18380 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
18381 && ( initialLayout == rhs.initialLayout );
18382 }
18383
18384 bool operator!=( ImageCreateInfo const& rhs ) const
18385 {
18386 return !operator==( rhs );
18387 }
18388
18389 private:
18390 StructureType sType;
18391
18392 public:
18393 const void* pNext;
18394 ImageCreateFlags flags;
18395 ImageType imageType;
18396 Format format;
18397 Extent3D extent;
18398 uint32_t mipLevels;
18399 uint32_t arrayLayers;
18400 SampleCountFlagBits samples;
18401 ImageTiling tiling;
18402 ImageUsageFlags usage;
18403 SharingMode sharingMode;
18404 uint32_t queueFamilyIndexCount;
18405 const uint32_t* pQueueFamilyIndices;
18406 ImageLayout initialLayout;
18407 };
18408 static_assert( sizeof( ImageCreateInfo ) == sizeof( VkImageCreateInfo ), "struct and wrapper have different size!" );
18409
18410 struct PipelineMultisampleStateCreateInfo
18411 {
18412 PipelineMultisampleStateCreateInfo( PipelineMultisampleStateCreateFlags flags_ = PipelineMultisampleStateCreateFlags(), SampleCountFlagBits rasterizationSamples_ = SampleCountFlagBits::e1, Bool32 sampleShadingEnable_ = 0, float minSampleShading_ = 0, const SampleMask* pSampleMask_ = nullptr, Bool32 alphaToCoverageEnable_ = 0, Bool32 alphaToOneEnable_ = 0 )
18413 : sType( StructureType::ePipelineMultisampleStateCreateInfo )
18414 , pNext( nullptr )
18415 , flags( flags_ )
18416 , rasterizationSamples( rasterizationSamples_ )
18417 , sampleShadingEnable( sampleShadingEnable_ )
18418 , minSampleShading( minSampleShading_ )
18419 , pSampleMask( pSampleMask_ )
18420 , alphaToCoverageEnable( alphaToCoverageEnable_ )
18421 , alphaToOneEnable( alphaToOneEnable_ )
18422 {
18423 }
18424
18425 PipelineMultisampleStateCreateInfo( VkPipelineMultisampleStateCreateInfo const & rhs )
18426 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018427 memcpy( this, &rhs, sizeof( PipelineMultisampleStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018428 }
18429
18430 PipelineMultisampleStateCreateInfo& operator=( VkPipelineMultisampleStateCreateInfo const & rhs )
18431 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018432 memcpy( this, &rhs, sizeof( PipelineMultisampleStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018433 return *this;
18434 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018435 PipelineMultisampleStateCreateInfo& setPNext( const void* pNext_ )
18436 {
18437 pNext = pNext_;
18438 return *this;
18439 }
18440
18441 PipelineMultisampleStateCreateInfo& setFlags( PipelineMultisampleStateCreateFlags flags_ )
18442 {
18443 flags = flags_;
18444 return *this;
18445 }
18446
18447 PipelineMultisampleStateCreateInfo& setRasterizationSamples( SampleCountFlagBits rasterizationSamples_ )
18448 {
18449 rasterizationSamples = rasterizationSamples_;
18450 return *this;
18451 }
18452
18453 PipelineMultisampleStateCreateInfo& setSampleShadingEnable( Bool32 sampleShadingEnable_ )
18454 {
18455 sampleShadingEnable = sampleShadingEnable_;
18456 return *this;
18457 }
18458
18459 PipelineMultisampleStateCreateInfo& setMinSampleShading( float minSampleShading_ )
18460 {
18461 minSampleShading = minSampleShading_;
18462 return *this;
18463 }
18464
18465 PipelineMultisampleStateCreateInfo& setPSampleMask( const SampleMask* pSampleMask_ )
18466 {
18467 pSampleMask = pSampleMask_;
18468 return *this;
18469 }
18470
18471 PipelineMultisampleStateCreateInfo& setAlphaToCoverageEnable( Bool32 alphaToCoverageEnable_ )
18472 {
18473 alphaToCoverageEnable = alphaToCoverageEnable_;
18474 return *this;
18475 }
18476
18477 PipelineMultisampleStateCreateInfo& setAlphaToOneEnable( Bool32 alphaToOneEnable_ )
18478 {
18479 alphaToOneEnable = alphaToOneEnable_;
18480 return *this;
18481 }
18482
18483 operator const VkPipelineMultisampleStateCreateInfo&() const
18484 {
18485 return *reinterpret_cast<const VkPipelineMultisampleStateCreateInfo*>(this);
18486 }
18487
18488 bool operator==( PipelineMultisampleStateCreateInfo const& rhs ) const
18489 {
18490 return ( sType == rhs.sType )
18491 && ( pNext == rhs.pNext )
18492 && ( flags == rhs.flags )
18493 && ( rasterizationSamples == rhs.rasterizationSamples )
18494 && ( sampleShadingEnable == rhs.sampleShadingEnable )
18495 && ( minSampleShading == rhs.minSampleShading )
18496 && ( pSampleMask == rhs.pSampleMask )
18497 && ( alphaToCoverageEnable == rhs.alphaToCoverageEnable )
18498 && ( alphaToOneEnable == rhs.alphaToOneEnable );
18499 }
18500
18501 bool operator!=( PipelineMultisampleStateCreateInfo const& rhs ) const
18502 {
18503 return !operator==( rhs );
18504 }
18505
18506 private:
18507 StructureType sType;
18508
18509 public:
18510 const void* pNext;
18511 PipelineMultisampleStateCreateFlags flags;
18512 SampleCountFlagBits rasterizationSamples;
18513 Bool32 sampleShadingEnable;
18514 float minSampleShading;
18515 const SampleMask* pSampleMask;
18516 Bool32 alphaToCoverageEnable;
18517 Bool32 alphaToOneEnable;
18518 };
18519 static_assert( sizeof( PipelineMultisampleStateCreateInfo ) == sizeof( VkPipelineMultisampleStateCreateInfo ), "struct and wrapper have different size!" );
18520
18521 struct GraphicsPipelineCreateInfo
18522 {
18523 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 )
18524 : sType( StructureType::eGraphicsPipelineCreateInfo )
18525 , pNext( nullptr )
18526 , flags( flags_ )
18527 , stageCount( stageCount_ )
18528 , pStages( pStages_ )
18529 , pVertexInputState( pVertexInputState_ )
18530 , pInputAssemblyState( pInputAssemblyState_ )
18531 , pTessellationState( pTessellationState_ )
18532 , pViewportState( pViewportState_ )
18533 , pRasterizationState( pRasterizationState_ )
18534 , pMultisampleState( pMultisampleState_ )
18535 , pDepthStencilState( pDepthStencilState_ )
18536 , pColorBlendState( pColorBlendState_ )
18537 , pDynamicState( pDynamicState_ )
18538 , layout( layout_ )
18539 , renderPass( renderPass_ )
18540 , subpass( subpass_ )
18541 , basePipelineHandle( basePipelineHandle_ )
18542 , basePipelineIndex( basePipelineIndex_ )
18543 {
18544 }
18545
18546 GraphicsPipelineCreateInfo( VkGraphicsPipelineCreateInfo const & rhs )
18547 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018548 memcpy( this, &rhs, sizeof( GraphicsPipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018549 }
18550
18551 GraphicsPipelineCreateInfo& operator=( VkGraphicsPipelineCreateInfo const & rhs )
18552 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018553 memcpy( this, &rhs, sizeof( GraphicsPipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018554 return *this;
18555 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018556 GraphicsPipelineCreateInfo& setPNext( const void* pNext_ )
18557 {
18558 pNext = pNext_;
18559 return *this;
18560 }
18561
18562 GraphicsPipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
18563 {
18564 flags = flags_;
18565 return *this;
18566 }
18567
18568 GraphicsPipelineCreateInfo& setStageCount( uint32_t stageCount_ )
18569 {
18570 stageCount = stageCount_;
18571 return *this;
18572 }
18573
18574 GraphicsPipelineCreateInfo& setPStages( const PipelineShaderStageCreateInfo* pStages_ )
18575 {
18576 pStages = pStages_;
18577 return *this;
18578 }
18579
18580 GraphicsPipelineCreateInfo& setPVertexInputState( const PipelineVertexInputStateCreateInfo* pVertexInputState_ )
18581 {
18582 pVertexInputState = pVertexInputState_;
18583 return *this;
18584 }
18585
18586 GraphicsPipelineCreateInfo& setPInputAssemblyState( const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState_ )
18587 {
18588 pInputAssemblyState = pInputAssemblyState_;
18589 return *this;
18590 }
18591
18592 GraphicsPipelineCreateInfo& setPTessellationState( const PipelineTessellationStateCreateInfo* pTessellationState_ )
18593 {
18594 pTessellationState = pTessellationState_;
18595 return *this;
18596 }
18597
18598 GraphicsPipelineCreateInfo& setPViewportState( const PipelineViewportStateCreateInfo* pViewportState_ )
18599 {
18600 pViewportState = pViewportState_;
18601 return *this;
18602 }
18603
18604 GraphicsPipelineCreateInfo& setPRasterizationState( const PipelineRasterizationStateCreateInfo* pRasterizationState_ )
18605 {
18606 pRasterizationState = pRasterizationState_;
18607 return *this;
18608 }
18609
18610 GraphicsPipelineCreateInfo& setPMultisampleState( const PipelineMultisampleStateCreateInfo* pMultisampleState_ )
18611 {
18612 pMultisampleState = pMultisampleState_;
18613 return *this;
18614 }
18615
18616 GraphicsPipelineCreateInfo& setPDepthStencilState( const PipelineDepthStencilStateCreateInfo* pDepthStencilState_ )
18617 {
18618 pDepthStencilState = pDepthStencilState_;
18619 return *this;
18620 }
18621
18622 GraphicsPipelineCreateInfo& setPColorBlendState( const PipelineColorBlendStateCreateInfo* pColorBlendState_ )
18623 {
18624 pColorBlendState = pColorBlendState_;
18625 return *this;
18626 }
18627
18628 GraphicsPipelineCreateInfo& setPDynamicState( const PipelineDynamicStateCreateInfo* pDynamicState_ )
18629 {
18630 pDynamicState = pDynamicState_;
18631 return *this;
18632 }
18633
18634 GraphicsPipelineCreateInfo& setLayout( PipelineLayout layout_ )
18635 {
18636 layout = layout_;
18637 return *this;
18638 }
18639
18640 GraphicsPipelineCreateInfo& setRenderPass( RenderPass renderPass_ )
18641 {
18642 renderPass = renderPass_;
18643 return *this;
18644 }
18645
18646 GraphicsPipelineCreateInfo& setSubpass( uint32_t subpass_ )
18647 {
18648 subpass = subpass_;
18649 return *this;
18650 }
18651
18652 GraphicsPipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
18653 {
18654 basePipelineHandle = basePipelineHandle_;
18655 return *this;
18656 }
18657
18658 GraphicsPipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
18659 {
18660 basePipelineIndex = basePipelineIndex_;
18661 return *this;
18662 }
18663
18664 operator const VkGraphicsPipelineCreateInfo&() const
18665 {
18666 return *reinterpret_cast<const VkGraphicsPipelineCreateInfo*>(this);
18667 }
18668
18669 bool operator==( GraphicsPipelineCreateInfo const& rhs ) const
18670 {
18671 return ( sType == rhs.sType )
18672 && ( pNext == rhs.pNext )
18673 && ( flags == rhs.flags )
18674 && ( stageCount == rhs.stageCount )
18675 && ( pStages == rhs.pStages )
18676 && ( pVertexInputState == rhs.pVertexInputState )
18677 && ( pInputAssemblyState == rhs.pInputAssemblyState )
18678 && ( pTessellationState == rhs.pTessellationState )
18679 && ( pViewportState == rhs.pViewportState )
18680 && ( pRasterizationState == rhs.pRasterizationState )
18681 && ( pMultisampleState == rhs.pMultisampleState )
18682 && ( pDepthStencilState == rhs.pDepthStencilState )
18683 && ( pColorBlendState == rhs.pColorBlendState )
18684 && ( pDynamicState == rhs.pDynamicState )
18685 && ( layout == rhs.layout )
18686 && ( renderPass == rhs.renderPass )
18687 && ( subpass == rhs.subpass )
18688 && ( basePipelineHandle == rhs.basePipelineHandle )
18689 && ( basePipelineIndex == rhs.basePipelineIndex );
18690 }
18691
18692 bool operator!=( GraphicsPipelineCreateInfo const& rhs ) const
18693 {
18694 return !operator==( rhs );
18695 }
18696
18697 private:
18698 StructureType sType;
18699
18700 public:
18701 const void* pNext;
18702 PipelineCreateFlags flags;
18703 uint32_t stageCount;
18704 const PipelineShaderStageCreateInfo* pStages;
18705 const PipelineVertexInputStateCreateInfo* pVertexInputState;
18706 const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState;
18707 const PipelineTessellationStateCreateInfo* pTessellationState;
18708 const PipelineViewportStateCreateInfo* pViewportState;
18709 const PipelineRasterizationStateCreateInfo* pRasterizationState;
18710 const PipelineMultisampleStateCreateInfo* pMultisampleState;
18711 const PipelineDepthStencilStateCreateInfo* pDepthStencilState;
18712 const PipelineColorBlendStateCreateInfo* pColorBlendState;
18713 const PipelineDynamicStateCreateInfo* pDynamicState;
18714 PipelineLayout layout;
18715 RenderPass renderPass;
18716 uint32_t subpass;
18717 Pipeline basePipelineHandle;
18718 int32_t basePipelineIndex;
18719 };
18720 static_assert( sizeof( GraphicsPipelineCreateInfo ) == sizeof( VkGraphicsPipelineCreateInfo ), "struct and wrapper have different size!" );
18721
18722 struct PhysicalDeviceLimits
18723 {
18724 operator const VkPhysicalDeviceLimits&() const
18725 {
18726 return *reinterpret_cast<const VkPhysicalDeviceLimits*>(this);
18727 }
18728
18729 bool operator==( PhysicalDeviceLimits const& rhs ) const
18730 {
18731 return ( maxImageDimension1D == rhs.maxImageDimension1D )
18732 && ( maxImageDimension2D == rhs.maxImageDimension2D )
18733 && ( maxImageDimension3D == rhs.maxImageDimension3D )
18734 && ( maxImageDimensionCube == rhs.maxImageDimensionCube )
18735 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
18736 && ( maxTexelBufferElements == rhs.maxTexelBufferElements )
18737 && ( maxUniformBufferRange == rhs.maxUniformBufferRange )
18738 && ( maxStorageBufferRange == rhs.maxStorageBufferRange )
18739 && ( maxPushConstantsSize == rhs.maxPushConstantsSize )
18740 && ( maxMemoryAllocationCount == rhs.maxMemoryAllocationCount )
18741 && ( maxSamplerAllocationCount == rhs.maxSamplerAllocationCount )
18742 && ( bufferImageGranularity == rhs.bufferImageGranularity )
18743 && ( sparseAddressSpaceSize == rhs.sparseAddressSpaceSize )
18744 && ( maxBoundDescriptorSets == rhs.maxBoundDescriptorSets )
18745 && ( maxPerStageDescriptorSamplers == rhs.maxPerStageDescriptorSamplers )
18746 && ( maxPerStageDescriptorUniformBuffers == rhs.maxPerStageDescriptorUniformBuffers )
18747 && ( maxPerStageDescriptorStorageBuffers == rhs.maxPerStageDescriptorStorageBuffers )
18748 && ( maxPerStageDescriptorSampledImages == rhs.maxPerStageDescriptorSampledImages )
18749 && ( maxPerStageDescriptorStorageImages == rhs.maxPerStageDescriptorStorageImages )
18750 && ( maxPerStageDescriptorInputAttachments == rhs.maxPerStageDescriptorInputAttachments )
18751 && ( maxPerStageResources == rhs.maxPerStageResources )
18752 && ( maxDescriptorSetSamplers == rhs.maxDescriptorSetSamplers )
18753 && ( maxDescriptorSetUniformBuffers == rhs.maxDescriptorSetUniformBuffers )
18754 && ( maxDescriptorSetUniformBuffersDynamic == rhs.maxDescriptorSetUniformBuffersDynamic )
18755 && ( maxDescriptorSetStorageBuffers == rhs.maxDescriptorSetStorageBuffers )
18756 && ( maxDescriptorSetStorageBuffersDynamic == rhs.maxDescriptorSetStorageBuffersDynamic )
18757 && ( maxDescriptorSetSampledImages == rhs.maxDescriptorSetSampledImages )
18758 && ( maxDescriptorSetStorageImages == rhs.maxDescriptorSetStorageImages )
18759 && ( maxDescriptorSetInputAttachments == rhs.maxDescriptorSetInputAttachments )
18760 && ( maxVertexInputAttributes == rhs.maxVertexInputAttributes )
18761 && ( maxVertexInputBindings == rhs.maxVertexInputBindings )
18762 && ( maxVertexInputAttributeOffset == rhs.maxVertexInputAttributeOffset )
18763 && ( maxVertexInputBindingStride == rhs.maxVertexInputBindingStride )
18764 && ( maxVertexOutputComponents == rhs.maxVertexOutputComponents )
18765 && ( maxTessellationGenerationLevel == rhs.maxTessellationGenerationLevel )
18766 && ( maxTessellationPatchSize == rhs.maxTessellationPatchSize )
18767 && ( maxTessellationControlPerVertexInputComponents == rhs.maxTessellationControlPerVertexInputComponents )
18768 && ( maxTessellationControlPerVertexOutputComponents == rhs.maxTessellationControlPerVertexOutputComponents )
18769 && ( maxTessellationControlPerPatchOutputComponents == rhs.maxTessellationControlPerPatchOutputComponents )
18770 && ( maxTessellationControlTotalOutputComponents == rhs.maxTessellationControlTotalOutputComponents )
18771 && ( maxTessellationEvaluationInputComponents == rhs.maxTessellationEvaluationInputComponents )
18772 && ( maxTessellationEvaluationOutputComponents == rhs.maxTessellationEvaluationOutputComponents )
18773 && ( maxGeometryShaderInvocations == rhs.maxGeometryShaderInvocations )
18774 && ( maxGeometryInputComponents == rhs.maxGeometryInputComponents )
18775 && ( maxGeometryOutputComponents == rhs.maxGeometryOutputComponents )
18776 && ( maxGeometryOutputVertices == rhs.maxGeometryOutputVertices )
18777 && ( maxGeometryTotalOutputComponents == rhs.maxGeometryTotalOutputComponents )
18778 && ( maxFragmentInputComponents == rhs.maxFragmentInputComponents )
18779 && ( maxFragmentOutputAttachments == rhs.maxFragmentOutputAttachments )
18780 && ( maxFragmentDualSrcAttachments == rhs.maxFragmentDualSrcAttachments )
18781 && ( maxFragmentCombinedOutputResources == rhs.maxFragmentCombinedOutputResources )
18782 && ( maxComputeSharedMemorySize == rhs.maxComputeSharedMemorySize )
18783 && ( memcmp( maxComputeWorkGroupCount, rhs.maxComputeWorkGroupCount, 3 * sizeof( uint32_t ) ) == 0 )
18784 && ( maxComputeWorkGroupInvocations == rhs.maxComputeWorkGroupInvocations )
18785 && ( memcmp( maxComputeWorkGroupSize, rhs.maxComputeWorkGroupSize, 3 * sizeof( uint32_t ) ) == 0 )
18786 && ( subPixelPrecisionBits == rhs.subPixelPrecisionBits )
18787 && ( subTexelPrecisionBits == rhs.subTexelPrecisionBits )
18788 && ( mipmapPrecisionBits == rhs.mipmapPrecisionBits )
18789 && ( maxDrawIndexedIndexValue == rhs.maxDrawIndexedIndexValue )
18790 && ( maxDrawIndirectCount == rhs.maxDrawIndirectCount )
18791 && ( maxSamplerLodBias == rhs.maxSamplerLodBias )
18792 && ( maxSamplerAnisotropy == rhs.maxSamplerAnisotropy )
18793 && ( maxViewports == rhs.maxViewports )
18794 && ( memcmp( maxViewportDimensions, rhs.maxViewportDimensions, 2 * sizeof( uint32_t ) ) == 0 )
18795 && ( memcmp( viewportBoundsRange, rhs.viewportBoundsRange, 2 * sizeof( float ) ) == 0 )
18796 && ( viewportSubPixelBits == rhs.viewportSubPixelBits )
18797 && ( minMemoryMapAlignment == rhs.minMemoryMapAlignment )
18798 && ( minTexelBufferOffsetAlignment == rhs.minTexelBufferOffsetAlignment )
18799 && ( minUniformBufferOffsetAlignment == rhs.minUniformBufferOffsetAlignment )
18800 && ( minStorageBufferOffsetAlignment == rhs.minStorageBufferOffsetAlignment )
18801 && ( minTexelOffset == rhs.minTexelOffset )
18802 && ( maxTexelOffset == rhs.maxTexelOffset )
18803 && ( minTexelGatherOffset == rhs.minTexelGatherOffset )
18804 && ( maxTexelGatherOffset == rhs.maxTexelGatherOffset )
18805 && ( minInterpolationOffset == rhs.minInterpolationOffset )
18806 && ( maxInterpolationOffset == rhs.maxInterpolationOffset )
18807 && ( subPixelInterpolationOffsetBits == rhs.subPixelInterpolationOffsetBits )
18808 && ( maxFramebufferWidth == rhs.maxFramebufferWidth )
18809 && ( maxFramebufferHeight == rhs.maxFramebufferHeight )
18810 && ( maxFramebufferLayers == rhs.maxFramebufferLayers )
18811 && ( framebufferColorSampleCounts == rhs.framebufferColorSampleCounts )
18812 && ( framebufferDepthSampleCounts == rhs.framebufferDepthSampleCounts )
18813 && ( framebufferStencilSampleCounts == rhs.framebufferStencilSampleCounts )
18814 && ( framebufferNoAttachmentsSampleCounts == rhs.framebufferNoAttachmentsSampleCounts )
18815 && ( maxColorAttachments == rhs.maxColorAttachments )
18816 && ( sampledImageColorSampleCounts == rhs.sampledImageColorSampleCounts )
18817 && ( sampledImageIntegerSampleCounts == rhs.sampledImageIntegerSampleCounts )
18818 && ( sampledImageDepthSampleCounts == rhs.sampledImageDepthSampleCounts )
18819 && ( sampledImageStencilSampleCounts == rhs.sampledImageStencilSampleCounts )
18820 && ( storageImageSampleCounts == rhs.storageImageSampleCounts )
18821 && ( maxSampleMaskWords == rhs.maxSampleMaskWords )
18822 && ( timestampComputeAndGraphics == rhs.timestampComputeAndGraphics )
18823 && ( timestampPeriod == rhs.timestampPeriod )
18824 && ( maxClipDistances == rhs.maxClipDistances )
18825 && ( maxCullDistances == rhs.maxCullDistances )
18826 && ( maxCombinedClipAndCullDistances == rhs.maxCombinedClipAndCullDistances )
18827 && ( discreteQueuePriorities == rhs.discreteQueuePriorities )
18828 && ( memcmp( pointSizeRange, rhs.pointSizeRange, 2 * sizeof( float ) ) == 0 )
18829 && ( memcmp( lineWidthRange, rhs.lineWidthRange, 2 * sizeof( float ) ) == 0 )
18830 && ( pointSizeGranularity == rhs.pointSizeGranularity )
18831 && ( lineWidthGranularity == rhs.lineWidthGranularity )
18832 && ( strictLines == rhs.strictLines )
18833 && ( standardSampleLocations == rhs.standardSampleLocations )
18834 && ( optimalBufferCopyOffsetAlignment == rhs.optimalBufferCopyOffsetAlignment )
18835 && ( optimalBufferCopyRowPitchAlignment == rhs.optimalBufferCopyRowPitchAlignment )
18836 && ( nonCoherentAtomSize == rhs.nonCoherentAtomSize );
18837 }
18838
18839 bool operator!=( PhysicalDeviceLimits const& rhs ) const
18840 {
18841 return !operator==( rhs );
18842 }
18843
18844 uint32_t maxImageDimension1D;
18845 uint32_t maxImageDimension2D;
18846 uint32_t maxImageDimension3D;
18847 uint32_t maxImageDimensionCube;
18848 uint32_t maxImageArrayLayers;
18849 uint32_t maxTexelBufferElements;
18850 uint32_t maxUniformBufferRange;
18851 uint32_t maxStorageBufferRange;
18852 uint32_t maxPushConstantsSize;
18853 uint32_t maxMemoryAllocationCount;
18854 uint32_t maxSamplerAllocationCount;
18855 DeviceSize bufferImageGranularity;
18856 DeviceSize sparseAddressSpaceSize;
18857 uint32_t maxBoundDescriptorSets;
18858 uint32_t maxPerStageDescriptorSamplers;
18859 uint32_t maxPerStageDescriptorUniformBuffers;
18860 uint32_t maxPerStageDescriptorStorageBuffers;
18861 uint32_t maxPerStageDescriptorSampledImages;
18862 uint32_t maxPerStageDescriptorStorageImages;
18863 uint32_t maxPerStageDescriptorInputAttachments;
18864 uint32_t maxPerStageResources;
18865 uint32_t maxDescriptorSetSamplers;
18866 uint32_t maxDescriptorSetUniformBuffers;
18867 uint32_t maxDescriptorSetUniformBuffersDynamic;
18868 uint32_t maxDescriptorSetStorageBuffers;
18869 uint32_t maxDescriptorSetStorageBuffersDynamic;
18870 uint32_t maxDescriptorSetSampledImages;
18871 uint32_t maxDescriptorSetStorageImages;
18872 uint32_t maxDescriptorSetInputAttachments;
18873 uint32_t maxVertexInputAttributes;
18874 uint32_t maxVertexInputBindings;
18875 uint32_t maxVertexInputAttributeOffset;
18876 uint32_t maxVertexInputBindingStride;
18877 uint32_t maxVertexOutputComponents;
18878 uint32_t maxTessellationGenerationLevel;
18879 uint32_t maxTessellationPatchSize;
18880 uint32_t maxTessellationControlPerVertexInputComponents;
18881 uint32_t maxTessellationControlPerVertexOutputComponents;
18882 uint32_t maxTessellationControlPerPatchOutputComponents;
18883 uint32_t maxTessellationControlTotalOutputComponents;
18884 uint32_t maxTessellationEvaluationInputComponents;
18885 uint32_t maxTessellationEvaluationOutputComponents;
18886 uint32_t maxGeometryShaderInvocations;
18887 uint32_t maxGeometryInputComponents;
18888 uint32_t maxGeometryOutputComponents;
18889 uint32_t maxGeometryOutputVertices;
18890 uint32_t maxGeometryTotalOutputComponents;
18891 uint32_t maxFragmentInputComponents;
18892 uint32_t maxFragmentOutputAttachments;
18893 uint32_t maxFragmentDualSrcAttachments;
18894 uint32_t maxFragmentCombinedOutputResources;
18895 uint32_t maxComputeSharedMemorySize;
18896 uint32_t maxComputeWorkGroupCount[3];
18897 uint32_t maxComputeWorkGroupInvocations;
18898 uint32_t maxComputeWorkGroupSize[3];
18899 uint32_t subPixelPrecisionBits;
18900 uint32_t subTexelPrecisionBits;
18901 uint32_t mipmapPrecisionBits;
18902 uint32_t maxDrawIndexedIndexValue;
18903 uint32_t maxDrawIndirectCount;
18904 float maxSamplerLodBias;
18905 float maxSamplerAnisotropy;
18906 uint32_t maxViewports;
18907 uint32_t maxViewportDimensions[2];
18908 float viewportBoundsRange[2];
18909 uint32_t viewportSubPixelBits;
18910 size_t minMemoryMapAlignment;
18911 DeviceSize minTexelBufferOffsetAlignment;
18912 DeviceSize minUniformBufferOffsetAlignment;
18913 DeviceSize minStorageBufferOffsetAlignment;
18914 int32_t minTexelOffset;
18915 uint32_t maxTexelOffset;
18916 int32_t minTexelGatherOffset;
18917 uint32_t maxTexelGatherOffset;
18918 float minInterpolationOffset;
18919 float maxInterpolationOffset;
18920 uint32_t subPixelInterpolationOffsetBits;
18921 uint32_t maxFramebufferWidth;
18922 uint32_t maxFramebufferHeight;
18923 uint32_t maxFramebufferLayers;
18924 SampleCountFlags framebufferColorSampleCounts;
18925 SampleCountFlags framebufferDepthSampleCounts;
18926 SampleCountFlags framebufferStencilSampleCounts;
18927 SampleCountFlags framebufferNoAttachmentsSampleCounts;
18928 uint32_t maxColorAttachments;
18929 SampleCountFlags sampledImageColorSampleCounts;
18930 SampleCountFlags sampledImageIntegerSampleCounts;
18931 SampleCountFlags sampledImageDepthSampleCounts;
18932 SampleCountFlags sampledImageStencilSampleCounts;
18933 SampleCountFlags storageImageSampleCounts;
18934 uint32_t maxSampleMaskWords;
18935 Bool32 timestampComputeAndGraphics;
18936 float timestampPeriod;
18937 uint32_t maxClipDistances;
18938 uint32_t maxCullDistances;
18939 uint32_t maxCombinedClipAndCullDistances;
18940 uint32_t discreteQueuePriorities;
18941 float pointSizeRange[2];
18942 float lineWidthRange[2];
18943 float pointSizeGranularity;
18944 float lineWidthGranularity;
18945 Bool32 strictLines;
18946 Bool32 standardSampleLocations;
18947 DeviceSize optimalBufferCopyOffsetAlignment;
18948 DeviceSize optimalBufferCopyRowPitchAlignment;
18949 DeviceSize nonCoherentAtomSize;
18950 };
18951 static_assert( sizeof( PhysicalDeviceLimits ) == sizeof( VkPhysicalDeviceLimits ), "struct and wrapper have different size!" );
18952
18953 struct PhysicalDeviceProperties
18954 {
18955 operator const VkPhysicalDeviceProperties&() const
18956 {
18957 return *reinterpret_cast<const VkPhysicalDeviceProperties*>(this);
18958 }
18959
18960 bool operator==( PhysicalDeviceProperties const& rhs ) const
18961 {
18962 return ( apiVersion == rhs.apiVersion )
18963 && ( driverVersion == rhs.driverVersion )
18964 && ( vendorID == rhs.vendorID )
18965 && ( deviceID == rhs.deviceID )
18966 && ( deviceType == rhs.deviceType )
18967 && ( memcmp( deviceName, rhs.deviceName, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE * sizeof( char ) ) == 0 )
18968 && ( memcmp( pipelineCacheUUID, rhs.pipelineCacheUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
18969 && ( limits == rhs.limits )
18970 && ( sparseProperties == rhs.sparseProperties );
18971 }
18972
18973 bool operator!=( PhysicalDeviceProperties const& rhs ) const
18974 {
18975 return !operator==( rhs );
18976 }
18977
18978 uint32_t apiVersion;
18979 uint32_t driverVersion;
18980 uint32_t vendorID;
18981 uint32_t deviceID;
18982 PhysicalDeviceType deviceType;
18983 char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
18984 uint8_t pipelineCacheUUID[VK_UUID_SIZE];
18985 PhysicalDeviceLimits limits;
18986 PhysicalDeviceSparseProperties sparseProperties;
18987 };
18988 static_assert( sizeof( PhysicalDeviceProperties ) == sizeof( VkPhysicalDeviceProperties ), "struct and wrapper have different size!" );
18989
Mark Young39389872017-01-19 21:10:49 -070018990 struct PhysicalDeviceProperties2KHR
18991 {
18992 operator const VkPhysicalDeviceProperties2KHR&() const
18993 {
18994 return *reinterpret_cast<const VkPhysicalDeviceProperties2KHR*>(this);
18995 }
18996
18997 bool operator==( PhysicalDeviceProperties2KHR const& rhs ) const
18998 {
18999 return ( sType == rhs.sType )
19000 && ( pNext == rhs.pNext )
19001 && ( properties == rhs.properties );
19002 }
19003
19004 bool operator!=( PhysicalDeviceProperties2KHR const& rhs ) const
19005 {
19006 return !operator==( rhs );
19007 }
19008
19009 private:
19010 StructureType sType;
19011
19012 public:
19013 void* pNext;
19014 PhysicalDeviceProperties properties;
19015 };
19016 static_assert( sizeof( PhysicalDeviceProperties2KHR ) == sizeof( VkPhysicalDeviceProperties2KHR ), "struct and wrapper have different size!" );
19017
19018 struct ImageFormatProperties2KHR
19019 {
19020 operator const VkImageFormatProperties2KHR&() const
19021 {
19022 return *reinterpret_cast<const VkImageFormatProperties2KHR*>(this);
19023 }
19024
19025 bool operator==( ImageFormatProperties2KHR const& rhs ) const
19026 {
19027 return ( sType == rhs.sType )
19028 && ( pNext == rhs.pNext )
19029 && ( imageFormatProperties == rhs.imageFormatProperties );
19030 }
19031
19032 bool operator!=( ImageFormatProperties2KHR const& rhs ) const
19033 {
19034 return !operator==( rhs );
19035 }
19036
19037 private:
19038 StructureType sType;
19039
19040 public:
19041 void* pNext;
19042 ImageFormatProperties imageFormatProperties;
19043 };
19044 static_assert( sizeof( ImageFormatProperties2KHR ) == sizeof( VkImageFormatProperties2KHR ), "struct and wrapper have different size!" );
19045
19046 struct PhysicalDeviceSparseImageFormatInfo2KHR
19047 {
19048 PhysicalDeviceSparseImageFormatInfo2KHR( Format format_ = Format::eUndefined, ImageType type_ = ImageType::e1D, SampleCountFlagBits samples_ = SampleCountFlagBits::e1, ImageUsageFlags usage_ = ImageUsageFlags(), ImageTiling tiling_ = ImageTiling::eOptimal )
19049 : sType( StructureType::ePhysicalDeviceSparseImageFormatInfo2KHR )
19050 , pNext( nullptr )
19051 , format( format_ )
19052 , type( type_ )
19053 , samples( samples_ )
19054 , usage( usage_ )
19055 , tiling( tiling_ )
19056 {
19057 }
19058
19059 PhysicalDeviceSparseImageFormatInfo2KHR( VkPhysicalDeviceSparseImageFormatInfo2KHR const & rhs )
19060 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019061 memcpy( this, &rhs, sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070019062 }
19063
19064 PhysicalDeviceSparseImageFormatInfo2KHR& operator=( VkPhysicalDeviceSparseImageFormatInfo2KHR const & rhs )
19065 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019066 memcpy( this, &rhs, sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070019067 return *this;
19068 }
Mark Young39389872017-01-19 21:10:49 -070019069 PhysicalDeviceSparseImageFormatInfo2KHR& setPNext( const void* pNext_ )
19070 {
19071 pNext = pNext_;
19072 return *this;
19073 }
19074
19075 PhysicalDeviceSparseImageFormatInfo2KHR& setFormat( Format format_ )
19076 {
19077 format = format_;
19078 return *this;
19079 }
19080
19081 PhysicalDeviceSparseImageFormatInfo2KHR& setType( ImageType type_ )
19082 {
19083 type = type_;
19084 return *this;
19085 }
19086
19087 PhysicalDeviceSparseImageFormatInfo2KHR& setSamples( SampleCountFlagBits samples_ )
19088 {
19089 samples = samples_;
19090 return *this;
19091 }
19092
19093 PhysicalDeviceSparseImageFormatInfo2KHR& setUsage( ImageUsageFlags usage_ )
19094 {
19095 usage = usage_;
19096 return *this;
19097 }
19098
19099 PhysicalDeviceSparseImageFormatInfo2KHR& setTiling( ImageTiling tiling_ )
19100 {
19101 tiling = tiling_;
19102 return *this;
19103 }
19104
19105 operator const VkPhysicalDeviceSparseImageFormatInfo2KHR&() const
19106 {
19107 return *reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>(this);
19108 }
19109
19110 bool operator==( PhysicalDeviceSparseImageFormatInfo2KHR const& rhs ) const
19111 {
19112 return ( sType == rhs.sType )
19113 && ( pNext == rhs.pNext )
19114 && ( format == rhs.format )
19115 && ( type == rhs.type )
19116 && ( samples == rhs.samples )
19117 && ( usage == rhs.usage )
19118 && ( tiling == rhs.tiling );
19119 }
19120
19121 bool operator!=( PhysicalDeviceSparseImageFormatInfo2KHR const& rhs ) const
19122 {
19123 return !operator==( rhs );
19124 }
19125
19126 private:
19127 StructureType sType;
19128
19129 public:
19130 const void* pNext;
19131 Format format;
19132 ImageType type;
19133 SampleCountFlagBits samples;
19134 ImageUsageFlags usage;
19135 ImageTiling tiling;
19136 };
19137 static_assert( sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) == sizeof( VkPhysicalDeviceSparseImageFormatInfo2KHR ), "struct and wrapper have different size!" );
19138
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019139 struct SampleLocationsInfoEXT
19140 {
19141 SampleLocationsInfoEXT( SampleCountFlagBits sampleLocationsPerPixel_ = SampleCountFlagBits::e1, Extent2D sampleLocationGridSize_ = Extent2D(), uint32_t sampleLocationsCount_ = 0, const SampleLocationEXT* pSampleLocations_ = nullptr )
19142 : sType( StructureType::eSampleLocationsInfoEXT )
19143 , pNext( nullptr )
19144 , sampleLocationsPerPixel( sampleLocationsPerPixel_ )
19145 , sampleLocationGridSize( sampleLocationGridSize_ )
19146 , sampleLocationsCount( sampleLocationsCount_ )
19147 , pSampleLocations( pSampleLocations_ )
19148 {
19149 }
19150
19151 SampleLocationsInfoEXT( VkSampleLocationsInfoEXT const & rhs )
19152 {
19153 memcpy( this, &rhs, sizeof( SampleLocationsInfoEXT ) );
19154 }
19155
19156 SampleLocationsInfoEXT& operator=( VkSampleLocationsInfoEXT const & rhs )
19157 {
19158 memcpy( this, &rhs, sizeof( SampleLocationsInfoEXT ) );
19159 return *this;
19160 }
19161 SampleLocationsInfoEXT& setPNext( const void* pNext_ )
19162 {
19163 pNext = pNext_;
19164 return *this;
19165 }
19166
19167 SampleLocationsInfoEXT& setSampleLocationsPerPixel( SampleCountFlagBits sampleLocationsPerPixel_ )
19168 {
19169 sampleLocationsPerPixel = sampleLocationsPerPixel_;
19170 return *this;
19171 }
19172
19173 SampleLocationsInfoEXT& setSampleLocationGridSize( Extent2D sampleLocationGridSize_ )
19174 {
19175 sampleLocationGridSize = sampleLocationGridSize_;
19176 return *this;
19177 }
19178
19179 SampleLocationsInfoEXT& setSampleLocationsCount( uint32_t sampleLocationsCount_ )
19180 {
19181 sampleLocationsCount = sampleLocationsCount_;
19182 return *this;
19183 }
19184
19185 SampleLocationsInfoEXT& setPSampleLocations( const SampleLocationEXT* pSampleLocations_ )
19186 {
19187 pSampleLocations = pSampleLocations_;
19188 return *this;
19189 }
19190
19191 operator const VkSampleLocationsInfoEXT&() const
19192 {
19193 return *reinterpret_cast<const VkSampleLocationsInfoEXT*>(this);
19194 }
19195
19196 bool operator==( SampleLocationsInfoEXT const& rhs ) const
19197 {
19198 return ( sType == rhs.sType )
19199 && ( pNext == rhs.pNext )
19200 && ( sampleLocationsPerPixel == rhs.sampleLocationsPerPixel )
19201 && ( sampleLocationGridSize == rhs.sampleLocationGridSize )
19202 && ( sampleLocationsCount == rhs.sampleLocationsCount )
19203 && ( pSampleLocations == rhs.pSampleLocations );
19204 }
19205
19206 bool operator!=( SampleLocationsInfoEXT const& rhs ) const
19207 {
19208 return !operator==( rhs );
19209 }
19210
19211 private:
19212 StructureType sType;
19213
19214 public:
19215 const void* pNext;
19216 SampleCountFlagBits sampleLocationsPerPixel;
19217 Extent2D sampleLocationGridSize;
19218 uint32_t sampleLocationsCount;
19219 const SampleLocationEXT* pSampleLocations;
19220 };
19221 static_assert( sizeof( SampleLocationsInfoEXT ) == sizeof( VkSampleLocationsInfoEXT ), "struct and wrapper have different size!" );
19222
19223 struct AttachmentSampleLocationsEXT
19224 {
19225 AttachmentSampleLocationsEXT( uint32_t attachmentIndex_ = 0, SampleLocationsInfoEXT sampleLocationsInfo_ = SampleLocationsInfoEXT() )
19226 : attachmentIndex( attachmentIndex_ )
19227 , sampleLocationsInfo( sampleLocationsInfo_ )
19228 {
19229 }
19230
19231 AttachmentSampleLocationsEXT( VkAttachmentSampleLocationsEXT const & rhs )
19232 {
19233 memcpy( this, &rhs, sizeof( AttachmentSampleLocationsEXT ) );
19234 }
19235
19236 AttachmentSampleLocationsEXT& operator=( VkAttachmentSampleLocationsEXT const & rhs )
19237 {
19238 memcpy( this, &rhs, sizeof( AttachmentSampleLocationsEXT ) );
19239 return *this;
19240 }
19241 AttachmentSampleLocationsEXT& setAttachmentIndex( uint32_t attachmentIndex_ )
19242 {
19243 attachmentIndex = attachmentIndex_;
19244 return *this;
19245 }
19246
19247 AttachmentSampleLocationsEXT& setSampleLocationsInfo( SampleLocationsInfoEXT sampleLocationsInfo_ )
19248 {
19249 sampleLocationsInfo = sampleLocationsInfo_;
19250 return *this;
19251 }
19252
19253 operator const VkAttachmentSampleLocationsEXT&() const
19254 {
19255 return *reinterpret_cast<const VkAttachmentSampleLocationsEXT*>(this);
19256 }
19257
19258 bool operator==( AttachmentSampleLocationsEXT const& rhs ) const
19259 {
19260 return ( attachmentIndex == rhs.attachmentIndex )
19261 && ( sampleLocationsInfo == rhs.sampleLocationsInfo );
19262 }
19263
19264 bool operator!=( AttachmentSampleLocationsEXT const& rhs ) const
19265 {
19266 return !operator==( rhs );
19267 }
19268
19269 uint32_t attachmentIndex;
19270 SampleLocationsInfoEXT sampleLocationsInfo;
19271 };
19272 static_assert( sizeof( AttachmentSampleLocationsEXT ) == sizeof( VkAttachmentSampleLocationsEXT ), "struct and wrapper have different size!" );
19273
19274 struct SubpassSampleLocationsEXT
19275 {
19276 SubpassSampleLocationsEXT( uint32_t subpassIndex_ = 0, SampleLocationsInfoEXT sampleLocationsInfo_ = SampleLocationsInfoEXT() )
19277 : subpassIndex( subpassIndex_ )
19278 , sampleLocationsInfo( sampleLocationsInfo_ )
19279 {
19280 }
19281
19282 SubpassSampleLocationsEXT( VkSubpassSampleLocationsEXT const & rhs )
19283 {
19284 memcpy( this, &rhs, sizeof( SubpassSampleLocationsEXT ) );
19285 }
19286
19287 SubpassSampleLocationsEXT& operator=( VkSubpassSampleLocationsEXT const & rhs )
19288 {
19289 memcpy( this, &rhs, sizeof( SubpassSampleLocationsEXT ) );
19290 return *this;
19291 }
19292 SubpassSampleLocationsEXT& setSubpassIndex( uint32_t subpassIndex_ )
19293 {
19294 subpassIndex = subpassIndex_;
19295 return *this;
19296 }
19297
19298 SubpassSampleLocationsEXT& setSampleLocationsInfo( SampleLocationsInfoEXT sampleLocationsInfo_ )
19299 {
19300 sampleLocationsInfo = sampleLocationsInfo_;
19301 return *this;
19302 }
19303
19304 operator const VkSubpassSampleLocationsEXT&() const
19305 {
19306 return *reinterpret_cast<const VkSubpassSampleLocationsEXT*>(this);
19307 }
19308
19309 bool operator==( SubpassSampleLocationsEXT const& rhs ) const
19310 {
19311 return ( subpassIndex == rhs.subpassIndex )
19312 && ( sampleLocationsInfo == rhs.sampleLocationsInfo );
19313 }
19314
19315 bool operator!=( SubpassSampleLocationsEXT const& rhs ) const
19316 {
19317 return !operator==( rhs );
19318 }
19319
19320 uint32_t subpassIndex;
19321 SampleLocationsInfoEXT sampleLocationsInfo;
19322 };
19323 static_assert( sizeof( SubpassSampleLocationsEXT ) == sizeof( VkSubpassSampleLocationsEXT ), "struct and wrapper have different size!" );
19324
19325 struct RenderPassSampleLocationsBeginInfoEXT
19326 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060019327 RenderPassSampleLocationsBeginInfoEXT( uint32_t attachmentInitialSampleLocationsCount_ = 0, const AttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations_ = nullptr, uint32_t postSubpassSampleLocationsCount_ = 0, const SubpassSampleLocationsEXT* pPostSubpassSampleLocations_ = nullptr )
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019328 : sType( StructureType::eRenderPassSampleLocationsBeginInfoEXT )
19329 , pNext( nullptr )
19330 , attachmentInitialSampleLocationsCount( attachmentInitialSampleLocationsCount_ )
19331 , pAttachmentInitialSampleLocations( pAttachmentInitialSampleLocations_ )
19332 , postSubpassSampleLocationsCount( postSubpassSampleLocationsCount_ )
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060019333 , pPostSubpassSampleLocations( pPostSubpassSampleLocations_ )
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019334 {
19335 }
19336
19337 RenderPassSampleLocationsBeginInfoEXT( VkRenderPassSampleLocationsBeginInfoEXT const & rhs )
19338 {
19339 memcpy( this, &rhs, sizeof( RenderPassSampleLocationsBeginInfoEXT ) );
19340 }
19341
19342 RenderPassSampleLocationsBeginInfoEXT& operator=( VkRenderPassSampleLocationsBeginInfoEXT const & rhs )
19343 {
19344 memcpy( this, &rhs, sizeof( RenderPassSampleLocationsBeginInfoEXT ) );
19345 return *this;
19346 }
19347 RenderPassSampleLocationsBeginInfoEXT& setPNext( const void* pNext_ )
19348 {
19349 pNext = pNext_;
19350 return *this;
19351 }
19352
19353 RenderPassSampleLocationsBeginInfoEXT& setAttachmentInitialSampleLocationsCount( uint32_t attachmentInitialSampleLocationsCount_ )
19354 {
19355 attachmentInitialSampleLocationsCount = attachmentInitialSampleLocationsCount_;
19356 return *this;
19357 }
19358
19359 RenderPassSampleLocationsBeginInfoEXT& setPAttachmentInitialSampleLocations( const AttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations_ )
19360 {
19361 pAttachmentInitialSampleLocations = pAttachmentInitialSampleLocations_;
19362 return *this;
19363 }
19364
19365 RenderPassSampleLocationsBeginInfoEXT& setPostSubpassSampleLocationsCount( uint32_t postSubpassSampleLocationsCount_ )
19366 {
19367 postSubpassSampleLocationsCount = postSubpassSampleLocationsCount_;
19368 return *this;
19369 }
19370
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060019371 RenderPassSampleLocationsBeginInfoEXT& setPPostSubpassSampleLocations( const SubpassSampleLocationsEXT* pPostSubpassSampleLocations_ )
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019372 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060019373 pPostSubpassSampleLocations = pPostSubpassSampleLocations_;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019374 return *this;
19375 }
19376
19377 operator const VkRenderPassSampleLocationsBeginInfoEXT&() const
19378 {
19379 return *reinterpret_cast<const VkRenderPassSampleLocationsBeginInfoEXT*>(this);
19380 }
19381
19382 bool operator==( RenderPassSampleLocationsBeginInfoEXT const& rhs ) const
19383 {
19384 return ( sType == rhs.sType )
19385 && ( pNext == rhs.pNext )
19386 && ( attachmentInitialSampleLocationsCount == rhs.attachmentInitialSampleLocationsCount )
19387 && ( pAttachmentInitialSampleLocations == rhs.pAttachmentInitialSampleLocations )
19388 && ( postSubpassSampleLocationsCount == rhs.postSubpassSampleLocationsCount )
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060019389 && ( pPostSubpassSampleLocations == rhs.pPostSubpassSampleLocations );
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019390 }
19391
19392 bool operator!=( RenderPassSampleLocationsBeginInfoEXT const& rhs ) const
19393 {
19394 return !operator==( rhs );
19395 }
19396
19397 private:
19398 StructureType sType;
19399
19400 public:
19401 const void* pNext;
19402 uint32_t attachmentInitialSampleLocationsCount;
19403 const AttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations;
19404 uint32_t postSubpassSampleLocationsCount;
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060019405 const SubpassSampleLocationsEXT* pPostSubpassSampleLocations;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019406 };
19407 static_assert( sizeof( RenderPassSampleLocationsBeginInfoEXT ) == sizeof( VkRenderPassSampleLocationsBeginInfoEXT ), "struct and wrapper have different size!" );
19408
19409 struct PipelineSampleLocationsStateCreateInfoEXT
19410 {
19411 PipelineSampleLocationsStateCreateInfoEXT( Bool32 sampleLocationsEnable_ = 0, SampleLocationsInfoEXT sampleLocationsInfo_ = SampleLocationsInfoEXT() )
19412 : sType( StructureType::ePipelineSampleLocationsStateCreateInfoEXT )
19413 , pNext( nullptr )
19414 , sampleLocationsEnable( sampleLocationsEnable_ )
19415 , sampleLocationsInfo( sampleLocationsInfo_ )
19416 {
19417 }
19418
19419 PipelineSampleLocationsStateCreateInfoEXT( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs )
19420 {
19421 memcpy( this, &rhs, sizeof( PipelineSampleLocationsStateCreateInfoEXT ) );
19422 }
19423
19424 PipelineSampleLocationsStateCreateInfoEXT& operator=( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs )
19425 {
19426 memcpy( this, &rhs, sizeof( PipelineSampleLocationsStateCreateInfoEXT ) );
19427 return *this;
19428 }
19429 PipelineSampleLocationsStateCreateInfoEXT& setPNext( const void* pNext_ )
19430 {
19431 pNext = pNext_;
19432 return *this;
19433 }
19434
19435 PipelineSampleLocationsStateCreateInfoEXT& setSampleLocationsEnable( Bool32 sampleLocationsEnable_ )
19436 {
19437 sampleLocationsEnable = sampleLocationsEnable_;
19438 return *this;
19439 }
19440
19441 PipelineSampleLocationsStateCreateInfoEXT& setSampleLocationsInfo( SampleLocationsInfoEXT sampleLocationsInfo_ )
19442 {
19443 sampleLocationsInfo = sampleLocationsInfo_;
19444 return *this;
19445 }
19446
19447 operator const VkPipelineSampleLocationsStateCreateInfoEXT&() const
19448 {
19449 return *reinterpret_cast<const VkPipelineSampleLocationsStateCreateInfoEXT*>(this);
19450 }
19451
19452 bool operator==( PipelineSampleLocationsStateCreateInfoEXT const& rhs ) const
19453 {
19454 return ( sType == rhs.sType )
19455 && ( pNext == rhs.pNext )
19456 && ( sampleLocationsEnable == rhs.sampleLocationsEnable )
19457 && ( sampleLocationsInfo == rhs.sampleLocationsInfo );
19458 }
19459
19460 bool operator!=( PipelineSampleLocationsStateCreateInfoEXT const& rhs ) const
19461 {
19462 return !operator==( rhs );
19463 }
19464
19465 private:
19466 StructureType sType;
19467
19468 public:
19469 const void* pNext;
19470 Bool32 sampleLocationsEnable;
19471 SampleLocationsInfoEXT sampleLocationsInfo;
19472 };
19473 static_assert( sizeof( PipelineSampleLocationsStateCreateInfoEXT ) == sizeof( VkPipelineSampleLocationsStateCreateInfoEXT ), "struct and wrapper have different size!" );
19474
19475 struct PhysicalDeviceSampleLocationsPropertiesEXT
19476 {
19477 operator const VkPhysicalDeviceSampleLocationsPropertiesEXT&() const
19478 {
19479 return *reinterpret_cast<const VkPhysicalDeviceSampleLocationsPropertiesEXT*>(this);
19480 }
19481
19482 bool operator==( PhysicalDeviceSampleLocationsPropertiesEXT const& rhs ) const
19483 {
19484 return ( sType == rhs.sType )
19485 && ( pNext == rhs.pNext )
19486 && ( sampleLocationSampleCounts == rhs.sampleLocationSampleCounts )
19487 && ( maxSampleLocationGridSize == rhs.maxSampleLocationGridSize )
19488 && ( memcmp( sampleLocationCoordinateRange, rhs.sampleLocationCoordinateRange, 2 * sizeof( float ) ) == 0 )
19489 && ( sampleLocationSubPixelBits == rhs.sampleLocationSubPixelBits )
19490 && ( variableSampleLocations == rhs.variableSampleLocations );
19491 }
19492
19493 bool operator!=( PhysicalDeviceSampleLocationsPropertiesEXT const& rhs ) const
19494 {
19495 return !operator==( rhs );
19496 }
19497
19498 private:
19499 StructureType sType;
19500
19501 public:
19502 void* pNext;
19503 SampleCountFlags sampleLocationSampleCounts;
19504 Extent2D maxSampleLocationGridSize;
19505 float sampleLocationCoordinateRange[2];
19506 uint32_t sampleLocationSubPixelBits;
19507 Bool32 variableSampleLocations;
19508 };
19509 static_assert( sizeof( PhysicalDeviceSampleLocationsPropertiesEXT ) == sizeof( VkPhysicalDeviceSampleLocationsPropertiesEXT ), "struct and wrapper have different size!" );
19510
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019511 enum class AttachmentDescriptionFlagBits
19512 {
19513 eMayAlias = VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT
19514 };
19515
19516 using AttachmentDescriptionFlags = Flags<AttachmentDescriptionFlagBits, VkAttachmentDescriptionFlags>;
19517
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019518 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator|( AttachmentDescriptionFlagBits bit0, AttachmentDescriptionFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019519 {
19520 return AttachmentDescriptionFlags( bit0 ) | bit1;
19521 }
19522
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019523 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator~( AttachmentDescriptionFlagBits bits )
19524 {
19525 return ~( AttachmentDescriptionFlags( bits ) );
19526 }
19527
19528 template <> struct FlagTraits<AttachmentDescriptionFlagBits>
19529 {
19530 enum
19531 {
19532 allFlags = VkFlags(AttachmentDescriptionFlagBits::eMayAlias)
19533 };
19534 };
19535
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019536 struct AttachmentDescription
19537 {
19538 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 )
19539 : flags( flags_ )
19540 , format( format_ )
19541 , samples( samples_ )
19542 , loadOp( loadOp_ )
19543 , storeOp( storeOp_ )
19544 , stencilLoadOp( stencilLoadOp_ )
19545 , stencilStoreOp( stencilStoreOp_ )
19546 , initialLayout( initialLayout_ )
19547 , finalLayout( finalLayout_ )
19548 {
19549 }
19550
19551 AttachmentDescription( VkAttachmentDescription const & rhs )
19552 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019553 memcpy( this, &rhs, sizeof( AttachmentDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019554 }
19555
19556 AttachmentDescription& operator=( VkAttachmentDescription const & rhs )
19557 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019558 memcpy( this, &rhs, sizeof( AttachmentDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019559 return *this;
19560 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019561 AttachmentDescription& setFlags( AttachmentDescriptionFlags flags_ )
19562 {
19563 flags = flags_;
19564 return *this;
19565 }
19566
19567 AttachmentDescription& setFormat( Format format_ )
19568 {
19569 format = format_;
19570 return *this;
19571 }
19572
19573 AttachmentDescription& setSamples( SampleCountFlagBits samples_ )
19574 {
19575 samples = samples_;
19576 return *this;
19577 }
19578
19579 AttachmentDescription& setLoadOp( AttachmentLoadOp loadOp_ )
19580 {
19581 loadOp = loadOp_;
19582 return *this;
19583 }
19584
19585 AttachmentDescription& setStoreOp( AttachmentStoreOp storeOp_ )
19586 {
19587 storeOp = storeOp_;
19588 return *this;
19589 }
19590
19591 AttachmentDescription& setStencilLoadOp( AttachmentLoadOp stencilLoadOp_ )
19592 {
19593 stencilLoadOp = stencilLoadOp_;
19594 return *this;
19595 }
19596
19597 AttachmentDescription& setStencilStoreOp( AttachmentStoreOp stencilStoreOp_ )
19598 {
19599 stencilStoreOp = stencilStoreOp_;
19600 return *this;
19601 }
19602
19603 AttachmentDescription& setInitialLayout( ImageLayout initialLayout_ )
19604 {
19605 initialLayout = initialLayout_;
19606 return *this;
19607 }
19608
19609 AttachmentDescription& setFinalLayout( ImageLayout finalLayout_ )
19610 {
19611 finalLayout = finalLayout_;
19612 return *this;
19613 }
19614
19615 operator const VkAttachmentDescription&() const
19616 {
19617 return *reinterpret_cast<const VkAttachmentDescription*>(this);
19618 }
19619
19620 bool operator==( AttachmentDescription const& rhs ) const
19621 {
19622 return ( flags == rhs.flags )
19623 && ( format == rhs.format )
19624 && ( samples == rhs.samples )
19625 && ( loadOp == rhs.loadOp )
19626 && ( storeOp == rhs.storeOp )
19627 && ( stencilLoadOp == rhs.stencilLoadOp )
19628 && ( stencilStoreOp == rhs.stencilStoreOp )
19629 && ( initialLayout == rhs.initialLayout )
19630 && ( finalLayout == rhs.finalLayout );
19631 }
19632
19633 bool operator!=( AttachmentDescription const& rhs ) const
19634 {
19635 return !operator==( rhs );
19636 }
19637
19638 AttachmentDescriptionFlags flags;
19639 Format format;
19640 SampleCountFlagBits samples;
19641 AttachmentLoadOp loadOp;
19642 AttachmentStoreOp storeOp;
19643 AttachmentLoadOp stencilLoadOp;
19644 AttachmentStoreOp stencilStoreOp;
19645 ImageLayout initialLayout;
19646 ImageLayout finalLayout;
19647 };
19648 static_assert( sizeof( AttachmentDescription ) == sizeof( VkAttachmentDescription ), "struct and wrapper have different size!" );
19649
19650 enum class StencilFaceFlagBits
19651 {
19652 eFront = VK_STENCIL_FACE_FRONT_BIT,
19653 eBack = VK_STENCIL_FACE_BACK_BIT,
19654 eVkStencilFrontAndBack = VK_STENCIL_FRONT_AND_BACK
19655 };
19656
19657 using StencilFaceFlags = Flags<StencilFaceFlagBits, VkStencilFaceFlags>;
19658
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019659 VULKAN_HPP_INLINE StencilFaceFlags operator|( StencilFaceFlagBits bit0, StencilFaceFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019660 {
19661 return StencilFaceFlags( bit0 ) | bit1;
19662 }
19663
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019664 VULKAN_HPP_INLINE StencilFaceFlags operator~( StencilFaceFlagBits bits )
19665 {
19666 return ~( StencilFaceFlags( bits ) );
19667 }
19668
19669 template <> struct FlagTraits<StencilFaceFlagBits>
19670 {
19671 enum
19672 {
19673 allFlags = VkFlags(StencilFaceFlagBits::eFront) | VkFlags(StencilFaceFlagBits::eBack) | VkFlags(StencilFaceFlagBits::eVkStencilFrontAndBack)
19674 };
19675 };
19676
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019677 enum class DescriptorPoolCreateFlagBits
19678 {
19679 eFreeDescriptorSet = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT
19680 };
19681
19682 using DescriptorPoolCreateFlags = Flags<DescriptorPoolCreateFlagBits, VkDescriptorPoolCreateFlags>;
19683
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019684 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator|( DescriptorPoolCreateFlagBits bit0, DescriptorPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019685 {
19686 return DescriptorPoolCreateFlags( bit0 ) | bit1;
19687 }
19688
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019689 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator~( DescriptorPoolCreateFlagBits bits )
19690 {
19691 return ~( DescriptorPoolCreateFlags( bits ) );
19692 }
19693
19694 template <> struct FlagTraits<DescriptorPoolCreateFlagBits>
19695 {
19696 enum
19697 {
19698 allFlags = VkFlags(DescriptorPoolCreateFlagBits::eFreeDescriptorSet)
19699 };
19700 };
19701
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019702 struct DescriptorPoolCreateInfo
19703 {
19704 DescriptorPoolCreateInfo( DescriptorPoolCreateFlags flags_ = DescriptorPoolCreateFlags(), uint32_t maxSets_ = 0, uint32_t poolSizeCount_ = 0, const DescriptorPoolSize* pPoolSizes_ = nullptr )
19705 : sType( StructureType::eDescriptorPoolCreateInfo )
19706 , pNext( nullptr )
19707 , flags( flags_ )
19708 , maxSets( maxSets_ )
19709 , poolSizeCount( poolSizeCount_ )
19710 , pPoolSizes( pPoolSizes_ )
19711 {
19712 }
19713
19714 DescriptorPoolCreateInfo( VkDescriptorPoolCreateInfo const & rhs )
19715 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019716 memcpy( this, &rhs, sizeof( DescriptorPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019717 }
19718
19719 DescriptorPoolCreateInfo& operator=( VkDescriptorPoolCreateInfo const & rhs )
19720 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019721 memcpy( this, &rhs, sizeof( DescriptorPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019722 return *this;
19723 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019724 DescriptorPoolCreateInfo& setPNext( const void* pNext_ )
19725 {
19726 pNext = pNext_;
19727 return *this;
19728 }
19729
19730 DescriptorPoolCreateInfo& setFlags( DescriptorPoolCreateFlags flags_ )
19731 {
19732 flags = flags_;
19733 return *this;
19734 }
19735
19736 DescriptorPoolCreateInfo& setMaxSets( uint32_t maxSets_ )
19737 {
19738 maxSets = maxSets_;
19739 return *this;
19740 }
19741
19742 DescriptorPoolCreateInfo& setPoolSizeCount( uint32_t poolSizeCount_ )
19743 {
19744 poolSizeCount = poolSizeCount_;
19745 return *this;
19746 }
19747
19748 DescriptorPoolCreateInfo& setPPoolSizes( const DescriptorPoolSize* pPoolSizes_ )
19749 {
19750 pPoolSizes = pPoolSizes_;
19751 return *this;
19752 }
19753
19754 operator const VkDescriptorPoolCreateInfo&() const
19755 {
19756 return *reinterpret_cast<const VkDescriptorPoolCreateInfo*>(this);
19757 }
19758
19759 bool operator==( DescriptorPoolCreateInfo const& rhs ) const
19760 {
19761 return ( sType == rhs.sType )
19762 && ( pNext == rhs.pNext )
19763 && ( flags == rhs.flags )
19764 && ( maxSets == rhs.maxSets )
19765 && ( poolSizeCount == rhs.poolSizeCount )
19766 && ( pPoolSizes == rhs.pPoolSizes );
19767 }
19768
19769 bool operator!=( DescriptorPoolCreateInfo const& rhs ) const
19770 {
19771 return !operator==( rhs );
19772 }
19773
19774 private:
19775 StructureType sType;
19776
19777 public:
19778 const void* pNext;
19779 DescriptorPoolCreateFlags flags;
19780 uint32_t maxSets;
19781 uint32_t poolSizeCount;
19782 const DescriptorPoolSize* pPoolSizes;
19783 };
19784 static_assert( sizeof( DescriptorPoolCreateInfo ) == sizeof( VkDescriptorPoolCreateInfo ), "struct and wrapper have different size!" );
19785
19786 enum class DependencyFlagBits
19787 {
Mark Young0f183a82017-02-28 09:58:04 -070019788 eByRegion = VK_DEPENDENCY_BY_REGION_BIT,
19789 eViewLocalKHX = VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX,
19790 eDeviceGroupKHX = VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019791 };
19792
19793 using DependencyFlags = Flags<DependencyFlagBits, VkDependencyFlags>;
19794
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019795 VULKAN_HPP_INLINE DependencyFlags operator|( DependencyFlagBits bit0, DependencyFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019796 {
19797 return DependencyFlags( bit0 ) | bit1;
19798 }
19799
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019800 VULKAN_HPP_INLINE DependencyFlags operator~( DependencyFlagBits bits )
19801 {
19802 return ~( DependencyFlags( bits ) );
19803 }
19804
19805 template <> struct FlagTraits<DependencyFlagBits>
19806 {
19807 enum
19808 {
Mark Young0f183a82017-02-28 09:58:04 -070019809 allFlags = VkFlags(DependencyFlagBits::eByRegion) | VkFlags(DependencyFlagBits::eViewLocalKHX) | VkFlags(DependencyFlagBits::eDeviceGroupKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019810 };
19811 };
19812
19813 struct SubpassDependency
19814 {
19815 SubpassDependency( uint32_t srcSubpass_ = 0, uint32_t dstSubpass_ = 0, PipelineStageFlags srcStageMask_ = PipelineStageFlags(), PipelineStageFlags dstStageMask_ = PipelineStageFlags(), AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), DependencyFlags dependencyFlags_ = DependencyFlags() )
19816 : srcSubpass( srcSubpass_ )
19817 , dstSubpass( dstSubpass_ )
19818 , srcStageMask( srcStageMask_ )
19819 , dstStageMask( dstStageMask_ )
19820 , srcAccessMask( srcAccessMask_ )
19821 , dstAccessMask( dstAccessMask_ )
19822 , dependencyFlags( dependencyFlags_ )
19823 {
19824 }
19825
19826 SubpassDependency( VkSubpassDependency const & rhs )
19827 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019828 memcpy( this, &rhs, sizeof( SubpassDependency ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019829 }
19830
19831 SubpassDependency& operator=( VkSubpassDependency const & rhs )
19832 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019833 memcpy( this, &rhs, sizeof( SubpassDependency ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019834 return *this;
19835 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019836 SubpassDependency& setSrcSubpass( uint32_t srcSubpass_ )
19837 {
19838 srcSubpass = srcSubpass_;
19839 return *this;
19840 }
19841
19842 SubpassDependency& setDstSubpass( uint32_t dstSubpass_ )
19843 {
19844 dstSubpass = dstSubpass_;
19845 return *this;
19846 }
19847
19848 SubpassDependency& setSrcStageMask( PipelineStageFlags srcStageMask_ )
19849 {
19850 srcStageMask = srcStageMask_;
19851 return *this;
19852 }
19853
19854 SubpassDependency& setDstStageMask( PipelineStageFlags dstStageMask_ )
19855 {
19856 dstStageMask = dstStageMask_;
19857 return *this;
19858 }
19859
19860 SubpassDependency& setSrcAccessMask( AccessFlags srcAccessMask_ )
19861 {
19862 srcAccessMask = srcAccessMask_;
19863 return *this;
19864 }
19865
19866 SubpassDependency& setDstAccessMask( AccessFlags dstAccessMask_ )
19867 {
19868 dstAccessMask = dstAccessMask_;
19869 return *this;
19870 }
19871
19872 SubpassDependency& setDependencyFlags( DependencyFlags dependencyFlags_ )
19873 {
19874 dependencyFlags = dependencyFlags_;
19875 return *this;
19876 }
19877
19878 operator const VkSubpassDependency&() const
19879 {
19880 return *reinterpret_cast<const VkSubpassDependency*>(this);
19881 }
19882
19883 bool operator==( SubpassDependency const& rhs ) const
19884 {
19885 return ( srcSubpass == rhs.srcSubpass )
19886 && ( dstSubpass == rhs.dstSubpass )
19887 && ( srcStageMask == rhs.srcStageMask )
19888 && ( dstStageMask == rhs.dstStageMask )
19889 && ( srcAccessMask == rhs.srcAccessMask )
19890 && ( dstAccessMask == rhs.dstAccessMask )
19891 && ( dependencyFlags == rhs.dependencyFlags );
19892 }
19893
19894 bool operator!=( SubpassDependency const& rhs ) const
19895 {
19896 return !operator==( rhs );
19897 }
19898
19899 uint32_t srcSubpass;
19900 uint32_t dstSubpass;
19901 PipelineStageFlags srcStageMask;
19902 PipelineStageFlags dstStageMask;
19903 AccessFlags srcAccessMask;
19904 AccessFlags dstAccessMask;
19905 DependencyFlags dependencyFlags;
19906 };
19907 static_assert( sizeof( SubpassDependency ) == sizeof( VkSubpassDependency ), "struct and wrapper have different size!" );
19908
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019909 enum class PresentModeKHR
19910 {
19911 eImmediate = VK_PRESENT_MODE_IMMEDIATE_KHR,
19912 eMailbox = VK_PRESENT_MODE_MAILBOX_KHR,
19913 eFifo = VK_PRESENT_MODE_FIFO_KHR,
Mark Lobodzinski54385432017-05-15 10:27:52 -060019914 eFifoRelaxed = VK_PRESENT_MODE_FIFO_RELAXED_KHR,
19915 eSharedDemandRefresh = VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR,
19916 eSharedContinuousRefresh = VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019917 };
19918
19919 enum class ColorSpaceKHR
19920 {
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060019921 eSrgbNonlinear = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
19922 eDisplayP3NonlinearEXT = VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT,
19923 eExtendedSrgbLinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT,
19924 eDciP3LinearEXT = VK_COLOR_SPACE_DCI_P3_LINEAR_EXT,
19925 eDciP3NonlinearEXT = VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT,
19926 eBt709LinearEXT = VK_COLOR_SPACE_BT709_LINEAR_EXT,
19927 eBt709NonlinearEXT = VK_COLOR_SPACE_BT709_NONLINEAR_EXT,
19928 eBt2020LinearEXT = VK_COLOR_SPACE_BT2020_LINEAR_EXT,
19929 eHdr10St2084EXT = VK_COLOR_SPACE_HDR10_ST2084_EXT,
19930 eDolbyvisionEXT = VK_COLOR_SPACE_DOLBYVISION_EXT,
19931 eHdr10HlgEXT = VK_COLOR_SPACE_HDR10_HLG_EXT,
19932 eAdobergbLinearEXT = VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT,
19933 eAdobergbNonlinearEXT = VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT,
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060019934 ePassThroughEXT = VK_COLOR_SPACE_PASS_THROUGH_EXT,
19935 eExtendedSrgbNonlinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019936 };
19937
19938 struct SurfaceFormatKHR
19939 {
19940 operator const VkSurfaceFormatKHR&() const
19941 {
19942 return *reinterpret_cast<const VkSurfaceFormatKHR*>(this);
19943 }
19944
19945 bool operator==( SurfaceFormatKHR const& rhs ) const
19946 {
19947 return ( format == rhs.format )
19948 && ( colorSpace == rhs.colorSpace );
19949 }
19950
19951 bool operator!=( SurfaceFormatKHR const& rhs ) const
19952 {
19953 return !operator==( rhs );
19954 }
19955
19956 Format format;
19957 ColorSpaceKHR colorSpace;
19958 };
19959 static_assert( sizeof( SurfaceFormatKHR ) == sizeof( VkSurfaceFormatKHR ), "struct and wrapper have different size!" );
19960
Mark Lobodzinski54385432017-05-15 10:27:52 -060019961 struct SurfaceFormat2KHR
19962 {
19963 operator const VkSurfaceFormat2KHR&() const
19964 {
19965 return *reinterpret_cast<const VkSurfaceFormat2KHR*>(this);
19966 }
19967
19968 bool operator==( SurfaceFormat2KHR const& rhs ) const
19969 {
19970 return ( sType == rhs.sType )
19971 && ( pNext == rhs.pNext )
19972 && ( surfaceFormat == rhs.surfaceFormat );
19973 }
19974
19975 bool operator!=( SurfaceFormat2KHR const& rhs ) const
19976 {
19977 return !operator==( rhs );
19978 }
19979
19980 private:
19981 StructureType sType;
19982
19983 public:
19984 void* pNext;
19985 SurfaceFormatKHR surfaceFormat;
19986 };
19987 static_assert( sizeof( SurfaceFormat2KHR ) == sizeof( VkSurfaceFormat2KHR ), "struct and wrapper have different size!" );
19988
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019989 enum class DisplayPlaneAlphaFlagBitsKHR
19990 {
19991 eOpaque = VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR,
19992 eGlobal = VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR,
19993 ePerPixel = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR,
19994 ePerPixelPremultiplied = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR
19995 };
19996
19997 using DisplayPlaneAlphaFlagsKHR = Flags<DisplayPlaneAlphaFlagBitsKHR, VkDisplayPlaneAlphaFlagsKHR>;
19998
19999 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator|( DisplayPlaneAlphaFlagBitsKHR bit0, DisplayPlaneAlphaFlagBitsKHR bit1 )
20000 {
20001 return DisplayPlaneAlphaFlagsKHR( bit0 ) | bit1;
20002 }
20003
20004 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator~( DisplayPlaneAlphaFlagBitsKHR bits )
20005 {
20006 return ~( DisplayPlaneAlphaFlagsKHR( bits ) );
20007 }
20008
20009 template <> struct FlagTraits<DisplayPlaneAlphaFlagBitsKHR>
20010 {
20011 enum
20012 {
20013 allFlags = VkFlags(DisplayPlaneAlphaFlagBitsKHR::eOpaque) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::eGlobal) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixel) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied)
20014 };
20015 };
20016
20017 struct DisplayPlaneCapabilitiesKHR
20018 {
20019 operator const VkDisplayPlaneCapabilitiesKHR&() const
20020 {
20021 return *reinterpret_cast<const VkDisplayPlaneCapabilitiesKHR*>(this);
20022 }
20023
20024 bool operator==( DisplayPlaneCapabilitiesKHR const& rhs ) const
20025 {
20026 return ( supportedAlpha == rhs.supportedAlpha )
20027 && ( minSrcPosition == rhs.minSrcPosition )
20028 && ( maxSrcPosition == rhs.maxSrcPosition )
20029 && ( minSrcExtent == rhs.minSrcExtent )
20030 && ( maxSrcExtent == rhs.maxSrcExtent )
20031 && ( minDstPosition == rhs.minDstPosition )
20032 && ( maxDstPosition == rhs.maxDstPosition )
20033 && ( minDstExtent == rhs.minDstExtent )
20034 && ( maxDstExtent == rhs.maxDstExtent );
20035 }
20036
20037 bool operator!=( DisplayPlaneCapabilitiesKHR const& rhs ) const
20038 {
20039 return !operator==( rhs );
20040 }
20041
20042 DisplayPlaneAlphaFlagsKHR supportedAlpha;
20043 Offset2D minSrcPosition;
20044 Offset2D maxSrcPosition;
20045 Extent2D minSrcExtent;
20046 Extent2D maxSrcExtent;
20047 Offset2D minDstPosition;
20048 Offset2D maxDstPosition;
20049 Extent2D minDstExtent;
20050 Extent2D maxDstExtent;
20051 };
20052 static_assert( sizeof( DisplayPlaneCapabilitiesKHR ) == sizeof( VkDisplayPlaneCapabilitiesKHR ), "struct and wrapper have different size!" );
20053
20054 enum class CompositeAlphaFlagBitsKHR
20055 {
20056 eOpaque = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,
20057 ePreMultiplied = VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR,
20058 ePostMultiplied = VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR,
20059 eInherit = VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR
20060 };
20061
20062 using CompositeAlphaFlagsKHR = Flags<CompositeAlphaFlagBitsKHR, VkCompositeAlphaFlagsKHR>;
20063
20064 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator|( CompositeAlphaFlagBitsKHR bit0, CompositeAlphaFlagBitsKHR bit1 )
20065 {
20066 return CompositeAlphaFlagsKHR( bit0 ) | bit1;
20067 }
20068
20069 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator~( CompositeAlphaFlagBitsKHR bits )
20070 {
20071 return ~( CompositeAlphaFlagsKHR( bits ) );
20072 }
20073
20074 template <> struct FlagTraits<CompositeAlphaFlagBitsKHR>
20075 {
20076 enum
20077 {
20078 allFlags = VkFlags(CompositeAlphaFlagBitsKHR::eOpaque) | VkFlags(CompositeAlphaFlagBitsKHR::ePreMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::ePostMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::eInherit)
20079 };
20080 };
20081
20082 enum class SurfaceTransformFlagBitsKHR
20083 {
20084 eIdentity = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,
20085 eRotate90 = VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,
20086 eRotate180 = VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,
20087 eRotate270 = VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,
20088 eHorizontalMirror = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR,
20089 eHorizontalMirrorRotate90 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR,
20090 eHorizontalMirrorRotate180 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR,
20091 eHorizontalMirrorRotate270 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR,
20092 eInherit = VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR
20093 };
20094
20095 using SurfaceTransformFlagsKHR = Flags<SurfaceTransformFlagBitsKHR, VkSurfaceTransformFlagsKHR>;
20096
20097 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator|( SurfaceTransformFlagBitsKHR bit0, SurfaceTransformFlagBitsKHR bit1 )
20098 {
20099 return SurfaceTransformFlagsKHR( bit0 ) | bit1;
20100 }
20101
20102 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator~( SurfaceTransformFlagBitsKHR bits )
20103 {
20104 return ~( SurfaceTransformFlagsKHR( bits ) );
20105 }
20106
20107 template <> struct FlagTraits<SurfaceTransformFlagBitsKHR>
20108 {
20109 enum
20110 {
20111 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)
20112 };
20113 };
20114
20115 struct DisplayPropertiesKHR
20116 {
20117 operator const VkDisplayPropertiesKHR&() const
20118 {
20119 return *reinterpret_cast<const VkDisplayPropertiesKHR*>(this);
20120 }
20121
20122 bool operator==( DisplayPropertiesKHR const& rhs ) const
20123 {
20124 return ( display == rhs.display )
20125 && ( displayName == rhs.displayName )
20126 && ( physicalDimensions == rhs.physicalDimensions )
20127 && ( physicalResolution == rhs.physicalResolution )
20128 && ( supportedTransforms == rhs.supportedTransforms )
20129 && ( planeReorderPossible == rhs.planeReorderPossible )
20130 && ( persistentContent == rhs.persistentContent );
20131 }
20132
20133 bool operator!=( DisplayPropertiesKHR const& rhs ) const
20134 {
20135 return !operator==( rhs );
20136 }
20137
20138 DisplayKHR display;
20139 const char* displayName;
20140 Extent2D physicalDimensions;
20141 Extent2D physicalResolution;
20142 SurfaceTransformFlagsKHR supportedTransforms;
20143 Bool32 planeReorderPossible;
20144 Bool32 persistentContent;
20145 };
20146 static_assert( sizeof( DisplayPropertiesKHR ) == sizeof( VkDisplayPropertiesKHR ), "struct and wrapper have different size!" );
20147
20148 struct DisplaySurfaceCreateInfoKHR
20149 {
20150 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() )
20151 : sType( StructureType::eDisplaySurfaceCreateInfoKHR )
20152 , pNext( nullptr )
20153 , flags( flags_ )
20154 , displayMode( displayMode_ )
20155 , planeIndex( planeIndex_ )
20156 , planeStackIndex( planeStackIndex_ )
20157 , transform( transform_ )
20158 , globalAlpha( globalAlpha_ )
20159 , alphaMode( alphaMode_ )
20160 , imageExtent( imageExtent_ )
20161 {
20162 }
20163
20164 DisplaySurfaceCreateInfoKHR( VkDisplaySurfaceCreateInfoKHR const & rhs )
20165 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020166 memcpy( this, &rhs, sizeof( DisplaySurfaceCreateInfoKHR ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020167 }
20168
20169 DisplaySurfaceCreateInfoKHR& operator=( VkDisplaySurfaceCreateInfoKHR const & rhs )
20170 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020171 memcpy( this, &rhs, sizeof( DisplaySurfaceCreateInfoKHR ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020172 return *this;
20173 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020174 DisplaySurfaceCreateInfoKHR& setPNext( const void* pNext_ )
20175 {
20176 pNext = pNext_;
20177 return *this;
20178 }
20179
20180 DisplaySurfaceCreateInfoKHR& setFlags( DisplaySurfaceCreateFlagsKHR flags_ )
20181 {
20182 flags = flags_;
20183 return *this;
20184 }
20185
20186 DisplaySurfaceCreateInfoKHR& setDisplayMode( DisplayModeKHR displayMode_ )
20187 {
20188 displayMode = displayMode_;
20189 return *this;
20190 }
20191
20192 DisplaySurfaceCreateInfoKHR& setPlaneIndex( uint32_t planeIndex_ )
20193 {
20194 planeIndex = planeIndex_;
20195 return *this;
20196 }
20197
20198 DisplaySurfaceCreateInfoKHR& setPlaneStackIndex( uint32_t planeStackIndex_ )
20199 {
20200 planeStackIndex = planeStackIndex_;
20201 return *this;
20202 }
20203
20204 DisplaySurfaceCreateInfoKHR& setTransform( SurfaceTransformFlagBitsKHR transform_ )
20205 {
20206 transform = transform_;
20207 return *this;
20208 }
20209
20210 DisplaySurfaceCreateInfoKHR& setGlobalAlpha( float globalAlpha_ )
20211 {
20212 globalAlpha = globalAlpha_;
20213 return *this;
20214 }
20215
20216 DisplaySurfaceCreateInfoKHR& setAlphaMode( DisplayPlaneAlphaFlagBitsKHR alphaMode_ )
20217 {
20218 alphaMode = alphaMode_;
20219 return *this;
20220 }
20221
20222 DisplaySurfaceCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
20223 {
20224 imageExtent = imageExtent_;
20225 return *this;
20226 }
20227
20228 operator const VkDisplaySurfaceCreateInfoKHR&() const
20229 {
20230 return *reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>(this);
20231 }
20232
20233 bool operator==( DisplaySurfaceCreateInfoKHR const& rhs ) const
20234 {
20235 return ( sType == rhs.sType )
20236 && ( pNext == rhs.pNext )
20237 && ( flags == rhs.flags )
20238 && ( displayMode == rhs.displayMode )
20239 && ( planeIndex == rhs.planeIndex )
20240 && ( planeStackIndex == rhs.planeStackIndex )
20241 && ( transform == rhs.transform )
20242 && ( globalAlpha == rhs.globalAlpha )
20243 && ( alphaMode == rhs.alphaMode )
20244 && ( imageExtent == rhs.imageExtent );
20245 }
20246
20247 bool operator!=( DisplaySurfaceCreateInfoKHR const& rhs ) const
20248 {
20249 return !operator==( rhs );
20250 }
20251
20252 private:
20253 StructureType sType;
20254
20255 public:
20256 const void* pNext;
20257 DisplaySurfaceCreateFlagsKHR flags;
20258 DisplayModeKHR displayMode;
20259 uint32_t planeIndex;
20260 uint32_t planeStackIndex;
20261 SurfaceTransformFlagBitsKHR transform;
20262 float globalAlpha;
20263 DisplayPlaneAlphaFlagBitsKHR alphaMode;
20264 Extent2D imageExtent;
20265 };
20266 static_assert( sizeof( DisplaySurfaceCreateInfoKHR ) == sizeof( VkDisplaySurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
20267
20268 struct SurfaceCapabilitiesKHR
20269 {
20270 operator const VkSurfaceCapabilitiesKHR&() const
20271 {
20272 return *reinterpret_cast<const VkSurfaceCapabilitiesKHR*>(this);
20273 }
20274
20275 bool operator==( SurfaceCapabilitiesKHR const& rhs ) const
20276 {
20277 return ( minImageCount == rhs.minImageCount )
20278 && ( maxImageCount == rhs.maxImageCount )
20279 && ( currentExtent == rhs.currentExtent )
20280 && ( minImageExtent == rhs.minImageExtent )
20281 && ( maxImageExtent == rhs.maxImageExtent )
20282 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
20283 && ( supportedTransforms == rhs.supportedTransforms )
20284 && ( currentTransform == rhs.currentTransform )
20285 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
20286 && ( supportedUsageFlags == rhs.supportedUsageFlags );
20287 }
20288
20289 bool operator!=( SurfaceCapabilitiesKHR const& rhs ) const
20290 {
20291 return !operator==( rhs );
20292 }
20293
20294 uint32_t minImageCount;
20295 uint32_t maxImageCount;
20296 Extent2D currentExtent;
20297 Extent2D minImageExtent;
20298 Extent2D maxImageExtent;
20299 uint32_t maxImageArrayLayers;
20300 SurfaceTransformFlagsKHR supportedTransforms;
20301 SurfaceTransformFlagBitsKHR currentTransform;
20302 CompositeAlphaFlagsKHR supportedCompositeAlpha;
20303 ImageUsageFlags supportedUsageFlags;
20304 };
20305 static_assert( sizeof( SurfaceCapabilitiesKHR ) == sizeof( VkSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" );
20306
Mark Lobodzinski54385432017-05-15 10:27:52 -060020307 struct SurfaceCapabilities2KHR
20308 {
20309 operator const VkSurfaceCapabilities2KHR&() const
20310 {
20311 return *reinterpret_cast<const VkSurfaceCapabilities2KHR*>(this);
20312 }
20313
20314 bool operator==( SurfaceCapabilities2KHR const& rhs ) const
20315 {
20316 return ( sType == rhs.sType )
20317 && ( pNext == rhs.pNext )
20318 && ( surfaceCapabilities == rhs.surfaceCapabilities );
20319 }
20320
20321 bool operator!=( SurfaceCapabilities2KHR const& rhs ) const
20322 {
20323 return !operator==( rhs );
20324 }
20325
20326 private:
20327 StructureType sType;
20328
20329 public:
20330 void* pNext;
20331 SurfaceCapabilitiesKHR surfaceCapabilities;
20332 };
20333 static_assert( sizeof( SurfaceCapabilities2KHR ) == sizeof( VkSurfaceCapabilities2KHR ), "struct and wrapper have different size!" );
20334
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020335 enum class DebugReportFlagBitsEXT
20336 {
20337 eInformation = VK_DEBUG_REPORT_INFORMATION_BIT_EXT,
20338 eWarning = VK_DEBUG_REPORT_WARNING_BIT_EXT,
20339 ePerformanceWarning = VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT,
20340 eError = VK_DEBUG_REPORT_ERROR_BIT_EXT,
20341 eDebug = VK_DEBUG_REPORT_DEBUG_BIT_EXT
20342 };
20343
20344 using DebugReportFlagsEXT = Flags<DebugReportFlagBitsEXT, VkDebugReportFlagsEXT>;
20345
20346 VULKAN_HPP_INLINE DebugReportFlagsEXT operator|( DebugReportFlagBitsEXT bit0, DebugReportFlagBitsEXT bit1 )
20347 {
20348 return DebugReportFlagsEXT( bit0 ) | bit1;
20349 }
20350
20351 VULKAN_HPP_INLINE DebugReportFlagsEXT operator~( DebugReportFlagBitsEXT bits )
20352 {
20353 return ~( DebugReportFlagsEXT( bits ) );
20354 }
20355
20356 template <> struct FlagTraits<DebugReportFlagBitsEXT>
20357 {
20358 enum
20359 {
20360 allFlags = VkFlags(DebugReportFlagBitsEXT::eInformation) | VkFlags(DebugReportFlagBitsEXT::eWarning) | VkFlags(DebugReportFlagBitsEXT::ePerformanceWarning) | VkFlags(DebugReportFlagBitsEXT::eError) | VkFlags(DebugReportFlagBitsEXT::eDebug)
20361 };
20362 };
20363
20364 struct DebugReportCallbackCreateInfoEXT
20365 {
20366 DebugReportCallbackCreateInfoEXT( DebugReportFlagsEXT flags_ = DebugReportFlagsEXT(), PFN_vkDebugReportCallbackEXT pfnCallback_ = nullptr, void* pUserData_ = nullptr )
20367 : sType( StructureType::eDebugReportCallbackCreateInfoEXT )
20368 , pNext( nullptr )
20369 , flags( flags_ )
20370 , pfnCallback( pfnCallback_ )
20371 , pUserData( pUserData_ )
20372 {
20373 }
20374
20375 DebugReportCallbackCreateInfoEXT( VkDebugReportCallbackCreateInfoEXT const & rhs )
20376 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020377 memcpy( this, &rhs, sizeof( DebugReportCallbackCreateInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020378 }
20379
20380 DebugReportCallbackCreateInfoEXT& operator=( VkDebugReportCallbackCreateInfoEXT const & rhs )
20381 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020382 memcpy( this, &rhs, sizeof( DebugReportCallbackCreateInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020383 return *this;
20384 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020385 DebugReportCallbackCreateInfoEXT& setPNext( const void* pNext_ )
20386 {
20387 pNext = pNext_;
20388 return *this;
20389 }
20390
20391 DebugReportCallbackCreateInfoEXT& setFlags( DebugReportFlagsEXT flags_ )
20392 {
20393 flags = flags_;
20394 return *this;
20395 }
20396
20397 DebugReportCallbackCreateInfoEXT& setPfnCallback( PFN_vkDebugReportCallbackEXT pfnCallback_ )
20398 {
20399 pfnCallback = pfnCallback_;
20400 return *this;
20401 }
20402
20403 DebugReportCallbackCreateInfoEXT& setPUserData( void* pUserData_ )
20404 {
20405 pUserData = pUserData_;
20406 return *this;
20407 }
20408
20409 operator const VkDebugReportCallbackCreateInfoEXT&() const
20410 {
20411 return *reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>(this);
20412 }
20413
20414 bool operator==( DebugReportCallbackCreateInfoEXT const& rhs ) const
20415 {
20416 return ( sType == rhs.sType )
20417 && ( pNext == rhs.pNext )
20418 && ( flags == rhs.flags )
20419 && ( pfnCallback == rhs.pfnCallback )
20420 && ( pUserData == rhs.pUserData );
20421 }
20422
20423 bool operator!=( DebugReportCallbackCreateInfoEXT const& rhs ) const
20424 {
20425 return !operator==( rhs );
20426 }
20427
20428 private:
20429 StructureType sType;
20430
20431 public:
20432 const void* pNext;
20433 DebugReportFlagsEXT flags;
20434 PFN_vkDebugReportCallbackEXT pfnCallback;
20435 void* pUserData;
20436 };
20437 static_assert( sizeof( DebugReportCallbackCreateInfoEXT ) == sizeof( VkDebugReportCallbackCreateInfoEXT ), "struct and wrapper have different size!" );
20438
20439 enum class DebugReportObjectTypeEXT
20440 {
20441 eUnknown = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT,
20442 eInstance = VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT,
20443 ePhysicalDevice = VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT,
20444 eDevice = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
20445 eQueue = VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT,
20446 eSemaphore = VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT,
20447 eCommandBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT,
20448 eFence = VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT,
20449 eDeviceMemory = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT,
20450 eBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT,
20451 eImage = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT,
20452 eEvent = VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT,
20453 eQueryPool = VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT,
20454 eBufferView = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT,
20455 eImageView = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT,
20456 eShaderModule = VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT,
20457 ePipelineCache = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT,
20458 ePipelineLayout = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT,
20459 eRenderPass = VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT,
20460 ePipeline = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT,
20461 eDescriptorSetLayout = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT,
20462 eSampler = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT,
20463 eDescriptorPool = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT,
20464 eDescriptorSet = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT,
20465 eFramebuffer = VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT,
20466 eCommandPool = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT,
20467 eSurfaceKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT,
20468 eSwapchainKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT,
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020469 eDebugReportCallbackExt = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020470 eDisplayKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT,
20471 eDisplayModeKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT,
20472 eObjectTableNvx = VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT,
Mark Lobodzinski3289d762017-04-03 08:22:04 -060020473 eIndirectCommandsLayoutNvx = VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060020474 eValidationCache = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT,
Lenny Komowb79f04a2017-09-18 17:07:00 -060020475 eDescriptorUpdateTemplateKHR = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT,
20476 eSamplerYcbcrConversionKHR = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020477 };
20478
20479 struct DebugMarkerObjectNameInfoEXT
20480 {
20481 DebugMarkerObjectNameInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = 0, const char* pObjectName_ = nullptr )
20482 : sType( StructureType::eDebugMarkerObjectNameInfoEXT )
20483 , pNext( nullptr )
20484 , objectType( objectType_ )
20485 , object( object_ )
20486 , pObjectName( pObjectName_ )
20487 {
20488 }
20489
20490 DebugMarkerObjectNameInfoEXT( VkDebugMarkerObjectNameInfoEXT const & rhs )
20491 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020492 memcpy( this, &rhs, sizeof( DebugMarkerObjectNameInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020493 }
20494
20495 DebugMarkerObjectNameInfoEXT& operator=( VkDebugMarkerObjectNameInfoEXT const & rhs )
20496 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020497 memcpy( this, &rhs, sizeof( DebugMarkerObjectNameInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020498 return *this;
20499 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020500 DebugMarkerObjectNameInfoEXT& setPNext( const void* pNext_ )
20501 {
20502 pNext = pNext_;
20503 return *this;
20504 }
20505
20506 DebugMarkerObjectNameInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
20507 {
20508 objectType = objectType_;
20509 return *this;
20510 }
20511
20512 DebugMarkerObjectNameInfoEXT& setObject( uint64_t object_ )
20513 {
20514 object = object_;
20515 return *this;
20516 }
20517
20518 DebugMarkerObjectNameInfoEXT& setPObjectName( const char* pObjectName_ )
20519 {
20520 pObjectName = pObjectName_;
20521 return *this;
20522 }
20523
20524 operator const VkDebugMarkerObjectNameInfoEXT&() const
20525 {
20526 return *reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>(this);
20527 }
20528
20529 bool operator==( DebugMarkerObjectNameInfoEXT const& rhs ) const
20530 {
20531 return ( sType == rhs.sType )
20532 && ( pNext == rhs.pNext )
20533 && ( objectType == rhs.objectType )
20534 && ( object == rhs.object )
20535 && ( pObjectName == rhs.pObjectName );
20536 }
20537
20538 bool operator!=( DebugMarkerObjectNameInfoEXT const& rhs ) const
20539 {
20540 return !operator==( rhs );
20541 }
20542
20543 private:
20544 StructureType sType;
20545
20546 public:
20547 const void* pNext;
20548 DebugReportObjectTypeEXT objectType;
20549 uint64_t object;
20550 const char* pObjectName;
20551 };
20552 static_assert( sizeof( DebugMarkerObjectNameInfoEXT ) == sizeof( VkDebugMarkerObjectNameInfoEXT ), "struct and wrapper have different size!" );
20553
20554 struct DebugMarkerObjectTagInfoEXT
20555 {
20556 DebugMarkerObjectTagInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = 0, uint64_t tagName_ = 0, size_t tagSize_ = 0, const void* pTag_ = nullptr )
20557 : sType( StructureType::eDebugMarkerObjectTagInfoEXT )
20558 , pNext( nullptr )
20559 , objectType( objectType_ )
20560 , object( object_ )
20561 , tagName( tagName_ )
20562 , tagSize( tagSize_ )
20563 , pTag( pTag_ )
20564 {
20565 }
20566
20567 DebugMarkerObjectTagInfoEXT( VkDebugMarkerObjectTagInfoEXT const & rhs )
20568 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020569 memcpy( this, &rhs, sizeof( DebugMarkerObjectTagInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020570 }
20571
20572 DebugMarkerObjectTagInfoEXT& operator=( VkDebugMarkerObjectTagInfoEXT const & rhs )
20573 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020574 memcpy( this, &rhs, sizeof( DebugMarkerObjectTagInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020575 return *this;
20576 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020577 DebugMarkerObjectTagInfoEXT& setPNext( const void* pNext_ )
20578 {
20579 pNext = pNext_;
20580 return *this;
20581 }
20582
20583 DebugMarkerObjectTagInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
20584 {
20585 objectType = objectType_;
20586 return *this;
20587 }
20588
20589 DebugMarkerObjectTagInfoEXT& setObject( uint64_t object_ )
20590 {
20591 object = object_;
20592 return *this;
20593 }
20594
20595 DebugMarkerObjectTagInfoEXT& setTagName( uint64_t tagName_ )
20596 {
20597 tagName = tagName_;
20598 return *this;
20599 }
20600
20601 DebugMarkerObjectTagInfoEXT& setTagSize( size_t tagSize_ )
20602 {
20603 tagSize = tagSize_;
20604 return *this;
20605 }
20606
20607 DebugMarkerObjectTagInfoEXT& setPTag( const void* pTag_ )
20608 {
20609 pTag = pTag_;
20610 return *this;
20611 }
20612
20613 operator const VkDebugMarkerObjectTagInfoEXT&() const
20614 {
20615 return *reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>(this);
20616 }
20617
20618 bool operator==( DebugMarkerObjectTagInfoEXT const& rhs ) const
20619 {
20620 return ( sType == rhs.sType )
20621 && ( pNext == rhs.pNext )
20622 && ( objectType == rhs.objectType )
20623 && ( object == rhs.object )
20624 && ( tagName == rhs.tagName )
20625 && ( tagSize == rhs.tagSize )
20626 && ( pTag == rhs.pTag );
20627 }
20628
20629 bool operator!=( DebugMarkerObjectTagInfoEXT const& rhs ) const
20630 {
20631 return !operator==( rhs );
20632 }
20633
20634 private:
20635 StructureType sType;
20636
20637 public:
20638 const void* pNext;
20639 DebugReportObjectTypeEXT objectType;
20640 uint64_t object;
20641 uint64_t tagName;
20642 size_t tagSize;
20643 const void* pTag;
20644 };
20645 static_assert( sizeof( DebugMarkerObjectTagInfoEXT ) == sizeof( VkDebugMarkerObjectTagInfoEXT ), "struct and wrapper have different size!" );
20646
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020647 enum class RasterizationOrderAMD
20648 {
20649 eStrict = VK_RASTERIZATION_ORDER_STRICT_AMD,
20650 eRelaxed = VK_RASTERIZATION_ORDER_RELAXED_AMD
20651 };
20652
20653 struct PipelineRasterizationStateRasterizationOrderAMD
20654 {
20655 PipelineRasterizationStateRasterizationOrderAMD( RasterizationOrderAMD rasterizationOrder_ = RasterizationOrderAMD::eStrict )
20656 : sType( StructureType::ePipelineRasterizationStateRasterizationOrderAMD )
20657 , pNext( nullptr )
20658 , rasterizationOrder( rasterizationOrder_ )
20659 {
20660 }
20661
20662 PipelineRasterizationStateRasterizationOrderAMD( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
20663 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020664 memcpy( this, &rhs, sizeof( PipelineRasterizationStateRasterizationOrderAMD ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020665 }
20666
20667 PipelineRasterizationStateRasterizationOrderAMD& operator=( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
20668 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020669 memcpy( this, &rhs, sizeof( PipelineRasterizationStateRasterizationOrderAMD ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020670 return *this;
20671 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020672 PipelineRasterizationStateRasterizationOrderAMD& setPNext( const void* pNext_ )
20673 {
20674 pNext = pNext_;
20675 return *this;
20676 }
20677
20678 PipelineRasterizationStateRasterizationOrderAMD& setRasterizationOrder( RasterizationOrderAMD rasterizationOrder_ )
20679 {
20680 rasterizationOrder = rasterizationOrder_;
20681 return *this;
20682 }
20683
20684 operator const VkPipelineRasterizationStateRasterizationOrderAMD&() const
20685 {
20686 return *reinterpret_cast<const VkPipelineRasterizationStateRasterizationOrderAMD*>(this);
20687 }
20688
20689 bool operator==( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
20690 {
20691 return ( sType == rhs.sType )
20692 && ( pNext == rhs.pNext )
20693 && ( rasterizationOrder == rhs.rasterizationOrder );
20694 }
20695
20696 bool operator!=( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
20697 {
20698 return !operator==( rhs );
20699 }
20700
20701 private:
20702 StructureType sType;
20703
20704 public:
20705 const void* pNext;
20706 RasterizationOrderAMD rasterizationOrder;
20707 };
20708 static_assert( sizeof( PipelineRasterizationStateRasterizationOrderAMD ) == sizeof( VkPipelineRasterizationStateRasterizationOrderAMD ), "struct and wrapper have different size!" );
20709
20710 enum class ExternalMemoryHandleTypeFlagBitsNV
20711 {
20712 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV,
20713 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV,
20714 eD3D11Image = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV,
20715 eD3D11ImageKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV
20716 };
20717
20718 using ExternalMemoryHandleTypeFlagsNV = Flags<ExternalMemoryHandleTypeFlagBitsNV, VkExternalMemoryHandleTypeFlagsNV>;
20719
20720 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator|( ExternalMemoryHandleTypeFlagBitsNV bit0, ExternalMemoryHandleTypeFlagBitsNV bit1 )
20721 {
20722 return ExternalMemoryHandleTypeFlagsNV( bit0 ) | bit1;
20723 }
20724
20725 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator~( ExternalMemoryHandleTypeFlagBitsNV bits )
20726 {
20727 return ~( ExternalMemoryHandleTypeFlagsNV( bits ) );
20728 }
20729
20730 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsNV>
20731 {
20732 enum
20733 {
20734 allFlags = VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt)
20735 };
20736 };
20737
20738 struct ExternalMemoryImageCreateInfoNV
20739 {
20740 ExternalMemoryImageCreateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
20741 : sType( StructureType::eExternalMemoryImageCreateInfoNV )
20742 , pNext( nullptr )
20743 , handleTypes( handleTypes_ )
20744 {
20745 }
20746
20747 ExternalMemoryImageCreateInfoNV( VkExternalMemoryImageCreateInfoNV const & rhs )
20748 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020749 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020750 }
20751
20752 ExternalMemoryImageCreateInfoNV& operator=( VkExternalMemoryImageCreateInfoNV const & rhs )
20753 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020754 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020755 return *this;
20756 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020757 ExternalMemoryImageCreateInfoNV& setPNext( const void* pNext_ )
20758 {
20759 pNext = pNext_;
20760 return *this;
20761 }
20762
20763 ExternalMemoryImageCreateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
20764 {
20765 handleTypes = handleTypes_;
20766 return *this;
20767 }
20768
20769 operator const VkExternalMemoryImageCreateInfoNV&() const
20770 {
20771 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoNV*>(this);
20772 }
20773
20774 bool operator==( ExternalMemoryImageCreateInfoNV const& rhs ) const
20775 {
20776 return ( sType == rhs.sType )
20777 && ( pNext == rhs.pNext )
20778 && ( handleTypes == rhs.handleTypes );
20779 }
20780
20781 bool operator!=( ExternalMemoryImageCreateInfoNV const& rhs ) const
20782 {
20783 return !operator==( rhs );
20784 }
20785
20786 private:
20787 StructureType sType;
20788
20789 public:
20790 const void* pNext;
20791 ExternalMemoryHandleTypeFlagsNV handleTypes;
20792 };
20793 static_assert( sizeof( ExternalMemoryImageCreateInfoNV ) == sizeof( VkExternalMemoryImageCreateInfoNV ), "struct and wrapper have different size!" );
20794
20795 struct ExportMemoryAllocateInfoNV
20796 {
20797 ExportMemoryAllocateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
20798 : sType( StructureType::eExportMemoryAllocateInfoNV )
20799 , pNext( nullptr )
20800 , handleTypes( handleTypes_ )
20801 {
20802 }
20803
20804 ExportMemoryAllocateInfoNV( VkExportMemoryAllocateInfoNV const & rhs )
20805 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020806 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020807 }
20808
20809 ExportMemoryAllocateInfoNV& operator=( VkExportMemoryAllocateInfoNV const & rhs )
20810 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020811 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020812 return *this;
20813 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020814 ExportMemoryAllocateInfoNV& setPNext( const void* pNext_ )
20815 {
20816 pNext = pNext_;
20817 return *this;
20818 }
20819
20820 ExportMemoryAllocateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
20821 {
20822 handleTypes = handleTypes_;
20823 return *this;
20824 }
20825
20826 operator const VkExportMemoryAllocateInfoNV&() const
20827 {
20828 return *reinterpret_cast<const VkExportMemoryAllocateInfoNV*>(this);
20829 }
20830
20831 bool operator==( ExportMemoryAllocateInfoNV const& rhs ) const
20832 {
20833 return ( sType == rhs.sType )
20834 && ( pNext == rhs.pNext )
20835 && ( handleTypes == rhs.handleTypes );
20836 }
20837
20838 bool operator!=( ExportMemoryAllocateInfoNV const& rhs ) const
20839 {
20840 return !operator==( rhs );
20841 }
20842
20843 private:
20844 StructureType sType;
20845
20846 public:
20847 const void* pNext;
20848 ExternalMemoryHandleTypeFlagsNV handleTypes;
20849 };
20850 static_assert( sizeof( ExportMemoryAllocateInfoNV ) == sizeof( VkExportMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
20851
20852#ifdef VK_USE_PLATFORM_WIN32_KHR
20853 struct ImportMemoryWin32HandleInfoNV
20854 {
20855 ImportMemoryWin32HandleInfoNV( ExternalMemoryHandleTypeFlagsNV handleType_ = ExternalMemoryHandleTypeFlagsNV(), HANDLE handle_ = 0 )
20856 : sType( StructureType::eImportMemoryWin32HandleInfoNV )
20857 , pNext( nullptr )
20858 , handleType( handleType_ )
20859 , handle( handle_ )
20860 {
20861 }
20862
20863 ImportMemoryWin32HandleInfoNV( VkImportMemoryWin32HandleInfoNV const & rhs )
20864 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020865 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020866 }
20867
20868 ImportMemoryWin32HandleInfoNV& operator=( VkImportMemoryWin32HandleInfoNV const & rhs )
20869 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020870 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020871 return *this;
20872 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020873 ImportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
20874 {
20875 pNext = pNext_;
20876 return *this;
20877 }
20878
20879 ImportMemoryWin32HandleInfoNV& setHandleType( ExternalMemoryHandleTypeFlagsNV handleType_ )
20880 {
20881 handleType = handleType_;
20882 return *this;
20883 }
20884
20885 ImportMemoryWin32HandleInfoNV& setHandle( HANDLE handle_ )
20886 {
20887 handle = handle_;
20888 return *this;
20889 }
20890
20891 operator const VkImportMemoryWin32HandleInfoNV&() const
20892 {
20893 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoNV*>(this);
20894 }
20895
20896 bool operator==( ImportMemoryWin32HandleInfoNV const& rhs ) const
20897 {
20898 return ( sType == rhs.sType )
20899 && ( pNext == rhs.pNext )
20900 && ( handleType == rhs.handleType )
20901 && ( handle == rhs.handle );
20902 }
20903
20904 bool operator!=( ImportMemoryWin32HandleInfoNV const& rhs ) const
20905 {
20906 return !operator==( rhs );
20907 }
20908
20909 private:
20910 StructureType sType;
20911
20912 public:
20913 const void* pNext;
20914 ExternalMemoryHandleTypeFlagsNV handleType;
20915 HANDLE handle;
20916 };
20917 static_assert( sizeof( ImportMemoryWin32HandleInfoNV ) == sizeof( VkImportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
20918#endif /*VK_USE_PLATFORM_WIN32_KHR*/
20919
20920 enum class ExternalMemoryFeatureFlagBitsNV
20921 {
20922 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV,
20923 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV,
20924 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV
20925 };
20926
20927 using ExternalMemoryFeatureFlagsNV = Flags<ExternalMemoryFeatureFlagBitsNV, VkExternalMemoryFeatureFlagsNV>;
20928
20929 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator|( ExternalMemoryFeatureFlagBitsNV bit0, ExternalMemoryFeatureFlagBitsNV bit1 )
20930 {
20931 return ExternalMemoryFeatureFlagsNV( bit0 ) | bit1;
20932 }
20933
20934 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator~( ExternalMemoryFeatureFlagBitsNV bits )
20935 {
20936 return ~( ExternalMemoryFeatureFlagsNV( bits ) );
20937 }
20938
20939 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsNV>
20940 {
20941 enum
20942 {
20943 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eImportable)
20944 };
20945 };
20946
20947 struct ExternalImageFormatPropertiesNV
20948 {
20949 operator const VkExternalImageFormatPropertiesNV&() const
20950 {
20951 return *reinterpret_cast<const VkExternalImageFormatPropertiesNV*>(this);
20952 }
20953
20954 bool operator==( ExternalImageFormatPropertiesNV const& rhs ) const
20955 {
20956 return ( imageFormatProperties == rhs.imageFormatProperties )
20957 && ( externalMemoryFeatures == rhs.externalMemoryFeatures )
20958 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
20959 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
20960 }
20961
20962 bool operator!=( ExternalImageFormatPropertiesNV const& rhs ) const
20963 {
20964 return !operator==( rhs );
20965 }
20966
20967 ImageFormatProperties imageFormatProperties;
20968 ExternalMemoryFeatureFlagsNV externalMemoryFeatures;
20969 ExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes;
20970 ExternalMemoryHandleTypeFlagsNV compatibleHandleTypes;
20971 };
20972 static_assert( sizeof( ExternalImageFormatPropertiesNV ) == sizeof( VkExternalImageFormatPropertiesNV ), "struct and wrapper have different size!" );
20973
20974 enum class ValidationCheckEXT
20975 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020976 eAll = VK_VALIDATION_CHECK_ALL_EXT,
20977 eShaders = VK_VALIDATION_CHECK_SHADERS_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020978 };
20979
20980 struct ValidationFlagsEXT
20981 {
20982 ValidationFlagsEXT( uint32_t disabledValidationCheckCount_ = 0, ValidationCheckEXT* pDisabledValidationChecks_ = nullptr )
20983 : sType( StructureType::eValidationFlagsEXT )
20984 , pNext( nullptr )
20985 , disabledValidationCheckCount( disabledValidationCheckCount_ )
20986 , pDisabledValidationChecks( pDisabledValidationChecks_ )
20987 {
20988 }
20989
20990 ValidationFlagsEXT( VkValidationFlagsEXT const & rhs )
20991 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020992 memcpy( this, &rhs, sizeof( ValidationFlagsEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020993 }
20994
20995 ValidationFlagsEXT& operator=( VkValidationFlagsEXT const & rhs )
20996 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020997 memcpy( this, &rhs, sizeof( ValidationFlagsEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020998 return *this;
20999 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021000 ValidationFlagsEXT& setPNext( const void* pNext_ )
21001 {
21002 pNext = pNext_;
21003 return *this;
21004 }
21005
21006 ValidationFlagsEXT& setDisabledValidationCheckCount( uint32_t disabledValidationCheckCount_ )
21007 {
21008 disabledValidationCheckCount = disabledValidationCheckCount_;
21009 return *this;
21010 }
21011
21012 ValidationFlagsEXT& setPDisabledValidationChecks( ValidationCheckEXT* pDisabledValidationChecks_ )
21013 {
21014 pDisabledValidationChecks = pDisabledValidationChecks_;
21015 return *this;
21016 }
21017
21018 operator const VkValidationFlagsEXT&() const
21019 {
21020 return *reinterpret_cast<const VkValidationFlagsEXT*>(this);
21021 }
21022
21023 bool operator==( ValidationFlagsEXT const& rhs ) const
21024 {
21025 return ( sType == rhs.sType )
21026 && ( pNext == rhs.pNext )
21027 && ( disabledValidationCheckCount == rhs.disabledValidationCheckCount )
21028 && ( pDisabledValidationChecks == rhs.pDisabledValidationChecks );
21029 }
21030
21031 bool operator!=( ValidationFlagsEXT const& rhs ) const
21032 {
21033 return !operator==( rhs );
21034 }
21035
21036 private:
21037 StructureType sType;
21038
21039 public:
21040 const void* pNext;
21041 uint32_t disabledValidationCheckCount;
21042 ValidationCheckEXT* pDisabledValidationChecks;
21043 };
21044 static_assert( sizeof( ValidationFlagsEXT ) == sizeof( VkValidationFlagsEXT ), "struct and wrapper have different size!" );
21045
21046 enum class IndirectCommandsLayoutUsageFlagBitsNVX
21047 {
21048 eUnorderedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX,
21049 eSparseSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX,
21050 eEmptyExecutions = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX,
21051 eIndexedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX
21052 };
21053
21054 using IndirectCommandsLayoutUsageFlagsNVX = Flags<IndirectCommandsLayoutUsageFlagBitsNVX, VkIndirectCommandsLayoutUsageFlagsNVX>;
21055
21056 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator|( IndirectCommandsLayoutUsageFlagBitsNVX bit0, IndirectCommandsLayoutUsageFlagBitsNVX bit1 )
21057 {
21058 return IndirectCommandsLayoutUsageFlagsNVX( bit0 ) | bit1;
21059 }
21060
21061 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator~( IndirectCommandsLayoutUsageFlagBitsNVX bits )
21062 {
21063 return ~( IndirectCommandsLayoutUsageFlagsNVX( bits ) );
21064 }
21065
21066 template <> struct FlagTraits<IndirectCommandsLayoutUsageFlagBitsNVX>
21067 {
21068 enum
21069 {
21070 allFlags = VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences)
21071 };
21072 };
21073
21074 enum class ObjectEntryUsageFlagBitsNVX
21075 {
21076 eGraphics = VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX,
21077 eCompute = VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX
21078 };
21079
21080 using ObjectEntryUsageFlagsNVX = Flags<ObjectEntryUsageFlagBitsNVX, VkObjectEntryUsageFlagsNVX>;
21081
21082 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator|( ObjectEntryUsageFlagBitsNVX bit0, ObjectEntryUsageFlagBitsNVX bit1 )
21083 {
21084 return ObjectEntryUsageFlagsNVX( bit0 ) | bit1;
21085 }
21086
21087 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator~( ObjectEntryUsageFlagBitsNVX bits )
21088 {
21089 return ~( ObjectEntryUsageFlagsNVX( bits ) );
21090 }
21091
21092 template <> struct FlagTraits<ObjectEntryUsageFlagBitsNVX>
21093 {
21094 enum
21095 {
21096 allFlags = VkFlags(ObjectEntryUsageFlagBitsNVX::eGraphics) | VkFlags(ObjectEntryUsageFlagBitsNVX::eCompute)
21097 };
21098 };
21099
21100 enum class IndirectCommandsTokenTypeNVX
21101 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021102 ePipeline = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX,
21103 eDescriptorSet = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX,
21104 eIndexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX,
21105 eVertexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX,
21106 ePushConstant = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX,
21107 eDrawIndexed = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX,
21108 eDraw = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX,
21109 eDispatch = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021110 };
21111
21112 struct IndirectCommandsTokenNVX
21113 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021114 IndirectCommandsTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::ePipeline, Buffer buffer_ = Buffer(), DeviceSize offset_ = 0 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021115 : tokenType( tokenType_ )
21116 , buffer( buffer_ )
21117 , offset( offset_ )
21118 {
21119 }
21120
21121 IndirectCommandsTokenNVX( VkIndirectCommandsTokenNVX const & rhs )
21122 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021123 memcpy( this, &rhs, sizeof( IndirectCommandsTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021124 }
21125
21126 IndirectCommandsTokenNVX& operator=( VkIndirectCommandsTokenNVX const & rhs )
21127 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021128 memcpy( this, &rhs, sizeof( IndirectCommandsTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021129 return *this;
21130 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021131 IndirectCommandsTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
21132 {
21133 tokenType = tokenType_;
21134 return *this;
21135 }
21136
21137 IndirectCommandsTokenNVX& setBuffer( Buffer buffer_ )
21138 {
21139 buffer = buffer_;
21140 return *this;
21141 }
21142
21143 IndirectCommandsTokenNVX& setOffset( DeviceSize offset_ )
21144 {
21145 offset = offset_;
21146 return *this;
21147 }
21148
21149 operator const VkIndirectCommandsTokenNVX&() const
21150 {
21151 return *reinterpret_cast<const VkIndirectCommandsTokenNVX*>(this);
21152 }
21153
21154 bool operator==( IndirectCommandsTokenNVX const& rhs ) const
21155 {
21156 return ( tokenType == rhs.tokenType )
21157 && ( buffer == rhs.buffer )
21158 && ( offset == rhs.offset );
21159 }
21160
21161 bool operator!=( IndirectCommandsTokenNVX const& rhs ) const
21162 {
21163 return !operator==( rhs );
21164 }
21165
21166 IndirectCommandsTokenTypeNVX tokenType;
21167 Buffer buffer;
21168 DeviceSize offset;
21169 };
21170 static_assert( sizeof( IndirectCommandsTokenNVX ) == sizeof( VkIndirectCommandsTokenNVX ), "struct and wrapper have different size!" );
21171
21172 struct IndirectCommandsLayoutTokenNVX
21173 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021174 IndirectCommandsLayoutTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::ePipeline, uint32_t bindingUnit_ = 0, uint32_t dynamicCount_ = 0, uint32_t divisor_ = 0 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021175 : tokenType( tokenType_ )
21176 , bindingUnit( bindingUnit_ )
21177 , dynamicCount( dynamicCount_ )
21178 , divisor( divisor_ )
21179 {
21180 }
21181
21182 IndirectCommandsLayoutTokenNVX( VkIndirectCommandsLayoutTokenNVX const & rhs )
21183 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021184 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021185 }
21186
21187 IndirectCommandsLayoutTokenNVX& operator=( VkIndirectCommandsLayoutTokenNVX const & rhs )
21188 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021189 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021190 return *this;
21191 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021192 IndirectCommandsLayoutTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
21193 {
21194 tokenType = tokenType_;
21195 return *this;
21196 }
21197
21198 IndirectCommandsLayoutTokenNVX& setBindingUnit( uint32_t bindingUnit_ )
21199 {
21200 bindingUnit = bindingUnit_;
21201 return *this;
21202 }
21203
21204 IndirectCommandsLayoutTokenNVX& setDynamicCount( uint32_t dynamicCount_ )
21205 {
21206 dynamicCount = dynamicCount_;
21207 return *this;
21208 }
21209
21210 IndirectCommandsLayoutTokenNVX& setDivisor( uint32_t divisor_ )
21211 {
21212 divisor = divisor_;
21213 return *this;
21214 }
21215
21216 operator const VkIndirectCommandsLayoutTokenNVX&() const
21217 {
21218 return *reinterpret_cast<const VkIndirectCommandsLayoutTokenNVX*>(this);
21219 }
21220
21221 bool operator==( IndirectCommandsLayoutTokenNVX const& rhs ) const
21222 {
21223 return ( tokenType == rhs.tokenType )
21224 && ( bindingUnit == rhs.bindingUnit )
21225 && ( dynamicCount == rhs.dynamicCount )
21226 && ( divisor == rhs.divisor );
21227 }
21228
21229 bool operator!=( IndirectCommandsLayoutTokenNVX const& rhs ) const
21230 {
21231 return !operator==( rhs );
21232 }
21233
21234 IndirectCommandsTokenTypeNVX tokenType;
21235 uint32_t bindingUnit;
21236 uint32_t dynamicCount;
21237 uint32_t divisor;
21238 };
21239 static_assert( sizeof( IndirectCommandsLayoutTokenNVX ) == sizeof( VkIndirectCommandsLayoutTokenNVX ), "struct and wrapper have different size!" );
21240
21241 struct IndirectCommandsLayoutCreateInfoNVX
21242 {
21243 IndirectCommandsLayoutCreateInfoNVX( PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics, IndirectCommandsLayoutUsageFlagsNVX flags_ = IndirectCommandsLayoutUsageFlagsNVX(), uint32_t tokenCount_ = 0, const IndirectCommandsLayoutTokenNVX* pTokens_ = nullptr )
21244 : sType( StructureType::eIndirectCommandsLayoutCreateInfoNVX )
21245 , pNext( nullptr )
21246 , pipelineBindPoint( pipelineBindPoint_ )
21247 , flags( flags_ )
21248 , tokenCount( tokenCount_ )
21249 , pTokens( pTokens_ )
21250 {
21251 }
21252
21253 IndirectCommandsLayoutCreateInfoNVX( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
21254 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021255 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021256 }
21257
21258 IndirectCommandsLayoutCreateInfoNVX& operator=( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
21259 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021260 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021261 return *this;
21262 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021263 IndirectCommandsLayoutCreateInfoNVX& setPNext( const void* pNext_ )
21264 {
21265 pNext = pNext_;
21266 return *this;
21267 }
21268
21269 IndirectCommandsLayoutCreateInfoNVX& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
21270 {
21271 pipelineBindPoint = pipelineBindPoint_;
21272 return *this;
21273 }
21274
21275 IndirectCommandsLayoutCreateInfoNVX& setFlags( IndirectCommandsLayoutUsageFlagsNVX flags_ )
21276 {
21277 flags = flags_;
21278 return *this;
21279 }
21280
21281 IndirectCommandsLayoutCreateInfoNVX& setTokenCount( uint32_t tokenCount_ )
21282 {
21283 tokenCount = tokenCount_;
21284 return *this;
21285 }
21286
21287 IndirectCommandsLayoutCreateInfoNVX& setPTokens( const IndirectCommandsLayoutTokenNVX* pTokens_ )
21288 {
21289 pTokens = pTokens_;
21290 return *this;
21291 }
21292
21293 operator const VkIndirectCommandsLayoutCreateInfoNVX&() const
21294 {
21295 return *reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>(this);
21296 }
21297
21298 bool operator==( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
21299 {
21300 return ( sType == rhs.sType )
21301 && ( pNext == rhs.pNext )
21302 && ( pipelineBindPoint == rhs.pipelineBindPoint )
21303 && ( flags == rhs.flags )
21304 && ( tokenCount == rhs.tokenCount )
21305 && ( pTokens == rhs.pTokens );
21306 }
21307
21308 bool operator!=( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
21309 {
21310 return !operator==( rhs );
21311 }
21312
21313 private:
21314 StructureType sType;
21315
21316 public:
21317 const void* pNext;
21318 PipelineBindPoint pipelineBindPoint;
21319 IndirectCommandsLayoutUsageFlagsNVX flags;
21320 uint32_t tokenCount;
21321 const IndirectCommandsLayoutTokenNVX* pTokens;
21322 };
21323 static_assert( sizeof( IndirectCommandsLayoutCreateInfoNVX ) == sizeof( VkIndirectCommandsLayoutCreateInfoNVX ), "struct and wrapper have different size!" );
21324
21325 enum class ObjectEntryTypeNVX
21326 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021327 eDescriptorSet = VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX,
21328 ePipeline = VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX,
21329 eIndexBuffer = VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX,
21330 eVertexBuffer = VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX,
21331 ePushConstant = VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021332 };
21333
21334 struct ObjectTableCreateInfoNVX
21335 {
21336 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 )
21337 : sType( StructureType::eObjectTableCreateInfoNVX )
21338 , pNext( nullptr )
21339 , objectCount( objectCount_ )
21340 , pObjectEntryTypes( pObjectEntryTypes_ )
21341 , pObjectEntryCounts( pObjectEntryCounts_ )
21342 , pObjectEntryUsageFlags( pObjectEntryUsageFlags_ )
21343 , maxUniformBuffersPerDescriptor( maxUniformBuffersPerDescriptor_ )
21344 , maxStorageBuffersPerDescriptor( maxStorageBuffersPerDescriptor_ )
21345 , maxStorageImagesPerDescriptor( maxStorageImagesPerDescriptor_ )
21346 , maxSampledImagesPerDescriptor( maxSampledImagesPerDescriptor_ )
21347 , maxPipelineLayouts( maxPipelineLayouts_ )
21348 {
21349 }
21350
21351 ObjectTableCreateInfoNVX( VkObjectTableCreateInfoNVX const & rhs )
21352 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021353 memcpy( this, &rhs, sizeof( ObjectTableCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021354 }
21355
21356 ObjectTableCreateInfoNVX& operator=( VkObjectTableCreateInfoNVX const & rhs )
21357 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021358 memcpy( this, &rhs, sizeof( ObjectTableCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021359 return *this;
21360 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021361 ObjectTableCreateInfoNVX& setPNext( const void* pNext_ )
21362 {
21363 pNext = pNext_;
21364 return *this;
21365 }
21366
21367 ObjectTableCreateInfoNVX& setObjectCount( uint32_t objectCount_ )
21368 {
21369 objectCount = objectCount_;
21370 return *this;
21371 }
21372
21373 ObjectTableCreateInfoNVX& setPObjectEntryTypes( const ObjectEntryTypeNVX* pObjectEntryTypes_ )
21374 {
21375 pObjectEntryTypes = pObjectEntryTypes_;
21376 return *this;
21377 }
21378
21379 ObjectTableCreateInfoNVX& setPObjectEntryCounts( const uint32_t* pObjectEntryCounts_ )
21380 {
21381 pObjectEntryCounts = pObjectEntryCounts_;
21382 return *this;
21383 }
21384
21385 ObjectTableCreateInfoNVX& setPObjectEntryUsageFlags( const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags_ )
21386 {
21387 pObjectEntryUsageFlags = pObjectEntryUsageFlags_;
21388 return *this;
21389 }
21390
21391 ObjectTableCreateInfoNVX& setMaxUniformBuffersPerDescriptor( uint32_t maxUniformBuffersPerDescriptor_ )
21392 {
21393 maxUniformBuffersPerDescriptor = maxUniformBuffersPerDescriptor_;
21394 return *this;
21395 }
21396
21397 ObjectTableCreateInfoNVX& setMaxStorageBuffersPerDescriptor( uint32_t maxStorageBuffersPerDescriptor_ )
21398 {
21399 maxStorageBuffersPerDescriptor = maxStorageBuffersPerDescriptor_;
21400 return *this;
21401 }
21402
21403 ObjectTableCreateInfoNVX& setMaxStorageImagesPerDescriptor( uint32_t maxStorageImagesPerDescriptor_ )
21404 {
21405 maxStorageImagesPerDescriptor = maxStorageImagesPerDescriptor_;
21406 return *this;
21407 }
21408
21409 ObjectTableCreateInfoNVX& setMaxSampledImagesPerDescriptor( uint32_t maxSampledImagesPerDescriptor_ )
21410 {
21411 maxSampledImagesPerDescriptor = maxSampledImagesPerDescriptor_;
21412 return *this;
21413 }
21414
21415 ObjectTableCreateInfoNVX& setMaxPipelineLayouts( uint32_t maxPipelineLayouts_ )
21416 {
21417 maxPipelineLayouts = maxPipelineLayouts_;
21418 return *this;
21419 }
21420
21421 operator const VkObjectTableCreateInfoNVX&() const
21422 {
21423 return *reinterpret_cast<const VkObjectTableCreateInfoNVX*>(this);
21424 }
21425
21426 bool operator==( ObjectTableCreateInfoNVX const& rhs ) const
21427 {
21428 return ( sType == rhs.sType )
21429 && ( pNext == rhs.pNext )
21430 && ( objectCount == rhs.objectCount )
21431 && ( pObjectEntryTypes == rhs.pObjectEntryTypes )
21432 && ( pObjectEntryCounts == rhs.pObjectEntryCounts )
21433 && ( pObjectEntryUsageFlags == rhs.pObjectEntryUsageFlags )
21434 && ( maxUniformBuffersPerDescriptor == rhs.maxUniformBuffersPerDescriptor )
21435 && ( maxStorageBuffersPerDescriptor == rhs.maxStorageBuffersPerDescriptor )
21436 && ( maxStorageImagesPerDescriptor == rhs.maxStorageImagesPerDescriptor )
21437 && ( maxSampledImagesPerDescriptor == rhs.maxSampledImagesPerDescriptor )
21438 && ( maxPipelineLayouts == rhs.maxPipelineLayouts );
21439 }
21440
21441 bool operator!=( ObjectTableCreateInfoNVX const& rhs ) const
21442 {
21443 return !operator==( rhs );
21444 }
21445
21446 private:
21447 StructureType sType;
21448
21449 public:
21450 const void* pNext;
21451 uint32_t objectCount;
21452 const ObjectEntryTypeNVX* pObjectEntryTypes;
21453 const uint32_t* pObjectEntryCounts;
21454 const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags;
21455 uint32_t maxUniformBuffersPerDescriptor;
21456 uint32_t maxStorageBuffersPerDescriptor;
21457 uint32_t maxStorageImagesPerDescriptor;
21458 uint32_t maxSampledImagesPerDescriptor;
21459 uint32_t maxPipelineLayouts;
21460 };
21461 static_assert( sizeof( ObjectTableCreateInfoNVX ) == sizeof( VkObjectTableCreateInfoNVX ), "struct and wrapper have different size!" );
21462
21463 struct ObjectTableEntryNVX
21464 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021465 ObjectTableEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021466 : type( type_ )
21467 , flags( flags_ )
21468 {
21469 }
21470
21471 ObjectTableEntryNVX( VkObjectTableEntryNVX const & rhs )
21472 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021473 memcpy( this, &rhs, sizeof( ObjectTableEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021474 }
21475
21476 ObjectTableEntryNVX& operator=( VkObjectTableEntryNVX const & rhs )
21477 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021478 memcpy( this, &rhs, sizeof( ObjectTableEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021479 return *this;
21480 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021481 ObjectTableEntryNVX& setType( ObjectEntryTypeNVX type_ )
21482 {
21483 type = type_;
21484 return *this;
21485 }
21486
21487 ObjectTableEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
21488 {
21489 flags = flags_;
21490 return *this;
21491 }
21492
21493 operator const VkObjectTableEntryNVX&() const
21494 {
21495 return *reinterpret_cast<const VkObjectTableEntryNVX*>(this);
21496 }
21497
21498 bool operator==( ObjectTableEntryNVX const& rhs ) const
21499 {
21500 return ( type == rhs.type )
21501 && ( flags == rhs.flags );
21502 }
21503
21504 bool operator!=( ObjectTableEntryNVX const& rhs ) const
21505 {
21506 return !operator==( rhs );
21507 }
21508
21509 ObjectEntryTypeNVX type;
21510 ObjectEntryUsageFlagsNVX flags;
21511 };
21512 static_assert( sizeof( ObjectTableEntryNVX ) == sizeof( VkObjectTableEntryNVX ), "struct and wrapper have different size!" );
21513
21514 struct ObjectTablePipelineEntryNVX
21515 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021516 ObjectTablePipelineEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Pipeline pipeline_ = Pipeline() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021517 : type( type_ )
21518 , flags( flags_ )
21519 , pipeline( pipeline_ )
21520 {
21521 }
21522
21523 ObjectTablePipelineEntryNVX( VkObjectTablePipelineEntryNVX const & rhs )
21524 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021525 memcpy( this, &rhs, sizeof( ObjectTablePipelineEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021526 }
21527
21528 ObjectTablePipelineEntryNVX& operator=( VkObjectTablePipelineEntryNVX const & rhs )
21529 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021530 memcpy( this, &rhs, sizeof( ObjectTablePipelineEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021531 return *this;
21532 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021533 ObjectTablePipelineEntryNVX& setType( ObjectEntryTypeNVX type_ )
21534 {
21535 type = type_;
21536 return *this;
21537 }
21538
21539 ObjectTablePipelineEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
21540 {
21541 flags = flags_;
21542 return *this;
21543 }
21544
21545 ObjectTablePipelineEntryNVX& setPipeline( Pipeline pipeline_ )
21546 {
21547 pipeline = pipeline_;
21548 return *this;
21549 }
21550
21551 operator const VkObjectTablePipelineEntryNVX&() const
21552 {
21553 return *reinterpret_cast<const VkObjectTablePipelineEntryNVX*>(this);
21554 }
21555
21556 bool operator==( ObjectTablePipelineEntryNVX const& rhs ) const
21557 {
21558 return ( type == rhs.type )
21559 && ( flags == rhs.flags )
21560 && ( pipeline == rhs.pipeline );
21561 }
21562
21563 bool operator!=( ObjectTablePipelineEntryNVX const& rhs ) const
21564 {
21565 return !operator==( rhs );
21566 }
21567
21568 ObjectEntryTypeNVX type;
21569 ObjectEntryUsageFlagsNVX flags;
21570 Pipeline pipeline;
21571 };
21572 static_assert( sizeof( ObjectTablePipelineEntryNVX ) == sizeof( VkObjectTablePipelineEntryNVX ), "struct and wrapper have different size!" );
21573
21574 struct ObjectTableDescriptorSetEntryNVX
21575 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021576 ObjectTableDescriptorSetEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), PipelineLayout pipelineLayout_ = PipelineLayout(), DescriptorSet descriptorSet_ = DescriptorSet() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021577 : type( type_ )
21578 , flags( flags_ )
21579 , pipelineLayout( pipelineLayout_ )
21580 , descriptorSet( descriptorSet_ )
21581 {
21582 }
21583
21584 ObjectTableDescriptorSetEntryNVX( VkObjectTableDescriptorSetEntryNVX const & rhs )
21585 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021586 memcpy( this, &rhs, sizeof( ObjectTableDescriptorSetEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021587 }
21588
21589 ObjectTableDescriptorSetEntryNVX& operator=( VkObjectTableDescriptorSetEntryNVX const & rhs )
21590 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021591 memcpy( this, &rhs, sizeof( ObjectTableDescriptorSetEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021592 return *this;
21593 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021594 ObjectTableDescriptorSetEntryNVX& setType( ObjectEntryTypeNVX type_ )
21595 {
21596 type = type_;
21597 return *this;
21598 }
21599
21600 ObjectTableDescriptorSetEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
21601 {
21602 flags = flags_;
21603 return *this;
21604 }
21605
21606 ObjectTableDescriptorSetEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
21607 {
21608 pipelineLayout = pipelineLayout_;
21609 return *this;
21610 }
21611
21612 ObjectTableDescriptorSetEntryNVX& setDescriptorSet( DescriptorSet descriptorSet_ )
21613 {
21614 descriptorSet = descriptorSet_;
21615 return *this;
21616 }
21617
21618 operator const VkObjectTableDescriptorSetEntryNVX&() const
21619 {
21620 return *reinterpret_cast<const VkObjectTableDescriptorSetEntryNVX*>(this);
21621 }
21622
21623 bool operator==( ObjectTableDescriptorSetEntryNVX const& rhs ) const
21624 {
21625 return ( type == rhs.type )
21626 && ( flags == rhs.flags )
21627 && ( pipelineLayout == rhs.pipelineLayout )
21628 && ( descriptorSet == rhs.descriptorSet );
21629 }
21630
21631 bool operator!=( ObjectTableDescriptorSetEntryNVX const& rhs ) const
21632 {
21633 return !operator==( rhs );
21634 }
21635
21636 ObjectEntryTypeNVX type;
21637 ObjectEntryUsageFlagsNVX flags;
21638 PipelineLayout pipelineLayout;
21639 DescriptorSet descriptorSet;
21640 };
21641 static_assert( sizeof( ObjectTableDescriptorSetEntryNVX ) == sizeof( VkObjectTableDescriptorSetEntryNVX ), "struct and wrapper have different size!" );
21642
21643 struct ObjectTableVertexBufferEntryNVX
21644 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021645 ObjectTableVertexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Buffer buffer_ = Buffer() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021646 : type( type_ )
21647 , flags( flags_ )
21648 , buffer( buffer_ )
21649 {
21650 }
21651
21652 ObjectTableVertexBufferEntryNVX( VkObjectTableVertexBufferEntryNVX const & rhs )
21653 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021654 memcpy( this, &rhs, sizeof( ObjectTableVertexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021655 }
21656
21657 ObjectTableVertexBufferEntryNVX& operator=( VkObjectTableVertexBufferEntryNVX const & rhs )
21658 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021659 memcpy( this, &rhs, sizeof( ObjectTableVertexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021660 return *this;
21661 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021662 ObjectTableVertexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
21663 {
21664 type = type_;
21665 return *this;
21666 }
21667
21668 ObjectTableVertexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
21669 {
21670 flags = flags_;
21671 return *this;
21672 }
21673
21674 ObjectTableVertexBufferEntryNVX& setBuffer( Buffer buffer_ )
21675 {
21676 buffer = buffer_;
21677 return *this;
21678 }
21679
21680 operator const VkObjectTableVertexBufferEntryNVX&() const
21681 {
21682 return *reinterpret_cast<const VkObjectTableVertexBufferEntryNVX*>(this);
21683 }
21684
21685 bool operator==( ObjectTableVertexBufferEntryNVX const& rhs ) const
21686 {
21687 return ( type == rhs.type )
21688 && ( flags == rhs.flags )
21689 && ( buffer == rhs.buffer );
21690 }
21691
21692 bool operator!=( ObjectTableVertexBufferEntryNVX const& rhs ) const
21693 {
21694 return !operator==( rhs );
21695 }
21696
21697 ObjectEntryTypeNVX type;
21698 ObjectEntryUsageFlagsNVX flags;
21699 Buffer buffer;
21700 };
21701 static_assert( sizeof( ObjectTableVertexBufferEntryNVX ) == sizeof( VkObjectTableVertexBufferEntryNVX ), "struct and wrapper have different size!" );
21702
21703 struct ObjectTableIndexBufferEntryNVX
21704 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021705 ObjectTableIndexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Buffer buffer_ = Buffer(), IndexType indexType_ = IndexType::eUint16 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021706 : type( type_ )
21707 , flags( flags_ )
21708 , buffer( buffer_ )
Mark Young39389872017-01-19 21:10:49 -070021709 , indexType( indexType_ )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021710 {
21711 }
21712
21713 ObjectTableIndexBufferEntryNVX( VkObjectTableIndexBufferEntryNVX const & rhs )
21714 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021715 memcpy( this, &rhs, sizeof( ObjectTableIndexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021716 }
21717
21718 ObjectTableIndexBufferEntryNVX& operator=( VkObjectTableIndexBufferEntryNVX const & rhs )
21719 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021720 memcpy( this, &rhs, sizeof( ObjectTableIndexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021721 return *this;
21722 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021723 ObjectTableIndexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
21724 {
21725 type = type_;
21726 return *this;
21727 }
21728
21729 ObjectTableIndexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
21730 {
21731 flags = flags_;
21732 return *this;
21733 }
21734
21735 ObjectTableIndexBufferEntryNVX& setBuffer( Buffer buffer_ )
21736 {
21737 buffer = buffer_;
21738 return *this;
21739 }
21740
Mark Young39389872017-01-19 21:10:49 -070021741 ObjectTableIndexBufferEntryNVX& setIndexType( IndexType indexType_ )
21742 {
21743 indexType = indexType_;
21744 return *this;
21745 }
21746
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021747 operator const VkObjectTableIndexBufferEntryNVX&() const
21748 {
21749 return *reinterpret_cast<const VkObjectTableIndexBufferEntryNVX*>(this);
21750 }
21751
21752 bool operator==( ObjectTableIndexBufferEntryNVX const& rhs ) const
21753 {
21754 return ( type == rhs.type )
21755 && ( flags == rhs.flags )
Mark Young39389872017-01-19 21:10:49 -070021756 && ( buffer == rhs.buffer )
21757 && ( indexType == rhs.indexType );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021758 }
21759
21760 bool operator!=( ObjectTableIndexBufferEntryNVX const& rhs ) const
21761 {
21762 return !operator==( rhs );
21763 }
21764
21765 ObjectEntryTypeNVX type;
21766 ObjectEntryUsageFlagsNVX flags;
21767 Buffer buffer;
Mark Young39389872017-01-19 21:10:49 -070021768 IndexType indexType;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021769 };
21770 static_assert( sizeof( ObjectTableIndexBufferEntryNVX ) == sizeof( VkObjectTableIndexBufferEntryNVX ), "struct and wrapper have different size!" );
21771
21772 struct ObjectTablePushConstantEntryNVX
21773 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021774 ObjectTablePushConstantEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), PipelineLayout pipelineLayout_ = PipelineLayout(), ShaderStageFlags stageFlags_ = ShaderStageFlags() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021775 : type( type_ )
21776 , flags( flags_ )
21777 , pipelineLayout( pipelineLayout_ )
21778 , stageFlags( stageFlags_ )
21779 {
21780 }
21781
21782 ObjectTablePushConstantEntryNVX( VkObjectTablePushConstantEntryNVX const & rhs )
21783 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021784 memcpy( this, &rhs, sizeof( ObjectTablePushConstantEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021785 }
21786
21787 ObjectTablePushConstantEntryNVX& operator=( VkObjectTablePushConstantEntryNVX const & rhs )
21788 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021789 memcpy( this, &rhs, sizeof( ObjectTablePushConstantEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021790 return *this;
21791 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021792 ObjectTablePushConstantEntryNVX& setType( ObjectEntryTypeNVX type_ )
21793 {
21794 type = type_;
21795 return *this;
21796 }
21797
21798 ObjectTablePushConstantEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
21799 {
21800 flags = flags_;
21801 return *this;
21802 }
21803
21804 ObjectTablePushConstantEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
21805 {
21806 pipelineLayout = pipelineLayout_;
21807 return *this;
21808 }
21809
21810 ObjectTablePushConstantEntryNVX& setStageFlags( ShaderStageFlags stageFlags_ )
21811 {
21812 stageFlags = stageFlags_;
21813 return *this;
21814 }
21815
21816 operator const VkObjectTablePushConstantEntryNVX&() const
21817 {
21818 return *reinterpret_cast<const VkObjectTablePushConstantEntryNVX*>(this);
21819 }
21820
21821 bool operator==( ObjectTablePushConstantEntryNVX const& rhs ) const
21822 {
21823 return ( type == rhs.type )
21824 && ( flags == rhs.flags )
21825 && ( pipelineLayout == rhs.pipelineLayout )
21826 && ( stageFlags == rhs.stageFlags );
21827 }
21828
21829 bool operator!=( ObjectTablePushConstantEntryNVX const& rhs ) const
21830 {
21831 return !operator==( rhs );
21832 }
21833
21834 ObjectEntryTypeNVX type;
21835 ObjectEntryUsageFlagsNVX flags;
21836 PipelineLayout pipelineLayout;
21837 ShaderStageFlags stageFlags;
21838 };
21839 static_assert( sizeof( ObjectTablePushConstantEntryNVX ) == sizeof( VkObjectTablePushConstantEntryNVX ), "struct and wrapper have different size!" );
21840
Mark Young0f183a82017-02-28 09:58:04 -070021841 enum class DescriptorSetLayoutCreateFlagBits
21842 {
21843 ePushDescriptorKHR = VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
21844 };
21845
21846 using DescriptorSetLayoutCreateFlags = Flags<DescriptorSetLayoutCreateFlagBits, VkDescriptorSetLayoutCreateFlags>;
21847
21848 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator|( DescriptorSetLayoutCreateFlagBits bit0, DescriptorSetLayoutCreateFlagBits bit1 )
21849 {
21850 return DescriptorSetLayoutCreateFlags( bit0 ) | bit1;
21851 }
21852
21853 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator~( DescriptorSetLayoutCreateFlagBits bits )
21854 {
21855 return ~( DescriptorSetLayoutCreateFlags( bits ) );
21856 }
21857
21858 template <> struct FlagTraits<DescriptorSetLayoutCreateFlagBits>
21859 {
21860 enum
21861 {
21862 allFlags = VkFlags(DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR)
21863 };
21864 };
21865
21866 struct DescriptorSetLayoutCreateInfo
21867 {
21868 DescriptorSetLayoutCreateInfo( DescriptorSetLayoutCreateFlags flags_ = DescriptorSetLayoutCreateFlags(), uint32_t bindingCount_ = 0, const DescriptorSetLayoutBinding* pBindings_ = nullptr )
21869 : sType( StructureType::eDescriptorSetLayoutCreateInfo )
21870 , pNext( nullptr )
21871 , flags( flags_ )
21872 , bindingCount( bindingCount_ )
21873 , pBindings( pBindings_ )
21874 {
21875 }
21876
21877 DescriptorSetLayoutCreateInfo( VkDescriptorSetLayoutCreateInfo const & rhs )
21878 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021879 memcpy( this, &rhs, sizeof( DescriptorSetLayoutCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070021880 }
21881
21882 DescriptorSetLayoutCreateInfo& operator=( VkDescriptorSetLayoutCreateInfo const & rhs )
21883 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021884 memcpy( this, &rhs, sizeof( DescriptorSetLayoutCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070021885 return *this;
21886 }
Mark Young0f183a82017-02-28 09:58:04 -070021887 DescriptorSetLayoutCreateInfo& setPNext( const void* pNext_ )
21888 {
21889 pNext = pNext_;
21890 return *this;
21891 }
21892
21893 DescriptorSetLayoutCreateInfo& setFlags( DescriptorSetLayoutCreateFlags flags_ )
21894 {
21895 flags = flags_;
21896 return *this;
21897 }
21898
21899 DescriptorSetLayoutCreateInfo& setBindingCount( uint32_t bindingCount_ )
21900 {
21901 bindingCount = bindingCount_;
21902 return *this;
21903 }
21904
21905 DescriptorSetLayoutCreateInfo& setPBindings( const DescriptorSetLayoutBinding* pBindings_ )
21906 {
21907 pBindings = pBindings_;
21908 return *this;
21909 }
21910
21911 operator const VkDescriptorSetLayoutCreateInfo&() const
21912 {
21913 return *reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>(this);
21914 }
21915
21916 bool operator==( DescriptorSetLayoutCreateInfo const& rhs ) const
21917 {
21918 return ( sType == rhs.sType )
21919 && ( pNext == rhs.pNext )
21920 && ( flags == rhs.flags )
21921 && ( bindingCount == rhs.bindingCount )
21922 && ( pBindings == rhs.pBindings );
21923 }
21924
21925 bool operator!=( DescriptorSetLayoutCreateInfo const& rhs ) const
21926 {
21927 return !operator==( rhs );
21928 }
21929
21930 private:
21931 StructureType sType;
21932
21933 public:
21934 const void* pNext;
21935 DescriptorSetLayoutCreateFlags flags;
21936 uint32_t bindingCount;
21937 const DescriptorSetLayoutBinding* pBindings;
21938 };
21939 static_assert( sizeof( DescriptorSetLayoutCreateInfo ) == sizeof( VkDescriptorSetLayoutCreateInfo ), "struct and wrapper have different size!" );
21940
Mark Youngabc2d6e2017-07-07 07:59:56 -060021941 enum class ExternalMemoryHandleTypeFlagBitsKHR
Mark Young0f183a82017-02-28 09:58:04 -070021942 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021943 eOpaqueFd = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
21944 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
21945 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
21946 eD3D11Texture = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR,
21947 eD3D11TextureKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR,
21948 eD3D12Heap = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR,
21949 eD3D12Resource = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR
Mark Young0f183a82017-02-28 09:58:04 -070021950 };
21951
Mark Youngabc2d6e2017-07-07 07:59:56 -060021952 using ExternalMemoryHandleTypeFlagsKHR = Flags<ExternalMemoryHandleTypeFlagBitsKHR, VkExternalMemoryHandleTypeFlagsKHR>;
Mark Young0f183a82017-02-28 09:58:04 -070021953
Mark Youngabc2d6e2017-07-07 07:59:56 -060021954 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsKHR operator|( ExternalMemoryHandleTypeFlagBitsKHR bit0, ExternalMemoryHandleTypeFlagBitsKHR bit1 )
Mark Young0f183a82017-02-28 09:58:04 -070021955 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021956 return ExternalMemoryHandleTypeFlagsKHR( bit0 ) | bit1;
Mark Young0f183a82017-02-28 09:58:04 -070021957 }
21958
Mark Youngabc2d6e2017-07-07 07:59:56 -060021959 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsKHR operator~( ExternalMemoryHandleTypeFlagBitsKHR bits )
Mark Young0f183a82017-02-28 09:58:04 -070021960 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021961 return ~( ExternalMemoryHandleTypeFlagsKHR( bits ) );
Mark Young0f183a82017-02-28 09:58:04 -070021962 }
21963
Mark Youngabc2d6e2017-07-07 07:59:56 -060021964 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsKHR>
Mark Young0f183a82017-02-28 09:58:04 -070021965 {
21966 enum
21967 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021968 allFlags = VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eD3D11Texture) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eD3D11TextureKmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Heap) | VkFlags(ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Resource)
Mark Young0f183a82017-02-28 09:58:04 -070021969 };
21970 };
21971
Mark Youngabc2d6e2017-07-07 07:59:56 -060021972 struct PhysicalDeviceExternalImageFormatInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070021973 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021974 PhysicalDeviceExternalImageFormatInfoKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd )
21975 : sType( StructureType::ePhysicalDeviceExternalImageFormatInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070021976 , pNext( nullptr )
21977 , handleType( handleType_ )
21978 {
21979 }
21980
Mark Youngabc2d6e2017-07-07 07:59:56 -060021981 PhysicalDeviceExternalImageFormatInfoKHR( VkPhysicalDeviceExternalImageFormatInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021982 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021983 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalImageFormatInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021984 }
21985
Mark Youngabc2d6e2017-07-07 07:59:56 -060021986 PhysicalDeviceExternalImageFormatInfoKHR& operator=( VkPhysicalDeviceExternalImageFormatInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021987 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021988 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalImageFormatInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021989 return *this;
21990 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060021991 PhysicalDeviceExternalImageFormatInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070021992 {
21993 pNext = pNext_;
21994 return *this;
21995 }
21996
Mark Youngabc2d6e2017-07-07 07:59:56 -060021997 PhysicalDeviceExternalImageFormatInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070021998 {
21999 handleType = handleType_;
22000 return *this;
22001 }
22002
Mark Youngabc2d6e2017-07-07 07:59:56 -060022003 operator const VkPhysicalDeviceExternalImageFormatInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022004 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022005 return *reinterpret_cast<const VkPhysicalDeviceExternalImageFormatInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022006 }
22007
Mark Youngabc2d6e2017-07-07 07:59:56 -060022008 bool operator==( PhysicalDeviceExternalImageFormatInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022009 {
22010 return ( sType == rhs.sType )
22011 && ( pNext == rhs.pNext )
22012 && ( handleType == rhs.handleType );
22013 }
22014
Mark Youngabc2d6e2017-07-07 07:59:56 -060022015 bool operator!=( PhysicalDeviceExternalImageFormatInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022016 {
22017 return !operator==( rhs );
22018 }
22019
22020 private:
22021 StructureType sType;
22022
22023 public:
22024 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022025 ExternalMemoryHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022026 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022027 static_assert( sizeof( PhysicalDeviceExternalImageFormatInfoKHR ) == sizeof( VkPhysicalDeviceExternalImageFormatInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022028
Mark Youngabc2d6e2017-07-07 07:59:56 -060022029 struct PhysicalDeviceExternalBufferInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022030 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022031 PhysicalDeviceExternalBufferInfoKHR( BufferCreateFlags flags_ = BufferCreateFlags(), BufferUsageFlags usage_ = BufferUsageFlags(), ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd )
22032 : sType( StructureType::ePhysicalDeviceExternalBufferInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022033 , pNext( nullptr )
22034 , flags( flags_ )
22035 , usage( usage_ )
22036 , handleType( handleType_ )
22037 {
22038 }
22039
Mark Youngabc2d6e2017-07-07 07:59:56 -060022040 PhysicalDeviceExternalBufferInfoKHR( VkPhysicalDeviceExternalBufferInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022041 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022042 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalBufferInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022043 }
22044
Mark Youngabc2d6e2017-07-07 07:59:56 -060022045 PhysicalDeviceExternalBufferInfoKHR& operator=( VkPhysicalDeviceExternalBufferInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022046 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022047 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalBufferInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022048 return *this;
22049 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022050 PhysicalDeviceExternalBufferInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022051 {
22052 pNext = pNext_;
22053 return *this;
22054 }
22055
Mark Youngabc2d6e2017-07-07 07:59:56 -060022056 PhysicalDeviceExternalBufferInfoKHR& setFlags( BufferCreateFlags flags_ )
Mark Young0f183a82017-02-28 09:58:04 -070022057 {
22058 flags = flags_;
22059 return *this;
22060 }
22061
Mark Youngabc2d6e2017-07-07 07:59:56 -060022062 PhysicalDeviceExternalBufferInfoKHR& setUsage( BufferUsageFlags usage_ )
Mark Young0f183a82017-02-28 09:58:04 -070022063 {
22064 usage = usage_;
22065 return *this;
22066 }
22067
Mark Youngabc2d6e2017-07-07 07:59:56 -060022068 PhysicalDeviceExternalBufferInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022069 {
22070 handleType = handleType_;
22071 return *this;
22072 }
22073
Mark Youngabc2d6e2017-07-07 07:59:56 -060022074 operator const VkPhysicalDeviceExternalBufferInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022075 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022076 return *reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022077 }
22078
Mark Youngabc2d6e2017-07-07 07:59:56 -060022079 bool operator==( PhysicalDeviceExternalBufferInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022080 {
22081 return ( sType == rhs.sType )
22082 && ( pNext == rhs.pNext )
22083 && ( flags == rhs.flags )
22084 && ( usage == rhs.usage )
22085 && ( handleType == rhs.handleType );
22086 }
22087
Mark Youngabc2d6e2017-07-07 07:59:56 -060022088 bool operator!=( PhysicalDeviceExternalBufferInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022089 {
22090 return !operator==( rhs );
22091 }
22092
22093 private:
22094 StructureType sType;
22095
22096 public:
22097 const void* pNext;
22098 BufferCreateFlags flags;
22099 BufferUsageFlags usage;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022100 ExternalMemoryHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022101 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022102 static_assert( sizeof( PhysicalDeviceExternalBufferInfoKHR ) == sizeof( VkPhysicalDeviceExternalBufferInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022103
Mark Youngabc2d6e2017-07-07 07:59:56 -060022104 struct ExternalMemoryImageCreateInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022105 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022106 ExternalMemoryImageCreateInfoKHR( ExternalMemoryHandleTypeFlagsKHR handleTypes_ = ExternalMemoryHandleTypeFlagsKHR() )
22107 : sType( StructureType::eExternalMemoryImageCreateInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022108 , pNext( nullptr )
22109 , handleTypes( handleTypes_ )
22110 {
22111 }
22112
Mark Youngabc2d6e2017-07-07 07:59:56 -060022113 ExternalMemoryImageCreateInfoKHR( VkExternalMemoryImageCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022114 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022115 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022116 }
22117
Mark Youngabc2d6e2017-07-07 07:59:56 -060022118 ExternalMemoryImageCreateInfoKHR& operator=( VkExternalMemoryImageCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022119 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022120 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022121 return *this;
22122 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022123 ExternalMemoryImageCreateInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022124 {
22125 pNext = pNext_;
22126 return *this;
22127 }
22128
Mark Youngabc2d6e2017-07-07 07:59:56 -060022129 ExternalMemoryImageCreateInfoKHR& setHandleTypes( ExternalMemoryHandleTypeFlagsKHR handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070022130 {
22131 handleTypes = handleTypes_;
22132 return *this;
22133 }
22134
Mark Youngabc2d6e2017-07-07 07:59:56 -060022135 operator const VkExternalMemoryImageCreateInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022136 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022137 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022138 }
22139
Mark Youngabc2d6e2017-07-07 07:59:56 -060022140 bool operator==( ExternalMemoryImageCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022141 {
22142 return ( sType == rhs.sType )
22143 && ( pNext == rhs.pNext )
22144 && ( handleTypes == rhs.handleTypes );
22145 }
22146
Mark Youngabc2d6e2017-07-07 07:59:56 -060022147 bool operator!=( ExternalMemoryImageCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022148 {
22149 return !operator==( rhs );
22150 }
22151
22152 private:
22153 StructureType sType;
22154
22155 public:
22156 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022157 ExternalMemoryHandleTypeFlagsKHR handleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070022158 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022159 static_assert( sizeof( ExternalMemoryImageCreateInfoKHR ) == sizeof( VkExternalMemoryImageCreateInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022160
Mark Youngabc2d6e2017-07-07 07:59:56 -060022161 struct ExternalMemoryBufferCreateInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022162 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022163 ExternalMemoryBufferCreateInfoKHR( ExternalMemoryHandleTypeFlagsKHR handleTypes_ = ExternalMemoryHandleTypeFlagsKHR() )
22164 : sType( StructureType::eExternalMemoryBufferCreateInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022165 , pNext( nullptr )
22166 , handleTypes( handleTypes_ )
22167 {
22168 }
22169
Mark Youngabc2d6e2017-07-07 07:59:56 -060022170 ExternalMemoryBufferCreateInfoKHR( VkExternalMemoryBufferCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022171 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022172 memcpy( this, &rhs, sizeof( ExternalMemoryBufferCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022173 }
22174
Mark Youngabc2d6e2017-07-07 07:59:56 -060022175 ExternalMemoryBufferCreateInfoKHR& operator=( VkExternalMemoryBufferCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022176 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022177 memcpy( this, &rhs, sizeof( ExternalMemoryBufferCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022178 return *this;
22179 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022180 ExternalMemoryBufferCreateInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022181 {
22182 pNext = pNext_;
22183 return *this;
22184 }
22185
Mark Youngabc2d6e2017-07-07 07:59:56 -060022186 ExternalMemoryBufferCreateInfoKHR& setHandleTypes( ExternalMemoryHandleTypeFlagsKHR handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070022187 {
22188 handleTypes = handleTypes_;
22189 return *this;
22190 }
22191
Mark Youngabc2d6e2017-07-07 07:59:56 -060022192 operator const VkExternalMemoryBufferCreateInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022193 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022194 return *reinterpret_cast<const VkExternalMemoryBufferCreateInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022195 }
22196
Mark Youngabc2d6e2017-07-07 07:59:56 -060022197 bool operator==( ExternalMemoryBufferCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022198 {
22199 return ( sType == rhs.sType )
22200 && ( pNext == rhs.pNext )
22201 && ( handleTypes == rhs.handleTypes );
22202 }
22203
Mark Youngabc2d6e2017-07-07 07:59:56 -060022204 bool operator!=( ExternalMemoryBufferCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022205 {
22206 return !operator==( rhs );
22207 }
22208
22209 private:
22210 StructureType sType;
22211
22212 public:
22213 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022214 ExternalMemoryHandleTypeFlagsKHR handleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070022215 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022216 static_assert( sizeof( ExternalMemoryBufferCreateInfoKHR ) == sizeof( VkExternalMemoryBufferCreateInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022217
Mark Youngabc2d6e2017-07-07 07:59:56 -060022218 struct ExportMemoryAllocateInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022219 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022220 ExportMemoryAllocateInfoKHR( ExternalMemoryHandleTypeFlagsKHR handleTypes_ = ExternalMemoryHandleTypeFlagsKHR() )
22221 : sType( StructureType::eExportMemoryAllocateInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022222 , pNext( nullptr )
22223 , handleTypes( handleTypes_ )
22224 {
22225 }
22226
Mark Youngabc2d6e2017-07-07 07:59:56 -060022227 ExportMemoryAllocateInfoKHR( VkExportMemoryAllocateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022228 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022229 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022230 }
22231
Mark Youngabc2d6e2017-07-07 07:59:56 -060022232 ExportMemoryAllocateInfoKHR& operator=( VkExportMemoryAllocateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022233 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022234 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022235 return *this;
22236 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022237 ExportMemoryAllocateInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022238 {
22239 pNext = pNext_;
22240 return *this;
22241 }
22242
Mark Youngabc2d6e2017-07-07 07:59:56 -060022243 ExportMemoryAllocateInfoKHR& setHandleTypes( ExternalMemoryHandleTypeFlagsKHR handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070022244 {
22245 handleTypes = handleTypes_;
22246 return *this;
22247 }
22248
Mark Youngabc2d6e2017-07-07 07:59:56 -060022249 operator const VkExportMemoryAllocateInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022250 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022251 return *reinterpret_cast<const VkExportMemoryAllocateInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022252 }
22253
Mark Youngabc2d6e2017-07-07 07:59:56 -060022254 bool operator==( ExportMemoryAllocateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022255 {
22256 return ( sType == rhs.sType )
22257 && ( pNext == rhs.pNext )
22258 && ( handleTypes == rhs.handleTypes );
22259 }
22260
Mark Youngabc2d6e2017-07-07 07:59:56 -060022261 bool operator!=( ExportMemoryAllocateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022262 {
22263 return !operator==( rhs );
22264 }
22265
22266 private:
22267 StructureType sType;
22268
22269 public:
22270 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022271 ExternalMemoryHandleTypeFlagsKHR handleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070022272 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022273 static_assert( sizeof( ExportMemoryAllocateInfoKHR ) == sizeof( VkExportMemoryAllocateInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022274
Mark Youngabc2d6e2017-07-07 07:59:56 -060022275#ifdef VK_USE_PLATFORM_WIN32_KHR
22276 struct ImportMemoryWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022277 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022278 ImportMemoryWin32HandleInfoKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd, HANDLE handle_ = 0, LPCWSTR name_ = 0 )
22279 : sType( StructureType::eImportMemoryWin32HandleInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022280 , pNext( nullptr )
22281 , handleType( handleType_ )
22282 , handle( handle_ )
Mark Youngabc2d6e2017-07-07 07:59:56 -060022283 , name( name_ )
Mark Young0f183a82017-02-28 09:58:04 -070022284 {
22285 }
22286
Mark Youngabc2d6e2017-07-07 07:59:56 -060022287 ImportMemoryWin32HandleInfoKHR( VkImportMemoryWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022288 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022289 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022290 }
22291
Mark Youngabc2d6e2017-07-07 07:59:56 -060022292 ImportMemoryWin32HandleInfoKHR& operator=( VkImportMemoryWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022293 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022294 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022295 return *this;
22296 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022297 ImportMemoryWin32HandleInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022298 {
22299 pNext = pNext_;
22300 return *this;
22301 }
22302
Mark Youngabc2d6e2017-07-07 07:59:56 -060022303 ImportMemoryWin32HandleInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022304 {
22305 handleType = handleType_;
22306 return *this;
22307 }
22308
Mark Youngabc2d6e2017-07-07 07:59:56 -060022309 ImportMemoryWin32HandleInfoKHR& setHandle( HANDLE handle_ )
Mark Young0f183a82017-02-28 09:58:04 -070022310 {
22311 handle = handle_;
22312 return *this;
22313 }
22314
Mark Youngabc2d6e2017-07-07 07:59:56 -060022315 ImportMemoryWin32HandleInfoKHR& setName( LPCWSTR name_ )
Mark Young0f183a82017-02-28 09:58:04 -070022316 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022317 name = name_;
22318 return *this;
Mark Young0f183a82017-02-28 09:58:04 -070022319 }
22320
Mark Youngabc2d6e2017-07-07 07:59:56 -060022321 operator const VkImportMemoryWin32HandleInfoKHR&() const
22322 {
22323 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoKHR*>(this);
22324 }
22325
22326 bool operator==( ImportMemoryWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022327 {
22328 return ( sType == rhs.sType )
22329 && ( pNext == rhs.pNext )
22330 && ( handleType == rhs.handleType )
Mark Youngabc2d6e2017-07-07 07:59:56 -060022331 && ( handle == rhs.handle )
22332 && ( name == rhs.name );
Mark Young0f183a82017-02-28 09:58:04 -070022333 }
22334
Mark Youngabc2d6e2017-07-07 07:59:56 -060022335 bool operator!=( ImportMemoryWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022336 {
22337 return !operator==( rhs );
22338 }
22339
22340 private:
22341 StructureType sType;
22342
22343 public:
22344 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022345 ExternalMemoryHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022346 HANDLE handle;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022347 LPCWSTR name;
Mark Young0f183a82017-02-28 09:58:04 -070022348 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022349 static_assert( sizeof( ImportMemoryWin32HandleInfoKHR ) == sizeof( VkImportMemoryWin32HandleInfoKHR ), "struct and wrapper have different size!" );
22350#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070022351
Mark Youngabc2d6e2017-07-07 07:59:56 -060022352#ifdef VK_USE_PLATFORM_WIN32_KHR
22353 struct MemoryGetWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022354 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022355 MemoryGetWin32HandleInfoKHR( DeviceMemory memory_ = DeviceMemory(), ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd )
22356 : sType( StructureType::eMemoryGetWin32HandleInfoKHR )
22357 , pNext( nullptr )
22358 , memory( memory_ )
22359 , handleType( handleType_ )
22360 {
22361 }
22362
22363 MemoryGetWin32HandleInfoKHR( VkMemoryGetWin32HandleInfoKHR const & rhs )
22364 {
22365 memcpy( this, &rhs, sizeof( MemoryGetWin32HandleInfoKHR ) );
22366 }
22367
22368 MemoryGetWin32HandleInfoKHR& operator=( VkMemoryGetWin32HandleInfoKHR const & rhs )
22369 {
22370 memcpy( this, &rhs, sizeof( MemoryGetWin32HandleInfoKHR ) );
22371 return *this;
22372 }
22373 MemoryGetWin32HandleInfoKHR& setPNext( const void* pNext_ )
22374 {
22375 pNext = pNext_;
22376 return *this;
22377 }
22378
22379 MemoryGetWin32HandleInfoKHR& setMemory( DeviceMemory memory_ )
22380 {
22381 memory = memory_;
22382 return *this;
22383 }
22384
22385 MemoryGetWin32HandleInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
22386 {
22387 handleType = handleType_;
22388 return *this;
22389 }
22390
22391 operator const VkMemoryGetWin32HandleInfoKHR&() const
22392 {
22393 return *reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR*>(this);
22394 }
22395
22396 bool operator==( MemoryGetWin32HandleInfoKHR const& rhs ) const
22397 {
22398 return ( sType == rhs.sType )
22399 && ( pNext == rhs.pNext )
22400 && ( memory == rhs.memory )
22401 && ( handleType == rhs.handleType );
22402 }
22403
22404 bool operator!=( MemoryGetWin32HandleInfoKHR const& rhs ) const
22405 {
22406 return !operator==( rhs );
22407 }
22408
22409 private:
22410 StructureType sType;
22411
22412 public:
22413 const void* pNext;
22414 DeviceMemory memory;
22415 ExternalMemoryHandleTypeFlagBitsKHR handleType;
22416 };
22417 static_assert( sizeof( MemoryGetWin32HandleInfoKHR ) == sizeof( VkMemoryGetWin32HandleInfoKHR ), "struct and wrapper have different size!" );
22418#endif /*VK_USE_PLATFORM_WIN32_KHR*/
22419
22420 struct ImportMemoryFdInfoKHR
22421 {
22422 ImportMemoryFdInfoKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd, int fd_ = 0 )
22423 : sType( StructureType::eImportMemoryFdInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022424 , pNext( nullptr )
22425 , handleType( handleType_ )
22426 , fd( fd_ )
22427 {
22428 }
22429
Mark Youngabc2d6e2017-07-07 07:59:56 -060022430 ImportMemoryFdInfoKHR( VkImportMemoryFdInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022431 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022432 memcpy( this, &rhs, sizeof( ImportMemoryFdInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022433 }
22434
Mark Youngabc2d6e2017-07-07 07:59:56 -060022435 ImportMemoryFdInfoKHR& operator=( VkImportMemoryFdInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022436 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022437 memcpy( this, &rhs, sizeof( ImportMemoryFdInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022438 return *this;
22439 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022440 ImportMemoryFdInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022441 {
22442 pNext = pNext_;
22443 return *this;
22444 }
22445
Mark Youngabc2d6e2017-07-07 07:59:56 -060022446 ImportMemoryFdInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022447 {
22448 handleType = handleType_;
22449 return *this;
22450 }
22451
Mark Youngabc2d6e2017-07-07 07:59:56 -060022452 ImportMemoryFdInfoKHR& setFd( int fd_ )
Mark Young0f183a82017-02-28 09:58:04 -070022453 {
22454 fd = fd_;
22455 return *this;
22456 }
22457
Mark Youngabc2d6e2017-07-07 07:59:56 -060022458 operator const VkImportMemoryFdInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022459 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022460 return *reinterpret_cast<const VkImportMemoryFdInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022461 }
22462
Mark Youngabc2d6e2017-07-07 07:59:56 -060022463 bool operator==( ImportMemoryFdInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022464 {
22465 return ( sType == rhs.sType )
22466 && ( pNext == rhs.pNext )
22467 && ( handleType == rhs.handleType )
22468 && ( fd == rhs.fd );
22469 }
22470
Mark Youngabc2d6e2017-07-07 07:59:56 -060022471 bool operator!=( ImportMemoryFdInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022472 {
22473 return !operator==( rhs );
22474 }
22475
22476 private:
22477 StructureType sType;
22478
22479 public:
22480 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022481 ExternalMemoryHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022482 int fd;
22483 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022484 static_assert( sizeof( ImportMemoryFdInfoKHR ) == sizeof( VkImportMemoryFdInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022485
Mark Youngabc2d6e2017-07-07 07:59:56 -060022486 struct MemoryGetFdInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022487 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022488 MemoryGetFdInfoKHR( DeviceMemory memory_ = DeviceMemory(), ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd )
22489 : sType( StructureType::eMemoryGetFdInfoKHR )
22490 , pNext( nullptr )
22491 , memory( memory_ )
22492 , handleType( handleType_ )
22493 {
22494 }
22495
22496 MemoryGetFdInfoKHR( VkMemoryGetFdInfoKHR const & rhs )
22497 {
22498 memcpy( this, &rhs, sizeof( MemoryGetFdInfoKHR ) );
22499 }
22500
22501 MemoryGetFdInfoKHR& operator=( VkMemoryGetFdInfoKHR const & rhs )
22502 {
22503 memcpy( this, &rhs, sizeof( MemoryGetFdInfoKHR ) );
22504 return *this;
22505 }
22506 MemoryGetFdInfoKHR& setPNext( const void* pNext_ )
22507 {
22508 pNext = pNext_;
22509 return *this;
22510 }
22511
22512 MemoryGetFdInfoKHR& setMemory( DeviceMemory memory_ )
22513 {
22514 memory = memory_;
22515 return *this;
22516 }
22517
22518 MemoryGetFdInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
22519 {
22520 handleType = handleType_;
22521 return *this;
22522 }
22523
22524 operator const VkMemoryGetFdInfoKHR&() const
22525 {
22526 return *reinterpret_cast<const VkMemoryGetFdInfoKHR*>(this);
22527 }
22528
22529 bool operator==( MemoryGetFdInfoKHR const& rhs ) const
22530 {
22531 return ( sType == rhs.sType )
22532 && ( pNext == rhs.pNext )
22533 && ( memory == rhs.memory )
22534 && ( handleType == rhs.handleType );
22535 }
22536
22537 bool operator!=( MemoryGetFdInfoKHR const& rhs ) const
22538 {
22539 return !operator==( rhs );
22540 }
22541
22542 private:
22543 StructureType sType;
22544
22545 public:
22546 const void* pNext;
22547 DeviceMemory memory;
22548 ExternalMemoryHandleTypeFlagBitsKHR handleType;
22549 };
22550 static_assert( sizeof( MemoryGetFdInfoKHR ) == sizeof( VkMemoryGetFdInfoKHR ), "struct and wrapper have different size!" );
22551
22552 enum class ExternalMemoryFeatureFlagBitsKHR
22553 {
22554 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR,
22555 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR,
22556 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR
Mark Young0f183a82017-02-28 09:58:04 -070022557 };
22558
Mark Youngabc2d6e2017-07-07 07:59:56 -060022559 using ExternalMemoryFeatureFlagsKHR = Flags<ExternalMemoryFeatureFlagBitsKHR, VkExternalMemoryFeatureFlagsKHR>;
Mark Young0f183a82017-02-28 09:58:04 -070022560
Mark Youngabc2d6e2017-07-07 07:59:56 -060022561 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsKHR operator|( ExternalMemoryFeatureFlagBitsKHR bit0, ExternalMemoryFeatureFlagBitsKHR bit1 )
Mark Young0f183a82017-02-28 09:58:04 -070022562 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022563 return ExternalMemoryFeatureFlagsKHR( bit0 ) | bit1;
Mark Young0f183a82017-02-28 09:58:04 -070022564 }
22565
Mark Youngabc2d6e2017-07-07 07:59:56 -060022566 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsKHR operator~( ExternalMemoryFeatureFlagBitsKHR bits )
Mark Young0f183a82017-02-28 09:58:04 -070022567 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022568 return ~( ExternalMemoryFeatureFlagsKHR( bits ) );
Mark Young0f183a82017-02-28 09:58:04 -070022569 }
22570
Mark Youngabc2d6e2017-07-07 07:59:56 -060022571 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsKHR>
Mark Young0f183a82017-02-28 09:58:04 -070022572 {
22573 enum
22574 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022575 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsKHR::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsKHR::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsKHR::eImportable)
Mark Young0f183a82017-02-28 09:58:04 -070022576 };
22577 };
22578
Mark Youngabc2d6e2017-07-07 07:59:56 -060022579 struct ExternalMemoryPropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070022580 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022581 operator const VkExternalMemoryPropertiesKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022582 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022583 return *reinterpret_cast<const VkExternalMemoryPropertiesKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022584 }
22585
Mark Youngabc2d6e2017-07-07 07:59:56 -060022586 bool operator==( ExternalMemoryPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022587 {
22588 return ( externalMemoryFeatures == rhs.externalMemoryFeatures )
22589 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
22590 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
22591 }
22592
Mark Youngabc2d6e2017-07-07 07:59:56 -060022593 bool operator!=( ExternalMemoryPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022594 {
22595 return !operator==( rhs );
22596 }
22597
Mark Youngabc2d6e2017-07-07 07:59:56 -060022598 ExternalMemoryFeatureFlagsKHR externalMemoryFeatures;
22599 ExternalMemoryHandleTypeFlagsKHR exportFromImportedHandleTypes;
22600 ExternalMemoryHandleTypeFlagsKHR compatibleHandleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070022601 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022602 static_assert( sizeof( ExternalMemoryPropertiesKHR ) == sizeof( VkExternalMemoryPropertiesKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022603
Mark Youngabc2d6e2017-07-07 07:59:56 -060022604 struct ExternalImageFormatPropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070022605 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022606 operator const VkExternalImageFormatPropertiesKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022607 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022608 return *reinterpret_cast<const VkExternalImageFormatPropertiesKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022609 }
22610
Mark Youngabc2d6e2017-07-07 07:59:56 -060022611 bool operator==( ExternalImageFormatPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022612 {
22613 return ( sType == rhs.sType )
22614 && ( pNext == rhs.pNext )
22615 && ( externalMemoryProperties == rhs.externalMemoryProperties );
22616 }
22617
Mark Youngabc2d6e2017-07-07 07:59:56 -060022618 bool operator!=( ExternalImageFormatPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022619 {
22620 return !operator==( rhs );
22621 }
22622
22623 private:
22624 StructureType sType;
22625
22626 public:
22627 void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022628 ExternalMemoryPropertiesKHR externalMemoryProperties;
Mark Young0f183a82017-02-28 09:58:04 -070022629 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022630 static_assert( sizeof( ExternalImageFormatPropertiesKHR ) == sizeof( VkExternalImageFormatPropertiesKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022631
Mark Youngabc2d6e2017-07-07 07:59:56 -060022632 struct ExternalBufferPropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070022633 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022634 operator const VkExternalBufferPropertiesKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022635 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022636 return *reinterpret_cast<const VkExternalBufferPropertiesKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022637 }
22638
Mark Youngabc2d6e2017-07-07 07:59:56 -060022639 bool operator==( ExternalBufferPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022640 {
22641 return ( sType == rhs.sType )
22642 && ( pNext == rhs.pNext )
22643 && ( externalMemoryProperties == rhs.externalMemoryProperties );
22644 }
22645
Mark Youngabc2d6e2017-07-07 07:59:56 -060022646 bool operator!=( ExternalBufferPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022647 {
22648 return !operator==( rhs );
22649 }
22650
22651 private:
22652 StructureType sType;
22653
22654 public:
22655 void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022656 ExternalMemoryPropertiesKHR externalMemoryProperties;
Mark Young0f183a82017-02-28 09:58:04 -070022657 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022658 static_assert( sizeof( ExternalBufferPropertiesKHR ) == sizeof( VkExternalBufferPropertiesKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022659
Mark Youngabc2d6e2017-07-07 07:59:56 -060022660 enum class ExternalSemaphoreHandleTypeFlagBitsKHR
Mark Young0f183a82017-02-28 09:58:04 -070022661 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022662 eOpaqueFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
22663 eOpaqueWin32 = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
22664 eOpaqueWin32Kmt = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
22665 eD3D12Fence = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR,
22666 eSyncFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR
Mark Young0f183a82017-02-28 09:58:04 -070022667 };
22668
Mark Youngabc2d6e2017-07-07 07:59:56 -060022669 using ExternalSemaphoreHandleTypeFlagsKHR = Flags<ExternalSemaphoreHandleTypeFlagBitsKHR, VkExternalSemaphoreHandleTypeFlagsKHR>;
Mark Young0f183a82017-02-28 09:58:04 -070022670
Mark Youngabc2d6e2017-07-07 07:59:56 -060022671 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlagsKHR operator|( ExternalSemaphoreHandleTypeFlagBitsKHR bit0, ExternalSemaphoreHandleTypeFlagBitsKHR bit1 )
Mark Young0f183a82017-02-28 09:58:04 -070022672 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022673 return ExternalSemaphoreHandleTypeFlagsKHR( bit0 ) | bit1;
Mark Young0f183a82017-02-28 09:58:04 -070022674 }
22675
Mark Youngabc2d6e2017-07-07 07:59:56 -060022676 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlagsKHR operator~( ExternalSemaphoreHandleTypeFlagBitsKHR bits )
Mark Young0f183a82017-02-28 09:58:04 -070022677 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022678 return ~( ExternalSemaphoreHandleTypeFlagsKHR( bits ) );
Mark Young0f183a82017-02-28 09:58:04 -070022679 }
22680
Mark Youngabc2d6e2017-07-07 07:59:56 -060022681 template <> struct FlagTraits<ExternalSemaphoreHandleTypeFlagBitsKHR>
Mark Young0f183a82017-02-28 09:58:04 -070022682 {
22683 enum
22684 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022685 allFlags = VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eD3D12Fence) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eSyncFd)
Mark Young0f183a82017-02-28 09:58:04 -070022686 };
22687 };
22688
Mark Youngabc2d6e2017-07-07 07:59:56 -060022689 struct PhysicalDeviceExternalSemaphoreInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022690 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022691 PhysicalDeviceExternalSemaphoreInfoKHR( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd )
22692 : sType( StructureType::ePhysicalDeviceExternalSemaphoreInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022693 , pNext( nullptr )
22694 , handleType( handleType_ )
22695 {
22696 }
22697
Mark Youngabc2d6e2017-07-07 07:59:56 -060022698 PhysicalDeviceExternalSemaphoreInfoKHR( VkPhysicalDeviceExternalSemaphoreInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022699 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022700 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalSemaphoreInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022701 }
22702
Mark Youngabc2d6e2017-07-07 07:59:56 -060022703 PhysicalDeviceExternalSemaphoreInfoKHR& operator=( VkPhysicalDeviceExternalSemaphoreInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022704 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022705 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalSemaphoreInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022706 return *this;
22707 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022708 PhysicalDeviceExternalSemaphoreInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022709 {
22710 pNext = pNext_;
22711 return *this;
22712 }
22713
Mark Youngabc2d6e2017-07-07 07:59:56 -060022714 PhysicalDeviceExternalSemaphoreInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022715 {
22716 handleType = handleType_;
22717 return *this;
22718 }
22719
Mark Youngabc2d6e2017-07-07 07:59:56 -060022720 operator const VkPhysicalDeviceExternalSemaphoreInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022721 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022722 return *reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022723 }
22724
Mark Youngabc2d6e2017-07-07 07:59:56 -060022725 bool operator==( PhysicalDeviceExternalSemaphoreInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022726 {
22727 return ( sType == rhs.sType )
22728 && ( pNext == rhs.pNext )
22729 && ( handleType == rhs.handleType );
22730 }
22731
Mark Youngabc2d6e2017-07-07 07:59:56 -060022732 bool operator!=( PhysicalDeviceExternalSemaphoreInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022733 {
22734 return !operator==( rhs );
22735 }
22736
22737 private:
22738 StructureType sType;
22739
22740 public:
22741 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022742 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022743 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022744 static_assert( sizeof( PhysicalDeviceExternalSemaphoreInfoKHR ) == sizeof( VkPhysicalDeviceExternalSemaphoreInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022745
Mark Youngabc2d6e2017-07-07 07:59:56 -060022746 struct ExportSemaphoreCreateInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022747 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022748 ExportSemaphoreCreateInfoKHR( ExternalSemaphoreHandleTypeFlagsKHR handleTypes_ = ExternalSemaphoreHandleTypeFlagsKHR() )
22749 : sType( StructureType::eExportSemaphoreCreateInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022750 , pNext( nullptr )
22751 , handleTypes( handleTypes_ )
22752 {
22753 }
22754
Mark Youngabc2d6e2017-07-07 07:59:56 -060022755 ExportSemaphoreCreateInfoKHR( VkExportSemaphoreCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022756 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022757 memcpy( this, &rhs, sizeof( ExportSemaphoreCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022758 }
22759
Mark Youngabc2d6e2017-07-07 07:59:56 -060022760 ExportSemaphoreCreateInfoKHR& operator=( VkExportSemaphoreCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022761 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022762 memcpy( this, &rhs, sizeof( ExportSemaphoreCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022763 return *this;
22764 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022765 ExportSemaphoreCreateInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022766 {
22767 pNext = pNext_;
22768 return *this;
22769 }
22770
Mark Youngabc2d6e2017-07-07 07:59:56 -060022771 ExportSemaphoreCreateInfoKHR& setHandleTypes( ExternalSemaphoreHandleTypeFlagsKHR handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070022772 {
22773 handleTypes = handleTypes_;
22774 return *this;
22775 }
22776
Mark Youngabc2d6e2017-07-07 07:59:56 -060022777 operator const VkExportSemaphoreCreateInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022778 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022779 return *reinterpret_cast<const VkExportSemaphoreCreateInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022780 }
22781
Mark Youngabc2d6e2017-07-07 07:59:56 -060022782 bool operator==( ExportSemaphoreCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022783 {
22784 return ( sType == rhs.sType )
22785 && ( pNext == rhs.pNext )
22786 && ( handleTypes == rhs.handleTypes );
22787 }
22788
Mark Youngabc2d6e2017-07-07 07:59:56 -060022789 bool operator!=( ExportSemaphoreCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022790 {
22791 return !operator==( rhs );
22792 }
22793
22794 private:
22795 StructureType sType;
22796
22797 public:
22798 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022799 ExternalSemaphoreHandleTypeFlagsKHR handleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070022800 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022801 static_assert( sizeof( ExportSemaphoreCreateInfoKHR ) == sizeof( VkExportSemaphoreCreateInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022802
Mark Youngabc2d6e2017-07-07 07:59:56 -060022803#ifdef VK_USE_PLATFORM_WIN32_KHR
22804 struct SemaphoreGetWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022805 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022806 SemaphoreGetWin32HandleInfoKHR( Semaphore semaphore_ = Semaphore(), ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd )
22807 : sType( StructureType::eSemaphoreGetWin32HandleInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022808 , pNext( nullptr )
22809 , semaphore( semaphore_ )
22810 , handleType( handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022811 {
22812 }
22813
Mark Youngabc2d6e2017-07-07 07:59:56 -060022814 SemaphoreGetWin32HandleInfoKHR( VkSemaphoreGetWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022815 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022816 memcpy( this, &rhs, sizeof( SemaphoreGetWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022817 }
22818
Mark Youngabc2d6e2017-07-07 07:59:56 -060022819 SemaphoreGetWin32HandleInfoKHR& operator=( VkSemaphoreGetWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022820 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022821 memcpy( this, &rhs, sizeof( SemaphoreGetWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022822 return *this;
22823 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022824 SemaphoreGetWin32HandleInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022825 {
22826 pNext = pNext_;
22827 return *this;
22828 }
22829
Mark Youngabc2d6e2017-07-07 07:59:56 -060022830 SemaphoreGetWin32HandleInfoKHR& setSemaphore( Semaphore semaphore_ )
Mark Young0f183a82017-02-28 09:58:04 -070022831 {
22832 semaphore = semaphore_;
22833 return *this;
22834 }
22835
Mark Youngabc2d6e2017-07-07 07:59:56 -060022836 SemaphoreGetWin32HandleInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022837 {
22838 handleType = handleType_;
22839 return *this;
22840 }
22841
Mark Youngabc2d6e2017-07-07 07:59:56 -060022842 operator const VkSemaphoreGetWin32HandleInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022843 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022844 return *reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022845 }
22846
Mark Youngabc2d6e2017-07-07 07:59:56 -060022847 bool operator==( SemaphoreGetWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022848 {
22849 return ( sType == rhs.sType )
22850 && ( pNext == rhs.pNext )
22851 && ( semaphore == rhs.semaphore )
Mark Youngabc2d6e2017-07-07 07:59:56 -060022852 && ( handleType == rhs.handleType );
Mark Young0f183a82017-02-28 09:58:04 -070022853 }
22854
Mark Youngabc2d6e2017-07-07 07:59:56 -060022855 bool operator!=( SemaphoreGetWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022856 {
22857 return !operator==( rhs );
22858 }
22859
22860 private:
22861 StructureType sType;
22862
22863 public:
22864 const void* pNext;
22865 Semaphore semaphore;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022866 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022867 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022868 static_assert( sizeof( SemaphoreGetWin32HandleInfoKHR ) == sizeof( VkSemaphoreGetWin32HandleInfoKHR ), "struct and wrapper have different size!" );
22869#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070022870
Mark Youngabc2d6e2017-07-07 07:59:56 -060022871 struct SemaphoreGetFdInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022872 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022873 SemaphoreGetFdInfoKHR( Semaphore semaphore_ = Semaphore(), ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd )
22874 : sType( StructureType::eSemaphoreGetFdInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022875 , pNext( nullptr )
22876 , semaphore( semaphore_ )
22877 , handleType( handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022878 {
22879 }
22880
Mark Youngabc2d6e2017-07-07 07:59:56 -060022881 SemaphoreGetFdInfoKHR( VkSemaphoreGetFdInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022882 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022883 memcpy( this, &rhs, sizeof( SemaphoreGetFdInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022884 }
22885
Mark Youngabc2d6e2017-07-07 07:59:56 -060022886 SemaphoreGetFdInfoKHR& operator=( VkSemaphoreGetFdInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022887 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022888 memcpy( this, &rhs, sizeof( SemaphoreGetFdInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022889 return *this;
22890 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022891 SemaphoreGetFdInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022892 {
22893 pNext = pNext_;
22894 return *this;
22895 }
22896
Mark Youngabc2d6e2017-07-07 07:59:56 -060022897 SemaphoreGetFdInfoKHR& setSemaphore( Semaphore semaphore_ )
Mark Young0f183a82017-02-28 09:58:04 -070022898 {
22899 semaphore = semaphore_;
22900 return *this;
22901 }
22902
Mark Youngabc2d6e2017-07-07 07:59:56 -060022903 SemaphoreGetFdInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022904 {
22905 handleType = handleType_;
22906 return *this;
22907 }
22908
Mark Youngabc2d6e2017-07-07 07:59:56 -060022909 operator const VkSemaphoreGetFdInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022910 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022911 return *reinterpret_cast<const VkSemaphoreGetFdInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022912 }
22913
Mark Youngabc2d6e2017-07-07 07:59:56 -060022914 bool operator==( SemaphoreGetFdInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022915 {
22916 return ( sType == rhs.sType )
22917 && ( pNext == rhs.pNext )
22918 && ( semaphore == rhs.semaphore )
Mark Youngabc2d6e2017-07-07 07:59:56 -060022919 && ( handleType == rhs.handleType );
Mark Young0f183a82017-02-28 09:58:04 -070022920 }
22921
Mark Youngabc2d6e2017-07-07 07:59:56 -060022922 bool operator!=( SemaphoreGetFdInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022923 {
22924 return !operator==( rhs );
22925 }
22926
22927 private:
22928 StructureType sType;
22929
22930 public:
22931 const void* pNext;
22932 Semaphore semaphore;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022933 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022934 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022935 static_assert( sizeof( SemaphoreGetFdInfoKHR ) == sizeof( VkSemaphoreGetFdInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022936
Mark Youngabc2d6e2017-07-07 07:59:56 -060022937 enum class ExternalSemaphoreFeatureFlagBitsKHR
Mark Young0f183a82017-02-28 09:58:04 -070022938 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022939 eExportable = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR,
22940 eImportable = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR
Mark Young0f183a82017-02-28 09:58:04 -070022941 };
22942
Mark Youngabc2d6e2017-07-07 07:59:56 -060022943 using ExternalSemaphoreFeatureFlagsKHR = Flags<ExternalSemaphoreFeatureFlagBitsKHR, VkExternalSemaphoreFeatureFlagsKHR>;
Mark Young0f183a82017-02-28 09:58:04 -070022944
Mark Youngabc2d6e2017-07-07 07:59:56 -060022945 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlagsKHR operator|( ExternalSemaphoreFeatureFlagBitsKHR bit0, ExternalSemaphoreFeatureFlagBitsKHR bit1 )
Mark Young0f183a82017-02-28 09:58:04 -070022946 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022947 return ExternalSemaphoreFeatureFlagsKHR( bit0 ) | bit1;
Mark Young0f183a82017-02-28 09:58:04 -070022948 }
22949
Mark Youngabc2d6e2017-07-07 07:59:56 -060022950 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlagsKHR operator~( ExternalSemaphoreFeatureFlagBitsKHR bits )
Mark Young0f183a82017-02-28 09:58:04 -070022951 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022952 return ~( ExternalSemaphoreFeatureFlagsKHR( bits ) );
Mark Young0f183a82017-02-28 09:58:04 -070022953 }
22954
Mark Youngabc2d6e2017-07-07 07:59:56 -060022955 template <> struct FlagTraits<ExternalSemaphoreFeatureFlagBitsKHR>
Mark Young0f183a82017-02-28 09:58:04 -070022956 {
22957 enum
22958 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022959 allFlags = VkFlags(ExternalSemaphoreFeatureFlagBitsKHR::eExportable) | VkFlags(ExternalSemaphoreFeatureFlagBitsKHR::eImportable)
Mark Young0f183a82017-02-28 09:58:04 -070022960 };
22961 };
22962
Mark Youngabc2d6e2017-07-07 07:59:56 -060022963 struct ExternalSemaphorePropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070022964 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022965 operator const VkExternalSemaphorePropertiesKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022966 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022967 return *reinterpret_cast<const VkExternalSemaphorePropertiesKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022968 }
22969
Mark Youngabc2d6e2017-07-07 07:59:56 -060022970 bool operator==( ExternalSemaphorePropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022971 {
22972 return ( sType == rhs.sType )
22973 && ( pNext == rhs.pNext )
22974 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
22975 && ( compatibleHandleTypes == rhs.compatibleHandleTypes )
22976 && ( externalSemaphoreFeatures == rhs.externalSemaphoreFeatures );
22977 }
22978
Mark Youngabc2d6e2017-07-07 07:59:56 -060022979 bool operator!=( ExternalSemaphorePropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022980 {
22981 return !operator==( rhs );
22982 }
22983
22984 private:
22985 StructureType sType;
22986
22987 public:
22988 void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022989 ExternalSemaphoreHandleTypeFlagsKHR exportFromImportedHandleTypes;
22990 ExternalSemaphoreHandleTypeFlagsKHR compatibleHandleTypes;
22991 ExternalSemaphoreFeatureFlagsKHR externalSemaphoreFeatures;
Mark Young0f183a82017-02-28 09:58:04 -070022992 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022993 static_assert( sizeof( ExternalSemaphorePropertiesKHR ) == sizeof( VkExternalSemaphorePropertiesKHR ), "struct and wrapper have different size!" );
22994
22995 enum class SemaphoreImportFlagBitsKHR
22996 {
22997 eTemporary = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR
22998 };
22999
23000 using SemaphoreImportFlagsKHR = Flags<SemaphoreImportFlagBitsKHR, VkSemaphoreImportFlagsKHR>;
23001
23002 VULKAN_HPP_INLINE SemaphoreImportFlagsKHR operator|( SemaphoreImportFlagBitsKHR bit0, SemaphoreImportFlagBitsKHR bit1 )
23003 {
23004 return SemaphoreImportFlagsKHR( bit0 ) | bit1;
23005 }
23006
23007 VULKAN_HPP_INLINE SemaphoreImportFlagsKHR operator~( SemaphoreImportFlagBitsKHR bits )
23008 {
23009 return ~( SemaphoreImportFlagsKHR( bits ) );
23010 }
23011
23012 template <> struct FlagTraits<SemaphoreImportFlagBitsKHR>
23013 {
23014 enum
23015 {
23016 allFlags = VkFlags(SemaphoreImportFlagBitsKHR::eTemporary)
23017 };
23018 };
23019
23020#ifdef VK_USE_PLATFORM_WIN32_KHR
23021 struct ImportSemaphoreWin32HandleInfoKHR
23022 {
23023 ImportSemaphoreWin32HandleInfoKHR( Semaphore semaphore_ = Semaphore(), SemaphoreImportFlagsKHR flags_ = SemaphoreImportFlagsKHR(), ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd, HANDLE handle_ = 0, LPCWSTR name_ = 0 )
23024 : sType( StructureType::eImportSemaphoreWin32HandleInfoKHR )
23025 , pNext( nullptr )
23026 , semaphore( semaphore_ )
23027 , flags( flags_ )
23028 , handleType( handleType_ )
23029 , handle( handle_ )
23030 , name( name_ )
23031 {
23032 }
23033
23034 ImportSemaphoreWin32HandleInfoKHR( VkImportSemaphoreWin32HandleInfoKHR const & rhs )
23035 {
23036 memcpy( this, &rhs, sizeof( ImportSemaphoreWin32HandleInfoKHR ) );
23037 }
23038
23039 ImportSemaphoreWin32HandleInfoKHR& operator=( VkImportSemaphoreWin32HandleInfoKHR const & rhs )
23040 {
23041 memcpy( this, &rhs, sizeof( ImportSemaphoreWin32HandleInfoKHR ) );
23042 return *this;
23043 }
23044 ImportSemaphoreWin32HandleInfoKHR& setPNext( const void* pNext_ )
23045 {
23046 pNext = pNext_;
23047 return *this;
23048 }
23049
23050 ImportSemaphoreWin32HandleInfoKHR& setSemaphore( Semaphore semaphore_ )
23051 {
23052 semaphore = semaphore_;
23053 return *this;
23054 }
23055
23056 ImportSemaphoreWin32HandleInfoKHR& setFlags( SemaphoreImportFlagsKHR flags_ )
23057 {
23058 flags = flags_;
23059 return *this;
23060 }
23061
23062 ImportSemaphoreWin32HandleInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
23063 {
23064 handleType = handleType_;
23065 return *this;
23066 }
23067
23068 ImportSemaphoreWin32HandleInfoKHR& setHandle( HANDLE handle_ )
23069 {
23070 handle = handle_;
23071 return *this;
23072 }
23073
23074 ImportSemaphoreWin32HandleInfoKHR& setName( LPCWSTR name_ )
23075 {
23076 name = name_;
23077 return *this;
23078 }
23079
23080 operator const VkImportSemaphoreWin32HandleInfoKHR&() const
23081 {
23082 return *reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR*>(this);
23083 }
23084
23085 bool operator==( ImportSemaphoreWin32HandleInfoKHR const& rhs ) const
23086 {
23087 return ( sType == rhs.sType )
23088 && ( pNext == rhs.pNext )
23089 && ( semaphore == rhs.semaphore )
23090 && ( flags == rhs.flags )
23091 && ( handleType == rhs.handleType )
23092 && ( handle == rhs.handle )
23093 && ( name == rhs.name );
23094 }
23095
23096 bool operator!=( ImportSemaphoreWin32HandleInfoKHR const& rhs ) const
23097 {
23098 return !operator==( rhs );
23099 }
23100
23101 private:
23102 StructureType sType;
23103
23104 public:
23105 const void* pNext;
23106 Semaphore semaphore;
23107 SemaphoreImportFlagsKHR flags;
23108 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
23109 HANDLE handle;
23110 LPCWSTR name;
23111 };
23112 static_assert( sizeof( ImportSemaphoreWin32HandleInfoKHR ) == sizeof( VkImportSemaphoreWin32HandleInfoKHR ), "struct and wrapper have different size!" );
23113#endif /*VK_USE_PLATFORM_WIN32_KHR*/
23114
23115 struct ImportSemaphoreFdInfoKHR
23116 {
23117 ImportSemaphoreFdInfoKHR( Semaphore semaphore_ = Semaphore(), SemaphoreImportFlagsKHR flags_ = SemaphoreImportFlagsKHR(), ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd, int fd_ = 0 )
23118 : sType( StructureType::eImportSemaphoreFdInfoKHR )
23119 , pNext( nullptr )
23120 , semaphore( semaphore_ )
23121 , flags( flags_ )
23122 , handleType( handleType_ )
23123 , fd( fd_ )
23124 {
23125 }
23126
23127 ImportSemaphoreFdInfoKHR( VkImportSemaphoreFdInfoKHR const & rhs )
23128 {
23129 memcpy( this, &rhs, sizeof( ImportSemaphoreFdInfoKHR ) );
23130 }
23131
23132 ImportSemaphoreFdInfoKHR& operator=( VkImportSemaphoreFdInfoKHR const & rhs )
23133 {
23134 memcpy( this, &rhs, sizeof( ImportSemaphoreFdInfoKHR ) );
23135 return *this;
23136 }
23137 ImportSemaphoreFdInfoKHR& setPNext( const void* pNext_ )
23138 {
23139 pNext = pNext_;
23140 return *this;
23141 }
23142
23143 ImportSemaphoreFdInfoKHR& setSemaphore( Semaphore semaphore_ )
23144 {
23145 semaphore = semaphore_;
23146 return *this;
23147 }
23148
23149 ImportSemaphoreFdInfoKHR& setFlags( SemaphoreImportFlagsKHR flags_ )
23150 {
23151 flags = flags_;
23152 return *this;
23153 }
23154
23155 ImportSemaphoreFdInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
23156 {
23157 handleType = handleType_;
23158 return *this;
23159 }
23160
23161 ImportSemaphoreFdInfoKHR& setFd( int fd_ )
23162 {
23163 fd = fd_;
23164 return *this;
23165 }
23166
23167 operator const VkImportSemaphoreFdInfoKHR&() const
23168 {
23169 return *reinterpret_cast<const VkImportSemaphoreFdInfoKHR*>(this);
23170 }
23171
23172 bool operator==( ImportSemaphoreFdInfoKHR const& rhs ) const
23173 {
23174 return ( sType == rhs.sType )
23175 && ( pNext == rhs.pNext )
23176 && ( semaphore == rhs.semaphore )
23177 && ( flags == rhs.flags )
23178 && ( handleType == rhs.handleType )
23179 && ( fd == rhs.fd );
23180 }
23181
23182 bool operator!=( ImportSemaphoreFdInfoKHR const& rhs ) const
23183 {
23184 return !operator==( rhs );
23185 }
23186
23187 private:
23188 StructureType sType;
23189
23190 public:
23191 const void* pNext;
23192 Semaphore semaphore;
23193 SemaphoreImportFlagsKHR flags;
23194 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
23195 int fd;
23196 };
23197 static_assert( sizeof( ImportSemaphoreFdInfoKHR ) == sizeof( VkImportSemaphoreFdInfoKHR ), "struct and wrapper have different size!" );
23198
23199 enum class ExternalFenceHandleTypeFlagBitsKHR
23200 {
23201 eOpaqueFd = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
23202 eOpaqueWin32 = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
23203 eOpaqueWin32Kmt = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
23204 eSyncFd = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR
23205 };
23206
23207 using ExternalFenceHandleTypeFlagsKHR = Flags<ExternalFenceHandleTypeFlagBitsKHR, VkExternalFenceHandleTypeFlagsKHR>;
23208
23209 VULKAN_HPP_INLINE ExternalFenceHandleTypeFlagsKHR operator|( ExternalFenceHandleTypeFlagBitsKHR bit0, ExternalFenceHandleTypeFlagBitsKHR bit1 )
23210 {
23211 return ExternalFenceHandleTypeFlagsKHR( bit0 ) | bit1;
23212 }
23213
23214 VULKAN_HPP_INLINE ExternalFenceHandleTypeFlagsKHR operator~( ExternalFenceHandleTypeFlagBitsKHR bits )
23215 {
23216 return ~( ExternalFenceHandleTypeFlagsKHR( bits ) );
23217 }
23218
23219 template <> struct FlagTraits<ExternalFenceHandleTypeFlagBitsKHR>
23220 {
23221 enum
23222 {
23223 allFlags = VkFlags(ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd) | VkFlags(ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32) | VkFlags(ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) | VkFlags(ExternalFenceHandleTypeFlagBitsKHR::eSyncFd)
23224 };
23225 };
23226
23227 struct PhysicalDeviceExternalFenceInfoKHR
23228 {
23229 PhysicalDeviceExternalFenceInfoKHR( ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd )
23230 : sType( StructureType::ePhysicalDeviceExternalFenceInfoKHR )
23231 , pNext( nullptr )
23232 , handleType( handleType_ )
23233 {
23234 }
23235
23236 PhysicalDeviceExternalFenceInfoKHR( VkPhysicalDeviceExternalFenceInfoKHR const & rhs )
23237 {
23238 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalFenceInfoKHR ) );
23239 }
23240
23241 PhysicalDeviceExternalFenceInfoKHR& operator=( VkPhysicalDeviceExternalFenceInfoKHR const & rhs )
23242 {
23243 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalFenceInfoKHR ) );
23244 return *this;
23245 }
23246 PhysicalDeviceExternalFenceInfoKHR& setPNext( const void* pNext_ )
23247 {
23248 pNext = pNext_;
23249 return *this;
23250 }
23251
23252 PhysicalDeviceExternalFenceInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
23253 {
23254 handleType = handleType_;
23255 return *this;
23256 }
23257
23258 operator const VkPhysicalDeviceExternalFenceInfoKHR&() const
23259 {
23260 return *reinterpret_cast<const VkPhysicalDeviceExternalFenceInfoKHR*>(this);
23261 }
23262
23263 bool operator==( PhysicalDeviceExternalFenceInfoKHR const& rhs ) const
23264 {
23265 return ( sType == rhs.sType )
23266 && ( pNext == rhs.pNext )
23267 && ( handleType == rhs.handleType );
23268 }
23269
23270 bool operator!=( PhysicalDeviceExternalFenceInfoKHR const& rhs ) const
23271 {
23272 return !operator==( rhs );
23273 }
23274
23275 private:
23276 StructureType sType;
23277
23278 public:
23279 const void* pNext;
23280 ExternalFenceHandleTypeFlagBitsKHR handleType;
23281 };
23282 static_assert( sizeof( PhysicalDeviceExternalFenceInfoKHR ) == sizeof( VkPhysicalDeviceExternalFenceInfoKHR ), "struct and wrapper have different size!" );
23283
23284 struct ExportFenceCreateInfoKHR
23285 {
23286 ExportFenceCreateInfoKHR( ExternalFenceHandleTypeFlagsKHR handleTypes_ = ExternalFenceHandleTypeFlagsKHR() )
23287 : sType( StructureType::eExportFenceCreateInfoKHR )
23288 , pNext( nullptr )
23289 , handleTypes( handleTypes_ )
23290 {
23291 }
23292
23293 ExportFenceCreateInfoKHR( VkExportFenceCreateInfoKHR const & rhs )
23294 {
23295 memcpy( this, &rhs, sizeof( ExportFenceCreateInfoKHR ) );
23296 }
23297
23298 ExportFenceCreateInfoKHR& operator=( VkExportFenceCreateInfoKHR const & rhs )
23299 {
23300 memcpy( this, &rhs, sizeof( ExportFenceCreateInfoKHR ) );
23301 return *this;
23302 }
23303 ExportFenceCreateInfoKHR& setPNext( const void* pNext_ )
23304 {
23305 pNext = pNext_;
23306 return *this;
23307 }
23308
23309 ExportFenceCreateInfoKHR& setHandleTypes( ExternalFenceHandleTypeFlagsKHR handleTypes_ )
23310 {
23311 handleTypes = handleTypes_;
23312 return *this;
23313 }
23314
23315 operator const VkExportFenceCreateInfoKHR&() const
23316 {
23317 return *reinterpret_cast<const VkExportFenceCreateInfoKHR*>(this);
23318 }
23319
23320 bool operator==( ExportFenceCreateInfoKHR const& rhs ) const
23321 {
23322 return ( sType == rhs.sType )
23323 && ( pNext == rhs.pNext )
23324 && ( handleTypes == rhs.handleTypes );
23325 }
23326
23327 bool operator!=( ExportFenceCreateInfoKHR const& rhs ) const
23328 {
23329 return !operator==( rhs );
23330 }
23331
23332 private:
23333 StructureType sType;
23334
23335 public:
23336 const void* pNext;
23337 ExternalFenceHandleTypeFlagsKHR handleTypes;
23338 };
23339 static_assert( sizeof( ExportFenceCreateInfoKHR ) == sizeof( VkExportFenceCreateInfoKHR ), "struct and wrapper have different size!" );
23340
23341#ifdef VK_USE_PLATFORM_WIN32_KHR
23342 struct FenceGetWin32HandleInfoKHR
23343 {
23344 FenceGetWin32HandleInfoKHR( Fence fence_ = Fence(), ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd )
23345 : sType( StructureType::eFenceGetWin32HandleInfoKHR )
23346 , pNext( nullptr )
23347 , fence( fence_ )
23348 , handleType( handleType_ )
23349 {
23350 }
23351
23352 FenceGetWin32HandleInfoKHR( VkFenceGetWin32HandleInfoKHR const & rhs )
23353 {
23354 memcpy( this, &rhs, sizeof( FenceGetWin32HandleInfoKHR ) );
23355 }
23356
23357 FenceGetWin32HandleInfoKHR& operator=( VkFenceGetWin32HandleInfoKHR const & rhs )
23358 {
23359 memcpy( this, &rhs, sizeof( FenceGetWin32HandleInfoKHR ) );
23360 return *this;
23361 }
23362 FenceGetWin32HandleInfoKHR& setPNext( const void* pNext_ )
23363 {
23364 pNext = pNext_;
23365 return *this;
23366 }
23367
23368 FenceGetWin32HandleInfoKHR& setFence( Fence fence_ )
23369 {
23370 fence = fence_;
23371 return *this;
23372 }
23373
23374 FenceGetWin32HandleInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
23375 {
23376 handleType = handleType_;
23377 return *this;
23378 }
23379
23380 operator const VkFenceGetWin32HandleInfoKHR&() const
23381 {
23382 return *reinterpret_cast<const VkFenceGetWin32HandleInfoKHR*>(this);
23383 }
23384
23385 bool operator==( FenceGetWin32HandleInfoKHR const& rhs ) const
23386 {
23387 return ( sType == rhs.sType )
23388 && ( pNext == rhs.pNext )
23389 && ( fence == rhs.fence )
23390 && ( handleType == rhs.handleType );
23391 }
23392
23393 bool operator!=( FenceGetWin32HandleInfoKHR const& rhs ) const
23394 {
23395 return !operator==( rhs );
23396 }
23397
23398 private:
23399 StructureType sType;
23400
23401 public:
23402 const void* pNext;
23403 Fence fence;
23404 ExternalFenceHandleTypeFlagBitsKHR handleType;
23405 };
23406 static_assert( sizeof( FenceGetWin32HandleInfoKHR ) == sizeof( VkFenceGetWin32HandleInfoKHR ), "struct and wrapper have different size!" );
23407#endif /*VK_USE_PLATFORM_WIN32_KHR*/
23408
23409 struct FenceGetFdInfoKHR
23410 {
23411 FenceGetFdInfoKHR( Fence fence_ = Fence(), ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd )
23412 : sType( StructureType::eFenceGetFdInfoKHR )
23413 , pNext( nullptr )
23414 , fence( fence_ )
23415 , handleType( handleType_ )
23416 {
23417 }
23418
23419 FenceGetFdInfoKHR( VkFenceGetFdInfoKHR const & rhs )
23420 {
23421 memcpy( this, &rhs, sizeof( FenceGetFdInfoKHR ) );
23422 }
23423
23424 FenceGetFdInfoKHR& operator=( VkFenceGetFdInfoKHR const & rhs )
23425 {
23426 memcpy( this, &rhs, sizeof( FenceGetFdInfoKHR ) );
23427 return *this;
23428 }
23429 FenceGetFdInfoKHR& setPNext( const void* pNext_ )
23430 {
23431 pNext = pNext_;
23432 return *this;
23433 }
23434
23435 FenceGetFdInfoKHR& setFence( Fence fence_ )
23436 {
23437 fence = fence_;
23438 return *this;
23439 }
23440
23441 FenceGetFdInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
23442 {
23443 handleType = handleType_;
23444 return *this;
23445 }
23446
23447 operator const VkFenceGetFdInfoKHR&() const
23448 {
23449 return *reinterpret_cast<const VkFenceGetFdInfoKHR*>(this);
23450 }
23451
23452 bool operator==( FenceGetFdInfoKHR const& rhs ) const
23453 {
23454 return ( sType == rhs.sType )
23455 && ( pNext == rhs.pNext )
23456 && ( fence == rhs.fence )
23457 && ( handleType == rhs.handleType );
23458 }
23459
23460 bool operator!=( FenceGetFdInfoKHR const& rhs ) const
23461 {
23462 return !operator==( rhs );
23463 }
23464
23465 private:
23466 StructureType sType;
23467
23468 public:
23469 const void* pNext;
23470 Fence fence;
23471 ExternalFenceHandleTypeFlagBitsKHR handleType;
23472 };
23473 static_assert( sizeof( FenceGetFdInfoKHR ) == sizeof( VkFenceGetFdInfoKHR ), "struct and wrapper have different size!" );
23474
23475 enum class ExternalFenceFeatureFlagBitsKHR
23476 {
23477 eExportable = VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR,
23478 eImportable = VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR
23479 };
23480
23481 using ExternalFenceFeatureFlagsKHR = Flags<ExternalFenceFeatureFlagBitsKHR, VkExternalFenceFeatureFlagsKHR>;
23482
23483 VULKAN_HPP_INLINE ExternalFenceFeatureFlagsKHR operator|( ExternalFenceFeatureFlagBitsKHR bit0, ExternalFenceFeatureFlagBitsKHR bit1 )
23484 {
23485 return ExternalFenceFeatureFlagsKHR( bit0 ) | bit1;
23486 }
23487
23488 VULKAN_HPP_INLINE ExternalFenceFeatureFlagsKHR operator~( ExternalFenceFeatureFlagBitsKHR bits )
23489 {
23490 return ~( ExternalFenceFeatureFlagsKHR( bits ) );
23491 }
23492
23493 template <> struct FlagTraits<ExternalFenceFeatureFlagBitsKHR>
23494 {
23495 enum
23496 {
23497 allFlags = VkFlags(ExternalFenceFeatureFlagBitsKHR::eExportable) | VkFlags(ExternalFenceFeatureFlagBitsKHR::eImportable)
23498 };
23499 };
23500
23501 struct ExternalFencePropertiesKHR
23502 {
23503 operator const VkExternalFencePropertiesKHR&() const
23504 {
23505 return *reinterpret_cast<const VkExternalFencePropertiesKHR*>(this);
23506 }
23507
23508 bool operator==( ExternalFencePropertiesKHR const& rhs ) const
23509 {
23510 return ( sType == rhs.sType )
23511 && ( pNext == rhs.pNext )
23512 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
23513 && ( compatibleHandleTypes == rhs.compatibleHandleTypes )
23514 && ( externalFenceFeatures == rhs.externalFenceFeatures );
23515 }
23516
23517 bool operator!=( ExternalFencePropertiesKHR const& rhs ) const
23518 {
23519 return !operator==( rhs );
23520 }
23521
23522 private:
23523 StructureType sType;
23524
23525 public:
23526 void* pNext;
23527 ExternalFenceHandleTypeFlagsKHR exportFromImportedHandleTypes;
23528 ExternalFenceHandleTypeFlagsKHR compatibleHandleTypes;
23529 ExternalFenceFeatureFlagsKHR externalFenceFeatures;
23530 };
23531 static_assert( sizeof( ExternalFencePropertiesKHR ) == sizeof( VkExternalFencePropertiesKHR ), "struct and wrapper have different size!" );
23532
23533 enum class FenceImportFlagBitsKHR
23534 {
23535 eTemporary = VK_FENCE_IMPORT_TEMPORARY_BIT_KHR
23536 };
23537
23538 using FenceImportFlagsKHR = Flags<FenceImportFlagBitsKHR, VkFenceImportFlagsKHR>;
23539
23540 VULKAN_HPP_INLINE FenceImportFlagsKHR operator|( FenceImportFlagBitsKHR bit0, FenceImportFlagBitsKHR bit1 )
23541 {
23542 return FenceImportFlagsKHR( bit0 ) | bit1;
23543 }
23544
23545 VULKAN_HPP_INLINE FenceImportFlagsKHR operator~( FenceImportFlagBitsKHR bits )
23546 {
23547 return ~( FenceImportFlagsKHR( bits ) );
23548 }
23549
23550 template <> struct FlagTraits<FenceImportFlagBitsKHR>
23551 {
23552 enum
23553 {
23554 allFlags = VkFlags(FenceImportFlagBitsKHR::eTemporary)
23555 };
23556 };
23557
23558#ifdef VK_USE_PLATFORM_WIN32_KHR
23559 struct ImportFenceWin32HandleInfoKHR
23560 {
23561 ImportFenceWin32HandleInfoKHR( Fence fence_ = Fence(), FenceImportFlagsKHR flags_ = FenceImportFlagsKHR(), ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd, HANDLE handle_ = 0, LPCWSTR name_ = 0 )
23562 : sType( StructureType::eImportFenceWin32HandleInfoKHR )
23563 , pNext( nullptr )
23564 , fence( fence_ )
23565 , flags( flags_ )
23566 , handleType( handleType_ )
23567 , handle( handle_ )
23568 , name( name_ )
23569 {
23570 }
23571
23572 ImportFenceWin32HandleInfoKHR( VkImportFenceWin32HandleInfoKHR const & rhs )
23573 {
23574 memcpy( this, &rhs, sizeof( ImportFenceWin32HandleInfoKHR ) );
23575 }
23576
23577 ImportFenceWin32HandleInfoKHR& operator=( VkImportFenceWin32HandleInfoKHR const & rhs )
23578 {
23579 memcpy( this, &rhs, sizeof( ImportFenceWin32HandleInfoKHR ) );
23580 return *this;
23581 }
23582 ImportFenceWin32HandleInfoKHR& setPNext( const void* pNext_ )
23583 {
23584 pNext = pNext_;
23585 return *this;
23586 }
23587
23588 ImportFenceWin32HandleInfoKHR& setFence( Fence fence_ )
23589 {
23590 fence = fence_;
23591 return *this;
23592 }
23593
23594 ImportFenceWin32HandleInfoKHR& setFlags( FenceImportFlagsKHR flags_ )
23595 {
23596 flags = flags_;
23597 return *this;
23598 }
23599
23600 ImportFenceWin32HandleInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
23601 {
23602 handleType = handleType_;
23603 return *this;
23604 }
23605
23606 ImportFenceWin32HandleInfoKHR& setHandle( HANDLE handle_ )
23607 {
23608 handle = handle_;
23609 return *this;
23610 }
23611
23612 ImportFenceWin32HandleInfoKHR& setName( LPCWSTR name_ )
23613 {
23614 name = name_;
23615 return *this;
23616 }
23617
23618 operator const VkImportFenceWin32HandleInfoKHR&() const
23619 {
23620 return *reinterpret_cast<const VkImportFenceWin32HandleInfoKHR*>(this);
23621 }
23622
23623 bool operator==( ImportFenceWin32HandleInfoKHR const& rhs ) const
23624 {
23625 return ( sType == rhs.sType )
23626 && ( pNext == rhs.pNext )
23627 && ( fence == rhs.fence )
23628 && ( flags == rhs.flags )
23629 && ( handleType == rhs.handleType )
23630 && ( handle == rhs.handle )
23631 && ( name == rhs.name );
23632 }
23633
23634 bool operator!=( ImportFenceWin32HandleInfoKHR const& rhs ) const
23635 {
23636 return !operator==( rhs );
23637 }
23638
23639 private:
23640 StructureType sType;
23641
23642 public:
23643 const void* pNext;
23644 Fence fence;
23645 FenceImportFlagsKHR flags;
23646 ExternalFenceHandleTypeFlagBitsKHR handleType;
23647 HANDLE handle;
23648 LPCWSTR name;
23649 };
23650 static_assert( sizeof( ImportFenceWin32HandleInfoKHR ) == sizeof( VkImportFenceWin32HandleInfoKHR ), "struct and wrapper have different size!" );
23651#endif /*VK_USE_PLATFORM_WIN32_KHR*/
23652
23653 struct ImportFenceFdInfoKHR
23654 {
23655 ImportFenceFdInfoKHR( Fence fence_ = Fence(), FenceImportFlagsKHR flags_ = FenceImportFlagsKHR(), ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd, int fd_ = 0 )
23656 : sType( StructureType::eImportFenceFdInfoKHR )
23657 , pNext( nullptr )
23658 , fence( fence_ )
23659 , flags( flags_ )
23660 , handleType( handleType_ )
23661 , fd( fd_ )
23662 {
23663 }
23664
23665 ImportFenceFdInfoKHR( VkImportFenceFdInfoKHR const & rhs )
23666 {
23667 memcpy( this, &rhs, sizeof( ImportFenceFdInfoKHR ) );
23668 }
23669
23670 ImportFenceFdInfoKHR& operator=( VkImportFenceFdInfoKHR const & rhs )
23671 {
23672 memcpy( this, &rhs, sizeof( ImportFenceFdInfoKHR ) );
23673 return *this;
23674 }
23675 ImportFenceFdInfoKHR& setPNext( const void* pNext_ )
23676 {
23677 pNext = pNext_;
23678 return *this;
23679 }
23680
23681 ImportFenceFdInfoKHR& setFence( Fence fence_ )
23682 {
23683 fence = fence_;
23684 return *this;
23685 }
23686
23687 ImportFenceFdInfoKHR& setFlags( FenceImportFlagsKHR flags_ )
23688 {
23689 flags = flags_;
23690 return *this;
23691 }
23692
23693 ImportFenceFdInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
23694 {
23695 handleType = handleType_;
23696 return *this;
23697 }
23698
23699 ImportFenceFdInfoKHR& setFd( int fd_ )
23700 {
23701 fd = fd_;
23702 return *this;
23703 }
23704
23705 operator const VkImportFenceFdInfoKHR&() const
23706 {
23707 return *reinterpret_cast<const VkImportFenceFdInfoKHR*>(this);
23708 }
23709
23710 bool operator==( ImportFenceFdInfoKHR const& rhs ) const
23711 {
23712 return ( sType == rhs.sType )
23713 && ( pNext == rhs.pNext )
23714 && ( fence == rhs.fence )
23715 && ( flags == rhs.flags )
23716 && ( handleType == rhs.handleType )
23717 && ( fd == rhs.fd );
23718 }
23719
23720 bool operator!=( ImportFenceFdInfoKHR const& rhs ) const
23721 {
23722 return !operator==( rhs );
23723 }
23724
23725 private:
23726 StructureType sType;
23727
23728 public:
23729 const void* pNext;
23730 Fence fence;
23731 FenceImportFlagsKHR flags;
23732 ExternalFenceHandleTypeFlagBitsKHR handleType;
23733 int fd;
23734 };
23735 static_assert( sizeof( ImportFenceFdInfoKHR ) == sizeof( VkImportFenceFdInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070023736
Mark Young39389872017-01-19 21:10:49 -070023737 enum class SurfaceCounterFlagBitsEXT
23738 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060023739 eVblank = VK_SURFACE_COUNTER_VBLANK_EXT
Mark Young39389872017-01-19 21:10:49 -070023740 };
23741
23742 using SurfaceCounterFlagsEXT = Flags<SurfaceCounterFlagBitsEXT, VkSurfaceCounterFlagsEXT>;
23743
23744 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator|( SurfaceCounterFlagBitsEXT bit0, SurfaceCounterFlagBitsEXT bit1 )
23745 {
23746 return SurfaceCounterFlagsEXT( bit0 ) | bit1;
23747 }
23748
23749 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator~( SurfaceCounterFlagBitsEXT bits )
23750 {
23751 return ~( SurfaceCounterFlagsEXT( bits ) );
23752 }
23753
23754 template <> struct FlagTraits<SurfaceCounterFlagBitsEXT>
23755 {
23756 enum
23757 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060023758 allFlags = VkFlags(SurfaceCounterFlagBitsEXT::eVblank)
Mark Young39389872017-01-19 21:10:49 -070023759 };
23760 };
23761
23762 struct SurfaceCapabilities2EXT
23763 {
23764 operator const VkSurfaceCapabilities2EXT&() const
23765 {
23766 return *reinterpret_cast<const VkSurfaceCapabilities2EXT*>(this);
23767 }
23768
23769 bool operator==( SurfaceCapabilities2EXT const& rhs ) const
23770 {
23771 return ( sType == rhs.sType )
23772 && ( pNext == rhs.pNext )
23773 && ( minImageCount == rhs.minImageCount )
23774 && ( maxImageCount == rhs.maxImageCount )
23775 && ( currentExtent == rhs.currentExtent )
23776 && ( minImageExtent == rhs.minImageExtent )
23777 && ( maxImageExtent == rhs.maxImageExtent )
23778 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
23779 && ( supportedTransforms == rhs.supportedTransforms )
23780 && ( currentTransform == rhs.currentTransform )
23781 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
23782 && ( supportedUsageFlags == rhs.supportedUsageFlags )
23783 && ( supportedSurfaceCounters == rhs.supportedSurfaceCounters );
23784 }
23785
23786 bool operator!=( SurfaceCapabilities2EXT const& rhs ) const
23787 {
23788 return !operator==( rhs );
23789 }
23790
23791 private:
23792 StructureType sType;
23793
23794 public:
23795 void* pNext;
23796 uint32_t minImageCount;
23797 uint32_t maxImageCount;
23798 Extent2D currentExtent;
23799 Extent2D minImageExtent;
23800 Extent2D maxImageExtent;
23801 uint32_t maxImageArrayLayers;
23802 SurfaceTransformFlagsKHR supportedTransforms;
23803 SurfaceTransformFlagBitsKHR currentTransform;
23804 CompositeAlphaFlagsKHR supportedCompositeAlpha;
23805 ImageUsageFlags supportedUsageFlags;
23806 SurfaceCounterFlagsEXT supportedSurfaceCounters;
23807 };
23808 static_assert( sizeof( SurfaceCapabilities2EXT ) == sizeof( VkSurfaceCapabilities2EXT ), "struct and wrapper have different size!" );
23809
23810 struct SwapchainCounterCreateInfoEXT
23811 {
23812 SwapchainCounterCreateInfoEXT( SurfaceCounterFlagsEXT surfaceCounters_ = SurfaceCounterFlagsEXT() )
23813 : sType( StructureType::eSwapchainCounterCreateInfoEXT )
23814 , pNext( nullptr )
23815 , surfaceCounters( surfaceCounters_ )
23816 {
23817 }
23818
23819 SwapchainCounterCreateInfoEXT( VkSwapchainCounterCreateInfoEXT const & rhs )
23820 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023821 memcpy( this, &rhs, sizeof( SwapchainCounterCreateInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070023822 }
23823
23824 SwapchainCounterCreateInfoEXT& operator=( VkSwapchainCounterCreateInfoEXT const & rhs )
23825 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023826 memcpy( this, &rhs, sizeof( SwapchainCounterCreateInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070023827 return *this;
23828 }
Mark Young39389872017-01-19 21:10:49 -070023829 SwapchainCounterCreateInfoEXT& setPNext( const void* pNext_ )
23830 {
23831 pNext = pNext_;
23832 return *this;
23833 }
23834
23835 SwapchainCounterCreateInfoEXT& setSurfaceCounters( SurfaceCounterFlagsEXT surfaceCounters_ )
23836 {
23837 surfaceCounters = surfaceCounters_;
23838 return *this;
23839 }
23840
23841 operator const VkSwapchainCounterCreateInfoEXT&() const
23842 {
23843 return *reinterpret_cast<const VkSwapchainCounterCreateInfoEXT*>(this);
23844 }
23845
23846 bool operator==( SwapchainCounterCreateInfoEXT const& rhs ) const
23847 {
23848 return ( sType == rhs.sType )
23849 && ( pNext == rhs.pNext )
23850 && ( surfaceCounters == rhs.surfaceCounters );
23851 }
23852
23853 bool operator!=( SwapchainCounterCreateInfoEXT const& rhs ) const
23854 {
23855 return !operator==( rhs );
23856 }
23857
23858 private:
23859 StructureType sType;
23860
23861 public:
23862 const void* pNext;
23863 SurfaceCounterFlagsEXT surfaceCounters;
23864 };
23865 static_assert( sizeof( SwapchainCounterCreateInfoEXT ) == sizeof( VkSwapchainCounterCreateInfoEXT ), "struct and wrapper have different size!" );
23866
23867 enum class DisplayPowerStateEXT
23868 {
23869 eOff = VK_DISPLAY_POWER_STATE_OFF_EXT,
23870 eSuspend = VK_DISPLAY_POWER_STATE_SUSPEND_EXT,
23871 eOn = VK_DISPLAY_POWER_STATE_ON_EXT
23872 };
23873
23874 struct DisplayPowerInfoEXT
23875 {
23876 DisplayPowerInfoEXT( DisplayPowerStateEXT powerState_ = DisplayPowerStateEXT::eOff )
23877 : sType( StructureType::eDisplayPowerInfoEXT )
23878 , pNext( nullptr )
23879 , powerState( powerState_ )
23880 {
23881 }
23882
23883 DisplayPowerInfoEXT( VkDisplayPowerInfoEXT const & rhs )
23884 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023885 memcpy( this, &rhs, sizeof( DisplayPowerInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070023886 }
23887
23888 DisplayPowerInfoEXT& operator=( VkDisplayPowerInfoEXT const & rhs )
23889 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023890 memcpy( this, &rhs, sizeof( DisplayPowerInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070023891 return *this;
23892 }
Mark Young39389872017-01-19 21:10:49 -070023893 DisplayPowerInfoEXT& setPNext( const void* pNext_ )
23894 {
23895 pNext = pNext_;
23896 return *this;
23897 }
23898
23899 DisplayPowerInfoEXT& setPowerState( DisplayPowerStateEXT powerState_ )
23900 {
23901 powerState = powerState_;
23902 return *this;
23903 }
23904
23905 operator const VkDisplayPowerInfoEXT&() const
23906 {
23907 return *reinterpret_cast<const VkDisplayPowerInfoEXT*>(this);
23908 }
23909
23910 bool operator==( DisplayPowerInfoEXT const& rhs ) const
23911 {
23912 return ( sType == rhs.sType )
23913 && ( pNext == rhs.pNext )
23914 && ( powerState == rhs.powerState );
23915 }
23916
23917 bool operator!=( DisplayPowerInfoEXT const& rhs ) const
23918 {
23919 return !operator==( rhs );
23920 }
23921
23922 private:
23923 StructureType sType;
23924
23925 public:
23926 const void* pNext;
23927 DisplayPowerStateEXT powerState;
23928 };
23929 static_assert( sizeof( DisplayPowerInfoEXT ) == sizeof( VkDisplayPowerInfoEXT ), "struct and wrapper have different size!" );
23930
23931 enum class DeviceEventTypeEXT
23932 {
23933 eDisplayHotplug = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT
23934 };
23935
23936 struct DeviceEventInfoEXT
23937 {
23938 DeviceEventInfoEXT( DeviceEventTypeEXT deviceEvent_ = DeviceEventTypeEXT::eDisplayHotplug )
23939 : sType( StructureType::eDeviceEventInfoEXT )
23940 , pNext( nullptr )
23941 , deviceEvent( deviceEvent_ )
23942 {
23943 }
23944
23945 DeviceEventInfoEXT( VkDeviceEventInfoEXT const & rhs )
23946 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023947 memcpy( this, &rhs, sizeof( DeviceEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070023948 }
23949
23950 DeviceEventInfoEXT& operator=( VkDeviceEventInfoEXT const & rhs )
23951 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023952 memcpy( this, &rhs, sizeof( DeviceEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070023953 return *this;
23954 }
Mark Young39389872017-01-19 21:10:49 -070023955 DeviceEventInfoEXT& setPNext( const void* pNext_ )
23956 {
23957 pNext = pNext_;
23958 return *this;
23959 }
23960
23961 DeviceEventInfoEXT& setDeviceEvent( DeviceEventTypeEXT deviceEvent_ )
23962 {
23963 deviceEvent = deviceEvent_;
23964 return *this;
23965 }
23966
23967 operator const VkDeviceEventInfoEXT&() const
23968 {
23969 return *reinterpret_cast<const VkDeviceEventInfoEXT*>(this);
23970 }
23971
23972 bool operator==( DeviceEventInfoEXT const& rhs ) const
23973 {
23974 return ( sType == rhs.sType )
23975 && ( pNext == rhs.pNext )
23976 && ( deviceEvent == rhs.deviceEvent );
23977 }
23978
23979 bool operator!=( DeviceEventInfoEXT const& rhs ) const
23980 {
23981 return !operator==( rhs );
23982 }
23983
23984 private:
23985 StructureType sType;
23986
23987 public:
23988 const void* pNext;
23989 DeviceEventTypeEXT deviceEvent;
23990 };
23991 static_assert( sizeof( DeviceEventInfoEXT ) == sizeof( VkDeviceEventInfoEXT ), "struct and wrapper have different size!" );
23992
23993 enum class DisplayEventTypeEXT
23994 {
23995 eFirstPixelOut = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT
23996 };
23997
23998 struct DisplayEventInfoEXT
23999 {
24000 DisplayEventInfoEXT( DisplayEventTypeEXT displayEvent_ = DisplayEventTypeEXT::eFirstPixelOut )
24001 : sType( StructureType::eDisplayEventInfoEXT )
24002 , pNext( nullptr )
24003 , displayEvent( displayEvent_ )
24004 {
24005 }
24006
24007 DisplayEventInfoEXT( VkDisplayEventInfoEXT const & rhs )
24008 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024009 memcpy( this, &rhs, sizeof( DisplayEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070024010 }
24011
24012 DisplayEventInfoEXT& operator=( VkDisplayEventInfoEXT const & rhs )
24013 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024014 memcpy( this, &rhs, sizeof( DisplayEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070024015 return *this;
24016 }
Mark Young39389872017-01-19 21:10:49 -070024017 DisplayEventInfoEXT& setPNext( const void* pNext_ )
24018 {
24019 pNext = pNext_;
24020 return *this;
24021 }
24022
24023 DisplayEventInfoEXT& setDisplayEvent( DisplayEventTypeEXT displayEvent_ )
24024 {
24025 displayEvent = displayEvent_;
24026 return *this;
24027 }
24028
24029 operator const VkDisplayEventInfoEXT&() const
24030 {
24031 return *reinterpret_cast<const VkDisplayEventInfoEXT*>(this);
24032 }
24033
24034 bool operator==( DisplayEventInfoEXT const& rhs ) const
24035 {
24036 return ( sType == rhs.sType )
24037 && ( pNext == rhs.pNext )
24038 && ( displayEvent == rhs.displayEvent );
24039 }
24040
24041 bool operator!=( DisplayEventInfoEXT const& rhs ) const
24042 {
24043 return !operator==( rhs );
24044 }
24045
24046 private:
24047 StructureType sType;
24048
24049 public:
24050 const void* pNext;
24051 DisplayEventTypeEXT displayEvent;
24052 };
24053 static_assert( sizeof( DisplayEventInfoEXT ) == sizeof( VkDisplayEventInfoEXT ), "struct and wrapper have different size!" );
24054
Mark Young0f183a82017-02-28 09:58:04 -070024055 enum class PeerMemoryFeatureFlagBitsKHX
24056 {
24057 eCopySrc = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX,
24058 eCopyDst = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX,
24059 eGenericSrc = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX,
24060 eGenericDst = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX
24061 };
24062
24063 using PeerMemoryFeatureFlagsKHX = Flags<PeerMemoryFeatureFlagBitsKHX, VkPeerMemoryFeatureFlagsKHX>;
24064
24065 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX operator|( PeerMemoryFeatureFlagBitsKHX bit0, PeerMemoryFeatureFlagBitsKHX bit1 )
24066 {
24067 return PeerMemoryFeatureFlagsKHX( bit0 ) | bit1;
24068 }
24069
24070 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX operator~( PeerMemoryFeatureFlagBitsKHX bits )
24071 {
24072 return ~( PeerMemoryFeatureFlagsKHX( bits ) );
24073 }
24074
24075 template <> struct FlagTraits<PeerMemoryFeatureFlagBitsKHX>
24076 {
24077 enum
24078 {
24079 allFlags = VkFlags(PeerMemoryFeatureFlagBitsKHX::eCopySrc) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eCopyDst) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eGenericSrc) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eGenericDst)
24080 };
24081 };
24082
24083 enum class MemoryAllocateFlagBitsKHX
24084 {
24085 eDeviceMask = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX
24086 };
24087
24088 using MemoryAllocateFlagsKHX = Flags<MemoryAllocateFlagBitsKHX, VkMemoryAllocateFlagsKHX>;
24089
24090 VULKAN_HPP_INLINE MemoryAllocateFlagsKHX operator|( MemoryAllocateFlagBitsKHX bit0, MemoryAllocateFlagBitsKHX bit1 )
24091 {
24092 return MemoryAllocateFlagsKHX( bit0 ) | bit1;
24093 }
24094
24095 VULKAN_HPP_INLINE MemoryAllocateFlagsKHX operator~( MemoryAllocateFlagBitsKHX bits )
24096 {
24097 return ~( MemoryAllocateFlagsKHX( bits ) );
24098 }
24099
24100 template <> struct FlagTraits<MemoryAllocateFlagBitsKHX>
24101 {
24102 enum
24103 {
24104 allFlags = VkFlags(MemoryAllocateFlagBitsKHX::eDeviceMask)
24105 };
24106 };
24107
24108 struct MemoryAllocateFlagsInfoKHX
24109 {
24110 MemoryAllocateFlagsInfoKHX( MemoryAllocateFlagsKHX flags_ = MemoryAllocateFlagsKHX(), uint32_t deviceMask_ = 0 )
24111 : sType( StructureType::eMemoryAllocateFlagsInfoKHX )
24112 , pNext( nullptr )
24113 , flags( flags_ )
24114 , deviceMask( deviceMask_ )
24115 {
24116 }
24117
24118 MemoryAllocateFlagsInfoKHX( VkMemoryAllocateFlagsInfoKHX const & rhs )
24119 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024120 memcpy( this, &rhs, sizeof( MemoryAllocateFlagsInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070024121 }
24122
24123 MemoryAllocateFlagsInfoKHX& operator=( VkMemoryAllocateFlagsInfoKHX const & rhs )
24124 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024125 memcpy( this, &rhs, sizeof( MemoryAllocateFlagsInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070024126 return *this;
24127 }
Mark Young0f183a82017-02-28 09:58:04 -070024128 MemoryAllocateFlagsInfoKHX& setPNext( const void* pNext_ )
24129 {
24130 pNext = pNext_;
24131 return *this;
24132 }
24133
24134 MemoryAllocateFlagsInfoKHX& setFlags( MemoryAllocateFlagsKHX flags_ )
24135 {
24136 flags = flags_;
24137 return *this;
24138 }
24139
24140 MemoryAllocateFlagsInfoKHX& setDeviceMask( uint32_t deviceMask_ )
24141 {
24142 deviceMask = deviceMask_;
24143 return *this;
24144 }
24145
24146 operator const VkMemoryAllocateFlagsInfoKHX&() const
24147 {
24148 return *reinterpret_cast<const VkMemoryAllocateFlagsInfoKHX*>(this);
24149 }
24150
24151 bool operator==( MemoryAllocateFlagsInfoKHX const& rhs ) const
24152 {
24153 return ( sType == rhs.sType )
24154 && ( pNext == rhs.pNext )
24155 && ( flags == rhs.flags )
24156 && ( deviceMask == rhs.deviceMask );
24157 }
24158
24159 bool operator!=( MemoryAllocateFlagsInfoKHX const& rhs ) const
24160 {
24161 return !operator==( rhs );
24162 }
24163
24164 private:
24165 StructureType sType;
24166
24167 public:
24168 const void* pNext;
24169 MemoryAllocateFlagsKHX flags;
24170 uint32_t deviceMask;
24171 };
24172 static_assert( sizeof( MemoryAllocateFlagsInfoKHX ) == sizeof( VkMemoryAllocateFlagsInfoKHX ), "struct and wrapper have different size!" );
24173
24174 enum class DeviceGroupPresentModeFlagBitsKHX
24175 {
24176 eLocal = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX,
24177 eRemote = VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX,
24178 eSum = VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX,
24179 eLocalMultiDevice = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX
24180 };
24181
24182 using DeviceGroupPresentModeFlagsKHX = Flags<DeviceGroupPresentModeFlagBitsKHX, VkDeviceGroupPresentModeFlagsKHX>;
24183
24184 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHX operator|( DeviceGroupPresentModeFlagBitsKHX bit0, DeviceGroupPresentModeFlagBitsKHX bit1 )
24185 {
24186 return DeviceGroupPresentModeFlagsKHX( bit0 ) | bit1;
24187 }
24188
24189 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHX operator~( DeviceGroupPresentModeFlagBitsKHX bits )
24190 {
24191 return ~( DeviceGroupPresentModeFlagsKHX( bits ) );
24192 }
24193
24194 template <> struct FlagTraits<DeviceGroupPresentModeFlagBitsKHX>
24195 {
24196 enum
24197 {
24198 allFlags = VkFlags(DeviceGroupPresentModeFlagBitsKHX::eLocal) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eRemote) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eSum) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice)
24199 };
24200 };
24201
24202 struct DeviceGroupPresentCapabilitiesKHX
24203 {
24204 operator const VkDeviceGroupPresentCapabilitiesKHX&() const
24205 {
24206 return *reinterpret_cast<const VkDeviceGroupPresentCapabilitiesKHX*>(this);
24207 }
24208
24209 bool operator==( DeviceGroupPresentCapabilitiesKHX const& rhs ) const
24210 {
24211 return ( sType == rhs.sType )
24212 && ( pNext == rhs.pNext )
24213 && ( memcmp( presentMask, rhs.presentMask, VK_MAX_DEVICE_GROUP_SIZE_KHX * sizeof( uint32_t ) ) == 0 )
24214 && ( modes == rhs.modes );
24215 }
24216
24217 bool operator!=( DeviceGroupPresentCapabilitiesKHX const& rhs ) const
24218 {
24219 return !operator==( rhs );
24220 }
24221
24222 private:
24223 StructureType sType;
24224
24225 public:
24226 const void* pNext;
24227 uint32_t presentMask[VK_MAX_DEVICE_GROUP_SIZE_KHX];
24228 DeviceGroupPresentModeFlagsKHX modes;
24229 };
24230 static_assert( sizeof( DeviceGroupPresentCapabilitiesKHX ) == sizeof( VkDeviceGroupPresentCapabilitiesKHX ), "struct and wrapper have different size!" );
24231
24232 struct DeviceGroupPresentInfoKHX
24233 {
24234 DeviceGroupPresentInfoKHX( uint32_t swapchainCount_ = 0, const uint32_t* pDeviceMasks_ = nullptr, DeviceGroupPresentModeFlagBitsKHX mode_ = DeviceGroupPresentModeFlagBitsKHX::eLocal )
24235 : sType( StructureType::eDeviceGroupPresentInfoKHX )
24236 , pNext( nullptr )
24237 , swapchainCount( swapchainCount_ )
24238 , pDeviceMasks( pDeviceMasks_ )
24239 , mode( mode_ )
24240 {
24241 }
24242
24243 DeviceGroupPresentInfoKHX( VkDeviceGroupPresentInfoKHX const & rhs )
24244 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024245 memcpy( this, &rhs, sizeof( DeviceGroupPresentInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070024246 }
24247
24248 DeviceGroupPresentInfoKHX& operator=( VkDeviceGroupPresentInfoKHX const & rhs )
24249 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024250 memcpy( this, &rhs, sizeof( DeviceGroupPresentInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070024251 return *this;
24252 }
Mark Young0f183a82017-02-28 09:58:04 -070024253 DeviceGroupPresentInfoKHX& setPNext( const void* pNext_ )
24254 {
24255 pNext = pNext_;
24256 return *this;
24257 }
24258
24259 DeviceGroupPresentInfoKHX& setSwapchainCount( uint32_t swapchainCount_ )
24260 {
24261 swapchainCount = swapchainCount_;
24262 return *this;
24263 }
24264
24265 DeviceGroupPresentInfoKHX& setPDeviceMasks( const uint32_t* pDeviceMasks_ )
24266 {
24267 pDeviceMasks = pDeviceMasks_;
24268 return *this;
24269 }
24270
24271 DeviceGroupPresentInfoKHX& setMode( DeviceGroupPresentModeFlagBitsKHX mode_ )
24272 {
24273 mode = mode_;
24274 return *this;
24275 }
24276
24277 operator const VkDeviceGroupPresentInfoKHX&() const
24278 {
24279 return *reinterpret_cast<const VkDeviceGroupPresentInfoKHX*>(this);
24280 }
24281
24282 bool operator==( DeviceGroupPresentInfoKHX const& rhs ) const
24283 {
24284 return ( sType == rhs.sType )
24285 && ( pNext == rhs.pNext )
24286 && ( swapchainCount == rhs.swapchainCount )
24287 && ( pDeviceMasks == rhs.pDeviceMasks )
24288 && ( mode == rhs.mode );
24289 }
24290
24291 bool operator!=( DeviceGroupPresentInfoKHX const& rhs ) const
24292 {
24293 return !operator==( rhs );
24294 }
24295
24296 private:
24297 StructureType sType;
24298
24299 public:
24300 const void* pNext;
24301 uint32_t swapchainCount;
24302 const uint32_t* pDeviceMasks;
24303 DeviceGroupPresentModeFlagBitsKHX mode;
24304 };
24305 static_assert( sizeof( DeviceGroupPresentInfoKHX ) == sizeof( VkDeviceGroupPresentInfoKHX ), "struct and wrapper have different size!" );
24306
24307 struct DeviceGroupSwapchainCreateInfoKHX
24308 {
24309 DeviceGroupSwapchainCreateInfoKHX( DeviceGroupPresentModeFlagsKHX modes_ = DeviceGroupPresentModeFlagsKHX() )
24310 : sType( StructureType::eDeviceGroupSwapchainCreateInfoKHX )
24311 , pNext( nullptr )
24312 , modes( modes_ )
24313 {
24314 }
24315
24316 DeviceGroupSwapchainCreateInfoKHX( VkDeviceGroupSwapchainCreateInfoKHX const & rhs )
24317 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024318 memcpy( this, &rhs, sizeof( DeviceGroupSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070024319 }
24320
24321 DeviceGroupSwapchainCreateInfoKHX& operator=( VkDeviceGroupSwapchainCreateInfoKHX const & rhs )
24322 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024323 memcpy( this, &rhs, sizeof( DeviceGroupSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070024324 return *this;
24325 }
Mark Young0f183a82017-02-28 09:58:04 -070024326 DeviceGroupSwapchainCreateInfoKHX& setPNext( const void* pNext_ )
24327 {
24328 pNext = pNext_;
24329 return *this;
24330 }
24331
24332 DeviceGroupSwapchainCreateInfoKHX& setModes( DeviceGroupPresentModeFlagsKHX modes_ )
24333 {
24334 modes = modes_;
24335 return *this;
24336 }
24337
24338 operator const VkDeviceGroupSwapchainCreateInfoKHX&() const
24339 {
24340 return *reinterpret_cast<const VkDeviceGroupSwapchainCreateInfoKHX*>(this);
24341 }
24342
24343 bool operator==( DeviceGroupSwapchainCreateInfoKHX const& rhs ) const
24344 {
24345 return ( sType == rhs.sType )
24346 && ( pNext == rhs.pNext )
24347 && ( modes == rhs.modes );
24348 }
24349
24350 bool operator!=( DeviceGroupSwapchainCreateInfoKHX const& rhs ) const
24351 {
24352 return !operator==( rhs );
24353 }
24354
24355 private:
24356 StructureType sType;
24357
24358 public:
24359 const void* pNext;
24360 DeviceGroupPresentModeFlagsKHX modes;
24361 };
24362 static_assert( sizeof( DeviceGroupSwapchainCreateInfoKHX ) == sizeof( VkDeviceGroupSwapchainCreateInfoKHX ), "struct and wrapper have different size!" );
24363
24364 enum class SwapchainCreateFlagBitsKHR
24365 {
24366 eBindSfrKHX = VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX
24367 };
24368
24369 using SwapchainCreateFlagsKHR = Flags<SwapchainCreateFlagBitsKHR, VkSwapchainCreateFlagsKHR>;
24370
24371 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator|( SwapchainCreateFlagBitsKHR bit0, SwapchainCreateFlagBitsKHR bit1 )
24372 {
24373 return SwapchainCreateFlagsKHR( bit0 ) | bit1;
24374 }
24375
24376 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator~( SwapchainCreateFlagBitsKHR bits )
24377 {
24378 return ~( SwapchainCreateFlagsKHR( bits ) );
24379 }
24380
24381 template <> struct FlagTraits<SwapchainCreateFlagBitsKHR>
24382 {
24383 enum
24384 {
24385 allFlags = VkFlags(SwapchainCreateFlagBitsKHR::eBindSfrKHX)
24386 };
24387 };
24388
24389 struct SwapchainCreateInfoKHR
24390 {
24391 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() )
24392 : sType( StructureType::eSwapchainCreateInfoKHR )
24393 , pNext( nullptr )
24394 , flags( flags_ )
24395 , surface( surface_ )
24396 , minImageCount( minImageCount_ )
24397 , imageFormat( imageFormat_ )
24398 , imageColorSpace( imageColorSpace_ )
24399 , imageExtent( imageExtent_ )
24400 , imageArrayLayers( imageArrayLayers_ )
24401 , imageUsage( imageUsage_ )
24402 , imageSharingMode( imageSharingMode_ )
24403 , queueFamilyIndexCount( queueFamilyIndexCount_ )
24404 , pQueueFamilyIndices( pQueueFamilyIndices_ )
24405 , preTransform( preTransform_ )
24406 , compositeAlpha( compositeAlpha_ )
24407 , presentMode( presentMode_ )
24408 , clipped( clipped_ )
24409 , oldSwapchain( oldSwapchain_ )
24410 {
24411 }
24412
24413 SwapchainCreateInfoKHR( VkSwapchainCreateInfoKHR const & rhs )
24414 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024415 memcpy( this, &rhs, sizeof( SwapchainCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070024416 }
24417
24418 SwapchainCreateInfoKHR& operator=( VkSwapchainCreateInfoKHR const & rhs )
24419 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024420 memcpy( this, &rhs, sizeof( SwapchainCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070024421 return *this;
24422 }
Mark Young0f183a82017-02-28 09:58:04 -070024423 SwapchainCreateInfoKHR& setPNext( const void* pNext_ )
24424 {
24425 pNext = pNext_;
24426 return *this;
24427 }
24428
24429 SwapchainCreateInfoKHR& setFlags( SwapchainCreateFlagsKHR flags_ )
24430 {
24431 flags = flags_;
24432 return *this;
24433 }
24434
24435 SwapchainCreateInfoKHR& setSurface( SurfaceKHR surface_ )
24436 {
24437 surface = surface_;
24438 return *this;
24439 }
24440
24441 SwapchainCreateInfoKHR& setMinImageCount( uint32_t minImageCount_ )
24442 {
24443 minImageCount = minImageCount_;
24444 return *this;
24445 }
24446
24447 SwapchainCreateInfoKHR& setImageFormat( Format imageFormat_ )
24448 {
24449 imageFormat = imageFormat_;
24450 return *this;
24451 }
24452
24453 SwapchainCreateInfoKHR& setImageColorSpace( ColorSpaceKHR imageColorSpace_ )
24454 {
24455 imageColorSpace = imageColorSpace_;
24456 return *this;
24457 }
24458
24459 SwapchainCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
24460 {
24461 imageExtent = imageExtent_;
24462 return *this;
24463 }
24464
24465 SwapchainCreateInfoKHR& setImageArrayLayers( uint32_t imageArrayLayers_ )
24466 {
24467 imageArrayLayers = imageArrayLayers_;
24468 return *this;
24469 }
24470
24471 SwapchainCreateInfoKHR& setImageUsage( ImageUsageFlags imageUsage_ )
24472 {
24473 imageUsage = imageUsage_;
24474 return *this;
24475 }
24476
24477 SwapchainCreateInfoKHR& setImageSharingMode( SharingMode imageSharingMode_ )
24478 {
24479 imageSharingMode = imageSharingMode_;
24480 return *this;
24481 }
24482
24483 SwapchainCreateInfoKHR& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
24484 {
24485 queueFamilyIndexCount = queueFamilyIndexCount_;
24486 return *this;
24487 }
24488
24489 SwapchainCreateInfoKHR& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
24490 {
24491 pQueueFamilyIndices = pQueueFamilyIndices_;
24492 return *this;
24493 }
24494
24495 SwapchainCreateInfoKHR& setPreTransform( SurfaceTransformFlagBitsKHR preTransform_ )
24496 {
24497 preTransform = preTransform_;
24498 return *this;
24499 }
24500
24501 SwapchainCreateInfoKHR& setCompositeAlpha( CompositeAlphaFlagBitsKHR compositeAlpha_ )
24502 {
24503 compositeAlpha = compositeAlpha_;
24504 return *this;
24505 }
24506
24507 SwapchainCreateInfoKHR& setPresentMode( PresentModeKHR presentMode_ )
24508 {
24509 presentMode = presentMode_;
24510 return *this;
24511 }
24512
24513 SwapchainCreateInfoKHR& setClipped( Bool32 clipped_ )
24514 {
24515 clipped = clipped_;
24516 return *this;
24517 }
24518
24519 SwapchainCreateInfoKHR& setOldSwapchain( SwapchainKHR oldSwapchain_ )
24520 {
24521 oldSwapchain = oldSwapchain_;
24522 return *this;
24523 }
24524
24525 operator const VkSwapchainCreateInfoKHR&() const
24526 {
24527 return *reinterpret_cast<const VkSwapchainCreateInfoKHR*>(this);
24528 }
24529
24530 bool operator==( SwapchainCreateInfoKHR const& rhs ) const
24531 {
24532 return ( sType == rhs.sType )
24533 && ( pNext == rhs.pNext )
24534 && ( flags == rhs.flags )
24535 && ( surface == rhs.surface )
24536 && ( minImageCount == rhs.minImageCount )
24537 && ( imageFormat == rhs.imageFormat )
24538 && ( imageColorSpace == rhs.imageColorSpace )
24539 && ( imageExtent == rhs.imageExtent )
24540 && ( imageArrayLayers == rhs.imageArrayLayers )
24541 && ( imageUsage == rhs.imageUsage )
24542 && ( imageSharingMode == rhs.imageSharingMode )
24543 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
24544 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
24545 && ( preTransform == rhs.preTransform )
24546 && ( compositeAlpha == rhs.compositeAlpha )
24547 && ( presentMode == rhs.presentMode )
24548 && ( clipped == rhs.clipped )
24549 && ( oldSwapchain == rhs.oldSwapchain );
24550 }
24551
24552 bool operator!=( SwapchainCreateInfoKHR const& rhs ) const
24553 {
24554 return !operator==( rhs );
24555 }
24556
24557 private:
24558 StructureType sType;
24559
24560 public:
24561 const void* pNext;
24562 SwapchainCreateFlagsKHR flags;
24563 SurfaceKHR surface;
24564 uint32_t minImageCount;
24565 Format imageFormat;
24566 ColorSpaceKHR imageColorSpace;
24567 Extent2D imageExtent;
24568 uint32_t imageArrayLayers;
24569 ImageUsageFlags imageUsage;
24570 SharingMode imageSharingMode;
24571 uint32_t queueFamilyIndexCount;
24572 const uint32_t* pQueueFamilyIndices;
24573 SurfaceTransformFlagBitsKHR preTransform;
24574 CompositeAlphaFlagBitsKHR compositeAlpha;
24575 PresentModeKHR presentMode;
24576 Bool32 clipped;
24577 SwapchainKHR oldSwapchain;
24578 };
24579 static_assert( sizeof( SwapchainCreateInfoKHR ) == sizeof( VkSwapchainCreateInfoKHR ), "struct and wrapper have different size!" );
24580
24581 enum class ViewportCoordinateSwizzleNV
24582 {
24583 ePositiveX = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV,
24584 eNegativeX = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV,
24585 ePositiveY = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV,
24586 eNegativeY = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV,
24587 ePositiveZ = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV,
24588 eNegativeZ = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV,
24589 ePositiveW = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV,
24590 eNegativeW = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV
24591 };
24592
24593 struct ViewportSwizzleNV
24594 {
24595 ViewportSwizzleNV( ViewportCoordinateSwizzleNV x_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV y_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV z_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV w_ = ViewportCoordinateSwizzleNV::ePositiveX )
24596 : x( x_ )
24597 , y( y_ )
24598 , z( z_ )
24599 , w( w_ )
24600 {
24601 }
24602
24603 ViewportSwizzleNV( VkViewportSwizzleNV const & rhs )
24604 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024605 memcpy( this, &rhs, sizeof( ViewportSwizzleNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070024606 }
24607
24608 ViewportSwizzleNV& operator=( VkViewportSwizzleNV const & rhs )
24609 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024610 memcpy( this, &rhs, sizeof( ViewportSwizzleNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070024611 return *this;
24612 }
Mark Young0f183a82017-02-28 09:58:04 -070024613 ViewportSwizzleNV& setX( ViewportCoordinateSwizzleNV x_ )
24614 {
24615 x = x_;
24616 return *this;
24617 }
24618
24619 ViewportSwizzleNV& setY( ViewportCoordinateSwizzleNV y_ )
24620 {
24621 y = y_;
24622 return *this;
24623 }
24624
24625 ViewportSwizzleNV& setZ( ViewportCoordinateSwizzleNV z_ )
24626 {
24627 z = z_;
24628 return *this;
24629 }
24630
24631 ViewportSwizzleNV& setW( ViewportCoordinateSwizzleNV w_ )
24632 {
24633 w = w_;
24634 return *this;
24635 }
24636
24637 operator const VkViewportSwizzleNV&() const
24638 {
24639 return *reinterpret_cast<const VkViewportSwizzleNV*>(this);
24640 }
24641
24642 bool operator==( ViewportSwizzleNV const& rhs ) const
24643 {
24644 return ( x == rhs.x )
24645 && ( y == rhs.y )
24646 && ( z == rhs.z )
24647 && ( w == rhs.w );
24648 }
24649
24650 bool operator!=( ViewportSwizzleNV const& rhs ) const
24651 {
24652 return !operator==( rhs );
24653 }
24654
24655 ViewportCoordinateSwizzleNV x;
24656 ViewportCoordinateSwizzleNV y;
24657 ViewportCoordinateSwizzleNV z;
24658 ViewportCoordinateSwizzleNV w;
24659 };
24660 static_assert( sizeof( ViewportSwizzleNV ) == sizeof( VkViewportSwizzleNV ), "struct and wrapper have different size!" );
24661
24662 struct PipelineViewportSwizzleStateCreateInfoNV
24663 {
24664 PipelineViewportSwizzleStateCreateInfoNV( PipelineViewportSwizzleStateCreateFlagsNV flags_ = PipelineViewportSwizzleStateCreateFlagsNV(), uint32_t viewportCount_ = 0, const ViewportSwizzleNV* pViewportSwizzles_ = nullptr )
24665 : sType( StructureType::ePipelineViewportSwizzleStateCreateInfoNV )
24666 , pNext( nullptr )
24667 , flags( flags_ )
24668 , viewportCount( viewportCount_ )
24669 , pViewportSwizzles( pViewportSwizzles_ )
24670 {
24671 }
24672
24673 PipelineViewportSwizzleStateCreateInfoNV( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
24674 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024675 memcpy( this, &rhs, sizeof( PipelineViewportSwizzleStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070024676 }
24677
24678 PipelineViewportSwizzleStateCreateInfoNV& operator=( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
24679 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024680 memcpy( this, &rhs, sizeof( PipelineViewportSwizzleStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070024681 return *this;
24682 }
Mark Young0f183a82017-02-28 09:58:04 -070024683 PipelineViewportSwizzleStateCreateInfoNV& setPNext( const void* pNext_ )
24684 {
24685 pNext = pNext_;
24686 return *this;
24687 }
24688
24689 PipelineViewportSwizzleStateCreateInfoNV& setFlags( PipelineViewportSwizzleStateCreateFlagsNV flags_ )
24690 {
24691 flags = flags_;
24692 return *this;
24693 }
24694
24695 PipelineViewportSwizzleStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
24696 {
24697 viewportCount = viewportCount_;
24698 return *this;
24699 }
24700
24701 PipelineViewportSwizzleStateCreateInfoNV& setPViewportSwizzles( const ViewportSwizzleNV* pViewportSwizzles_ )
24702 {
24703 pViewportSwizzles = pViewportSwizzles_;
24704 return *this;
24705 }
24706
24707 operator const VkPipelineViewportSwizzleStateCreateInfoNV&() const
24708 {
24709 return *reinterpret_cast<const VkPipelineViewportSwizzleStateCreateInfoNV*>(this);
24710 }
24711
24712 bool operator==( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
24713 {
24714 return ( sType == rhs.sType )
24715 && ( pNext == rhs.pNext )
24716 && ( flags == rhs.flags )
24717 && ( viewportCount == rhs.viewportCount )
24718 && ( pViewportSwizzles == rhs.pViewportSwizzles );
24719 }
24720
24721 bool operator!=( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
24722 {
24723 return !operator==( rhs );
24724 }
24725
24726 private:
24727 StructureType sType;
24728
24729 public:
24730 const void* pNext;
24731 PipelineViewportSwizzleStateCreateFlagsNV flags;
24732 uint32_t viewportCount;
24733 const ViewportSwizzleNV* pViewportSwizzles;
24734 };
24735 static_assert( sizeof( PipelineViewportSwizzleStateCreateInfoNV ) == sizeof( VkPipelineViewportSwizzleStateCreateInfoNV ), "struct and wrapper have different size!" );
24736
24737 enum class DiscardRectangleModeEXT
24738 {
24739 eInclusive = VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT,
24740 eExclusive = VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT
24741 };
24742
24743 struct PipelineDiscardRectangleStateCreateInfoEXT
24744 {
24745 PipelineDiscardRectangleStateCreateInfoEXT( PipelineDiscardRectangleStateCreateFlagsEXT flags_ = PipelineDiscardRectangleStateCreateFlagsEXT(), DiscardRectangleModeEXT discardRectangleMode_ = DiscardRectangleModeEXT::eInclusive, uint32_t discardRectangleCount_ = 0, const Rect2D* pDiscardRectangles_ = nullptr )
24746 : sType( StructureType::ePipelineDiscardRectangleStateCreateInfoEXT )
24747 , pNext( nullptr )
24748 , flags( flags_ )
24749 , discardRectangleMode( discardRectangleMode_ )
24750 , discardRectangleCount( discardRectangleCount_ )
24751 , pDiscardRectangles( pDiscardRectangles_ )
24752 {
24753 }
24754
24755 PipelineDiscardRectangleStateCreateInfoEXT( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
24756 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024757 memcpy( this, &rhs, sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070024758 }
24759
24760 PipelineDiscardRectangleStateCreateInfoEXT& operator=( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
24761 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024762 memcpy( this, &rhs, sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070024763 return *this;
24764 }
Mark Young0f183a82017-02-28 09:58:04 -070024765 PipelineDiscardRectangleStateCreateInfoEXT& setPNext( const void* pNext_ )
24766 {
24767 pNext = pNext_;
24768 return *this;
24769 }
24770
24771 PipelineDiscardRectangleStateCreateInfoEXT& setFlags( PipelineDiscardRectangleStateCreateFlagsEXT flags_ )
24772 {
24773 flags = flags_;
24774 return *this;
24775 }
24776
24777 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleMode( DiscardRectangleModeEXT discardRectangleMode_ )
24778 {
24779 discardRectangleMode = discardRectangleMode_;
24780 return *this;
24781 }
24782
24783 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleCount( uint32_t discardRectangleCount_ )
24784 {
24785 discardRectangleCount = discardRectangleCount_;
24786 return *this;
24787 }
24788
24789 PipelineDiscardRectangleStateCreateInfoEXT& setPDiscardRectangles( const Rect2D* pDiscardRectangles_ )
24790 {
24791 pDiscardRectangles = pDiscardRectangles_;
24792 return *this;
24793 }
24794
24795 operator const VkPipelineDiscardRectangleStateCreateInfoEXT&() const
24796 {
24797 return *reinterpret_cast<const VkPipelineDiscardRectangleStateCreateInfoEXT*>(this);
24798 }
24799
24800 bool operator==( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
24801 {
24802 return ( sType == rhs.sType )
24803 && ( pNext == rhs.pNext )
24804 && ( flags == rhs.flags )
24805 && ( discardRectangleMode == rhs.discardRectangleMode )
24806 && ( discardRectangleCount == rhs.discardRectangleCount )
24807 && ( pDiscardRectangles == rhs.pDiscardRectangles );
24808 }
24809
24810 bool operator!=( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
24811 {
24812 return !operator==( rhs );
24813 }
24814
24815 private:
24816 StructureType sType;
24817
24818 public:
24819 const void* pNext;
24820 PipelineDiscardRectangleStateCreateFlagsEXT flags;
24821 DiscardRectangleModeEXT discardRectangleMode;
24822 uint32_t discardRectangleCount;
24823 const Rect2D* pDiscardRectangles;
24824 };
24825 static_assert( sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) == sizeof( VkPipelineDiscardRectangleStateCreateInfoEXT ), "struct and wrapper have different size!" );
24826
24827 enum class SubpassDescriptionFlagBits
24828 {
24829 ePerViewAttributesNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX,
24830 ePerViewPositionXOnlyNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX
24831 };
24832
24833 using SubpassDescriptionFlags = Flags<SubpassDescriptionFlagBits, VkSubpassDescriptionFlags>;
24834
24835 VULKAN_HPP_INLINE SubpassDescriptionFlags operator|( SubpassDescriptionFlagBits bit0, SubpassDescriptionFlagBits bit1 )
24836 {
24837 return SubpassDescriptionFlags( bit0 ) | bit1;
24838 }
24839
24840 VULKAN_HPP_INLINE SubpassDescriptionFlags operator~( SubpassDescriptionFlagBits bits )
24841 {
24842 return ~( SubpassDescriptionFlags( bits ) );
24843 }
24844
24845 template <> struct FlagTraits<SubpassDescriptionFlagBits>
24846 {
24847 enum
24848 {
24849 allFlags = VkFlags(SubpassDescriptionFlagBits::ePerViewAttributesNVX) | VkFlags(SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX)
24850 };
24851 };
24852
24853 struct SubpassDescription
24854 {
24855 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 )
24856 : flags( flags_ )
24857 , pipelineBindPoint( pipelineBindPoint_ )
24858 , inputAttachmentCount( inputAttachmentCount_ )
24859 , pInputAttachments( pInputAttachments_ )
24860 , colorAttachmentCount( colorAttachmentCount_ )
24861 , pColorAttachments( pColorAttachments_ )
24862 , pResolveAttachments( pResolveAttachments_ )
24863 , pDepthStencilAttachment( pDepthStencilAttachment_ )
24864 , preserveAttachmentCount( preserveAttachmentCount_ )
24865 , pPreserveAttachments( pPreserveAttachments_ )
24866 {
24867 }
24868
24869 SubpassDescription( VkSubpassDescription const & rhs )
24870 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024871 memcpy( this, &rhs, sizeof( SubpassDescription ) );
Mark Young0f183a82017-02-28 09:58:04 -070024872 }
24873
24874 SubpassDescription& operator=( VkSubpassDescription const & rhs )
24875 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024876 memcpy( this, &rhs, sizeof( SubpassDescription ) );
Mark Young0f183a82017-02-28 09:58:04 -070024877 return *this;
24878 }
Mark Young0f183a82017-02-28 09:58:04 -070024879 SubpassDescription& setFlags( SubpassDescriptionFlags flags_ )
24880 {
24881 flags = flags_;
24882 return *this;
24883 }
24884
24885 SubpassDescription& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
24886 {
24887 pipelineBindPoint = pipelineBindPoint_;
24888 return *this;
24889 }
24890
24891 SubpassDescription& setInputAttachmentCount( uint32_t inputAttachmentCount_ )
24892 {
24893 inputAttachmentCount = inputAttachmentCount_;
24894 return *this;
24895 }
24896
24897 SubpassDescription& setPInputAttachments( const AttachmentReference* pInputAttachments_ )
24898 {
24899 pInputAttachments = pInputAttachments_;
24900 return *this;
24901 }
24902
24903 SubpassDescription& setColorAttachmentCount( uint32_t colorAttachmentCount_ )
24904 {
24905 colorAttachmentCount = colorAttachmentCount_;
24906 return *this;
24907 }
24908
24909 SubpassDescription& setPColorAttachments( const AttachmentReference* pColorAttachments_ )
24910 {
24911 pColorAttachments = pColorAttachments_;
24912 return *this;
24913 }
24914
24915 SubpassDescription& setPResolveAttachments( const AttachmentReference* pResolveAttachments_ )
24916 {
24917 pResolveAttachments = pResolveAttachments_;
24918 return *this;
24919 }
24920
24921 SubpassDescription& setPDepthStencilAttachment( const AttachmentReference* pDepthStencilAttachment_ )
24922 {
24923 pDepthStencilAttachment = pDepthStencilAttachment_;
24924 return *this;
24925 }
24926
24927 SubpassDescription& setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ )
24928 {
24929 preserveAttachmentCount = preserveAttachmentCount_;
24930 return *this;
24931 }
24932
24933 SubpassDescription& setPPreserveAttachments( const uint32_t* pPreserveAttachments_ )
24934 {
24935 pPreserveAttachments = pPreserveAttachments_;
24936 return *this;
24937 }
24938
24939 operator const VkSubpassDescription&() const
24940 {
24941 return *reinterpret_cast<const VkSubpassDescription*>(this);
24942 }
24943
24944 bool operator==( SubpassDescription const& rhs ) const
24945 {
24946 return ( flags == rhs.flags )
24947 && ( pipelineBindPoint == rhs.pipelineBindPoint )
24948 && ( inputAttachmentCount == rhs.inputAttachmentCount )
24949 && ( pInputAttachments == rhs.pInputAttachments )
24950 && ( colorAttachmentCount == rhs.colorAttachmentCount )
24951 && ( pColorAttachments == rhs.pColorAttachments )
24952 && ( pResolveAttachments == rhs.pResolveAttachments )
24953 && ( pDepthStencilAttachment == rhs.pDepthStencilAttachment )
24954 && ( preserveAttachmentCount == rhs.preserveAttachmentCount )
24955 && ( pPreserveAttachments == rhs.pPreserveAttachments );
24956 }
24957
24958 bool operator!=( SubpassDescription const& rhs ) const
24959 {
24960 return !operator==( rhs );
24961 }
24962
24963 SubpassDescriptionFlags flags;
24964 PipelineBindPoint pipelineBindPoint;
24965 uint32_t inputAttachmentCount;
24966 const AttachmentReference* pInputAttachments;
24967 uint32_t colorAttachmentCount;
24968 const AttachmentReference* pColorAttachments;
24969 const AttachmentReference* pResolveAttachments;
24970 const AttachmentReference* pDepthStencilAttachment;
24971 uint32_t preserveAttachmentCount;
24972 const uint32_t* pPreserveAttachments;
24973 };
24974 static_assert( sizeof( SubpassDescription ) == sizeof( VkSubpassDescription ), "struct and wrapper have different size!" );
24975
24976 struct RenderPassCreateInfo
24977 {
24978 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 )
24979 : sType( StructureType::eRenderPassCreateInfo )
24980 , pNext( nullptr )
24981 , flags( flags_ )
24982 , attachmentCount( attachmentCount_ )
24983 , pAttachments( pAttachments_ )
24984 , subpassCount( subpassCount_ )
24985 , pSubpasses( pSubpasses_ )
24986 , dependencyCount( dependencyCount_ )
24987 , pDependencies( pDependencies_ )
24988 {
24989 }
24990
24991 RenderPassCreateInfo( VkRenderPassCreateInfo const & rhs )
24992 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024993 memcpy( this, &rhs, sizeof( RenderPassCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070024994 }
24995
24996 RenderPassCreateInfo& operator=( VkRenderPassCreateInfo const & rhs )
24997 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024998 memcpy( this, &rhs, sizeof( RenderPassCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070024999 return *this;
25000 }
Mark Young0f183a82017-02-28 09:58:04 -070025001 RenderPassCreateInfo& setPNext( const void* pNext_ )
25002 {
25003 pNext = pNext_;
25004 return *this;
25005 }
25006
25007 RenderPassCreateInfo& setFlags( RenderPassCreateFlags flags_ )
25008 {
25009 flags = flags_;
25010 return *this;
25011 }
25012
25013 RenderPassCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
25014 {
25015 attachmentCount = attachmentCount_;
25016 return *this;
25017 }
25018
25019 RenderPassCreateInfo& setPAttachments( const AttachmentDescription* pAttachments_ )
25020 {
25021 pAttachments = pAttachments_;
25022 return *this;
25023 }
25024
25025 RenderPassCreateInfo& setSubpassCount( uint32_t subpassCount_ )
25026 {
25027 subpassCount = subpassCount_;
25028 return *this;
25029 }
25030
25031 RenderPassCreateInfo& setPSubpasses( const SubpassDescription* pSubpasses_ )
25032 {
25033 pSubpasses = pSubpasses_;
25034 return *this;
25035 }
25036
25037 RenderPassCreateInfo& setDependencyCount( uint32_t dependencyCount_ )
25038 {
25039 dependencyCount = dependencyCount_;
25040 return *this;
25041 }
25042
25043 RenderPassCreateInfo& setPDependencies( const SubpassDependency* pDependencies_ )
25044 {
25045 pDependencies = pDependencies_;
25046 return *this;
25047 }
25048
25049 operator const VkRenderPassCreateInfo&() const
25050 {
25051 return *reinterpret_cast<const VkRenderPassCreateInfo*>(this);
25052 }
25053
25054 bool operator==( RenderPassCreateInfo const& rhs ) const
25055 {
25056 return ( sType == rhs.sType )
25057 && ( pNext == rhs.pNext )
25058 && ( flags == rhs.flags )
25059 && ( attachmentCount == rhs.attachmentCount )
25060 && ( pAttachments == rhs.pAttachments )
25061 && ( subpassCount == rhs.subpassCount )
25062 && ( pSubpasses == rhs.pSubpasses )
25063 && ( dependencyCount == rhs.dependencyCount )
25064 && ( pDependencies == rhs.pDependencies );
25065 }
25066
25067 bool operator!=( RenderPassCreateInfo const& rhs ) const
25068 {
25069 return !operator==( rhs );
25070 }
25071
25072 private:
25073 StructureType sType;
25074
25075 public:
25076 const void* pNext;
25077 RenderPassCreateFlags flags;
25078 uint32_t attachmentCount;
25079 const AttachmentDescription* pAttachments;
25080 uint32_t subpassCount;
25081 const SubpassDescription* pSubpasses;
25082 uint32_t dependencyCount;
25083 const SubpassDependency* pDependencies;
25084 };
25085 static_assert( sizeof( RenderPassCreateInfo ) == sizeof( VkRenderPassCreateInfo ), "struct and wrapper have different size!" );
25086
Lenny Komowb79f04a2017-09-18 17:07:00 -060025087 enum class PointClippingBehaviorKHR
25088 {
25089 eAllClipPlanes = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR,
25090 eUserClipPlanesOnly = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR
25091 };
25092
25093 struct PhysicalDevicePointClippingPropertiesKHR
25094 {
25095 operator const VkPhysicalDevicePointClippingPropertiesKHR&() const
25096 {
25097 return *reinterpret_cast<const VkPhysicalDevicePointClippingPropertiesKHR*>(this);
25098 }
25099
25100 bool operator==( PhysicalDevicePointClippingPropertiesKHR const& rhs ) const
25101 {
25102 return ( sType == rhs.sType )
25103 && ( pNext == rhs.pNext )
25104 && ( pointClippingBehavior == rhs.pointClippingBehavior );
25105 }
25106
25107 bool operator!=( PhysicalDevicePointClippingPropertiesKHR const& rhs ) const
25108 {
25109 return !operator==( rhs );
25110 }
25111
25112 private:
25113 StructureType sType;
25114
25115 public:
25116 void* pNext;
25117 PointClippingBehaviorKHR pointClippingBehavior;
25118 };
25119 static_assert( sizeof( PhysicalDevicePointClippingPropertiesKHR ) == sizeof( VkPhysicalDevicePointClippingPropertiesKHR ), "struct and wrapper have different size!" );
25120
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060025121 enum class SamplerReductionModeEXT
25122 {
25123 eWeightedAverage = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT,
25124 eMin = VK_SAMPLER_REDUCTION_MODE_MIN_EXT,
25125 eMax = VK_SAMPLER_REDUCTION_MODE_MAX_EXT
25126 };
25127
25128 struct SamplerReductionModeCreateInfoEXT
25129 {
25130 SamplerReductionModeCreateInfoEXT( SamplerReductionModeEXT reductionMode_ = SamplerReductionModeEXT::eWeightedAverage )
25131 : sType( StructureType::eSamplerReductionModeCreateInfoEXT )
25132 , pNext( nullptr )
25133 , reductionMode( reductionMode_ )
25134 {
25135 }
25136
25137 SamplerReductionModeCreateInfoEXT( VkSamplerReductionModeCreateInfoEXT const & rhs )
25138 {
25139 memcpy( this, &rhs, sizeof( SamplerReductionModeCreateInfoEXT ) );
25140 }
25141
25142 SamplerReductionModeCreateInfoEXT& operator=( VkSamplerReductionModeCreateInfoEXT const & rhs )
25143 {
25144 memcpy( this, &rhs, sizeof( SamplerReductionModeCreateInfoEXT ) );
25145 return *this;
25146 }
25147 SamplerReductionModeCreateInfoEXT& setPNext( const void* pNext_ )
25148 {
25149 pNext = pNext_;
25150 return *this;
25151 }
25152
25153 SamplerReductionModeCreateInfoEXT& setReductionMode( SamplerReductionModeEXT reductionMode_ )
25154 {
25155 reductionMode = reductionMode_;
25156 return *this;
25157 }
25158
25159 operator const VkSamplerReductionModeCreateInfoEXT&() const
25160 {
25161 return *reinterpret_cast<const VkSamplerReductionModeCreateInfoEXT*>(this);
25162 }
25163
25164 bool operator==( SamplerReductionModeCreateInfoEXT const& rhs ) const
25165 {
25166 return ( sType == rhs.sType )
25167 && ( pNext == rhs.pNext )
25168 && ( reductionMode == rhs.reductionMode );
25169 }
25170
25171 bool operator!=( SamplerReductionModeCreateInfoEXT const& rhs ) const
25172 {
25173 return !operator==( rhs );
25174 }
25175
25176 private:
25177 StructureType sType;
25178
25179 public:
25180 const void* pNext;
25181 SamplerReductionModeEXT reductionMode;
25182 };
25183 static_assert( sizeof( SamplerReductionModeCreateInfoEXT ) == sizeof( VkSamplerReductionModeCreateInfoEXT ), "struct and wrapper have different size!" );
25184
Lenny Komowb79f04a2017-09-18 17:07:00 -060025185 enum class TessellationDomainOriginKHR
25186 {
25187 eUpperLeft = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR,
25188 eLowerLeft = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR
25189 };
25190
25191 struct PipelineTessellationDomainOriginStateCreateInfoKHR
25192 {
25193 PipelineTessellationDomainOriginStateCreateInfoKHR( TessellationDomainOriginKHR domainOrigin_ = TessellationDomainOriginKHR::eUpperLeft )
25194 : sType( StructureType::ePipelineTessellationDomainOriginStateCreateInfoKHR )
25195 , pNext( nullptr )
25196 , domainOrigin( domainOrigin_ )
25197 {
25198 }
25199
25200 PipelineTessellationDomainOriginStateCreateInfoKHR( VkPipelineTessellationDomainOriginStateCreateInfoKHR const & rhs )
25201 {
25202 memcpy( this, &rhs, sizeof( PipelineTessellationDomainOriginStateCreateInfoKHR ) );
25203 }
25204
25205 PipelineTessellationDomainOriginStateCreateInfoKHR& operator=( VkPipelineTessellationDomainOriginStateCreateInfoKHR const & rhs )
25206 {
25207 memcpy( this, &rhs, sizeof( PipelineTessellationDomainOriginStateCreateInfoKHR ) );
25208 return *this;
25209 }
25210 PipelineTessellationDomainOriginStateCreateInfoKHR& setPNext( const void* pNext_ )
25211 {
25212 pNext = pNext_;
25213 return *this;
25214 }
25215
25216 PipelineTessellationDomainOriginStateCreateInfoKHR& setDomainOrigin( TessellationDomainOriginKHR domainOrigin_ )
25217 {
25218 domainOrigin = domainOrigin_;
25219 return *this;
25220 }
25221
25222 operator const VkPipelineTessellationDomainOriginStateCreateInfoKHR&() const
25223 {
25224 return *reinterpret_cast<const VkPipelineTessellationDomainOriginStateCreateInfoKHR*>(this);
25225 }
25226
25227 bool operator==( PipelineTessellationDomainOriginStateCreateInfoKHR const& rhs ) const
25228 {
25229 return ( sType == rhs.sType )
25230 && ( pNext == rhs.pNext )
25231 && ( domainOrigin == rhs.domainOrigin );
25232 }
25233
25234 bool operator!=( PipelineTessellationDomainOriginStateCreateInfoKHR const& rhs ) const
25235 {
25236 return !operator==( rhs );
25237 }
25238
25239 private:
25240 StructureType sType;
25241
25242 public:
25243 const void* pNext;
25244 TessellationDomainOriginKHR domainOrigin;
25245 };
25246 static_assert( sizeof( PipelineTessellationDomainOriginStateCreateInfoKHR ) == sizeof( VkPipelineTessellationDomainOriginStateCreateInfoKHR ), "struct and wrapper have different size!" );
25247
25248 enum class SamplerYcbcrModelConversionKHR
25249 {
25250 eRgbIdentity = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR,
25251 eYcbcrIdentity = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR,
25252 eYcbcr709 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR,
25253 eYcbcr601 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR,
25254 eYcbcr2020 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR
25255 };
25256
25257 enum class SamplerYcbcrRangeKHR
25258 {
25259 eItuFull = VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR,
25260 eItuNarrow = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR
25261 };
25262
25263 enum class ChromaLocationKHR
25264 {
25265 eCositedEven = VK_CHROMA_LOCATION_COSITED_EVEN_KHR,
25266 eMidpoint = VK_CHROMA_LOCATION_MIDPOINT_KHR
25267 };
25268
25269 struct SamplerYcbcrConversionCreateInfoKHR
25270 {
25271 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 )
25272 : sType( StructureType::eSamplerYcbcrConversionCreateInfoKHR )
25273 , pNext( nullptr )
25274 , format( format_ )
25275 , ycbcrModel( ycbcrModel_ )
25276 , ycbcrRange( ycbcrRange_ )
25277 , components( components_ )
25278 , xChromaOffset( xChromaOffset_ )
25279 , yChromaOffset( yChromaOffset_ )
25280 , chromaFilter( chromaFilter_ )
25281 , forceExplicitReconstruction( forceExplicitReconstruction_ )
25282 {
25283 }
25284
25285 SamplerYcbcrConversionCreateInfoKHR( VkSamplerYcbcrConversionCreateInfoKHR const & rhs )
25286 {
25287 memcpy( this, &rhs, sizeof( SamplerYcbcrConversionCreateInfoKHR ) );
25288 }
25289
25290 SamplerYcbcrConversionCreateInfoKHR& operator=( VkSamplerYcbcrConversionCreateInfoKHR const & rhs )
25291 {
25292 memcpy( this, &rhs, sizeof( SamplerYcbcrConversionCreateInfoKHR ) );
25293 return *this;
25294 }
25295 SamplerYcbcrConversionCreateInfoKHR& setPNext( const void* pNext_ )
25296 {
25297 pNext = pNext_;
25298 return *this;
25299 }
25300
25301 SamplerYcbcrConversionCreateInfoKHR& setFormat( Format format_ )
25302 {
25303 format = format_;
25304 return *this;
25305 }
25306
25307 SamplerYcbcrConversionCreateInfoKHR& setYcbcrModel( SamplerYcbcrModelConversionKHR ycbcrModel_ )
25308 {
25309 ycbcrModel = ycbcrModel_;
25310 return *this;
25311 }
25312
25313 SamplerYcbcrConversionCreateInfoKHR& setYcbcrRange( SamplerYcbcrRangeKHR ycbcrRange_ )
25314 {
25315 ycbcrRange = ycbcrRange_;
25316 return *this;
25317 }
25318
25319 SamplerYcbcrConversionCreateInfoKHR& setComponents( ComponentMapping components_ )
25320 {
25321 components = components_;
25322 return *this;
25323 }
25324
25325 SamplerYcbcrConversionCreateInfoKHR& setXChromaOffset( ChromaLocationKHR xChromaOffset_ )
25326 {
25327 xChromaOffset = xChromaOffset_;
25328 return *this;
25329 }
25330
25331 SamplerYcbcrConversionCreateInfoKHR& setYChromaOffset( ChromaLocationKHR yChromaOffset_ )
25332 {
25333 yChromaOffset = yChromaOffset_;
25334 return *this;
25335 }
25336
25337 SamplerYcbcrConversionCreateInfoKHR& setChromaFilter( Filter chromaFilter_ )
25338 {
25339 chromaFilter = chromaFilter_;
25340 return *this;
25341 }
25342
25343 SamplerYcbcrConversionCreateInfoKHR& setForceExplicitReconstruction( Bool32 forceExplicitReconstruction_ )
25344 {
25345 forceExplicitReconstruction = forceExplicitReconstruction_;
25346 return *this;
25347 }
25348
25349 operator const VkSamplerYcbcrConversionCreateInfoKHR&() const
25350 {
25351 return *reinterpret_cast<const VkSamplerYcbcrConversionCreateInfoKHR*>(this);
25352 }
25353
25354 bool operator==( SamplerYcbcrConversionCreateInfoKHR const& rhs ) const
25355 {
25356 return ( sType == rhs.sType )
25357 && ( pNext == rhs.pNext )
25358 && ( format == rhs.format )
25359 && ( ycbcrModel == rhs.ycbcrModel )
25360 && ( ycbcrRange == rhs.ycbcrRange )
25361 && ( components == rhs.components )
25362 && ( xChromaOffset == rhs.xChromaOffset )
25363 && ( yChromaOffset == rhs.yChromaOffset )
25364 && ( chromaFilter == rhs.chromaFilter )
25365 && ( forceExplicitReconstruction == rhs.forceExplicitReconstruction );
25366 }
25367
25368 bool operator!=( SamplerYcbcrConversionCreateInfoKHR const& rhs ) const
25369 {
25370 return !operator==( rhs );
25371 }
25372
25373 private:
25374 StructureType sType;
25375
25376 public:
25377 const void* pNext;
25378 Format format;
25379 SamplerYcbcrModelConversionKHR ycbcrModel;
25380 SamplerYcbcrRangeKHR ycbcrRange;
25381 ComponentMapping components;
25382 ChromaLocationKHR xChromaOffset;
25383 ChromaLocationKHR yChromaOffset;
25384 Filter chromaFilter;
25385 Bool32 forceExplicitReconstruction;
25386 };
25387 static_assert( sizeof( SamplerYcbcrConversionCreateInfoKHR ) == sizeof( VkSamplerYcbcrConversionCreateInfoKHR ), "struct and wrapper have different size!" );
25388
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060025389 enum class BlendOverlapEXT
25390 {
25391 eUncorrelated = VK_BLEND_OVERLAP_UNCORRELATED_EXT,
25392 eDisjoint = VK_BLEND_OVERLAP_DISJOINT_EXT,
25393 eConjoint = VK_BLEND_OVERLAP_CONJOINT_EXT
25394 };
25395
25396 struct PipelineColorBlendAdvancedStateCreateInfoEXT
25397 {
25398 PipelineColorBlendAdvancedStateCreateInfoEXT( Bool32 srcPremultiplied_ = 0, Bool32 dstPremultiplied_ = 0, BlendOverlapEXT blendOverlap_ = BlendOverlapEXT::eUncorrelated )
25399 : sType( StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT )
25400 , pNext( nullptr )
25401 , srcPremultiplied( srcPremultiplied_ )
25402 , dstPremultiplied( dstPremultiplied_ )
25403 , blendOverlap( blendOverlap_ )
25404 {
25405 }
25406
25407 PipelineColorBlendAdvancedStateCreateInfoEXT( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs )
25408 {
25409 memcpy( this, &rhs, sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) );
25410 }
25411
25412 PipelineColorBlendAdvancedStateCreateInfoEXT& operator=( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs )
25413 {
25414 memcpy( this, &rhs, sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) );
25415 return *this;
25416 }
25417 PipelineColorBlendAdvancedStateCreateInfoEXT& setPNext( const void* pNext_ )
25418 {
25419 pNext = pNext_;
25420 return *this;
25421 }
25422
25423 PipelineColorBlendAdvancedStateCreateInfoEXT& setSrcPremultiplied( Bool32 srcPremultiplied_ )
25424 {
25425 srcPremultiplied = srcPremultiplied_;
25426 return *this;
25427 }
25428
25429 PipelineColorBlendAdvancedStateCreateInfoEXT& setDstPremultiplied( Bool32 dstPremultiplied_ )
25430 {
25431 dstPremultiplied = dstPremultiplied_;
25432 return *this;
25433 }
25434
25435 PipelineColorBlendAdvancedStateCreateInfoEXT& setBlendOverlap( BlendOverlapEXT blendOverlap_ )
25436 {
25437 blendOverlap = blendOverlap_;
25438 return *this;
25439 }
25440
25441 operator const VkPipelineColorBlendAdvancedStateCreateInfoEXT&() const
25442 {
25443 return *reinterpret_cast<const VkPipelineColorBlendAdvancedStateCreateInfoEXT*>(this);
25444 }
25445
25446 bool operator==( PipelineColorBlendAdvancedStateCreateInfoEXT const& rhs ) const
25447 {
25448 return ( sType == rhs.sType )
25449 && ( pNext == rhs.pNext )
25450 && ( srcPremultiplied == rhs.srcPremultiplied )
25451 && ( dstPremultiplied == rhs.dstPremultiplied )
25452 && ( blendOverlap == rhs.blendOverlap );
25453 }
25454
25455 bool operator!=( PipelineColorBlendAdvancedStateCreateInfoEXT const& rhs ) const
25456 {
25457 return !operator==( rhs );
25458 }
25459
25460 private:
25461 StructureType sType;
25462
25463 public:
25464 const void* pNext;
25465 Bool32 srcPremultiplied;
25466 Bool32 dstPremultiplied;
25467 BlendOverlapEXT blendOverlap;
25468 };
25469 static_assert( sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) == sizeof( VkPipelineColorBlendAdvancedStateCreateInfoEXT ), "struct and wrapper have different size!" );
25470
25471 enum class CoverageModulationModeNV
25472 {
25473 eNone = VK_COVERAGE_MODULATION_MODE_NONE_NV,
25474 eRgb = VK_COVERAGE_MODULATION_MODE_RGB_NV,
25475 eAlpha = VK_COVERAGE_MODULATION_MODE_ALPHA_NV,
25476 eRgba = VK_COVERAGE_MODULATION_MODE_RGBA_NV
25477 };
25478
25479 struct PipelineCoverageModulationStateCreateInfoNV
25480 {
25481 PipelineCoverageModulationStateCreateInfoNV( PipelineCoverageModulationStateCreateFlagsNV flags_ = PipelineCoverageModulationStateCreateFlagsNV(), CoverageModulationModeNV coverageModulationMode_ = CoverageModulationModeNV::eNone, Bool32 coverageModulationTableEnable_ = 0, uint32_t coverageModulationTableCount_ = 0, const float* pCoverageModulationTable_ = nullptr )
25482 : sType( StructureType::ePipelineCoverageModulationStateCreateInfoNV )
25483 , pNext( nullptr )
25484 , flags( flags_ )
25485 , coverageModulationMode( coverageModulationMode_ )
25486 , coverageModulationTableEnable( coverageModulationTableEnable_ )
25487 , coverageModulationTableCount( coverageModulationTableCount_ )
25488 , pCoverageModulationTable( pCoverageModulationTable_ )
25489 {
25490 }
25491
25492 PipelineCoverageModulationStateCreateInfoNV( VkPipelineCoverageModulationStateCreateInfoNV const & rhs )
25493 {
25494 memcpy( this, &rhs, sizeof( PipelineCoverageModulationStateCreateInfoNV ) );
25495 }
25496
25497 PipelineCoverageModulationStateCreateInfoNV& operator=( VkPipelineCoverageModulationStateCreateInfoNV const & rhs )
25498 {
25499 memcpy( this, &rhs, sizeof( PipelineCoverageModulationStateCreateInfoNV ) );
25500 return *this;
25501 }
25502 PipelineCoverageModulationStateCreateInfoNV& setPNext( const void* pNext_ )
25503 {
25504 pNext = pNext_;
25505 return *this;
25506 }
25507
25508 PipelineCoverageModulationStateCreateInfoNV& setFlags( PipelineCoverageModulationStateCreateFlagsNV flags_ )
25509 {
25510 flags = flags_;
25511 return *this;
25512 }
25513
25514 PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationMode( CoverageModulationModeNV coverageModulationMode_ )
25515 {
25516 coverageModulationMode = coverageModulationMode_;
25517 return *this;
25518 }
25519
25520 PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationTableEnable( Bool32 coverageModulationTableEnable_ )
25521 {
25522 coverageModulationTableEnable = coverageModulationTableEnable_;
25523 return *this;
25524 }
25525
25526 PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationTableCount( uint32_t coverageModulationTableCount_ )
25527 {
25528 coverageModulationTableCount = coverageModulationTableCount_;
25529 return *this;
25530 }
25531
25532 PipelineCoverageModulationStateCreateInfoNV& setPCoverageModulationTable( const float* pCoverageModulationTable_ )
25533 {
25534 pCoverageModulationTable = pCoverageModulationTable_;
25535 return *this;
25536 }
25537
25538 operator const VkPipelineCoverageModulationStateCreateInfoNV&() const
25539 {
25540 return *reinterpret_cast<const VkPipelineCoverageModulationStateCreateInfoNV*>(this);
25541 }
25542
25543 bool operator==( PipelineCoverageModulationStateCreateInfoNV const& rhs ) const
25544 {
25545 return ( sType == rhs.sType )
25546 && ( pNext == rhs.pNext )
25547 && ( flags == rhs.flags )
25548 && ( coverageModulationMode == rhs.coverageModulationMode )
25549 && ( coverageModulationTableEnable == rhs.coverageModulationTableEnable )
25550 && ( coverageModulationTableCount == rhs.coverageModulationTableCount )
25551 && ( pCoverageModulationTable == rhs.pCoverageModulationTable );
25552 }
25553
25554 bool operator!=( PipelineCoverageModulationStateCreateInfoNV const& rhs ) const
25555 {
25556 return !operator==( rhs );
25557 }
25558
25559 private:
25560 StructureType sType;
25561
25562 public:
25563 const void* pNext;
25564 PipelineCoverageModulationStateCreateFlagsNV flags;
25565 CoverageModulationModeNV coverageModulationMode;
25566 Bool32 coverageModulationTableEnable;
25567 uint32_t coverageModulationTableCount;
25568 const float* pCoverageModulationTable;
25569 };
25570 static_assert( sizeof( PipelineCoverageModulationStateCreateInfoNV ) == sizeof( VkPipelineCoverageModulationStateCreateInfoNV ), "struct and wrapper have different size!" );
25571
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060025572 enum class ValidationCacheHeaderVersionEXT
25573 {
25574 eOne = VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT
25575 };
25576
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025577 Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025578#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025579 template <typename Allocator = std::allocator<LayerProperties>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060025580 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties(Allocator const & alloc = Allocator() );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025581#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25582
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025583 VULKAN_HPP_INLINE Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties )
25584 {
25585 return static_cast<Result>( vkEnumerateInstanceLayerProperties( pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
25586 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025587#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025588 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060025589 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties(Allocator const & alloc )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025590 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060025591 std::vector<LayerProperties,Allocator> properties( {alloc} );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025592 uint32_t propertyCount;
25593 Result result;
25594 do
25595 {
25596 result = static_cast<Result>( vkEnumerateInstanceLayerProperties( &propertyCount, nullptr ) );
25597 if ( ( result == Result::eSuccess ) && propertyCount )
25598 {
25599 properties.resize( propertyCount );
25600 result = static_cast<Result>( vkEnumerateInstanceLayerProperties( &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
25601 }
25602 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025603 assert( propertyCount <= properties.size() );
25604 properties.resize( propertyCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060025605 return createResultValue( result, properties, "VULKAN_HPP_NAMESPACE::enumerateInstanceLayerProperties" );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025606 }
25607#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25608
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025609
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025610 Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025611#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025612 template <typename Allocator = std::allocator<ExtensionProperties>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060025613 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName = nullptr, Allocator const & alloc = Allocator() );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025614#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25615
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025616 VULKAN_HPP_INLINE Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties )
25617 {
25618 return static_cast<Result>( vkEnumerateInstanceExtensionProperties( pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
25619 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025620#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025621 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060025622 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName, Allocator const & alloc )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025623 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060025624 std::vector<ExtensionProperties,Allocator> properties( {alloc} );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025625 uint32_t propertyCount;
25626 Result result;
25627 do
25628 {
25629 result = static_cast<Result>( vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
25630 if ( ( result == Result::eSuccess ) && propertyCount )
25631 {
25632 properties.resize( propertyCount );
25633 result = static_cast<Result>( vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
25634 }
25635 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025636 assert( propertyCount <= properties.size() );
25637 properties.resize( propertyCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060025638 return createResultValue( result, properties, "VULKAN_HPP_NAMESPACE::enumerateInstanceExtensionProperties" );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025639 }
25640#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25641
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025642
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025643 // forward declarations
25644 struct CmdProcessCommandsInfoNVX;
25645
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025646 class CommandBuffer
25647 {
25648 public:
25649 CommandBuffer()
25650 : m_commandBuffer(VK_NULL_HANDLE)
25651 {}
25652
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070025653 CommandBuffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025654 : m_commandBuffer(VK_NULL_HANDLE)
25655 {}
25656
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025657 VULKAN_HPP_TYPESAFE_EXPLICIT CommandBuffer( VkCommandBuffer commandBuffer )
25658 : m_commandBuffer( commandBuffer )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025659 {}
25660
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070025661#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025662 CommandBuffer & operator=(VkCommandBuffer commandBuffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025663 {
25664 m_commandBuffer = commandBuffer;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025665 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025666 }
25667#endif
25668
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025669 CommandBuffer & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025670 {
25671 m_commandBuffer = VK_NULL_HANDLE;
25672 return *this;
25673 }
25674
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025675 bool operator==( CommandBuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060025676 {
25677 return m_commandBuffer == rhs.m_commandBuffer;
25678 }
25679
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025680 bool operator!=(CommandBuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060025681 {
25682 return m_commandBuffer != rhs.m_commandBuffer;
25683 }
25684
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025685 bool operator<(CommandBuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060025686 {
25687 return m_commandBuffer < rhs.m_commandBuffer;
25688 }
25689
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025690 Result begin( const CommandBufferBeginInfo* pBeginInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025691#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025692 ResultValueType<void>::type begin( const CommandBufferBeginInfo & beginInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025693#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25694
25695#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025696 Result end() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025697#else
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025698 ResultValueType<void>::type end() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025699#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25700
25701#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025702 Result reset( CommandBufferResetFlags flags ) const;
25703#else
25704 ResultValueType<void>::type reset( CommandBufferResetFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025705#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25706
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025707 void bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025708
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025709 void setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025710#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025711 void setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025712#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25713
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025714 void setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025715#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025716 void setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025717#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25718
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025719 void setLineWidth( float lineWidth ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025720
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025721 void setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const;
25722
25723 void setBlendConstants( const float blendConstants[4] ) const;
25724
25725 void setDepthBounds( float minDepthBounds, float maxDepthBounds ) const;
25726
25727 void setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const;
25728
25729 void setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const;
25730
25731 void setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const;
25732
25733 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 -060025734#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025735 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 -060025736#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25737
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025738 void bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025739
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025740 void bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025741#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025742 void bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025743#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25744
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025745 void draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025746
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025747 void drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const;
25748
25749 void drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const;
25750
25751 void drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const;
25752
Mark Young0f183a82017-02-28 09:58:04 -070025753 void dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025754
25755 void dispatchIndirect( Buffer buffer, DeviceSize offset ) const;
25756
25757 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025758#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025759 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025760#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25761
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025762 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025763#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025764 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025765#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25766
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025767 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 -060025768#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025769 void blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025770#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25771
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025772 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025773#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025774 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025775#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25776
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025777 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025778#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025779 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025780#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25781
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025782 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025783#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25784 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025785 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025786#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25787
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025788 void fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025789
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025790 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025791#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025792 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025793#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25794
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025795 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025796#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025797 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025798#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25799
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025800 void clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025801#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025802 void clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025803#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25804
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025805 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025806#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025807 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025808#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25809
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025810 void setEvent( Event event, PipelineStageFlags stageMask ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025811
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025812 void resetEvent( Event event, PipelineStageFlags stageMask ) const;
25813
25814 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 -060025815#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025816 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 -060025817#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25818
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025819 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 -060025820#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025821 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 -060025822#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25823
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025824 void beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025825
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025826 void endQuery( QueryPool queryPool, uint32_t query ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025827
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025828 void resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025829
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025830 void writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025831
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025832 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 -060025833
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025834 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025835#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25836 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025837 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025838#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25839
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025840 void beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025841#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025842 void beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025843#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25844
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025845 void nextSubpass( SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025846
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025847 void endRenderPass() const;
25848
25849 void executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025850#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025851 void executeCommands( ArrayProxy<const CommandBuffer> commandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025852#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25853
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060025854 void debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025855#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060025856 void debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025857#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25858
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025859 void debugMarkerEndEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025860
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060025861 void debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025862#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060025863 void debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025864#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25865
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025866 void drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025867
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025868 void drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const;
25869
25870 void processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025871#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025872 void processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025873#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25874
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025875 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025876#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025877 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025878#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25879
Mark Young0f183a82017-02-28 09:58:04 -070025880 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites ) const;
25881#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25882 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites ) const;
25883#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25884
25885 void setDeviceMaskKHX( uint32_t deviceMask ) const;
25886
25887 void dispatchBaseKHX( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const;
25888
25889 void pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData ) const;
25890
25891 void setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings ) const;
25892#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25893 void setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings ) const;
25894#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25895
25896 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles ) const;
25897#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25898 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles ) const;
25899#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25900
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060025901 void setSampleLocationsEXT( const SampleLocationsInfoEXT* pSampleLocationsInfo ) const;
25902#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25903 void setSampleLocationsEXT( const SampleLocationsInfoEXT & sampleLocationsInfo ) const;
25904#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25905
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025906
25907
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070025908 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandBuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025909 {
25910 return m_commandBuffer;
25911 }
25912
25913 explicit operator bool() const
25914 {
25915 return m_commandBuffer != VK_NULL_HANDLE;
25916 }
25917
25918 bool operator!() const
25919 {
25920 return m_commandBuffer == VK_NULL_HANDLE;
25921 }
25922
25923 private:
25924 VkCommandBuffer m_commandBuffer;
25925 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025926
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025927 static_assert( sizeof( CommandBuffer ) == sizeof( VkCommandBuffer ), "handle and wrapper have different size!" );
25928
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025929 VULKAN_HPP_INLINE Result CommandBuffer::begin( const CommandBufferBeginInfo* pBeginInfo ) const
25930 {
25931 return static_cast<Result>( vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( pBeginInfo ) ) );
25932 }
25933#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25934 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::begin( const CommandBufferBeginInfo & beginInfo ) const
25935 {
25936 Result result = static_cast<Result>( vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( &beginInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060025937 return createResultValue( result, "VULKAN_HPP_NAMESPACE::CommandBuffer::begin" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025938 }
25939#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25940
25941#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
25942 VULKAN_HPP_INLINE Result CommandBuffer::end() const
25943 {
25944 return static_cast<Result>( vkEndCommandBuffer( m_commandBuffer ) );
25945 }
25946#else
25947 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::end() const
25948 {
25949 Result result = static_cast<Result>( vkEndCommandBuffer( m_commandBuffer ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060025950 return createResultValue( result, "VULKAN_HPP_NAMESPACE::CommandBuffer::end" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025951 }
25952#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25953
25954#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
25955 VULKAN_HPP_INLINE Result CommandBuffer::reset( CommandBufferResetFlags flags ) const
25956 {
25957 return static_cast<Result>( vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
25958 }
25959#else
25960 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::reset( CommandBufferResetFlags flags ) const
25961 {
25962 Result result = static_cast<Result>( vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060025963 return createResultValue( result, "VULKAN_HPP_NAMESPACE::CommandBuffer::reset" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025964 }
25965#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25966
25967 VULKAN_HPP_INLINE void CommandBuffer::bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline ) const
25968 {
25969 vkCmdBindPipeline( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipeline>( pipeline ) );
25970 }
25971
25972 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports ) const
25973 {
25974 vkCmdSetViewport( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewport*>( pViewports ) );
25975 }
25976#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25977 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports ) const
25978 {
25979 vkCmdSetViewport( m_commandBuffer, firstViewport, viewports.size() , reinterpret_cast<const VkViewport*>( viewports.data() ) );
25980 }
25981#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25982
25983 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors ) const
25984 {
25985 vkCmdSetScissor( m_commandBuffer, firstScissor, scissorCount, reinterpret_cast<const VkRect2D*>( pScissors ) );
25986 }
25987#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25988 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors ) const
25989 {
25990 vkCmdSetScissor( m_commandBuffer, firstScissor, scissors.size() , reinterpret_cast<const VkRect2D*>( scissors.data() ) );
25991 }
25992#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25993
25994 VULKAN_HPP_INLINE void CommandBuffer::setLineWidth( float lineWidth ) const
25995 {
25996 vkCmdSetLineWidth( m_commandBuffer, lineWidth );
25997 }
25998
25999 VULKAN_HPP_INLINE void CommandBuffer::setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const
26000 {
26001 vkCmdSetDepthBias( m_commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor );
26002 }
26003
26004 VULKAN_HPP_INLINE void CommandBuffer::setBlendConstants( const float blendConstants[4] ) const
26005 {
26006 vkCmdSetBlendConstants( m_commandBuffer, blendConstants );
26007 }
26008
26009 VULKAN_HPP_INLINE void CommandBuffer::setDepthBounds( float minDepthBounds, float maxDepthBounds ) const
26010 {
26011 vkCmdSetDepthBounds( m_commandBuffer, minDepthBounds, maxDepthBounds );
26012 }
26013
26014 VULKAN_HPP_INLINE void CommandBuffer::setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const
26015 {
26016 vkCmdSetStencilCompareMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), compareMask );
26017 }
26018
26019 VULKAN_HPP_INLINE void CommandBuffer::setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const
26020 {
26021 vkCmdSetStencilWriteMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), writeMask );
26022 }
26023
26024 VULKAN_HPP_INLINE void CommandBuffer::setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const
26025 {
26026 vkCmdSetStencilReference( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), reference );
26027 }
26028
26029 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
26030 {
26031 vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ), dynamicOffsetCount, pDynamicOffsets );
26032 }
26033#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26034 VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t firstSet, ArrayProxy<const DescriptorSet> descriptorSets, ArrayProxy<const uint32_t> dynamicOffsets ) const
26035 {
26036 vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ), dynamicOffsets.size() , dynamicOffsets.data() );
26037 }
26038#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26039
26040 VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType ) const
26041 {
26042 vkCmdBindIndexBuffer( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkIndexType>( indexType ) );
26043 }
26044
26045 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets ) const
26046 {
26047 vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, bindingCount, reinterpret_cast<const VkBuffer*>( pBuffers ), pOffsets );
26048 }
26049#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26050 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets ) const
26051 {
26052#ifdef VULKAN_HPP_NO_EXCEPTIONS
26053 assert( buffers.size() == offsets.size() );
26054#else
26055 if ( buffers.size() != offsets.size() )
26056 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060026057 throw LogicError( "VULKAN_HPP_NAMESPACE::CommandBuffer::bindVertexBuffers: buffers.size() != offsets.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026058 }
26059#endif // VULKAN_HPP_NO_EXCEPTIONS
26060 vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, buffers.size() , reinterpret_cast<const VkBuffer*>( buffers.data() ), offsets.data() );
26061 }
26062#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26063
26064 VULKAN_HPP_INLINE void CommandBuffer::draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const
26065 {
26066 vkCmdDraw( m_commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance );
26067 }
26068
26069 VULKAN_HPP_INLINE void CommandBuffer::drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const
26070 {
26071 vkCmdDrawIndexed( m_commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance );
26072 }
26073
26074 VULKAN_HPP_INLINE void CommandBuffer::drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const
26075 {
26076 vkCmdDrawIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
26077 }
26078
26079 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const
26080 {
26081 vkCmdDrawIndexedIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
26082 }
26083
Mark Young0f183a82017-02-28 09:58:04 -070026084 VULKAN_HPP_INLINE void CommandBuffer::dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026085 {
Mark Young0f183a82017-02-28 09:58:04 -070026086 vkCmdDispatch( m_commandBuffer, groupCountX, groupCountY, groupCountZ );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026087 }
26088
26089 VULKAN_HPP_INLINE void CommandBuffer::dispatchIndirect( Buffer buffer, DeviceSize offset ) const
26090 {
26091 vkCmdDispatchIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset );
26092 }
26093
26094 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions ) const
26095 {
26096 vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferCopy*>( pRegions ) );
26097 }
26098#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26099 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions ) const
26100 {
26101 vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferCopy*>( regions.data() ) );
26102 }
26103#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26104
26105 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions ) const
26106 {
26107 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 ) );
26108 }
26109#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26110 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions ) const
26111 {
26112 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() ) );
26113 }
26114#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26115
26116 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageBlit* pRegions, Filter filter ) const
26117 {
26118 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 ) );
26119 }
26120#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26121 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter ) const
26122 {
26123 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 ) );
26124 }
26125#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26126
26127 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions ) const
26128 {
26129 vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
26130 }
26131#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26132 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions ) const
26133 {
26134 vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
26135 }
26136#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26137
26138 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions ) const
26139 {
26140 vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
26141 }
26142#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26143 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions ) const
26144 {
26145 vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
26146 }
26147#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26148
26149 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData ) const
26150 {
26151 vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, dataSize, pData );
26152 }
26153#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26154 template <typename T>
26155 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data ) const
26156 {
26157 vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, data.size() * sizeof( T ) , reinterpret_cast<const void*>( data.data() ) );
26158 }
26159#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26160
26161 VULKAN_HPP_INLINE void CommandBuffer::fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const
26162 {
26163 vkCmdFillBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, size, data );
26164 }
26165
26166 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const
26167 {
26168 vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( pColor ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
26169 }
26170#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26171 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges ) const
26172 {
26173 vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( &color ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
26174 }
26175#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26176
26177 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const
26178 {
26179 vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( pDepthStencil ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
26180 }
26181#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26182 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges ) const
26183 {
26184 vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( &depthStencil ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
26185 }
26186#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26187
26188 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects ) const
26189 {
26190 vkCmdClearAttachments( m_commandBuffer, attachmentCount, reinterpret_cast<const VkClearAttachment*>( pAttachments ), rectCount, reinterpret_cast<const VkClearRect*>( pRects ) );
26191 }
26192#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26193 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects ) const
26194 {
26195 vkCmdClearAttachments( m_commandBuffer, attachments.size() , reinterpret_cast<const VkClearAttachment*>( attachments.data() ), rects.size() , reinterpret_cast<const VkClearRect*>( rects.data() ) );
26196 }
26197#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26198
26199 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions ) const
26200 {
26201 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 ) );
26202 }
26203#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26204 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions ) const
26205 {
26206 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() ) );
26207 }
26208#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26209
26210 VULKAN_HPP_INLINE void CommandBuffer::setEvent( Event event, PipelineStageFlags stageMask ) const
26211 {
26212 vkCmdSetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
26213 }
26214
26215 VULKAN_HPP_INLINE void CommandBuffer::resetEvent( Event event, PipelineStageFlags stageMask ) const
26216 {
26217 vkCmdResetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
26218 }
26219
26220 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
26221 {
26222 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 ) );
26223 }
26224#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26225 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
26226 {
26227 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() ) );
26228 }
26229#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26230
26231 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
26232 {
26233 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 ) );
26234 }
26235#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26236 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
26237 {
26238 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() ) );
26239 }
26240#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26241
26242 VULKAN_HPP_INLINE void CommandBuffer::beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const
26243 {
26244 vkCmdBeginQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query, static_cast<VkQueryControlFlags>( flags ) );
26245 }
26246
26247 VULKAN_HPP_INLINE void CommandBuffer::endQuery( QueryPool queryPool, uint32_t query ) const
26248 {
26249 vkCmdEndQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query );
26250 }
26251
26252 VULKAN_HPP_INLINE void CommandBuffer::resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const
26253 {
26254 vkCmdResetQueryPool( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount );
26255 }
26256
26257 VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query ) const
26258 {
26259 vkCmdWriteTimestamp( m_commandBuffer, static_cast<VkPipelineStageFlagBits>( pipelineStage ), static_cast<VkQueryPool>( queryPool ), query );
26260 }
26261
26262 VULKAN_HPP_INLINE void CommandBuffer::copyQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Buffer dstBuffer, DeviceSize dstOffset, DeviceSize stride, QueryResultFlags flags ) const
26263 {
26264 vkCmdCopyQueryPoolResults( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, static_cast<VkBuffer>( dstBuffer ), dstOffset, stride, static_cast<VkQueryResultFlags>( flags ) );
26265 }
26266
26267 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const
26268 {
26269 vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, size, pValues );
26270 }
26271#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26272 template <typename T>
26273 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values ) const
26274 {
26275 vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, values.size() * sizeof( T ) , reinterpret_cast<const void*>( values.data() ) );
26276 }
26277#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26278
26279 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents ) const
26280 {
26281 vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( pRenderPassBegin ), static_cast<VkSubpassContents>( contents ) );
26282 }
26283#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26284 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const
26285 {
26286 vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( &renderPassBegin ), static_cast<VkSubpassContents>( contents ) );
26287 }
26288#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26289
26290 VULKAN_HPP_INLINE void CommandBuffer::nextSubpass( SubpassContents contents ) const
26291 {
26292 vkCmdNextSubpass( m_commandBuffer, static_cast<VkSubpassContents>( contents ) );
26293 }
26294
26295 VULKAN_HPP_INLINE void CommandBuffer::endRenderPass() const
26296 {
26297 vkCmdEndRenderPass( m_commandBuffer );
26298 }
26299
26300 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const
26301 {
26302 vkCmdExecuteCommands( m_commandBuffer, commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
26303 }
26304#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26305 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( ArrayProxy<const CommandBuffer> commandBuffers ) const
26306 {
26307 vkCmdExecuteCommands( m_commandBuffer, commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
26308 }
26309#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26310
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026311 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026312 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026313 vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026314 }
26315#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026316 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026317 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026318 vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026319 }
26320#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26321
26322 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerEndEXT() const
26323 {
26324 vkCmdDebugMarkerEndEXT( m_commandBuffer );
26325 }
26326
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026327 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026328 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026329 vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026330 }
26331#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026332 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026333 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026334 vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026335 }
26336#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26337
26338 VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
26339 {
26340 vkCmdDrawIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
26341 }
26342
26343 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
26344 {
26345 vkCmdDrawIndexedIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
26346 }
26347
26348 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const
26349 {
26350 vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( pProcessCommandsInfo ) );
26351 }
26352#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26353 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo ) const
26354 {
26355 vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( &processCommandsInfo ) );
26356 }
26357#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26358
26359 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const
26360 {
26361 vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( pReserveSpaceInfo ) );
26362 }
26363#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26364 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo ) const
26365 {
26366 vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( &reserveSpaceInfo ) );
26367 }
26368#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070026369
26370 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites ) const
26371 {
26372 vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ) );
26373 }
26374#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26375 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites ) const
26376 {
26377 vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ) );
26378 }
26379#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26380
26381 VULKAN_HPP_INLINE void CommandBuffer::setDeviceMaskKHX( uint32_t deviceMask ) const
26382 {
26383 vkCmdSetDeviceMaskKHX( m_commandBuffer, deviceMask );
26384 }
26385
26386 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
26387 {
26388 vkCmdDispatchBaseKHX( m_commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ );
26389 }
26390
26391 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData ) const
26392 {
26393 vkCmdPushDescriptorSetWithTemplateKHR( m_commandBuffer, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), static_cast<VkPipelineLayout>( layout ), set, pData );
26394 }
26395
26396 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings ) const
26397 {
26398 vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewportWScalingNV*>( pViewportWScalings ) );
26399 }
26400#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26401 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings ) const
26402 {
26403 vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportWScalings.size() , reinterpret_cast<const VkViewportWScalingNV*>( viewportWScalings.data() ) );
26404 }
26405#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26406
26407 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles ) const
26408 {
26409 vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangleCount, reinterpret_cast<const VkRect2D*>( pDiscardRectangles ) );
26410 }
26411#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26412 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles ) const
26413 {
26414 vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangles.size() , reinterpret_cast<const VkRect2D*>( discardRectangles.data() ) );
26415 }
26416#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026417
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060026418 VULKAN_HPP_INLINE void CommandBuffer::setSampleLocationsEXT( const SampleLocationsInfoEXT* pSampleLocationsInfo ) const
26419 {
26420 vkCmdSetSampleLocationsEXT( m_commandBuffer, reinterpret_cast<const VkSampleLocationsInfoEXT*>( pSampleLocationsInfo ) );
26421 }
26422#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26423 VULKAN_HPP_INLINE void CommandBuffer::setSampleLocationsEXT( const SampleLocationsInfoEXT & sampleLocationsInfo ) const
26424 {
26425 vkCmdSetSampleLocationsEXT( m_commandBuffer, reinterpret_cast<const VkSampleLocationsInfoEXT*>( &sampleLocationsInfo ) );
26426 }
26427#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26428
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026429 struct SubmitInfo
26430 {
26431 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 )
26432 : sType( StructureType::eSubmitInfo )
26433 , pNext( nullptr )
26434 , waitSemaphoreCount( waitSemaphoreCount_ )
26435 , pWaitSemaphores( pWaitSemaphores_ )
26436 , pWaitDstStageMask( pWaitDstStageMask_ )
26437 , commandBufferCount( commandBufferCount_ )
26438 , pCommandBuffers( pCommandBuffers_ )
26439 , signalSemaphoreCount( signalSemaphoreCount_ )
26440 , pSignalSemaphores( pSignalSemaphores_ )
26441 {
26442 }
26443
26444 SubmitInfo( VkSubmitInfo const & rhs )
26445 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026446 memcpy( this, &rhs, sizeof( SubmitInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026447 }
26448
26449 SubmitInfo& operator=( VkSubmitInfo const & rhs )
26450 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026451 memcpy( this, &rhs, sizeof( SubmitInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026452 return *this;
26453 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026454 SubmitInfo& setPNext( const void* pNext_ )
26455 {
26456 pNext = pNext_;
26457 return *this;
26458 }
26459
26460 SubmitInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
26461 {
26462 waitSemaphoreCount = waitSemaphoreCount_;
26463 return *this;
26464 }
26465
26466 SubmitInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
26467 {
26468 pWaitSemaphores = pWaitSemaphores_;
26469 return *this;
26470 }
26471
26472 SubmitInfo& setPWaitDstStageMask( const PipelineStageFlags* pWaitDstStageMask_ )
26473 {
26474 pWaitDstStageMask = pWaitDstStageMask_;
26475 return *this;
26476 }
26477
26478 SubmitInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
26479 {
26480 commandBufferCount = commandBufferCount_;
26481 return *this;
26482 }
26483
26484 SubmitInfo& setPCommandBuffers( const CommandBuffer* pCommandBuffers_ )
26485 {
26486 pCommandBuffers = pCommandBuffers_;
26487 return *this;
26488 }
26489
26490 SubmitInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
26491 {
26492 signalSemaphoreCount = signalSemaphoreCount_;
26493 return *this;
26494 }
26495
26496 SubmitInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
26497 {
26498 pSignalSemaphores = pSignalSemaphores_;
26499 return *this;
26500 }
26501
26502 operator const VkSubmitInfo&() const
26503 {
26504 return *reinterpret_cast<const VkSubmitInfo*>(this);
26505 }
26506
26507 bool operator==( SubmitInfo const& rhs ) const
26508 {
26509 return ( sType == rhs.sType )
26510 && ( pNext == rhs.pNext )
26511 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
26512 && ( pWaitSemaphores == rhs.pWaitSemaphores )
26513 && ( pWaitDstStageMask == rhs.pWaitDstStageMask )
26514 && ( commandBufferCount == rhs.commandBufferCount )
26515 && ( pCommandBuffers == rhs.pCommandBuffers )
26516 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
26517 && ( pSignalSemaphores == rhs.pSignalSemaphores );
26518 }
26519
26520 bool operator!=( SubmitInfo const& rhs ) const
26521 {
26522 return !operator==( rhs );
26523 }
26524
26525 private:
26526 StructureType sType;
26527
26528 public:
26529 const void* pNext;
26530 uint32_t waitSemaphoreCount;
26531 const Semaphore* pWaitSemaphores;
26532 const PipelineStageFlags* pWaitDstStageMask;
26533 uint32_t commandBufferCount;
26534 const CommandBuffer* pCommandBuffers;
26535 uint32_t signalSemaphoreCount;
26536 const Semaphore* pSignalSemaphores;
26537 };
26538 static_assert( sizeof( SubmitInfo ) == sizeof( VkSubmitInfo ), "struct and wrapper have different size!" );
26539
26540 class Queue
26541 {
26542 public:
26543 Queue()
26544 : m_queue(VK_NULL_HANDLE)
26545 {}
26546
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070026547 Queue( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026548 : m_queue(VK_NULL_HANDLE)
26549 {}
26550
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026551 VULKAN_HPP_TYPESAFE_EXPLICIT Queue( VkQueue queue )
26552 : m_queue( queue )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026553 {}
26554
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026555#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026556 Queue & operator=(VkQueue queue)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026557 {
26558 m_queue = queue;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026559 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026560 }
26561#endif
26562
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026563 Queue & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026564 {
26565 m_queue = VK_NULL_HANDLE;
26566 return *this;
26567 }
26568
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026569 bool operator==( Queue const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026570 {
26571 return m_queue == rhs.m_queue;
26572 }
26573
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026574 bool operator!=(Queue const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026575 {
26576 return m_queue != rhs.m_queue;
26577 }
26578
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026579 bool operator<(Queue const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026580 {
26581 return m_queue < rhs.m_queue;
26582 }
26583
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026584 Result submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026585#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026586 ResultValueType<void>::type submit( ArrayProxy<const SubmitInfo> submits, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026587#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26588
26589#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026590 Result waitIdle() const;
26591#else
26592 ResultValueType<void>::type waitIdle() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026593#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26594
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026595 Result bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026596#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026597 ResultValueType<void>::type bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026598#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26599
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026600 Result presentKHR( const PresentInfoKHR* pPresentInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026601#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026602 Result presentKHR( const PresentInfoKHR & presentInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026603#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26604
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026605
26606
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026607 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueue() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026608 {
26609 return m_queue;
26610 }
26611
26612 explicit operator bool() const
26613 {
26614 return m_queue != VK_NULL_HANDLE;
26615 }
26616
26617 bool operator!() const
26618 {
26619 return m_queue == VK_NULL_HANDLE;
26620 }
26621
26622 private:
26623 VkQueue m_queue;
26624 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026625
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026626 static_assert( sizeof( Queue ) == sizeof( VkQueue ), "handle and wrapper have different size!" );
26627
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026628 VULKAN_HPP_INLINE Result Queue::submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence ) const
26629 {
26630 return static_cast<Result>( vkQueueSubmit( m_queue, submitCount, reinterpret_cast<const VkSubmitInfo*>( pSubmits ), static_cast<VkFence>( fence ) ) );
26631 }
26632#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26633 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::submit( ArrayProxy<const SubmitInfo> submits, Fence fence ) const
26634 {
26635 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 -060026636 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Queue::submit" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026637 }
26638#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26639
26640#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26641 VULKAN_HPP_INLINE Result Queue::waitIdle() const
26642 {
26643 return static_cast<Result>( vkQueueWaitIdle( m_queue ) );
26644 }
26645#else
26646 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::waitIdle() const
26647 {
26648 Result result = static_cast<Result>( vkQueueWaitIdle( m_queue ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060026649 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Queue::waitIdle" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026650 }
26651#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26652
26653 VULKAN_HPP_INLINE Result Queue::bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence ) const
26654 {
26655 return static_cast<Result>( vkQueueBindSparse( m_queue, bindInfoCount, reinterpret_cast<const VkBindSparseInfo*>( pBindInfo ), static_cast<VkFence>( fence ) ) );
26656 }
26657#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26658 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence ) const
26659 {
26660 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 -060026661 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Queue::bindSparse" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026662 }
26663#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26664
26665 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR* pPresentInfo ) const
26666 {
26667 return static_cast<Result>( vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( pPresentInfo ) ) );
26668 }
26669#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26670 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR & presentInfo ) const
26671 {
26672 Result result = static_cast<Result>( vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( &presentInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060026673 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Queue::presentKHR", { Result::eSuccess, Result::eSuboptimalKHR } );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026674 }
26675#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026676
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026677#ifndef VULKAN_HPP_NO_SMART_HANDLE
26678 class BufferDeleter;
26679 using UniqueBuffer = UniqueHandle<Buffer, BufferDeleter>;
26680 class BufferViewDeleter;
26681 using UniqueBufferView = UniqueHandle<BufferView, BufferViewDeleter>;
26682 class CommandBufferDeleter;
26683 using UniqueCommandBuffer = UniqueHandle<CommandBuffer, CommandBufferDeleter>;
26684 class CommandPoolDeleter;
26685 using UniqueCommandPool = UniqueHandle<CommandPool, CommandPoolDeleter>;
26686 class DescriptorPoolDeleter;
26687 using UniqueDescriptorPool = UniqueHandle<DescriptorPool, DescriptorPoolDeleter>;
26688 class DescriptorSetDeleter;
26689 using UniqueDescriptorSet = UniqueHandle<DescriptorSet, DescriptorSetDeleter>;
26690 class DescriptorSetLayoutDeleter;
26691 using UniqueDescriptorSetLayout = UniqueHandle<DescriptorSetLayout, DescriptorSetLayoutDeleter>;
Mark Young0f183a82017-02-28 09:58:04 -070026692 class DescriptorUpdateTemplateKHRDeleter;
26693 using UniqueDescriptorUpdateTemplateKHR = UniqueHandle<DescriptorUpdateTemplateKHR, DescriptorUpdateTemplateKHRDeleter>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026694 class DeviceMemoryDeleter;
26695 using UniqueDeviceMemory = UniqueHandle<DeviceMemory, DeviceMemoryDeleter>;
26696 class EventDeleter;
26697 using UniqueEvent = UniqueHandle<Event, EventDeleter>;
26698 class FenceDeleter;
26699 using UniqueFence = UniqueHandle<Fence, FenceDeleter>;
26700 class FramebufferDeleter;
26701 using UniqueFramebuffer = UniqueHandle<Framebuffer, FramebufferDeleter>;
26702 class ImageDeleter;
26703 using UniqueImage = UniqueHandle<Image, ImageDeleter>;
26704 class ImageViewDeleter;
26705 using UniqueImageView = UniqueHandle<ImageView, ImageViewDeleter>;
26706 class IndirectCommandsLayoutNVXDeleter;
26707 using UniqueIndirectCommandsLayoutNVX = UniqueHandle<IndirectCommandsLayoutNVX, IndirectCommandsLayoutNVXDeleter>;
26708 class ObjectTableNVXDeleter;
26709 using UniqueObjectTableNVX = UniqueHandle<ObjectTableNVX, ObjectTableNVXDeleter>;
26710 class PipelineDeleter;
26711 using UniquePipeline = UniqueHandle<Pipeline, PipelineDeleter>;
26712 class PipelineCacheDeleter;
26713 using UniquePipelineCache = UniqueHandle<PipelineCache, PipelineCacheDeleter>;
26714 class PipelineLayoutDeleter;
26715 using UniquePipelineLayout = UniqueHandle<PipelineLayout, PipelineLayoutDeleter>;
26716 class QueryPoolDeleter;
26717 using UniqueQueryPool = UniqueHandle<QueryPool, QueryPoolDeleter>;
26718 class RenderPassDeleter;
26719 using UniqueRenderPass = UniqueHandle<RenderPass, RenderPassDeleter>;
26720 class SamplerDeleter;
26721 using UniqueSampler = UniqueHandle<Sampler, SamplerDeleter>;
Lenny Komowb79f04a2017-09-18 17:07:00 -060026722 class SamplerYcbcrConversionKHRDeleter;
26723 using UniqueSamplerYcbcrConversionKHR = UniqueHandle<SamplerYcbcrConversionKHR, SamplerYcbcrConversionKHRDeleter>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026724 class SemaphoreDeleter;
26725 using UniqueSemaphore = UniqueHandle<Semaphore, SemaphoreDeleter>;
26726 class ShaderModuleDeleter;
26727 using UniqueShaderModule = UniqueHandle<ShaderModule, ShaderModuleDeleter>;
26728 class SwapchainKHRDeleter;
26729 using UniqueSwapchainKHR = UniqueHandle<SwapchainKHR, SwapchainKHRDeleter>;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060026730 class ValidationCacheEXTDeleter;
26731 using UniqueValidationCacheEXT = UniqueHandle<ValidationCacheEXT, ValidationCacheEXTDeleter>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026732#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26733
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026734 class Device
26735 {
26736 public:
26737 Device()
26738 : m_device(VK_NULL_HANDLE)
26739 {}
26740
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070026741 Device( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026742 : m_device(VK_NULL_HANDLE)
26743 {}
26744
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026745 VULKAN_HPP_TYPESAFE_EXPLICIT Device( VkDevice device )
26746 : m_device( device )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026747 {}
26748
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026749#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026750 Device & operator=(VkDevice device)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026751 {
26752 m_device = device;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026753 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026754 }
26755#endif
26756
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026757 Device & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026758 {
26759 m_device = VK_NULL_HANDLE;
26760 return *this;
26761 }
26762
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026763 bool operator==( Device const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026764 {
26765 return m_device == rhs.m_device;
26766 }
26767
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026768 bool operator!=(Device const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026769 {
26770 return m_device != rhs.m_device;
26771 }
26772
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026773 bool operator<(Device const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026774 {
26775 return m_device < rhs.m_device;
26776 }
26777
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026778 PFN_vkVoidFunction getProcAddr( const char* pName ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026779#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026780 PFN_vkVoidFunction getProcAddr( const std::string & name ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026781#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26782
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026783 void destroy( const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026784#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026785 void destroy( Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026786#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26787
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026788 void getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026789#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026790 Queue getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026791#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26792
26793#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026794 Result waitIdle() const;
26795#else
26796 ResultValueType<void>::type waitIdle() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026797#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26798
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026799 Result allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026800#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026801 ResultValueType<DeviceMemory>::type allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26802#ifndef VULKAN_HPP_NO_SMART_HANDLE
26803 UniqueDeviceMemory allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26804#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026805#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26806
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026807 void freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026808#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026809 void freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26810#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26811
26812 Result mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData ) const;
26813#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26814 ResultValueType<void*>::type mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags = MemoryMapFlags() ) const;
26815#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26816
26817 void unmapMemory( DeviceMemory memory ) const;
26818
26819 Result flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const;
26820#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26821 ResultValueType<void>::type flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const;
26822#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26823
26824 Result invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const;
26825#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26826 ResultValueType<void>::type invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const;
26827#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26828
26829 void getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes ) const;
26830#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26831 DeviceSize getMemoryCommitment( DeviceMemory memory ) const;
26832#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26833
26834 void getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements ) const;
26835#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26836 MemoryRequirements getBufferMemoryRequirements( Buffer buffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026837#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26838
26839#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026840 Result bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const;
26841#else
26842 ResultValueType<void>::type bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const;
26843#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026844
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026845 void getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026846#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026847 MemoryRequirements getImageMemoryRequirements( Image image ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026848#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26849
26850#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026851 Result bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const;
26852#else
26853 ResultValueType<void>::type bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026854#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26855
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026856 void getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026857#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026858 template <typename Allocator = std::allocator<SparseImageMemoryRequirements>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060026859 std::vector<SparseImageMemoryRequirements,Allocator> getImageSparseMemoryRequirements( Image image, Allocator const & alloc = Allocator() ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026860#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26861
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026862 Result createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026863#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026864 ResultValueType<Fence>::type createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26865#ifndef VULKAN_HPP_NO_SMART_HANDLE
26866 UniqueFence createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26867#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026868#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26869
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026870 void destroyFence( Fence fence, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026871#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026872 void destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026873#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26874
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026875 Result resetFences( uint32_t fenceCount, const Fence* pFences ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026876#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026877 ResultValueType<void>::type resetFences( ArrayProxy<const Fence> fences ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026878#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26879
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026880 Result getFenceStatus( Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026881
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026882 Result waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026883#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026884 Result waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout ) const;
26885#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26886
26887 Result createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore ) const;
26888#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26889 ResultValueType<Semaphore>::type createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26890#ifndef VULKAN_HPP_NO_SMART_HANDLE
26891 UniqueSemaphore createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26892#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26893#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26894
26895 void destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator ) const;
26896#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26897 void destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26898#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26899
26900 Result createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent ) const;
26901#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26902 ResultValueType<Event>::type createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26903#ifndef VULKAN_HPP_NO_SMART_HANDLE
26904 UniqueEvent createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26905#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26906#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26907
26908 void destroyEvent( Event event, const AllocationCallbacks* pAllocator ) const;
26909#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26910 void destroyEvent( Event event, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026911#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26912
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026913 Result getEventStatus( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026914
26915#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026916 Result setEvent( Event event ) const;
26917#else
26918 ResultValueType<void>::type setEvent( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026919#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26920
26921#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026922 Result resetEvent( Event event ) const;
26923#else
26924 ResultValueType<void>::type resetEvent( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026925#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26926
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026927 Result createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026928#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026929 ResultValueType<QueryPool>::type createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26930#ifndef VULKAN_HPP_NO_SMART_HANDLE
26931 UniqueQueryPool createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26932#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026933#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26934
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026935 void destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026936#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026937 void destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026938#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26939
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026940 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 -060026941#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26942 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026943 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 -060026944#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26945
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026946 Result createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026947#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026948 ResultValueType<Buffer>::type createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26949#ifndef VULKAN_HPP_NO_SMART_HANDLE
26950 UniqueBuffer createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26951#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026952#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26953
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026954 void destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026955#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026956 void destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026957#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26958
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026959 Result createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026960#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026961 ResultValueType<BufferView>::type createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26962#ifndef VULKAN_HPP_NO_SMART_HANDLE
26963 UniqueBufferView createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26964#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026965#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26966
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026967 void destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026968#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026969 void destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026970#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26971
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026972 Result createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026973#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026974 ResultValueType<Image>::type createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26975#ifndef VULKAN_HPP_NO_SMART_HANDLE
26976 UniqueImage createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26977#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026978#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26979
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026980 void destroyImage( Image image, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026981#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026982 void destroyImage( Image image, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026983#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26984
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026985 void getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026986#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026987 SubresourceLayout getImageSubresourceLayout( Image image, const ImageSubresource & subresource ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026988#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26989
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026990 Result createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026991#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026992 ResultValueType<ImageView>::type createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26993#ifndef VULKAN_HPP_NO_SMART_HANDLE
26994 UniqueImageView createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26995#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026996#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26997
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026998 void destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026999#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027000 void destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027001#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27002
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027003 Result createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027004#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027005 ResultValueType<ShaderModule>::type createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27006#ifndef VULKAN_HPP_NO_SMART_HANDLE
27007 UniqueShaderModule createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27008#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027009#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27010
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027011 void destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027012#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027013 void destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027014#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27015
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027016 Result createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027017#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027018 ResultValueType<PipelineCache>::type createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27019#ifndef VULKAN_HPP_NO_SMART_HANDLE
27020 UniquePipelineCache createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27021#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027022#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27023
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027024 void destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027025#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027026 void destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027027#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27028
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027029 Result getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027030#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027031 template <typename Allocator = std::allocator<uint8_t>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060027032 typename ResultValueType<std::vector<uint8_t,Allocator>>::type getPipelineCacheData( PipelineCache pipelineCache, Allocator const & alloc = Allocator() ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027033#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27034
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027035 Result mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027036#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027037 ResultValueType<void>::type mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027038#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27039
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027040 Result createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027041#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027042 template <typename Allocator = std::allocator<Pipeline>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060027043 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr, Allocator const & alloc = Allocator() ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027044 ResultValueType<Pipeline>::type createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27045#ifndef VULKAN_HPP_NO_SMART_HANDLE
27046 template <typename Allocator = std::allocator<Pipeline>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060027047 std::vector<UniquePipeline> createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr, Allocator const & alloc = Allocator() ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027048 UniquePipeline createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27049#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027050#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27051
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027052 Result createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027053#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027054 template <typename Allocator = std::allocator<Pipeline>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060027055 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr, Allocator const & alloc = Allocator() ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027056 ResultValueType<Pipeline>::type createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27057#ifndef VULKAN_HPP_NO_SMART_HANDLE
27058 template <typename Allocator = std::allocator<Pipeline>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060027059 std::vector<UniquePipeline> createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr, Allocator const & alloc = Allocator() ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027060 UniquePipeline createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27061#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027062#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27063
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027064 void destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027065#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027066 void destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027067#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27068
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027069 Result createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027070#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027071 ResultValueType<PipelineLayout>::type createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27072#ifndef VULKAN_HPP_NO_SMART_HANDLE
27073 UniquePipelineLayout createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27074#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027075#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27076
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027077 void destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027078#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027079 void destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027080#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27081
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027082 Result createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027083#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027084 ResultValueType<Sampler>::type createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27085#ifndef VULKAN_HPP_NO_SMART_HANDLE
27086 UniqueSampler createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27087#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027088#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27089
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027090 void destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027091#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027092 void destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027093#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27094
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027095 Result createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027096#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027097 ResultValueType<DescriptorSetLayout>::type createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27098#ifndef VULKAN_HPP_NO_SMART_HANDLE
27099 UniqueDescriptorSetLayout createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27100#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027101#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27102
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027103 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027104#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027105 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027106#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27107
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027108 Result createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027109#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027110 ResultValueType<DescriptorPool>::type createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27111#ifndef VULKAN_HPP_NO_SMART_HANDLE
27112 UniqueDescriptorPool createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27113#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027114#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27115
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027116 void destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027117#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027118 void destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator = nullptr ) 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 resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const;
27123#else
27124 ResultValueType<void>::type resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags = DescriptorPoolResetFlags() ) 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 allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027128#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027129 template <typename Allocator = std::allocator<DescriptorSet>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060027130 typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo, Allocator const & alloc = Allocator() ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027131#ifndef VULKAN_HPP_NO_SMART_HANDLE
27132 template <typename Allocator = std::allocator<DescriptorSet>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060027133 std::vector<UniqueDescriptorSet> allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo, Allocator const & alloc = Allocator() ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027134#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027135#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27136
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027137 Result freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027138#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027139 ResultValueType<void>::type freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027140#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27141
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027142 void updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027143#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027144 void updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027145#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27146
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027147 Result createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027148#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027149 ResultValueType<Framebuffer>::type createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27150#ifndef VULKAN_HPP_NO_SMART_HANDLE
27151 UniqueFramebuffer createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27152#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027153#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27154
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027155 void destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027156#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027157 void destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027158#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27159
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027160 Result createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027161#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027162 ResultValueType<RenderPass>::type createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27163#ifndef VULKAN_HPP_NO_SMART_HANDLE
27164 UniqueRenderPass createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27165#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027166#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27167
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027168 void destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027169#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027170 void destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027171#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27172
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027173 void getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027174#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027175 Extent2D getRenderAreaGranularity( RenderPass renderPass ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027176#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27177
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027178 Result createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027179#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027180 ResultValueType<CommandPool>::type createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27181#ifndef VULKAN_HPP_NO_SMART_HANDLE
27182 UniqueCommandPool createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27183#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027184#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27185
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027186 void destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027187#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027188 void destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027189#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27190
27191#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027192 Result resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const;
27193#else
27194 ResultValueType<void>::type resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027195#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27196
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027197 Result allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027198#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027199 template <typename Allocator = std::allocator<CommandBuffer>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060027200 typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo, Allocator const & alloc = Allocator() ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027201#ifndef VULKAN_HPP_NO_SMART_HANDLE
27202 template <typename Allocator = std::allocator<CommandBuffer>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060027203 std::vector<UniqueCommandBuffer> allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo, Allocator const & alloc = Allocator() ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027204#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027205#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27206
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027207 void freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027208#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027209 void freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027210#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27211
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027212 Result createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027213#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027214 template <typename Allocator = std::allocator<SwapchainKHR>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060027215 typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr, Allocator const & alloc = Allocator() ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027216 ResultValueType<SwapchainKHR>::type createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27217#ifndef VULKAN_HPP_NO_SMART_HANDLE
27218 template <typename Allocator = std::allocator<SwapchainKHR>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060027219 std::vector<UniqueSwapchainKHR> createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr, Allocator const & alloc = Allocator() ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027220 UniqueSwapchainKHR createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27221#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027222#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27223
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027224 Result createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027225#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027226 ResultValueType<SwapchainKHR>::type createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27227#ifndef VULKAN_HPP_NO_SMART_HANDLE
27228 UniqueSwapchainKHR createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27229#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027230#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27231
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027232 void destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027233#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027234 void destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027235#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27236
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027237 Result getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027238#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027239 template <typename Allocator = std::allocator<Image>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060027240 typename ResultValueType<std::vector<Image,Allocator>>::type getSwapchainImagesKHR( SwapchainKHR swapchain, Allocator const & alloc = Allocator() ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027241#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27242
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027243 Result acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027244#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027245 ResultValue<uint32_t> acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027246#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27247
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060027248 Result debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT* pNameInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027249#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060027250 ResultValueType<void>::type debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT & nameInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027251#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27252
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060027253 Result debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT* pTagInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027254#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060027255 ResultValueType<void>::type debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT & tagInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027256#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27257
Lenny Komow6501c122016-08-31 15:03:49 -060027258#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027259 Result getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const;
27260#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27261 ResultValueType<HANDLE>::type getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType ) const;
27262#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komow6501c122016-08-31 15:03:49 -060027263#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27264
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027265 Result createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const;
Lenny Komow6501c122016-08-31 15:03:49 -060027266#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027267 ResultValueType<IndirectCommandsLayoutNVX>::type createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27268#ifndef VULKAN_HPP_NO_SMART_HANDLE
27269 UniqueIndirectCommandsLayoutNVX createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27270#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komow6501c122016-08-31 15:03:49 -060027271#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27272
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027273 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027274#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027275 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027276#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27277
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027278 Result createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027279#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027280 ResultValueType<ObjectTableNVX>::type createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27281#ifndef VULKAN_HPP_NO_SMART_HANDLE
27282 UniqueObjectTableNVX createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27283#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027284#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27285
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027286 void destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027287#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027288 void destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027289#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27290
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027291 Result registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027292#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027293 ResultValueType<void>::type registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027294#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27295
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027296 Result unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027297#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027298 ResultValueType<void>::type unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027299#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27300
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027301#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027302 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags ) const;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027303#else
27304 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags = CommandPoolTrimFlagsKHR() ) const;
27305#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027306
Mark Youngabc2d6e2017-07-07 07:59:56 -060027307#ifdef VK_USE_PLATFORM_WIN32_KHR
27308 Result getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027309#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027310 ResultValueType<HANDLE>::type getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027311#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060027312#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070027313
Mark Youngabc2d6e2017-07-07 07:59:56 -060027314#ifdef VK_USE_PLATFORM_WIN32_KHR
27315 Result getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle, MemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027316#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027317 ResultValueType<MemoryWin32HandlePropertiesKHR>::type getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027318#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060027319#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070027320
Mark Youngabc2d6e2017-07-07 07:59:56 -060027321 Result getMemoryFdKHR( const MemoryGetFdInfoKHR* pGetFdInfo, int* pFd ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027322#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027323 ResultValueType<int>::type getMemoryFdKHR( const MemoryGetFdInfoKHR & getFdInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027324#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27325
Mark Youngabc2d6e2017-07-07 07:59:56 -060027326 Result getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, int fd, MemoryFdPropertiesKHR* pMemoryFdProperties ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027327#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027328 ResultValueType<MemoryFdPropertiesKHR>::type getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, int fd ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027329#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27330
Mark Youngabc2d6e2017-07-07 07:59:56 -060027331#ifdef VK_USE_PLATFORM_WIN32_KHR
27332 Result getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027333#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027334 ResultValueType<HANDLE>::type getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027335#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060027336#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070027337
Mark Youngabc2d6e2017-07-07 07:59:56 -060027338#ifdef VK_USE_PLATFORM_WIN32_KHR
27339 Result importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027340#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027341 ResultValueType<void>::type importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027342#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060027343#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070027344
Mark Youngabc2d6e2017-07-07 07:59:56 -060027345 Result getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027346#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027347 ResultValueType<int>::type getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR & getFdInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027348#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27349
Mark Youngabc2d6e2017-07-07 07:59:56 -060027350 Result importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027351#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027352 ResultValueType<void>::type importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo ) const;
27353#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27354
27355#ifdef VK_USE_PLATFORM_WIN32_KHR
27356 Result getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const;
27357#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27358 ResultValueType<HANDLE>::type getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
27359#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27360#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27361
27362#ifdef VK_USE_PLATFORM_WIN32_KHR
27363 Result importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo ) const;
27364#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27365 ResultValueType<void>::type importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo ) const;
27366#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27367#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27368
27369 Result getFenceFdKHR( const FenceGetFdInfoKHR* pGetFdInfo, int* pFd ) const;
27370#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27371 ResultValueType<int>::type getFenceFdKHR( const FenceGetFdInfoKHR & getFdInfo ) const;
27372#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27373
27374 Result importFenceFdKHR( const ImportFenceFdInfoKHR* pImportFenceFdInfo ) const;
27375#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27376 ResultValueType<void>::type importFenceFdKHR( const ImportFenceFdInfoKHR & importFenceFdInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027377#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27378
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027379 Result displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027380#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027381 ResultValueType<void>::type displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027382#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27383
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027384 Result registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Mark Young39389872017-01-19 21:10:49 -070027385#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060027386 ResultValueType<Fence>::type registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Young39389872017-01-19 21:10:49 -070027387#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27388
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027389 Result registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Mark Young39389872017-01-19 21:10:49 -070027390#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060027391 ResultValueType<Fence>::type registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Young39389872017-01-19 21:10:49 -070027392#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27393
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027394 Result getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const;
Mark Young39389872017-01-19 21:10:49 -070027395#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027396 ResultValue<uint64_t> getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter ) const;
Mark Young39389872017-01-19 21:10:49 -070027397#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27398
Mark Young0f183a82017-02-28 09:58:04 -070027399 void getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ) const;
27400#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27401 PeerMemoryFeatureFlagsKHX getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const;
27402#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27403
Lenny Komowb79f04a2017-09-18 17:07:00 -060027404 Result bindBufferMemory2KHR( uint32_t bindInfoCount, const BindBufferMemoryInfoKHR* pBindInfos ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027405#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060027406 ResultValueType<void>::type bindBufferMemory2KHR( ArrayProxy<const BindBufferMemoryInfoKHR> bindInfos ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027407#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27408
Lenny Komowb79f04a2017-09-18 17:07:00 -060027409 Result bindImageMemory2KHR( uint32_t bindInfoCount, const BindImageMemoryInfoKHR* pBindInfos ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027410#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060027411 ResultValueType<void>::type bindImageMemory2KHR( ArrayProxy<const BindImageMemoryInfoKHR> bindInfos ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027412#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27413
27414 Result getGroupPresentCapabilitiesKHX( DeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ) const;
27415#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27416 ResultValueType<DeviceGroupPresentCapabilitiesKHX>::type getGroupPresentCapabilitiesKHX() const;
27417#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27418
27419 Result getGroupSurfacePresentModesKHX( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHX* pModes ) const;
27420#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27421 ResultValueType<DeviceGroupPresentModeFlagsKHX>::type getGroupSurfacePresentModesKHX( SurfaceKHR surface ) const;
27422#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27423
27424 Result acquireNextImage2KHX( const AcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex ) const;
27425#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27426 ResultValue<uint32_t> acquireNextImage2KHX( const AcquireNextImageInfoKHX & acquireInfo ) const;
27427#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27428
27429 Result createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) const;
27430#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27431 ResultValueType<DescriptorUpdateTemplateKHR>::type createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27432#ifndef VULKAN_HPP_NO_SMART_HANDLE
27433 UniqueDescriptorUpdateTemplateKHR createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27434#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27435#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27436
27437 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const AllocationCallbacks* pAllocator ) const;
27438#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27439 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27440#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27441
27442 void updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData ) const;
27443
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027444 void setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata ) const;
27445#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27446 void setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata ) const;
27447#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27448
Mark Lobodzinski54385432017-05-15 10:27:52 -060027449 Result getSwapchainStatusKHR( SwapchainKHR swapchain ) const;
27450
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027451 Result getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const;
27452#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27453 ResultValueType<RefreshCycleDurationGOOGLE>::type getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain ) const;
27454#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27455
27456 Result getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings ) const;
27457#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27458 template <typename Allocator = std::allocator<PastPresentationTimingGOOGLE>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060027459 typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, Allocator const & alloc = Allocator() ) const;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027460#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27461
Mark Youngabc2d6e2017-07-07 07:59:56 -060027462 void getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR* pInfo, MemoryRequirements2KHR* pMemoryRequirements ) const;
27463#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27464 MemoryRequirements2KHR getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR & info ) const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060027465 template <typename ...T>
27466 StructureChain<T...> getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR & info ) const;
Mark Youngabc2d6e2017-07-07 07:59:56 -060027467#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27468
27469 void getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR* pInfo, MemoryRequirements2KHR* pMemoryRequirements ) const;
27470#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27471 MemoryRequirements2KHR getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR & info ) const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060027472 template <typename ...T>
27473 StructureChain<T...> getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR & info ) const;
Mark Youngabc2d6e2017-07-07 07:59:56 -060027474#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27475
27476 void getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2KHR* pInfo, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements2KHR* pSparseMemoryRequirements ) const;
27477#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27478 template <typename Allocator = std::allocator<SparseImageMemoryRequirements2KHR>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060027479 std::vector<SparseImageMemoryRequirements2KHR,Allocator> getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2KHR & info, Allocator const & alloc = Allocator() ) const;
Mark Youngabc2d6e2017-07-07 07:59:56 -060027480#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27481
Lenny Komowb79f04a2017-09-18 17:07:00 -060027482 Result createSamplerYcbcrConversionKHR( const SamplerYcbcrConversionCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SamplerYcbcrConversionKHR* pYcbcrConversion ) const;
27483#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27484 ResultValueType<SamplerYcbcrConversionKHR>::type createSamplerYcbcrConversionKHR( const SamplerYcbcrConversionCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27485#ifndef VULKAN_HPP_NO_SMART_HANDLE
27486 UniqueSamplerYcbcrConversionKHR createSamplerYcbcrConversionKHRUnique( const SamplerYcbcrConversionCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27487#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27488#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27489
27490 void destroySamplerYcbcrConversionKHR( SamplerYcbcrConversionKHR ycbcrConversion, const AllocationCallbacks* pAllocator ) const;
27491#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27492 void destroySamplerYcbcrConversionKHR( SamplerYcbcrConversionKHR ycbcrConversion, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27493#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27494
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060027495 Result createValidationCacheEXT( const ValidationCacheCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, ValidationCacheEXT* pValidationCache ) const;
27496#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27497 ResultValueType<ValidationCacheEXT>::type createValidationCacheEXT( const ValidationCacheCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27498#ifndef VULKAN_HPP_NO_SMART_HANDLE
27499 UniqueValidationCacheEXT createValidationCacheEXTUnique( const ValidationCacheCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27500#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27501#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27502
27503 void destroyValidationCacheEXT( ValidationCacheEXT validationCache, const AllocationCallbacks* pAllocator ) const;
27504#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27505 void destroyValidationCacheEXT( ValidationCacheEXT validationCache, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27506#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27507
27508 Result getValidationCacheDataEXT( ValidationCacheEXT validationCache, size_t* pDataSize, void* pData ) const;
27509#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27510 template <typename Allocator = std::allocator<uint8_t>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060027511 typename ResultValueType<std::vector<uint8_t,Allocator>>::type getValidationCacheDataEXT( ValidationCacheEXT validationCache, Allocator const & alloc = Allocator() ) const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060027512#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27513
27514 Result mergeValidationCachesEXT( ValidationCacheEXT dstCache, uint32_t srcCacheCount, const ValidationCacheEXT* pSrcCaches ) const;
27515#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27516 ResultValueType<void>::type mergeValidationCachesEXT( ValidationCacheEXT dstCache, ArrayProxy<const ValidationCacheEXT> srcCaches ) const;
27517#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27518
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027519
27520
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070027521 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDevice() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027522 {
27523 return m_device;
27524 }
27525
27526 explicit operator bool() const
27527 {
27528 return m_device != VK_NULL_HANDLE;
27529 }
27530
27531 bool operator!() const
27532 {
27533 return m_device == VK_NULL_HANDLE;
27534 }
27535
27536 private:
27537 VkDevice m_device;
27538 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027539
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027540 static_assert( sizeof( Device ) == sizeof( VkDevice ), "handle and wrapper have different size!" );
27541
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027542#ifndef VULKAN_HPP_NO_SMART_HANDLE
27543 class BufferDeleter
27544 {
27545 public:
27546 BufferDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27547 : m_device( device )
27548 , m_allocator( allocator )
27549 {}
27550
27551 void operator()( Buffer buffer )
27552 {
27553 m_device.destroyBuffer( buffer, m_allocator );
27554 }
27555
27556 private:
27557 Device m_device;
27558 Optional<const AllocationCallbacks> m_allocator;
27559 };
27560
27561 class BufferViewDeleter
27562 {
27563 public:
27564 BufferViewDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27565 : m_device( device )
27566 , m_allocator( allocator )
27567 {}
27568
27569 void operator()( BufferView bufferView )
27570 {
27571 m_device.destroyBufferView( bufferView, m_allocator );
27572 }
27573
27574 private:
27575 Device m_device;
27576 Optional<const AllocationCallbacks> m_allocator;
27577 };
27578
27579 class CommandBufferDeleter
27580 {
27581 public:
27582 CommandBufferDeleter( Device device = Device(), CommandPool commandPool = CommandPool() )
27583 : m_device( device )
27584 , m_commandPool( commandPool )
27585 {}
27586
27587 void operator()( CommandBuffer commandBuffer )
27588 {
27589 m_device.freeCommandBuffers( m_commandPool, commandBuffer );
27590 }
27591
27592 private:
27593 Device m_device;
27594 CommandPool m_commandPool;
27595 };
27596
27597 class CommandPoolDeleter
27598 {
27599 public:
27600 CommandPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27601 : m_device( device )
27602 , m_allocator( allocator )
27603 {}
27604
27605 void operator()( CommandPool commandPool )
27606 {
27607 m_device.destroyCommandPool( commandPool, m_allocator );
27608 }
27609
27610 private:
27611 Device m_device;
27612 Optional<const AllocationCallbacks> m_allocator;
27613 };
27614
27615 class DescriptorPoolDeleter
27616 {
27617 public:
27618 DescriptorPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27619 : m_device( device )
27620 , m_allocator( allocator )
27621 {}
27622
27623 void operator()( DescriptorPool descriptorPool )
27624 {
27625 m_device.destroyDescriptorPool( descriptorPool, m_allocator );
27626 }
27627
27628 private:
27629 Device m_device;
27630 Optional<const AllocationCallbacks> m_allocator;
27631 };
27632
27633 class DescriptorSetDeleter
27634 {
27635 public:
27636 DescriptorSetDeleter( Device device = Device(), DescriptorPool descriptorPool = DescriptorPool() )
27637 : m_device( device )
27638 , m_descriptorPool( descriptorPool )
27639 {}
27640
27641 void operator()( DescriptorSet descriptorSet )
27642 {
27643 m_device.freeDescriptorSets( m_descriptorPool, descriptorSet );
27644 }
27645
27646 private:
27647 Device m_device;
27648 DescriptorPool m_descriptorPool;
27649 };
27650
27651 class DescriptorSetLayoutDeleter
27652 {
27653 public:
27654 DescriptorSetLayoutDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27655 : m_device( device )
27656 , m_allocator( allocator )
27657 {}
27658
27659 void operator()( DescriptorSetLayout descriptorSetLayout )
27660 {
27661 m_device.destroyDescriptorSetLayout( descriptorSetLayout, m_allocator );
27662 }
27663
27664 private:
27665 Device m_device;
27666 Optional<const AllocationCallbacks> m_allocator;
27667 };
27668
Mark Young0f183a82017-02-28 09:58:04 -070027669 class DescriptorUpdateTemplateKHRDeleter
27670 {
27671 public:
27672 DescriptorUpdateTemplateKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27673 : m_device( device )
27674 , m_allocator( allocator )
27675 {}
27676
27677 void operator()( DescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR )
27678 {
27679 m_device.destroyDescriptorUpdateTemplateKHR( descriptorUpdateTemplateKHR, m_allocator );
27680 }
27681
27682 private:
27683 Device m_device;
27684 Optional<const AllocationCallbacks> m_allocator;
27685 };
27686
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027687 class DeviceMemoryDeleter
27688 {
27689 public:
27690 DeviceMemoryDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27691 : m_device( device )
27692 , m_allocator( allocator )
27693 {}
27694
27695 void operator()( DeviceMemory deviceMemory )
27696 {
27697 m_device.freeMemory( deviceMemory, m_allocator );
27698 }
27699
27700 private:
27701 Device m_device;
27702 Optional<const AllocationCallbacks> m_allocator;
27703 };
27704
27705 class EventDeleter
27706 {
27707 public:
27708 EventDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27709 : m_device( device )
27710 , m_allocator( allocator )
27711 {}
27712
27713 void operator()( Event event )
27714 {
27715 m_device.destroyEvent( event, m_allocator );
27716 }
27717
27718 private:
27719 Device m_device;
27720 Optional<const AllocationCallbacks> m_allocator;
27721 };
27722
27723 class FenceDeleter
27724 {
27725 public:
27726 FenceDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27727 : m_device( device )
27728 , m_allocator( allocator )
27729 {}
27730
27731 void operator()( Fence fence )
27732 {
27733 m_device.destroyFence( fence, m_allocator );
27734 }
27735
27736 private:
27737 Device m_device;
27738 Optional<const AllocationCallbacks> m_allocator;
27739 };
27740
27741 class FramebufferDeleter
27742 {
27743 public:
27744 FramebufferDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27745 : m_device( device )
27746 , m_allocator( allocator )
27747 {}
27748
27749 void operator()( Framebuffer framebuffer )
27750 {
27751 m_device.destroyFramebuffer( framebuffer, m_allocator );
27752 }
27753
27754 private:
27755 Device m_device;
27756 Optional<const AllocationCallbacks> m_allocator;
27757 };
27758
27759 class ImageDeleter
27760 {
27761 public:
27762 ImageDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27763 : m_device( device )
27764 , m_allocator( allocator )
27765 {}
27766
27767 void operator()( Image image )
27768 {
27769 m_device.destroyImage( image, m_allocator );
27770 }
27771
27772 private:
27773 Device m_device;
27774 Optional<const AllocationCallbacks> m_allocator;
27775 };
27776
27777 class ImageViewDeleter
27778 {
27779 public:
27780 ImageViewDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27781 : m_device( device )
27782 , m_allocator( allocator )
27783 {}
27784
27785 void operator()( ImageView imageView )
27786 {
27787 m_device.destroyImageView( imageView, m_allocator );
27788 }
27789
27790 private:
27791 Device m_device;
27792 Optional<const AllocationCallbacks> m_allocator;
27793 };
27794
27795 class IndirectCommandsLayoutNVXDeleter
27796 {
27797 public:
27798 IndirectCommandsLayoutNVXDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27799 : m_device( device )
27800 , m_allocator( allocator )
27801 {}
27802
27803 void operator()( IndirectCommandsLayoutNVX indirectCommandsLayoutNVX )
27804 {
27805 m_device.destroyIndirectCommandsLayoutNVX( indirectCommandsLayoutNVX, m_allocator );
27806 }
27807
27808 private:
27809 Device m_device;
27810 Optional<const AllocationCallbacks> m_allocator;
27811 };
27812
27813 class ObjectTableNVXDeleter
27814 {
27815 public:
27816 ObjectTableNVXDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27817 : m_device( device )
27818 , m_allocator( allocator )
27819 {}
27820
27821 void operator()( ObjectTableNVX objectTableNVX )
27822 {
27823 m_device.destroyObjectTableNVX( objectTableNVX, m_allocator );
27824 }
27825
27826 private:
27827 Device m_device;
27828 Optional<const AllocationCallbacks> m_allocator;
27829 };
27830
27831 class PipelineDeleter
27832 {
27833 public:
27834 PipelineDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27835 : m_device( device )
27836 , m_allocator( allocator )
27837 {}
27838
27839 void operator()( Pipeline pipeline )
27840 {
27841 m_device.destroyPipeline( pipeline, m_allocator );
27842 }
27843
27844 private:
27845 Device m_device;
27846 Optional<const AllocationCallbacks> m_allocator;
27847 };
27848
27849 class PipelineCacheDeleter
27850 {
27851 public:
27852 PipelineCacheDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27853 : m_device( device )
27854 , m_allocator( allocator )
27855 {}
27856
27857 void operator()( PipelineCache pipelineCache )
27858 {
27859 m_device.destroyPipelineCache( pipelineCache, m_allocator );
27860 }
27861
27862 private:
27863 Device m_device;
27864 Optional<const AllocationCallbacks> m_allocator;
27865 };
27866
27867 class PipelineLayoutDeleter
27868 {
27869 public:
27870 PipelineLayoutDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27871 : m_device( device )
27872 , m_allocator( allocator )
27873 {}
27874
27875 void operator()( PipelineLayout pipelineLayout )
27876 {
27877 m_device.destroyPipelineLayout( pipelineLayout, m_allocator );
27878 }
27879
27880 private:
27881 Device m_device;
27882 Optional<const AllocationCallbacks> m_allocator;
27883 };
27884
27885 class QueryPoolDeleter
27886 {
27887 public:
27888 QueryPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27889 : m_device( device )
27890 , m_allocator( allocator )
27891 {}
27892
27893 void operator()( QueryPool queryPool )
27894 {
27895 m_device.destroyQueryPool( queryPool, m_allocator );
27896 }
27897
27898 private:
27899 Device m_device;
27900 Optional<const AllocationCallbacks> m_allocator;
27901 };
27902
27903 class RenderPassDeleter
27904 {
27905 public:
27906 RenderPassDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27907 : m_device( device )
27908 , m_allocator( allocator )
27909 {}
27910
27911 void operator()( RenderPass renderPass )
27912 {
27913 m_device.destroyRenderPass( renderPass, m_allocator );
27914 }
27915
27916 private:
27917 Device m_device;
27918 Optional<const AllocationCallbacks> m_allocator;
27919 };
27920
27921 class SamplerDeleter
27922 {
27923 public:
27924 SamplerDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27925 : m_device( device )
27926 , m_allocator( allocator )
27927 {}
27928
27929 void operator()( Sampler sampler )
27930 {
27931 m_device.destroySampler( sampler, m_allocator );
27932 }
27933
27934 private:
27935 Device m_device;
27936 Optional<const AllocationCallbacks> m_allocator;
27937 };
27938
Lenny Komowb79f04a2017-09-18 17:07:00 -060027939 class SamplerYcbcrConversionKHRDeleter
27940 {
27941 public:
27942 SamplerYcbcrConversionKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27943 : m_device( device )
27944 , m_allocator( allocator )
27945 {}
27946
27947 void operator()( SamplerYcbcrConversionKHR samplerYcbcrConversionKHR )
27948 {
27949 m_device.destroySamplerYcbcrConversionKHR( samplerYcbcrConversionKHR, m_allocator );
27950 }
27951
27952 private:
27953 Device m_device;
27954 Optional<const AllocationCallbacks> m_allocator;
27955 };
27956
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027957 class SemaphoreDeleter
27958 {
27959 public:
27960 SemaphoreDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27961 : m_device( device )
27962 , m_allocator( allocator )
27963 {}
27964
27965 void operator()( Semaphore semaphore )
27966 {
27967 m_device.destroySemaphore( semaphore, m_allocator );
27968 }
27969
27970 private:
27971 Device m_device;
27972 Optional<const AllocationCallbacks> m_allocator;
27973 };
27974
27975 class ShaderModuleDeleter
27976 {
27977 public:
27978 ShaderModuleDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27979 : m_device( device )
27980 , m_allocator( allocator )
27981 {}
27982
27983 void operator()( ShaderModule shaderModule )
27984 {
27985 m_device.destroyShaderModule( shaderModule, m_allocator );
27986 }
27987
27988 private:
27989 Device m_device;
27990 Optional<const AllocationCallbacks> m_allocator;
27991 };
27992
27993 class SwapchainKHRDeleter
27994 {
27995 public:
27996 SwapchainKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27997 : m_device( device )
27998 , m_allocator( allocator )
27999 {}
28000
28001 void operator()( SwapchainKHR swapchainKHR )
28002 {
28003 m_device.destroySwapchainKHR( swapchainKHR, m_allocator );
28004 }
28005
28006 private:
28007 Device m_device;
28008 Optional<const AllocationCallbacks> m_allocator;
28009 };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060028010
28011 class ValidationCacheEXTDeleter
28012 {
28013 public:
28014 ValidationCacheEXTDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28015 : m_device( device )
28016 , m_allocator( allocator )
28017 {}
28018
28019 void operator()( ValidationCacheEXT validationCacheEXT )
28020 {
28021 m_device.destroyValidationCacheEXT( validationCacheEXT, m_allocator );
28022 }
28023
28024 private:
28025 Device m_device;
28026 Optional<const AllocationCallbacks> m_allocator;
28027 };
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028028#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28029
28030 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const char* pName ) const
28031 {
28032 return vkGetDeviceProcAddr( m_device, pName );
28033 }
28034#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28035 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const std::string & name ) const
28036 {
28037 return vkGetDeviceProcAddr( m_device, name.c_str() );
28038 }
28039#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28040
28041 VULKAN_HPP_INLINE void Device::destroy( const AllocationCallbacks* pAllocator ) const
28042 {
28043 vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28044 }
28045#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28046 VULKAN_HPP_INLINE void Device::destroy( Optional<const AllocationCallbacks> allocator ) const
28047 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028048 vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028049 }
28050#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28051
28052 VULKAN_HPP_INLINE void Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue ) const
28053 {
28054 vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( pQueue ) );
28055 }
28056#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28057 VULKAN_HPP_INLINE Queue Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const
28058 {
28059 Queue queue;
28060 vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( &queue ) );
28061 return queue;
28062 }
28063#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28064
28065#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28066 VULKAN_HPP_INLINE Result Device::waitIdle() const
28067 {
28068 return static_cast<Result>( vkDeviceWaitIdle( m_device ) );
28069 }
28070#else
28071 VULKAN_HPP_INLINE ResultValueType<void>::type Device::waitIdle() const
28072 {
28073 Result result = static_cast<Result>( vkDeviceWaitIdle( m_device ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028074 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::waitIdle" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028075 }
28076#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28077
28078 VULKAN_HPP_INLINE Result Device::allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory ) const
28079 {
28080 return static_cast<Result>( vkAllocateMemory( m_device, reinterpret_cast<const VkMemoryAllocateInfo*>( pAllocateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDeviceMemory*>( pMemory ) ) );
28081 }
28082#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28083 VULKAN_HPP_INLINE ResultValueType<DeviceMemory>::type Device::allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator ) const
28084 {
28085 DeviceMemory memory;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028086 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 -060028087 return createResultValue( result, memory, "VULKAN_HPP_NAMESPACE::Device::allocateMemory" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028088 }
28089#ifndef VULKAN_HPP_NO_SMART_HANDLE
28090 VULKAN_HPP_INLINE UniqueDeviceMemory Device::allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator ) const
28091 {
28092 DeviceMemoryDeleter deleter( *this, allocator );
28093 return UniqueDeviceMemory( allocateMemory( allocateInfo, allocator ), deleter );
28094 }
28095#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28096#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28097
28098 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator ) const
28099 {
28100 vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28101 }
28102#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28103 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator ) const
28104 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028105 vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028106 }
28107#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28108
28109 VULKAN_HPP_INLINE Result Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData ) const
28110 {
28111 return static_cast<Result>( vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), ppData ) );
28112 }
28113#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28114 VULKAN_HPP_INLINE ResultValueType<void*>::type Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags ) const
28115 {
28116 void* pData;
28117 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 -060028118 return createResultValue( result, pData, "VULKAN_HPP_NAMESPACE::Device::mapMemory" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028119 }
28120#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28121
28122 VULKAN_HPP_INLINE void Device::unmapMemory( DeviceMemory memory ) const
28123 {
28124 vkUnmapMemory( m_device, static_cast<VkDeviceMemory>( memory ) );
28125 }
28126
28127 VULKAN_HPP_INLINE Result Device::flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const
28128 {
28129 return static_cast<Result>( vkFlushMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
28130 }
28131#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28132 VULKAN_HPP_INLINE ResultValueType<void>::type Device::flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const
28133 {
28134 Result result = static_cast<Result>( vkFlushMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028135 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::flushMappedMemoryRanges" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028136 }
28137#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28138
28139 VULKAN_HPP_INLINE Result Device::invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const
28140 {
28141 return static_cast<Result>( vkInvalidateMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
28142 }
28143#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28144 VULKAN_HPP_INLINE ResultValueType<void>::type Device::invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const
28145 {
28146 Result result = static_cast<Result>( vkInvalidateMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028147 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::invalidateMappedMemoryRanges" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028148 }
28149#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28150
28151 VULKAN_HPP_INLINE void Device::getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes ) const
28152 {
28153 vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), pCommittedMemoryInBytes );
28154 }
28155#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28156 VULKAN_HPP_INLINE DeviceSize Device::getMemoryCommitment( DeviceMemory memory ) const
28157 {
28158 DeviceSize committedMemoryInBytes;
28159 vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), &committedMemoryInBytes );
28160 return committedMemoryInBytes;
28161 }
28162#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28163
28164 VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements ) const
28165 {
28166 vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
28167 }
28168#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28169 VULKAN_HPP_INLINE MemoryRequirements Device::getBufferMemoryRequirements( Buffer buffer ) const
28170 {
28171 MemoryRequirements memoryRequirements;
28172 vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
28173 return memoryRequirements;
28174 }
28175#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28176
28177#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28178 VULKAN_HPP_INLINE Result Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const
28179 {
28180 return static_cast<Result>( vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
28181 }
28182#else
28183 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const
28184 {
28185 Result result = static_cast<Result>( vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028186 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::bindBufferMemory" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028187 }
28188#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28189
28190 VULKAN_HPP_INLINE void Device::getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements ) const
28191 {
28192 vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
28193 }
28194#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28195 VULKAN_HPP_INLINE MemoryRequirements Device::getImageMemoryRequirements( Image image ) const
28196 {
28197 MemoryRequirements memoryRequirements;
28198 vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
28199 return memoryRequirements;
28200 }
28201#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28202
28203#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28204 VULKAN_HPP_INLINE Result Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const
28205 {
28206 return static_cast<Result>( vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
28207 }
28208#else
28209 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const
28210 {
28211 Result result = static_cast<Result>( vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028212 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::bindImageMemory" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028213 }
28214#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28215
28216 VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements ) const
28217 {
28218 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), pSparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( pSparseMemoryRequirements ) );
28219 }
28220#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28221 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028222 VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements,Allocator> Device::getImageSparseMemoryRequirements( Image image, Allocator const & alloc ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028223 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028224 std::vector<SparseImageMemoryRequirements,Allocator> sparseMemoryRequirements( {alloc} );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028225 uint32_t sparseMemoryRequirementCount;
28226 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, nullptr );
28227 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
28228 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( sparseMemoryRequirements.data() ) );
28229 return sparseMemoryRequirements;
28230 }
28231#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28232
28233 VULKAN_HPP_INLINE Result Device::createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
28234 {
28235 return static_cast<Result>( vkCreateFence( m_device, reinterpret_cast<const VkFenceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
28236 }
28237#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28238 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28239 {
28240 Fence fence;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028241 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 -060028242 return createResultValue( result, fence, "VULKAN_HPP_NAMESPACE::Device::createFence" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028243 }
28244#ifndef VULKAN_HPP_NO_SMART_HANDLE
28245 VULKAN_HPP_INLINE UniqueFence Device::createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28246 {
28247 FenceDeleter deleter( *this, allocator );
28248 return UniqueFence( createFence( createInfo, allocator ), deleter );
28249 }
28250#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28251#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28252
28253 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, const AllocationCallbacks* pAllocator ) const
28254 {
28255 vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28256 }
28257#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28258 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator ) const
28259 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028260 vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028261 }
28262#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28263
28264 VULKAN_HPP_INLINE Result Device::resetFences( uint32_t fenceCount, const Fence* pFences ) const
28265 {
28266 return static_cast<Result>( vkResetFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ) ) );
28267 }
28268#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28269 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetFences( ArrayProxy<const Fence> fences ) const
28270 {
28271 Result result = static_cast<Result>( vkResetFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028272 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::resetFences" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028273 }
28274#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28275
28276#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28277 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence ) const
28278 {
28279 return static_cast<Result>( vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
28280 }
28281#else
28282 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence ) const
28283 {
28284 Result result = static_cast<Result>( vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028285 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::getFenceStatus", { Result::eSuccess, Result::eNotReady } );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028286 }
28287#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28288
28289 VULKAN_HPP_INLINE Result Device::waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout ) const
28290 {
28291 return static_cast<Result>( vkWaitForFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ), waitAll, timeout ) );
28292 }
28293#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28294 VULKAN_HPP_INLINE Result Device::waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout ) const
28295 {
28296 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 -060028297 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::waitForFences", { Result::eSuccess, Result::eTimeout } );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028298 }
28299#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28300
28301 VULKAN_HPP_INLINE Result Device::createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore ) const
28302 {
28303 return static_cast<Result>( vkCreateSemaphore( m_device, reinterpret_cast<const VkSemaphoreCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSemaphore*>( pSemaphore ) ) );
28304 }
28305#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28306 VULKAN_HPP_INLINE ResultValueType<Semaphore>::type Device::createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28307 {
28308 Semaphore semaphore;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028309 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 -060028310 return createResultValue( result, semaphore, "VULKAN_HPP_NAMESPACE::Device::createSemaphore" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028311 }
28312#ifndef VULKAN_HPP_NO_SMART_HANDLE
28313 VULKAN_HPP_INLINE UniqueSemaphore Device::createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28314 {
28315 SemaphoreDeleter deleter( *this, allocator );
28316 return UniqueSemaphore( createSemaphore( createInfo, allocator ), deleter );
28317 }
28318#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28319#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28320
28321 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator ) const
28322 {
28323 vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28324 }
28325#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28326 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator ) const
28327 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028328 vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028329 }
28330#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28331
28332 VULKAN_HPP_INLINE Result Device::createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent ) const
28333 {
28334 return static_cast<Result>( vkCreateEvent( m_device, reinterpret_cast<const VkEventCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkEvent*>( pEvent ) ) );
28335 }
28336#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28337 VULKAN_HPP_INLINE ResultValueType<Event>::type Device::createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28338 {
28339 Event event;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028340 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 -060028341 return createResultValue( result, event, "VULKAN_HPP_NAMESPACE::Device::createEvent" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028342 }
28343#ifndef VULKAN_HPP_NO_SMART_HANDLE
28344 VULKAN_HPP_INLINE UniqueEvent Device::createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28345 {
28346 EventDeleter deleter( *this, allocator );
28347 return UniqueEvent( createEvent( createInfo, allocator ), deleter );
28348 }
28349#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28350#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28351
28352 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, const AllocationCallbacks* pAllocator ) const
28353 {
28354 vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28355 }
28356#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28357 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, Optional<const AllocationCallbacks> allocator ) const
28358 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028359 vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028360 }
28361#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28362
28363#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28364 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event ) const
28365 {
28366 return static_cast<Result>( vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
28367 }
28368#else
28369 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event ) const
28370 {
28371 Result result = static_cast<Result>( vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028372 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::getEventStatus", { Result::eEventSet, Result::eEventReset } );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028373 }
28374#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28375
28376#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28377 VULKAN_HPP_INLINE Result Device::setEvent( Event event ) const
28378 {
28379 return static_cast<Result>( vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
28380 }
28381#else
28382 VULKAN_HPP_INLINE ResultValueType<void>::type Device::setEvent( Event event ) const
28383 {
28384 Result result = static_cast<Result>( vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028385 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::setEvent" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028386 }
28387#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28388
28389#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28390 VULKAN_HPP_INLINE Result Device::resetEvent( Event event ) const
28391 {
28392 return static_cast<Result>( vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
28393 }
28394#else
28395 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetEvent( Event event ) const
28396 {
28397 Result result = static_cast<Result>( vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028398 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::resetEvent" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028399 }
28400#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28401
28402 VULKAN_HPP_INLINE Result Device::createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool ) const
28403 {
28404 return static_cast<Result>( vkCreateQueryPool( m_device, reinterpret_cast<const VkQueryPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkQueryPool*>( pQueryPool ) ) );
28405 }
28406#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28407 VULKAN_HPP_INLINE ResultValueType<QueryPool>::type Device::createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28408 {
28409 QueryPool queryPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028410 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 -060028411 return createResultValue( result, queryPool, "VULKAN_HPP_NAMESPACE::Device::createQueryPool" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028412 }
28413#ifndef VULKAN_HPP_NO_SMART_HANDLE
28414 VULKAN_HPP_INLINE UniqueQueryPool Device::createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28415 {
28416 QueryPoolDeleter deleter( *this, allocator );
28417 return UniqueQueryPool( createQueryPool( createInfo, allocator ), deleter );
28418 }
28419#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28420#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28421
28422 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator ) const
28423 {
28424 vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28425 }
28426#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28427 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator ) const
28428 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028429 vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028430 }
28431#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28432
28433 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, DeviceSize stride, QueryResultFlags flags ) const
28434 {
28435 return static_cast<Result>( vkGetQueryPoolResults( m_device, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, dataSize, pData, stride, static_cast<VkQueryResultFlags>( flags ) ) );
28436 }
28437#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28438 template <typename T>
28439 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, ArrayProxy<T> data, DeviceSize stride, QueryResultFlags flags ) const
28440 {
28441 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 -060028442 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::getQueryPoolResults", { Result::eSuccess, Result::eNotReady } );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028443 }
28444#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28445
28446 VULKAN_HPP_INLINE Result Device::createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer ) const
28447 {
28448 return static_cast<Result>( vkCreateBuffer( m_device, reinterpret_cast<const VkBufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBuffer*>( pBuffer ) ) );
28449 }
28450#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28451 VULKAN_HPP_INLINE ResultValueType<Buffer>::type Device::createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28452 {
28453 Buffer buffer;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028454 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 -060028455 return createResultValue( result, buffer, "VULKAN_HPP_NAMESPACE::Device::createBuffer" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028456 }
28457#ifndef VULKAN_HPP_NO_SMART_HANDLE
28458 VULKAN_HPP_INLINE UniqueBuffer Device::createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28459 {
28460 BufferDeleter deleter( *this, allocator );
28461 return UniqueBuffer( createBuffer( createInfo, allocator ), deleter );
28462 }
28463#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28464#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28465
28466 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator ) const
28467 {
28468 vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28469 }
28470#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28471 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator ) const
28472 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028473 vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028474 }
28475#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28476
28477 VULKAN_HPP_INLINE Result Device::createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView ) const
28478 {
28479 return static_cast<Result>( vkCreateBufferView( m_device, reinterpret_cast<const VkBufferViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBufferView*>( pView ) ) );
28480 }
28481#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28482 VULKAN_HPP_INLINE ResultValueType<BufferView>::type Device::createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28483 {
28484 BufferView view;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028485 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 -060028486 return createResultValue( result, view, "VULKAN_HPP_NAMESPACE::Device::createBufferView" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028487 }
28488#ifndef VULKAN_HPP_NO_SMART_HANDLE
28489 VULKAN_HPP_INLINE UniqueBufferView Device::createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28490 {
28491 BufferViewDeleter deleter( *this, allocator );
28492 return UniqueBufferView( createBufferView( createInfo, allocator ), deleter );
28493 }
28494#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28495#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28496
28497 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator ) const
28498 {
28499 vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28500 }
28501#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28502 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator ) const
28503 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028504 vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028505 }
28506#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28507
28508 VULKAN_HPP_INLINE Result Device::createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage ) const
28509 {
28510 return static_cast<Result>( vkCreateImage( m_device, reinterpret_cast<const VkImageCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImage*>( pImage ) ) );
28511 }
28512#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28513 VULKAN_HPP_INLINE ResultValueType<Image>::type Device::createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28514 {
28515 Image image;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028516 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 -060028517 return createResultValue( result, image, "VULKAN_HPP_NAMESPACE::Device::createImage" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028518 }
28519#ifndef VULKAN_HPP_NO_SMART_HANDLE
28520 VULKAN_HPP_INLINE UniqueImage Device::createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28521 {
28522 ImageDeleter deleter( *this, allocator );
28523 return UniqueImage( createImage( createInfo, allocator ), deleter );
28524 }
28525#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28526#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28527
28528 VULKAN_HPP_INLINE void Device::destroyImage( Image image, const AllocationCallbacks* pAllocator ) const
28529 {
28530 vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28531 }
28532#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28533 VULKAN_HPP_INLINE void Device::destroyImage( Image image, Optional<const AllocationCallbacks> allocator ) const
28534 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028535 vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028536 }
28537#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28538
28539 VULKAN_HPP_INLINE void Device::getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout ) const
28540 {
28541 vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( pSubresource ), reinterpret_cast<VkSubresourceLayout*>( pLayout ) );
28542 }
28543#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28544 VULKAN_HPP_INLINE SubresourceLayout Device::getImageSubresourceLayout( Image image, const ImageSubresource & subresource ) const
28545 {
28546 SubresourceLayout layout;
28547 vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( &subresource ), reinterpret_cast<VkSubresourceLayout*>( &layout ) );
28548 return layout;
28549 }
28550#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28551
28552 VULKAN_HPP_INLINE Result Device::createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView ) const
28553 {
28554 return static_cast<Result>( vkCreateImageView( m_device, reinterpret_cast<const VkImageViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImageView*>( pView ) ) );
28555 }
28556#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28557 VULKAN_HPP_INLINE ResultValueType<ImageView>::type Device::createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28558 {
28559 ImageView view;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028560 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 -060028561 return createResultValue( result, view, "VULKAN_HPP_NAMESPACE::Device::createImageView" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028562 }
28563#ifndef VULKAN_HPP_NO_SMART_HANDLE
28564 VULKAN_HPP_INLINE UniqueImageView Device::createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28565 {
28566 ImageViewDeleter deleter( *this, allocator );
28567 return UniqueImageView( createImageView( createInfo, allocator ), deleter );
28568 }
28569#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28570#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28571
28572 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator ) const
28573 {
28574 vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28575 }
28576#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28577 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator ) const
28578 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028579 vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028580 }
28581#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28582
28583 VULKAN_HPP_INLINE Result Device::createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule ) const
28584 {
28585 return static_cast<Result>( vkCreateShaderModule( m_device, reinterpret_cast<const VkShaderModuleCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkShaderModule*>( pShaderModule ) ) );
28586 }
28587#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28588 VULKAN_HPP_INLINE ResultValueType<ShaderModule>::type Device::createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28589 {
28590 ShaderModule shaderModule;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028591 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 -060028592 return createResultValue( result, shaderModule, "VULKAN_HPP_NAMESPACE::Device::createShaderModule" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028593 }
28594#ifndef VULKAN_HPP_NO_SMART_HANDLE
28595 VULKAN_HPP_INLINE UniqueShaderModule Device::createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28596 {
28597 ShaderModuleDeleter deleter( *this, allocator );
28598 return UniqueShaderModule( createShaderModule( createInfo, allocator ), deleter );
28599 }
28600#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28601#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28602
28603 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator ) const
28604 {
28605 vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28606 }
28607#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28608 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator ) const
28609 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028610 vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028611 }
28612#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28613
28614 VULKAN_HPP_INLINE Result Device::createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache ) const
28615 {
28616 return static_cast<Result>( vkCreatePipelineCache( m_device, reinterpret_cast<const VkPipelineCacheCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineCache*>( pPipelineCache ) ) );
28617 }
28618#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28619 VULKAN_HPP_INLINE ResultValueType<PipelineCache>::type Device::createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28620 {
28621 PipelineCache pipelineCache;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028622 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 -060028623 return createResultValue( result, pipelineCache, "VULKAN_HPP_NAMESPACE::Device::createPipelineCache" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028624 }
28625#ifndef VULKAN_HPP_NO_SMART_HANDLE
28626 VULKAN_HPP_INLINE UniquePipelineCache Device::createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28627 {
28628 PipelineCacheDeleter deleter( *this, allocator );
28629 return UniquePipelineCache( createPipelineCache( createInfo, allocator ), deleter );
28630 }
28631#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28632#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28633
28634 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator ) const
28635 {
28636 vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28637 }
28638#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28639 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator ) const
28640 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028641 vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028642 }
28643#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28644
28645 VULKAN_HPP_INLINE Result Device::getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData ) const
28646 {
28647 return static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), pDataSize, pData ) );
28648 }
28649#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28650 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028651 VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getPipelineCacheData( PipelineCache pipelineCache, Allocator const & alloc ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028652 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028653 std::vector<uint8_t,Allocator> data( {alloc} );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028654 size_t dataSize;
28655 Result result;
28656 do
28657 {
28658 result = static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, nullptr ) );
28659 if ( ( result == Result::eSuccess ) && dataSize )
28660 {
28661 data.resize( dataSize );
28662 result = static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, reinterpret_cast<void*>( data.data() ) ) );
28663 }
28664 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028665 assert( dataSize <= data.size() );
28666 data.resize( dataSize );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028667 return createResultValue( result, data, "VULKAN_HPP_NAMESPACE::Device::getPipelineCacheData" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028668 }
28669#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28670
28671 VULKAN_HPP_INLINE Result Device::mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches ) const
28672 {
28673 return static_cast<Result>( vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCacheCount, reinterpret_cast<const VkPipelineCache*>( pSrcCaches ) ) );
28674 }
28675#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28676 VULKAN_HPP_INLINE ResultValueType<void>::type Device::mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches ) const
28677 {
28678 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 -060028679 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::mergePipelineCaches" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028680 }
28681#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28682
28683 VULKAN_HPP_INLINE Result Device::createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const
28684 {
28685 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 ) ) );
28686 }
28687#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28688 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028689 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator, Allocator const & alloc ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028690 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028691 std::vector<Pipeline,Allocator> pipelines( createInfos.size(), {}, {alloc} );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028692 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 -060028693 return createResultValue( result, pipelines, "VULKAN_HPP_NAMESPACE::Device::createGraphicsPipelines" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028694 }
28695 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28696 {
28697 Pipeline pipeline;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028698 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 -060028699 return createResultValue( result, pipeline, "VULKAN_HPP_NAMESPACE::Device::createGraphicsPipeline" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028700 }
28701#ifndef VULKAN_HPP_NO_SMART_HANDLE
28702 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028703 VULKAN_HPP_INLINE std::vector<UniquePipeline> Device::createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator, Allocator const & alloc ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028704 {
28705 PipelineDeleter deleter( *this, allocator );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028706 std::vector<Pipeline,Allocator> pipelines = createGraphicsPipelines( pipelineCache, createInfos, allocator, alloc );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028707 std::vector<UniquePipeline> uniquePipelines;
28708 uniquePipelines.reserve( pipelines.size() );
28709 for ( auto pipeline : pipelines )
28710 {
28711 uniquePipelines.push_back( UniquePipeline( pipeline, deleter ) );
28712 }
28713 return uniquePipelines;
28714 }
28715 VULKAN_HPP_INLINE UniquePipeline Device::createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28716 {
28717 PipelineDeleter deleter( *this, allocator );
28718 return UniquePipeline( createGraphicsPipeline( pipelineCache, createInfo, allocator ), deleter );
28719 }
28720#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28721#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28722
28723 VULKAN_HPP_INLINE Result Device::createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const
28724 {
28725 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 ) ) );
28726 }
28727#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28728 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028729 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator, Allocator const & alloc ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028730 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028731 std::vector<Pipeline,Allocator> pipelines( createInfos.size(), {}, {alloc} );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028732 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 -060028733 return createResultValue( result, pipelines, "VULKAN_HPP_NAMESPACE::Device::createComputePipelines" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028734 }
28735 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28736 {
28737 Pipeline pipeline;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028738 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 -060028739 return createResultValue( result, pipeline, "VULKAN_HPP_NAMESPACE::Device::createComputePipeline" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028740 }
28741#ifndef VULKAN_HPP_NO_SMART_HANDLE
28742 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028743 VULKAN_HPP_INLINE std::vector<UniquePipeline> Device::createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator, Allocator const & alloc ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028744 {
28745 PipelineDeleter deleter( *this, allocator );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028746 std::vector<Pipeline,Allocator> pipelines = createComputePipelines( pipelineCache, createInfos, allocator, alloc );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028747 std::vector<UniquePipeline> uniquePipelines;
28748 uniquePipelines.reserve( pipelines.size() );
28749 for ( auto pipeline : pipelines )
28750 {
28751 uniquePipelines.push_back( UniquePipeline( pipeline, deleter ) );
28752 }
28753 return uniquePipelines;
28754 }
28755 VULKAN_HPP_INLINE UniquePipeline Device::createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28756 {
28757 PipelineDeleter deleter( *this, allocator );
28758 return UniquePipeline( createComputePipeline( pipelineCache, createInfo, allocator ), deleter );
28759 }
28760#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28761#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28762
28763 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator ) const
28764 {
28765 vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28766 }
28767#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28768 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator ) const
28769 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028770 vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028771 }
28772#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28773
28774 VULKAN_HPP_INLINE Result Device::createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout ) const
28775 {
28776 return static_cast<Result>( vkCreatePipelineLayout( m_device, reinterpret_cast<const VkPipelineLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineLayout*>( pPipelineLayout ) ) );
28777 }
28778#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28779 VULKAN_HPP_INLINE ResultValueType<PipelineLayout>::type Device::createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28780 {
28781 PipelineLayout pipelineLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028782 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 -060028783 return createResultValue( result, pipelineLayout, "VULKAN_HPP_NAMESPACE::Device::createPipelineLayout" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028784 }
28785#ifndef VULKAN_HPP_NO_SMART_HANDLE
28786 VULKAN_HPP_INLINE UniquePipelineLayout Device::createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28787 {
28788 PipelineLayoutDeleter deleter( *this, allocator );
28789 return UniquePipelineLayout( createPipelineLayout( createInfo, allocator ), deleter );
28790 }
28791#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28792#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28793
28794 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator ) const
28795 {
28796 vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28797 }
28798#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28799 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator ) const
28800 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028801 vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028802 }
28803#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28804
28805 VULKAN_HPP_INLINE Result Device::createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler ) const
28806 {
28807 return static_cast<Result>( vkCreateSampler( m_device, reinterpret_cast<const VkSamplerCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSampler*>( pSampler ) ) );
28808 }
28809#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28810 VULKAN_HPP_INLINE ResultValueType<Sampler>::type Device::createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28811 {
28812 Sampler sampler;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028813 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 -060028814 return createResultValue( result, sampler, "VULKAN_HPP_NAMESPACE::Device::createSampler" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028815 }
28816#ifndef VULKAN_HPP_NO_SMART_HANDLE
28817 VULKAN_HPP_INLINE UniqueSampler Device::createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28818 {
28819 SamplerDeleter deleter( *this, allocator );
28820 return UniqueSampler( createSampler( createInfo, allocator ), deleter );
28821 }
28822#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28823#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28824
28825 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator ) const
28826 {
28827 vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28828 }
28829#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28830 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator ) const
28831 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028832 vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028833 }
28834#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28835
28836 VULKAN_HPP_INLINE Result Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout ) const
28837 {
28838 return static_cast<Result>( vkCreateDescriptorSetLayout( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorSetLayout*>( pSetLayout ) ) );
28839 }
28840#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28841 VULKAN_HPP_INLINE ResultValueType<DescriptorSetLayout>::type Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28842 {
28843 DescriptorSetLayout setLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028844 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 -060028845 return createResultValue( result, setLayout, "VULKAN_HPP_NAMESPACE::Device::createDescriptorSetLayout" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028846 }
28847#ifndef VULKAN_HPP_NO_SMART_HANDLE
28848 VULKAN_HPP_INLINE UniqueDescriptorSetLayout Device::createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28849 {
28850 DescriptorSetLayoutDeleter deleter( *this, allocator );
28851 return UniqueDescriptorSetLayout( createDescriptorSetLayout( createInfo, allocator ), deleter );
28852 }
28853#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28854#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28855
28856 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator ) const
28857 {
28858 vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28859 }
28860#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28861 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator ) const
28862 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028863 vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028864 }
28865#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28866
28867 VULKAN_HPP_INLINE Result Device::createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool ) const
28868 {
28869 return static_cast<Result>( vkCreateDescriptorPool( m_device, reinterpret_cast<const VkDescriptorPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorPool*>( pDescriptorPool ) ) );
28870 }
28871#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28872 VULKAN_HPP_INLINE ResultValueType<DescriptorPool>::type Device::createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28873 {
28874 DescriptorPool descriptorPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028875 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 -060028876 return createResultValue( result, descriptorPool, "VULKAN_HPP_NAMESPACE::Device::createDescriptorPool" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028877 }
28878#ifndef VULKAN_HPP_NO_SMART_HANDLE
28879 VULKAN_HPP_INLINE UniqueDescriptorPool Device::createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28880 {
28881 DescriptorPoolDeleter deleter( *this, allocator );
28882 return UniqueDescriptorPool( createDescriptorPool( createInfo, allocator ), deleter );
28883 }
28884#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28885#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28886
28887 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator ) const
28888 {
28889 vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28890 }
28891#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28892 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator ) const
28893 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028894 vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028895 }
28896#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28897
28898#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28899 VULKAN_HPP_INLINE Result Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const
28900 {
28901 return static_cast<Result>( vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
28902 }
28903#else
28904 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const
28905 {
28906 Result result = static_cast<Result>( vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028907 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::resetDescriptorPool" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028908 }
28909#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28910
28911 VULKAN_HPP_INLINE Result Device::allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets ) const
28912 {
28913 return static_cast<Result>( vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkDescriptorSet*>( pDescriptorSets ) ) );
28914 }
28915#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28916 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028917 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type Device::allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo, Allocator const & alloc ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028918 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028919 std::vector<DescriptorSet,Allocator> descriptorSets( allocateInfo.descriptorSetCount, {}, {alloc} );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028920 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 -060028921 return createResultValue( result, descriptorSets, "VULKAN_HPP_NAMESPACE::Device::allocateDescriptorSets" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028922 }
28923#ifndef VULKAN_HPP_NO_SMART_HANDLE
28924 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028925 VULKAN_HPP_INLINE std::vector<UniqueDescriptorSet> Device::allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo, Allocator const & alloc ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028926 {
28927 DescriptorSetDeleter deleter( *this, allocateInfo.descriptorPool );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028928 std::vector<DescriptorSet,Allocator> descriptorSets = allocateDescriptorSets( allocateInfo, alloc );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028929 std::vector<UniqueDescriptorSet> uniqueDescriptorSets;
28930 uniqueDescriptorSets.reserve( descriptorSets.size() );
28931 for ( auto descriptorSet : descriptorSets )
28932 {
28933 uniqueDescriptorSets.push_back( UniqueDescriptorSet( descriptorSet, deleter ) );
28934 }
28935 return uniqueDescriptorSets;
28936 }
28937#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28938#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28939
28940 VULKAN_HPP_INLINE Result Device::freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets ) const
28941 {
28942 return static_cast<Result>( vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ) ) );
28943 }
28944#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28945 VULKAN_HPP_INLINE ResultValueType<void>::type Device::freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets ) const
28946 {
28947 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 -060028948 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::freeDescriptorSets" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028949 }
28950#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28951
28952 VULKAN_HPP_INLINE void Device::updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies ) const
28953 {
28954 vkUpdateDescriptorSets( m_device, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ), descriptorCopyCount, reinterpret_cast<const VkCopyDescriptorSet*>( pDescriptorCopies ) );
28955 }
28956#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28957 VULKAN_HPP_INLINE void Device::updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies ) const
28958 {
28959 vkUpdateDescriptorSets( m_device, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ), descriptorCopies.size() , reinterpret_cast<const VkCopyDescriptorSet*>( descriptorCopies.data() ) );
28960 }
28961#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28962
28963 VULKAN_HPP_INLINE Result Device::createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer ) const
28964 {
28965 return static_cast<Result>( vkCreateFramebuffer( m_device, reinterpret_cast<const VkFramebufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFramebuffer*>( pFramebuffer ) ) );
28966 }
28967#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28968 VULKAN_HPP_INLINE ResultValueType<Framebuffer>::type Device::createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28969 {
28970 Framebuffer framebuffer;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028971 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 -060028972 return createResultValue( result, framebuffer, "VULKAN_HPP_NAMESPACE::Device::createFramebuffer" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028973 }
28974#ifndef VULKAN_HPP_NO_SMART_HANDLE
28975 VULKAN_HPP_INLINE UniqueFramebuffer Device::createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28976 {
28977 FramebufferDeleter deleter( *this, allocator );
28978 return UniqueFramebuffer( createFramebuffer( createInfo, allocator ), deleter );
28979 }
28980#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28981#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28982
28983 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator ) const
28984 {
28985 vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28986 }
28987#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28988 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator ) const
28989 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028990 vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028991 }
28992#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28993
28994 VULKAN_HPP_INLINE Result Device::createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass ) const
28995 {
28996 return static_cast<Result>( vkCreateRenderPass( m_device, reinterpret_cast<const VkRenderPassCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkRenderPass*>( pRenderPass ) ) );
28997 }
28998#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28999 VULKAN_HPP_INLINE ResultValueType<RenderPass>::type Device::createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29000 {
29001 RenderPass renderPass;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029002 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 -060029003 return createResultValue( result, renderPass, "VULKAN_HPP_NAMESPACE::Device::createRenderPass" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029004 }
29005#ifndef VULKAN_HPP_NO_SMART_HANDLE
29006 VULKAN_HPP_INLINE UniqueRenderPass Device::createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29007 {
29008 RenderPassDeleter deleter( *this, allocator );
29009 return UniqueRenderPass( createRenderPass( createInfo, allocator ), deleter );
29010 }
29011#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29012#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29013
29014 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator ) const
29015 {
29016 vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29017 }
29018#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29019 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator ) const
29020 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029021 vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029022 }
29023#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29024
29025 VULKAN_HPP_INLINE void Device::getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity ) const
29026 {
29027 vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( pGranularity ) );
29028 }
29029#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29030 VULKAN_HPP_INLINE Extent2D Device::getRenderAreaGranularity( RenderPass renderPass ) const
29031 {
29032 Extent2D granularity;
29033 vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( &granularity ) );
29034 return granularity;
29035 }
29036#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29037
29038 VULKAN_HPP_INLINE Result Device::createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool ) const
29039 {
29040 return static_cast<Result>( vkCreateCommandPool( m_device, reinterpret_cast<const VkCommandPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkCommandPool*>( pCommandPool ) ) );
29041 }
29042#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29043 VULKAN_HPP_INLINE ResultValueType<CommandPool>::type Device::createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29044 {
29045 CommandPool commandPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029046 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 -060029047 return createResultValue( result, commandPool, "VULKAN_HPP_NAMESPACE::Device::createCommandPool" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029048 }
29049#ifndef VULKAN_HPP_NO_SMART_HANDLE
29050 VULKAN_HPP_INLINE UniqueCommandPool Device::createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29051 {
29052 CommandPoolDeleter deleter( *this, allocator );
29053 return UniqueCommandPool( createCommandPool( createInfo, allocator ), deleter );
29054 }
29055#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29056#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29057
29058 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator ) const
29059 {
29060 vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29061 }
29062#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29063 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator ) const
29064 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029065 vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029066 }
29067#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29068
29069#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
29070 VULKAN_HPP_INLINE Result Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const
29071 {
29072 return static_cast<Result>( vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
29073 }
29074#else
29075 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const
29076 {
29077 Result result = static_cast<Result>( vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029078 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::resetCommandPool" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029079 }
29080#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29081
29082 VULKAN_HPP_INLINE Result Device::allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers ) const
29083 {
29084 return static_cast<Result>( vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkCommandBuffer*>( pCommandBuffers ) ) );
29085 }
29086#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29087 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029088 VULKAN_HPP_INLINE typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type Device::allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo, Allocator const & alloc ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029089 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029090 std::vector<CommandBuffer,Allocator> commandBuffers( allocateInfo.commandBufferCount, {}, {alloc} );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029091 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 -060029092 return createResultValue( result, commandBuffers, "VULKAN_HPP_NAMESPACE::Device::allocateCommandBuffers" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029093 }
29094#ifndef VULKAN_HPP_NO_SMART_HANDLE
29095 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029096 VULKAN_HPP_INLINE std::vector<UniqueCommandBuffer> Device::allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo, Allocator const & alloc ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029097 {
29098 CommandBufferDeleter deleter( *this, allocateInfo.commandPool );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029099 std::vector<CommandBuffer,Allocator> commandBuffers = allocateCommandBuffers( allocateInfo, alloc );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029100 std::vector<UniqueCommandBuffer> uniqueCommandBuffers;
29101 uniqueCommandBuffers.reserve( commandBuffers.size() );
29102 for ( auto commandBuffer : commandBuffers )
29103 {
29104 uniqueCommandBuffers.push_back( UniqueCommandBuffer( commandBuffer, deleter ) );
29105 }
29106 return uniqueCommandBuffers;
29107 }
29108#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29109#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29110
29111 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const
29112 {
29113 vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
29114 }
29115#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29116 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers ) const
29117 {
29118 vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
29119 }
29120#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29121
29122 VULKAN_HPP_INLINE Result Device::createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains ) const
29123 {
29124 return static_cast<Result>( vkCreateSharedSwapchainsKHR( m_device, swapchainCount, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfos ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchains ) ) );
29125 }
29126#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29127 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029128 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type Device::createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator, Allocator const & alloc ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029129 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029130 std::vector<SwapchainKHR,Allocator> swapchains( createInfos.size(), {}, {alloc} );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029131 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 -060029132 return createResultValue( result, swapchains, "VULKAN_HPP_NAMESPACE::Device::createSharedSwapchainsKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029133 }
29134 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29135 {
29136 SwapchainKHR swapchain;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029137 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 -060029138 return createResultValue( result, swapchain, "VULKAN_HPP_NAMESPACE::Device::createSharedSwapchainKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029139 }
29140#ifndef VULKAN_HPP_NO_SMART_HANDLE
29141 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029142 VULKAN_HPP_INLINE std::vector<UniqueSwapchainKHR> Device::createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator, Allocator const & alloc ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029143 {
29144 SwapchainKHRDeleter deleter( *this, allocator );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029145 std::vector<SwapchainKHR,Allocator> swapchainKHRs = createSharedSwapchainsKHR( createInfos, allocator, alloc );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029146 std::vector<UniqueSwapchainKHR> uniqueSwapchainKHRs;
29147 uniqueSwapchainKHRs.reserve( swapchainKHRs.size() );
29148 for ( auto swapchainKHR : swapchainKHRs )
29149 {
29150 uniqueSwapchainKHRs.push_back( UniqueSwapchainKHR( swapchainKHR, deleter ) );
29151 }
29152 return uniqueSwapchainKHRs;
29153 }
29154 VULKAN_HPP_INLINE UniqueSwapchainKHR Device::createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29155 {
29156 SwapchainKHRDeleter deleter( *this, allocator );
29157 return UniqueSwapchainKHR( createSharedSwapchainKHR( createInfo, allocator ), deleter );
29158 }
29159#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29160#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29161
29162 VULKAN_HPP_INLINE Result Device::createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain ) const
29163 {
29164 return static_cast<Result>( vkCreateSwapchainKHR( m_device, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchain ) ) );
29165 }
29166#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29167 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29168 {
29169 SwapchainKHR swapchain;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029170 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 -060029171 return createResultValue( result, swapchain, "VULKAN_HPP_NAMESPACE::Device::createSwapchainKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029172 }
29173#ifndef VULKAN_HPP_NO_SMART_HANDLE
29174 VULKAN_HPP_INLINE UniqueSwapchainKHR Device::createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29175 {
29176 SwapchainKHRDeleter deleter( *this, allocator );
29177 return UniqueSwapchainKHR( createSwapchainKHR( createInfo, allocator ), deleter );
29178 }
29179#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29180#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29181
29182 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator ) const
29183 {
29184 vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29185 }
29186#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29187 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator ) const
29188 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029189 vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029190 }
29191#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29192
29193 VULKAN_HPP_INLINE Result Device::getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages ) const
29194 {
29195 return static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), pSwapchainImageCount, reinterpret_cast<VkImage*>( pSwapchainImages ) ) );
29196 }
29197#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29198 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029199 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Image,Allocator>>::type Device::getSwapchainImagesKHR( SwapchainKHR swapchain, Allocator const & alloc ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029200 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029201 std::vector<Image,Allocator> swapchainImages( {alloc} );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029202 uint32_t swapchainImageCount;
29203 Result result;
29204 do
29205 {
29206 result = static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, nullptr ) );
29207 if ( ( result == Result::eSuccess ) && swapchainImageCount )
29208 {
29209 swapchainImages.resize( swapchainImageCount );
29210 result = static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, reinterpret_cast<VkImage*>( swapchainImages.data() ) ) );
29211 }
29212 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029213 assert( swapchainImageCount <= swapchainImages.size() );
29214 swapchainImages.resize( swapchainImageCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029215 return createResultValue( result, swapchainImages, "VULKAN_HPP_NAMESPACE::Device::getSwapchainImagesKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029216 }
29217#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29218
29219 VULKAN_HPP_INLINE Result Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex ) const
29220 {
29221 return static_cast<Result>( vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), pImageIndex ) );
29222 }
29223#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29224 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence ) const
29225 {
29226 uint32_t imageIndex;
29227 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 -060029228 return createResultValue( result, imageIndex, "VULKAN_HPP_NAMESPACE::Device::acquireNextImageKHR", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029229 }
29230#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29231
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029232 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT* pNameInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029233 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029234 return static_cast<Result>( vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>( pNameInfo ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029235 }
29236#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029237 VULKAN_HPP_INLINE ResultValueType<void>::type Device::debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT & nameInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029238 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029239 Result result = static_cast<Result>( vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>( &nameInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029240 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::debugMarkerSetObjectNameEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029241 }
29242#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29243
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029244 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT* pTagInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029245 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029246 return static_cast<Result>( vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>( pTagInfo ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029247 }
29248#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029249 VULKAN_HPP_INLINE ResultValueType<void>::type Device::debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT & tagInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029250 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029251 Result result = static_cast<Result>( vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>( &tagInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029252 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::debugMarkerSetObjectTagEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029253 }
29254#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29255
29256#ifdef VK_USE_PLATFORM_WIN32_KHR
29257 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const
29258 {
29259 return static_cast<Result>( vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), pHandle ) );
29260 }
29261#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29262 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType ) const
29263 {
29264 HANDLE handle;
29265 Result result = static_cast<Result>( vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), &handle ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029266 return createResultValue( result, handle, "VULKAN_HPP_NAMESPACE::Device::getMemoryWin32HandleNV" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029267 }
29268#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29269#endif /*VK_USE_PLATFORM_WIN32_KHR*/
29270
29271 VULKAN_HPP_INLINE Result Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const
29272 {
29273 return static_cast<Result>( vkCreateIndirectCommandsLayoutNVX( m_device, reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkIndirectCommandsLayoutNVX*>( pIndirectCommandsLayout ) ) );
29274 }
29275#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29276 VULKAN_HPP_INLINE ResultValueType<IndirectCommandsLayoutNVX>::type Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
29277 {
29278 IndirectCommandsLayoutNVX indirectCommandsLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029279 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 -060029280 return createResultValue( result, indirectCommandsLayout, "VULKAN_HPP_NAMESPACE::Device::createIndirectCommandsLayoutNVX" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029281 }
29282#ifndef VULKAN_HPP_NO_SMART_HANDLE
29283 VULKAN_HPP_INLINE UniqueIndirectCommandsLayoutNVX Device::createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
29284 {
29285 IndirectCommandsLayoutNVXDeleter deleter( *this, allocator );
29286 return UniqueIndirectCommandsLayoutNVX( createIndirectCommandsLayoutNVX( createInfo, allocator ), deleter );
29287 }
29288#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29289#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29290
29291 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator ) const
29292 {
29293 vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29294 }
29295#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29296 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator ) const
29297 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029298 vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029299 }
29300#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29301
29302 VULKAN_HPP_INLINE Result Device::createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable ) const
29303 {
29304 return static_cast<Result>( vkCreateObjectTableNVX( m_device, reinterpret_cast<const VkObjectTableCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkObjectTableNVX*>( pObjectTable ) ) );
29305 }
29306#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29307 VULKAN_HPP_INLINE ResultValueType<ObjectTableNVX>::type Device::createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
29308 {
29309 ObjectTableNVX objectTable;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029310 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 -060029311 return createResultValue( result, objectTable, "VULKAN_HPP_NAMESPACE::Device::createObjectTableNVX" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029312 }
29313#ifndef VULKAN_HPP_NO_SMART_HANDLE
29314 VULKAN_HPP_INLINE UniqueObjectTableNVX Device::createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
29315 {
29316 ObjectTableNVXDeleter deleter( *this, allocator );
29317 return UniqueObjectTableNVX( createObjectTableNVX( 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::destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator ) const
29323 {
29324 vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29325 }
29326#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29327 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator ) const
29328 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029329 vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), 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::registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const
29334 {
29335 return static_cast<Result>( vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectTableEntryNVX* const*>( ppObjectTableEntries ), pObjectIndices ) );
29336 }
29337#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29338 VULKAN_HPP_INLINE ResultValueType<void>::type Device::registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices ) const
29339 {
29340#ifdef VULKAN_HPP_NO_EXCEPTIONS
29341 assert( pObjectTableEntries.size() == objectIndices.size() );
29342#else
29343 if ( pObjectTableEntries.size() != objectIndices.size() )
29344 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029345 throw LogicError( "VULKAN_HPP_NAMESPACE::Device::registerObjectsNVX: pObjectTableEntries.size() != objectIndices.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029346 }
29347#endif // VULKAN_HPP_NO_EXCEPTIONS
29348 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 -060029349 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::registerObjectsNVX" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029350 }
29351#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29352
29353 VULKAN_HPP_INLINE Result Device::unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const
29354 {
29355 return static_cast<Result>( vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectEntryTypeNVX*>( pObjectEntryTypes ), pObjectIndices ) );
29356 }
29357#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29358 VULKAN_HPP_INLINE ResultValueType<void>::type Device::unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices ) const
29359 {
29360#ifdef VULKAN_HPP_NO_EXCEPTIONS
29361 assert( objectEntryTypes.size() == objectIndices.size() );
29362#else
29363 if ( objectEntryTypes.size() != objectIndices.size() )
29364 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029365 throw LogicError( "VULKAN_HPP_NAMESPACE::Device::unregisterObjectsNVX: objectEntryTypes.size() != objectIndices.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029366 }
29367#endif // VULKAN_HPP_NO_EXCEPTIONS
29368 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 -060029369 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::unregisterObjectsNVX" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029370 }
29371#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29372
29373 VULKAN_HPP_INLINE void Device::trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags ) const
29374 {
29375 vkTrimCommandPoolKHR( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolTrimFlagsKHR>( flags ) );
29376 }
29377
Mark Youngabc2d6e2017-07-07 07:59:56 -060029378#ifdef VK_USE_PLATFORM_WIN32_KHR
29379 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const
Mark Young0f183a82017-02-28 09:58:04 -070029380 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029381 return static_cast<Result>( vkGetMemoryWin32HandleKHR( m_device, reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR*>( pGetWin32HandleInfo ), pHandle ) );
Mark Young0f183a82017-02-28 09:58:04 -070029382 }
29383#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029384 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR & getWin32HandleInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029385 {
29386 HANDLE handle;
Mark Youngabc2d6e2017-07-07 07:59:56 -060029387 Result result = static_cast<Result>( vkGetMemoryWin32HandleKHR( m_device, reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR*>( &getWin32HandleInfo ), &handle ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029388 return createResultValue( result, handle, "VULKAN_HPP_NAMESPACE::Device::getMemoryWin32HandleKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029389 }
29390#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060029391#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070029392
Mark Youngabc2d6e2017-07-07 07:59:56 -060029393#ifdef VK_USE_PLATFORM_WIN32_KHR
29394 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle, MemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties ) const
Mark Young0f183a82017-02-28 09:58:04 -070029395 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029396 return static_cast<Result>( vkGetMemoryWin32HandlePropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHR*>( pMemoryWin32HandleProperties ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029397 }
29398#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029399 VULKAN_HPP_INLINE ResultValueType<MemoryWin32HandlePropertiesKHR>::type Device::getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle ) const
Mark Young0f183a82017-02-28 09:58:04 -070029400 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029401 MemoryWin32HandlePropertiesKHR memoryWin32HandleProperties;
29402 Result result = static_cast<Result>( vkGetMemoryWin32HandlePropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHR*>( &memoryWin32HandleProperties ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029403 return createResultValue( result, memoryWin32HandleProperties, "VULKAN_HPP_NAMESPACE::Device::getMemoryWin32HandlePropertiesKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029404 }
29405#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060029406#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070029407
Mark Youngabc2d6e2017-07-07 07:59:56 -060029408 VULKAN_HPP_INLINE Result Device::getMemoryFdKHR( const MemoryGetFdInfoKHR* pGetFdInfo, int* pFd ) const
Mark Young0f183a82017-02-28 09:58:04 -070029409 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029410 return static_cast<Result>( vkGetMemoryFdKHR( m_device, reinterpret_cast<const VkMemoryGetFdInfoKHR*>( pGetFdInfo ), pFd ) );
Mark Young0f183a82017-02-28 09:58:04 -070029411 }
29412#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029413 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getMemoryFdKHR( const MemoryGetFdInfoKHR & getFdInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029414 {
29415 int fd;
Mark Youngabc2d6e2017-07-07 07:59:56 -060029416 Result result = static_cast<Result>( vkGetMemoryFdKHR( m_device, reinterpret_cast<const VkMemoryGetFdInfoKHR*>( &getFdInfo ), &fd ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029417 return createResultValue( result, fd, "VULKAN_HPP_NAMESPACE::Device::getMemoryFdKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029418 }
29419#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29420
Mark Youngabc2d6e2017-07-07 07:59:56 -060029421 VULKAN_HPP_INLINE Result Device::getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, int fd, MemoryFdPropertiesKHR* pMemoryFdProperties ) const
Mark Young0f183a82017-02-28 09:58:04 -070029422 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029423 return static_cast<Result>( vkGetMemoryFdPropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHR*>( pMemoryFdProperties ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029424 }
29425#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029426 VULKAN_HPP_INLINE ResultValueType<MemoryFdPropertiesKHR>::type Device::getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, int fd ) const
Mark Young0f183a82017-02-28 09:58:04 -070029427 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029428 MemoryFdPropertiesKHR memoryFdProperties;
29429 Result result = static_cast<Result>( vkGetMemoryFdPropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHR*>( &memoryFdProperties ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029430 return createResultValue( result, memoryFdProperties, "VULKAN_HPP_NAMESPACE::Device::getMemoryFdPropertiesKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029431 }
29432#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29433
Mark Youngabc2d6e2017-07-07 07:59:56 -060029434#ifdef VK_USE_PLATFORM_WIN32_KHR
29435 VULKAN_HPP_INLINE Result Device::getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const
Mark Young0f183a82017-02-28 09:58:04 -070029436 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029437 return static_cast<Result>( vkGetSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR*>( pGetWin32HandleInfo ), pHandle ) );
Mark Young0f183a82017-02-28 09:58:04 -070029438 }
29439#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029440 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029441 {
29442 HANDLE handle;
Mark Youngabc2d6e2017-07-07 07:59:56 -060029443 Result result = static_cast<Result>( vkGetSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR*>( &getWin32HandleInfo ), &handle ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029444 return createResultValue( result, handle, "VULKAN_HPP_NAMESPACE::Device::getSemaphoreWin32HandleKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029445 }
29446#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060029447#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070029448
Mark Youngabc2d6e2017-07-07 07:59:56 -060029449#ifdef VK_USE_PLATFORM_WIN32_KHR
29450 VULKAN_HPP_INLINE Result Device::importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029451 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029452 return static_cast<Result>( vkImportSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR*>( pImportSemaphoreWin32HandleInfo ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029453 }
29454#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029455 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029456 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029457 Result result = static_cast<Result>( vkImportSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR*>( &importSemaphoreWin32HandleInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029458 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::importSemaphoreWin32HandleKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029459 }
29460#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060029461#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070029462
Mark Youngabc2d6e2017-07-07 07:59:56 -060029463 VULKAN_HPP_INLINE Result Device::getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd ) const
Mark Young0f183a82017-02-28 09:58:04 -070029464 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029465 return static_cast<Result>( vkGetSemaphoreFdKHR( m_device, reinterpret_cast<const VkSemaphoreGetFdInfoKHR*>( pGetFdInfo ), pFd ) );
Mark Young0f183a82017-02-28 09:58:04 -070029466 }
29467#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029468 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR & getFdInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029469 {
29470 int fd;
Mark Youngabc2d6e2017-07-07 07:59:56 -060029471 Result result = static_cast<Result>( vkGetSemaphoreFdKHR( m_device, reinterpret_cast<const VkSemaphoreGetFdInfoKHR*>( &getFdInfo ), &fd ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029472 return createResultValue( result, fd, "VULKAN_HPP_NAMESPACE::Device::getSemaphoreFdKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029473 }
29474#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29475
Mark Youngabc2d6e2017-07-07 07:59:56 -060029476 VULKAN_HPP_INLINE Result Device::importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029477 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029478 return static_cast<Result>( vkImportSemaphoreFdKHR( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHR*>( pImportSemaphoreFdInfo ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029479 }
29480#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029481 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029482 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029483 Result result = static_cast<Result>( vkImportSemaphoreFdKHR( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHR*>( &importSemaphoreFdInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029484 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::importSemaphoreFdKHR" );
Mark Youngabc2d6e2017-07-07 07:59:56 -060029485 }
29486#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29487
29488#ifdef VK_USE_PLATFORM_WIN32_KHR
29489 VULKAN_HPP_INLINE Result Device::getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const
29490 {
29491 return static_cast<Result>( vkGetFenceWin32HandleKHR( m_device, reinterpret_cast<const VkFenceGetWin32HandleInfoKHR*>( pGetWin32HandleInfo ), pHandle ) );
29492 }
29493#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29494 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR & getWin32HandleInfo ) const
29495 {
29496 HANDLE handle;
29497 Result result = static_cast<Result>( vkGetFenceWin32HandleKHR( m_device, reinterpret_cast<const VkFenceGetWin32HandleInfoKHR*>( &getWin32HandleInfo ), &handle ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029498 return createResultValue( result, handle, "VULKAN_HPP_NAMESPACE::Device::getFenceWin32HandleKHR" );
Mark Youngabc2d6e2017-07-07 07:59:56 -060029499 }
29500#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29501#endif /*VK_USE_PLATFORM_WIN32_KHR*/
29502
29503#ifdef VK_USE_PLATFORM_WIN32_KHR
29504 VULKAN_HPP_INLINE Result Device::importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo ) const
29505 {
29506 return static_cast<Result>( vkImportFenceWin32HandleKHR( m_device, reinterpret_cast<const VkImportFenceWin32HandleInfoKHR*>( pImportFenceWin32HandleInfo ) ) );
29507 }
29508#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29509 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo ) const
29510 {
29511 Result result = static_cast<Result>( vkImportFenceWin32HandleKHR( m_device, reinterpret_cast<const VkImportFenceWin32HandleInfoKHR*>( &importFenceWin32HandleInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029512 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::importFenceWin32HandleKHR" );
Mark Youngabc2d6e2017-07-07 07:59:56 -060029513 }
29514#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29515#endif /*VK_USE_PLATFORM_WIN32_KHR*/
29516
29517 VULKAN_HPP_INLINE Result Device::getFenceFdKHR( const FenceGetFdInfoKHR* pGetFdInfo, int* pFd ) const
29518 {
29519 return static_cast<Result>( vkGetFenceFdKHR( m_device, reinterpret_cast<const VkFenceGetFdInfoKHR*>( pGetFdInfo ), pFd ) );
29520 }
29521#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29522 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getFenceFdKHR( const FenceGetFdInfoKHR & getFdInfo ) const
29523 {
29524 int fd;
29525 Result result = static_cast<Result>( vkGetFenceFdKHR( m_device, reinterpret_cast<const VkFenceGetFdInfoKHR*>( &getFdInfo ), &fd ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029526 return createResultValue( result, fd, "VULKAN_HPP_NAMESPACE::Device::getFenceFdKHR" );
Mark Youngabc2d6e2017-07-07 07:59:56 -060029527 }
29528#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29529
29530 VULKAN_HPP_INLINE Result Device::importFenceFdKHR( const ImportFenceFdInfoKHR* pImportFenceFdInfo ) const
29531 {
29532 return static_cast<Result>( vkImportFenceFdKHR( m_device, reinterpret_cast<const VkImportFenceFdInfoKHR*>( pImportFenceFdInfo ) ) );
29533 }
29534#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29535 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importFenceFdKHR( const ImportFenceFdInfoKHR & importFenceFdInfo ) const
29536 {
29537 Result result = static_cast<Result>( vkImportFenceFdKHR( m_device, reinterpret_cast<const VkImportFenceFdInfoKHR*>( &importFenceFdInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029538 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::importFenceFdKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029539 }
29540#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29541
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029542 VULKAN_HPP_INLINE Result Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo ) const
29543 {
29544 return static_cast<Result>( vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( pDisplayPowerInfo ) ) );
29545 }
29546#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29547 VULKAN_HPP_INLINE ResultValueType<void>::type Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo ) const
29548 {
29549 Result result = static_cast<Result>( vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( &displayPowerInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029550 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::displayPowerControlEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029551 }
29552#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29553
29554 VULKAN_HPP_INLINE Result Device::registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
29555 {
29556 return static_cast<Result>( vkRegisterDeviceEventEXT( m_device, reinterpret_cast<const VkDeviceEventInfoEXT*>( pDeviceEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
29557 }
29558#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060029559 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, Optional<const AllocationCallbacks> allocator ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029560 {
29561 Fence fence;
Lenny Komowb79f04a2017-09-18 17:07:00 -060029562 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 -060029563 return createResultValue( result, fence, "VULKAN_HPP_NAMESPACE::Device::registerEventEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029564 }
29565#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29566
29567 VULKAN_HPP_INLINE Result Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
29568 {
29569 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 ) ) );
29570 }
29571#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060029572 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 -070029573 {
29574 Fence fence;
Lenny Komowb79f04a2017-09-18 17:07:00 -060029575 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 -060029576 return createResultValue( result, fence, "VULKAN_HPP_NAMESPACE::Device::registerDisplayEventEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029577 }
29578#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29579
29580 VULKAN_HPP_INLINE Result Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const
29581 {
29582 return static_cast<Result>( vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), pCounterValue ) );
29583 }
29584#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29585 VULKAN_HPP_INLINE ResultValue<uint64_t> Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter ) const
29586 {
29587 uint64_t counterValue;
29588 Result result = static_cast<Result>( vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), &counterValue ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029589 return createResultValue( result, counterValue, "VULKAN_HPP_NAMESPACE::Device::getSwapchainCounterEXT", { Result::eSuccess, Result::eErrorDeviceLost, Result::eErrorOutOfDateKHR } );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029590 }
29591#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070029592
29593 VULKAN_HPP_INLINE void Device::getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ) const
29594 {
29595 vkGetDeviceGroupPeerMemoryFeaturesKHX( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlagsKHX*>( pPeerMemoryFeatures ) );
29596 }
29597#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29598 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX Device::getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const
29599 {
29600 PeerMemoryFeatureFlagsKHX peerMemoryFeatures;
29601 vkGetDeviceGroupPeerMemoryFeaturesKHX( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlagsKHX*>( &peerMemoryFeatures ) );
29602 return peerMemoryFeatures;
29603 }
29604#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29605
Lenny Komowb79f04a2017-09-18 17:07:00 -060029606 VULKAN_HPP_INLINE Result Device::bindBufferMemory2KHR( uint32_t bindInfoCount, const BindBufferMemoryInfoKHR* pBindInfos ) const
Mark Young0f183a82017-02-28 09:58:04 -070029607 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060029608 return static_cast<Result>( vkBindBufferMemory2KHR( m_device, bindInfoCount, reinterpret_cast<const VkBindBufferMemoryInfoKHR*>( pBindInfos ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029609 }
29610#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060029611 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory2KHR( ArrayProxy<const BindBufferMemoryInfoKHR> bindInfos ) const
Mark Young0f183a82017-02-28 09:58:04 -070029612 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060029613 Result result = static_cast<Result>( vkBindBufferMemory2KHR( m_device, bindInfos.size() , reinterpret_cast<const VkBindBufferMemoryInfoKHR*>( bindInfos.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029614 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::bindBufferMemory2KHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029615 }
29616#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29617
Lenny Komowb79f04a2017-09-18 17:07:00 -060029618 VULKAN_HPP_INLINE Result Device::bindImageMemory2KHR( uint32_t bindInfoCount, const BindImageMemoryInfoKHR* pBindInfos ) const
Mark Young0f183a82017-02-28 09:58:04 -070029619 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060029620 return static_cast<Result>( vkBindImageMemory2KHR( m_device, bindInfoCount, reinterpret_cast<const VkBindImageMemoryInfoKHR*>( pBindInfos ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029621 }
29622#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060029623 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory2KHR( ArrayProxy<const BindImageMemoryInfoKHR> bindInfos ) const
Mark Young0f183a82017-02-28 09:58:04 -070029624 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060029625 Result result = static_cast<Result>( vkBindImageMemory2KHR( m_device, bindInfos.size() , reinterpret_cast<const VkBindImageMemoryInfoKHR*>( bindInfos.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029626 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::bindImageMemory2KHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029627 }
29628#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29629
29630 VULKAN_HPP_INLINE Result Device::getGroupPresentCapabilitiesKHX( DeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ) const
29631 {
29632 return static_cast<Result>( vkGetDeviceGroupPresentCapabilitiesKHX( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHX*>( pDeviceGroupPresentCapabilities ) ) );
29633 }
29634#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29635 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentCapabilitiesKHX>::type Device::getGroupPresentCapabilitiesKHX() const
29636 {
29637 DeviceGroupPresentCapabilitiesKHX deviceGroupPresentCapabilities;
29638 Result result = static_cast<Result>( vkGetDeviceGroupPresentCapabilitiesKHX( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHX*>( &deviceGroupPresentCapabilities ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029639 return createResultValue( result, deviceGroupPresentCapabilities, "VULKAN_HPP_NAMESPACE::Device::getGroupPresentCapabilitiesKHX" );
Mark Young0f183a82017-02-28 09:58:04 -070029640 }
29641#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29642
29643 VULKAN_HPP_INLINE Result Device::getGroupSurfacePresentModesKHX( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHX* pModes ) const
29644 {
29645 return static_cast<Result>( vkGetDeviceGroupSurfacePresentModesKHX( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHX*>( pModes ) ) );
29646 }
29647#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29648 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentModeFlagsKHX>::type Device::getGroupSurfacePresentModesKHX( SurfaceKHR surface ) const
29649 {
29650 DeviceGroupPresentModeFlagsKHX modes;
29651 Result result = static_cast<Result>( vkGetDeviceGroupSurfacePresentModesKHX( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHX*>( &modes ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029652 return createResultValue( result, modes, "VULKAN_HPP_NAMESPACE::Device::getGroupSurfacePresentModesKHX" );
Mark Young0f183a82017-02-28 09:58:04 -070029653 }
29654#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29655
29656 VULKAN_HPP_INLINE Result Device::acquireNextImage2KHX( const AcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex ) const
29657 {
29658 return static_cast<Result>( vkAcquireNextImage2KHX( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHX*>( pAcquireInfo ), pImageIndex ) );
29659 }
29660#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29661 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImage2KHX( const AcquireNextImageInfoKHX & acquireInfo ) const
29662 {
29663 uint32_t imageIndex;
29664 Result result = static_cast<Result>( vkAcquireNextImage2KHX( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHX*>( &acquireInfo ), &imageIndex ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029665 return createResultValue( result, imageIndex, "VULKAN_HPP_NAMESPACE::Device::acquireNextImage2KHX", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
Mark Young0f183a82017-02-28 09:58:04 -070029666 }
29667#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29668
29669 VULKAN_HPP_INLINE Result Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) const
29670 {
29671 return static_cast<Result>( vkCreateDescriptorUpdateTemplateKHR( m_device, reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorUpdateTemplateKHR*>( pDescriptorUpdateTemplate ) ) );
29672 }
29673#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29674 VULKAN_HPP_INLINE ResultValueType<DescriptorUpdateTemplateKHR>::type Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29675 {
29676 DescriptorUpdateTemplateKHR descriptorUpdateTemplate;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029677 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 -060029678 return createResultValue( result, descriptorUpdateTemplate, "VULKAN_HPP_NAMESPACE::Device::createDescriptorUpdateTemplateKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029679 }
29680#ifndef VULKAN_HPP_NO_SMART_HANDLE
29681 VULKAN_HPP_INLINE UniqueDescriptorUpdateTemplateKHR Device::createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29682 {
29683 DescriptorUpdateTemplateKHRDeleter deleter( *this, allocator );
29684 return UniqueDescriptorUpdateTemplateKHR( createDescriptorUpdateTemplateKHR( createInfo, allocator ), deleter );
29685 }
29686#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29687#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29688
29689 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const AllocationCallbacks* pAllocator ) const
29690 {
29691 vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29692 }
29693#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29694 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator ) const
29695 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029696 vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029697 }
29698#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29699
29700 VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData ) const
29701 {
29702 vkUpdateDescriptorSetWithTemplateKHR( m_device, static_cast<VkDescriptorSet>( descriptorSet ), static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), pData );
29703 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029704
29705 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata ) const
29706 {
29707 vkSetHdrMetadataEXT( m_device, swapchainCount, reinterpret_cast<const VkSwapchainKHR*>( pSwapchains ), reinterpret_cast<const VkHdrMetadataEXT*>( pMetadata ) );
29708 }
29709#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29710 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata ) const
29711 {
29712#ifdef VULKAN_HPP_NO_EXCEPTIONS
29713 assert( swapchains.size() == metadata.size() );
29714#else
29715 if ( swapchains.size() != metadata.size() )
29716 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029717 throw LogicError( "VULKAN_HPP_NAMESPACE::Device::setHdrMetadataEXT: swapchains.size() != metadata.size()" );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029718 }
29719#endif // VULKAN_HPP_NO_EXCEPTIONS
29720 vkSetHdrMetadataEXT( m_device, swapchains.size() , reinterpret_cast<const VkSwapchainKHR*>( swapchains.data() ), reinterpret_cast<const VkHdrMetadataEXT*>( metadata.data() ) );
29721 }
29722#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29723
Mark Lobodzinski54385432017-05-15 10:27:52 -060029724#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
29725 VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( SwapchainKHR swapchain ) const
29726 {
29727 return static_cast<Result>( vkGetSwapchainStatusKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ) ) );
29728 }
29729#else
29730 VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( SwapchainKHR swapchain ) const
29731 {
29732 Result result = static_cast<Result>( vkGetSwapchainStatusKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029733 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::getSwapchainStatusKHR", { Result::eSuccess, Result::eSuboptimalKHR } );
Mark Lobodzinski54385432017-05-15 10:27:52 -060029734 }
29735#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29736
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029737 VULKAN_HPP_INLINE Result Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const
29738 {
29739 return static_cast<Result>( vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( pDisplayTimingProperties ) ) );
29740 }
29741#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29742 VULKAN_HPP_INLINE ResultValueType<RefreshCycleDurationGOOGLE>::type Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain ) const
29743 {
29744 RefreshCycleDurationGOOGLE displayTimingProperties;
29745 Result result = static_cast<Result>( vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( &displayTimingProperties ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029746 return createResultValue( result, displayTimingProperties, "VULKAN_HPP_NAMESPACE::Device::getRefreshCycleDurationGOOGLE" );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029747 }
29748#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29749
29750 VULKAN_HPP_INLINE Result Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings ) const
29751 {
29752 return static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), pPresentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( pPresentationTimings ) ) );
29753 }
29754#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29755 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029756 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, Allocator const & alloc ) const
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029757 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029758 std::vector<PastPresentationTimingGOOGLE,Allocator> presentationTimings( {alloc} );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029759 uint32_t presentationTimingCount;
29760 Result result = static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, nullptr ) );
29761 if ( ( result == Result::eSuccess ) && presentationTimingCount )
29762 {
29763 presentationTimings.resize( presentationTimingCount );
29764 result = static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( presentationTimings.data() ) ) );
29765 }
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029766 return createResultValue( result, presentationTimings, "VULKAN_HPP_NAMESPACE::Device::getPastPresentationTimingGOOGLE" );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029767 }
29768#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29769
Mark Youngabc2d6e2017-07-07 07:59:56 -060029770 VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR* pInfo, MemoryRequirements2KHR* pMemoryRequirements ) const
29771 {
29772 vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2KHR*>( pInfo ), reinterpret_cast<VkMemoryRequirements2KHR*>( pMemoryRequirements ) );
29773 }
29774#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29775 VULKAN_HPP_INLINE MemoryRequirements2KHR Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR & info ) const
29776 {
29777 MemoryRequirements2KHR memoryRequirements;
29778 vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2KHR*>( &info ), reinterpret_cast<VkMemoryRequirements2KHR*>( &memoryRequirements ) );
29779 return memoryRequirements;
29780 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060029781 template <typename ...T>
29782 VULKAN_HPP_INLINE StructureChain<T...> Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR & info ) const
29783 {
29784 StructureChain<T...> structureChain;
29785 MemoryRequirements2KHR& memoryRequirements = structureChain.template get<MemoryRequirements2KHR>();
29786 vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2KHR*>( &info ), reinterpret_cast<VkMemoryRequirements2KHR*>( &memoryRequirements ) );
29787 return structureChain;
29788 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060029789#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29790
29791 VULKAN_HPP_INLINE void Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR* pInfo, MemoryRequirements2KHR* pMemoryRequirements ) const
29792 {
29793 vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2KHR*>( pInfo ), reinterpret_cast<VkMemoryRequirements2KHR*>( pMemoryRequirements ) );
29794 }
29795#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29796 VULKAN_HPP_INLINE MemoryRequirements2KHR Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR & info ) const
29797 {
29798 MemoryRequirements2KHR memoryRequirements;
29799 vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2KHR*>( &info ), reinterpret_cast<VkMemoryRequirements2KHR*>( &memoryRequirements ) );
29800 return memoryRequirements;
29801 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060029802 template <typename ...T>
29803 VULKAN_HPP_INLINE StructureChain<T...> Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR & info ) const
29804 {
29805 StructureChain<T...> structureChain;
29806 MemoryRequirements2KHR& memoryRequirements = structureChain.template get<MemoryRequirements2KHR>();
29807 vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2KHR*>( &info ), reinterpret_cast<VkMemoryRequirements2KHR*>( &memoryRequirements ) );
29808 return structureChain;
29809 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060029810#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29811
29812 VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2KHR* pInfo, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements2KHR* pSparseMemoryRequirements ) const
29813 {
29814 vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2KHR*>( pInfo ), pSparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements2KHR*>( pSparseMemoryRequirements ) );
29815 }
29816#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29817 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029818 VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements2KHR,Allocator> Device::getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2KHR & info, Allocator const & alloc ) const
Mark Youngabc2d6e2017-07-07 07:59:56 -060029819 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029820 std::vector<SparseImageMemoryRequirements2KHR,Allocator> sparseMemoryRequirements( {alloc} );
Mark Youngabc2d6e2017-07-07 07:59:56 -060029821 uint32_t sparseMemoryRequirementCount;
29822 vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2KHR*>( &info ), &sparseMemoryRequirementCount, nullptr );
29823 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
29824 vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2KHR*>( &info ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements2KHR*>( sparseMemoryRequirements.data() ) );
29825 return sparseMemoryRequirements;
29826 }
29827#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29828
Lenny Komowb79f04a2017-09-18 17:07:00 -060029829 VULKAN_HPP_INLINE Result Device::createSamplerYcbcrConversionKHR( const SamplerYcbcrConversionCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SamplerYcbcrConversionKHR* pYcbcrConversion ) const
29830 {
29831 return static_cast<Result>( vkCreateSamplerYcbcrConversionKHR( m_device, reinterpret_cast<const VkSamplerYcbcrConversionCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSamplerYcbcrConversionKHR*>( pYcbcrConversion ) ) );
29832 }
29833#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29834 VULKAN_HPP_INLINE ResultValueType<SamplerYcbcrConversionKHR>::type Device::createSamplerYcbcrConversionKHR( const SamplerYcbcrConversionCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29835 {
29836 SamplerYcbcrConversionKHR ycbcrConversion;
29837 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 -060029838 return createResultValue( result, ycbcrConversion, "VULKAN_HPP_NAMESPACE::Device::createSamplerYcbcrConversionKHR" );
Lenny Komowb79f04a2017-09-18 17:07:00 -060029839 }
29840#ifndef VULKAN_HPP_NO_SMART_HANDLE
29841 VULKAN_HPP_INLINE UniqueSamplerYcbcrConversionKHR Device::createSamplerYcbcrConversionKHRUnique( const SamplerYcbcrConversionCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29842 {
29843 SamplerYcbcrConversionKHRDeleter deleter( *this, allocator );
29844 return UniqueSamplerYcbcrConversionKHR( createSamplerYcbcrConversionKHR( createInfo, allocator ), deleter );
29845 }
29846#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29847#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29848
29849 VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversionKHR( SamplerYcbcrConversionKHR ycbcrConversion, const AllocationCallbacks* pAllocator ) const
29850 {
29851 vkDestroySamplerYcbcrConversionKHR( m_device, static_cast<VkSamplerYcbcrConversionKHR>( ycbcrConversion ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29852 }
29853#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29854 VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversionKHR( SamplerYcbcrConversionKHR ycbcrConversion, Optional<const AllocationCallbacks> allocator ) const
29855 {
29856 vkDestroySamplerYcbcrConversionKHR( m_device, static_cast<VkSamplerYcbcrConversionKHR>( ycbcrConversion ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
29857 }
29858#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29859
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060029860 VULKAN_HPP_INLINE Result Device::createValidationCacheEXT( const ValidationCacheCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, ValidationCacheEXT* pValidationCache ) const
29861 {
29862 return static_cast<Result>( vkCreateValidationCacheEXT( m_device, reinterpret_cast<const VkValidationCacheCreateInfoEXT*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkValidationCacheEXT*>( pValidationCache ) ) );
29863 }
29864#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29865 VULKAN_HPP_INLINE ResultValueType<ValidationCacheEXT>::type Device::createValidationCacheEXT( const ValidationCacheCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
29866 {
29867 ValidationCacheEXT validationCache;
29868 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 -060029869 return createResultValue( result, validationCache, "VULKAN_HPP_NAMESPACE::Device::createValidationCacheEXT" );
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060029870 }
29871#ifndef VULKAN_HPP_NO_SMART_HANDLE
29872 VULKAN_HPP_INLINE UniqueValidationCacheEXT Device::createValidationCacheEXTUnique( const ValidationCacheCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
29873 {
29874 ValidationCacheEXTDeleter deleter( *this, allocator );
29875 return UniqueValidationCacheEXT( createValidationCacheEXT( createInfo, allocator ), deleter );
29876 }
29877#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29878#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29879
29880 VULKAN_HPP_INLINE void Device::destroyValidationCacheEXT( ValidationCacheEXT validationCache, const AllocationCallbacks* pAllocator ) const
29881 {
29882 vkDestroyValidationCacheEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29883 }
29884#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29885 VULKAN_HPP_INLINE void Device::destroyValidationCacheEXT( ValidationCacheEXT validationCache, Optional<const AllocationCallbacks> allocator ) const
29886 {
29887 vkDestroyValidationCacheEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
29888 }
29889#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29890
29891 VULKAN_HPP_INLINE Result Device::getValidationCacheDataEXT( ValidationCacheEXT validationCache, size_t* pDataSize, void* pData ) const
29892 {
29893 return static_cast<Result>( vkGetValidationCacheDataEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), pDataSize, pData ) );
29894 }
29895#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29896 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029897 VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getValidationCacheDataEXT( ValidationCacheEXT validationCache, Allocator const & alloc ) const
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060029898 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029899 std::vector<uint8_t,Allocator> data( {alloc} );
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060029900 size_t dataSize;
29901 Result result;
29902 do
29903 {
29904 result = static_cast<Result>( vkGetValidationCacheDataEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), &dataSize, nullptr ) );
29905 if ( ( result == Result::eSuccess ) && dataSize )
29906 {
29907 data.resize( dataSize );
29908 result = static_cast<Result>( vkGetValidationCacheDataEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), &dataSize, reinterpret_cast<void*>( data.data() ) ) );
29909 }
29910 } while ( result == Result::eIncomplete );
29911 assert( dataSize <= data.size() );
29912 data.resize( dataSize );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029913 return createResultValue( result, data, "VULKAN_HPP_NAMESPACE::Device::getValidationCacheDataEXT" );
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060029914 }
29915#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29916
29917 VULKAN_HPP_INLINE Result Device::mergeValidationCachesEXT( ValidationCacheEXT dstCache, uint32_t srcCacheCount, const ValidationCacheEXT* pSrcCaches ) const
29918 {
29919 return static_cast<Result>( vkMergeValidationCachesEXT( m_device, static_cast<VkValidationCacheEXT>( dstCache ), srcCacheCount, reinterpret_cast<const VkValidationCacheEXT*>( pSrcCaches ) ) );
29920 }
29921#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29922 VULKAN_HPP_INLINE ResultValueType<void>::type Device::mergeValidationCachesEXT( ValidationCacheEXT dstCache, ArrayProxy<const ValidationCacheEXT> srcCaches ) const
29923 {
29924 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 -060029925 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::mergeValidationCachesEXT" );
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060029926 }
29927#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29928
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029929#ifndef VULKAN_HPP_NO_SMART_HANDLE
29930 class DeviceDeleter;
29931 using UniqueDevice = UniqueHandle<Device, DeviceDeleter>;
29932#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29933
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029934 class PhysicalDevice
29935 {
29936 public:
29937 PhysicalDevice()
29938 : m_physicalDevice(VK_NULL_HANDLE)
29939 {}
29940
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070029941 PhysicalDevice( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029942 : m_physicalDevice(VK_NULL_HANDLE)
29943 {}
29944
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029945 VULKAN_HPP_TYPESAFE_EXPLICIT PhysicalDevice( VkPhysicalDevice physicalDevice )
29946 : m_physicalDevice( physicalDevice )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029947 {}
29948
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070029949#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029950 PhysicalDevice & operator=(VkPhysicalDevice physicalDevice)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029951 {
29952 m_physicalDevice = physicalDevice;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029953 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029954 }
29955#endif
29956
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029957 PhysicalDevice & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029958 {
29959 m_physicalDevice = VK_NULL_HANDLE;
29960 return *this;
29961 }
29962
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029963 bool operator==( PhysicalDevice const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060029964 {
29965 return m_physicalDevice == rhs.m_physicalDevice;
29966 }
29967
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029968 bool operator!=(PhysicalDevice const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060029969 {
29970 return m_physicalDevice != rhs.m_physicalDevice;
29971 }
29972
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029973 bool operator<(PhysicalDevice const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060029974 {
29975 return m_physicalDevice < rhs.m_physicalDevice;
29976 }
29977
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029978 void getProperties( PhysicalDeviceProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029979#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029980 PhysicalDeviceProperties getProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029981#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29982
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029983 void getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029984#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029985 template <typename Allocator = std::allocator<QueueFamilyProperties>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029986 std::vector<QueueFamilyProperties,Allocator> getQueueFamilyProperties(Allocator const & alloc = Allocator() ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029987#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29988
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029989 void getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029990#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029991 PhysicalDeviceMemoryProperties getMemoryProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029992#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29993
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029994 void getFeatures( PhysicalDeviceFeatures* pFeatures ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029995#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029996 PhysicalDeviceFeatures getFeatures() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029997#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29998
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029999 void getFormatProperties( Format format, FormatProperties* pFormatProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030000#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030001 FormatProperties getFormatProperties( Format format ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030002#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30003
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030004 Result getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030005#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030006 ResultValueType<ImageFormatProperties>::type getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030007#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30008
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030009 Result createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030010#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030011 ResultValueType<Device>::type createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
30012#ifndef VULKAN_HPP_NO_SMART_HANDLE
30013 UniqueDevice createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
30014#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030015#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30016
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030017 Result enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030018#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030019 template <typename Allocator = std::allocator<LayerProperties>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030020 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateDeviceLayerProperties(Allocator const & alloc = Allocator() ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030021#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30022
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030023 Result enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030024#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030025 template <typename Allocator = std::allocator<ExtensionProperties>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030026 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateDeviceExtensionProperties( Optional<const std::string> layerName = nullptr, Allocator const & alloc = Allocator() ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030027#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30028
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030029 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 -060030030#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030031 template <typename Allocator = std::allocator<SparseImageFormatProperties>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030032 std::vector<SparseImageFormatProperties,Allocator> getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling, Allocator const & alloc = Allocator() ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030033#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30034
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030035 Result getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030036#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030037 template <typename Allocator = std::allocator<DisplayPropertiesKHR>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030038 typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type getDisplayPropertiesKHR(Allocator const & alloc = Allocator() ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030039#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30040
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030041 Result getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030042#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030043 template <typename Allocator = std::allocator<DisplayPlanePropertiesKHR>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030044 typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type getDisplayPlanePropertiesKHR(Allocator const & alloc = Allocator() ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030045#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30046
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030047 Result getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030048#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030049 template <typename Allocator = std::allocator<DisplayKHR>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030050 typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, Allocator const & alloc = Allocator() ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030051#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30052
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030053 Result getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030054#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030055 template <typename Allocator = std::allocator<DisplayModePropertiesKHR>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030056 typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type getDisplayModePropertiesKHR( DisplayKHR display, Allocator const & alloc = Allocator() ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030057#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30058
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030059 Result createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030060#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030061 ResultValueType<DisplayModeKHR>::type createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030062#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30063
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030064 Result getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030065#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030066 ResultValueType<DisplayPlaneCapabilitiesKHR>::type getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030067#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30068
30069#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030070 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection ) const;
30071#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30072 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection ) const;
30073#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030074#endif /*VK_USE_PLATFORM_MIR_KHR*/
30075
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030076 Result getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030077#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030078 ResultValueType<Bool32>::type getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030079#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30080
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030081 Result getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030082#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030083 ResultValueType<SurfaceCapabilitiesKHR>::type getSurfaceCapabilitiesKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030084#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30085
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030086 Result getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030087#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030088 template <typename Allocator = std::allocator<SurfaceFormatKHR>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030089 typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type getSurfaceFormatsKHR( SurfaceKHR surface, Allocator const & alloc = Allocator() ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030090#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30091
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030092 Result getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030093#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030094 template <typename Allocator = std::allocator<PresentModeKHR>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030095 typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type getSurfacePresentModesKHR( SurfaceKHR surface, Allocator const & alloc = Allocator() ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030096#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30097
30098#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030099 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display ) const;
30100#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30101 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const;
30102#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030103#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
30104
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030105#ifdef VK_USE_PLATFORM_WIN32_KHR
30106 Bool32 getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const;
30107#endif /*VK_USE_PLATFORM_WIN32_KHR*/
30108
30109#ifdef VK_USE_PLATFORM_XLIB_KHR
30110 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030111#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030112 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const;
30113#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30114#endif /*VK_USE_PLATFORM_XLIB_KHR*/
30115
30116#ifdef VK_USE_PLATFORM_XCB_KHR
30117 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const;
30118#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30119 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const;
30120#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30121#endif /*VK_USE_PLATFORM_XCB_KHR*/
30122
30123 Result getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const;
30124#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30125 ResultValueType<ExternalImageFormatPropertiesNV>::type getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType ) const;
30126#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30127
30128 void getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits ) const;
30129#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30130 DeviceGeneratedCommandsLimitsNVX getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features ) const;
30131#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30132
30133 void getFeatures2KHR( PhysicalDeviceFeatures2KHR* pFeatures ) const;
30134#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30135 PhysicalDeviceFeatures2KHR getFeatures2KHR() const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030136 template <typename ...T>
30137 StructureChain<T...> getFeatures2KHR() const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030138#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30139
30140 void getProperties2KHR( PhysicalDeviceProperties2KHR* pProperties ) const;
30141#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30142 PhysicalDeviceProperties2KHR getProperties2KHR() const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030143 template <typename ...T>
30144 StructureChain<T...> getProperties2KHR() const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030145#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30146
30147 void getFormatProperties2KHR( Format format, FormatProperties2KHR* pFormatProperties ) const;
30148#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30149 FormatProperties2KHR getFormatProperties2KHR( Format format ) const;
30150#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30151
30152 Result getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, ImageFormatProperties2KHR* pImageFormatProperties ) const;
30153#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30154 ResultValueType<ImageFormatProperties2KHR>::type getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030155 template <typename ...T>
30156 typename ResultValueType<StructureChain<T...>>::type getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030157#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30158
30159 void getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2KHR* pQueueFamilyProperties ) const;
30160#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30161 template <typename Allocator = std::allocator<QueueFamilyProperties2KHR>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030162 std::vector<QueueFamilyProperties2KHR,Allocator> getQueueFamilyProperties2KHR(Allocator const & alloc = Allocator() ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030163#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30164
30165 void getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2KHR* pMemoryProperties ) const;
30166#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30167 PhysicalDeviceMemoryProperties2KHR getMemoryProperties2KHR() const;
30168#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30169
30170 void getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2KHR* pProperties ) const;
30171#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30172 template <typename Allocator = std::allocator<SparseImageFormatProperties2KHR>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030173 std::vector<SparseImageFormatProperties2KHR,Allocator> getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR & formatInfo, Allocator const & alloc = Allocator() ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030174#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30175
Mark Youngabc2d6e2017-07-07 07:59:56 -060030176 void getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfoKHR* pExternalBufferInfo, ExternalBufferPropertiesKHR* pExternalBufferProperties ) const;
Mark Young0f183a82017-02-28 09:58:04 -070030177#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060030178 ExternalBufferPropertiesKHR getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfoKHR & externalBufferInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070030179#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30180
Mark Youngabc2d6e2017-07-07 07:59:56 -060030181 void getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfoKHR* pExternalSemaphoreInfo, ExternalSemaphorePropertiesKHR* pExternalSemaphoreProperties ) const;
Mark Young0f183a82017-02-28 09:58:04 -070030182#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060030183 ExternalSemaphorePropertiesKHR getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfoKHR & externalSemaphoreInfo ) const;
30184#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30185
30186 void getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfoKHR* pExternalFenceInfo, ExternalFencePropertiesKHR* pExternalFenceProperties ) const;
30187#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30188 ExternalFencePropertiesKHR getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfoKHR & externalFenceInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070030189#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30190
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030191#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030192 Result releaseDisplayEXT( DisplayKHR display ) const;
30193#else
30194 ResultValueType<void>::type releaseDisplayEXT( DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070030195#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30196
30197#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030198 Result acquireXlibDisplayEXT( Display* dpy, DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070030199#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030200 ResultValueType<Display>::type acquireXlibDisplayEXT( DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070030201#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young39389872017-01-19 21:10:49 -070030202#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
30203
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030204#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
30205 Result getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay ) const;
Mark Young39389872017-01-19 21:10:49 -070030206#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030207 ResultValueType<DisplayKHR>::type getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const;
Mark Young39389872017-01-19 21:10:49 -070030208#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030209#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
Mark Young39389872017-01-19 21:10:49 -070030210
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030211 Result getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities ) const;
Mark Young39389872017-01-19 21:10:49 -070030212#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030213 ResultValueType<SurfaceCapabilities2EXT>::type getSurfaceCapabilities2EXT( SurfaceKHR surface ) const;
Mark Young39389872017-01-19 21:10:49 -070030214#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30215
Mark Young0f183a82017-02-28 09:58:04 -070030216 Result getPresentRectanglesKHX( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects ) const;
30217#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30218 template <typename Allocator = std::allocator<Rect2D>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030219 typename ResultValueType<std::vector<Rect2D,Allocator>>::type getPresentRectanglesKHX( SurfaceKHR surface, Allocator const & alloc = Allocator() ) const;
Mark Young0f183a82017-02-28 09:58:04 -070030220#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30221
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030222 void getMultisamplePropertiesEXT( SampleCountFlagBits samples, MultisamplePropertiesEXT* pMultisampleProperties ) const;
30223#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30224 MultisamplePropertiesEXT getMultisamplePropertiesEXT( SampleCountFlagBits samples ) const;
30225#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30226
Mark Lobodzinski54385432017-05-15 10:27:52 -060030227 Result getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, SurfaceCapabilities2KHR* pSurfaceCapabilities ) const;
30228#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030229 ResultValueType<SurfaceCapabilities2KHR>::type getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030230 template <typename ...T>
30231 typename ResultValueType<StructureChain<T...>>::type getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
Mark Lobodzinski54385432017-05-15 10:27:52 -060030232#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30233
30234 Result getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, SurfaceFormat2KHR* pSurfaceFormats ) const;
30235#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30236 template <typename Allocator = std::allocator<SurfaceFormat2KHR>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030237 typename ResultValueType<std::vector<SurfaceFormat2KHR,Allocator>>::type getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Allocator const & alloc = Allocator() ) const;
Mark Lobodzinski54385432017-05-15 10:27:52 -060030238#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30239
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030240
30241
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070030242 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPhysicalDevice() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030243 {
30244 return m_physicalDevice;
30245 }
30246
30247 explicit operator bool() const
30248 {
30249 return m_physicalDevice != VK_NULL_HANDLE;
30250 }
30251
30252 bool operator!() const
30253 {
30254 return m_physicalDevice == VK_NULL_HANDLE;
30255 }
30256
30257 private:
30258 VkPhysicalDevice m_physicalDevice;
30259 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030260
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030261 static_assert( sizeof( PhysicalDevice ) == sizeof( VkPhysicalDevice ), "handle and wrapper have different size!" );
30262
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030263#ifndef VULKAN_HPP_NO_SMART_HANDLE
30264 class DeviceDeleter
30265 {
30266 public:
30267 DeviceDeleter( Optional<const AllocationCallbacks> allocator = nullptr )
30268 : m_allocator( allocator )
30269 {}
30270
30271 void operator()( Device device )
30272 {
30273 device.destroy( m_allocator );
30274 }
30275
30276 private:
30277 Optional<const AllocationCallbacks> m_allocator;
30278 };
30279#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30280
30281 VULKAN_HPP_INLINE void PhysicalDevice::getProperties( PhysicalDeviceProperties* pProperties ) const
30282 {
30283 vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( pProperties ) );
30284 }
30285#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30286 VULKAN_HPP_INLINE PhysicalDeviceProperties PhysicalDevice::getProperties() const
30287 {
30288 PhysicalDeviceProperties properties;
30289 vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( &properties ) );
30290 return properties;
30291 }
30292#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30293
30294 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties ) const
30295 {
30296 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( pQueueFamilyProperties ) );
30297 }
30298#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30299 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030300 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties,Allocator> PhysicalDevice::getQueueFamilyProperties(Allocator const & alloc ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030301 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030302 std::vector<QueueFamilyProperties,Allocator> queueFamilyProperties( {alloc} );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030303 uint32_t queueFamilyPropertyCount;
30304 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
30305 queueFamilyProperties.resize( queueFamilyPropertyCount );
30306 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( queueFamilyProperties.data() ) );
30307 return queueFamilyProperties;
30308 }
30309#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30310
30311 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties ) const
30312 {
30313 vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( pMemoryProperties ) );
30314 }
30315#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30316 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties PhysicalDevice::getMemoryProperties() const
30317 {
30318 PhysicalDeviceMemoryProperties memoryProperties;
30319 vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( &memoryProperties ) );
30320 return memoryProperties;
30321 }
30322#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30323
30324 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures( PhysicalDeviceFeatures* pFeatures ) const
30325 {
30326 vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( pFeatures ) );
30327 }
30328#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30329 VULKAN_HPP_INLINE PhysicalDeviceFeatures PhysicalDevice::getFeatures() const
30330 {
30331 PhysicalDeviceFeatures features;
30332 vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( &features ) );
30333 return features;
30334 }
30335#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30336
30337 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties( Format format, FormatProperties* pFormatProperties ) const
30338 {
30339 vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( pFormatProperties ) );
30340 }
30341#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30342 VULKAN_HPP_INLINE FormatProperties PhysicalDevice::getFormatProperties( Format format ) const
30343 {
30344 FormatProperties formatProperties;
30345 vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( &formatProperties ) );
30346 return formatProperties;
30347 }
30348#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30349
30350 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties ) const
30351 {
30352 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 ) ) );
30353 }
30354#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30355 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties>::type PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const
30356 {
30357 ImageFormatProperties imageFormatProperties;
30358 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 -060030359 return createResultValue( result, imageFormatProperties, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getImageFormatProperties" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030360 }
30361#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30362
30363 VULKAN_HPP_INLINE Result PhysicalDevice::createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice ) const
30364 {
30365 return static_cast<Result>( vkCreateDevice( m_physicalDevice, reinterpret_cast<const VkDeviceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDevice*>( pDevice ) ) );
30366 }
30367#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30368 VULKAN_HPP_INLINE ResultValueType<Device>::type PhysicalDevice::createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
30369 {
30370 Device device;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030371 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 -060030372 return createResultValue( result, device, "VULKAN_HPP_NAMESPACE::PhysicalDevice::createDevice" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030373 }
30374#ifndef VULKAN_HPP_NO_SMART_HANDLE
30375 VULKAN_HPP_INLINE UniqueDevice PhysicalDevice::createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
30376 {
30377 DeviceDeleter deleter( allocator );
30378 return UniqueDevice( createDevice( createInfo, allocator ), deleter );
30379 }
30380#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30381#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30382
30383 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties ) const
30384 {
30385 return static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
30386 }
30387#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30388 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030389 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type PhysicalDevice::enumerateDeviceLayerProperties(Allocator const & alloc ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030390 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030391 std::vector<LayerProperties,Allocator> properties( {alloc} );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030392 uint32_t propertyCount;
30393 Result result;
30394 do
30395 {
30396 result = static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, nullptr ) );
30397 if ( ( result == Result::eSuccess ) && propertyCount )
30398 {
30399 properties.resize( propertyCount );
30400 result = static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
30401 }
30402 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030403 assert( propertyCount <= properties.size() );
30404 properties.resize( propertyCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030405 return createResultValue( result, properties, "VULKAN_HPP_NAMESPACE::PhysicalDevice::enumerateDeviceLayerProperties" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030406 }
30407#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30408
30409 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties ) const
30410 {
30411 return static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
30412 }
30413#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30414 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030415 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type PhysicalDevice::enumerateDeviceExtensionProperties( Optional<const std::string> layerName, Allocator const & alloc ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030416 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030417 std::vector<ExtensionProperties,Allocator> properties( {alloc} );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030418 uint32_t propertyCount;
30419 Result result;
30420 do
30421 {
30422 result = static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
30423 if ( ( result == Result::eSuccess ) && propertyCount )
30424 {
30425 properties.resize( propertyCount );
30426 result = static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
30427 }
30428 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030429 assert( propertyCount <= properties.size() );
30430 properties.resize( propertyCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030431 return createResultValue( result, properties, "VULKAN_HPP_NAMESPACE::PhysicalDevice::enumerateDeviceExtensionProperties" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030432 }
30433#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30434
30435 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling, uint32_t* pPropertyCount, SparseImageFormatProperties* pProperties ) const
30436 {
30437 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 ) );
30438 }
30439#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30440 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030441 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties,Allocator> PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling, Allocator const & alloc ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030442 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030443 std::vector<SparseImageFormatProperties,Allocator> properties( {alloc} );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030444 uint32_t propertyCount;
30445 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 );
30446 properties.resize( propertyCount );
30447 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() ) );
30448 return properties;
30449 }
30450#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30451
30452 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties ) const
30453 {
30454 return static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( pProperties ) ) );
30455 }
30456#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30457 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030458 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPropertiesKHR(Allocator const & alloc ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030459 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030460 std::vector<DisplayPropertiesKHR,Allocator> properties( {alloc} );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030461 uint32_t propertyCount;
30462 Result result;
30463 do
30464 {
30465 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
30466 if ( ( result == Result::eSuccess ) && propertyCount )
30467 {
30468 properties.resize( propertyCount );
30469 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( properties.data() ) ) );
30470 }
30471 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030472 assert( propertyCount <= properties.size() );
30473 properties.resize( propertyCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030474 return createResultValue( result, properties, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getDisplayPropertiesKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030475 }
30476#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30477
30478 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties ) const
30479 {
30480 return static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( pProperties ) ) );
30481 }
30482#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30483 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030484 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPlanePropertiesKHR(Allocator const & alloc ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030485 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030486 std::vector<DisplayPlanePropertiesKHR,Allocator> properties( {alloc} );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030487 uint32_t propertyCount;
30488 Result result;
30489 do
30490 {
30491 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
30492 if ( ( result == Result::eSuccess ) && propertyCount )
30493 {
30494 properties.resize( propertyCount );
30495 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( properties.data() ) ) );
30496 }
30497 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030498 assert( propertyCount <= properties.size() );
30499 properties.resize( propertyCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030500 return createResultValue( result, properties, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getDisplayPlanePropertiesKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030501 }
30502#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30503
30504 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays ) const
30505 {
30506 return static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, pDisplayCount, reinterpret_cast<VkDisplayKHR*>( pDisplays ) ) );
30507 }
30508#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30509 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030510 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, Allocator const & alloc ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030511 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030512 std::vector<DisplayKHR,Allocator> displays( {alloc} );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030513 uint32_t displayCount;
30514 Result result;
30515 do
30516 {
30517 result = static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, nullptr ) );
30518 if ( ( result == Result::eSuccess ) && displayCount )
30519 {
30520 displays.resize( displayCount );
30521 result = static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, reinterpret_cast<VkDisplayKHR*>( displays.data() ) ) );
30522 }
30523 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030524 assert( displayCount <= displays.size() );
30525 displays.resize( displayCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030526 return createResultValue( result, displays, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030527 }
30528#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30529
30530 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties ) const
30531 {
30532 return static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), pPropertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( pProperties ) ) );
30533 }
30534#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30535 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030536 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display, Allocator const & alloc ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030537 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030538 std::vector<DisplayModePropertiesKHR,Allocator> properties( {alloc} );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030539 uint32_t propertyCount;
30540 Result result;
30541 do
30542 {
30543 result = static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, nullptr ) );
30544 if ( ( result == Result::eSuccess ) && propertyCount )
30545 {
30546 properties.resize( propertyCount );
30547 result = static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( properties.data() ) ) );
30548 }
30549 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030550 assert( propertyCount <= properties.size() );
30551 properties.resize( propertyCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030552 return createResultValue( result, properties, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getDisplayModePropertiesKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030553 }
30554#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30555
30556 VULKAN_HPP_INLINE Result PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode ) const
30557 {
30558 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 ) ) );
30559 }
30560#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30561 VULKAN_HPP_INLINE ResultValueType<DisplayModeKHR>::type PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
30562 {
30563 DisplayModeKHR mode;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030564 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 -060030565 return createResultValue( result, mode, "VULKAN_HPP_NAMESPACE::PhysicalDevice::createDisplayModeKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030566 }
30567#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30568
30569 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities ) const
30570 {
30571 return static_cast<Result>( vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( pCapabilities ) ) );
30572 }
30573#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30574 VULKAN_HPP_INLINE ResultValueType<DisplayPlaneCapabilitiesKHR>::type PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex ) const
30575 {
30576 DisplayPlaneCapabilitiesKHR capabilities;
30577 Result result = static_cast<Result>( vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( &capabilities ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030578 return createResultValue( result, capabilities, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getDisplayPlaneCapabilitiesKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030579 }
30580#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30581
30582#ifdef VK_USE_PLATFORM_MIR_KHR
30583 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection ) const
30584 {
30585 return vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection );
30586 }
30587#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30588 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection ) const
30589 {
30590 return vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection );
30591 }
30592#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30593#endif /*VK_USE_PLATFORM_MIR_KHR*/
30594
30595 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported ) const
30596 {
30597 return static_cast<Result>( vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), pSupported ) );
30598 }
30599#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30600 VULKAN_HPP_INLINE ResultValueType<Bool32>::type PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface ) const
30601 {
30602 Bool32 supported;
30603 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), &supported ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030604 return createResultValue( result, supported, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getSurfaceSupportKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030605 }
30606#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30607
30608 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities ) const
30609 {
30610 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( pSurfaceCapabilities ) ) );
30611 }
30612#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30613 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilitiesKHR>::type PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface ) const
30614 {
30615 SurfaceCapabilitiesKHR surfaceCapabilities;
30616 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( &surfaceCapabilities ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030617 return createResultValue( result, surfaceCapabilities, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getSurfaceCapabilitiesKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030618 }
30619#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30620
30621 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats ) const
30622 {
30623 return static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pSurfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( pSurfaceFormats ) ) );
30624 }
30625#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30626 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030627 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface, Allocator const & alloc ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030628 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030629 std::vector<SurfaceFormatKHR,Allocator> surfaceFormats( {alloc} );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030630 uint32_t surfaceFormatCount;
30631 Result result;
30632 do
30633 {
30634 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, nullptr ) );
30635 if ( ( result == Result::eSuccess ) && surfaceFormatCount )
30636 {
30637 surfaceFormats.resize( surfaceFormatCount );
30638 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( surfaceFormats.data() ) ) );
30639 }
30640 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030641 assert( surfaceFormatCount <= surfaceFormats.size() );
30642 surfaceFormats.resize( surfaceFormatCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030643 return createResultValue( result, surfaceFormats, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getSurfaceFormatsKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030644 }
30645#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30646
30647 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes ) const
30648 {
30649 return static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pPresentModeCount, reinterpret_cast<VkPresentModeKHR*>( pPresentModes ) ) );
30650 }
30651#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30652 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030653 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface, Allocator const & alloc ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030654 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030655 std::vector<PresentModeKHR,Allocator> presentModes( {alloc} );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030656 uint32_t presentModeCount;
30657 Result result;
30658 do
30659 {
30660 result = static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, nullptr ) );
30661 if ( ( result == Result::eSuccess ) && presentModeCount )
30662 {
30663 presentModes.resize( presentModeCount );
30664 result = static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, reinterpret_cast<VkPresentModeKHR*>( presentModes.data() ) ) );
30665 }
30666 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030667 assert( presentModeCount <= presentModes.size() );
30668 presentModes.resize( presentModeCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030669 return createResultValue( result, presentModes, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getSurfacePresentModesKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030670 }
30671#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30672
30673#ifdef VK_USE_PLATFORM_WAYLAND_KHR
30674 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display ) const
30675 {
30676 return vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, display );
30677 }
30678#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30679 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const
30680 {
30681 return vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &display );
30682 }
30683#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30684#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
30685
30686#ifdef VK_USE_PLATFORM_WIN32_KHR
30687 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const
30688 {
30689 return vkGetPhysicalDeviceWin32PresentationSupportKHR( m_physicalDevice, queueFamilyIndex );
30690 }
30691#endif /*VK_USE_PLATFORM_WIN32_KHR*/
30692
30693#ifdef VK_USE_PLATFORM_XLIB_KHR
30694 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const
30695 {
30696 return vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, dpy, visualID );
30697 }
30698#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30699 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const
30700 {
30701 return vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &dpy, visualID );
30702 }
30703#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30704#endif /*VK_USE_PLATFORM_XLIB_KHR*/
30705
30706#ifdef VK_USE_PLATFORM_XCB_KHR
30707 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const
30708 {
30709 return vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection, visual_id );
30710 }
30711#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30712 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const
30713 {
30714 return vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection, visual_id );
30715 }
30716#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30717#endif /*VK_USE_PLATFORM_XCB_KHR*/
30718
30719 VULKAN_HPP_INLINE Result PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const
30720 {
30721 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 ) ) );
30722 }
30723#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30724 VULKAN_HPP_INLINE ResultValueType<ExternalImageFormatPropertiesNV>::type PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType ) const
30725 {
30726 ExternalImageFormatPropertiesNV externalImageFormatProperties;
30727 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 -060030728 return createResultValue( result, externalImageFormatProperties, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getExternalImageFormatPropertiesNV" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030729 }
30730#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30731
30732 VULKAN_HPP_INLINE void PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits ) const
30733 {
30734 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( pFeatures ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( pLimits ) );
30735 }
30736#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30737 VULKAN_HPP_INLINE DeviceGeneratedCommandsLimitsNVX PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features ) const
30738 {
30739 DeviceGeneratedCommandsLimitsNVX limits;
30740 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( &features ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( &limits ) );
30741 return limits;
30742 }
30743#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30744
30745 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures2KHR( PhysicalDeviceFeatures2KHR* pFeatures ) const
30746 {
30747 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( pFeatures ) );
30748 }
30749#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30750 VULKAN_HPP_INLINE PhysicalDeviceFeatures2KHR PhysicalDevice::getFeatures2KHR() const
30751 {
30752 PhysicalDeviceFeatures2KHR features;
30753 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( &features ) );
30754 return features;
30755 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030756 template <typename ...T>
30757 VULKAN_HPP_INLINE StructureChain<T...> PhysicalDevice::getFeatures2KHR() const
30758 {
30759 StructureChain<T...> structureChain;
30760 PhysicalDeviceFeatures2KHR& features = structureChain.template get<PhysicalDeviceFeatures2KHR>();
30761 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( &features ) );
30762 return structureChain;
30763 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030764#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30765
30766 VULKAN_HPP_INLINE void PhysicalDevice::getProperties2KHR( PhysicalDeviceProperties2KHR* pProperties ) const
30767 {
30768 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( pProperties ) );
30769 }
30770#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30771 VULKAN_HPP_INLINE PhysicalDeviceProperties2KHR PhysicalDevice::getProperties2KHR() const
30772 {
30773 PhysicalDeviceProperties2KHR properties;
30774 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( &properties ) );
30775 return properties;
30776 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030777 template <typename ...T>
30778 VULKAN_HPP_INLINE StructureChain<T...> PhysicalDevice::getProperties2KHR() const
30779 {
30780 StructureChain<T...> structureChain;
30781 PhysicalDeviceProperties2KHR& properties = structureChain.template get<PhysicalDeviceProperties2KHR>();
30782 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( &properties ) );
30783 return structureChain;
30784 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030785#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30786
30787 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties2KHR( Format format, FormatProperties2KHR* pFormatProperties ) const
30788 {
30789 vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2KHR*>( pFormatProperties ) );
30790 }
30791#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30792 VULKAN_HPP_INLINE FormatProperties2KHR PhysicalDevice::getFormatProperties2KHR( Format format ) const
30793 {
30794 FormatProperties2KHR formatProperties;
30795 vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2KHR*>( &formatProperties ) );
30796 return formatProperties;
30797 }
30798#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30799
30800 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, ImageFormatProperties2KHR* pImageFormatProperties ) const
30801 {
30802 return static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( pImageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( pImageFormatProperties ) ) );
30803 }
30804#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30805 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties2KHR>::type PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const
30806 {
30807 ImageFormatProperties2KHR imageFormatProperties;
30808 Result result = static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( &imageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( &imageFormatProperties ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030809 return createResultValue( result, imageFormatProperties, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getImageFormatProperties2KHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030810 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030811 template <typename ...T>
30812 VULKAN_HPP_INLINE typename ResultValueType<StructureChain<T...>>::type PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const
30813 {
30814 StructureChain<T...> structureChain;
30815 ImageFormatProperties2KHR& imageFormatProperties = structureChain.template get<ImageFormatProperties2KHR>();
30816 Result result = static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( &imageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( &imageFormatProperties ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030817 return createResultValue( result, structureChain, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getImageFormatProperties2KHR" );
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030818 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030819#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30820
30821 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2KHR* pQueueFamilyProperties ) const
30822 {
30823 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2KHR*>( pQueueFamilyProperties ) );
30824 }
30825#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30826 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030827 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties2KHR,Allocator> PhysicalDevice::getQueueFamilyProperties2KHR(Allocator const & alloc ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030828 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030829 std::vector<QueueFamilyProperties2KHR,Allocator> queueFamilyProperties( {alloc} );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030830 uint32_t queueFamilyPropertyCount;
30831 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
30832 queueFamilyProperties.resize( queueFamilyPropertyCount );
30833 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2KHR*>( queueFamilyProperties.data() ) );
30834 return queueFamilyProperties;
30835 }
30836#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30837
30838 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2KHR* pMemoryProperties ) const
30839 {
30840 vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2KHR*>( pMemoryProperties ) );
30841 }
30842#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30843 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties2KHR PhysicalDevice::getMemoryProperties2KHR() const
30844 {
30845 PhysicalDeviceMemoryProperties2KHR memoryProperties;
30846 vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2KHR*>( &memoryProperties ) );
30847 return memoryProperties;
30848 }
30849#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30850
30851 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2KHR* pProperties ) const
30852 {
30853 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( pFormatInfo ), pPropertyCount, reinterpret_cast<VkSparseImageFormatProperties2KHR*>( pProperties ) );
30854 }
30855#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30856 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030857 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties2KHR,Allocator> PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR & formatInfo, Allocator const & alloc ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030858 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030859 std::vector<SparseImageFormatProperties2KHR,Allocator> properties( {alloc} );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030860 uint32_t propertyCount;
30861 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( &formatInfo ), &propertyCount, nullptr );
30862 properties.resize( propertyCount );
30863 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( &formatInfo ), &propertyCount, reinterpret_cast<VkSparseImageFormatProperties2KHR*>( properties.data() ) );
30864 return properties;
30865 }
30866#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30867
Mark Youngabc2d6e2017-07-07 07:59:56 -060030868 VULKAN_HPP_INLINE void PhysicalDevice::getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfoKHR* pExternalBufferInfo, ExternalBufferPropertiesKHR* pExternalBufferProperties ) const
Mark Young0f183a82017-02-28 09:58:04 -070030869 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060030870 vkGetPhysicalDeviceExternalBufferPropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHR*>( pExternalBufferInfo ), reinterpret_cast<VkExternalBufferPropertiesKHR*>( pExternalBufferProperties ) );
Mark Young0f183a82017-02-28 09:58:04 -070030871 }
30872#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060030873 VULKAN_HPP_INLINE ExternalBufferPropertiesKHR PhysicalDevice::getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfoKHR & externalBufferInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070030874 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060030875 ExternalBufferPropertiesKHR externalBufferProperties;
30876 vkGetPhysicalDeviceExternalBufferPropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHR*>( &externalBufferInfo ), reinterpret_cast<VkExternalBufferPropertiesKHR*>( &externalBufferProperties ) );
Mark Young0f183a82017-02-28 09:58:04 -070030877 return externalBufferProperties;
30878 }
30879#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30880
Mark Youngabc2d6e2017-07-07 07:59:56 -060030881 VULKAN_HPP_INLINE void PhysicalDevice::getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfoKHR* pExternalSemaphoreInfo, ExternalSemaphorePropertiesKHR* pExternalSemaphoreProperties ) const
Mark Young0f183a82017-02-28 09:58:04 -070030882 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060030883 vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHR*>( pExternalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphorePropertiesKHR*>( pExternalSemaphoreProperties ) );
Mark Young0f183a82017-02-28 09:58:04 -070030884 }
30885#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060030886 VULKAN_HPP_INLINE ExternalSemaphorePropertiesKHR PhysicalDevice::getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfoKHR & externalSemaphoreInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070030887 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060030888 ExternalSemaphorePropertiesKHR externalSemaphoreProperties;
30889 vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHR*>( &externalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphorePropertiesKHR*>( &externalSemaphoreProperties ) );
Mark Young0f183a82017-02-28 09:58:04 -070030890 return externalSemaphoreProperties;
30891 }
30892#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30893
Mark Youngabc2d6e2017-07-07 07:59:56 -060030894 VULKAN_HPP_INLINE void PhysicalDevice::getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfoKHR* pExternalFenceInfo, ExternalFencePropertiesKHR* pExternalFenceProperties ) const
30895 {
30896 vkGetPhysicalDeviceExternalFencePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalFenceInfoKHR*>( pExternalFenceInfo ), reinterpret_cast<VkExternalFencePropertiesKHR*>( pExternalFenceProperties ) );
30897 }
30898#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30899 VULKAN_HPP_INLINE ExternalFencePropertiesKHR PhysicalDevice::getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfoKHR & externalFenceInfo ) const
30900 {
30901 ExternalFencePropertiesKHR externalFenceProperties;
30902 vkGetPhysicalDeviceExternalFencePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalFenceInfoKHR*>( &externalFenceInfo ), reinterpret_cast<VkExternalFencePropertiesKHR*>( &externalFenceProperties ) );
30903 return externalFenceProperties;
30904 }
30905#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30906
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030907#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
30908 VULKAN_HPP_INLINE Result PhysicalDevice::releaseDisplayEXT( DisplayKHR display ) const
30909 {
30910 return static_cast<Result>( vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
30911 }
30912#else
30913 VULKAN_HPP_INLINE ResultValueType<void>::type PhysicalDevice::releaseDisplayEXT( DisplayKHR display ) const
30914 {
30915 Result result = static_cast<Result>( vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030916 return createResultValue( result, "VULKAN_HPP_NAMESPACE::PhysicalDevice::releaseDisplayEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030917 }
30918#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30919
30920#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
30921 VULKAN_HPP_INLINE Result PhysicalDevice::acquireXlibDisplayEXT( Display* dpy, DisplayKHR display ) const
30922 {
30923 return static_cast<Result>( vkAcquireXlibDisplayEXT( m_physicalDevice, dpy, static_cast<VkDisplayKHR>( display ) ) );
30924 }
30925#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30926 VULKAN_HPP_INLINE ResultValueType<Display>::type PhysicalDevice::acquireXlibDisplayEXT( DisplayKHR display ) const
30927 {
30928 Display dpy;
30929 Result result = static_cast<Result>( vkAcquireXlibDisplayEXT( m_physicalDevice, &dpy, static_cast<VkDisplayKHR>( display ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030930 return createResultValue( result, dpy, "VULKAN_HPP_NAMESPACE::PhysicalDevice::acquireXlibDisplayEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030931 }
30932#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30933#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
30934
30935#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
30936 VULKAN_HPP_INLINE Result PhysicalDevice::getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay ) const
30937 {
30938 return static_cast<Result>( vkGetRandROutputDisplayEXT( m_physicalDevice, dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( pDisplay ) ) );
30939 }
30940#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30941 VULKAN_HPP_INLINE ResultValueType<DisplayKHR>::type PhysicalDevice::getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const
30942 {
30943 DisplayKHR display;
30944 Result result = static_cast<Result>( vkGetRandROutputDisplayEXT( m_physicalDevice, &dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( &display ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030945 return createResultValue( result, display, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getRandROutputDisplayEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030946 }
30947#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30948#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
30949
30950 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities ) const
30951 {
30952 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( pSurfaceCapabilities ) ) );
30953 }
30954#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30955 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilities2EXT>::type PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface ) const
30956 {
30957 SurfaceCapabilities2EXT surfaceCapabilities;
30958 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( &surfaceCapabilities ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030959 return createResultValue( result, surfaceCapabilities, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getSurfaceCapabilities2EXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030960 }
30961#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070030962
30963 VULKAN_HPP_INLINE Result PhysicalDevice::getPresentRectanglesKHX( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects ) const
30964 {
30965 return static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pRectCount, reinterpret_cast<VkRect2D*>( pRects ) ) );
30966 }
30967#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30968 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030969 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Rect2D,Allocator>>::type PhysicalDevice::getPresentRectanglesKHX( SurfaceKHR surface, Allocator const & alloc ) const
Mark Young0f183a82017-02-28 09:58:04 -070030970 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030971 std::vector<Rect2D,Allocator> rects( {alloc} );
Mark Young0f183a82017-02-28 09:58:04 -070030972 uint32_t rectCount;
30973 Result result;
30974 do
30975 {
30976 result = static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, nullptr ) );
30977 if ( ( result == Result::eSuccess ) && rectCount )
30978 {
30979 rects.resize( rectCount );
30980 result = static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, reinterpret_cast<VkRect2D*>( rects.data() ) ) );
30981 }
30982 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030983 assert( rectCount <= rects.size() );
30984 rects.resize( rectCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030985 return createResultValue( result, rects, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getPresentRectanglesKHX" );
Mark Young0f183a82017-02-28 09:58:04 -070030986 }
30987#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030988
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030989 VULKAN_HPP_INLINE void PhysicalDevice::getMultisamplePropertiesEXT( SampleCountFlagBits samples, MultisamplePropertiesEXT* pMultisampleProperties ) const
30990 {
30991 vkGetPhysicalDeviceMultisamplePropertiesEXT( m_physicalDevice, static_cast<VkSampleCountFlagBits>( samples ), reinterpret_cast<VkMultisamplePropertiesEXT*>( pMultisampleProperties ) );
30992 }
30993#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30994 VULKAN_HPP_INLINE MultisamplePropertiesEXT PhysicalDevice::getMultisamplePropertiesEXT( SampleCountFlagBits samples ) const
30995 {
30996 MultisamplePropertiesEXT multisampleProperties;
30997 vkGetPhysicalDeviceMultisamplePropertiesEXT( m_physicalDevice, static_cast<VkSampleCountFlagBits>( samples ), reinterpret_cast<VkMultisamplePropertiesEXT*>( &multisampleProperties ) );
30998 return multisampleProperties;
30999 }
31000#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31001
Mark Lobodzinski54385432017-05-15 10:27:52 -060031002 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, SurfaceCapabilities2KHR* pSurfaceCapabilities ) const
31003 {
31004 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( pSurfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( pSurfaceCapabilities ) ) );
31005 }
31006#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031007 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilities2KHR>::type PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
Mark Lobodzinski54385432017-05-15 10:27:52 -060031008 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031009 SurfaceCapabilities2KHR surfaceCapabilities;
Mark Lobodzinski54385432017-05-15 10:27:52 -060031010 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( &surfaceCapabilities ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031011 return createResultValue( result, surfaceCapabilities, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getSurfaceCapabilities2KHR" );
Mark Lobodzinski54385432017-05-15 10:27:52 -060031012 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031013 template <typename ...T>
31014 VULKAN_HPP_INLINE typename ResultValueType<StructureChain<T...>>::type PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
31015 {
31016 StructureChain<T...> structureChain;
31017 SurfaceCapabilities2KHR& surfaceCapabilities = structureChain.template get<SurfaceCapabilities2KHR>();
31018 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( &surfaceCapabilities ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031019 return createResultValue( result, structureChain, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getSurfaceCapabilities2KHR" );
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031020 }
Mark Lobodzinski54385432017-05-15 10:27:52 -060031021#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31022
31023 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, SurfaceFormat2KHR* pSurfaceFormats ) const
31024 {
31025 return static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( pSurfaceInfo ), pSurfaceFormatCount, reinterpret_cast<VkSurfaceFormat2KHR*>( pSurfaceFormats ) ) );
31026 }
31027#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31028 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031029 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormat2KHR,Allocator>>::type PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Allocator const & alloc ) const
Mark Lobodzinski54385432017-05-15 10:27:52 -060031030 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031031 std::vector<SurfaceFormat2KHR,Allocator> surfaceFormats( {alloc} );
Mark Lobodzinski54385432017-05-15 10:27:52 -060031032 uint32_t surfaceFormatCount;
31033 Result result;
31034 do
31035 {
31036 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), &surfaceFormatCount, nullptr ) );
31037 if ( ( result == Result::eSuccess ) && surfaceFormatCount )
31038 {
31039 surfaceFormats.resize( surfaceFormatCount );
31040 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormat2KHR*>( surfaceFormats.data() ) ) );
31041 }
31042 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031043 assert( surfaceFormatCount <= surfaceFormats.size() );
31044 surfaceFormats.resize( surfaceFormatCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031045 return createResultValue( result, surfaceFormats, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getSurfaceFormats2KHR" );
Mark Lobodzinski54385432017-05-15 10:27:52 -060031046 }
31047#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31048
Mark Young0f183a82017-02-28 09:58:04 -070031049 struct CmdProcessCommandsInfoNVX
31050 {
31051 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 )
31052 : sType( StructureType::eCmdProcessCommandsInfoNVX )
31053 , pNext( nullptr )
31054 , objectTable( objectTable_ )
31055 , indirectCommandsLayout( indirectCommandsLayout_ )
31056 , indirectCommandsTokenCount( indirectCommandsTokenCount_ )
31057 , pIndirectCommandsTokens( pIndirectCommandsTokens_ )
31058 , maxSequencesCount( maxSequencesCount_ )
31059 , targetCommandBuffer( targetCommandBuffer_ )
31060 , sequencesCountBuffer( sequencesCountBuffer_ )
31061 , sequencesCountOffset( sequencesCountOffset_ )
31062 , sequencesIndexBuffer( sequencesIndexBuffer_ )
31063 , sequencesIndexOffset( sequencesIndexOffset_ )
31064 {
31065 }
31066
31067 CmdProcessCommandsInfoNVX( VkCmdProcessCommandsInfoNVX const & rhs )
31068 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031069 memcpy( this, &rhs, sizeof( CmdProcessCommandsInfoNVX ) );
Mark Young0f183a82017-02-28 09:58:04 -070031070 }
31071
31072 CmdProcessCommandsInfoNVX& operator=( VkCmdProcessCommandsInfoNVX const & rhs )
31073 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031074 memcpy( this, &rhs, sizeof( CmdProcessCommandsInfoNVX ) );
Mark Young0f183a82017-02-28 09:58:04 -070031075 return *this;
31076 }
Mark Young0f183a82017-02-28 09:58:04 -070031077 CmdProcessCommandsInfoNVX& setPNext( const void* pNext_ )
31078 {
31079 pNext = pNext_;
31080 return *this;
31081 }
31082
31083 CmdProcessCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
31084 {
31085 objectTable = objectTable_;
31086 return *this;
31087 }
31088
31089 CmdProcessCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
31090 {
31091 indirectCommandsLayout = indirectCommandsLayout_;
31092 return *this;
31093 }
31094
31095 CmdProcessCommandsInfoNVX& setIndirectCommandsTokenCount( uint32_t indirectCommandsTokenCount_ )
31096 {
31097 indirectCommandsTokenCount = indirectCommandsTokenCount_;
31098 return *this;
31099 }
31100
31101 CmdProcessCommandsInfoNVX& setPIndirectCommandsTokens( const IndirectCommandsTokenNVX* pIndirectCommandsTokens_ )
31102 {
31103 pIndirectCommandsTokens = pIndirectCommandsTokens_;
31104 return *this;
31105 }
31106
31107 CmdProcessCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
31108 {
31109 maxSequencesCount = maxSequencesCount_;
31110 return *this;
31111 }
31112
31113 CmdProcessCommandsInfoNVX& setTargetCommandBuffer( CommandBuffer targetCommandBuffer_ )
31114 {
31115 targetCommandBuffer = targetCommandBuffer_;
31116 return *this;
31117 }
31118
31119 CmdProcessCommandsInfoNVX& setSequencesCountBuffer( Buffer sequencesCountBuffer_ )
31120 {
31121 sequencesCountBuffer = sequencesCountBuffer_;
31122 return *this;
31123 }
31124
31125 CmdProcessCommandsInfoNVX& setSequencesCountOffset( DeviceSize sequencesCountOffset_ )
31126 {
31127 sequencesCountOffset = sequencesCountOffset_;
31128 return *this;
31129 }
31130
31131 CmdProcessCommandsInfoNVX& setSequencesIndexBuffer( Buffer sequencesIndexBuffer_ )
31132 {
31133 sequencesIndexBuffer = sequencesIndexBuffer_;
31134 return *this;
31135 }
31136
31137 CmdProcessCommandsInfoNVX& setSequencesIndexOffset( DeviceSize sequencesIndexOffset_ )
31138 {
31139 sequencesIndexOffset = sequencesIndexOffset_;
31140 return *this;
31141 }
31142
31143 operator const VkCmdProcessCommandsInfoNVX&() const
31144 {
31145 return *reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>(this);
31146 }
31147
31148 bool operator==( CmdProcessCommandsInfoNVX const& rhs ) const
31149 {
31150 return ( sType == rhs.sType )
31151 && ( pNext == rhs.pNext )
31152 && ( objectTable == rhs.objectTable )
31153 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
31154 && ( indirectCommandsTokenCount == rhs.indirectCommandsTokenCount )
31155 && ( pIndirectCommandsTokens == rhs.pIndirectCommandsTokens )
31156 && ( maxSequencesCount == rhs.maxSequencesCount )
31157 && ( targetCommandBuffer == rhs.targetCommandBuffer )
31158 && ( sequencesCountBuffer == rhs.sequencesCountBuffer )
31159 && ( sequencesCountOffset == rhs.sequencesCountOffset )
31160 && ( sequencesIndexBuffer == rhs.sequencesIndexBuffer )
31161 && ( sequencesIndexOffset == rhs.sequencesIndexOffset );
31162 }
31163
31164 bool operator!=( CmdProcessCommandsInfoNVX const& rhs ) const
31165 {
31166 return !operator==( rhs );
31167 }
31168
31169 private:
31170 StructureType sType;
31171
31172 public:
31173 const void* pNext;
31174 ObjectTableNVX objectTable;
31175 IndirectCommandsLayoutNVX indirectCommandsLayout;
31176 uint32_t indirectCommandsTokenCount;
31177 const IndirectCommandsTokenNVX* pIndirectCommandsTokens;
31178 uint32_t maxSequencesCount;
31179 CommandBuffer targetCommandBuffer;
31180 Buffer sequencesCountBuffer;
31181 DeviceSize sequencesCountOffset;
31182 Buffer sequencesIndexBuffer;
31183 DeviceSize sequencesIndexOffset;
31184 };
31185 static_assert( sizeof( CmdProcessCommandsInfoNVX ) == sizeof( VkCmdProcessCommandsInfoNVX ), "struct and wrapper have different size!" );
31186
31187 struct PhysicalDeviceGroupPropertiesKHX
31188 {
31189 operator const VkPhysicalDeviceGroupPropertiesKHX&() const
31190 {
31191 return *reinterpret_cast<const VkPhysicalDeviceGroupPropertiesKHX*>(this);
31192 }
31193
31194 bool operator==( PhysicalDeviceGroupPropertiesKHX const& rhs ) const
31195 {
31196 return ( sType == rhs.sType )
31197 && ( pNext == rhs.pNext )
31198 && ( physicalDeviceCount == rhs.physicalDeviceCount )
31199 && ( memcmp( physicalDevices, rhs.physicalDevices, VK_MAX_DEVICE_GROUP_SIZE_KHX * sizeof( PhysicalDevice ) ) == 0 )
31200 && ( subsetAllocation == rhs.subsetAllocation );
31201 }
31202
31203 bool operator!=( PhysicalDeviceGroupPropertiesKHX const& rhs ) const
31204 {
31205 return !operator==( rhs );
31206 }
31207
31208 private:
31209 StructureType sType;
31210
31211 public:
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060031212 void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070031213 uint32_t physicalDeviceCount;
31214 PhysicalDevice physicalDevices[VK_MAX_DEVICE_GROUP_SIZE_KHX];
31215 Bool32 subsetAllocation;
31216 };
31217 static_assert( sizeof( PhysicalDeviceGroupPropertiesKHX ) == sizeof( VkPhysicalDeviceGroupPropertiesKHX ), "struct and wrapper have different size!" );
31218
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031219#ifndef VULKAN_HPP_NO_SMART_HANDLE
31220 class DebugReportCallbackEXTDeleter;
31221 using UniqueDebugReportCallbackEXT = UniqueHandle<DebugReportCallbackEXT, DebugReportCallbackEXTDeleter>;
31222 class SurfaceKHRDeleter;
31223 using UniqueSurfaceKHR = UniqueHandle<SurfaceKHR, SurfaceKHRDeleter>;
31224#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31225
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031226 class Instance
31227 {
31228 public:
31229 Instance()
31230 : m_instance(VK_NULL_HANDLE)
31231 {}
31232
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070031233 Instance( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031234 : m_instance(VK_NULL_HANDLE)
31235 {}
31236
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031237 VULKAN_HPP_TYPESAFE_EXPLICIT Instance( VkInstance instance )
31238 : m_instance( instance )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031239 {}
31240
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070031241#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031242 Instance & operator=(VkInstance instance)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031243 {
31244 m_instance = instance;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031245 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031246 }
31247#endif
31248
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031249 Instance & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031250 {
31251 m_instance = VK_NULL_HANDLE;
31252 return *this;
31253 }
31254
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031255 bool operator==( Instance const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060031256 {
31257 return m_instance == rhs.m_instance;
31258 }
31259
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031260 bool operator!=(Instance const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060031261 {
31262 return m_instance != rhs.m_instance;
31263 }
31264
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031265 bool operator<(Instance const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060031266 {
31267 return m_instance < rhs.m_instance;
31268 }
31269
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031270 void destroy( const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031271#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031272 void destroy( Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031273#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31274
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031275 Result enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031276#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031277 template <typename Allocator = std::allocator<PhysicalDevice>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031278 typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type enumeratePhysicalDevices(Allocator const & alloc = Allocator() ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031279#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31280
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031281 PFN_vkVoidFunction getProcAddr( const char* pName ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031282#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031283 PFN_vkVoidFunction getProcAddr( const std::string & name ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031284#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31285
31286#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031287 Result createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031288#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031289 ResultValueType<SurfaceKHR>::type createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31290#ifndef VULKAN_HPP_NO_SMART_HANDLE
31291 UniqueSurfaceKHR createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31292#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031293#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031294#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031295
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031296 Result createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031297#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031298 ResultValueType<SurfaceKHR>::type createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31299#ifndef VULKAN_HPP_NO_SMART_HANDLE
31300 UniqueSurfaceKHR createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31301#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031302#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31303
31304#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031305 Result createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031306#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031307 ResultValueType<SurfaceKHR>::type createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31308#ifndef VULKAN_HPP_NO_SMART_HANDLE
31309 UniqueSurfaceKHR createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31310#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031311#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031312#endif /*VK_USE_PLATFORM_MIR_KHR*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031313
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031314 void destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031315#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031316 void destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031317#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31318
Mark Young39389872017-01-19 21:10:49 -070031319#ifdef VK_USE_PLATFORM_VI_NN
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031320 Result createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31321#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31322 ResultValueType<SurfaceKHR>::type createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31323#ifndef VULKAN_HPP_NO_SMART_HANDLE
31324 UniqueSurfaceKHR createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31325#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31326#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young39389872017-01-19 21:10:49 -070031327#endif /*VK_USE_PLATFORM_VI_NN*/
31328
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031329#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031330 Result createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31331#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31332 ResultValueType<SurfaceKHR>::type createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31333#ifndef VULKAN_HPP_NO_SMART_HANDLE
31334 UniqueSurfaceKHR createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31335#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31336#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031337#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
31338
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031339#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031340 Result createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31341#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31342 ResultValueType<SurfaceKHR>::type createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31343#ifndef VULKAN_HPP_NO_SMART_HANDLE
31344 UniqueSurfaceKHR createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31345#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31346#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031347#endif /*VK_USE_PLATFORM_WIN32_KHR*/
31348
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031349#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031350 Result createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31351#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31352 ResultValueType<SurfaceKHR>::type createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31353#ifndef VULKAN_HPP_NO_SMART_HANDLE
31354 UniqueSurfaceKHR createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31355#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31356#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031357#endif /*VK_USE_PLATFORM_XLIB_KHR*/
31358
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031359#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031360 Result createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31361#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31362 ResultValueType<SurfaceKHR>::type createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31363#ifndef VULKAN_HPP_NO_SMART_HANDLE
31364 UniqueSurfaceKHR createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31365#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31366#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031367#endif /*VK_USE_PLATFORM_XCB_KHR*/
31368
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031369 Result createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031370#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031371 ResultValueType<DebugReportCallbackEXT>::type createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31372#ifndef VULKAN_HPP_NO_SMART_HANDLE
31373 UniqueDebugReportCallbackEXT createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31374#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031375#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31376
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031377 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031378#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031379 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031380#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31381
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031382 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 -060031383#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031384 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 -060031385#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31386
Mark Young0f183a82017-02-28 09:58:04 -070031387 Result enumeratePhysicalDeviceGroupsKHX( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ) const;
31388#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31389 template <typename Allocator = std::allocator<PhysicalDeviceGroupPropertiesKHX>>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031390 typename ResultValueType<std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator>>::type enumeratePhysicalDeviceGroupsKHX(Allocator const & alloc = Allocator() ) const;
Mark Young0f183a82017-02-28 09:58:04 -070031391#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31392
31393#ifdef VK_USE_PLATFORM_IOS_MVK
31394 Result createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31395#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31396 ResultValueType<SurfaceKHR>::type createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31397#ifndef VULKAN_HPP_NO_SMART_HANDLE
31398 UniqueSurfaceKHR createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31399#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31400#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31401#endif /*VK_USE_PLATFORM_IOS_MVK*/
31402
31403#ifdef VK_USE_PLATFORM_MACOS_MVK
31404 Result createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31405#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31406 ResultValueType<SurfaceKHR>::type createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31407#ifndef VULKAN_HPP_NO_SMART_HANDLE
31408 UniqueSurfaceKHR createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31409#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31410#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31411#endif /*VK_USE_PLATFORM_MACOS_MVK*/
31412
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031413
31414
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070031415 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkInstance() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031416 {
31417 return m_instance;
31418 }
31419
31420 explicit operator bool() const
31421 {
31422 return m_instance != VK_NULL_HANDLE;
31423 }
31424
31425 bool operator!() const
31426 {
31427 return m_instance == VK_NULL_HANDLE;
31428 }
31429
31430 private:
31431 VkInstance m_instance;
31432 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031433
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031434 static_assert( sizeof( Instance ) == sizeof( VkInstance ), "handle and wrapper have different size!" );
31435
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031436#ifndef VULKAN_HPP_NO_SMART_HANDLE
31437 class DebugReportCallbackEXTDeleter
31438 {
31439 public:
31440 DebugReportCallbackEXTDeleter( Instance instance = Instance(), Optional<const AllocationCallbacks> allocator = nullptr )
31441 : m_instance( instance )
31442 , m_allocator( allocator )
31443 {}
31444
31445 void operator()( DebugReportCallbackEXT debugReportCallbackEXT )
31446 {
31447 m_instance.destroyDebugReportCallbackEXT( debugReportCallbackEXT, m_allocator );
31448 }
31449
31450 private:
31451 Instance m_instance;
31452 Optional<const AllocationCallbacks> m_allocator;
31453 };
31454
31455 class SurfaceKHRDeleter
31456 {
31457 public:
31458 SurfaceKHRDeleter( Instance instance = Instance(), Optional<const AllocationCallbacks> allocator = nullptr )
31459 : m_instance( instance )
31460 , m_allocator( allocator )
31461 {}
31462
31463 void operator()( SurfaceKHR surfaceKHR )
31464 {
31465 m_instance.destroySurfaceKHR( surfaceKHR, m_allocator );
31466 }
31467
31468 private:
31469 Instance m_instance;
31470 Optional<const AllocationCallbacks> m_allocator;
31471 };
31472#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31473
31474 VULKAN_HPP_INLINE void Instance::destroy( const AllocationCallbacks* pAllocator ) const
31475 {
31476 vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
31477 }
31478#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31479 VULKAN_HPP_INLINE void Instance::destroy( Optional<const AllocationCallbacks> allocator ) const
31480 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031481 vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031482 }
31483#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31484
31485 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices ) const
31486 {
31487 return static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, pPhysicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( pPhysicalDevices ) ) );
31488 }
31489#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31490 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031491 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type Instance::enumeratePhysicalDevices(Allocator const & alloc ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031492 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031493 std::vector<PhysicalDevice,Allocator> physicalDevices( {alloc} );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031494 uint32_t physicalDeviceCount;
31495 Result result;
31496 do
31497 {
31498 result = static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, nullptr ) );
31499 if ( ( result == Result::eSuccess ) && physicalDeviceCount )
31500 {
31501 physicalDevices.resize( physicalDeviceCount );
31502 result = static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( physicalDevices.data() ) ) );
31503 }
31504 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031505 assert( physicalDeviceCount <= physicalDevices.size() );
31506 physicalDevices.resize( physicalDeviceCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031507 return createResultValue( result, physicalDevices, "VULKAN_HPP_NAMESPACE::Instance::enumeratePhysicalDevices" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031508 }
31509#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31510
31511 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const char* pName ) const
31512 {
31513 return vkGetInstanceProcAddr( m_instance, pName );
31514 }
31515#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31516 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const std::string & name ) const
31517 {
31518 return vkGetInstanceProcAddr( m_instance, name.c_str() );
31519 }
31520#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31521
31522#ifdef VK_USE_PLATFORM_ANDROID_KHR
31523 VULKAN_HPP_INLINE Result Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31524 {
31525 return static_cast<Result>( vkCreateAndroidSurfaceKHR( m_instance, reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31526 }
31527#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31528 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31529 {
31530 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031531 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 -060031532 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createAndroidSurfaceKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031533 }
31534#ifndef VULKAN_HPP_NO_SMART_HANDLE
31535 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31536 {
31537 SurfaceKHRDeleter deleter( *this, allocator );
31538 return UniqueSurfaceKHR( createAndroidSurfaceKHR( createInfo, allocator ), deleter );
31539 }
31540#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31541#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31542#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
31543
31544 VULKAN_HPP_INLINE Result Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31545 {
31546 return static_cast<Result>( vkCreateDisplayPlaneSurfaceKHR( m_instance, reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31547 }
31548#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31549 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31550 {
31551 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031552 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 -060031553 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createDisplayPlaneSurfaceKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031554 }
31555#ifndef VULKAN_HPP_NO_SMART_HANDLE
31556 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31557 {
31558 SurfaceKHRDeleter deleter( *this, allocator );
31559 return UniqueSurfaceKHR( createDisplayPlaneSurfaceKHR( createInfo, allocator ), deleter );
31560 }
31561#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31562#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31563
31564#ifdef VK_USE_PLATFORM_MIR_KHR
31565 VULKAN_HPP_INLINE Result Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31566 {
31567 return static_cast<Result>( vkCreateMirSurfaceKHR( m_instance, reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31568 }
31569#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31570 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31571 {
31572 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031573 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 -060031574 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createMirSurfaceKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031575 }
31576#ifndef VULKAN_HPP_NO_SMART_HANDLE
31577 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31578 {
31579 SurfaceKHRDeleter deleter( *this, allocator );
31580 return UniqueSurfaceKHR( createMirSurfaceKHR( createInfo, allocator ), deleter );
31581 }
31582#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31583#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31584#endif /*VK_USE_PLATFORM_MIR_KHR*/
31585
31586 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator ) const
31587 {
31588 vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
31589 }
31590#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31591 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator ) const
31592 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031593 vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031594 }
31595#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31596
31597#ifdef VK_USE_PLATFORM_VI_NN
31598 VULKAN_HPP_INLINE Result Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31599 {
31600 return static_cast<Result>( vkCreateViSurfaceNN( m_instance, reinterpret_cast<const VkViSurfaceCreateInfoNN*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31601 }
31602#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31603 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator ) const
31604 {
31605 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031606 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 -060031607 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createViSurfaceNN" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031608 }
31609#ifndef VULKAN_HPP_NO_SMART_HANDLE
31610 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator ) const
31611 {
31612 SurfaceKHRDeleter deleter( *this, allocator );
31613 return UniqueSurfaceKHR( createViSurfaceNN( createInfo, allocator ), deleter );
31614 }
31615#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31616#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31617#endif /*VK_USE_PLATFORM_VI_NN*/
31618
31619#ifdef VK_USE_PLATFORM_WAYLAND_KHR
31620 VULKAN_HPP_INLINE Result Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31621 {
31622 return static_cast<Result>( vkCreateWaylandSurfaceKHR( m_instance, reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31623 }
31624#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31625 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31626 {
31627 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031628 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 -060031629 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createWaylandSurfaceKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031630 }
31631#ifndef VULKAN_HPP_NO_SMART_HANDLE
31632 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31633 {
31634 SurfaceKHRDeleter deleter( *this, allocator );
31635 return UniqueSurfaceKHR( createWaylandSurfaceKHR( createInfo, allocator ), deleter );
31636 }
31637#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31638#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31639#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
31640
31641#ifdef VK_USE_PLATFORM_WIN32_KHR
31642 VULKAN_HPP_INLINE Result Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31643 {
31644 return static_cast<Result>( vkCreateWin32SurfaceKHR( m_instance, reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31645 }
31646#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31647 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31648 {
31649 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031650 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 -060031651 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createWin32SurfaceKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031652 }
31653#ifndef VULKAN_HPP_NO_SMART_HANDLE
31654 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31655 {
31656 SurfaceKHRDeleter deleter( *this, allocator );
31657 return UniqueSurfaceKHR( createWin32SurfaceKHR( createInfo, allocator ), deleter );
31658 }
31659#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31660#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31661#endif /*VK_USE_PLATFORM_WIN32_KHR*/
31662
31663#ifdef VK_USE_PLATFORM_XLIB_KHR
31664 VULKAN_HPP_INLINE Result Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31665 {
31666 return static_cast<Result>( vkCreateXlibSurfaceKHR( m_instance, reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31667 }
31668#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31669 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31670 {
31671 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031672 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 -060031673 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createXlibSurfaceKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031674 }
31675#ifndef VULKAN_HPP_NO_SMART_HANDLE
31676 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31677 {
31678 SurfaceKHRDeleter deleter( *this, allocator );
31679 return UniqueSurfaceKHR( createXlibSurfaceKHR( createInfo, allocator ), deleter );
31680 }
31681#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31682#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31683#endif /*VK_USE_PLATFORM_XLIB_KHR*/
31684
31685#ifdef VK_USE_PLATFORM_XCB_KHR
31686 VULKAN_HPP_INLINE Result Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31687 {
31688 return static_cast<Result>( vkCreateXcbSurfaceKHR( m_instance, reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31689 }
31690#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31691 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31692 {
31693 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031694 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 -060031695 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createXcbSurfaceKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031696 }
31697#ifndef VULKAN_HPP_NO_SMART_HANDLE
31698 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31699 {
31700 SurfaceKHRDeleter deleter( *this, allocator );
31701 return UniqueSurfaceKHR( createXcbSurfaceKHR( createInfo, allocator ), deleter );
31702 }
31703#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31704#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31705#endif /*VK_USE_PLATFORM_XCB_KHR*/
31706
31707 VULKAN_HPP_INLINE Result Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback ) const
31708 {
31709 return static_cast<Result>( vkCreateDebugReportCallbackEXT( m_instance, reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDebugReportCallbackEXT*>( pCallback ) ) );
31710 }
31711#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31712 VULKAN_HPP_INLINE ResultValueType<DebugReportCallbackEXT>::type Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
31713 {
31714 DebugReportCallbackEXT callback;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031715 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 -060031716 return createResultValue( result, callback, "VULKAN_HPP_NAMESPACE::Instance::createDebugReportCallbackEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031717 }
31718#ifndef VULKAN_HPP_NO_SMART_HANDLE
31719 VULKAN_HPP_INLINE UniqueDebugReportCallbackEXT Instance::createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
31720 {
31721 DebugReportCallbackEXTDeleter deleter( *this, allocator );
31722 return UniqueDebugReportCallbackEXT( createDebugReportCallbackEXT( createInfo, allocator ), deleter );
31723 }
31724#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31725#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31726
31727 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator ) const
31728 {
31729 vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
31730 }
31731#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31732 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator ) const
31733 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031734 vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031735 }
31736#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31737
31738 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
31739 {
31740 vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, pLayerPrefix, pMessage );
31741 }
31742#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31743 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
31744 {
31745#ifdef VULKAN_HPP_NO_EXCEPTIONS
31746 assert( layerPrefix.size() == message.size() );
31747#else
31748 if ( layerPrefix.size() != message.size() )
31749 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031750 throw LogicError( "VULKAN_HPP_NAMESPACE::Instance::debugReportMessageEXT: layerPrefix.size() != message.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031751 }
31752#endif // VULKAN_HPP_NO_EXCEPTIONS
31753 vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, layerPrefix.c_str(), message.c_str() );
31754 }
31755#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070031756
31757 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDeviceGroupsKHX( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ) const
Lenny Komow68432d72016-09-29 14:16:59 -060031758 {
Mark Young0f183a82017-02-28 09:58:04 -070031759 return static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, pPhysicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupPropertiesKHX*>( pPhysicalDeviceGroupProperties ) ) );
31760 }
31761#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31762 template <typename Allocator>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031763 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator>>::type Instance::enumeratePhysicalDeviceGroupsKHX(Allocator const & alloc ) const
Mark Young0f183a82017-02-28 09:58:04 -070031764 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031765 std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator> physicalDeviceGroupProperties( {alloc} );
Mark Young0f183a82017-02-28 09:58:04 -070031766 uint32_t physicalDeviceGroupCount;
31767 Result result;
31768 do
31769 {
31770 result = static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, &physicalDeviceGroupCount, nullptr ) );
31771 if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount )
31772 {
31773 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
31774 result = static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, &physicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupPropertiesKHX*>( physicalDeviceGroupProperties.data() ) ) );
31775 }
31776 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031777 assert( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() );
31778 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031779 return createResultValue( result, physicalDeviceGroupProperties, "VULKAN_HPP_NAMESPACE::Instance::enumeratePhysicalDeviceGroupsKHX" );
Mark Young0f183a82017-02-28 09:58:04 -070031780 }
31781#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31782
31783#ifdef VK_USE_PLATFORM_IOS_MVK
31784 VULKAN_HPP_INLINE Result Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31785 {
31786 return static_cast<Result>( vkCreateIOSSurfaceMVK( m_instance, reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31787 }
31788#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31789 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
31790 {
31791 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031792 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 -060031793 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createIOSSurfaceMVK" );
Mark Young0f183a82017-02-28 09:58:04 -070031794 }
31795#ifndef VULKAN_HPP_NO_SMART_HANDLE
31796 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
31797 {
31798 SurfaceKHRDeleter deleter( *this, allocator );
31799 return UniqueSurfaceKHR( createIOSSurfaceMVK( createInfo, allocator ), deleter );
31800 }
31801#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31802#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31803#endif /*VK_USE_PLATFORM_IOS_MVK*/
31804
31805#ifdef VK_USE_PLATFORM_MACOS_MVK
31806 VULKAN_HPP_INLINE Result Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31807 {
31808 return static_cast<Result>( vkCreateMacOSSurfaceMVK( m_instance, reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31809 }
31810#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31811 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
31812 {
31813 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031814 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 -060031815 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createMacOSSurfaceMVK" );
Mark Young0f183a82017-02-28 09:58:04 -070031816 }
31817#ifndef VULKAN_HPP_NO_SMART_HANDLE
31818 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
31819 {
31820 SurfaceKHRDeleter deleter( *this, allocator );
31821 return UniqueSurfaceKHR( createMacOSSurfaceMVK( createInfo, allocator ), deleter );
31822 }
31823#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31824#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31825#endif /*VK_USE_PLATFORM_MACOS_MVK*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031826
Mark Young0f183a82017-02-28 09:58:04 -070031827 struct DeviceGroupDeviceCreateInfoKHX
31828 {
31829 DeviceGroupDeviceCreateInfoKHX( uint32_t physicalDeviceCount_ = 0, const PhysicalDevice* pPhysicalDevices_ = nullptr )
31830 : sType( StructureType::eDeviceGroupDeviceCreateInfoKHX )
Lenny Komow68432d72016-09-29 14:16:59 -060031831 , pNext( nullptr )
Mark Young0f183a82017-02-28 09:58:04 -070031832 , physicalDeviceCount( physicalDeviceCount_ )
31833 , pPhysicalDevices( pPhysicalDevices_ )
Lenny Komow68432d72016-09-29 14:16:59 -060031834 {
31835 }
31836
Mark Young0f183a82017-02-28 09:58:04 -070031837 DeviceGroupDeviceCreateInfoKHX( VkDeviceGroupDeviceCreateInfoKHX const & rhs )
Lenny Komow68432d72016-09-29 14:16:59 -060031838 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031839 memcpy( this, &rhs, sizeof( DeviceGroupDeviceCreateInfoKHX ) );
Lenny Komow68432d72016-09-29 14:16:59 -060031840 }
31841
Mark Young0f183a82017-02-28 09:58:04 -070031842 DeviceGroupDeviceCreateInfoKHX& operator=( VkDeviceGroupDeviceCreateInfoKHX const & rhs )
Lenny Komow68432d72016-09-29 14:16:59 -060031843 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031844 memcpy( this, &rhs, sizeof( DeviceGroupDeviceCreateInfoKHX ) );
Lenny Komow68432d72016-09-29 14:16:59 -060031845 return *this;
31846 }
Mark Young0f183a82017-02-28 09:58:04 -070031847 DeviceGroupDeviceCreateInfoKHX& setPNext( const void* pNext_ )
Lenny Komow68432d72016-09-29 14:16:59 -060031848 {
31849 pNext = pNext_;
31850 return *this;
31851 }
31852
Mark Young0f183a82017-02-28 09:58:04 -070031853 DeviceGroupDeviceCreateInfoKHX& setPhysicalDeviceCount( uint32_t physicalDeviceCount_ )
Lenny Komow68432d72016-09-29 14:16:59 -060031854 {
Mark Young0f183a82017-02-28 09:58:04 -070031855 physicalDeviceCount = physicalDeviceCount_;
Lenny Komow68432d72016-09-29 14:16:59 -060031856 return *this;
31857 }
31858
Mark Young0f183a82017-02-28 09:58:04 -070031859 DeviceGroupDeviceCreateInfoKHX& setPPhysicalDevices( const PhysicalDevice* pPhysicalDevices_ )
Lenny Komow68432d72016-09-29 14:16:59 -060031860 {
Mark Young0f183a82017-02-28 09:58:04 -070031861 pPhysicalDevices = pPhysicalDevices_;
Lenny Komow68432d72016-09-29 14:16:59 -060031862 return *this;
31863 }
31864
Mark Young0f183a82017-02-28 09:58:04 -070031865 operator const VkDeviceGroupDeviceCreateInfoKHX&() const
Lenny Komow68432d72016-09-29 14:16:59 -060031866 {
Mark Young0f183a82017-02-28 09:58:04 -070031867 return *reinterpret_cast<const VkDeviceGroupDeviceCreateInfoKHX*>(this);
Lenny Komow68432d72016-09-29 14:16:59 -060031868 }
31869
Mark Young0f183a82017-02-28 09:58:04 -070031870 bool operator==( DeviceGroupDeviceCreateInfoKHX const& rhs ) const
Lenny Komow68432d72016-09-29 14:16:59 -060031871 {
31872 return ( sType == rhs.sType )
31873 && ( pNext == rhs.pNext )
Mark Young0f183a82017-02-28 09:58:04 -070031874 && ( physicalDeviceCount == rhs.physicalDeviceCount )
31875 && ( pPhysicalDevices == rhs.pPhysicalDevices );
Lenny Komow68432d72016-09-29 14:16:59 -060031876 }
31877
Mark Young0f183a82017-02-28 09:58:04 -070031878 bool operator!=( DeviceGroupDeviceCreateInfoKHX const& rhs ) const
Lenny Komow68432d72016-09-29 14:16:59 -060031879 {
31880 return !operator==( rhs );
31881 }
31882
31883 private:
31884 StructureType sType;
31885
31886 public:
31887 const void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070031888 uint32_t physicalDeviceCount;
31889 const PhysicalDevice* pPhysicalDevices;
Lenny Komow68432d72016-09-29 14:16:59 -060031890 };
Mark Young0f183a82017-02-28 09:58:04 -070031891 static_assert( sizeof( DeviceGroupDeviceCreateInfoKHX ) == sizeof( VkDeviceGroupDeviceCreateInfoKHX ), "struct and wrapper have different size!" );
Lenny Komow68432d72016-09-29 14:16:59 -060031892
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031893#ifndef VULKAN_HPP_NO_SMART_HANDLE
31894 class InstanceDeleter;
31895 using UniqueInstance = UniqueHandle<Instance, InstanceDeleter>;
31896#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31897
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031898 Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031899#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031900 ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031901#ifndef VULKAN_HPP_NO_SMART_HANDLE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031902 UniqueInstance createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031903#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31904#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31905
31906#ifndef VULKAN_HPP_NO_SMART_HANDLE
31907 class InstanceDeleter
31908 {
31909 public:
31910 InstanceDeleter( Optional<const AllocationCallbacks> allocator = nullptr )
31911 : m_allocator( allocator )
31912 {}
31913
31914 void operator()( Instance instance )
31915 {
31916 instance.destroy( m_allocator );
31917 }
31918
31919 private:
31920 Optional<const AllocationCallbacks> m_allocator;
31921 };
31922#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31923
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031924 VULKAN_HPP_INLINE Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031925 {
31926 return static_cast<Result>( vkCreateInstance( reinterpret_cast<const VkInstanceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkInstance*>( pInstance ) ) );
31927 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031928#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031929 VULKAN_HPP_INLINE ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031930 {
31931 Instance instance;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031932 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 -060031933 return createResultValue( result, instance, "VULKAN_HPP_NAMESPACE::createInstance" );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031934 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031935#ifndef VULKAN_HPP_NO_SMART_HANDLE
31936 VULKAN_HPP_INLINE UniqueInstance createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator )
31937 {
31938 InstanceDeleter deleter( allocator );
31939 return UniqueInstance( createInstance( createInfo, allocator ), deleter );
31940 }
31941#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031942#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31943
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031944
Mike Schuchardt2ece4b72017-09-19 15:00:40 -060031945 template <> constexpr bool isStructureChainValid<PresentInfoKHR, DisplayPresentInfoKHR>() { return true; }
31946 template <> constexpr bool isStructureChainValid<ImageCreateInfo, DedicatedAllocationImageCreateInfoNV>() { return true; }
31947 template <> constexpr bool isStructureChainValid<BufferCreateInfo, DedicatedAllocationBufferCreateInfoNV>() { return true; }
31948 template <> constexpr bool isStructureChainValid<MemoryAllocateInfo, DedicatedAllocationMemoryAllocateInfoNV>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031949#ifdef VK_USE_PLATFORM_WIN32_KHR
Mike Schuchardt2ece4b72017-09-19 15:00:40 -060031950 template <> constexpr bool isStructureChainValid<MemoryAllocateInfo, ExportMemoryWin32HandleInfoNV>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031951#endif /*VK_USE_PLATFORM_WIN32_KHR*/
31952#ifdef VK_USE_PLATFORM_WIN32_KHR
Mike Schuchardt2ece4b72017-09-19 15:00:40 -060031953 template <> constexpr bool isStructureChainValid<SubmitInfo, Win32KeyedMutexAcquireReleaseInfoNV>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031954#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mike Schuchardt2ece4b72017-09-19 15:00:40 -060031955 template <> constexpr bool isStructureChainValid<DeviceCreateInfo, PhysicalDeviceFeatures2KHR>() { return true; }
31956 template <> constexpr bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDevicePushDescriptorPropertiesKHR>() { return true; }
31957 template <> constexpr bool isStructureChainValid<PresentInfoKHR, PresentRegionsKHR>() { return true; }
31958 template <> constexpr bool isStructureChainValid<PhysicalDeviceFeatures2KHR, PhysicalDeviceVariablePointerFeaturesKHR>() { return true; }
31959 template <> constexpr bool isStructureChainValid<DeviceCreateInfo, PhysicalDeviceVariablePointerFeaturesKHR>() { return true; }
31960 template <> constexpr bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceIDPropertiesKHR>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031961#ifdef VK_USE_PLATFORM_WIN32_KHR
Mike Schuchardt2ece4b72017-09-19 15:00:40 -060031962 template <> constexpr bool isStructureChainValid<MemoryAllocateInfo, ExportMemoryWin32HandleInfoKHR>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031963#endif /*VK_USE_PLATFORM_WIN32_KHR*/
31964#ifdef VK_USE_PLATFORM_WIN32_KHR
Mike Schuchardt2ece4b72017-09-19 15:00:40 -060031965 template <> constexpr bool isStructureChainValid<SubmitInfo, Win32KeyedMutexAcquireReleaseInfoKHR>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031966#endif /*VK_USE_PLATFORM_WIN32_KHR*/
31967#ifdef VK_USE_PLATFORM_WIN32_KHR
Mike Schuchardt2ece4b72017-09-19 15:00:40 -060031968 template <> constexpr bool isStructureChainValid<SemaphoreCreateInfo, ExportSemaphoreWin32HandleInfoKHR>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031969#endif /*VK_USE_PLATFORM_WIN32_KHR*/
31970#ifdef VK_USE_PLATFORM_WIN32_KHR
Mike Schuchardt2ece4b72017-09-19 15:00:40 -060031971 template <> constexpr bool isStructureChainValid<SubmitInfo, D3D12FenceSubmitInfoKHR>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031972#endif /*VK_USE_PLATFORM_WIN32_KHR*/
31973#ifdef VK_USE_PLATFORM_WIN32_KHR
Mike Schuchardt2ece4b72017-09-19 15:00:40 -060031974 template <> constexpr bool isStructureChainValid<FenceCreateInfo, ExportFenceWin32HandleInfoKHR>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031975#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mike Schuchardt2ece4b72017-09-19 15:00:40 -060031976 template <> constexpr bool isStructureChainValid<PhysicalDeviceFeatures2KHR, PhysicalDeviceMultiviewFeaturesKHX>() { return true; }
31977 template <> constexpr bool isStructureChainValid<DeviceCreateInfo, PhysicalDeviceMultiviewFeaturesKHX>() { return true; }
31978 template <> constexpr bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceMultiviewPropertiesKHX>() { return true; }
31979 template <> constexpr bool isStructureChainValid<RenderPassCreateInfo, RenderPassMultiviewCreateInfoKHX>() { return true; }
31980 template <> constexpr bool isStructureChainValid<BindBufferMemoryInfoKHR, BindBufferMemoryDeviceGroupInfoKHX>() { return true; }
31981 template <> constexpr bool isStructureChainValid<BindImageMemoryInfoKHR, BindImageMemoryDeviceGroupInfoKHX>() { return true; }
31982 template <> constexpr bool isStructureChainValid<RenderPassBeginInfo, DeviceGroupRenderPassBeginInfoKHX>() { return true; }
31983 template <> constexpr bool isStructureChainValid<CommandBufferBeginInfo, DeviceGroupCommandBufferBeginInfoKHX>() { return true; }
31984 template <> constexpr bool isStructureChainValid<SubmitInfo, DeviceGroupSubmitInfoKHX>() { return true; }
31985 template <> constexpr bool isStructureChainValid<BindSparseInfo, DeviceGroupBindSparseInfoKHX>() { return true; }
31986 template <> constexpr bool isStructureChainValid<ImageCreateInfo, ImageSwapchainCreateInfoKHX>() { return true; }
31987 template <> constexpr bool isStructureChainValid<BindImageMemoryInfoKHR, BindImageMemorySwapchainInfoKHX>() { return true; }
31988 template <> constexpr bool isStructureChainValid<PresentInfoKHR, PresentTimesInfoGOOGLE>() { return true; }
31989 template <> constexpr bool isStructureChainValid<PipelineViewportStateCreateInfo, PipelineViewportWScalingStateCreateInfoNV>() { return true; }
31990 template <> constexpr bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceDiscardRectanglePropertiesEXT>() { return true; }
31991 template <> constexpr bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX>() { return true; }
31992 template <> constexpr bool isStructureChainValid<PhysicalDeviceFeatures2KHR, PhysicalDevice16BitStorageFeaturesKHR>() { return true; }
31993 template <> constexpr bool isStructureChainValid<DeviceCreateInfo, PhysicalDevice16BitStorageFeaturesKHR>() { return true; }
31994 template <> constexpr bool isStructureChainValid<MemoryRequirements2KHR, MemoryDedicatedRequirementsKHR>() { return true; }
31995 template <> constexpr bool isStructureChainValid<MemoryAllocateInfo, MemoryDedicatedAllocateInfoKHR>() { return true; }
31996 template <> constexpr bool isStructureChainValid<SamplerCreateInfo, SamplerYcbcrConversionInfoKHR>() { return true; }
31997 template <> constexpr bool isStructureChainValid<ImageViewCreateInfo, SamplerYcbcrConversionInfoKHR>() { return true; }
31998 template <> constexpr bool isStructureChainValid<PhysicalDeviceFeatures2KHR, PhysicalDeviceSamplerYcbcrConversionFeaturesKHR>() { return true; }
31999 template <> constexpr bool isStructureChainValid<DeviceCreateInfo, PhysicalDeviceSamplerYcbcrConversionFeaturesKHR>() { return true; }
32000 template <> constexpr bool isStructureChainValid<ImageFormatProperties2KHR, SamplerYcbcrConversionImageFormatPropertiesKHR>() { return true; }
32001 template <> constexpr bool isStructureChainValid<ImageFormatProperties2KHR, TextureLODGatherFormatPropertiesAMD>() { return true; }
32002 template <> constexpr bool isStructureChainValid<PipelineMultisampleStateCreateInfo, PipelineCoverageToColorStateCreateInfoNV>() { return true; }
32003 template <> constexpr bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceSamplerFilterMinmaxPropertiesEXT>() { return true; }
32004 template <> constexpr bool isStructureChainValid<PhysicalDeviceFeatures2KHR, PhysicalDeviceBlendOperationAdvancedFeaturesEXT>() { return true; }
32005 template <> constexpr bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceBlendOperationAdvancedPropertiesEXT>() { return true; }
32006 template <> constexpr bool isStructureChainValid<ImageCreateInfo, ImageFormatListCreateInfoKHR>() { return true; }
32007 template <> constexpr bool isStructureChainValid<ShaderModuleCreateInfo, ShaderModuleValidationCacheCreateInfoEXT>() { return true; }
32008 template <> constexpr bool isStructureChainValid<SurfaceCapabilities2KHR, SharedPresentSurfaceCapabilitiesKHR>() { return true; }
32009 template <> constexpr bool isStructureChainValid<ImageViewCreateInfo, ImageViewUsageCreateInfoKHR>() { return true; }
32010 template <> constexpr bool isStructureChainValid<RenderPassCreateInfo, RenderPassInputAttachmentAspectCreateInfoKHR>() { return true; }
32011 template <> constexpr bool isStructureChainValid<BindImageMemoryInfoKHR, BindImagePlaneMemoryInfoKHR>() { return true; }
32012 template <> constexpr bool isStructureChainValid<ImageMemoryRequirementsInfo2KHR, ImagePlaneMemoryRequirementsInfoKHR>() { return true; }
32013 template <> constexpr bool isStructureChainValid<ImageMemoryBarrier, SampleLocationsInfoEXT>() { return true; }
32014 template <> constexpr bool isStructureChainValid<RenderPassBeginInfo, RenderPassSampleLocationsBeginInfoEXT>() { return true; }
32015 template <> constexpr bool isStructureChainValid<PipelineMultisampleStateCreateInfo, PipelineSampleLocationsStateCreateInfoEXT>() { return true; }
32016 template <> constexpr bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceSampleLocationsPropertiesEXT>() { return true; }
32017 template <> constexpr bool isStructureChainValid<InstanceCreateInfo, DebugReportCallbackCreateInfoEXT>() { return true; }
32018 template <> constexpr bool isStructureChainValid<PipelineRasterizationStateCreateInfo, PipelineRasterizationStateRasterizationOrderAMD>() { return true; }
32019 template <> constexpr bool isStructureChainValid<ImageCreateInfo, ExternalMemoryImageCreateInfoNV>() { return true; }
32020 template <> constexpr bool isStructureChainValid<MemoryAllocateInfo, ExportMemoryAllocateInfoNV>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032021#ifdef VK_USE_PLATFORM_WIN32_KHR
Mike Schuchardt2ece4b72017-09-19 15:00:40 -060032022 template <> constexpr bool isStructureChainValid<MemoryAllocateInfo, ImportMemoryWin32HandleInfoNV>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032023#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mike Schuchardt2ece4b72017-09-19 15:00:40 -060032024 template <> constexpr bool isStructureChainValid<InstanceCreateInfo, ValidationFlagsEXT>() { return true; }
32025 template <> constexpr bool isStructureChainValid<PhysicalDeviceImageFormatInfo2KHR, PhysicalDeviceExternalImageFormatInfoKHR>() { return true; }
32026 template <> constexpr bool isStructureChainValid<ImageCreateInfo, ExternalMemoryImageCreateInfoKHR>() { return true; }
32027 template <> constexpr bool isStructureChainValid<BufferCreateInfo, ExternalMemoryBufferCreateInfoKHR>() { return true; }
32028 template <> constexpr bool isStructureChainValid<MemoryAllocateInfo, ExportMemoryAllocateInfoKHR>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032029#ifdef VK_USE_PLATFORM_WIN32_KHR
Mike Schuchardt2ece4b72017-09-19 15:00:40 -060032030 template <> constexpr bool isStructureChainValid<MemoryAllocateInfo, ImportMemoryWin32HandleInfoKHR>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032031#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mike Schuchardt2ece4b72017-09-19 15:00:40 -060032032 template <> constexpr bool isStructureChainValid<MemoryAllocateInfo, ImportMemoryFdInfoKHR>() { return true; }
32033 template <> constexpr bool isStructureChainValid<ImageFormatProperties2KHR, ExternalImageFormatPropertiesKHR>() { return true; }
32034 template <> constexpr bool isStructureChainValid<SemaphoreCreateInfo, ExportSemaphoreCreateInfoKHR>() { return true; }
32035 template <> constexpr bool isStructureChainValid<FenceCreateInfo, ExportFenceCreateInfoKHR>() { return true; }
32036 template <> constexpr bool isStructureChainValid<SwapchainCreateInfoKHR, SwapchainCounterCreateInfoEXT>() { return true; }
32037 template <> constexpr bool isStructureChainValid<MemoryAllocateInfo, MemoryAllocateFlagsInfoKHX>() { return true; }
32038 template <> constexpr bool isStructureChainValid<PresentInfoKHR, DeviceGroupPresentInfoKHX>() { return true; }
32039 template <> constexpr bool isStructureChainValid<SwapchainCreateInfoKHR, DeviceGroupSwapchainCreateInfoKHX>() { return true; }
32040 template <> constexpr bool isStructureChainValid<PipelineViewportStateCreateInfo, PipelineViewportSwizzleStateCreateInfoNV>() { return true; }
32041 template <> constexpr bool isStructureChainValid<GraphicsPipelineCreateInfo, PipelineDiscardRectangleStateCreateInfoEXT>() { return true; }
32042 template <> constexpr bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDevicePointClippingPropertiesKHR>() { return true; }
32043 template <> constexpr bool isStructureChainValid<SamplerCreateInfo, SamplerReductionModeCreateInfoEXT>() { return true; }
32044 template <> constexpr bool isStructureChainValid<PipelineTessellationStateCreateInfo, PipelineTessellationDomainOriginStateCreateInfoKHR>() { return true; }
32045 template <> constexpr bool isStructureChainValid<PipelineColorBlendStateCreateInfo, PipelineColorBlendAdvancedStateCreateInfoEXT>() { return true; }
32046 template <> constexpr bool isStructureChainValid<PipelineMultisampleStateCreateInfo, PipelineCoverageModulationStateCreateInfoNV>() { return true; }
32047 template <> constexpr bool isStructureChainValid<DeviceCreateInfo, DeviceGroupDeviceCreateInfoKHX>() { return true; }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032048 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032049 {
32050 return "(void)";
32051 }
32052
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032053 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032054 {
32055 return "{}";
32056 }
32057
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032058 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032059 {
32060 return "(void)";
32061 }
32062
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032063 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032064 {
32065 return "{}";
32066 }
32067
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032068 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032069 {
32070 return "(void)";
32071 }
32072
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032073 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032074 {
32075 return "{}";
32076 }
32077
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032078 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032079 {
32080 return "(void)";
32081 }
32082
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032083 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032084 {
32085 return "{}";
32086 }
32087
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032088 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032089 {
32090 return "(void)";
32091 }
32092
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032093 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032094 {
32095 return "{}";
32096 }
32097
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032098 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032099 {
32100 return "(void)";
32101 }
32102
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032103 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032104 {
32105 return "{}";
32106 }
32107
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032108 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032109 {
32110 return "(void)";
32111 }
32112
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032113 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032114 {
32115 return "{}";
32116 }
32117
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032118 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032119 {
32120 return "(void)";
32121 }
32122
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032123 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032124 {
32125 return "{}";
32126 }
32127
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032128 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032129 {
32130 return "(void)";
32131 }
32132
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032133 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032134 {
32135 return "{}";
32136 }
32137
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032138 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032139 {
32140 return "(void)";
32141 }
32142
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032143 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032144 {
32145 return "{}";
32146 }
32147
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032148 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032149 {
32150 return "(void)";
32151 }
32152
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032153 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032154 {
32155 return "{}";
32156 }
32157
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032158 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032159 {
32160 return "(void)";
32161 }
32162
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032163 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032164 {
32165 return "{}";
32166 }
32167
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032168 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032169 {
32170 return "(void)";
32171 }
32172
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032173 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032174 {
32175 return "{}";
32176 }
32177
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032178 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032179 {
32180 return "(void)";
32181 }
32182
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032183 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032184 {
32185 return "{}";
32186 }
32187
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032188 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032189 {
32190 return "(void)";
32191 }
32192
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032193 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032194 {
32195 return "{}";
32196 }
32197
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032198 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032199 {
32200 return "(void)";
32201 }
32202
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032203 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032204 {
32205 return "{}";
32206 }
32207
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032208 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032209 {
32210 return "(void)";
32211 }
32212
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032213 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032214 {
32215 return "{}";
32216 }
32217
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032218 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032219 {
32220 return "(void)";
32221 }
32222
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032223 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032224 {
32225 return "{}";
32226 }
32227
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032228 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032229 {
32230 return "(void)";
32231 }
32232
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032233 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032234 {
32235 return "{}";
32236 }
32237
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032238 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032239 {
32240 return "(void)";
32241 }
32242
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032243 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032244 {
32245 return "{}";
32246 }
32247
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032248 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032249 {
32250 return "(void)";
32251 }
32252
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032253 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032254 {
32255 return "{}";
32256 }
32257
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032258 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032259 {
32260 return "(void)";
32261 }
32262
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032263 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032264 {
32265 return "{}";
32266 }
32267
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032268 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032269 {
32270 return "(void)";
32271 }
32272
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032273 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032274 {
32275 return "{}";
32276 }
32277
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032278 VULKAN_HPP_INLINE std::string to_string(EventCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032279 {
32280 return "(void)";
32281 }
32282
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032283 VULKAN_HPP_INLINE std::string to_string(EventCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032284 {
32285 return "{}";
32286 }
32287
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032288 VULKAN_HPP_INLINE std::string to_string(MemoryMapFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032289 {
32290 return "(void)";
32291 }
32292
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032293 VULKAN_HPP_INLINE std::string to_string(MemoryMapFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032294 {
32295 return "{}";
32296 }
32297
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032298 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032299 {
32300 return "(void)";
32301 }
32302
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032303 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032304 {
32305 return "{}";
32306 }
32307
Mark Young0f183a82017-02-28 09:58:04 -070032308 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032309 {
32310 return "(void)";
32311 }
32312
Mark Young0f183a82017-02-28 09:58:04 -070032313 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032314 {
32315 return "{}";
32316 }
32317
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032318 VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032319 {
32320 return "(void)";
32321 }
32322
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032323 VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032324 {
32325 return "{}";
32326 }
32327
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032328 VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032329 {
32330 return "(void)";
32331 }
32332
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032333 VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032334 {
32335 return "{}";
32336 }
32337
32338#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032339 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032340 {
32341 return "(void)";
32342 }
32343#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
32344
32345#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032346 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032347 {
32348 return "{}";
32349 }
32350#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
32351
32352#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032353 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032354 {
32355 return "(void)";
32356 }
32357#endif /*VK_USE_PLATFORM_MIR_KHR*/
32358
32359#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032360 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032361 {
32362 return "{}";
32363 }
32364#endif /*VK_USE_PLATFORM_MIR_KHR*/
32365
Mark Young39389872017-01-19 21:10:49 -070032366#ifdef VK_USE_PLATFORM_VI_NN
32367 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagBitsNN)
32368 {
32369 return "(void)";
32370 }
32371#endif /*VK_USE_PLATFORM_VI_NN*/
32372
32373#ifdef VK_USE_PLATFORM_VI_NN
32374 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagsNN)
32375 {
32376 return "{}";
32377 }
32378#endif /*VK_USE_PLATFORM_VI_NN*/
32379
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032380#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032381 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032382 {
32383 return "(void)";
32384 }
32385#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
32386
32387#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032388 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032389 {
32390 return "{}";
32391 }
32392#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
32393
32394#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032395 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032396 {
32397 return "(void)";
32398 }
32399#endif /*VK_USE_PLATFORM_WIN32_KHR*/
32400
32401#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032402 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032403 {
32404 return "{}";
32405 }
32406#endif /*VK_USE_PLATFORM_WIN32_KHR*/
32407
32408#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032409 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032410 {
32411 return "(void)";
32412 }
32413#endif /*VK_USE_PLATFORM_XLIB_KHR*/
32414
32415#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032416 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032417 {
32418 return "{}";
32419 }
32420#endif /*VK_USE_PLATFORM_XLIB_KHR*/
32421
32422#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032423 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032424 {
32425 return "(void)";
32426 }
32427#endif /*VK_USE_PLATFORM_XCB_KHR*/
32428
32429#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032430 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032431 {
32432 return "{}";
32433 }
32434#endif /*VK_USE_PLATFORM_XCB_KHR*/
32435
Mark Young0f183a82017-02-28 09:58:04 -070032436#ifdef VK_USE_PLATFORM_IOS_MVK
32437 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagBitsMVK)
32438 {
32439 return "(void)";
32440 }
32441#endif /*VK_USE_PLATFORM_IOS_MVK*/
32442
32443#ifdef VK_USE_PLATFORM_IOS_MVK
32444 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagsMVK)
32445 {
32446 return "{}";
32447 }
32448#endif /*VK_USE_PLATFORM_IOS_MVK*/
32449
32450#ifdef VK_USE_PLATFORM_MACOS_MVK
32451 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagBitsMVK)
32452 {
32453 return "(void)";
32454 }
32455#endif /*VK_USE_PLATFORM_MACOS_MVK*/
32456
32457#ifdef VK_USE_PLATFORM_MACOS_MVK
32458 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagsMVK)
32459 {
32460 return "{}";
32461 }
32462#endif /*VK_USE_PLATFORM_MACOS_MVK*/
32463
Mark Young39389872017-01-19 21:10:49 -070032464 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagBitsKHR)
32465 {
32466 return "(void)";
32467 }
32468
32469 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagsKHR)
32470 {
32471 return "{}";
32472 }
32473
Mark Young0f183a82017-02-28 09:58:04 -070032474 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagBitsNV)
32475 {
32476 return "(void)";
32477 }
32478
32479 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagsNV)
32480 {
32481 return "{}";
32482 }
32483
32484 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagBitsEXT)
32485 {
32486 return "(void)";
32487 }
32488
32489 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagsEXT)
32490 {
32491 return "{}";
32492 }
32493
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060032494 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageToColorStateCreateFlagBitsNV)
32495 {
32496 return "(void)";
32497 }
32498
32499 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageToColorStateCreateFlagsNV)
32500 {
32501 return "{}";
32502 }
32503
32504 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageModulationStateCreateFlagBitsNV)
32505 {
32506 return "(void)";
32507 }
32508
32509 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageModulationStateCreateFlagsNV)
32510 {
32511 return "{}";
32512 }
32513
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032514 VULKAN_HPP_INLINE std::string to_string(ValidationCacheCreateFlagBitsEXT)
32515 {
32516 return "(void)";
32517 }
32518
32519 VULKAN_HPP_INLINE std::string to_string(ValidationCacheCreateFlagsEXT)
32520 {
32521 return "{}";
32522 }
32523
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032524 VULKAN_HPP_INLINE std::string to_string(ImageLayout value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032525 {
32526 switch (value)
32527 {
32528 case ImageLayout::eUndefined: return "Undefined";
32529 case ImageLayout::eGeneral: return "General";
32530 case ImageLayout::eColorAttachmentOptimal: return "ColorAttachmentOptimal";
32531 case ImageLayout::eDepthStencilAttachmentOptimal: return "DepthStencilAttachmentOptimal";
32532 case ImageLayout::eDepthStencilReadOnlyOptimal: return "DepthStencilReadOnlyOptimal";
32533 case ImageLayout::eShaderReadOnlyOptimal: return "ShaderReadOnlyOptimal";
32534 case ImageLayout::eTransferSrcOptimal: return "TransferSrcOptimal";
32535 case ImageLayout::eTransferDstOptimal: return "TransferDstOptimal";
32536 case ImageLayout::ePreinitialized: return "Preinitialized";
32537 case ImageLayout::ePresentSrcKHR: return "PresentSrcKHR";
Mark Lobodzinski54385432017-05-15 10:27:52 -060032538 case ImageLayout::eSharedPresentKHR: return "SharedPresentKHR";
Lenny Komowb79f04a2017-09-18 17:07:00 -060032539 case ImageLayout::eDepthReadOnlyStencilAttachmentOptimalKHR: return "DepthReadOnlyStencilAttachmentOptimalKHR";
32540 case ImageLayout::eDepthAttachmentStencilReadOnlyOptimalKHR: return "DepthAttachmentStencilReadOnlyOptimalKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032541 default: return "invalid";
32542 }
32543 }
32544
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032545 VULKAN_HPP_INLINE std::string to_string(AttachmentLoadOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032546 {
32547 switch (value)
32548 {
32549 case AttachmentLoadOp::eLoad: return "Load";
32550 case AttachmentLoadOp::eClear: return "Clear";
32551 case AttachmentLoadOp::eDontCare: return "DontCare";
32552 default: return "invalid";
32553 }
32554 }
32555
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032556 VULKAN_HPP_INLINE std::string to_string(AttachmentStoreOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032557 {
32558 switch (value)
32559 {
32560 case AttachmentStoreOp::eStore: return "Store";
32561 case AttachmentStoreOp::eDontCare: return "DontCare";
32562 default: return "invalid";
32563 }
32564 }
32565
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032566 VULKAN_HPP_INLINE std::string to_string(ImageType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032567 {
32568 switch (value)
32569 {
32570 case ImageType::e1D: return "1D";
32571 case ImageType::e2D: return "2D";
32572 case ImageType::e3D: return "3D";
32573 default: return "invalid";
32574 }
32575 }
32576
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032577 VULKAN_HPP_INLINE std::string to_string(ImageTiling value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032578 {
32579 switch (value)
32580 {
32581 case ImageTiling::eOptimal: return "Optimal";
32582 case ImageTiling::eLinear: return "Linear";
32583 default: return "invalid";
32584 }
32585 }
32586
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032587 VULKAN_HPP_INLINE std::string to_string(ImageViewType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032588 {
32589 switch (value)
32590 {
32591 case ImageViewType::e1D: return "1D";
32592 case ImageViewType::e2D: return "2D";
32593 case ImageViewType::e3D: return "3D";
32594 case ImageViewType::eCube: return "Cube";
32595 case ImageViewType::e1DArray: return "1DArray";
32596 case ImageViewType::e2DArray: return "2DArray";
32597 case ImageViewType::eCubeArray: return "CubeArray";
32598 default: return "invalid";
32599 }
32600 }
32601
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032602 VULKAN_HPP_INLINE std::string to_string(CommandBufferLevel value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032603 {
32604 switch (value)
32605 {
32606 case CommandBufferLevel::ePrimary: return "Primary";
32607 case CommandBufferLevel::eSecondary: return "Secondary";
32608 default: return "invalid";
32609 }
32610 }
32611
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032612 VULKAN_HPP_INLINE std::string to_string(ComponentSwizzle value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032613 {
32614 switch (value)
32615 {
32616 case ComponentSwizzle::eIdentity: return "Identity";
32617 case ComponentSwizzle::eZero: return "Zero";
32618 case ComponentSwizzle::eOne: return "One";
32619 case ComponentSwizzle::eR: return "R";
32620 case ComponentSwizzle::eG: return "G";
32621 case ComponentSwizzle::eB: return "B";
32622 case ComponentSwizzle::eA: return "A";
32623 default: return "invalid";
32624 }
32625 }
32626
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032627 VULKAN_HPP_INLINE std::string to_string(DescriptorType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032628 {
32629 switch (value)
32630 {
32631 case DescriptorType::eSampler: return "Sampler";
32632 case DescriptorType::eCombinedImageSampler: return "CombinedImageSampler";
32633 case DescriptorType::eSampledImage: return "SampledImage";
32634 case DescriptorType::eStorageImage: return "StorageImage";
32635 case DescriptorType::eUniformTexelBuffer: return "UniformTexelBuffer";
32636 case DescriptorType::eStorageTexelBuffer: return "StorageTexelBuffer";
32637 case DescriptorType::eUniformBuffer: return "UniformBuffer";
32638 case DescriptorType::eStorageBuffer: return "StorageBuffer";
32639 case DescriptorType::eUniformBufferDynamic: return "UniformBufferDynamic";
32640 case DescriptorType::eStorageBufferDynamic: return "StorageBufferDynamic";
32641 case DescriptorType::eInputAttachment: return "InputAttachment";
32642 default: return "invalid";
32643 }
32644 }
32645
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032646 VULKAN_HPP_INLINE std::string to_string(QueryType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032647 {
32648 switch (value)
32649 {
32650 case QueryType::eOcclusion: return "Occlusion";
32651 case QueryType::ePipelineStatistics: return "PipelineStatistics";
32652 case QueryType::eTimestamp: return "Timestamp";
32653 default: return "invalid";
32654 }
32655 }
32656
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032657 VULKAN_HPP_INLINE std::string to_string(BorderColor value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032658 {
32659 switch (value)
32660 {
32661 case BorderColor::eFloatTransparentBlack: return "FloatTransparentBlack";
32662 case BorderColor::eIntTransparentBlack: return "IntTransparentBlack";
32663 case BorderColor::eFloatOpaqueBlack: return "FloatOpaqueBlack";
32664 case BorderColor::eIntOpaqueBlack: return "IntOpaqueBlack";
32665 case BorderColor::eFloatOpaqueWhite: return "FloatOpaqueWhite";
32666 case BorderColor::eIntOpaqueWhite: return "IntOpaqueWhite";
32667 default: return "invalid";
32668 }
32669 }
32670
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032671 VULKAN_HPP_INLINE std::string to_string(PipelineBindPoint value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032672 {
32673 switch (value)
32674 {
32675 case PipelineBindPoint::eGraphics: return "Graphics";
32676 case PipelineBindPoint::eCompute: return "Compute";
32677 default: return "invalid";
32678 }
32679 }
32680
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032681 VULKAN_HPP_INLINE std::string to_string(PipelineCacheHeaderVersion value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032682 {
32683 switch (value)
32684 {
32685 case PipelineCacheHeaderVersion::eOne: return "One";
32686 default: return "invalid";
32687 }
32688 }
32689
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032690 VULKAN_HPP_INLINE std::string to_string(PrimitiveTopology value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032691 {
32692 switch (value)
32693 {
32694 case PrimitiveTopology::ePointList: return "PointList";
32695 case PrimitiveTopology::eLineList: return "LineList";
32696 case PrimitiveTopology::eLineStrip: return "LineStrip";
32697 case PrimitiveTopology::eTriangleList: return "TriangleList";
32698 case PrimitiveTopology::eTriangleStrip: return "TriangleStrip";
32699 case PrimitiveTopology::eTriangleFan: return "TriangleFan";
32700 case PrimitiveTopology::eLineListWithAdjacency: return "LineListWithAdjacency";
32701 case PrimitiveTopology::eLineStripWithAdjacency: return "LineStripWithAdjacency";
32702 case PrimitiveTopology::eTriangleListWithAdjacency: return "TriangleListWithAdjacency";
32703 case PrimitiveTopology::eTriangleStripWithAdjacency: return "TriangleStripWithAdjacency";
32704 case PrimitiveTopology::ePatchList: return "PatchList";
32705 default: return "invalid";
32706 }
32707 }
32708
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032709 VULKAN_HPP_INLINE std::string to_string(SharingMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032710 {
32711 switch (value)
32712 {
32713 case SharingMode::eExclusive: return "Exclusive";
32714 case SharingMode::eConcurrent: return "Concurrent";
32715 default: return "invalid";
32716 }
32717 }
32718
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032719 VULKAN_HPP_INLINE std::string to_string(IndexType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032720 {
32721 switch (value)
32722 {
32723 case IndexType::eUint16: return "Uint16";
32724 case IndexType::eUint32: return "Uint32";
32725 default: return "invalid";
32726 }
32727 }
32728
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032729 VULKAN_HPP_INLINE std::string to_string(Filter value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032730 {
32731 switch (value)
32732 {
32733 case Filter::eNearest: return "Nearest";
32734 case Filter::eLinear: return "Linear";
32735 case Filter::eCubicIMG: return "CubicIMG";
32736 default: return "invalid";
32737 }
32738 }
32739
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032740 VULKAN_HPP_INLINE std::string to_string(SamplerMipmapMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032741 {
32742 switch (value)
32743 {
32744 case SamplerMipmapMode::eNearest: return "Nearest";
32745 case SamplerMipmapMode::eLinear: return "Linear";
32746 default: return "invalid";
32747 }
32748 }
32749
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032750 VULKAN_HPP_INLINE std::string to_string(SamplerAddressMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032751 {
32752 switch (value)
32753 {
32754 case SamplerAddressMode::eRepeat: return "Repeat";
32755 case SamplerAddressMode::eMirroredRepeat: return "MirroredRepeat";
32756 case SamplerAddressMode::eClampToEdge: return "ClampToEdge";
32757 case SamplerAddressMode::eClampToBorder: return "ClampToBorder";
32758 case SamplerAddressMode::eMirrorClampToEdge: return "MirrorClampToEdge";
32759 default: return "invalid";
32760 }
32761 }
32762
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032763 VULKAN_HPP_INLINE std::string to_string(CompareOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032764 {
32765 switch (value)
32766 {
32767 case CompareOp::eNever: return "Never";
32768 case CompareOp::eLess: return "Less";
32769 case CompareOp::eEqual: return "Equal";
32770 case CompareOp::eLessOrEqual: return "LessOrEqual";
32771 case CompareOp::eGreater: return "Greater";
32772 case CompareOp::eNotEqual: return "NotEqual";
32773 case CompareOp::eGreaterOrEqual: return "GreaterOrEqual";
32774 case CompareOp::eAlways: return "Always";
32775 default: return "invalid";
32776 }
32777 }
32778
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032779 VULKAN_HPP_INLINE std::string to_string(PolygonMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032780 {
32781 switch (value)
32782 {
32783 case PolygonMode::eFill: return "Fill";
32784 case PolygonMode::eLine: return "Line";
32785 case PolygonMode::ePoint: return "Point";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060032786 case PolygonMode::eFillRectangleNV: return "FillRectangleNV";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032787 default: return "invalid";
32788 }
32789 }
32790
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032791 VULKAN_HPP_INLINE std::string to_string(CullModeFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032792 {
32793 switch (value)
32794 {
32795 case CullModeFlagBits::eNone: return "None";
32796 case CullModeFlagBits::eFront: return "Front";
32797 case CullModeFlagBits::eBack: return "Back";
32798 case CullModeFlagBits::eFrontAndBack: return "FrontAndBack";
32799 default: return "invalid";
32800 }
32801 }
32802
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032803 VULKAN_HPP_INLINE std::string to_string(CullModeFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032804 {
32805 if (!value) return "{}";
32806 std::string result;
32807 if (value & CullModeFlagBits::eNone) result += "None | ";
32808 if (value & CullModeFlagBits::eFront) result += "Front | ";
32809 if (value & CullModeFlagBits::eBack) result += "Back | ";
32810 if (value & CullModeFlagBits::eFrontAndBack) result += "FrontAndBack | ";
32811 return "{" + result.substr(0, result.size() - 3) + "}";
32812 }
32813
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032814 VULKAN_HPP_INLINE std::string to_string(FrontFace value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032815 {
32816 switch (value)
32817 {
32818 case FrontFace::eCounterClockwise: return "CounterClockwise";
32819 case FrontFace::eClockwise: return "Clockwise";
32820 default: return "invalid";
32821 }
32822 }
32823
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032824 VULKAN_HPP_INLINE std::string to_string(BlendFactor value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032825 {
32826 switch (value)
32827 {
32828 case BlendFactor::eZero: return "Zero";
32829 case BlendFactor::eOne: return "One";
32830 case BlendFactor::eSrcColor: return "SrcColor";
32831 case BlendFactor::eOneMinusSrcColor: return "OneMinusSrcColor";
32832 case BlendFactor::eDstColor: return "DstColor";
32833 case BlendFactor::eOneMinusDstColor: return "OneMinusDstColor";
32834 case BlendFactor::eSrcAlpha: return "SrcAlpha";
32835 case BlendFactor::eOneMinusSrcAlpha: return "OneMinusSrcAlpha";
32836 case BlendFactor::eDstAlpha: return "DstAlpha";
32837 case BlendFactor::eOneMinusDstAlpha: return "OneMinusDstAlpha";
32838 case BlendFactor::eConstantColor: return "ConstantColor";
32839 case BlendFactor::eOneMinusConstantColor: return "OneMinusConstantColor";
32840 case BlendFactor::eConstantAlpha: return "ConstantAlpha";
32841 case BlendFactor::eOneMinusConstantAlpha: return "OneMinusConstantAlpha";
32842 case BlendFactor::eSrcAlphaSaturate: return "SrcAlphaSaturate";
32843 case BlendFactor::eSrc1Color: return "Src1Color";
32844 case BlendFactor::eOneMinusSrc1Color: return "OneMinusSrc1Color";
32845 case BlendFactor::eSrc1Alpha: return "Src1Alpha";
32846 case BlendFactor::eOneMinusSrc1Alpha: return "OneMinusSrc1Alpha";
32847 default: return "invalid";
32848 }
32849 }
32850
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032851 VULKAN_HPP_INLINE std::string to_string(BlendOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032852 {
32853 switch (value)
32854 {
32855 case BlendOp::eAdd: return "Add";
32856 case BlendOp::eSubtract: return "Subtract";
32857 case BlendOp::eReverseSubtract: return "ReverseSubtract";
32858 case BlendOp::eMin: return "Min";
32859 case BlendOp::eMax: return "Max";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060032860 case BlendOp::eZeroEXT: return "ZeroEXT";
32861 case BlendOp::eSrcEXT: return "SrcEXT";
32862 case BlendOp::eDstEXT: return "DstEXT";
32863 case BlendOp::eSrcOverEXT: return "SrcOverEXT";
32864 case BlendOp::eDstOverEXT: return "DstOverEXT";
32865 case BlendOp::eSrcInEXT: return "SrcInEXT";
32866 case BlendOp::eDstInEXT: return "DstInEXT";
32867 case BlendOp::eSrcOutEXT: return "SrcOutEXT";
32868 case BlendOp::eDstOutEXT: return "DstOutEXT";
32869 case BlendOp::eSrcAtopEXT: return "SrcAtopEXT";
32870 case BlendOp::eDstAtopEXT: return "DstAtopEXT";
32871 case BlendOp::eXorEXT: return "XorEXT";
32872 case BlendOp::eMultiplyEXT: return "MultiplyEXT";
32873 case BlendOp::eScreenEXT: return "ScreenEXT";
32874 case BlendOp::eOverlayEXT: return "OverlayEXT";
32875 case BlendOp::eDarkenEXT: return "DarkenEXT";
32876 case BlendOp::eLightenEXT: return "LightenEXT";
32877 case BlendOp::eColordodgeEXT: return "ColordodgeEXT";
32878 case BlendOp::eColorburnEXT: return "ColorburnEXT";
32879 case BlendOp::eHardlightEXT: return "HardlightEXT";
32880 case BlendOp::eSoftlightEXT: return "SoftlightEXT";
32881 case BlendOp::eDifferenceEXT: return "DifferenceEXT";
32882 case BlendOp::eExclusionEXT: return "ExclusionEXT";
32883 case BlendOp::eInvertEXT: return "InvertEXT";
32884 case BlendOp::eInvertRgbEXT: return "InvertRgbEXT";
32885 case BlendOp::eLineardodgeEXT: return "LineardodgeEXT";
32886 case BlendOp::eLinearburnEXT: return "LinearburnEXT";
32887 case BlendOp::eVividlightEXT: return "VividlightEXT";
32888 case BlendOp::eLinearlightEXT: return "LinearlightEXT";
32889 case BlendOp::ePinlightEXT: return "PinlightEXT";
32890 case BlendOp::eHardmixEXT: return "HardmixEXT";
32891 case BlendOp::eHslHueEXT: return "HslHueEXT";
32892 case BlendOp::eHslSaturationEXT: return "HslSaturationEXT";
32893 case BlendOp::eHslColorEXT: return "HslColorEXT";
32894 case BlendOp::eHslLuminosityEXT: return "HslLuminosityEXT";
32895 case BlendOp::ePlusEXT: return "PlusEXT";
32896 case BlendOp::ePlusClampedEXT: return "PlusClampedEXT";
32897 case BlendOp::ePlusClampedAlphaEXT: return "PlusClampedAlphaEXT";
32898 case BlendOp::ePlusDarkerEXT: return "PlusDarkerEXT";
32899 case BlendOp::eMinusEXT: return "MinusEXT";
32900 case BlendOp::eMinusClampedEXT: return "MinusClampedEXT";
32901 case BlendOp::eContrastEXT: return "ContrastEXT";
32902 case BlendOp::eInvertOvgEXT: return "InvertOvgEXT";
32903 case BlendOp::eRedEXT: return "RedEXT";
32904 case BlendOp::eGreenEXT: return "GreenEXT";
32905 case BlendOp::eBlueEXT: return "BlueEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032906 default: return "invalid";
32907 }
32908 }
32909
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032910 VULKAN_HPP_INLINE std::string to_string(StencilOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032911 {
32912 switch (value)
32913 {
32914 case StencilOp::eKeep: return "Keep";
32915 case StencilOp::eZero: return "Zero";
32916 case StencilOp::eReplace: return "Replace";
32917 case StencilOp::eIncrementAndClamp: return "IncrementAndClamp";
32918 case StencilOp::eDecrementAndClamp: return "DecrementAndClamp";
32919 case StencilOp::eInvert: return "Invert";
32920 case StencilOp::eIncrementAndWrap: return "IncrementAndWrap";
32921 case StencilOp::eDecrementAndWrap: return "DecrementAndWrap";
32922 default: return "invalid";
32923 }
32924 }
32925
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032926 VULKAN_HPP_INLINE std::string to_string(LogicOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032927 {
32928 switch (value)
32929 {
32930 case LogicOp::eClear: return "Clear";
32931 case LogicOp::eAnd: return "And";
32932 case LogicOp::eAndReverse: return "AndReverse";
32933 case LogicOp::eCopy: return "Copy";
32934 case LogicOp::eAndInverted: return "AndInverted";
32935 case LogicOp::eNoOp: return "NoOp";
32936 case LogicOp::eXor: return "Xor";
32937 case LogicOp::eOr: return "Or";
32938 case LogicOp::eNor: return "Nor";
32939 case LogicOp::eEquivalent: return "Equivalent";
32940 case LogicOp::eInvert: return "Invert";
32941 case LogicOp::eOrReverse: return "OrReverse";
32942 case LogicOp::eCopyInverted: return "CopyInverted";
32943 case LogicOp::eOrInverted: return "OrInverted";
32944 case LogicOp::eNand: return "Nand";
32945 case LogicOp::eSet: return "Set";
32946 default: return "invalid";
32947 }
32948 }
32949
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032950 VULKAN_HPP_INLINE std::string to_string(InternalAllocationType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032951 {
32952 switch (value)
32953 {
32954 case InternalAllocationType::eExecutable: return "Executable";
32955 default: return "invalid";
32956 }
32957 }
32958
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032959 VULKAN_HPP_INLINE std::string to_string(SystemAllocationScope value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032960 {
32961 switch (value)
32962 {
32963 case SystemAllocationScope::eCommand: return "Command";
32964 case SystemAllocationScope::eObject: return "Object";
32965 case SystemAllocationScope::eCache: return "Cache";
32966 case SystemAllocationScope::eDevice: return "Device";
32967 case SystemAllocationScope::eInstance: return "Instance";
32968 default: return "invalid";
32969 }
32970 }
32971
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032972 VULKAN_HPP_INLINE std::string to_string(PhysicalDeviceType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032973 {
32974 switch (value)
32975 {
32976 case PhysicalDeviceType::eOther: return "Other";
32977 case PhysicalDeviceType::eIntegratedGpu: return "IntegratedGpu";
32978 case PhysicalDeviceType::eDiscreteGpu: return "DiscreteGpu";
32979 case PhysicalDeviceType::eVirtualGpu: return "VirtualGpu";
32980 case PhysicalDeviceType::eCpu: return "Cpu";
32981 default: return "invalid";
32982 }
32983 }
32984
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032985 VULKAN_HPP_INLINE std::string to_string(VertexInputRate value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032986 {
32987 switch (value)
32988 {
32989 case VertexInputRate::eVertex: return "Vertex";
32990 case VertexInputRate::eInstance: return "Instance";
32991 default: return "invalid";
32992 }
32993 }
32994
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032995 VULKAN_HPP_INLINE std::string to_string(Format value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032996 {
32997 switch (value)
32998 {
32999 case Format::eUndefined: return "Undefined";
33000 case Format::eR4G4UnormPack8: return "R4G4UnormPack8";
33001 case Format::eR4G4B4A4UnormPack16: return "R4G4B4A4UnormPack16";
33002 case Format::eB4G4R4A4UnormPack16: return "B4G4R4A4UnormPack16";
33003 case Format::eR5G6B5UnormPack16: return "R5G6B5UnormPack16";
33004 case Format::eB5G6R5UnormPack16: return "B5G6R5UnormPack16";
33005 case Format::eR5G5B5A1UnormPack16: return "R5G5B5A1UnormPack16";
33006 case Format::eB5G5R5A1UnormPack16: return "B5G5R5A1UnormPack16";
33007 case Format::eA1R5G5B5UnormPack16: return "A1R5G5B5UnormPack16";
33008 case Format::eR8Unorm: return "R8Unorm";
33009 case Format::eR8Snorm: return "R8Snorm";
33010 case Format::eR8Uscaled: return "R8Uscaled";
33011 case Format::eR8Sscaled: return "R8Sscaled";
33012 case Format::eR8Uint: return "R8Uint";
33013 case Format::eR8Sint: return "R8Sint";
33014 case Format::eR8Srgb: return "R8Srgb";
33015 case Format::eR8G8Unorm: return "R8G8Unorm";
33016 case Format::eR8G8Snorm: return "R8G8Snorm";
33017 case Format::eR8G8Uscaled: return "R8G8Uscaled";
33018 case Format::eR8G8Sscaled: return "R8G8Sscaled";
33019 case Format::eR8G8Uint: return "R8G8Uint";
33020 case Format::eR8G8Sint: return "R8G8Sint";
33021 case Format::eR8G8Srgb: return "R8G8Srgb";
33022 case Format::eR8G8B8Unorm: return "R8G8B8Unorm";
33023 case Format::eR8G8B8Snorm: return "R8G8B8Snorm";
33024 case Format::eR8G8B8Uscaled: return "R8G8B8Uscaled";
33025 case Format::eR8G8B8Sscaled: return "R8G8B8Sscaled";
33026 case Format::eR8G8B8Uint: return "R8G8B8Uint";
33027 case Format::eR8G8B8Sint: return "R8G8B8Sint";
33028 case Format::eR8G8B8Srgb: return "R8G8B8Srgb";
33029 case Format::eB8G8R8Unorm: return "B8G8R8Unorm";
33030 case Format::eB8G8R8Snorm: return "B8G8R8Snorm";
33031 case Format::eB8G8R8Uscaled: return "B8G8R8Uscaled";
33032 case Format::eB8G8R8Sscaled: return "B8G8R8Sscaled";
33033 case Format::eB8G8R8Uint: return "B8G8R8Uint";
33034 case Format::eB8G8R8Sint: return "B8G8R8Sint";
33035 case Format::eB8G8R8Srgb: return "B8G8R8Srgb";
33036 case Format::eR8G8B8A8Unorm: return "R8G8B8A8Unorm";
33037 case Format::eR8G8B8A8Snorm: return "R8G8B8A8Snorm";
33038 case Format::eR8G8B8A8Uscaled: return "R8G8B8A8Uscaled";
33039 case Format::eR8G8B8A8Sscaled: return "R8G8B8A8Sscaled";
33040 case Format::eR8G8B8A8Uint: return "R8G8B8A8Uint";
33041 case Format::eR8G8B8A8Sint: return "R8G8B8A8Sint";
33042 case Format::eR8G8B8A8Srgb: return "R8G8B8A8Srgb";
33043 case Format::eB8G8R8A8Unorm: return "B8G8R8A8Unorm";
33044 case Format::eB8G8R8A8Snorm: return "B8G8R8A8Snorm";
33045 case Format::eB8G8R8A8Uscaled: return "B8G8R8A8Uscaled";
33046 case Format::eB8G8R8A8Sscaled: return "B8G8R8A8Sscaled";
33047 case Format::eB8G8R8A8Uint: return "B8G8R8A8Uint";
33048 case Format::eB8G8R8A8Sint: return "B8G8R8A8Sint";
33049 case Format::eB8G8R8A8Srgb: return "B8G8R8A8Srgb";
33050 case Format::eA8B8G8R8UnormPack32: return "A8B8G8R8UnormPack32";
33051 case Format::eA8B8G8R8SnormPack32: return "A8B8G8R8SnormPack32";
33052 case Format::eA8B8G8R8UscaledPack32: return "A8B8G8R8UscaledPack32";
33053 case Format::eA8B8G8R8SscaledPack32: return "A8B8G8R8SscaledPack32";
33054 case Format::eA8B8G8R8UintPack32: return "A8B8G8R8UintPack32";
33055 case Format::eA8B8G8R8SintPack32: return "A8B8G8R8SintPack32";
33056 case Format::eA8B8G8R8SrgbPack32: return "A8B8G8R8SrgbPack32";
33057 case Format::eA2R10G10B10UnormPack32: return "A2R10G10B10UnormPack32";
33058 case Format::eA2R10G10B10SnormPack32: return "A2R10G10B10SnormPack32";
33059 case Format::eA2R10G10B10UscaledPack32: return "A2R10G10B10UscaledPack32";
33060 case Format::eA2R10G10B10SscaledPack32: return "A2R10G10B10SscaledPack32";
33061 case Format::eA2R10G10B10UintPack32: return "A2R10G10B10UintPack32";
33062 case Format::eA2R10G10B10SintPack32: return "A2R10G10B10SintPack32";
33063 case Format::eA2B10G10R10UnormPack32: return "A2B10G10R10UnormPack32";
33064 case Format::eA2B10G10R10SnormPack32: return "A2B10G10R10SnormPack32";
33065 case Format::eA2B10G10R10UscaledPack32: return "A2B10G10R10UscaledPack32";
33066 case Format::eA2B10G10R10SscaledPack32: return "A2B10G10R10SscaledPack32";
33067 case Format::eA2B10G10R10UintPack32: return "A2B10G10R10UintPack32";
33068 case Format::eA2B10G10R10SintPack32: return "A2B10G10R10SintPack32";
33069 case Format::eR16Unorm: return "R16Unorm";
33070 case Format::eR16Snorm: return "R16Snorm";
33071 case Format::eR16Uscaled: return "R16Uscaled";
33072 case Format::eR16Sscaled: return "R16Sscaled";
33073 case Format::eR16Uint: return "R16Uint";
33074 case Format::eR16Sint: return "R16Sint";
33075 case Format::eR16Sfloat: return "R16Sfloat";
33076 case Format::eR16G16Unorm: return "R16G16Unorm";
33077 case Format::eR16G16Snorm: return "R16G16Snorm";
33078 case Format::eR16G16Uscaled: return "R16G16Uscaled";
33079 case Format::eR16G16Sscaled: return "R16G16Sscaled";
33080 case Format::eR16G16Uint: return "R16G16Uint";
33081 case Format::eR16G16Sint: return "R16G16Sint";
33082 case Format::eR16G16Sfloat: return "R16G16Sfloat";
33083 case Format::eR16G16B16Unorm: return "R16G16B16Unorm";
33084 case Format::eR16G16B16Snorm: return "R16G16B16Snorm";
33085 case Format::eR16G16B16Uscaled: return "R16G16B16Uscaled";
33086 case Format::eR16G16B16Sscaled: return "R16G16B16Sscaled";
33087 case Format::eR16G16B16Uint: return "R16G16B16Uint";
33088 case Format::eR16G16B16Sint: return "R16G16B16Sint";
33089 case Format::eR16G16B16Sfloat: return "R16G16B16Sfloat";
33090 case Format::eR16G16B16A16Unorm: return "R16G16B16A16Unorm";
33091 case Format::eR16G16B16A16Snorm: return "R16G16B16A16Snorm";
33092 case Format::eR16G16B16A16Uscaled: return "R16G16B16A16Uscaled";
33093 case Format::eR16G16B16A16Sscaled: return "R16G16B16A16Sscaled";
33094 case Format::eR16G16B16A16Uint: return "R16G16B16A16Uint";
33095 case Format::eR16G16B16A16Sint: return "R16G16B16A16Sint";
33096 case Format::eR16G16B16A16Sfloat: return "R16G16B16A16Sfloat";
33097 case Format::eR32Uint: return "R32Uint";
33098 case Format::eR32Sint: return "R32Sint";
33099 case Format::eR32Sfloat: return "R32Sfloat";
33100 case Format::eR32G32Uint: return "R32G32Uint";
33101 case Format::eR32G32Sint: return "R32G32Sint";
33102 case Format::eR32G32Sfloat: return "R32G32Sfloat";
33103 case Format::eR32G32B32Uint: return "R32G32B32Uint";
33104 case Format::eR32G32B32Sint: return "R32G32B32Sint";
33105 case Format::eR32G32B32Sfloat: return "R32G32B32Sfloat";
33106 case Format::eR32G32B32A32Uint: return "R32G32B32A32Uint";
33107 case Format::eR32G32B32A32Sint: return "R32G32B32A32Sint";
33108 case Format::eR32G32B32A32Sfloat: return "R32G32B32A32Sfloat";
33109 case Format::eR64Uint: return "R64Uint";
33110 case Format::eR64Sint: return "R64Sint";
33111 case Format::eR64Sfloat: return "R64Sfloat";
33112 case Format::eR64G64Uint: return "R64G64Uint";
33113 case Format::eR64G64Sint: return "R64G64Sint";
33114 case Format::eR64G64Sfloat: return "R64G64Sfloat";
33115 case Format::eR64G64B64Uint: return "R64G64B64Uint";
33116 case Format::eR64G64B64Sint: return "R64G64B64Sint";
33117 case Format::eR64G64B64Sfloat: return "R64G64B64Sfloat";
33118 case Format::eR64G64B64A64Uint: return "R64G64B64A64Uint";
33119 case Format::eR64G64B64A64Sint: return "R64G64B64A64Sint";
33120 case Format::eR64G64B64A64Sfloat: return "R64G64B64A64Sfloat";
33121 case Format::eB10G11R11UfloatPack32: return "B10G11R11UfloatPack32";
33122 case Format::eE5B9G9R9UfloatPack32: return "E5B9G9R9UfloatPack32";
33123 case Format::eD16Unorm: return "D16Unorm";
33124 case Format::eX8D24UnormPack32: return "X8D24UnormPack32";
33125 case Format::eD32Sfloat: return "D32Sfloat";
33126 case Format::eS8Uint: return "S8Uint";
33127 case Format::eD16UnormS8Uint: return "D16UnormS8Uint";
33128 case Format::eD24UnormS8Uint: return "D24UnormS8Uint";
33129 case Format::eD32SfloatS8Uint: return "D32SfloatS8Uint";
33130 case Format::eBc1RgbUnormBlock: return "Bc1RgbUnormBlock";
33131 case Format::eBc1RgbSrgbBlock: return "Bc1RgbSrgbBlock";
33132 case Format::eBc1RgbaUnormBlock: return "Bc1RgbaUnormBlock";
33133 case Format::eBc1RgbaSrgbBlock: return "Bc1RgbaSrgbBlock";
33134 case Format::eBc2UnormBlock: return "Bc2UnormBlock";
33135 case Format::eBc2SrgbBlock: return "Bc2SrgbBlock";
33136 case Format::eBc3UnormBlock: return "Bc3UnormBlock";
33137 case Format::eBc3SrgbBlock: return "Bc3SrgbBlock";
33138 case Format::eBc4UnormBlock: return "Bc4UnormBlock";
33139 case Format::eBc4SnormBlock: return "Bc4SnormBlock";
33140 case Format::eBc5UnormBlock: return "Bc5UnormBlock";
33141 case Format::eBc5SnormBlock: return "Bc5SnormBlock";
33142 case Format::eBc6HUfloatBlock: return "Bc6HUfloatBlock";
33143 case Format::eBc6HSfloatBlock: return "Bc6HSfloatBlock";
33144 case Format::eBc7UnormBlock: return "Bc7UnormBlock";
33145 case Format::eBc7SrgbBlock: return "Bc7SrgbBlock";
33146 case Format::eEtc2R8G8B8UnormBlock: return "Etc2R8G8B8UnormBlock";
33147 case Format::eEtc2R8G8B8SrgbBlock: return "Etc2R8G8B8SrgbBlock";
33148 case Format::eEtc2R8G8B8A1UnormBlock: return "Etc2R8G8B8A1UnormBlock";
33149 case Format::eEtc2R8G8B8A1SrgbBlock: return "Etc2R8G8B8A1SrgbBlock";
33150 case Format::eEtc2R8G8B8A8UnormBlock: return "Etc2R8G8B8A8UnormBlock";
33151 case Format::eEtc2R8G8B8A8SrgbBlock: return "Etc2R8G8B8A8SrgbBlock";
33152 case Format::eEacR11UnormBlock: return "EacR11UnormBlock";
33153 case Format::eEacR11SnormBlock: return "EacR11SnormBlock";
33154 case Format::eEacR11G11UnormBlock: return "EacR11G11UnormBlock";
33155 case Format::eEacR11G11SnormBlock: return "EacR11G11SnormBlock";
33156 case Format::eAstc4x4UnormBlock: return "Astc4x4UnormBlock";
33157 case Format::eAstc4x4SrgbBlock: return "Astc4x4SrgbBlock";
33158 case Format::eAstc5x4UnormBlock: return "Astc5x4UnormBlock";
33159 case Format::eAstc5x4SrgbBlock: return "Astc5x4SrgbBlock";
33160 case Format::eAstc5x5UnormBlock: return "Astc5x5UnormBlock";
33161 case Format::eAstc5x5SrgbBlock: return "Astc5x5SrgbBlock";
33162 case Format::eAstc6x5UnormBlock: return "Astc6x5UnormBlock";
33163 case Format::eAstc6x5SrgbBlock: return "Astc6x5SrgbBlock";
33164 case Format::eAstc6x6UnormBlock: return "Astc6x6UnormBlock";
33165 case Format::eAstc6x6SrgbBlock: return "Astc6x6SrgbBlock";
33166 case Format::eAstc8x5UnormBlock: return "Astc8x5UnormBlock";
33167 case Format::eAstc8x5SrgbBlock: return "Astc8x5SrgbBlock";
33168 case Format::eAstc8x6UnormBlock: return "Astc8x6UnormBlock";
33169 case Format::eAstc8x6SrgbBlock: return "Astc8x6SrgbBlock";
33170 case Format::eAstc8x8UnormBlock: return "Astc8x8UnormBlock";
33171 case Format::eAstc8x8SrgbBlock: return "Astc8x8SrgbBlock";
33172 case Format::eAstc10x5UnormBlock: return "Astc10x5UnormBlock";
33173 case Format::eAstc10x5SrgbBlock: return "Astc10x5SrgbBlock";
33174 case Format::eAstc10x6UnormBlock: return "Astc10x6UnormBlock";
33175 case Format::eAstc10x6SrgbBlock: return "Astc10x6SrgbBlock";
33176 case Format::eAstc10x8UnormBlock: return "Astc10x8UnormBlock";
33177 case Format::eAstc10x8SrgbBlock: return "Astc10x8SrgbBlock";
33178 case Format::eAstc10x10UnormBlock: return "Astc10x10UnormBlock";
33179 case Format::eAstc10x10SrgbBlock: return "Astc10x10SrgbBlock";
33180 case Format::eAstc12x10UnormBlock: return "Astc12x10UnormBlock";
33181 case Format::eAstc12x10SrgbBlock: return "Astc12x10SrgbBlock";
33182 case Format::eAstc12x12UnormBlock: return "Astc12x12UnormBlock";
33183 case Format::eAstc12x12SrgbBlock: return "Astc12x12SrgbBlock";
Lenny Komowebf33162016-08-26 14:10:08 -060033184 case Format::ePvrtc12BppUnormBlockIMG: return "Pvrtc12BppUnormBlockIMG";
33185 case Format::ePvrtc14BppUnormBlockIMG: return "Pvrtc14BppUnormBlockIMG";
33186 case Format::ePvrtc22BppUnormBlockIMG: return "Pvrtc22BppUnormBlockIMG";
33187 case Format::ePvrtc24BppUnormBlockIMG: return "Pvrtc24BppUnormBlockIMG";
33188 case Format::ePvrtc12BppSrgbBlockIMG: return "Pvrtc12BppSrgbBlockIMG";
33189 case Format::ePvrtc14BppSrgbBlockIMG: return "Pvrtc14BppSrgbBlockIMG";
33190 case Format::ePvrtc22BppSrgbBlockIMG: return "Pvrtc22BppSrgbBlockIMG";
33191 case Format::ePvrtc24BppSrgbBlockIMG: return "Pvrtc24BppSrgbBlockIMG";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033192 case Format::eG8B8G8R8422UnormKHR: return "G8B8G8R8422UnormKHR";
33193 case Format::eB8G8R8G8422UnormKHR: return "B8G8R8G8422UnormKHR";
33194 case Format::eG8B8R83Plane420UnormKHR: return "G8B8R83Plane420UnormKHR";
33195 case Format::eG8B8R82Plane420UnormKHR: return "G8B8R82Plane420UnormKHR";
33196 case Format::eG8B8R83Plane422UnormKHR: return "G8B8R83Plane422UnormKHR";
33197 case Format::eG8B8R82Plane422UnormKHR: return "G8B8R82Plane422UnormKHR";
33198 case Format::eG8B8R83Plane444UnormKHR: return "G8B8R83Plane444UnormKHR";
33199 case Format::eR10X6UnormPack16KHR: return "R10X6UnormPack16KHR";
33200 case Format::eR10X6G10X6Unorm2Pack16KHR: return "R10X6G10X6Unorm2Pack16KHR";
33201 case Format::eR10X6G10X6B10X6A10X6Unorm4Pack16KHR: return "R10X6G10X6B10X6A10X6Unorm4Pack16KHR";
33202 case Format::eG10X6B10X6G10X6R10X6422Unorm4Pack16KHR: return "G10X6B10X6G10X6R10X6422Unorm4Pack16KHR";
33203 case Format::eB10X6G10X6R10X6G10X6422Unorm4Pack16KHR: return "B10X6G10X6R10X6G10X6422Unorm4Pack16KHR";
33204 case Format::eG10X6B10X6R10X63Plane420Unorm3Pack16KHR: return "G10X6B10X6R10X63Plane420Unorm3Pack16KHR";
33205 case Format::eG10X6B10X6R10X62Plane420Unorm3Pack16KHR: return "G10X6B10X6R10X62Plane420Unorm3Pack16KHR";
33206 case Format::eG10X6B10X6R10X63Plane422Unorm3Pack16KHR: return "G10X6B10X6R10X63Plane422Unorm3Pack16KHR";
33207 case Format::eG10X6B10X6R10X62Plane422Unorm3Pack16KHR: return "G10X6B10X6R10X62Plane422Unorm3Pack16KHR";
33208 case Format::eG10X6B10X6R10X63Plane444Unorm3Pack16KHR: return "G10X6B10X6R10X63Plane444Unorm3Pack16KHR";
33209 case Format::eR12X4UnormPack16KHR: return "R12X4UnormPack16KHR";
33210 case Format::eR12X4G12X4Unorm2Pack16KHR: return "R12X4G12X4Unorm2Pack16KHR";
33211 case Format::eR12X4G12X4B12X4A12X4Unorm4Pack16KHR: return "R12X4G12X4B12X4A12X4Unorm4Pack16KHR";
33212 case Format::eG12X4B12X4G12X4R12X4422Unorm4Pack16KHR: return "G12X4B12X4G12X4R12X4422Unorm4Pack16KHR";
33213 case Format::eB12X4G12X4R12X4G12X4422Unorm4Pack16KHR: return "B12X4G12X4R12X4G12X4422Unorm4Pack16KHR";
33214 case Format::eG12X4B12X4R12X43Plane420Unorm3Pack16KHR: return "G12X4B12X4R12X43Plane420Unorm3Pack16KHR";
33215 case Format::eG12X4B12X4R12X42Plane420Unorm3Pack16KHR: return "G12X4B12X4R12X42Plane420Unorm3Pack16KHR";
33216 case Format::eG12X4B12X4R12X43Plane422Unorm3Pack16KHR: return "G12X4B12X4R12X43Plane422Unorm3Pack16KHR";
33217 case Format::eG12X4B12X4R12X42Plane422Unorm3Pack16KHR: return "G12X4B12X4R12X42Plane422Unorm3Pack16KHR";
33218 case Format::eG12X4B12X4R12X43Plane444Unorm3Pack16KHR: return "G12X4B12X4R12X43Plane444Unorm3Pack16KHR";
33219 case Format::eG16B16G16R16422UnormKHR: return "G16B16G16R16422UnormKHR";
33220 case Format::eB16G16R16G16422UnormKHR: return "B16G16R16G16422UnormKHR";
33221 case Format::eG16B16R163Plane420UnormKHR: return "G16B16R163Plane420UnormKHR";
33222 case Format::eG16B16R162Plane420UnormKHR: return "G16B16R162Plane420UnormKHR";
33223 case Format::eG16B16R163Plane422UnormKHR: return "G16B16R163Plane422UnormKHR";
33224 case Format::eG16B16R162Plane422UnormKHR: return "G16B16R162Plane422UnormKHR";
33225 case Format::eG16B16R163Plane444UnormKHR: return "G16B16R163Plane444UnormKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033226 default: return "invalid";
33227 }
33228 }
33229
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033230 VULKAN_HPP_INLINE std::string to_string(StructureType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033231 {
33232 switch (value)
33233 {
33234 case StructureType::eApplicationInfo: return "ApplicationInfo";
33235 case StructureType::eInstanceCreateInfo: return "InstanceCreateInfo";
33236 case StructureType::eDeviceQueueCreateInfo: return "DeviceQueueCreateInfo";
33237 case StructureType::eDeviceCreateInfo: return "DeviceCreateInfo";
33238 case StructureType::eSubmitInfo: return "SubmitInfo";
33239 case StructureType::eMemoryAllocateInfo: return "MemoryAllocateInfo";
33240 case StructureType::eMappedMemoryRange: return "MappedMemoryRange";
33241 case StructureType::eBindSparseInfo: return "BindSparseInfo";
33242 case StructureType::eFenceCreateInfo: return "FenceCreateInfo";
33243 case StructureType::eSemaphoreCreateInfo: return "SemaphoreCreateInfo";
33244 case StructureType::eEventCreateInfo: return "EventCreateInfo";
33245 case StructureType::eQueryPoolCreateInfo: return "QueryPoolCreateInfo";
33246 case StructureType::eBufferCreateInfo: return "BufferCreateInfo";
33247 case StructureType::eBufferViewCreateInfo: return "BufferViewCreateInfo";
33248 case StructureType::eImageCreateInfo: return "ImageCreateInfo";
33249 case StructureType::eImageViewCreateInfo: return "ImageViewCreateInfo";
33250 case StructureType::eShaderModuleCreateInfo: return "ShaderModuleCreateInfo";
33251 case StructureType::ePipelineCacheCreateInfo: return "PipelineCacheCreateInfo";
33252 case StructureType::ePipelineShaderStageCreateInfo: return "PipelineShaderStageCreateInfo";
33253 case StructureType::ePipelineVertexInputStateCreateInfo: return "PipelineVertexInputStateCreateInfo";
33254 case StructureType::ePipelineInputAssemblyStateCreateInfo: return "PipelineInputAssemblyStateCreateInfo";
33255 case StructureType::ePipelineTessellationStateCreateInfo: return "PipelineTessellationStateCreateInfo";
33256 case StructureType::ePipelineViewportStateCreateInfo: return "PipelineViewportStateCreateInfo";
33257 case StructureType::ePipelineRasterizationStateCreateInfo: return "PipelineRasterizationStateCreateInfo";
33258 case StructureType::ePipelineMultisampleStateCreateInfo: return "PipelineMultisampleStateCreateInfo";
33259 case StructureType::ePipelineDepthStencilStateCreateInfo: return "PipelineDepthStencilStateCreateInfo";
33260 case StructureType::ePipelineColorBlendStateCreateInfo: return "PipelineColorBlendStateCreateInfo";
33261 case StructureType::ePipelineDynamicStateCreateInfo: return "PipelineDynamicStateCreateInfo";
33262 case StructureType::eGraphicsPipelineCreateInfo: return "GraphicsPipelineCreateInfo";
33263 case StructureType::eComputePipelineCreateInfo: return "ComputePipelineCreateInfo";
33264 case StructureType::ePipelineLayoutCreateInfo: return "PipelineLayoutCreateInfo";
33265 case StructureType::eSamplerCreateInfo: return "SamplerCreateInfo";
33266 case StructureType::eDescriptorSetLayoutCreateInfo: return "DescriptorSetLayoutCreateInfo";
33267 case StructureType::eDescriptorPoolCreateInfo: return "DescriptorPoolCreateInfo";
33268 case StructureType::eDescriptorSetAllocateInfo: return "DescriptorSetAllocateInfo";
33269 case StructureType::eWriteDescriptorSet: return "WriteDescriptorSet";
33270 case StructureType::eCopyDescriptorSet: return "CopyDescriptorSet";
33271 case StructureType::eFramebufferCreateInfo: return "FramebufferCreateInfo";
33272 case StructureType::eRenderPassCreateInfo: return "RenderPassCreateInfo";
33273 case StructureType::eCommandPoolCreateInfo: return "CommandPoolCreateInfo";
33274 case StructureType::eCommandBufferAllocateInfo: return "CommandBufferAllocateInfo";
33275 case StructureType::eCommandBufferInheritanceInfo: return "CommandBufferInheritanceInfo";
33276 case StructureType::eCommandBufferBeginInfo: return "CommandBufferBeginInfo";
33277 case StructureType::eRenderPassBeginInfo: return "RenderPassBeginInfo";
33278 case StructureType::eBufferMemoryBarrier: return "BufferMemoryBarrier";
33279 case StructureType::eImageMemoryBarrier: return "ImageMemoryBarrier";
33280 case StructureType::eMemoryBarrier: return "MemoryBarrier";
33281 case StructureType::eLoaderInstanceCreateInfo: return "LoaderInstanceCreateInfo";
33282 case StructureType::eLoaderDeviceCreateInfo: return "LoaderDeviceCreateInfo";
33283 case StructureType::eSwapchainCreateInfoKHR: return "SwapchainCreateInfoKHR";
33284 case StructureType::ePresentInfoKHR: return "PresentInfoKHR";
33285 case StructureType::eDisplayModeCreateInfoKHR: return "DisplayModeCreateInfoKHR";
33286 case StructureType::eDisplaySurfaceCreateInfoKHR: return "DisplaySurfaceCreateInfoKHR";
33287 case StructureType::eDisplayPresentInfoKHR: return "DisplayPresentInfoKHR";
33288 case StructureType::eXlibSurfaceCreateInfoKHR: return "XlibSurfaceCreateInfoKHR";
33289 case StructureType::eXcbSurfaceCreateInfoKHR: return "XcbSurfaceCreateInfoKHR";
33290 case StructureType::eWaylandSurfaceCreateInfoKHR: return "WaylandSurfaceCreateInfoKHR";
33291 case StructureType::eMirSurfaceCreateInfoKHR: return "MirSurfaceCreateInfoKHR";
33292 case StructureType::eAndroidSurfaceCreateInfoKHR: return "AndroidSurfaceCreateInfoKHR";
33293 case StructureType::eWin32SurfaceCreateInfoKHR: return "Win32SurfaceCreateInfoKHR";
33294 case StructureType::eDebugReportCallbackCreateInfoEXT: return "DebugReportCallbackCreateInfoEXT";
33295 case StructureType::ePipelineRasterizationStateRasterizationOrderAMD: return "PipelineRasterizationStateRasterizationOrderAMD";
33296 case StructureType::eDebugMarkerObjectNameInfoEXT: return "DebugMarkerObjectNameInfoEXT";
33297 case StructureType::eDebugMarkerObjectTagInfoEXT: return "DebugMarkerObjectTagInfoEXT";
33298 case StructureType::eDebugMarkerMarkerInfoEXT: return "DebugMarkerMarkerInfoEXT";
33299 case StructureType::eDedicatedAllocationImageCreateInfoNV: return "DedicatedAllocationImageCreateInfoNV";
33300 case StructureType::eDedicatedAllocationBufferCreateInfoNV: return "DedicatedAllocationBufferCreateInfoNV";
33301 case StructureType::eDedicatedAllocationMemoryAllocateInfoNV: return "DedicatedAllocationMemoryAllocateInfoNV";
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060033302 case StructureType::eTextureLodGatherFormatPropertiesAMD: return "TextureLodGatherFormatPropertiesAMD";
Mark Young0f183a82017-02-28 09:58:04 -070033303 case StructureType::eRenderPassMultiviewCreateInfoKHX: return "RenderPassMultiviewCreateInfoKHX";
33304 case StructureType::ePhysicalDeviceMultiviewFeaturesKHX: return "PhysicalDeviceMultiviewFeaturesKHX";
33305 case StructureType::ePhysicalDeviceMultiviewPropertiesKHX: return "PhysicalDeviceMultiviewPropertiesKHX";
Lenny Komow6501c122016-08-31 15:03:49 -060033306 case StructureType::eExternalMemoryImageCreateInfoNV: return "ExternalMemoryImageCreateInfoNV";
33307 case StructureType::eExportMemoryAllocateInfoNV: return "ExportMemoryAllocateInfoNV";
33308 case StructureType::eImportMemoryWin32HandleInfoNV: return "ImportMemoryWin32HandleInfoNV";
33309 case StructureType::eExportMemoryWin32HandleInfoNV: return "ExportMemoryWin32HandleInfoNV";
33310 case StructureType::eWin32KeyedMutexAcquireReleaseInfoNV: return "Win32KeyedMutexAcquireReleaseInfoNV";
Mark Young39389872017-01-19 21:10:49 -070033311 case StructureType::ePhysicalDeviceFeatures2KHR: return "PhysicalDeviceFeatures2KHR";
33312 case StructureType::ePhysicalDeviceProperties2KHR: return "PhysicalDeviceProperties2KHR";
33313 case StructureType::eFormatProperties2KHR: return "FormatProperties2KHR";
33314 case StructureType::eImageFormatProperties2KHR: return "ImageFormatProperties2KHR";
33315 case StructureType::ePhysicalDeviceImageFormatInfo2KHR: return "PhysicalDeviceImageFormatInfo2KHR";
33316 case StructureType::eQueueFamilyProperties2KHR: return "QueueFamilyProperties2KHR";
33317 case StructureType::ePhysicalDeviceMemoryProperties2KHR: return "PhysicalDeviceMemoryProperties2KHR";
33318 case StructureType::eSparseImageFormatProperties2KHR: return "SparseImageFormatProperties2KHR";
33319 case StructureType::ePhysicalDeviceSparseImageFormatInfo2KHR: return "PhysicalDeviceSparseImageFormatInfo2KHR";
Mark Young0f183a82017-02-28 09:58:04 -070033320 case StructureType::eMemoryAllocateFlagsInfoKHX: return "MemoryAllocateFlagsInfoKHX";
Mark Young0f183a82017-02-28 09:58:04 -070033321 case StructureType::eDeviceGroupRenderPassBeginInfoKHX: return "DeviceGroupRenderPassBeginInfoKHX";
33322 case StructureType::eDeviceGroupCommandBufferBeginInfoKHX: return "DeviceGroupCommandBufferBeginInfoKHX";
33323 case StructureType::eDeviceGroupSubmitInfoKHX: return "DeviceGroupSubmitInfoKHX";
33324 case StructureType::eDeviceGroupBindSparseInfoKHX: return "DeviceGroupBindSparseInfoKHX";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033325 case StructureType::eAcquireNextImageInfoKHX: return "AcquireNextImageInfoKHX";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033326 case StructureType::eBindBufferMemoryDeviceGroupInfoKHX: return "BindBufferMemoryDeviceGroupInfoKHX";
33327 case StructureType::eBindImageMemoryDeviceGroupInfoKHX: return "BindImageMemoryDeviceGroupInfoKHX";
Mark Young0f183a82017-02-28 09:58:04 -070033328 case StructureType::eDeviceGroupPresentCapabilitiesKHX: return "DeviceGroupPresentCapabilitiesKHX";
33329 case StructureType::eImageSwapchainCreateInfoKHX: return "ImageSwapchainCreateInfoKHX";
33330 case StructureType::eBindImageMemorySwapchainInfoKHX: return "BindImageMemorySwapchainInfoKHX";
Mark Young0f183a82017-02-28 09:58:04 -070033331 case StructureType::eDeviceGroupPresentInfoKHX: return "DeviceGroupPresentInfoKHX";
33332 case StructureType::eDeviceGroupSwapchainCreateInfoKHX: return "DeviceGroupSwapchainCreateInfoKHX";
Lenny Komow68432d72016-09-29 14:16:59 -060033333 case StructureType::eValidationFlagsEXT: return "ValidationFlagsEXT";
Mark Young39389872017-01-19 21:10:49 -070033334 case StructureType::eViSurfaceCreateInfoNN: return "ViSurfaceCreateInfoNN";
Mark Young0f183a82017-02-28 09:58:04 -070033335 case StructureType::ePhysicalDeviceGroupPropertiesKHX: return "PhysicalDeviceGroupPropertiesKHX";
33336 case StructureType::eDeviceGroupDeviceCreateInfoKHX: return "DeviceGroupDeviceCreateInfoKHX";
Mark Youngabc2d6e2017-07-07 07:59:56 -060033337 case StructureType::ePhysicalDeviceExternalImageFormatInfoKHR: return "PhysicalDeviceExternalImageFormatInfoKHR";
33338 case StructureType::eExternalImageFormatPropertiesKHR: return "ExternalImageFormatPropertiesKHR";
33339 case StructureType::ePhysicalDeviceExternalBufferInfoKHR: return "PhysicalDeviceExternalBufferInfoKHR";
33340 case StructureType::eExternalBufferPropertiesKHR: return "ExternalBufferPropertiesKHR";
33341 case StructureType::ePhysicalDeviceIdPropertiesKHR: return "PhysicalDeviceIdPropertiesKHR";
33342 case StructureType::eExternalMemoryBufferCreateInfoKHR: return "ExternalMemoryBufferCreateInfoKHR";
33343 case StructureType::eExternalMemoryImageCreateInfoKHR: return "ExternalMemoryImageCreateInfoKHR";
33344 case StructureType::eExportMemoryAllocateInfoKHR: return "ExportMemoryAllocateInfoKHR";
33345 case StructureType::eImportMemoryWin32HandleInfoKHR: return "ImportMemoryWin32HandleInfoKHR";
33346 case StructureType::eExportMemoryWin32HandleInfoKHR: return "ExportMemoryWin32HandleInfoKHR";
33347 case StructureType::eMemoryWin32HandlePropertiesKHR: return "MemoryWin32HandlePropertiesKHR";
33348 case StructureType::eMemoryGetWin32HandleInfoKHR: return "MemoryGetWin32HandleInfoKHR";
33349 case StructureType::eImportMemoryFdInfoKHR: return "ImportMemoryFdInfoKHR";
33350 case StructureType::eMemoryFdPropertiesKHR: return "MemoryFdPropertiesKHR";
33351 case StructureType::eMemoryGetFdInfoKHR: return "MemoryGetFdInfoKHR";
33352 case StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR: return "Win32KeyedMutexAcquireReleaseInfoKHR";
33353 case StructureType::ePhysicalDeviceExternalSemaphoreInfoKHR: return "PhysicalDeviceExternalSemaphoreInfoKHR";
33354 case StructureType::eExternalSemaphorePropertiesKHR: return "ExternalSemaphorePropertiesKHR";
33355 case StructureType::eExportSemaphoreCreateInfoKHR: return "ExportSemaphoreCreateInfoKHR";
33356 case StructureType::eImportSemaphoreWin32HandleInfoKHR: return "ImportSemaphoreWin32HandleInfoKHR";
33357 case StructureType::eExportSemaphoreWin32HandleInfoKHR: return "ExportSemaphoreWin32HandleInfoKHR";
33358 case StructureType::eD3D12FenceSubmitInfoKHR: return "D3D12FenceSubmitInfoKHR";
33359 case StructureType::eSemaphoreGetWin32HandleInfoKHR: return "SemaphoreGetWin32HandleInfoKHR";
33360 case StructureType::eImportSemaphoreFdInfoKHR: return "ImportSemaphoreFdInfoKHR";
33361 case StructureType::eSemaphoreGetFdInfoKHR: return "SemaphoreGetFdInfoKHR";
Mark Young0f183a82017-02-28 09:58:04 -070033362 case StructureType::ePhysicalDevicePushDescriptorPropertiesKHR: return "PhysicalDevicePushDescriptorPropertiesKHR";
Mark Youngabc2d6e2017-07-07 07:59:56 -060033363 case StructureType::ePhysicalDevice16BitStorageFeaturesKHR: return "PhysicalDevice16BitStorageFeaturesKHR";
Mark Lobodzinski3289d762017-04-03 08:22:04 -060033364 case StructureType::ePresentRegionsKHR: return "PresentRegionsKHR";
Mark Young0f183a82017-02-28 09:58:04 -070033365 case StructureType::eDescriptorUpdateTemplateCreateInfoKHR: return "DescriptorUpdateTemplateCreateInfoKHR";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033366 case StructureType::eObjectTableCreateInfoNVX: return "ObjectTableCreateInfoNVX";
33367 case StructureType::eIndirectCommandsLayoutCreateInfoNVX: return "IndirectCommandsLayoutCreateInfoNVX";
33368 case StructureType::eCmdProcessCommandsInfoNVX: return "CmdProcessCommandsInfoNVX";
33369 case StructureType::eCmdReserveSpaceForCommandsInfoNVX: return "CmdReserveSpaceForCommandsInfoNVX";
33370 case StructureType::eDeviceGeneratedCommandsLimitsNVX: return "DeviceGeneratedCommandsLimitsNVX";
33371 case StructureType::eDeviceGeneratedCommandsFeaturesNVX: return "DeviceGeneratedCommandsFeaturesNVX";
Mark Young0f183a82017-02-28 09:58:04 -070033372 case StructureType::ePipelineViewportWScalingStateCreateInfoNV: return "PipelineViewportWScalingStateCreateInfoNV";
Mark Young39389872017-01-19 21:10:49 -070033373 case StructureType::eSurfaceCapabilities2EXT: return "SurfaceCapabilities2EXT";
33374 case StructureType::eDisplayPowerInfoEXT: return "DisplayPowerInfoEXT";
33375 case StructureType::eDeviceEventInfoEXT: return "DeviceEventInfoEXT";
33376 case StructureType::eDisplayEventInfoEXT: return "DisplayEventInfoEXT";
33377 case StructureType::eSwapchainCounterCreateInfoEXT: return "SwapchainCounterCreateInfoEXT";
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060033378 case StructureType::ePresentTimesInfoGOOGLE: return "PresentTimesInfoGOOGLE";
Mark Young0f183a82017-02-28 09:58:04 -070033379 case StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX: return "PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX";
33380 case StructureType::ePipelineViewportSwizzleStateCreateInfoNV: return "PipelineViewportSwizzleStateCreateInfoNV";
33381 case StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT: return "PhysicalDeviceDiscardRectanglePropertiesEXT";
33382 case StructureType::ePipelineDiscardRectangleStateCreateInfoEXT: return "PipelineDiscardRectangleStateCreateInfoEXT";
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060033383 case StructureType::eHdrMetadataEXT: return "HdrMetadataEXT";
Mark Lobodzinski54385432017-05-15 10:27:52 -060033384 case StructureType::eSharedPresentSurfaceCapabilitiesKHR: return "SharedPresentSurfaceCapabilitiesKHR";
Mark Youngabc2d6e2017-07-07 07:59:56 -060033385 case StructureType::ePhysicalDeviceExternalFenceInfoKHR: return "PhysicalDeviceExternalFenceInfoKHR";
33386 case StructureType::eExternalFencePropertiesKHR: return "ExternalFencePropertiesKHR";
33387 case StructureType::eExportFenceCreateInfoKHR: return "ExportFenceCreateInfoKHR";
33388 case StructureType::eImportFenceWin32HandleInfoKHR: return "ImportFenceWin32HandleInfoKHR";
33389 case StructureType::eExportFenceWin32HandleInfoKHR: return "ExportFenceWin32HandleInfoKHR";
33390 case StructureType::eFenceGetWin32HandleInfoKHR: return "FenceGetWin32HandleInfoKHR";
33391 case StructureType::eImportFenceFdInfoKHR: return "ImportFenceFdInfoKHR";
33392 case StructureType::eFenceGetFdInfoKHR: return "FenceGetFdInfoKHR";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033393 case StructureType::ePhysicalDevicePointClippingPropertiesKHR: return "PhysicalDevicePointClippingPropertiesKHR";
33394 case StructureType::eRenderPassInputAttachmentAspectCreateInfoKHR: return "RenderPassInputAttachmentAspectCreateInfoKHR";
33395 case StructureType::eImageViewUsageCreateInfoKHR: return "ImageViewUsageCreateInfoKHR";
33396 case StructureType::ePipelineTessellationDomainOriginStateCreateInfoKHR: return "PipelineTessellationDomainOriginStateCreateInfoKHR";
Mark Lobodzinski54385432017-05-15 10:27:52 -060033397 case StructureType::ePhysicalDeviceSurfaceInfo2KHR: return "PhysicalDeviceSurfaceInfo2KHR";
33398 case StructureType::eSurfaceCapabilities2KHR: return "SurfaceCapabilities2KHR";
33399 case StructureType::eSurfaceFormat2KHR: return "SurfaceFormat2KHR";
Mark Youngabc2d6e2017-07-07 07:59:56 -060033400 case StructureType::ePhysicalDeviceVariablePointerFeaturesKHR: return "PhysicalDeviceVariablePointerFeaturesKHR";
Mark Young0f183a82017-02-28 09:58:04 -070033401 case StructureType::eIosSurfaceCreateInfoMVK: return "IosSurfaceCreateInfoMVK";
33402 case StructureType::eMacosSurfaceCreateInfoMVK: return "MacosSurfaceCreateInfoMVK";
Mark Youngabc2d6e2017-07-07 07:59:56 -060033403 case StructureType::eMemoryDedicatedRequirementsKHR: return "MemoryDedicatedRequirementsKHR";
33404 case StructureType::eMemoryDedicatedAllocateInfoKHR: return "MemoryDedicatedAllocateInfoKHR";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060033405 case StructureType::ePhysicalDeviceSamplerFilterMinmaxPropertiesEXT: return "PhysicalDeviceSamplerFilterMinmaxPropertiesEXT";
33406 case StructureType::eSamplerReductionModeCreateInfoEXT: return "SamplerReductionModeCreateInfoEXT";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033407 case StructureType::eSampleLocationsInfoEXT: return "SampleLocationsInfoEXT";
33408 case StructureType::eRenderPassSampleLocationsBeginInfoEXT: return "RenderPassSampleLocationsBeginInfoEXT";
33409 case StructureType::ePipelineSampleLocationsStateCreateInfoEXT: return "PipelineSampleLocationsStateCreateInfoEXT";
33410 case StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT: return "PhysicalDeviceSampleLocationsPropertiesEXT";
33411 case StructureType::eMultisamplePropertiesEXT: return "MultisamplePropertiesEXT";
Mark Youngabc2d6e2017-07-07 07:59:56 -060033412 case StructureType::eBufferMemoryRequirementsInfo2KHR: return "BufferMemoryRequirementsInfo2KHR";
33413 case StructureType::eImageMemoryRequirementsInfo2KHR: return "ImageMemoryRequirementsInfo2KHR";
33414 case StructureType::eImageSparseMemoryRequirementsInfo2KHR: return "ImageSparseMemoryRequirementsInfo2KHR";
33415 case StructureType::eMemoryRequirements2KHR: return "MemoryRequirements2KHR";
33416 case StructureType::eSparseImageMemoryRequirements2KHR: return "SparseImageMemoryRequirements2KHR";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033417 case StructureType::eImageFormatListCreateInfoKHR: return "ImageFormatListCreateInfoKHR";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060033418 case StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT: return "PhysicalDeviceBlendOperationAdvancedFeaturesEXT";
33419 case StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT: return "PhysicalDeviceBlendOperationAdvancedPropertiesEXT";
33420 case StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT: return "PipelineColorBlendAdvancedStateCreateInfoEXT";
33421 case StructureType::ePipelineCoverageToColorStateCreateInfoNV: return "PipelineCoverageToColorStateCreateInfoNV";
33422 case StructureType::ePipelineCoverageModulationStateCreateInfoNV: return "PipelineCoverageModulationStateCreateInfoNV";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033423 case StructureType::eSamplerYcbcrConversionCreateInfoKHR: return "SamplerYcbcrConversionCreateInfoKHR";
33424 case StructureType::eSamplerYcbcrConversionInfoKHR: return "SamplerYcbcrConversionInfoKHR";
33425 case StructureType::eBindImagePlaneMemoryInfoKHR: return "BindImagePlaneMemoryInfoKHR";
33426 case StructureType::eImagePlaneMemoryRequirementsInfoKHR: return "ImagePlaneMemoryRequirementsInfoKHR";
33427 case StructureType::ePhysicalDeviceSamplerYcbcrConversionFeaturesKHR: return "PhysicalDeviceSamplerYcbcrConversionFeaturesKHR";
33428 case StructureType::eSamplerYcbcrConversionImageFormatPropertiesKHR: return "SamplerYcbcrConversionImageFormatPropertiesKHR";
33429 case StructureType::eBindBufferMemoryInfoKHR: return "BindBufferMemoryInfoKHR";
33430 case StructureType::eBindImageMemoryInfoKHR: return "BindImageMemoryInfoKHR";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033431 case StructureType::eValidationCacheCreateInfoEXT: return "ValidationCacheCreateInfoEXT";
33432 case StructureType::eShaderModuleValidationCacheCreateInfoEXT: return "ShaderModuleValidationCacheCreateInfoEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033433 default: return "invalid";
33434 }
33435 }
33436
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033437 VULKAN_HPP_INLINE std::string to_string(SubpassContents value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033438 {
33439 switch (value)
33440 {
33441 case SubpassContents::eInline: return "Inline";
33442 case SubpassContents::eSecondaryCommandBuffers: return "SecondaryCommandBuffers";
33443 default: return "invalid";
33444 }
33445 }
33446
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033447 VULKAN_HPP_INLINE std::string to_string(DynamicState value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033448 {
33449 switch (value)
33450 {
33451 case DynamicState::eViewport: return "Viewport";
33452 case DynamicState::eScissor: return "Scissor";
33453 case DynamicState::eLineWidth: return "LineWidth";
33454 case DynamicState::eDepthBias: return "DepthBias";
33455 case DynamicState::eBlendConstants: return "BlendConstants";
33456 case DynamicState::eDepthBounds: return "DepthBounds";
33457 case DynamicState::eStencilCompareMask: return "StencilCompareMask";
33458 case DynamicState::eStencilWriteMask: return "StencilWriteMask";
33459 case DynamicState::eStencilReference: return "StencilReference";
Mark Young0f183a82017-02-28 09:58:04 -070033460 case DynamicState::eViewportWScalingNV: return "ViewportWScalingNV";
33461 case DynamicState::eDiscardRectangleEXT: return "DiscardRectangleEXT";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033462 case DynamicState::eSampleLocationsEXT: return "SampleLocationsEXT";
Mark Young0f183a82017-02-28 09:58:04 -070033463 default: return "invalid";
33464 }
33465 }
33466
33467 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateTypeKHR value)
33468 {
33469 switch (value)
33470 {
33471 case DescriptorUpdateTemplateTypeKHR::eDescriptorSet: return "DescriptorSet";
33472 case DescriptorUpdateTemplateTypeKHR::ePushDescriptors: return "PushDescriptors";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033473 default: return "invalid";
33474 }
33475 }
33476
Mark Lobodzinski54385432017-05-15 10:27:52 -060033477 VULKAN_HPP_INLINE std::string to_string(ObjectType value)
33478 {
33479 switch (value)
33480 {
33481 case ObjectType::eUnknown: return "Unknown";
33482 case ObjectType::eInstance: return "Instance";
33483 case ObjectType::ePhysicalDevice: return "PhysicalDevice";
33484 case ObjectType::eDevice: return "Device";
33485 case ObjectType::eQueue: return "Queue";
33486 case ObjectType::eSemaphore: return "Semaphore";
33487 case ObjectType::eCommandBuffer: return "CommandBuffer";
33488 case ObjectType::eFence: return "Fence";
33489 case ObjectType::eDeviceMemory: return "DeviceMemory";
33490 case ObjectType::eBuffer: return "Buffer";
33491 case ObjectType::eImage: return "Image";
33492 case ObjectType::eEvent: return "Event";
33493 case ObjectType::eQueryPool: return "QueryPool";
33494 case ObjectType::eBufferView: return "BufferView";
33495 case ObjectType::eImageView: return "ImageView";
33496 case ObjectType::eShaderModule: return "ShaderModule";
33497 case ObjectType::ePipelineCache: return "PipelineCache";
33498 case ObjectType::ePipelineLayout: return "PipelineLayout";
33499 case ObjectType::eRenderPass: return "RenderPass";
33500 case ObjectType::ePipeline: return "Pipeline";
33501 case ObjectType::eDescriptorSetLayout: return "DescriptorSetLayout";
33502 case ObjectType::eSampler: return "Sampler";
33503 case ObjectType::eDescriptorPool: return "DescriptorPool";
33504 case ObjectType::eDescriptorSet: return "DescriptorSet";
33505 case ObjectType::eFramebuffer: return "Framebuffer";
33506 case ObjectType::eCommandPool: return "CommandPool";
33507 case ObjectType::eSurfaceKHR: return "SurfaceKHR";
33508 case ObjectType::eSwapchainKHR: return "SwapchainKHR";
33509 case ObjectType::eDisplayKHR: return "DisplayKHR";
33510 case ObjectType::eDisplayModeKHR: return "DisplayModeKHR";
33511 case ObjectType::eDebugReportCallbackEXT: return "DebugReportCallbackEXT";
33512 case ObjectType::eDescriptorUpdateTemplateKHR: return "DescriptorUpdateTemplateKHR";
33513 case ObjectType::eObjectTableNVX: return "ObjectTableNVX";
33514 case ObjectType::eIndirectCommandsLayoutNVX: return "IndirectCommandsLayoutNVX";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033515 case ObjectType::eSamplerYcbcrConversionKHR: return "SamplerYcbcrConversionKHR";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033516 case ObjectType::eValidationCacheEXT: return "ValidationCacheEXT";
Mark Lobodzinski54385432017-05-15 10:27:52 -060033517 default: return "invalid";
33518 }
33519 }
33520
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033521 VULKAN_HPP_INLINE std::string to_string(QueueFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033522 {
33523 switch (value)
33524 {
33525 case QueueFlagBits::eGraphics: return "Graphics";
33526 case QueueFlagBits::eCompute: return "Compute";
33527 case QueueFlagBits::eTransfer: return "Transfer";
33528 case QueueFlagBits::eSparseBinding: return "SparseBinding";
33529 default: return "invalid";
33530 }
33531 }
33532
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033533 VULKAN_HPP_INLINE std::string to_string(QueueFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033534 {
33535 if (!value) return "{}";
33536 std::string result;
33537 if (value & QueueFlagBits::eGraphics) result += "Graphics | ";
33538 if (value & QueueFlagBits::eCompute) result += "Compute | ";
33539 if (value & QueueFlagBits::eTransfer) result += "Transfer | ";
33540 if (value & QueueFlagBits::eSparseBinding) result += "SparseBinding | ";
33541 return "{" + result.substr(0, result.size() - 3) + "}";
33542 }
33543
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033544 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033545 {
33546 switch (value)
33547 {
33548 case MemoryPropertyFlagBits::eDeviceLocal: return "DeviceLocal";
33549 case MemoryPropertyFlagBits::eHostVisible: return "HostVisible";
33550 case MemoryPropertyFlagBits::eHostCoherent: return "HostCoherent";
33551 case MemoryPropertyFlagBits::eHostCached: return "HostCached";
33552 case MemoryPropertyFlagBits::eLazilyAllocated: return "LazilyAllocated";
33553 default: return "invalid";
33554 }
33555 }
33556
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033557 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033558 {
33559 if (!value) return "{}";
33560 std::string result;
33561 if (value & MemoryPropertyFlagBits::eDeviceLocal) result += "DeviceLocal | ";
33562 if (value & MemoryPropertyFlagBits::eHostVisible) result += "HostVisible | ";
33563 if (value & MemoryPropertyFlagBits::eHostCoherent) result += "HostCoherent | ";
33564 if (value & MemoryPropertyFlagBits::eHostCached) result += "HostCached | ";
33565 if (value & MemoryPropertyFlagBits::eLazilyAllocated) result += "LazilyAllocated | ";
33566 return "{" + result.substr(0, result.size() - 3) + "}";
33567 }
33568
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033569 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033570 {
33571 switch (value)
33572 {
33573 case MemoryHeapFlagBits::eDeviceLocal: return "DeviceLocal";
Mark Young0f183a82017-02-28 09:58:04 -070033574 case MemoryHeapFlagBits::eMultiInstanceKHX: return "MultiInstanceKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033575 default: return "invalid";
33576 }
33577 }
33578
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033579 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033580 {
33581 if (!value) return "{}";
33582 std::string result;
33583 if (value & MemoryHeapFlagBits::eDeviceLocal) result += "DeviceLocal | ";
Mark Young0f183a82017-02-28 09:58:04 -070033584 if (value & MemoryHeapFlagBits::eMultiInstanceKHX) result += "MultiInstanceKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033585 return "{" + result.substr(0, result.size() - 3) + "}";
33586 }
33587
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033588 VULKAN_HPP_INLINE std::string to_string(AccessFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033589 {
33590 switch (value)
33591 {
33592 case AccessFlagBits::eIndirectCommandRead: return "IndirectCommandRead";
33593 case AccessFlagBits::eIndexRead: return "IndexRead";
33594 case AccessFlagBits::eVertexAttributeRead: return "VertexAttributeRead";
33595 case AccessFlagBits::eUniformRead: return "UniformRead";
33596 case AccessFlagBits::eInputAttachmentRead: return "InputAttachmentRead";
33597 case AccessFlagBits::eShaderRead: return "ShaderRead";
33598 case AccessFlagBits::eShaderWrite: return "ShaderWrite";
33599 case AccessFlagBits::eColorAttachmentRead: return "ColorAttachmentRead";
33600 case AccessFlagBits::eColorAttachmentWrite: return "ColorAttachmentWrite";
33601 case AccessFlagBits::eDepthStencilAttachmentRead: return "DepthStencilAttachmentRead";
33602 case AccessFlagBits::eDepthStencilAttachmentWrite: return "DepthStencilAttachmentWrite";
33603 case AccessFlagBits::eTransferRead: return "TransferRead";
33604 case AccessFlagBits::eTransferWrite: return "TransferWrite";
33605 case AccessFlagBits::eHostRead: return "HostRead";
33606 case AccessFlagBits::eHostWrite: return "HostWrite";
33607 case AccessFlagBits::eMemoryRead: return "MemoryRead";
33608 case AccessFlagBits::eMemoryWrite: return "MemoryWrite";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033609 case AccessFlagBits::eCommandProcessReadNVX: return "CommandProcessReadNVX";
33610 case AccessFlagBits::eCommandProcessWriteNVX: return "CommandProcessWriteNVX";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060033611 case AccessFlagBits::eColorAttachmentReadNoncoherentEXT: return "ColorAttachmentReadNoncoherentEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033612 default: return "invalid";
33613 }
33614 }
33615
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033616 VULKAN_HPP_INLINE std::string to_string(AccessFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033617 {
33618 if (!value) return "{}";
33619 std::string result;
33620 if (value & AccessFlagBits::eIndirectCommandRead) result += "IndirectCommandRead | ";
33621 if (value & AccessFlagBits::eIndexRead) result += "IndexRead | ";
33622 if (value & AccessFlagBits::eVertexAttributeRead) result += "VertexAttributeRead | ";
33623 if (value & AccessFlagBits::eUniformRead) result += "UniformRead | ";
33624 if (value & AccessFlagBits::eInputAttachmentRead) result += "InputAttachmentRead | ";
33625 if (value & AccessFlagBits::eShaderRead) result += "ShaderRead | ";
33626 if (value & AccessFlagBits::eShaderWrite) result += "ShaderWrite | ";
33627 if (value & AccessFlagBits::eColorAttachmentRead) result += "ColorAttachmentRead | ";
33628 if (value & AccessFlagBits::eColorAttachmentWrite) result += "ColorAttachmentWrite | ";
33629 if (value & AccessFlagBits::eDepthStencilAttachmentRead) result += "DepthStencilAttachmentRead | ";
33630 if (value & AccessFlagBits::eDepthStencilAttachmentWrite) result += "DepthStencilAttachmentWrite | ";
33631 if (value & AccessFlagBits::eTransferRead) result += "TransferRead | ";
33632 if (value & AccessFlagBits::eTransferWrite) result += "TransferWrite | ";
33633 if (value & AccessFlagBits::eHostRead) result += "HostRead | ";
33634 if (value & AccessFlagBits::eHostWrite) result += "HostWrite | ";
33635 if (value & AccessFlagBits::eMemoryRead) result += "MemoryRead | ";
33636 if (value & AccessFlagBits::eMemoryWrite) result += "MemoryWrite | ";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033637 if (value & AccessFlagBits::eCommandProcessReadNVX) result += "CommandProcessReadNVX | ";
33638 if (value & AccessFlagBits::eCommandProcessWriteNVX) result += "CommandProcessWriteNVX | ";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060033639 if (value & AccessFlagBits::eColorAttachmentReadNoncoherentEXT) result += "ColorAttachmentReadNoncoherentEXT | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033640 return "{" + result.substr(0, result.size() - 3) + "}";
33641 }
33642
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033643 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033644 {
33645 switch (value)
33646 {
33647 case BufferUsageFlagBits::eTransferSrc: return "TransferSrc";
33648 case BufferUsageFlagBits::eTransferDst: return "TransferDst";
33649 case BufferUsageFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
33650 case BufferUsageFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
33651 case BufferUsageFlagBits::eUniformBuffer: return "UniformBuffer";
33652 case BufferUsageFlagBits::eStorageBuffer: return "StorageBuffer";
33653 case BufferUsageFlagBits::eIndexBuffer: return "IndexBuffer";
33654 case BufferUsageFlagBits::eVertexBuffer: return "VertexBuffer";
33655 case BufferUsageFlagBits::eIndirectBuffer: return "IndirectBuffer";
33656 default: return "invalid";
33657 }
33658 }
33659
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033660 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033661 {
33662 if (!value) return "{}";
33663 std::string result;
33664 if (value & BufferUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
33665 if (value & BufferUsageFlagBits::eTransferDst) result += "TransferDst | ";
33666 if (value & BufferUsageFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
33667 if (value & BufferUsageFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
33668 if (value & BufferUsageFlagBits::eUniformBuffer) result += "UniformBuffer | ";
33669 if (value & BufferUsageFlagBits::eStorageBuffer) result += "StorageBuffer | ";
33670 if (value & BufferUsageFlagBits::eIndexBuffer) result += "IndexBuffer | ";
33671 if (value & BufferUsageFlagBits::eVertexBuffer) result += "VertexBuffer | ";
33672 if (value & BufferUsageFlagBits::eIndirectBuffer) result += "IndirectBuffer | ";
33673 return "{" + result.substr(0, result.size() - 3) + "}";
33674 }
33675
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033676 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033677 {
33678 switch (value)
33679 {
33680 case BufferCreateFlagBits::eSparseBinding: return "SparseBinding";
33681 case BufferCreateFlagBits::eSparseResidency: return "SparseResidency";
33682 case BufferCreateFlagBits::eSparseAliased: return "SparseAliased";
33683 default: return "invalid";
33684 }
33685 }
33686
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033687 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033688 {
33689 if (!value) return "{}";
33690 std::string result;
33691 if (value & BufferCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
33692 if (value & BufferCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
33693 if (value & BufferCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
33694 return "{" + result.substr(0, result.size() - 3) + "}";
33695 }
33696
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033697 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033698 {
33699 switch (value)
33700 {
33701 case ShaderStageFlagBits::eVertex: return "Vertex";
33702 case ShaderStageFlagBits::eTessellationControl: return "TessellationControl";
33703 case ShaderStageFlagBits::eTessellationEvaluation: return "TessellationEvaluation";
33704 case ShaderStageFlagBits::eGeometry: return "Geometry";
33705 case ShaderStageFlagBits::eFragment: return "Fragment";
33706 case ShaderStageFlagBits::eCompute: return "Compute";
33707 case ShaderStageFlagBits::eAllGraphics: return "AllGraphics";
33708 case ShaderStageFlagBits::eAll: return "All";
33709 default: return "invalid";
33710 }
33711 }
33712
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033713 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033714 {
33715 if (!value) return "{}";
33716 std::string result;
33717 if (value & ShaderStageFlagBits::eVertex) result += "Vertex | ";
33718 if (value & ShaderStageFlagBits::eTessellationControl) result += "TessellationControl | ";
33719 if (value & ShaderStageFlagBits::eTessellationEvaluation) result += "TessellationEvaluation | ";
33720 if (value & ShaderStageFlagBits::eGeometry) result += "Geometry | ";
33721 if (value & ShaderStageFlagBits::eFragment) result += "Fragment | ";
33722 if (value & ShaderStageFlagBits::eCompute) result += "Compute | ";
33723 if (value & ShaderStageFlagBits::eAllGraphics) result += "AllGraphics | ";
33724 if (value & ShaderStageFlagBits::eAll) result += "All | ";
33725 return "{" + result.substr(0, result.size() - 3) + "}";
33726 }
33727
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033728 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033729 {
33730 switch (value)
33731 {
33732 case ImageUsageFlagBits::eTransferSrc: return "TransferSrc";
33733 case ImageUsageFlagBits::eTransferDst: return "TransferDst";
33734 case ImageUsageFlagBits::eSampled: return "Sampled";
33735 case ImageUsageFlagBits::eStorage: return "Storage";
33736 case ImageUsageFlagBits::eColorAttachment: return "ColorAttachment";
33737 case ImageUsageFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
33738 case ImageUsageFlagBits::eTransientAttachment: return "TransientAttachment";
33739 case ImageUsageFlagBits::eInputAttachment: return "InputAttachment";
33740 default: return "invalid";
33741 }
33742 }
33743
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033744 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033745 {
33746 if (!value) return "{}";
33747 std::string result;
33748 if (value & ImageUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
33749 if (value & ImageUsageFlagBits::eTransferDst) result += "TransferDst | ";
33750 if (value & ImageUsageFlagBits::eSampled) result += "Sampled | ";
33751 if (value & ImageUsageFlagBits::eStorage) result += "Storage | ";
33752 if (value & ImageUsageFlagBits::eColorAttachment) result += "ColorAttachment | ";
33753 if (value & ImageUsageFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
33754 if (value & ImageUsageFlagBits::eTransientAttachment) result += "TransientAttachment | ";
33755 if (value & ImageUsageFlagBits::eInputAttachment) result += "InputAttachment | ";
33756 return "{" + result.substr(0, result.size() - 3) + "}";
33757 }
33758
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033759 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033760 {
33761 switch (value)
33762 {
33763 case ImageCreateFlagBits::eSparseBinding: return "SparseBinding";
33764 case ImageCreateFlagBits::eSparseResidency: return "SparseResidency";
33765 case ImageCreateFlagBits::eSparseAliased: return "SparseAliased";
33766 case ImageCreateFlagBits::eMutableFormat: return "MutableFormat";
33767 case ImageCreateFlagBits::eCubeCompatible: return "CubeCompatible";
Mark Young0f183a82017-02-28 09:58:04 -070033768 case ImageCreateFlagBits::eBindSfrKHX: return "BindSfrKHX";
Mark Young39389872017-01-19 21:10:49 -070033769 case ImageCreateFlagBits::e2DArrayCompatibleKHR: return "2DArrayCompatibleKHR";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033770 case ImageCreateFlagBits::eBlockTexelViewCompatibleKHR: return "BlockTexelViewCompatibleKHR";
33771 case ImageCreateFlagBits::eExtendedUsageKHR: return "ExtendedUsageKHR";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033772 case ImageCreateFlagBits::eSampleLocationsCompatibleDepthEXT: return "SampleLocationsCompatibleDepthEXT";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033773 case ImageCreateFlagBits::eDisjointKHR: return "DisjointKHR";
33774 case ImageCreateFlagBits::eAliasKHR: return "AliasKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033775 default: return "invalid";
33776 }
33777 }
33778
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033779 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033780 {
33781 if (!value) return "{}";
33782 std::string result;
33783 if (value & ImageCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
33784 if (value & ImageCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
33785 if (value & ImageCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
33786 if (value & ImageCreateFlagBits::eMutableFormat) result += "MutableFormat | ";
33787 if (value & ImageCreateFlagBits::eCubeCompatible) result += "CubeCompatible | ";
Mark Young0f183a82017-02-28 09:58:04 -070033788 if (value & ImageCreateFlagBits::eBindSfrKHX) result += "BindSfrKHX | ";
Mark Young39389872017-01-19 21:10:49 -070033789 if (value & ImageCreateFlagBits::e2DArrayCompatibleKHR) result += "2DArrayCompatibleKHR | ";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033790 if (value & ImageCreateFlagBits::eBlockTexelViewCompatibleKHR) result += "BlockTexelViewCompatibleKHR | ";
33791 if (value & ImageCreateFlagBits::eExtendedUsageKHR) result += "ExtendedUsageKHR | ";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033792 if (value & ImageCreateFlagBits::eSampleLocationsCompatibleDepthEXT) result += "SampleLocationsCompatibleDepthEXT | ";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033793 if (value & ImageCreateFlagBits::eDisjointKHR) result += "DisjointKHR | ";
33794 if (value & ImageCreateFlagBits::eAliasKHR) result += "AliasKHR | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033795 return "{" + result.substr(0, result.size() - 3) + "}";
33796 }
33797
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033798 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033799 {
33800 switch (value)
33801 {
33802 case PipelineCreateFlagBits::eDisableOptimization: return "DisableOptimization";
33803 case PipelineCreateFlagBits::eAllowDerivatives: return "AllowDerivatives";
33804 case PipelineCreateFlagBits::eDerivative: return "Derivative";
Mark Young0f183a82017-02-28 09:58:04 -070033805 case PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX: return "ViewIndexFromDeviceIndexKHX";
33806 case PipelineCreateFlagBits::eDispatchBaseKHX: return "DispatchBaseKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033807 default: return "invalid";
33808 }
33809 }
33810
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033811 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033812 {
33813 if (!value) return "{}";
33814 std::string result;
33815 if (value & PipelineCreateFlagBits::eDisableOptimization) result += "DisableOptimization | ";
33816 if (value & PipelineCreateFlagBits::eAllowDerivatives) result += "AllowDerivatives | ";
33817 if (value & PipelineCreateFlagBits::eDerivative) result += "Derivative | ";
Mark Young0f183a82017-02-28 09:58:04 -070033818 if (value & PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX) result += "ViewIndexFromDeviceIndexKHX | ";
33819 if (value & PipelineCreateFlagBits::eDispatchBaseKHX) result += "DispatchBaseKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033820 return "{" + result.substr(0, result.size() - 3) + "}";
33821 }
33822
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033823 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033824 {
33825 switch (value)
33826 {
33827 case ColorComponentFlagBits::eR: return "R";
33828 case ColorComponentFlagBits::eG: return "G";
33829 case ColorComponentFlagBits::eB: return "B";
33830 case ColorComponentFlagBits::eA: return "A";
33831 default: return "invalid";
33832 }
33833 }
33834
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033835 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033836 {
33837 if (!value) return "{}";
33838 std::string result;
33839 if (value & ColorComponentFlagBits::eR) result += "R | ";
33840 if (value & ColorComponentFlagBits::eG) result += "G | ";
33841 if (value & ColorComponentFlagBits::eB) result += "B | ";
33842 if (value & ColorComponentFlagBits::eA) result += "A | ";
33843 return "{" + result.substr(0, result.size() - 3) + "}";
33844 }
33845
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033846 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033847 {
33848 switch (value)
33849 {
33850 case FenceCreateFlagBits::eSignaled: return "Signaled";
33851 default: return "invalid";
33852 }
33853 }
33854
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033855 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033856 {
33857 if (!value) return "{}";
33858 std::string result;
33859 if (value & FenceCreateFlagBits::eSignaled) result += "Signaled | ";
33860 return "{" + result.substr(0, result.size() - 3) + "}";
33861 }
33862
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033863 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033864 {
33865 switch (value)
33866 {
33867 case FormatFeatureFlagBits::eSampledImage: return "SampledImage";
33868 case FormatFeatureFlagBits::eStorageImage: return "StorageImage";
33869 case FormatFeatureFlagBits::eStorageImageAtomic: return "StorageImageAtomic";
33870 case FormatFeatureFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
33871 case FormatFeatureFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
33872 case FormatFeatureFlagBits::eStorageTexelBufferAtomic: return "StorageTexelBufferAtomic";
33873 case FormatFeatureFlagBits::eVertexBuffer: return "VertexBuffer";
33874 case FormatFeatureFlagBits::eColorAttachment: return "ColorAttachment";
33875 case FormatFeatureFlagBits::eColorAttachmentBlend: return "ColorAttachmentBlend";
33876 case FormatFeatureFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
33877 case FormatFeatureFlagBits::eBlitSrc: return "BlitSrc";
33878 case FormatFeatureFlagBits::eBlitDst: return "BlitDst";
33879 case FormatFeatureFlagBits::eSampledImageFilterLinear: return "SampledImageFilterLinear";
33880 case FormatFeatureFlagBits::eSampledImageFilterCubicIMG: return "SampledImageFilterCubicIMG";
Mark Young39389872017-01-19 21:10:49 -070033881 case FormatFeatureFlagBits::eTransferSrcKHR: return "TransferSrcKHR";
33882 case FormatFeatureFlagBits::eTransferDstKHR: return "TransferDstKHR";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060033883 case FormatFeatureFlagBits::eSampledImageFilterMinmaxEXT: return "SampledImageFilterMinmaxEXT";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033884 case FormatFeatureFlagBits::eMidpointChromaSamplesKHR: return "MidpointChromaSamplesKHR";
33885 case FormatFeatureFlagBits::eSampledImageYcbcrConversionLinearFilterKHR: return "SampledImageYcbcrConversionLinearFilterKHR";
33886 case FormatFeatureFlagBits::eSampledImageYcbcrConversionSeparateReconstructionFilterKHR: return "SampledImageYcbcrConversionSeparateReconstructionFilterKHR";
33887 case FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitKHR: return "SampledImageYcbcrConversionChromaReconstructionExplicitKHR";
33888 case FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR: return "SampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR";
33889 case FormatFeatureFlagBits::eDisjointKHR: return "DisjointKHR";
33890 case FormatFeatureFlagBits::eCositedChromaSamplesKHR: return "CositedChromaSamplesKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033891 default: return "invalid";
33892 }
33893 }
33894
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033895 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033896 {
33897 if (!value) return "{}";
33898 std::string result;
33899 if (value & FormatFeatureFlagBits::eSampledImage) result += "SampledImage | ";
33900 if (value & FormatFeatureFlagBits::eStorageImage) result += "StorageImage | ";
33901 if (value & FormatFeatureFlagBits::eStorageImageAtomic) result += "StorageImageAtomic | ";
33902 if (value & FormatFeatureFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
33903 if (value & FormatFeatureFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
33904 if (value & FormatFeatureFlagBits::eStorageTexelBufferAtomic) result += "StorageTexelBufferAtomic | ";
33905 if (value & FormatFeatureFlagBits::eVertexBuffer) result += "VertexBuffer | ";
33906 if (value & FormatFeatureFlagBits::eColorAttachment) result += "ColorAttachment | ";
33907 if (value & FormatFeatureFlagBits::eColorAttachmentBlend) result += "ColorAttachmentBlend | ";
33908 if (value & FormatFeatureFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
33909 if (value & FormatFeatureFlagBits::eBlitSrc) result += "BlitSrc | ";
33910 if (value & FormatFeatureFlagBits::eBlitDst) result += "BlitDst | ";
33911 if (value & FormatFeatureFlagBits::eSampledImageFilterLinear) result += "SampledImageFilterLinear | ";
33912 if (value & FormatFeatureFlagBits::eSampledImageFilterCubicIMG) result += "SampledImageFilterCubicIMG | ";
Mark Young39389872017-01-19 21:10:49 -070033913 if (value & FormatFeatureFlagBits::eTransferSrcKHR) result += "TransferSrcKHR | ";
33914 if (value & FormatFeatureFlagBits::eTransferDstKHR) result += "TransferDstKHR | ";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060033915 if (value & FormatFeatureFlagBits::eSampledImageFilterMinmaxEXT) result += "SampledImageFilterMinmaxEXT | ";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033916 if (value & FormatFeatureFlagBits::eMidpointChromaSamplesKHR) result += "MidpointChromaSamplesKHR | ";
33917 if (value & FormatFeatureFlagBits::eSampledImageYcbcrConversionLinearFilterKHR) result += "SampledImageYcbcrConversionLinearFilterKHR | ";
33918 if (value & FormatFeatureFlagBits::eSampledImageYcbcrConversionSeparateReconstructionFilterKHR) result += "SampledImageYcbcrConversionSeparateReconstructionFilterKHR | ";
33919 if (value & FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitKHR) result += "SampledImageYcbcrConversionChromaReconstructionExplicitKHR | ";
33920 if (value & FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR) result += "SampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR | ";
33921 if (value & FormatFeatureFlagBits::eDisjointKHR) result += "DisjointKHR | ";
33922 if (value & FormatFeatureFlagBits::eCositedChromaSamplesKHR) result += "CositedChromaSamplesKHR | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033923 return "{" + result.substr(0, result.size() - 3) + "}";
33924 }
33925
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033926 VULKAN_HPP_INLINE std::string to_string(QueryControlFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033927 {
33928 switch (value)
33929 {
33930 case QueryControlFlagBits::ePrecise: return "Precise";
33931 default: return "invalid";
33932 }
33933 }
33934
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033935 VULKAN_HPP_INLINE std::string to_string(QueryControlFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033936 {
33937 if (!value) return "{}";
33938 std::string result;
33939 if (value & QueryControlFlagBits::ePrecise) result += "Precise | ";
33940 return "{" + result.substr(0, result.size() - 3) + "}";
33941 }
33942
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033943 VULKAN_HPP_INLINE std::string to_string(QueryResultFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033944 {
33945 switch (value)
33946 {
33947 case QueryResultFlagBits::e64: return "64";
33948 case QueryResultFlagBits::eWait: return "Wait";
33949 case QueryResultFlagBits::eWithAvailability: return "WithAvailability";
33950 case QueryResultFlagBits::ePartial: return "Partial";
33951 default: return "invalid";
33952 }
33953 }
33954
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033955 VULKAN_HPP_INLINE std::string to_string(QueryResultFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033956 {
33957 if (!value) return "{}";
33958 std::string result;
33959 if (value & QueryResultFlagBits::e64) result += "64 | ";
33960 if (value & QueryResultFlagBits::eWait) result += "Wait | ";
33961 if (value & QueryResultFlagBits::eWithAvailability) result += "WithAvailability | ";
33962 if (value & QueryResultFlagBits::ePartial) result += "Partial | ";
33963 return "{" + result.substr(0, result.size() - 3) + "}";
33964 }
33965
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033966 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033967 {
33968 switch (value)
33969 {
33970 case CommandBufferUsageFlagBits::eOneTimeSubmit: return "OneTimeSubmit";
33971 case CommandBufferUsageFlagBits::eRenderPassContinue: return "RenderPassContinue";
33972 case CommandBufferUsageFlagBits::eSimultaneousUse: return "SimultaneousUse";
33973 default: return "invalid";
33974 }
33975 }
33976
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033977 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033978 {
33979 if (!value) return "{}";
33980 std::string result;
33981 if (value & CommandBufferUsageFlagBits::eOneTimeSubmit) result += "OneTimeSubmit | ";
33982 if (value & CommandBufferUsageFlagBits::eRenderPassContinue) result += "RenderPassContinue | ";
33983 if (value & CommandBufferUsageFlagBits::eSimultaneousUse) result += "SimultaneousUse | ";
33984 return "{" + result.substr(0, result.size() - 3) + "}";
33985 }
33986
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033987 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033988 {
33989 switch (value)
33990 {
33991 case QueryPipelineStatisticFlagBits::eInputAssemblyVertices: return "InputAssemblyVertices";
33992 case QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives: return "InputAssemblyPrimitives";
33993 case QueryPipelineStatisticFlagBits::eVertexShaderInvocations: return "VertexShaderInvocations";
33994 case QueryPipelineStatisticFlagBits::eGeometryShaderInvocations: return "GeometryShaderInvocations";
33995 case QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives: return "GeometryShaderPrimitives";
33996 case QueryPipelineStatisticFlagBits::eClippingInvocations: return "ClippingInvocations";
33997 case QueryPipelineStatisticFlagBits::eClippingPrimitives: return "ClippingPrimitives";
33998 case QueryPipelineStatisticFlagBits::eFragmentShaderInvocations: return "FragmentShaderInvocations";
33999 case QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches: return "TessellationControlShaderPatches";
34000 case QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations: return "TessellationEvaluationShaderInvocations";
34001 case QueryPipelineStatisticFlagBits::eComputeShaderInvocations: return "ComputeShaderInvocations";
34002 default: return "invalid";
34003 }
34004 }
34005
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034006 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034007 {
34008 if (!value) return "{}";
34009 std::string result;
34010 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyVertices) result += "InputAssemblyVertices | ";
34011 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives) result += "InputAssemblyPrimitives | ";
34012 if (value & QueryPipelineStatisticFlagBits::eVertexShaderInvocations) result += "VertexShaderInvocations | ";
34013 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderInvocations) result += "GeometryShaderInvocations | ";
34014 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives) result += "GeometryShaderPrimitives | ";
34015 if (value & QueryPipelineStatisticFlagBits::eClippingInvocations) result += "ClippingInvocations | ";
34016 if (value & QueryPipelineStatisticFlagBits::eClippingPrimitives) result += "ClippingPrimitives | ";
34017 if (value & QueryPipelineStatisticFlagBits::eFragmentShaderInvocations) result += "FragmentShaderInvocations | ";
34018 if (value & QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches) result += "TessellationControlShaderPatches | ";
34019 if (value & QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations) result += "TessellationEvaluationShaderInvocations | ";
34020 if (value & QueryPipelineStatisticFlagBits::eComputeShaderInvocations) result += "ComputeShaderInvocations | ";
34021 return "{" + result.substr(0, result.size() - 3) + "}";
34022 }
34023
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034024 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034025 {
34026 switch (value)
34027 {
34028 case ImageAspectFlagBits::eColor: return "Color";
34029 case ImageAspectFlagBits::eDepth: return "Depth";
34030 case ImageAspectFlagBits::eStencil: return "Stencil";
34031 case ImageAspectFlagBits::eMetadata: return "Metadata";
Lenny Komowb79f04a2017-09-18 17:07:00 -060034032 case ImageAspectFlagBits::ePlane0KHR: return "Plane0KHR";
34033 case ImageAspectFlagBits::ePlane1KHR: return "Plane1KHR";
34034 case ImageAspectFlagBits::ePlane2KHR: return "Plane2KHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034035 default: return "invalid";
34036 }
34037 }
34038
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034039 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034040 {
34041 if (!value) return "{}";
34042 std::string result;
34043 if (value & ImageAspectFlagBits::eColor) result += "Color | ";
34044 if (value & ImageAspectFlagBits::eDepth) result += "Depth | ";
34045 if (value & ImageAspectFlagBits::eStencil) result += "Stencil | ";
34046 if (value & ImageAspectFlagBits::eMetadata) result += "Metadata | ";
Lenny Komowb79f04a2017-09-18 17:07:00 -060034047 if (value & ImageAspectFlagBits::ePlane0KHR) result += "Plane0KHR | ";
34048 if (value & ImageAspectFlagBits::ePlane1KHR) result += "Plane1KHR | ";
34049 if (value & ImageAspectFlagBits::ePlane2KHR) result += "Plane2KHR | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034050 return "{" + result.substr(0, result.size() - 3) + "}";
34051 }
34052
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034053 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034054 {
34055 switch (value)
34056 {
34057 case SparseImageFormatFlagBits::eSingleMiptail: return "SingleMiptail";
34058 case SparseImageFormatFlagBits::eAlignedMipSize: return "AlignedMipSize";
34059 case SparseImageFormatFlagBits::eNonstandardBlockSize: return "NonstandardBlockSize";
34060 default: return "invalid";
34061 }
34062 }
34063
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034064 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034065 {
34066 if (!value) return "{}";
34067 std::string result;
34068 if (value & SparseImageFormatFlagBits::eSingleMiptail) result += "SingleMiptail | ";
34069 if (value & SparseImageFormatFlagBits::eAlignedMipSize) result += "AlignedMipSize | ";
34070 if (value & SparseImageFormatFlagBits::eNonstandardBlockSize) result += "NonstandardBlockSize | ";
34071 return "{" + result.substr(0, result.size() - 3) + "}";
34072 }
34073
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034074 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034075 {
34076 switch (value)
34077 {
34078 case SparseMemoryBindFlagBits::eMetadata: return "Metadata";
34079 default: return "invalid";
34080 }
34081 }
34082
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034083 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034084 {
34085 if (!value) return "{}";
34086 std::string result;
34087 if (value & SparseMemoryBindFlagBits::eMetadata) result += "Metadata | ";
34088 return "{" + result.substr(0, result.size() - 3) + "}";
34089 }
34090
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034091 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034092 {
34093 switch (value)
34094 {
34095 case PipelineStageFlagBits::eTopOfPipe: return "TopOfPipe";
34096 case PipelineStageFlagBits::eDrawIndirect: return "DrawIndirect";
34097 case PipelineStageFlagBits::eVertexInput: return "VertexInput";
34098 case PipelineStageFlagBits::eVertexShader: return "VertexShader";
34099 case PipelineStageFlagBits::eTessellationControlShader: return "TessellationControlShader";
34100 case PipelineStageFlagBits::eTessellationEvaluationShader: return "TessellationEvaluationShader";
34101 case PipelineStageFlagBits::eGeometryShader: return "GeometryShader";
34102 case PipelineStageFlagBits::eFragmentShader: return "FragmentShader";
34103 case PipelineStageFlagBits::eEarlyFragmentTests: return "EarlyFragmentTests";
34104 case PipelineStageFlagBits::eLateFragmentTests: return "LateFragmentTests";
34105 case PipelineStageFlagBits::eColorAttachmentOutput: return "ColorAttachmentOutput";
34106 case PipelineStageFlagBits::eComputeShader: return "ComputeShader";
34107 case PipelineStageFlagBits::eTransfer: return "Transfer";
34108 case PipelineStageFlagBits::eBottomOfPipe: return "BottomOfPipe";
34109 case PipelineStageFlagBits::eHost: return "Host";
34110 case PipelineStageFlagBits::eAllGraphics: return "AllGraphics";
34111 case PipelineStageFlagBits::eAllCommands: return "AllCommands";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034112 case PipelineStageFlagBits::eCommandProcessNVX: return "CommandProcessNVX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034113 default: return "invalid";
34114 }
34115 }
34116
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034117 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034118 {
34119 if (!value) return "{}";
34120 std::string result;
34121 if (value & PipelineStageFlagBits::eTopOfPipe) result += "TopOfPipe | ";
34122 if (value & PipelineStageFlagBits::eDrawIndirect) result += "DrawIndirect | ";
34123 if (value & PipelineStageFlagBits::eVertexInput) result += "VertexInput | ";
34124 if (value & PipelineStageFlagBits::eVertexShader) result += "VertexShader | ";
34125 if (value & PipelineStageFlagBits::eTessellationControlShader) result += "TessellationControlShader | ";
34126 if (value & PipelineStageFlagBits::eTessellationEvaluationShader) result += "TessellationEvaluationShader | ";
34127 if (value & PipelineStageFlagBits::eGeometryShader) result += "GeometryShader | ";
34128 if (value & PipelineStageFlagBits::eFragmentShader) result += "FragmentShader | ";
34129 if (value & PipelineStageFlagBits::eEarlyFragmentTests) result += "EarlyFragmentTests | ";
34130 if (value & PipelineStageFlagBits::eLateFragmentTests) result += "LateFragmentTests | ";
34131 if (value & PipelineStageFlagBits::eColorAttachmentOutput) result += "ColorAttachmentOutput | ";
34132 if (value & PipelineStageFlagBits::eComputeShader) result += "ComputeShader | ";
34133 if (value & PipelineStageFlagBits::eTransfer) result += "Transfer | ";
34134 if (value & PipelineStageFlagBits::eBottomOfPipe) result += "BottomOfPipe | ";
34135 if (value & PipelineStageFlagBits::eHost) result += "Host | ";
34136 if (value & PipelineStageFlagBits::eAllGraphics) result += "AllGraphics | ";
34137 if (value & PipelineStageFlagBits::eAllCommands) result += "AllCommands | ";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034138 if (value & PipelineStageFlagBits::eCommandProcessNVX) result += "CommandProcessNVX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034139 return "{" + result.substr(0, result.size() - 3) + "}";
34140 }
34141
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034142 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034143 {
34144 switch (value)
34145 {
34146 case CommandPoolCreateFlagBits::eTransient: return "Transient";
34147 case CommandPoolCreateFlagBits::eResetCommandBuffer: return "ResetCommandBuffer";
34148 default: return "invalid";
34149 }
34150 }
34151
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034152 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034153 {
34154 if (!value) return "{}";
34155 std::string result;
34156 if (value & CommandPoolCreateFlagBits::eTransient) result += "Transient | ";
34157 if (value & CommandPoolCreateFlagBits::eResetCommandBuffer) result += "ResetCommandBuffer | ";
34158 return "{" + result.substr(0, result.size() - 3) + "}";
34159 }
34160
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034161 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034162 {
34163 switch (value)
34164 {
34165 case CommandPoolResetFlagBits::eReleaseResources: return "ReleaseResources";
34166 default: return "invalid";
34167 }
34168 }
34169
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034170 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034171 {
34172 if (!value) return "{}";
34173 std::string result;
34174 if (value & CommandPoolResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
34175 return "{" + result.substr(0, result.size() - 3) + "}";
34176 }
34177
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034178 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034179 {
34180 switch (value)
34181 {
34182 case CommandBufferResetFlagBits::eReleaseResources: return "ReleaseResources";
34183 default: return "invalid";
34184 }
34185 }
34186
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034187 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034188 {
34189 if (!value) return "{}";
34190 std::string result;
34191 if (value & CommandBufferResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
34192 return "{" + result.substr(0, result.size() - 3) + "}";
34193 }
34194
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034195 VULKAN_HPP_INLINE std::string to_string(SampleCountFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034196 {
34197 switch (value)
34198 {
34199 case SampleCountFlagBits::e1: return "1";
34200 case SampleCountFlagBits::e2: return "2";
34201 case SampleCountFlagBits::e4: return "4";
34202 case SampleCountFlagBits::e8: return "8";
34203 case SampleCountFlagBits::e16: return "16";
34204 case SampleCountFlagBits::e32: return "32";
34205 case SampleCountFlagBits::e64: return "64";
34206 default: return "invalid";
34207 }
34208 }
34209
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034210 VULKAN_HPP_INLINE std::string to_string(SampleCountFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034211 {
34212 if (!value) return "{}";
34213 std::string result;
34214 if (value & SampleCountFlagBits::e1) result += "1 | ";
34215 if (value & SampleCountFlagBits::e2) result += "2 | ";
34216 if (value & SampleCountFlagBits::e4) result += "4 | ";
34217 if (value & SampleCountFlagBits::e8) result += "8 | ";
34218 if (value & SampleCountFlagBits::e16) result += "16 | ";
34219 if (value & SampleCountFlagBits::e32) result += "32 | ";
34220 if (value & SampleCountFlagBits::e64) result += "64 | ";
34221 return "{" + result.substr(0, result.size() - 3) + "}";
34222 }
34223
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034224 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034225 {
34226 switch (value)
34227 {
34228 case AttachmentDescriptionFlagBits::eMayAlias: return "MayAlias";
34229 default: return "invalid";
34230 }
34231 }
34232
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034233 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034234 {
34235 if (!value) return "{}";
34236 std::string result;
34237 if (value & AttachmentDescriptionFlagBits::eMayAlias) result += "MayAlias | ";
34238 return "{" + result.substr(0, result.size() - 3) + "}";
34239 }
34240
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034241 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034242 {
34243 switch (value)
34244 {
34245 case StencilFaceFlagBits::eFront: return "Front";
34246 case StencilFaceFlagBits::eBack: return "Back";
34247 case StencilFaceFlagBits::eVkStencilFrontAndBack: return "VkStencilFrontAndBack";
34248 default: return "invalid";
34249 }
34250 }
34251
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034252 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034253 {
34254 if (!value) return "{}";
34255 std::string result;
34256 if (value & StencilFaceFlagBits::eFront) result += "Front | ";
34257 if (value & StencilFaceFlagBits::eBack) result += "Back | ";
34258 if (value & StencilFaceFlagBits::eVkStencilFrontAndBack) result += "VkStencilFrontAndBack | ";
34259 return "{" + result.substr(0, result.size() - 3) + "}";
34260 }
34261
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034262 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034263 {
34264 switch (value)
34265 {
34266 case DescriptorPoolCreateFlagBits::eFreeDescriptorSet: return "FreeDescriptorSet";
34267 default: return "invalid";
34268 }
34269 }
34270
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034271 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034272 {
34273 if (!value) return "{}";
34274 std::string result;
34275 if (value & DescriptorPoolCreateFlagBits::eFreeDescriptorSet) result += "FreeDescriptorSet | ";
34276 return "{" + result.substr(0, result.size() - 3) + "}";
34277 }
34278
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034279 VULKAN_HPP_INLINE std::string to_string(DependencyFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034280 {
34281 switch (value)
34282 {
34283 case DependencyFlagBits::eByRegion: return "ByRegion";
Mark Young0f183a82017-02-28 09:58:04 -070034284 case DependencyFlagBits::eViewLocalKHX: return "ViewLocalKHX";
34285 case DependencyFlagBits::eDeviceGroupKHX: return "DeviceGroupKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034286 default: return "invalid";
34287 }
34288 }
34289
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034290 VULKAN_HPP_INLINE std::string to_string(DependencyFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034291 {
34292 if (!value) return "{}";
34293 std::string result;
34294 if (value & DependencyFlagBits::eByRegion) result += "ByRegion | ";
Mark Young0f183a82017-02-28 09:58:04 -070034295 if (value & DependencyFlagBits::eViewLocalKHX) result += "ViewLocalKHX | ";
34296 if (value & DependencyFlagBits::eDeviceGroupKHX) result += "DeviceGroupKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034297 return "{" + result.substr(0, result.size() - 3) + "}";
34298 }
34299
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034300 VULKAN_HPP_INLINE std::string to_string(PresentModeKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034301 {
34302 switch (value)
34303 {
34304 case PresentModeKHR::eImmediate: return "Immediate";
34305 case PresentModeKHR::eMailbox: return "Mailbox";
34306 case PresentModeKHR::eFifo: return "Fifo";
34307 case PresentModeKHR::eFifoRelaxed: return "FifoRelaxed";
Mark Lobodzinski54385432017-05-15 10:27:52 -060034308 case PresentModeKHR::eSharedDemandRefresh: return "SharedDemandRefresh";
34309 case PresentModeKHR::eSharedContinuousRefresh: return "SharedContinuousRefresh";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034310 default: return "invalid";
34311 }
34312 }
34313
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034314 VULKAN_HPP_INLINE std::string to_string(ColorSpaceKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034315 {
34316 switch (value)
34317 {
34318 case ColorSpaceKHR::eSrgbNonlinear: return "SrgbNonlinear";
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060034319 case ColorSpaceKHR::eDisplayP3NonlinearEXT: return "DisplayP3NonlinearEXT";
34320 case ColorSpaceKHR::eExtendedSrgbLinearEXT: return "ExtendedSrgbLinearEXT";
34321 case ColorSpaceKHR::eDciP3LinearEXT: return "DciP3LinearEXT";
34322 case ColorSpaceKHR::eDciP3NonlinearEXT: return "DciP3NonlinearEXT";
34323 case ColorSpaceKHR::eBt709LinearEXT: return "Bt709LinearEXT";
34324 case ColorSpaceKHR::eBt709NonlinearEXT: return "Bt709NonlinearEXT";
34325 case ColorSpaceKHR::eBt2020LinearEXT: return "Bt2020LinearEXT";
34326 case ColorSpaceKHR::eHdr10St2084EXT: return "Hdr10St2084EXT";
34327 case ColorSpaceKHR::eDolbyvisionEXT: return "DolbyvisionEXT";
34328 case ColorSpaceKHR::eHdr10HlgEXT: return "Hdr10HlgEXT";
34329 case ColorSpaceKHR::eAdobergbLinearEXT: return "AdobergbLinearEXT";
34330 case ColorSpaceKHR::eAdobergbNonlinearEXT: return "AdobergbNonlinearEXT";
34331 case ColorSpaceKHR::ePassThroughEXT: return "PassThroughEXT";
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060034332 case ColorSpaceKHR::eExtendedSrgbNonlinearEXT: return "ExtendedSrgbNonlinearEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034333 default: return "invalid";
34334 }
34335 }
34336
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034337 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034338 {
34339 switch (value)
34340 {
34341 case DisplayPlaneAlphaFlagBitsKHR::eOpaque: return "Opaque";
34342 case DisplayPlaneAlphaFlagBitsKHR::eGlobal: return "Global";
34343 case DisplayPlaneAlphaFlagBitsKHR::ePerPixel: return "PerPixel";
34344 case DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied: return "PerPixelPremultiplied";
34345 default: return "invalid";
34346 }
34347 }
34348
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034349 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034350 {
34351 if (!value) return "{}";
34352 std::string result;
34353 if (value & DisplayPlaneAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
34354 if (value & DisplayPlaneAlphaFlagBitsKHR::eGlobal) result += "Global | ";
34355 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixel) result += "PerPixel | ";
34356 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied) result += "PerPixelPremultiplied | ";
34357 return "{" + result.substr(0, result.size() - 3) + "}";
34358 }
34359
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034360 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034361 {
34362 switch (value)
34363 {
34364 case CompositeAlphaFlagBitsKHR::eOpaque: return "Opaque";
34365 case CompositeAlphaFlagBitsKHR::ePreMultiplied: return "PreMultiplied";
34366 case CompositeAlphaFlagBitsKHR::ePostMultiplied: return "PostMultiplied";
34367 case CompositeAlphaFlagBitsKHR::eInherit: return "Inherit";
34368 default: return "invalid";
34369 }
34370 }
34371
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034372 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034373 {
34374 if (!value) return "{}";
34375 std::string result;
34376 if (value & CompositeAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
34377 if (value & CompositeAlphaFlagBitsKHR::ePreMultiplied) result += "PreMultiplied | ";
34378 if (value & CompositeAlphaFlagBitsKHR::ePostMultiplied) result += "PostMultiplied | ";
34379 if (value & CompositeAlphaFlagBitsKHR::eInherit) result += "Inherit | ";
34380 return "{" + result.substr(0, result.size() - 3) + "}";
34381 }
34382
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034383 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034384 {
34385 switch (value)
34386 {
34387 case SurfaceTransformFlagBitsKHR::eIdentity: return "Identity";
34388 case SurfaceTransformFlagBitsKHR::eRotate90: return "Rotate90";
34389 case SurfaceTransformFlagBitsKHR::eRotate180: return "Rotate180";
34390 case SurfaceTransformFlagBitsKHR::eRotate270: return "Rotate270";
34391 case SurfaceTransformFlagBitsKHR::eHorizontalMirror: return "HorizontalMirror";
34392 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90: return "HorizontalMirrorRotate90";
34393 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180: return "HorizontalMirrorRotate180";
34394 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270: return "HorizontalMirrorRotate270";
34395 case SurfaceTransformFlagBitsKHR::eInherit: return "Inherit";
34396 default: return "invalid";
34397 }
34398 }
34399
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034400 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034401 {
34402 if (!value) return "{}";
34403 std::string result;
34404 if (value & SurfaceTransformFlagBitsKHR::eIdentity) result += "Identity | ";
34405 if (value & SurfaceTransformFlagBitsKHR::eRotate90) result += "Rotate90 | ";
34406 if (value & SurfaceTransformFlagBitsKHR::eRotate180) result += "Rotate180 | ";
34407 if (value & SurfaceTransformFlagBitsKHR::eRotate270) result += "Rotate270 | ";
34408 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirror) result += "HorizontalMirror | ";
34409 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90) result += "HorizontalMirrorRotate90 | ";
34410 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180) result += "HorizontalMirrorRotate180 | ";
34411 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270) result += "HorizontalMirrorRotate270 | ";
34412 if (value & SurfaceTransformFlagBitsKHR::eInherit) result += "Inherit | ";
34413 return "{" + result.substr(0, result.size() - 3) + "}";
34414 }
34415
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034416 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagBitsEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034417 {
34418 switch (value)
34419 {
34420 case DebugReportFlagBitsEXT::eInformation: return "Information";
34421 case DebugReportFlagBitsEXT::eWarning: return "Warning";
34422 case DebugReportFlagBitsEXT::ePerformanceWarning: return "PerformanceWarning";
34423 case DebugReportFlagBitsEXT::eError: return "Error";
34424 case DebugReportFlagBitsEXT::eDebug: return "Debug";
34425 default: return "invalid";
34426 }
34427 }
34428
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034429 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagsEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034430 {
34431 if (!value) return "{}";
34432 std::string result;
34433 if (value & DebugReportFlagBitsEXT::eInformation) result += "Information | ";
34434 if (value & DebugReportFlagBitsEXT::eWarning) result += "Warning | ";
34435 if (value & DebugReportFlagBitsEXT::ePerformanceWarning) result += "PerformanceWarning | ";
34436 if (value & DebugReportFlagBitsEXT::eError) result += "Error | ";
34437 if (value & DebugReportFlagBitsEXT::eDebug) result += "Debug | ";
34438 return "{" + result.substr(0, result.size() - 3) + "}";
34439 }
34440
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034441 VULKAN_HPP_INLINE std::string to_string(DebugReportObjectTypeEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034442 {
34443 switch (value)
34444 {
34445 case DebugReportObjectTypeEXT::eUnknown: return "Unknown";
34446 case DebugReportObjectTypeEXT::eInstance: return "Instance";
34447 case DebugReportObjectTypeEXT::ePhysicalDevice: return "PhysicalDevice";
34448 case DebugReportObjectTypeEXT::eDevice: return "Device";
34449 case DebugReportObjectTypeEXT::eQueue: return "Queue";
34450 case DebugReportObjectTypeEXT::eSemaphore: return "Semaphore";
34451 case DebugReportObjectTypeEXT::eCommandBuffer: return "CommandBuffer";
34452 case DebugReportObjectTypeEXT::eFence: return "Fence";
34453 case DebugReportObjectTypeEXT::eDeviceMemory: return "DeviceMemory";
34454 case DebugReportObjectTypeEXT::eBuffer: return "Buffer";
34455 case DebugReportObjectTypeEXT::eImage: return "Image";
34456 case DebugReportObjectTypeEXT::eEvent: return "Event";
34457 case DebugReportObjectTypeEXT::eQueryPool: return "QueryPool";
34458 case DebugReportObjectTypeEXT::eBufferView: return "BufferView";
34459 case DebugReportObjectTypeEXT::eImageView: return "ImageView";
34460 case DebugReportObjectTypeEXT::eShaderModule: return "ShaderModule";
34461 case DebugReportObjectTypeEXT::ePipelineCache: return "PipelineCache";
34462 case DebugReportObjectTypeEXT::ePipelineLayout: return "PipelineLayout";
34463 case DebugReportObjectTypeEXT::eRenderPass: return "RenderPass";
34464 case DebugReportObjectTypeEXT::ePipeline: return "Pipeline";
34465 case DebugReportObjectTypeEXT::eDescriptorSetLayout: return "DescriptorSetLayout";
34466 case DebugReportObjectTypeEXT::eSampler: return "Sampler";
34467 case DebugReportObjectTypeEXT::eDescriptorPool: return "DescriptorPool";
34468 case DebugReportObjectTypeEXT::eDescriptorSet: return "DescriptorSet";
34469 case DebugReportObjectTypeEXT::eFramebuffer: return "Framebuffer";
34470 case DebugReportObjectTypeEXT::eCommandPool: return "CommandPool";
34471 case DebugReportObjectTypeEXT::eSurfaceKhr: return "SurfaceKhr";
34472 case DebugReportObjectTypeEXT::eSwapchainKhr: return "SwapchainKhr";
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060034473 case DebugReportObjectTypeEXT::eDebugReportCallbackExt: return "DebugReportCallbackExt";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034474 case DebugReportObjectTypeEXT::eDisplayKhr: return "DisplayKhr";
34475 case DebugReportObjectTypeEXT::eDisplayModeKhr: return "DisplayModeKhr";
34476 case DebugReportObjectTypeEXT::eObjectTableNvx: return "ObjectTableNvx";
34477 case DebugReportObjectTypeEXT::eIndirectCommandsLayoutNvx: return "IndirectCommandsLayoutNvx";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060034478 case DebugReportObjectTypeEXT::eValidationCache: return "ValidationCache";
Mark Lobodzinski54385432017-05-15 10:27:52 -060034479 case DebugReportObjectTypeEXT::eDescriptorUpdateTemplateKHR: return "DescriptorUpdateTemplateKHR";
Lenny Komowb79f04a2017-09-18 17:07:00 -060034480 case DebugReportObjectTypeEXT::eSamplerYcbcrConversionKHR: return "SamplerYcbcrConversionKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034481 default: return "invalid";
34482 }
34483 }
34484
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034485 VULKAN_HPP_INLINE std::string to_string(RasterizationOrderAMD value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034486 {
34487 switch (value)
34488 {
34489 case RasterizationOrderAMD::eStrict: return "Strict";
34490 case RasterizationOrderAMD::eRelaxed: return "Relaxed";
34491 default: return "invalid";
34492 }
34493 }
34494
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034495 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060034496 {
34497 switch (value)
34498 {
34499 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32: return "OpaqueWin32";
34500 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
34501 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image: return "D3D11Image";
34502 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt: return "D3D11ImageKmt";
34503 default: return "invalid";
34504 }
34505 }
34506
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034507 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060034508 {
34509 if (!value) return "{}";
34510 std::string result;
34511 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) result += "OpaqueWin32 | ";
34512 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
34513 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) result += "D3D11Image | ";
34514 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt) result += "D3D11ImageKmt | ";
34515 return "{" + result.substr(0, result.size() - 3) + "}";
34516 }
34517
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034518 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060034519 {
34520 switch (value)
34521 {
34522 case ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly: return "DedicatedOnly";
34523 case ExternalMemoryFeatureFlagBitsNV::eExportable: return "Exportable";
34524 case ExternalMemoryFeatureFlagBitsNV::eImportable: return "Importable";
34525 default: return "invalid";
34526 }
34527 }
34528
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034529 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060034530 {
34531 if (!value) return "{}";
34532 std::string result;
34533 if (value & ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) result += "DedicatedOnly | ";
34534 if (value & ExternalMemoryFeatureFlagBitsNV::eExportable) result += "Exportable | ";
34535 if (value & ExternalMemoryFeatureFlagBitsNV::eImportable) result += "Importable | ";
34536 return "{" + result.substr(0, result.size() - 3) + "}";
34537 }
34538
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034539 VULKAN_HPP_INLINE std::string to_string(ValidationCheckEXT value)
Lenny Komow68432d72016-09-29 14:16:59 -060034540 {
34541 switch (value)
34542 {
34543 case ValidationCheckEXT::eAll: return "All";
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060034544 case ValidationCheckEXT::eShaders: return "Shaders";
Lenny Komow68432d72016-09-29 14:16:59 -060034545 default: return "invalid";
34546 }
34547 }
34548
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034549 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagBitsNVX value)
34550 {
34551 switch (value)
34552 {
34553 case IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences: return "UnorderedSequences";
34554 case IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences: return "SparseSequences";
34555 case IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions: return "EmptyExecutions";
34556 case IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences: return "IndexedSequences";
34557 default: return "invalid";
34558 }
34559 }
34560
34561 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagsNVX value)
34562 {
34563 if (!value) return "{}";
34564 std::string result;
34565 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) result += "UnorderedSequences | ";
34566 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) result += "SparseSequences | ";
34567 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) result += "EmptyExecutions | ";
34568 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences) result += "IndexedSequences | ";
34569 return "{" + result.substr(0, result.size() - 3) + "}";
34570 }
34571
34572 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagBitsNVX value)
34573 {
34574 switch (value)
34575 {
34576 case ObjectEntryUsageFlagBitsNVX::eGraphics: return "Graphics";
34577 case ObjectEntryUsageFlagBitsNVX::eCompute: return "Compute";
34578 default: return "invalid";
34579 }
34580 }
34581
34582 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagsNVX value)
34583 {
34584 if (!value) return "{}";
34585 std::string result;
34586 if (value & ObjectEntryUsageFlagBitsNVX::eGraphics) result += "Graphics | ";
34587 if (value & ObjectEntryUsageFlagBitsNVX::eCompute) result += "Compute | ";
34588 return "{" + result.substr(0, result.size() - 3) + "}";
34589 }
34590
34591 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsTokenTypeNVX value)
34592 {
34593 switch (value)
34594 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060034595 case IndirectCommandsTokenTypeNVX::ePipeline: return "Pipeline";
34596 case IndirectCommandsTokenTypeNVX::eDescriptorSet: return "DescriptorSet";
34597 case IndirectCommandsTokenTypeNVX::eIndexBuffer: return "IndexBuffer";
34598 case IndirectCommandsTokenTypeNVX::eVertexBuffer: return "VertexBuffer";
34599 case IndirectCommandsTokenTypeNVX::ePushConstant: return "PushConstant";
34600 case IndirectCommandsTokenTypeNVX::eDrawIndexed: return "DrawIndexed";
34601 case IndirectCommandsTokenTypeNVX::eDraw: return "Draw";
34602 case IndirectCommandsTokenTypeNVX::eDispatch: return "Dispatch";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034603 default: return "invalid";
34604 }
34605 }
34606
34607 VULKAN_HPP_INLINE std::string to_string(ObjectEntryTypeNVX value)
34608 {
34609 switch (value)
34610 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060034611 case ObjectEntryTypeNVX::eDescriptorSet: return "DescriptorSet";
34612 case ObjectEntryTypeNVX::ePipeline: return "Pipeline";
34613 case ObjectEntryTypeNVX::eIndexBuffer: return "IndexBuffer";
34614 case ObjectEntryTypeNVX::eVertexBuffer: return "VertexBuffer";
34615 case ObjectEntryTypeNVX::ePushConstant: return "PushConstant";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034616 default: return "invalid";
34617 }
34618 }
34619
Mark Young0f183a82017-02-28 09:58:04 -070034620 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlagBits value)
34621 {
34622 switch (value)
34623 {
34624 case DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR: return "PushDescriptorKHR";
34625 default: return "invalid";
34626 }
34627 }
34628
34629 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlags value)
34630 {
34631 if (!value) return "{}";
34632 std::string result;
34633 if (value & DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR) result += "PushDescriptorKHR | ";
34634 return "{" + result.substr(0, result.size() - 3) + "}";
34635 }
34636
Mark Youngabc2d6e2017-07-07 07:59:56 -060034637 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070034638 {
34639 switch (value)
34640 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060034641 case ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd: return "OpaqueFd";
34642 case ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32: return "OpaqueWin32";
34643 case ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
34644 case ExternalMemoryHandleTypeFlagBitsKHR::eD3D11Texture: return "D3D11Texture";
34645 case ExternalMemoryHandleTypeFlagBitsKHR::eD3D11TextureKmt: return "D3D11TextureKmt";
34646 case ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Heap: return "D3D12Heap";
34647 case ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Resource: return "D3D12Resource";
Mark Young0f183a82017-02-28 09:58:04 -070034648 default: return "invalid";
34649 }
34650 }
34651
Mark Youngabc2d6e2017-07-07 07:59:56 -060034652 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070034653 {
34654 if (!value) return "{}";
34655 std::string result;
Mark Youngabc2d6e2017-07-07 07:59:56 -060034656 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd) result += "OpaqueFd | ";
34657 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32) result += "OpaqueWin32 | ";
34658 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
34659 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eD3D11Texture) result += "D3D11Texture | ";
34660 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eD3D11TextureKmt) result += "D3D11TextureKmt | ";
34661 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Heap) result += "D3D12Heap | ";
34662 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Resource) result += "D3D12Resource | ";
Mark Young0f183a82017-02-28 09:58:04 -070034663 return "{" + result.substr(0, result.size() - 3) + "}";
34664 }
34665
Mark Youngabc2d6e2017-07-07 07:59:56 -060034666 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070034667 {
34668 switch (value)
34669 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060034670 case ExternalMemoryFeatureFlagBitsKHR::eDedicatedOnly: return "DedicatedOnly";
34671 case ExternalMemoryFeatureFlagBitsKHR::eExportable: return "Exportable";
34672 case ExternalMemoryFeatureFlagBitsKHR::eImportable: return "Importable";
Mark Young0f183a82017-02-28 09:58:04 -070034673 default: return "invalid";
34674 }
34675 }
34676
Mark Youngabc2d6e2017-07-07 07:59:56 -060034677 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070034678 {
34679 if (!value) return "{}";
34680 std::string result;
Mark Youngabc2d6e2017-07-07 07:59:56 -060034681 if (value & ExternalMemoryFeatureFlagBitsKHR::eDedicatedOnly) result += "DedicatedOnly | ";
34682 if (value & ExternalMemoryFeatureFlagBitsKHR::eExportable) result += "Exportable | ";
34683 if (value & ExternalMemoryFeatureFlagBitsKHR::eImportable) result += "Importable | ";
Mark Young0f183a82017-02-28 09:58:04 -070034684 return "{" + result.substr(0, result.size() - 3) + "}";
34685 }
34686
Mark Youngabc2d6e2017-07-07 07:59:56 -060034687 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagBitsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070034688 {
34689 switch (value)
34690 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060034691 case ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd: return "OpaqueFd";
34692 case ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32: return "OpaqueWin32";
34693 case ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
34694 case ExternalSemaphoreHandleTypeFlagBitsKHR::eD3D12Fence: return "D3D12Fence";
34695 case ExternalSemaphoreHandleTypeFlagBitsKHR::eSyncFd: return "SyncFd";
Mark Young0f183a82017-02-28 09:58:04 -070034696 default: return "invalid";
34697 }
34698 }
34699
Mark Youngabc2d6e2017-07-07 07:59:56 -060034700 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070034701 {
34702 if (!value) return "{}";
34703 std::string result;
Mark Youngabc2d6e2017-07-07 07:59:56 -060034704 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd) result += "OpaqueFd | ";
34705 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32) result += "OpaqueWin32 | ";
34706 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
34707 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eD3D12Fence) result += "D3D12Fence | ";
34708 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eSyncFd) result += "SyncFd | ";
Mark Young0f183a82017-02-28 09:58:04 -070034709 return "{" + result.substr(0, result.size() - 3) + "}";
34710 }
34711
Mark Youngabc2d6e2017-07-07 07:59:56 -060034712 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagBitsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070034713 {
34714 switch (value)
34715 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060034716 case ExternalSemaphoreFeatureFlagBitsKHR::eExportable: return "Exportable";
34717 case ExternalSemaphoreFeatureFlagBitsKHR::eImportable: return "Importable";
Mark Young0f183a82017-02-28 09:58:04 -070034718 default: return "invalid";
34719 }
34720 }
34721
Mark Youngabc2d6e2017-07-07 07:59:56 -060034722 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070034723 {
34724 if (!value) return "{}";
34725 std::string result;
Mark Youngabc2d6e2017-07-07 07:59:56 -060034726 if (value & ExternalSemaphoreFeatureFlagBitsKHR::eExportable) result += "Exportable | ";
34727 if (value & ExternalSemaphoreFeatureFlagBitsKHR::eImportable) result += "Importable | ";
34728 return "{" + result.substr(0, result.size() - 3) + "}";
34729 }
34730
34731 VULKAN_HPP_INLINE std::string to_string(SemaphoreImportFlagBitsKHR value)
34732 {
34733 switch (value)
34734 {
34735 case SemaphoreImportFlagBitsKHR::eTemporary: return "Temporary";
34736 default: return "invalid";
34737 }
34738 }
34739
34740 VULKAN_HPP_INLINE std::string to_string(SemaphoreImportFlagsKHR value)
34741 {
34742 if (!value) return "{}";
34743 std::string result;
34744 if (value & SemaphoreImportFlagBitsKHR::eTemporary) result += "Temporary | ";
34745 return "{" + result.substr(0, result.size() - 3) + "}";
34746 }
34747
34748 VULKAN_HPP_INLINE std::string to_string(ExternalFenceHandleTypeFlagBitsKHR value)
34749 {
34750 switch (value)
34751 {
34752 case ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd: return "OpaqueFd";
34753 case ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32: return "OpaqueWin32";
34754 case ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
34755 case ExternalFenceHandleTypeFlagBitsKHR::eSyncFd: return "SyncFd";
34756 default: return "invalid";
34757 }
34758 }
34759
34760 VULKAN_HPP_INLINE std::string to_string(ExternalFenceHandleTypeFlagsKHR value)
34761 {
34762 if (!value) return "{}";
34763 std::string result;
34764 if (value & ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd) result += "OpaqueFd | ";
34765 if (value & ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32) result += "OpaqueWin32 | ";
34766 if (value & ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
34767 if (value & ExternalFenceHandleTypeFlagBitsKHR::eSyncFd) result += "SyncFd | ";
34768 return "{" + result.substr(0, result.size() - 3) + "}";
34769 }
34770
34771 VULKAN_HPP_INLINE std::string to_string(ExternalFenceFeatureFlagBitsKHR value)
34772 {
34773 switch (value)
34774 {
34775 case ExternalFenceFeatureFlagBitsKHR::eExportable: return "Exportable";
34776 case ExternalFenceFeatureFlagBitsKHR::eImportable: return "Importable";
34777 default: return "invalid";
34778 }
34779 }
34780
34781 VULKAN_HPP_INLINE std::string to_string(ExternalFenceFeatureFlagsKHR value)
34782 {
34783 if (!value) return "{}";
34784 std::string result;
34785 if (value & ExternalFenceFeatureFlagBitsKHR::eExportable) result += "Exportable | ";
34786 if (value & ExternalFenceFeatureFlagBitsKHR::eImportable) result += "Importable | ";
34787 return "{" + result.substr(0, result.size() - 3) + "}";
34788 }
34789
34790 VULKAN_HPP_INLINE std::string to_string(FenceImportFlagBitsKHR value)
34791 {
34792 switch (value)
34793 {
34794 case FenceImportFlagBitsKHR::eTemporary: return "Temporary";
34795 default: return "invalid";
34796 }
34797 }
34798
34799 VULKAN_HPP_INLINE std::string to_string(FenceImportFlagsKHR value)
34800 {
34801 if (!value) return "{}";
34802 std::string result;
34803 if (value & FenceImportFlagBitsKHR::eTemporary) result += "Temporary | ";
Mark Young0f183a82017-02-28 09:58:04 -070034804 return "{" + result.substr(0, result.size() - 3) + "}";
34805 }
34806
Mark Young39389872017-01-19 21:10:49 -070034807 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagBitsEXT value)
34808 {
34809 switch (value)
34810 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060034811 case SurfaceCounterFlagBitsEXT::eVblank: return "Vblank";
Mark Young39389872017-01-19 21:10:49 -070034812 default: return "invalid";
34813 }
34814 }
34815
34816 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagsEXT value)
34817 {
34818 if (!value) return "{}";
34819 std::string result;
Mark Lobodzinski54385432017-05-15 10:27:52 -060034820 if (value & SurfaceCounterFlagBitsEXT::eVblank) result += "Vblank | ";
Mark Young39389872017-01-19 21:10:49 -070034821 return "{" + result.substr(0, result.size() - 3) + "}";
34822 }
34823
34824 VULKAN_HPP_INLINE std::string to_string(DisplayPowerStateEXT value)
34825 {
34826 switch (value)
34827 {
34828 case DisplayPowerStateEXT::eOff: return "Off";
34829 case DisplayPowerStateEXT::eSuspend: return "Suspend";
34830 case DisplayPowerStateEXT::eOn: return "On";
34831 default: return "invalid";
34832 }
34833 }
34834
34835 VULKAN_HPP_INLINE std::string to_string(DeviceEventTypeEXT value)
34836 {
34837 switch (value)
34838 {
34839 case DeviceEventTypeEXT::eDisplayHotplug: return "DisplayHotplug";
34840 default: return "invalid";
34841 }
34842 }
34843
34844 VULKAN_HPP_INLINE std::string to_string(DisplayEventTypeEXT value)
34845 {
34846 switch (value)
34847 {
34848 case DisplayEventTypeEXT::eFirstPixelOut: return "FirstPixelOut";
34849 default: return "invalid";
34850 }
34851 }
34852
Mark Young0f183a82017-02-28 09:58:04 -070034853 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagBitsKHX value)
34854 {
34855 switch (value)
34856 {
34857 case PeerMemoryFeatureFlagBitsKHX::eCopySrc: return "CopySrc";
34858 case PeerMemoryFeatureFlagBitsKHX::eCopyDst: return "CopyDst";
34859 case PeerMemoryFeatureFlagBitsKHX::eGenericSrc: return "GenericSrc";
34860 case PeerMemoryFeatureFlagBitsKHX::eGenericDst: return "GenericDst";
34861 default: return "invalid";
34862 }
34863 }
34864
34865 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagsKHX value)
34866 {
34867 if (!value) return "{}";
34868 std::string result;
34869 if (value & PeerMemoryFeatureFlagBitsKHX::eCopySrc) result += "CopySrc | ";
34870 if (value & PeerMemoryFeatureFlagBitsKHX::eCopyDst) result += "CopyDst | ";
34871 if (value & PeerMemoryFeatureFlagBitsKHX::eGenericSrc) result += "GenericSrc | ";
34872 if (value & PeerMemoryFeatureFlagBitsKHX::eGenericDst) result += "GenericDst | ";
34873 return "{" + result.substr(0, result.size() - 3) + "}";
34874 }
34875
34876 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagBitsKHX value)
34877 {
34878 switch (value)
34879 {
34880 case MemoryAllocateFlagBitsKHX::eDeviceMask: return "DeviceMask";
34881 default: return "invalid";
34882 }
34883 }
34884
34885 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagsKHX value)
34886 {
34887 if (!value) return "{}";
34888 std::string result;
34889 if (value & MemoryAllocateFlagBitsKHX::eDeviceMask) result += "DeviceMask | ";
34890 return "{" + result.substr(0, result.size() - 3) + "}";
34891 }
34892
34893 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagBitsKHX value)
34894 {
34895 switch (value)
34896 {
34897 case DeviceGroupPresentModeFlagBitsKHX::eLocal: return "Local";
34898 case DeviceGroupPresentModeFlagBitsKHX::eRemote: return "Remote";
34899 case DeviceGroupPresentModeFlagBitsKHX::eSum: return "Sum";
34900 case DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice: return "LocalMultiDevice";
34901 default: return "invalid";
34902 }
34903 }
34904
34905 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagsKHX value)
34906 {
34907 if (!value) return "{}";
34908 std::string result;
34909 if (value & DeviceGroupPresentModeFlagBitsKHX::eLocal) result += "Local | ";
34910 if (value & DeviceGroupPresentModeFlagBitsKHX::eRemote) result += "Remote | ";
34911 if (value & DeviceGroupPresentModeFlagBitsKHX::eSum) result += "Sum | ";
34912 if (value & DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice) result += "LocalMultiDevice | ";
34913 return "{" + result.substr(0, result.size() - 3) + "}";
34914 }
34915
34916 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagBitsKHR value)
34917 {
34918 switch (value)
34919 {
34920 case SwapchainCreateFlagBitsKHR::eBindSfrKHX: return "BindSfrKHX";
34921 default: return "invalid";
34922 }
34923 }
34924
34925 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagsKHR value)
34926 {
34927 if (!value) return "{}";
34928 std::string result;
34929 if (value & SwapchainCreateFlagBitsKHR::eBindSfrKHX) result += "BindSfrKHX | ";
34930 return "{" + result.substr(0, result.size() - 3) + "}";
34931 }
34932
34933 VULKAN_HPP_INLINE std::string to_string(ViewportCoordinateSwizzleNV value)
34934 {
34935 switch (value)
34936 {
34937 case ViewportCoordinateSwizzleNV::ePositiveX: return "PositiveX";
34938 case ViewportCoordinateSwizzleNV::eNegativeX: return "NegativeX";
34939 case ViewportCoordinateSwizzleNV::ePositiveY: return "PositiveY";
34940 case ViewportCoordinateSwizzleNV::eNegativeY: return "NegativeY";
34941 case ViewportCoordinateSwizzleNV::ePositiveZ: return "PositiveZ";
34942 case ViewportCoordinateSwizzleNV::eNegativeZ: return "NegativeZ";
34943 case ViewportCoordinateSwizzleNV::ePositiveW: return "PositiveW";
34944 case ViewportCoordinateSwizzleNV::eNegativeW: return "NegativeW";
34945 default: return "invalid";
34946 }
34947 }
34948
34949 VULKAN_HPP_INLINE std::string to_string(DiscardRectangleModeEXT value)
34950 {
34951 switch (value)
34952 {
34953 case DiscardRectangleModeEXT::eInclusive: return "Inclusive";
34954 case DiscardRectangleModeEXT::eExclusive: return "Exclusive";
34955 default: return "invalid";
34956 }
34957 }
34958
34959 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlagBits value)
34960 {
34961 switch (value)
34962 {
34963 case SubpassDescriptionFlagBits::ePerViewAttributesNVX: return "PerViewAttributesNVX";
34964 case SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX: return "PerViewPositionXOnlyNVX";
34965 default: return "invalid";
34966 }
34967 }
34968
34969 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlags value)
34970 {
34971 if (!value) return "{}";
34972 std::string result;
34973 if (value & SubpassDescriptionFlagBits::ePerViewAttributesNVX) result += "PerViewAttributesNVX | ";
34974 if (value & SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX) result += "PerViewPositionXOnlyNVX | ";
34975 return "{" + result.substr(0, result.size() - 3) + "}";
34976 }
34977
Lenny Komowb79f04a2017-09-18 17:07:00 -060034978 VULKAN_HPP_INLINE std::string to_string(PointClippingBehaviorKHR value)
34979 {
34980 switch (value)
34981 {
34982 case PointClippingBehaviorKHR::eAllClipPlanes: return "AllClipPlanes";
34983 case PointClippingBehaviorKHR::eUserClipPlanesOnly: return "UserClipPlanesOnly";
34984 default: return "invalid";
34985 }
34986 }
34987
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060034988 VULKAN_HPP_INLINE std::string to_string(SamplerReductionModeEXT value)
34989 {
34990 switch (value)
34991 {
34992 case SamplerReductionModeEXT::eWeightedAverage: return "WeightedAverage";
34993 case SamplerReductionModeEXT::eMin: return "Min";
34994 case SamplerReductionModeEXT::eMax: return "Max";
34995 default: return "invalid";
34996 }
34997 }
34998
Lenny Komowb79f04a2017-09-18 17:07:00 -060034999 VULKAN_HPP_INLINE std::string to_string(TessellationDomainOriginKHR value)
35000 {
35001 switch (value)
35002 {
35003 case TessellationDomainOriginKHR::eUpperLeft: return "UpperLeft";
35004 case TessellationDomainOriginKHR::eLowerLeft: return "LowerLeft";
35005 default: return "invalid";
35006 }
35007 }
35008
35009 VULKAN_HPP_INLINE std::string to_string(SamplerYcbcrModelConversionKHR value)
35010 {
35011 switch (value)
35012 {
35013 case SamplerYcbcrModelConversionKHR::eRgbIdentity: return "RgbIdentity";
35014 case SamplerYcbcrModelConversionKHR::eYcbcrIdentity: return "YcbcrIdentity";
35015 case SamplerYcbcrModelConversionKHR::eYcbcr709: return "Ycbcr709";
35016 case SamplerYcbcrModelConversionKHR::eYcbcr601: return "Ycbcr601";
35017 case SamplerYcbcrModelConversionKHR::eYcbcr2020: return "Ycbcr2020";
35018 default: return "invalid";
35019 }
35020 }
35021
35022 VULKAN_HPP_INLINE std::string to_string(SamplerYcbcrRangeKHR value)
35023 {
35024 switch (value)
35025 {
35026 case SamplerYcbcrRangeKHR::eItuFull: return "ItuFull";
35027 case SamplerYcbcrRangeKHR::eItuNarrow: return "ItuNarrow";
35028 default: return "invalid";
35029 }
35030 }
35031
35032 VULKAN_HPP_INLINE std::string to_string(ChromaLocationKHR value)
35033 {
35034 switch (value)
35035 {
35036 case ChromaLocationKHR::eCositedEven: return "CositedEven";
35037 case ChromaLocationKHR::eMidpoint: return "Midpoint";
35038 default: return "invalid";
35039 }
35040 }
35041
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060035042 VULKAN_HPP_INLINE std::string to_string(BlendOverlapEXT value)
35043 {
35044 switch (value)
35045 {
35046 case BlendOverlapEXT::eUncorrelated: return "Uncorrelated";
35047 case BlendOverlapEXT::eDisjoint: return "Disjoint";
35048 case BlendOverlapEXT::eConjoint: return "Conjoint";
35049 default: return "invalid";
35050 }
35051 }
35052
35053 VULKAN_HPP_INLINE std::string to_string(CoverageModulationModeNV value)
35054 {
35055 switch (value)
35056 {
35057 case CoverageModulationModeNV::eNone: return "None";
35058 case CoverageModulationModeNV::eRgb: return "Rgb";
35059 case CoverageModulationModeNV::eAlpha: return "Alpha";
35060 case CoverageModulationModeNV::eRgba: return "Rgba";
35061 default: return "invalid";
35062 }
35063 }
35064
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060035065 VULKAN_HPP_INLINE std::string to_string(ValidationCacheHeaderVersionEXT value)
35066 {
35067 switch (value)
35068 {
35069 case ValidationCacheHeaderVersionEXT::eOne: return "One";
35070 default: return "invalid";
35071 }
35072 }
35073
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060035074} // namespace VULKAN_HPP_NAMESPACE
Lenny Komowbed9b5c2016-08-11 11:23:15 -060035075
35076#endif