blob: 61e8e65b7d2499c85d4aa4db8cbf476e553bd5a2 [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 Lobodzinski2ffbeb82017-10-23 09:23:06 -060036static_assert( VK_HEADER_VERSION == 64 , "Wrong VK_HEADER_VERSION!" );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060037
38// 32-bit vulkan is not typesafe for handles, so don't allow copy constructors on this platform by default.
39// To enable this feature on 32-bit platforms please define VULKAN_HPP_TYPESAFE_CONVERSION
Endre Oma5d2c7ec2016-09-01 17:56:41 +020040#if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
Mark Lobodzinski36c33862017-02-13 10:15:53 -070041# if !defined( VULKAN_HPP_TYPESAFE_CONVERSION )
42# define VULKAN_HPP_TYPESAFE_CONVERSION
43# endif
Lenny Komowbed9b5c2016-08-11 11:23:15 -060044#endif
45
46#if !defined(VULKAN_HPP_HAS_UNRESTRICTED_UNIONS)
47# if defined(__clang__)
48# if __has_feature(cxx_unrestricted_unions)
49# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
50# endif
51# elif defined(__GNUC__)
Lenny Komow6501c122016-08-31 15:03:49 -060052# define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060053# if 40600 <= GCC_VERSION
54# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
55# endif
56# elif defined(_MSC_VER)
57# if 1900 <= _MSC_VER
58# define VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
59# endif
60# endif
61#endif
62
Mark Lobodzinski2d589822016-12-12 09:44:34 -070063#if !defined(VULKAN_HPP_INLINE)
64# if defined(__clang___)
65# if __has_attribute(always_inline)
66# define VULKAN_HPP_INLINE __attribute__((always_inline)) __inline__
67# else
68# define VULKAN_HPP_INLINE inline
69# endif
70# elif defined(__GNUC__)
71# define VULKAN_HPP_INLINE __attribute__((always_inline)) __inline__
72# elif defined(_MSC_VER)
73# define VULKAN_HPP_INLINE __forceinline
74# else
75# define VULKAN_HPP_INLINE inline
76# endif
77#endif
78
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070079#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
80# define VULKAN_HPP_TYPESAFE_EXPLICIT
81#else
82# define VULKAN_HPP_TYPESAFE_EXPLICIT explicit
83#endif
84
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060085
86#if !defined(VULKAN_HPP_NAMESPACE)
87#define VULKAN_HPP_NAMESPACE vk
88#endif
89
90namespace VULKAN_HPP_NAMESPACE
Lenny Komowbed9b5c2016-08-11 11:23:15 -060091{
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060092
Mark Lobodzinski2d589822016-12-12 09:44:34 -070093 template <typename FlagBitsType> struct FlagTraits
94 {
95 enum { allFlags = 0 };
96 };
97
Lenny Komowbed9b5c2016-08-11 11:23:15 -060098 template <typename BitType, typename MaskType = VkFlags>
99 class Flags
100 {
101 public:
102 Flags()
103 : m_mask(0)
104 {
105 }
106
107 Flags(BitType bit)
108 : m_mask(static_cast<MaskType>(bit))
109 {
110 }
111
112 Flags(Flags<BitType> const& rhs)
113 : m_mask(rhs.m_mask)
114 {
115 }
116
117 Flags<BitType> & operator=(Flags<BitType> const& rhs)
118 {
119 m_mask = rhs.m_mask;
120 return *this;
121 }
122
123 Flags<BitType> & operator|=(Flags<BitType> const& rhs)
124 {
125 m_mask |= rhs.m_mask;
126 return *this;
127 }
128
129 Flags<BitType> & operator&=(Flags<BitType> const& rhs)
130 {
131 m_mask &= rhs.m_mask;
132 return *this;
133 }
134
135 Flags<BitType> & operator^=(Flags<BitType> const& rhs)
136 {
137 m_mask ^= rhs.m_mask;
138 return *this;
139 }
140
141 Flags<BitType> operator|(Flags<BitType> const& rhs) const
142 {
143 Flags<BitType> result(*this);
144 result |= rhs;
145 return result;
146 }
147
148 Flags<BitType> operator&(Flags<BitType> const& rhs) const
149 {
150 Flags<BitType> result(*this);
151 result &= rhs;
152 return result;
153 }
154
155 Flags<BitType> operator^(Flags<BitType> const& rhs) const
156 {
157 Flags<BitType> result(*this);
158 result ^= rhs;
159 return result;
160 }
161
162 bool operator!() const
163 {
164 return !m_mask;
165 }
166
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700167 Flags<BitType> operator~() const
168 {
169 Flags<BitType> result(*this);
170 result.m_mask ^= FlagTraits<BitType>::allFlags;
171 return result;
172 }
173
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600174 bool operator==(Flags<BitType> const& rhs) const
175 {
176 return m_mask == rhs.m_mask;
177 }
178
179 bool operator!=(Flags<BitType> const& rhs) const
180 {
181 return m_mask != rhs.m_mask;
182 }
183
184 explicit operator bool() const
185 {
186 return !!m_mask;
187 }
188
189 explicit operator MaskType() const
190 {
191 return m_mask;
192 }
193
194 private:
195 MaskType m_mask;
196 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600197
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600198 template <typename BitType>
199 Flags<BitType> operator|(BitType bit, Flags<BitType> const& flags)
200 {
201 return flags | bit;
202 }
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600203
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600204 template <typename BitType>
205 Flags<BitType> operator&(BitType bit, Flags<BitType> const& flags)
206 {
207 return flags & bit;
208 }
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600209
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600210 template <typename BitType>
211 Flags<BitType> operator^(BitType bit, Flags<BitType> const& flags)
212 {
213 return flags ^ bit;
214 }
215
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700216
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600217 template <typename RefType>
218 class Optional
219 {
220 public:
221 Optional(RefType & reference) { m_ptr = &reference; }
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700222 Optional(RefType * ptr) { m_ptr = ptr; }
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600223 Optional(std::nullptr_t) { m_ptr = nullptr; }
224
225 operator RefType*() const { return m_ptr; }
226 RefType const* operator->() const { return m_ptr; }
227 explicit operator bool() const { return !!m_ptr; }
228
229 private:
230 RefType *m_ptr;
231 };
232
233#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
234 template <typename T>
235 class ArrayProxy
236 {
237 public:
238 ArrayProxy(std::nullptr_t)
239 : m_count(0)
240 , m_ptr(nullptr)
241 {}
242
243 ArrayProxy(T & ptr)
244 : m_count(1)
245 , m_ptr(&ptr)
246 {}
247
248 ArrayProxy(uint32_t count, T * ptr)
249 : m_count(count)
250 , m_ptr(ptr)
251 {}
252
253 template <size_t N>
254 ArrayProxy(std::array<typename std::remove_const<T>::type, N> & data)
255 : m_count(N)
256 , m_ptr(data.data())
257 {}
258
259 template <size_t N>
260 ArrayProxy(std::array<typename std::remove_const<T>::type, N> const& data)
261 : m_count(N)
262 , m_ptr(data.data())
263 {}
264
265 template <class Allocator = std::allocator<typename std::remove_const<T>::type>>
266 ArrayProxy(std::vector<typename std::remove_const<T>::type, Allocator> & data)
267 : m_count(static_cast<uint32_t>(data.size()))
268 , m_ptr(data.data())
269 {}
270
271 template <class Allocator = std::allocator<typename std::remove_const<T>::type>>
272 ArrayProxy(std::vector<typename std::remove_const<T>::type, Allocator> const& data)
273 : m_count(static_cast<uint32_t>(data.size()))
274 , m_ptr(data.data())
275 {}
276
277 ArrayProxy(std::initializer_list<T> const& data)
278 : m_count(static_cast<uint32_t>(data.end() - data.begin()))
279 , m_ptr(data.begin())
280 {}
281
282 const T * begin() const
283 {
284 return m_ptr;
285 }
286
287 const T * end() const
288 {
289 return m_ptr + m_count;
290 }
291
292 const T & front() const
293 {
294 assert(m_count && m_ptr);
295 return *m_ptr;
296 }
297
298 const T & back() const
299 {
300 assert(m_count && m_ptr);
301 return *(m_ptr + m_count - 1);
302 }
303
304 bool empty() const
305 {
306 return (m_count == 0);
307 }
308
309 uint32_t size() const
310 {
311 return m_count;
312 }
313
314 T * data() const
315 {
316 return m_ptr;
317 }
318
319 private:
320 uint32_t m_count;
321 T * m_ptr;
322 };
323#endif
324
Mark Lobodzinski36c33862017-02-13 10:15:53 -0700325#ifndef VULKAN_HPP_NO_SMART_HANDLE
326 template <typename Type, typename Deleter>
327 class UniqueHandle
328 {
329 public:
330 explicit UniqueHandle( Type const& value = Type(), Deleter const& deleter = Deleter() )
331 : m_value( value )
332 , m_deleter( deleter )
333 {}
334
335 UniqueHandle( UniqueHandle const& ) = delete;
336
337 UniqueHandle( UniqueHandle && other )
338 : m_value( other.release() )
339 , m_deleter( std::move( other.m_deleter ) )
340 {}
341
342 ~UniqueHandle()
343 {
344 destroy();
345 }
346
347 UniqueHandle & operator=( UniqueHandle const& ) = delete;
348
349 UniqueHandle & operator=( UniqueHandle && other )
350 {
351 reset( other.release() );
352 m_deleter = std::move( other.m_deleter );
353 return *this;
354 }
355
356 explicit operator bool() const
357 {
358 return m_value.operator bool();
359 }
360
361 Type const* operator->() const
362 {
363 return &m_value;
364 }
365
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -0600366 Type * operator->()
367 {
368 return &m_value;
369 }
370
Mark Lobodzinski36c33862017-02-13 10:15:53 -0700371 Type const& operator*() const
372 {
373 return m_value;
374 }
375
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -0600376 Type & operator*()
377 {
378 return m_value;
379 }
380
381 const Type & get() const
382 {
383 return m_value;
384 }
385
386 Type & get()
Mark Lobodzinski36c33862017-02-13 10:15:53 -0700387 {
388 return m_value;
389 }
390
391 Deleter & getDeleter()
392 {
393 return m_deleter;
394 }
395
396 Deleter const& getDeleter() const
397 {
398 return m_deleter;
399 }
400
401 void reset( Type const& value = Type() )
402 {
403 if ( m_value != value )
404 {
405 destroy();
406 m_value = value;
407 }
408 }
409
410 Type release()
411 {
412 Type value = m_value;
413 m_value = nullptr;
414 return value;
415 }
416
417 void swap( UniqueHandle<Type, Deleter> & rhs )
418 {
419 std::swap(m_value, rhs.m_value);
420 std::swap(m_deleter, rhs.m_deleter);
421 }
422
423 private:
424 void destroy()
425 {
426 if ( m_value )
427 {
428 m_deleter( m_value );
429 }
430 }
431
432 private:
433 Type m_value;
434 Deleter m_deleter;
435 };
436
437 template <typename Type, typename Deleter>
438 VULKAN_HPP_INLINE void swap( UniqueHandle<Type,Deleter> & lhs, UniqueHandle<Type,Deleter> & rhs )
439 {
440 lhs.swap( rhs );
441 }
442#endif
443
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -0600444
Mike Schuchardt2ece4b72017-09-19 15:00:40 -0600445 template <typename X, typename Y> constexpr bool isStructureChainValid() { return false; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -0600446
447 template <class Element>
448 class StructureChainElement
449 {
450 public:
451 explicit operator Element&() { return value; }
452 explicit operator const Element&() const { return value; }
453 private:
454 Element value;
455 };
456
457 template<typename ...StructureElements>
458 class StructureChain : private StructureChainElement<StructureElements>...
459 {
460 public:
461 StructureChain()
462 {
463 link<StructureElements...>();
464 }
465
466 StructureChain(StructureChain const &rhs)
467 {
468 linkAndCopy<StructureElements...>(rhs);
469 }
470
471 StructureChain& operator=(StructureChain const &rhs)
472 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -0600473 linkAndCopy<StructureElements...>(rhs);
474 return *this;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -0600475 }
476
477 template<typename ClassType> ClassType& get() { return static_cast<ClassType&>(*this);}
478
479 private:
480 template<typename X>
481 void link()
482 {
483 }
484
485 template<typename X, typename Y, typename ...Z>
486 void link()
487 {
488 static_assert(isStructureChainValid<X,Y>(), "The structure chain is not valid!");
489 X& x = static_cast<X&>(*this);
490 Y& y = static_cast<Y&>(*this);
491 x.pNext = &y;
492 link<Y, Z...>();
493 }
494
495 template<typename X>
496 void linkAndCopy(StructureChain const &rhs)
497 {
498 static_cast<X&>(*this) = static_cast<X const &>(rhs);
499 }
500
501 template<typename X, typename Y, typename ...Z>
502 void linkAndCopy(StructureChain const &rhs)
503 {
504 static_assert(isStructureChainValid<X,Y>(), "The structure chain is not valid!");
505 X& x = static_cast<X&>(*this);
506 Y& y = static_cast<Y&>(*this);
507 x = static_cast<X const &>(rhs);
508 x.pNext = &y;
509 linkAndCopy<Y, Z...>(rhs);
510 }
511
512};
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600513 enum class Result
514 {
515 eSuccess = VK_SUCCESS,
516 eNotReady = VK_NOT_READY,
517 eTimeout = VK_TIMEOUT,
518 eEventSet = VK_EVENT_SET,
519 eEventReset = VK_EVENT_RESET,
520 eIncomplete = VK_INCOMPLETE,
521 eErrorOutOfHostMemory = VK_ERROR_OUT_OF_HOST_MEMORY,
522 eErrorOutOfDeviceMemory = VK_ERROR_OUT_OF_DEVICE_MEMORY,
523 eErrorInitializationFailed = VK_ERROR_INITIALIZATION_FAILED,
524 eErrorDeviceLost = VK_ERROR_DEVICE_LOST,
525 eErrorMemoryMapFailed = VK_ERROR_MEMORY_MAP_FAILED,
526 eErrorLayerNotPresent = VK_ERROR_LAYER_NOT_PRESENT,
527 eErrorExtensionNotPresent = VK_ERROR_EXTENSION_NOT_PRESENT,
528 eErrorFeatureNotPresent = VK_ERROR_FEATURE_NOT_PRESENT,
529 eErrorIncompatibleDriver = VK_ERROR_INCOMPATIBLE_DRIVER,
530 eErrorTooManyObjects = VK_ERROR_TOO_MANY_OBJECTS,
531 eErrorFormatNotSupported = VK_ERROR_FORMAT_NOT_SUPPORTED,
Lenny Komowebf33162016-08-26 14:10:08 -0600532 eErrorFragmentedPool = VK_ERROR_FRAGMENTED_POOL,
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600533 eErrorSurfaceLostKHR = VK_ERROR_SURFACE_LOST_KHR,
534 eErrorNativeWindowInUseKHR = VK_ERROR_NATIVE_WINDOW_IN_USE_KHR,
535 eSuboptimalKHR = VK_SUBOPTIMAL_KHR,
536 eErrorOutOfDateKHR = VK_ERROR_OUT_OF_DATE_KHR,
537 eErrorIncompatibleDisplayKHR = VK_ERROR_INCOMPATIBLE_DISPLAY_KHR,
538 eErrorValidationFailedEXT = VK_ERROR_VALIDATION_FAILED_EXT,
Mark Young39389872017-01-19 21:10:49 -0700539 eErrorInvalidShaderNV = VK_ERROR_INVALID_SHADER_NV,
Mark Young0f183a82017-02-28 09:58:04 -0700540 eErrorOutOfPoolMemoryKHR = VK_ERROR_OUT_OF_POOL_MEMORY_KHR,
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -0600541 eErrorInvalidExternalHandleKHR = VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR,
542 eErrorNotPermittedEXT = VK_ERROR_NOT_PERMITTED_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600543 };
544
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700545 VULKAN_HPP_INLINE std::string to_string(Result value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600546 {
547 switch (value)
548 {
549 case Result::eSuccess: return "Success";
550 case Result::eNotReady: return "NotReady";
551 case Result::eTimeout: return "Timeout";
552 case Result::eEventSet: return "EventSet";
553 case Result::eEventReset: return "EventReset";
554 case Result::eIncomplete: return "Incomplete";
555 case Result::eErrorOutOfHostMemory: return "ErrorOutOfHostMemory";
556 case Result::eErrorOutOfDeviceMemory: return "ErrorOutOfDeviceMemory";
557 case Result::eErrorInitializationFailed: return "ErrorInitializationFailed";
558 case Result::eErrorDeviceLost: return "ErrorDeviceLost";
559 case Result::eErrorMemoryMapFailed: return "ErrorMemoryMapFailed";
560 case Result::eErrorLayerNotPresent: return "ErrorLayerNotPresent";
561 case Result::eErrorExtensionNotPresent: return "ErrorExtensionNotPresent";
562 case Result::eErrorFeatureNotPresent: return "ErrorFeatureNotPresent";
563 case Result::eErrorIncompatibleDriver: return "ErrorIncompatibleDriver";
564 case Result::eErrorTooManyObjects: return "ErrorTooManyObjects";
565 case Result::eErrorFormatNotSupported: return "ErrorFormatNotSupported";
Lenny Komowebf33162016-08-26 14:10:08 -0600566 case Result::eErrorFragmentedPool: return "ErrorFragmentedPool";
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600567 case Result::eErrorSurfaceLostKHR: return "ErrorSurfaceLostKHR";
568 case Result::eErrorNativeWindowInUseKHR: return "ErrorNativeWindowInUseKHR";
569 case Result::eSuboptimalKHR: return "SuboptimalKHR";
570 case Result::eErrorOutOfDateKHR: return "ErrorOutOfDateKHR";
571 case Result::eErrorIncompatibleDisplayKHR: return "ErrorIncompatibleDisplayKHR";
572 case Result::eErrorValidationFailedEXT: return "ErrorValidationFailedEXT";
573 case Result::eErrorInvalidShaderNV: return "ErrorInvalidShaderNV";
Mark Young39389872017-01-19 21:10:49 -0700574 case Result::eErrorOutOfPoolMemoryKHR: return "ErrorOutOfPoolMemoryKHR";
Mark Youngabc2d6e2017-07-07 07:59:56 -0600575 case Result::eErrorInvalidExternalHandleKHR: return "ErrorInvalidExternalHandleKHR";
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -0600576 case Result::eErrorNotPermittedEXT: return "ErrorNotPermittedEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600577 default: return "invalid";
578 }
579 }
580
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -0600581#ifndef VULKAN_HPP_NO_EXCEPTIONS
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600582#if defined(_MSC_VER) && (_MSC_VER == 1800)
583# define noexcept _NOEXCEPT
584#endif
585
586 class ErrorCategoryImpl : public std::error_category
587 {
588 public:
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -0600589 virtual const char* name() const noexcept override { return "VULKAN_HPP_NAMESPACE::Result"; }
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600590 virtual std::string message(int ev) const override { return to_string(static_cast<Result>(ev)); }
591 };
592
593#if defined(_MSC_VER) && (_MSC_VER == 1800)
594# undef noexcept
595#endif
596
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700597 VULKAN_HPP_INLINE const std::error_category& errorCategory()
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600598 {
599 static ErrorCategoryImpl instance;
600 return instance;
601 }
602
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700603 VULKAN_HPP_INLINE std::error_code make_error_code(Result e)
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600604 {
605 return std::error_code(static_cast<int>(e), errorCategory());
606 }
607
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700608 VULKAN_HPP_INLINE std::error_condition make_error_condition(Result e)
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600609 {
610 return std::error_condition(static_cast<int>(e), errorCategory());
611 }
612
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600613#if defined(_MSC_VER) && (_MSC_VER == 1800)
614# define noexcept _NOEXCEPT
615#endif
616
617 class Error
618 {
619 public:
620 virtual ~Error() = default;
621
622 virtual const char* what() const noexcept = 0;
623 };
624
625 class LogicError : public Error, public std::logic_error
626 {
627 public:
628 explicit LogicError( const std::string& what )
629 : Error(), std::logic_error(what) {}
630 explicit LogicError( char const * what )
631 : Error(), std::logic_error(what) {}
632 virtual ~LogicError() = default;
633
634 virtual const char* what() const noexcept { return std::logic_error::what(); }
635 };
636
637 class SystemError : public Error, public std::system_error
638 {
639 public:
640 SystemError( std::error_code ec )
641 : Error(), std::system_error(ec) {}
642 SystemError( std::error_code ec, std::string const& what )
643 : Error(), std::system_error(ec, what) {}
644 SystemError( std::error_code ec, char const * what )
645 : Error(), std::system_error(ec, what) {}
646 SystemError( int ev, std::error_category const& ecat )
647 : Error(), std::system_error(ev, ecat) {}
648 SystemError( int ev, std::error_category const& ecat, std::string const& what)
649 : Error(), std::system_error(ev, ecat, what) {}
650 SystemError( int ev, std::error_category const& ecat, char const * what)
651 : Error(), std::system_error(ev, ecat, what) {}
652 virtual ~SystemError() = default;
653
654 virtual const char* what() const noexcept { return std::system_error::what(); }
655 };
656
657#if defined(_MSC_VER) && (_MSC_VER == 1800)
658# undef noexcept
659#endif
660
661 class OutOfHostMemoryError : public SystemError
662 {
663 public:
664 OutOfHostMemoryError( std::string const& message )
665 : SystemError( make_error_code( Result::eErrorOutOfHostMemory ), message ) {}
666 OutOfHostMemoryError( char const * message )
667 : SystemError( make_error_code( Result::eErrorOutOfHostMemory ), message ) {}
668 };
669 class OutOfDeviceMemoryError : public SystemError
670 {
671 public:
672 OutOfDeviceMemoryError( std::string const& message )
673 : SystemError( make_error_code( Result::eErrorOutOfDeviceMemory ), message ) {}
674 OutOfDeviceMemoryError( char const * message )
675 : SystemError( make_error_code( Result::eErrorOutOfDeviceMemory ), message ) {}
676 };
677 class InitializationFailedError : public SystemError
678 {
679 public:
680 InitializationFailedError( std::string const& message )
681 : SystemError( make_error_code( Result::eErrorInitializationFailed ), message ) {}
682 InitializationFailedError( char const * message )
683 : SystemError( make_error_code( Result::eErrorInitializationFailed ), message ) {}
684 };
685 class DeviceLostError : public SystemError
686 {
687 public:
688 DeviceLostError( std::string const& message )
689 : SystemError( make_error_code( Result::eErrorDeviceLost ), message ) {}
690 DeviceLostError( char const * message )
691 : SystemError( make_error_code( Result::eErrorDeviceLost ), message ) {}
692 };
693 class MemoryMapFailedError : public SystemError
694 {
695 public:
696 MemoryMapFailedError( std::string const& message )
697 : SystemError( make_error_code( Result::eErrorMemoryMapFailed ), message ) {}
698 MemoryMapFailedError( char const * message )
699 : SystemError( make_error_code( Result::eErrorMemoryMapFailed ), message ) {}
700 };
701 class LayerNotPresentError : public SystemError
702 {
703 public:
704 LayerNotPresentError( std::string const& message )
705 : SystemError( make_error_code( Result::eErrorLayerNotPresent ), message ) {}
706 LayerNotPresentError( char const * message )
707 : SystemError( make_error_code( Result::eErrorLayerNotPresent ), message ) {}
708 };
709 class ExtensionNotPresentError : public SystemError
710 {
711 public:
712 ExtensionNotPresentError( std::string const& message )
713 : SystemError( make_error_code( Result::eErrorExtensionNotPresent ), message ) {}
714 ExtensionNotPresentError( char const * message )
715 : SystemError( make_error_code( Result::eErrorExtensionNotPresent ), message ) {}
716 };
717 class FeatureNotPresentError : public SystemError
718 {
719 public:
720 FeatureNotPresentError( std::string const& message )
721 : SystemError( make_error_code( Result::eErrorFeatureNotPresent ), message ) {}
722 FeatureNotPresentError( char const * message )
723 : SystemError( make_error_code( Result::eErrorFeatureNotPresent ), message ) {}
724 };
725 class IncompatibleDriverError : public SystemError
726 {
727 public:
728 IncompatibleDriverError( std::string const& message )
729 : SystemError( make_error_code( Result::eErrorIncompatibleDriver ), message ) {}
730 IncompatibleDriverError( char const * message )
731 : SystemError( make_error_code( Result::eErrorIncompatibleDriver ), message ) {}
732 };
733 class TooManyObjectsError : public SystemError
734 {
735 public:
736 TooManyObjectsError( std::string const& message )
737 : SystemError( make_error_code( Result::eErrorTooManyObjects ), message ) {}
738 TooManyObjectsError( char const * message )
739 : SystemError( make_error_code( Result::eErrorTooManyObjects ), message ) {}
740 };
741 class FormatNotSupportedError : public SystemError
742 {
743 public:
744 FormatNotSupportedError( std::string const& message )
745 : SystemError( make_error_code( Result::eErrorFormatNotSupported ), message ) {}
746 FormatNotSupportedError( char const * message )
747 : SystemError( make_error_code( Result::eErrorFormatNotSupported ), message ) {}
748 };
749 class FragmentedPoolError : public SystemError
750 {
751 public:
752 FragmentedPoolError( std::string const& message )
753 : SystemError( make_error_code( Result::eErrorFragmentedPool ), message ) {}
754 FragmentedPoolError( char const * message )
755 : SystemError( make_error_code( Result::eErrorFragmentedPool ), message ) {}
756 };
757 class SurfaceLostKHRError : public SystemError
758 {
759 public:
760 SurfaceLostKHRError( std::string const& message )
761 : SystemError( make_error_code( Result::eErrorSurfaceLostKHR ), message ) {}
762 SurfaceLostKHRError( char const * message )
763 : SystemError( make_error_code( Result::eErrorSurfaceLostKHR ), message ) {}
764 };
765 class NativeWindowInUseKHRError : public SystemError
766 {
767 public:
768 NativeWindowInUseKHRError( std::string const& message )
769 : SystemError( make_error_code( Result::eErrorNativeWindowInUseKHR ), message ) {}
770 NativeWindowInUseKHRError( char const * message )
771 : SystemError( make_error_code( Result::eErrorNativeWindowInUseKHR ), message ) {}
772 };
773 class OutOfDateKHRError : public SystemError
774 {
775 public:
776 OutOfDateKHRError( std::string const& message )
777 : SystemError( make_error_code( Result::eErrorOutOfDateKHR ), message ) {}
778 OutOfDateKHRError( char const * message )
779 : SystemError( make_error_code( Result::eErrorOutOfDateKHR ), message ) {}
780 };
781 class IncompatibleDisplayKHRError : public SystemError
782 {
783 public:
784 IncompatibleDisplayKHRError( std::string const& message )
785 : SystemError( make_error_code( Result::eErrorIncompatibleDisplayKHR ), message ) {}
786 IncompatibleDisplayKHRError( char const * message )
787 : SystemError( make_error_code( Result::eErrorIncompatibleDisplayKHR ), message ) {}
788 };
789 class ValidationFailedEXTError : public SystemError
790 {
791 public:
792 ValidationFailedEXTError( std::string const& message )
793 : SystemError( make_error_code( Result::eErrorValidationFailedEXT ), message ) {}
794 ValidationFailedEXTError( char const * message )
795 : SystemError( make_error_code( Result::eErrorValidationFailedEXT ), message ) {}
796 };
797 class InvalidShaderNVError : public SystemError
798 {
799 public:
800 InvalidShaderNVError( std::string const& message )
801 : SystemError( make_error_code( Result::eErrorInvalidShaderNV ), message ) {}
802 InvalidShaderNVError( char const * message )
803 : SystemError( make_error_code( Result::eErrorInvalidShaderNV ), message ) {}
804 };
805 class OutOfPoolMemoryKHRError : public SystemError
806 {
807 public:
808 OutOfPoolMemoryKHRError( std::string const& message )
809 : SystemError( make_error_code( Result::eErrorOutOfPoolMemoryKHR ), message ) {}
810 OutOfPoolMemoryKHRError( char const * message )
811 : SystemError( make_error_code( Result::eErrorOutOfPoolMemoryKHR ), message ) {}
812 };
Mark Youngabc2d6e2017-07-07 07:59:56 -0600813 class InvalidExternalHandleKHRError : public SystemError
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600814 {
815 public:
Mark Youngabc2d6e2017-07-07 07:59:56 -0600816 InvalidExternalHandleKHRError( std::string const& message )
817 : SystemError( make_error_code( Result::eErrorInvalidExternalHandleKHR ), message ) {}
818 InvalidExternalHandleKHRError( char const * message )
819 : SystemError( make_error_code( Result::eErrorInvalidExternalHandleKHR ), message ) {}
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600820 };
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -0600821 class NotPermittedEXTError : public SystemError
822 {
823 public:
824 NotPermittedEXTError( std::string const& message )
825 : SystemError( make_error_code( Result::eErrorNotPermittedEXT ), message ) {}
826 NotPermittedEXTError( char const * message )
827 : SystemError( make_error_code( Result::eErrorNotPermittedEXT ), message ) {}
828 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600829
830 VULKAN_HPP_INLINE void throwResultException( Result result, char const * message )
831 {
832 assert ( static_cast<long long int>(result) < 0 );
833 switch ( result )
834 {
835 case Result::eErrorOutOfHostMemory: throw OutOfHostMemoryError ( message );
836 case Result::eErrorOutOfDeviceMemory: throw OutOfDeviceMemoryError ( message );
837 case Result::eErrorInitializationFailed: throw InitializationFailedError ( message );
838 case Result::eErrorDeviceLost: throw DeviceLostError ( message );
839 case Result::eErrorMemoryMapFailed: throw MemoryMapFailedError ( message );
840 case Result::eErrorLayerNotPresent: throw LayerNotPresentError ( message );
841 case Result::eErrorExtensionNotPresent: throw ExtensionNotPresentError ( message );
842 case Result::eErrorFeatureNotPresent: throw FeatureNotPresentError ( message );
843 case Result::eErrorIncompatibleDriver: throw IncompatibleDriverError ( message );
844 case Result::eErrorTooManyObjects: throw TooManyObjectsError ( message );
845 case Result::eErrorFormatNotSupported: throw FormatNotSupportedError ( message );
846 case Result::eErrorFragmentedPool: throw FragmentedPoolError ( message );
847 case Result::eErrorSurfaceLostKHR: throw SurfaceLostKHRError ( message );
848 case Result::eErrorNativeWindowInUseKHR: throw NativeWindowInUseKHRError ( message );
849 case Result::eErrorOutOfDateKHR: throw OutOfDateKHRError ( message );
850 case Result::eErrorIncompatibleDisplayKHR: throw IncompatibleDisplayKHRError ( message );
851 case Result::eErrorValidationFailedEXT: throw ValidationFailedEXTError ( message );
852 case Result::eErrorInvalidShaderNV: throw InvalidShaderNVError ( message );
853 case Result::eErrorOutOfPoolMemoryKHR: throw OutOfPoolMemoryKHRError ( message );
Mark Youngabc2d6e2017-07-07 07:59:56 -0600854 case Result::eErrorInvalidExternalHandleKHR: throw InvalidExternalHandleKHRError ( message );
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -0600855 case Result::eErrorNotPermittedEXT: throw NotPermittedEXTError ( message );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600856 default: throw SystemError( make_error_code( result ) );
857 }
858 }
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -0600859#endif
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -0600860} // namespace VULKAN_HPP_NAMESPACE
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600861
862namespace std
863{
864 template <>
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -0600865 struct is_error_code_enum<VULKAN_HPP_NAMESPACE::Result> : public true_type
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600866 {};
867}
868
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -0600869namespace VULKAN_HPP_NAMESPACE
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600870{
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600871
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600872 template <typename T>
873 struct ResultValue
874 {
875 ResultValue( Result r, T & v )
876 : result( r )
877 , value( v )
878 {}
879
880 Result result;
881 T value;
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700882
883 operator std::tuple<Result&, T&>() { return std::tuple<Result&, T&>(result, value); }
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600884 };
885
886 template <typename T>
887 struct ResultValueType
888 {
889#ifdef VULKAN_HPP_NO_EXCEPTIONS
890 typedef ResultValue<T> type;
891#else
892 typedef T type;
893#endif
894 };
895
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600896 template <>
897 struct ResultValueType<void>
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600898 {
899#ifdef VULKAN_HPP_NO_EXCEPTIONS
900 typedef Result type;
901#else
902 typedef void type;
903#endif
904 };
905
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700906 VULKAN_HPP_INLINE ResultValueType<void>::type createResultValue( Result result, char const * message )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600907 {
908#ifdef VULKAN_HPP_NO_EXCEPTIONS
909 assert( result == Result::eSuccess );
910 return result;
911#else
912 if ( result != Result::eSuccess )
913 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600914 throwResultException( result, message );
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600915 }
916#endif
917 }
918
919 template <typename T>
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700920 VULKAN_HPP_INLINE typename ResultValueType<T>::type createResultValue( Result result, T & data, char const * message )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600921 {
922#ifdef VULKAN_HPP_NO_EXCEPTIONS
923 assert( result == Result::eSuccess );
924 return ResultValue<T>( result, data );
925#else
926 if ( result != Result::eSuccess )
927 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600928 throwResultException( result, message );
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600929 }
930 return data;
931#endif
932 }
933
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700934 VULKAN_HPP_INLINE Result createResultValue( Result result, char const * message, std::initializer_list<Result> successCodes )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600935 {
936#ifdef VULKAN_HPP_NO_EXCEPTIONS
937 assert( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() );
938#else
939 if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() )
940 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600941 throwResultException( result, message );
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600942 }
943#endif
944 return result;
945 }
946
947 template <typename T>
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700948 VULKAN_HPP_INLINE ResultValue<T> createResultValue( Result result, T & data, char const * message, std::initializer_list<Result> successCodes )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600949 {
950#ifdef VULKAN_HPP_NO_EXCEPTIONS
951 assert( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() );
952#else
953 if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() )
954 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600955 throwResultException( result, message );
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600956 }
957#endif
958 return ResultValue<T>( result, data );
959 }
960
961 using SampleMask = uint32_t;
962
963 using Bool32 = uint32_t;
964
965 using DeviceSize = uint64_t;
966
967 enum class FramebufferCreateFlagBits
968 {
969 };
970
971 using FramebufferCreateFlags = Flags<FramebufferCreateFlagBits, VkFramebufferCreateFlags>;
972
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600973 enum class QueryPoolCreateFlagBits
974 {
975 };
976
977 using QueryPoolCreateFlags = Flags<QueryPoolCreateFlagBits, VkQueryPoolCreateFlags>;
978
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600979 enum class RenderPassCreateFlagBits
980 {
981 };
982
983 using RenderPassCreateFlags = Flags<RenderPassCreateFlagBits, VkRenderPassCreateFlags>;
984
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600985 enum class SamplerCreateFlagBits
986 {
987 };
988
989 using SamplerCreateFlags = Flags<SamplerCreateFlagBits, VkSamplerCreateFlags>;
990
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600991 enum class PipelineLayoutCreateFlagBits
992 {
993 };
994
995 using PipelineLayoutCreateFlags = Flags<PipelineLayoutCreateFlagBits, VkPipelineLayoutCreateFlags>;
996
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600997 enum class PipelineCacheCreateFlagBits
998 {
999 };
1000
1001 using PipelineCacheCreateFlags = Flags<PipelineCacheCreateFlagBits, VkPipelineCacheCreateFlags>;
1002
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001003 enum class PipelineDepthStencilStateCreateFlagBits
1004 {
1005 };
1006
1007 using PipelineDepthStencilStateCreateFlags = Flags<PipelineDepthStencilStateCreateFlagBits, VkPipelineDepthStencilStateCreateFlags>;
1008
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001009 enum class PipelineDynamicStateCreateFlagBits
1010 {
1011 };
1012
1013 using PipelineDynamicStateCreateFlags = Flags<PipelineDynamicStateCreateFlagBits, VkPipelineDynamicStateCreateFlags>;
1014
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001015 enum class PipelineColorBlendStateCreateFlagBits
1016 {
1017 };
1018
1019 using PipelineColorBlendStateCreateFlags = Flags<PipelineColorBlendStateCreateFlagBits, VkPipelineColorBlendStateCreateFlags>;
1020
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001021 enum class PipelineMultisampleStateCreateFlagBits
1022 {
1023 };
1024
1025 using PipelineMultisampleStateCreateFlags = Flags<PipelineMultisampleStateCreateFlagBits, VkPipelineMultisampleStateCreateFlags>;
1026
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001027 enum class PipelineRasterizationStateCreateFlagBits
1028 {
1029 };
1030
1031 using PipelineRasterizationStateCreateFlags = Flags<PipelineRasterizationStateCreateFlagBits, VkPipelineRasterizationStateCreateFlags>;
1032
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001033 enum class PipelineViewportStateCreateFlagBits
1034 {
1035 };
1036
1037 using PipelineViewportStateCreateFlags = Flags<PipelineViewportStateCreateFlagBits, VkPipelineViewportStateCreateFlags>;
1038
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001039 enum class PipelineTessellationStateCreateFlagBits
1040 {
1041 };
1042
1043 using PipelineTessellationStateCreateFlags = Flags<PipelineTessellationStateCreateFlagBits, VkPipelineTessellationStateCreateFlags>;
1044
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001045 enum class PipelineInputAssemblyStateCreateFlagBits
1046 {
1047 };
1048
1049 using PipelineInputAssemblyStateCreateFlags = Flags<PipelineInputAssemblyStateCreateFlagBits, VkPipelineInputAssemblyStateCreateFlags>;
1050
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001051 enum class PipelineVertexInputStateCreateFlagBits
1052 {
1053 };
1054
1055 using PipelineVertexInputStateCreateFlags = Flags<PipelineVertexInputStateCreateFlagBits, VkPipelineVertexInputStateCreateFlags>;
1056
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001057 enum class PipelineShaderStageCreateFlagBits
1058 {
1059 };
1060
1061 using PipelineShaderStageCreateFlags = Flags<PipelineShaderStageCreateFlagBits, VkPipelineShaderStageCreateFlags>;
1062
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001063 enum class BufferViewCreateFlagBits
1064 {
1065 };
1066
1067 using BufferViewCreateFlags = Flags<BufferViewCreateFlagBits, VkBufferViewCreateFlags>;
1068
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001069 enum class InstanceCreateFlagBits
1070 {
1071 };
1072
1073 using InstanceCreateFlags = Flags<InstanceCreateFlagBits, VkInstanceCreateFlags>;
1074
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001075 enum class DeviceCreateFlagBits
1076 {
1077 };
1078
1079 using DeviceCreateFlags = Flags<DeviceCreateFlagBits, VkDeviceCreateFlags>;
1080
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001081 enum class DeviceQueueCreateFlagBits
1082 {
1083 };
1084
1085 using DeviceQueueCreateFlags = Flags<DeviceQueueCreateFlagBits, VkDeviceQueueCreateFlags>;
1086
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001087 enum class ImageViewCreateFlagBits
1088 {
1089 };
1090
1091 using ImageViewCreateFlags = Flags<ImageViewCreateFlagBits, VkImageViewCreateFlags>;
1092
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001093 enum class SemaphoreCreateFlagBits
1094 {
1095 };
1096
1097 using SemaphoreCreateFlags = Flags<SemaphoreCreateFlagBits, VkSemaphoreCreateFlags>;
1098
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001099 enum class ShaderModuleCreateFlagBits
1100 {
1101 };
1102
1103 using ShaderModuleCreateFlags = Flags<ShaderModuleCreateFlagBits, VkShaderModuleCreateFlags>;
1104
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001105 enum class EventCreateFlagBits
1106 {
1107 };
1108
1109 using EventCreateFlags = Flags<EventCreateFlagBits, VkEventCreateFlags>;
1110
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001111 enum class MemoryMapFlagBits
1112 {
1113 };
1114
1115 using MemoryMapFlags = Flags<MemoryMapFlagBits, VkMemoryMapFlags>;
1116
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001117 enum class DescriptorPoolResetFlagBits
1118 {
1119 };
1120
1121 using DescriptorPoolResetFlags = Flags<DescriptorPoolResetFlagBits, VkDescriptorPoolResetFlags>;
1122
Mark Young0f183a82017-02-28 09:58:04 -07001123 enum class DescriptorUpdateTemplateCreateFlagBitsKHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001124 {
1125 };
1126
Mark Young0f183a82017-02-28 09:58:04 -07001127 using DescriptorUpdateTemplateCreateFlagsKHR = Flags<DescriptorUpdateTemplateCreateFlagBitsKHR, VkDescriptorUpdateTemplateCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001128
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001129 enum class DisplayModeCreateFlagBitsKHR
1130 {
1131 };
1132
1133 using DisplayModeCreateFlagsKHR = Flags<DisplayModeCreateFlagBitsKHR, VkDisplayModeCreateFlagsKHR>;
1134
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001135 enum class DisplaySurfaceCreateFlagBitsKHR
1136 {
1137 };
1138
1139 using DisplaySurfaceCreateFlagsKHR = Flags<DisplaySurfaceCreateFlagBitsKHR, VkDisplaySurfaceCreateFlagsKHR>;
1140
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001141#ifdef VK_USE_PLATFORM_ANDROID_KHR
1142 enum class AndroidSurfaceCreateFlagBitsKHR
1143 {
1144 };
1145#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
1146
1147#ifdef VK_USE_PLATFORM_ANDROID_KHR
1148 using AndroidSurfaceCreateFlagsKHR = Flags<AndroidSurfaceCreateFlagBitsKHR, VkAndroidSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001149#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
1150
1151#ifdef VK_USE_PLATFORM_MIR_KHR
1152 enum class MirSurfaceCreateFlagBitsKHR
1153 {
1154 };
1155#endif /*VK_USE_PLATFORM_MIR_KHR*/
1156
1157#ifdef VK_USE_PLATFORM_MIR_KHR
1158 using MirSurfaceCreateFlagsKHR = Flags<MirSurfaceCreateFlagBitsKHR, VkMirSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001159#endif /*VK_USE_PLATFORM_MIR_KHR*/
1160
Mark Young39389872017-01-19 21:10:49 -07001161#ifdef VK_USE_PLATFORM_VI_NN
1162 enum class ViSurfaceCreateFlagBitsNN
1163 {
1164 };
1165#endif /*VK_USE_PLATFORM_VI_NN*/
1166
1167#ifdef VK_USE_PLATFORM_VI_NN
1168 using ViSurfaceCreateFlagsNN = Flags<ViSurfaceCreateFlagBitsNN, VkViSurfaceCreateFlagsNN>;
Mark Young39389872017-01-19 21:10:49 -07001169#endif /*VK_USE_PLATFORM_VI_NN*/
1170
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001171#ifdef VK_USE_PLATFORM_WAYLAND_KHR
1172 enum class WaylandSurfaceCreateFlagBitsKHR
1173 {
1174 };
1175#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
1176
1177#ifdef VK_USE_PLATFORM_WAYLAND_KHR
1178 using WaylandSurfaceCreateFlagsKHR = Flags<WaylandSurfaceCreateFlagBitsKHR, VkWaylandSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001179#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
1180
1181#ifdef VK_USE_PLATFORM_WIN32_KHR
1182 enum class Win32SurfaceCreateFlagBitsKHR
1183 {
1184 };
1185#endif /*VK_USE_PLATFORM_WIN32_KHR*/
1186
1187#ifdef VK_USE_PLATFORM_WIN32_KHR
1188 using Win32SurfaceCreateFlagsKHR = Flags<Win32SurfaceCreateFlagBitsKHR, VkWin32SurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001189#endif /*VK_USE_PLATFORM_WIN32_KHR*/
1190
1191#ifdef VK_USE_PLATFORM_XLIB_KHR
1192 enum class XlibSurfaceCreateFlagBitsKHR
1193 {
1194 };
1195#endif /*VK_USE_PLATFORM_XLIB_KHR*/
1196
1197#ifdef VK_USE_PLATFORM_XLIB_KHR
1198 using XlibSurfaceCreateFlagsKHR = Flags<XlibSurfaceCreateFlagBitsKHR, VkXlibSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001199#endif /*VK_USE_PLATFORM_XLIB_KHR*/
1200
1201#ifdef VK_USE_PLATFORM_XCB_KHR
1202 enum class XcbSurfaceCreateFlagBitsKHR
1203 {
1204 };
1205#endif /*VK_USE_PLATFORM_XCB_KHR*/
1206
1207#ifdef VK_USE_PLATFORM_XCB_KHR
1208 using XcbSurfaceCreateFlagsKHR = Flags<XcbSurfaceCreateFlagBitsKHR, VkXcbSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001209#endif /*VK_USE_PLATFORM_XCB_KHR*/
1210
Mark Young0f183a82017-02-28 09:58:04 -07001211#ifdef VK_USE_PLATFORM_IOS_MVK
1212 enum class IOSSurfaceCreateFlagBitsMVK
1213 {
1214 };
1215#endif /*VK_USE_PLATFORM_IOS_MVK*/
1216
1217#ifdef VK_USE_PLATFORM_IOS_MVK
1218 using IOSSurfaceCreateFlagsMVK = Flags<IOSSurfaceCreateFlagBitsMVK, VkIOSSurfaceCreateFlagsMVK>;
Mark Young0f183a82017-02-28 09:58:04 -07001219#endif /*VK_USE_PLATFORM_IOS_MVK*/
1220
1221#ifdef VK_USE_PLATFORM_MACOS_MVK
1222 enum class MacOSSurfaceCreateFlagBitsMVK
1223 {
1224 };
1225#endif /*VK_USE_PLATFORM_MACOS_MVK*/
1226
1227#ifdef VK_USE_PLATFORM_MACOS_MVK
1228 using MacOSSurfaceCreateFlagsMVK = Flags<MacOSSurfaceCreateFlagBitsMVK, VkMacOSSurfaceCreateFlagsMVK>;
Mark Young0f183a82017-02-28 09:58:04 -07001229#endif /*VK_USE_PLATFORM_MACOS_MVK*/
1230
Mark Young39389872017-01-19 21:10:49 -07001231 enum class CommandPoolTrimFlagBitsKHR
1232 {
1233 };
1234
1235 using CommandPoolTrimFlagsKHR = Flags<CommandPoolTrimFlagBitsKHR, VkCommandPoolTrimFlagsKHR>;
1236
Mark Young0f183a82017-02-28 09:58:04 -07001237 enum class PipelineViewportSwizzleStateCreateFlagBitsNV
1238 {
1239 };
1240
1241 using PipelineViewportSwizzleStateCreateFlagsNV = Flags<PipelineViewportSwizzleStateCreateFlagBitsNV, VkPipelineViewportSwizzleStateCreateFlagsNV>;
1242
Mark Young0f183a82017-02-28 09:58:04 -07001243 enum class PipelineDiscardRectangleStateCreateFlagBitsEXT
1244 {
1245 };
1246
1247 using PipelineDiscardRectangleStateCreateFlagsEXT = Flags<PipelineDiscardRectangleStateCreateFlagBitsEXT, VkPipelineDiscardRectangleStateCreateFlagsEXT>;
1248
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06001249 enum class PipelineCoverageToColorStateCreateFlagBitsNV
1250 {
1251 };
1252
1253 using PipelineCoverageToColorStateCreateFlagsNV = Flags<PipelineCoverageToColorStateCreateFlagBitsNV, VkPipelineCoverageToColorStateCreateFlagsNV>;
1254
1255 enum class PipelineCoverageModulationStateCreateFlagBitsNV
1256 {
1257 };
1258
1259 using PipelineCoverageModulationStateCreateFlagsNV = Flags<PipelineCoverageModulationStateCreateFlagBitsNV, VkPipelineCoverageModulationStateCreateFlagsNV>;
1260
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06001261 enum class ValidationCacheCreateFlagBitsEXT
1262 {
1263 };
1264
1265 using ValidationCacheCreateFlagsEXT = Flags<ValidationCacheCreateFlagBitsEXT, VkValidationCacheCreateFlagsEXT>;
1266
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001267 class DeviceMemory
1268 {
1269 public:
1270 DeviceMemory()
1271 : m_deviceMemory(VK_NULL_HANDLE)
1272 {}
1273
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001274 DeviceMemory( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001275 : m_deviceMemory(VK_NULL_HANDLE)
1276 {}
1277
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001278 VULKAN_HPP_TYPESAFE_EXPLICIT DeviceMemory( VkDeviceMemory deviceMemory )
1279 : m_deviceMemory( deviceMemory )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001280 {}
1281
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001282#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001283 DeviceMemory & operator=(VkDeviceMemory deviceMemory)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001284 {
1285 m_deviceMemory = deviceMemory;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001286 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001287 }
1288#endif
1289
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001290 DeviceMemory & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001291 {
1292 m_deviceMemory = VK_NULL_HANDLE;
1293 return *this;
1294 }
1295
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001296 bool operator==( DeviceMemory const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001297 {
1298 return m_deviceMemory == rhs.m_deviceMemory;
1299 }
1300
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001301 bool operator!=(DeviceMemory const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001302 {
1303 return m_deviceMemory != rhs.m_deviceMemory;
1304 }
1305
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001306 bool operator<(DeviceMemory const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001307 {
1308 return m_deviceMemory < rhs.m_deviceMemory;
1309 }
1310
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001311
1312
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001313 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDeviceMemory() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001314 {
1315 return m_deviceMemory;
1316 }
1317
1318 explicit operator bool() const
1319 {
1320 return m_deviceMemory != VK_NULL_HANDLE;
1321 }
1322
1323 bool operator!() const
1324 {
1325 return m_deviceMemory == VK_NULL_HANDLE;
1326 }
1327
1328 private:
1329 VkDeviceMemory m_deviceMemory;
1330 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001331
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001332 static_assert( sizeof( DeviceMemory ) == sizeof( VkDeviceMemory ), "handle and wrapper have different size!" );
1333
1334 class CommandPool
1335 {
1336 public:
1337 CommandPool()
1338 : m_commandPool(VK_NULL_HANDLE)
1339 {}
1340
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001341 CommandPool( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001342 : m_commandPool(VK_NULL_HANDLE)
1343 {}
1344
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001345 VULKAN_HPP_TYPESAFE_EXPLICIT CommandPool( VkCommandPool commandPool )
1346 : m_commandPool( commandPool )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001347 {}
1348
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001349#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001350 CommandPool & operator=(VkCommandPool commandPool)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001351 {
1352 m_commandPool = commandPool;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001353 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001354 }
1355#endif
1356
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001357 CommandPool & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001358 {
1359 m_commandPool = VK_NULL_HANDLE;
1360 return *this;
1361 }
1362
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001363 bool operator==( CommandPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001364 {
1365 return m_commandPool == rhs.m_commandPool;
1366 }
1367
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001368 bool operator!=(CommandPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001369 {
1370 return m_commandPool != rhs.m_commandPool;
1371 }
1372
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001373 bool operator<(CommandPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001374 {
1375 return m_commandPool < rhs.m_commandPool;
1376 }
1377
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001378
1379
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001380 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandPool() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001381 {
1382 return m_commandPool;
1383 }
1384
1385 explicit operator bool() const
1386 {
1387 return m_commandPool != VK_NULL_HANDLE;
1388 }
1389
1390 bool operator!() const
1391 {
1392 return m_commandPool == VK_NULL_HANDLE;
1393 }
1394
1395 private:
1396 VkCommandPool m_commandPool;
1397 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001398
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001399 static_assert( sizeof( CommandPool ) == sizeof( VkCommandPool ), "handle and wrapper have different size!" );
1400
1401 class Buffer
1402 {
1403 public:
1404 Buffer()
1405 : m_buffer(VK_NULL_HANDLE)
1406 {}
1407
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001408 Buffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001409 : m_buffer(VK_NULL_HANDLE)
1410 {}
1411
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001412 VULKAN_HPP_TYPESAFE_EXPLICIT Buffer( VkBuffer buffer )
1413 : m_buffer( buffer )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001414 {}
1415
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001416#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001417 Buffer & operator=(VkBuffer buffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001418 {
1419 m_buffer = buffer;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001420 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001421 }
1422#endif
1423
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001424 Buffer & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001425 {
1426 m_buffer = VK_NULL_HANDLE;
1427 return *this;
1428 }
1429
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001430 bool operator==( Buffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001431 {
1432 return m_buffer == rhs.m_buffer;
1433 }
1434
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001435 bool operator!=(Buffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001436 {
1437 return m_buffer != rhs.m_buffer;
1438 }
1439
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001440 bool operator<(Buffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001441 {
1442 return m_buffer < rhs.m_buffer;
1443 }
1444
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001445
1446
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001447 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkBuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001448 {
1449 return m_buffer;
1450 }
1451
1452 explicit operator bool() const
1453 {
1454 return m_buffer != VK_NULL_HANDLE;
1455 }
1456
1457 bool operator!() const
1458 {
1459 return m_buffer == VK_NULL_HANDLE;
1460 }
1461
1462 private:
1463 VkBuffer m_buffer;
1464 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001465
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001466 static_assert( sizeof( Buffer ) == sizeof( VkBuffer ), "handle and wrapper have different size!" );
1467
1468 class BufferView
1469 {
1470 public:
1471 BufferView()
1472 : m_bufferView(VK_NULL_HANDLE)
1473 {}
1474
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001475 BufferView( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001476 : m_bufferView(VK_NULL_HANDLE)
1477 {}
1478
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001479 VULKAN_HPP_TYPESAFE_EXPLICIT BufferView( VkBufferView bufferView )
1480 : m_bufferView( bufferView )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001481 {}
1482
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001483#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001484 BufferView & operator=(VkBufferView bufferView)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001485 {
1486 m_bufferView = bufferView;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001487 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001488 }
1489#endif
1490
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001491 BufferView & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001492 {
1493 m_bufferView = VK_NULL_HANDLE;
1494 return *this;
1495 }
1496
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001497 bool operator==( BufferView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001498 {
1499 return m_bufferView == rhs.m_bufferView;
1500 }
1501
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001502 bool operator!=(BufferView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001503 {
1504 return m_bufferView != rhs.m_bufferView;
1505 }
1506
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001507 bool operator<(BufferView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001508 {
1509 return m_bufferView < rhs.m_bufferView;
1510 }
1511
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001512
1513
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001514 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkBufferView() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001515 {
1516 return m_bufferView;
1517 }
1518
1519 explicit operator bool() const
1520 {
1521 return m_bufferView != VK_NULL_HANDLE;
1522 }
1523
1524 bool operator!() const
1525 {
1526 return m_bufferView == VK_NULL_HANDLE;
1527 }
1528
1529 private:
1530 VkBufferView m_bufferView;
1531 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001532
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001533 static_assert( sizeof( BufferView ) == sizeof( VkBufferView ), "handle and wrapper have different size!" );
1534
1535 class Image
1536 {
1537 public:
1538 Image()
1539 : m_image(VK_NULL_HANDLE)
1540 {}
1541
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001542 Image( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001543 : m_image(VK_NULL_HANDLE)
1544 {}
1545
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001546 VULKAN_HPP_TYPESAFE_EXPLICIT Image( VkImage image )
1547 : m_image( image )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001548 {}
1549
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001550#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001551 Image & operator=(VkImage image)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001552 {
1553 m_image = image;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001554 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001555 }
1556#endif
1557
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001558 Image & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001559 {
1560 m_image = VK_NULL_HANDLE;
1561 return *this;
1562 }
1563
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001564 bool operator==( Image const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001565 {
1566 return m_image == rhs.m_image;
1567 }
1568
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001569 bool operator!=(Image const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001570 {
1571 return m_image != rhs.m_image;
1572 }
1573
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001574 bool operator<(Image const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001575 {
1576 return m_image < rhs.m_image;
1577 }
1578
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001579
1580
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001581 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkImage() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001582 {
1583 return m_image;
1584 }
1585
1586 explicit operator bool() const
1587 {
1588 return m_image != VK_NULL_HANDLE;
1589 }
1590
1591 bool operator!() const
1592 {
1593 return m_image == VK_NULL_HANDLE;
1594 }
1595
1596 private:
1597 VkImage m_image;
1598 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001599
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001600 static_assert( sizeof( Image ) == sizeof( VkImage ), "handle and wrapper have different size!" );
1601
1602 class ImageView
1603 {
1604 public:
1605 ImageView()
1606 : m_imageView(VK_NULL_HANDLE)
1607 {}
1608
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001609 ImageView( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001610 : m_imageView(VK_NULL_HANDLE)
1611 {}
1612
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001613 VULKAN_HPP_TYPESAFE_EXPLICIT ImageView( VkImageView imageView )
1614 : m_imageView( imageView )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001615 {}
1616
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001617#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001618 ImageView & operator=(VkImageView imageView)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001619 {
1620 m_imageView = imageView;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001621 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001622 }
1623#endif
1624
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001625 ImageView & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001626 {
1627 m_imageView = VK_NULL_HANDLE;
1628 return *this;
1629 }
1630
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001631 bool operator==( ImageView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001632 {
1633 return m_imageView == rhs.m_imageView;
1634 }
1635
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001636 bool operator!=(ImageView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001637 {
1638 return m_imageView != rhs.m_imageView;
1639 }
1640
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001641 bool operator<(ImageView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001642 {
1643 return m_imageView < rhs.m_imageView;
1644 }
1645
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001646
1647
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001648 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkImageView() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001649 {
1650 return m_imageView;
1651 }
1652
1653 explicit operator bool() const
1654 {
1655 return m_imageView != VK_NULL_HANDLE;
1656 }
1657
1658 bool operator!() const
1659 {
1660 return m_imageView == VK_NULL_HANDLE;
1661 }
1662
1663 private:
1664 VkImageView m_imageView;
1665 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001666
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001667 static_assert( sizeof( ImageView ) == sizeof( VkImageView ), "handle and wrapper have different size!" );
1668
1669 class ShaderModule
1670 {
1671 public:
1672 ShaderModule()
1673 : m_shaderModule(VK_NULL_HANDLE)
1674 {}
1675
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001676 ShaderModule( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001677 : m_shaderModule(VK_NULL_HANDLE)
1678 {}
1679
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001680 VULKAN_HPP_TYPESAFE_EXPLICIT ShaderModule( VkShaderModule shaderModule )
1681 : m_shaderModule( shaderModule )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001682 {}
1683
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001684#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001685 ShaderModule & operator=(VkShaderModule shaderModule)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001686 {
1687 m_shaderModule = shaderModule;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001688 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001689 }
1690#endif
1691
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001692 ShaderModule & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001693 {
1694 m_shaderModule = VK_NULL_HANDLE;
1695 return *this;
1696 }
1697
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001698 bool operator==( ShaderModule const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001699 {
1700 return m_shaderModule == rhs.m_shaderModule;
1701 }
1702
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001703 bool operator!=(ShaderModule const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001704 {
1705 return m_shaderModule != rhs.m_shaderModule;
1706 }
1707
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001708 bool operator<(ShaderModule const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001709 {
1710 return m_shaderModule < rhs.m_shaderModule;
1711 }
1712
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001713
1714
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001715 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkShaderModule() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001716 {
1717 return m_shaderModule;
1718 }
1719
1720 explicit operator bool() const
1721 {
1722 return m_shaderModule != VK_NULL_HANDLE;
1723 }
1724
1725 bool operator!() const
1726 {
1727 return m_shaderModule == VK_NULL_HANDLE;
1728 }
1729
1730 private:
1731 VkShaderModule m_shaderModule;
1732 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001733
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001734 static_assert( sizeof( ShaderModule ) == sizeof( VkShaderModule ), "handle and wrapper have different size!" );
1735
1736 class Pipeline
1737 {
1738 public:
1739 Pipeline()
1740 : m_pipeline(VK_NULL_HANDLE)
1741 {}
1742
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001743 Pipeline( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001744 : m_pipeline(VK_NULL_HANDLE)
1745 {}
1746
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001747 VULKAN_HPP_TYPESAFE_EXPLICIT Pipeline( VkPipeline pipeline )
1748 : m_pipeline( pipeline )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001749 {}
1750
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001751#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001752 Pipeline & operator=(VkPipeline pipeline)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001753 {
1754 m_pipeline = pipeline;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001755 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001756 }
1757#endif
1758
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001759 Pipeline & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001760 {
1761 m_pipeline = VK_NULL_HANDLE;
1762 return *this;
1763 }
1764
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001765 bool operator==( Pipeline const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001766 {
1767 return m_pipeline == rhs.m_pipeline;
1768 }
1769
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001770 bool operator!=(Pipeline const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001771 {
1772 return m_pipeline != rhs.m_pipeline;
1773 }
1774
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001775 bool operator<(Pipeline const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001776 {
1777 return m_pipeline < rhs.m_pipeline;
1778 }
1779
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001780
1781
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001782 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipeline() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001783 {
1784 return m_pipeline;
1785 }
1786
1787 explicit operator bool() const
1788 {
1789 return m_pipeline != VK_NULL_HANDLE;
1790 }
1791
1792 bool operator!() const
1793 {
1794 return m_pipeline == VK_NULL_HANDLE;
1795 }
1796
1797 private:
1798 VkPipeline m_pipeline;
1799 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001800
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001801 static_assert( sizeof( Pipeline ) == sizeof( VkPipeline ), "handle and wrapper have different size!" );
1802
1803 class PipelineLayout
1804 {
1805 public:
1806 PipelineLayout()
1807 : m_pipelineLayout(VK_NULL_HANDLE)
1808 {}
1809
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001810 PipelineLayout( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001811 : m_pipelineLayout(VK_NULL_HANDLE)
1812 {}
1813
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001814 VULKAN_HPP_TYPESAFE_EXPLICIT PipelineLayout( VkPipelineLayout pipelineLayout )
1815 : m_pipelineLayout( pipelineLayout )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001816 {}
1817
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001818#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001819 PipelineLayout & operator=(VkPipelineLayout pipelineLayout)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001820 {
1821 m_pipelineLayout = pipelineLayout;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001822 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001823 }
1824#endif
1825
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001826 PipelineLayout & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001827 {
1828 m_pipelineLayout = VK_NULL_HANDLE;
1829 return *this;
1830 }
1831
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001832 bool operator==( PipelineLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001833 {
1834 return m_pipelineLayout == rhs.m_pipelineLayout;
1835 }
1836
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001837 bool operator!=(PipelineLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001838 {
1839 return m_pipelineLayout != rhs.m_pipelineLayout;
1840 }
1841
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001842 bool operator<(PipelineLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001843 {
1844 return m_pipelineLayout < rhs.m_pipelineLayout;
1845 }
1846
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001847
1848
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001849 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipelineLayout() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001850 {
1851 return m_pipelineLayout;
1852 }
1853
1854 explicit operator bool() const
1855 {
1856 return m_pipelineLayout != VK_NULL_HANDLE;
1857 }
1858
1859 bool operator!() const
1860 {
1861 return m_pipelineLayout == VK_NULL_HANDLE;
1862 }
1863
1864 private:
1865 VkPipelineLayout m_pipelineLayout;
1866 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001867
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001868 static_assert( sizeof( PipelineLayout ) == sizeof( VkPipelineLayout ), "handle and wrapper have different size!" );
1869
1870 class Sampler
1871 {
1872 public:
1873 Sampler()
1874 : m_sampler(VK_NULL_HANDLE)
1875 {}
1876
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001877 Sampler( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001878 : m_sampler(VK_NULL_HANDLE)
1879 {}
1880
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001881 VULKAN_HPP_TYPESAFE_EXPLICIT Sampler( VkSampler sampler )
1882 : m_sampler( sampler )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001883 {}
1884
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001885#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001886 Sampler & operator=(VkSampler sampler)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001887 {
1888 m_sampler = sampler;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001889 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001890 }
1891#endif
1892
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001893 Sampler & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001894 {
1895 m_sampler = VK_NULL_HANDLE;
1896 return *this;
1897 }
1898
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001899 bool operator==( Sampler const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001900 {
1901 return m_sampler == rhs.m_sampler;
1902 }
1903
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001904 bool operator!=(Sampler const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001905 {
1906 return m_sampler != rhs.m_sampler;
1907 }
1908
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001909 bool operator<(Sampler const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001910 {
1911 return m_sampler < rhs.m_sampler;
1912 }
1913
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001914
1915
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001916 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSampler() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001917 {
1918 return m_sampler;
1919 }
1920
1921 explicit operator bool() const
1922 {
1923 return m_sampler != VK_NULL_HANDLE;
1924 }
1925
1926 bool operator!() const
1927 {
1928 return m_sampler == VK_NULL_HANDLE;
1929 }
1930
1931 private:
1932 VkSampler m_sampler;
1933 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001934
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001935 static_assert( sizeof( Sampler ) == sizeof( VkSampler ), "handle and wrapper have different size!" );
1936
1937 class DescriptorSet
1938 {
1939 public:
1940 DescriptorSet()
1941 : m_descriptorSet(VK_NULL_HANDLE)
1942 {}
1943
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001944 DescriptorSet( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001945 : m_descriptorSet(VK_NULL_HANDLE)
1946 {}
1947
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001948 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorSet( VkDescriptorSet descriptorSet )
1949 : m_descriptorSet( descriptorSet )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001950 {}
1951
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001952#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001953 DescriptorSet & operator=(VkDescriptorSet descriptorSet)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001954 {
1955 m_descriptorSet = descriptorSet;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001956 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001957 }
1958#endif
1959
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001960 DescriptorSet & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001961 {
1962 m_descriptorSet = VK_NULL_HANDLE;
1963 return *this;
1964 }
1965
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001966 bool operator==( DescriptorSet const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001967 {
1968 return m_descriptorSet == rhs.m_descriptorSet;
1969 }
1970
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001971 bool operator!=(DescriptorSet const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001972 {
1973 return m_descriptorSet != rhs.m_descriptorSet;
1974 }
1975
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001976 bool operator<(DescriptorSet const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001977 {
1978 return m_descriptorSet < rhs.m_descriptorSet;
1979 }
1980
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001981
1982
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001983 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorSet() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001984 {
1985 return m_descriptorSet;
1986 }
1987
1988 explicit operator bool() const
1989 {
1990 return m_descriptorSet != VK_NULL_HANDLE;
1991 }
1992
1993 bool operator!() const
1994 {
1995 return m_descriptorSet == VK_NULL_HANDLE;
1996 }
1997
1998 private:
1999 VkDescriptorSet m_descriptorSet;
2000 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002001
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002002 static_assert( sizeof( DescriptorSet ) == sizeof( VkDescriptorSet ), "handle and wrapper have different size!" );
2003
2004 class DescriptorSetLayout
2005 {
2006 public:
2007 DescriptorSetLayout()
2008 : m_descriptorSetLayout(VK_NULL_HANDLE)
2009 {}
2010
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002011 DescriptorSetLayout( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002012 : m_descriptorSetLayout(VK_NULL_HANDLE)
2013 {}
2014
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002015 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorSetLayout( VkDescriptorSetLayout descriptorSetLayout )
2016 : m_descriptorSetLayout( descriptorSetLayout )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002017 {}
2018
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002019#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002020 DescriptorSetLayout & operator=(VkDescriptorSetLayout descriptorSetLayout)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002021 {
2022 m_descriptorSetLayout = descriptorSetLayout;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002023 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002024 }
2025#endif
2026
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002027 DescriptorSetLayout & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002028 {
2029 m_descriptorSetLayout = VK_NULL_HANDLE;
2030 return *this;
2031 }
2032
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002033 bool operator==( DescriptorSetLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002034 {
2035 return m_descriptorSetLayout == rhs.m_descriptorSetLayout;
2036 }
2037
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002038 bool operator!=(DescriptorSetLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002039 {
2040 return m_descriptorSetLayout != rhs.m_descriptorSetLayout;
2041 }
2042
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002043 bool operator<(DescriptorSetLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002044 {
2045 return m_descriptorSetLayout < rhs.m_descriptorSetLayout;
2046 }
2047
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002048
2049
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002050 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorSetLayout() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002051 {
2052 return m_descriptorSetLayout;
2053 }
2054
2055 explicit operator bool() const
2056 {
2057 return m_descriptorSetLayout != VK_NULL_HANDLE;
2058 }
2059
2060 bool operator!() const
2061 {
2062 return m_descriptorSetLayout == VK_NULL_HANDLE;
2063 }
2064
2065 private:
2066 VkDescriptorSetLayout m_descriptorSetLayout;
2067 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002068
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002069 static_assert( sizeof( DescriptorSetLayout ) == sizeof( VkDescriptorSetLayout ), "handle and wrapper have different size!" );
2070
2071 class DescriptorPool
2072 {
2073 public:
2074 DescriptorPool()
2075 : m_descriptorPool(VK_NULL_HANDLE)
2076 {}
2077
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002078 DescriptorPool( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002079 : m_descriptorPool(VK_NULL_HANDLE)
2080 {}
2081
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002082 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorPool( VkDescriptorPool descriptorPool )
2083 : m_descriptorPool( descriptorPool )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002084 {}
2085
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002086#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002087 DescriptorPool & operator=(VkDescriptorPool descriptorPool)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002088 {
2089 m_descriptorPool = descriptorPool;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002090 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002091 }
2092#endif
2093
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002094 DescriptorPool & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002095 {
2096 m_descriptorPool = VK_NULL_HANDLE;
2097 return *this;
2098 }
2099
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002100 bool operator==( DescriptorPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002101 {
2102 return m_descriptorPool == rhs.m_descriptorPool;
2103 }
2104
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002105 bool operator!=(DescriptorPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002106 {
2107 return m_descriptorPool != rhs.m_descriptorPool;
2108 }
2109
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002110 bool operator<(DescriptorPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002111 {
2112 return m_descriptorPool < rhs.m_descriptorPool;
2113 }
2114
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002115
2116
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002117 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorPool() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002118 {
2119 return m_descriptorPool;
2120 }
2121
2122 explicit operator bool() const
2123 {
2124 return m_descriptorPool != VK_NULL_HANDLE;
2125 }
2126
2127 bool operator!() const
2128 {
2129 return m_descriptorPool == VK_NULL_HANDLE;
2130 }
2131
2132 private:
2133 VkDescriptorPool m_descriptorPool;
2134 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002135
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002136 static_assert( sizeof( DescriptorPool ) == sizeof( VkDescriptorPool ), "handle and wrapper have different size!" );
2137
2138 class Fence
2139 {
2140 public:
2141 Fence()
2142 : m_fence(VK_NULL_HANDLE)
2143 {}
2144
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002145 Fence( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002146 : m_fence(VK_NULL_HANDLE)
2147 {}
2148
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002149 VULKAN_HPP_TYPESAFE_EXPLICIT Fence( VkFence fence )
2150 : m_fence( fence )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002151 {}
2152
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002153#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002154 Fence & operator=(VkFence fence)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002155 {
2156 m_fence = fence;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002157 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002158 }
2159#endif
2160
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002161 Fence & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002162 {
2163 m_fence = VK_NULL_HANDLE;
2164 return *this;
2165 }
2166
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002167 bool operator==( Fence const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002168 {
2169 return m_fence == rhs.m_fence;
2170 }
2171
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002172 bool operator!=(Fence const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002173 {
2174 return m_fence != rhs.m_fence;
2175 }
2176
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002177 bool operator<(Fence const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002178 {
2179 return m_fence < rhs.m_fence;
2180 }
2181
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002182
2183
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002184 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkFence() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002185 {
2186 return m_fence;
2187 }
2188
2189 explicit operator bool() const
2190 {
2191 return m_fence != VK_NULL_HANDLE;
2192 }
2193
2194 bool operator!() const
2195 {
2196 return m_fence == VK_NULL_HANDLE;
2197 }
2198
2199 private:
2200 VkFence m_fence;
2201 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002202
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002203 static_assert( sizeof( Fence ) == sizeof( VkFence ), "handle and wrapper have different size!" );
2204
2205 class Semaphore
2206 {
2207 public:
2208 Semaphore()
2209 : m_semaphore(VK_NULL_HANDLE)
2210 {}
2211
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002212 Semaphore( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002213 : m_semaphore(VK_NULL_HANDLE)
2214 {}
2215
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002216 VULKAN_HPP_TYPESAFE_EXPLICIT Semaphore( VkSemaphore semaphore )
2217 : m_semaphore( semaphore )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002218 {}
2219
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002220#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002221 Semaphore & operator=(VkSemaphore semaphore)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002222 {
2223 m_semaphore = semaphore;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002224 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002225 }
2226#endif
2227
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002228 Semaphore & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002229 {
2230 m_semaphore = VK_NULL_HANDLE;
2231 return *this;
2232 }
2233
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002234 bool operator==( Semaphore const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002235 {
2236 return m_semaphore == rhs.m_semaphore;
2237 }
2238
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002239 bool operator!=(Semaphore const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002240 {
2241 return m_semaphore != rhs.m_semaphore;
2242 }
2243
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002244 bool operator<(Semaphore const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002245 {
2246 return m_semaphore < rhs.m_semaphore;
2247 }
2248
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002249
2250
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002251 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSemaphore() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002252 {
2253 return m_semaphore;
2254 }
2255
2256 explicit operator bool() const
2257 {
2258 return m_semaphore != VK_NULL_HANDLE;
2259 }
2260
2261 bool operator!() const
2262 {
2263 return m_semaphore == VK_NULL_HANDLE;
2264 }
2265
2266 private:
2267 VkSemaphore m_semaphore;
2268 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002269
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002270 static_assert( sizeof( Semaphore ) == sizeof( VkSemaphore ), "handle and wrapper have different size!" );
2271
2272 class Event
2273 {
2274 public:
2275 Event()
2276 : m_event(VK_NULL_HANDLE)
2277 {}
2278
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002279 Event( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002280 : m_event(VK_NULL_HANDLE)
2281 {}
2282
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002283 VULKAN_HPP_TYPESAFE_EXPLICIT Event( VkEvent event )
2284 : m_event( event )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002285 {}
2286
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002287#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002288 Event & operator=(VkEvent event)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002289 {
2290 m_event = event;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002291 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002292 }
2293#endif
2294
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002295 Event & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002296 {
2297 m_event = VK_NULL_HANDLE;
2298 return *this;
2299 }
2300
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002301 bool operator==( Event const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002302 {
2303 return m_event == rhs.m_event;
2304 }
2305
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002306 bool operator!=(Event const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002307 {
2308 return m_event != rhs.m_event;
2309 }
2310
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002311 bool operator<(Event const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002312 {
2313 return m_event < rhs.m_event;
2314 }
2315
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002316
2317
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002318 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkEvent() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002319 {
2320 return m_event;
2321 }
2322
2323 explicit operator bool() const
2324 {
2325 return m_event != VK_NULL_HANDLE;
2326 }
2327
2328 bool operator!() const
2329 {
2330 return m_event == VK_NULL_HANDLE;
2331 }
2332
2333 private:
2334 VkEvent m_event;
2335 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002336
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002337 static_assert( sizeof( Event ) == sizeof( VkEvent ), "handle and wrapper have different size!" );
2338
2339 class QueryPool
2340 {
2341 public:
2342 QueryPool()
2343 : m_queryPool(VK_NULL_HANDLE)
2344 {}
2345
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002346 QueryPool( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002347 : m_queryPool(VK_NULL_HANDLE)
2348 {}
2349
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002350 VULKAN_HPP_TYPESAFE_EXPLICIT QueryPool( VkQueryPool queryPool )
2351 : m_queryPool( queryPool )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002352 {}
2353
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002354#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002355 QueryPool & operator=(VkQueryPool queryPool)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002356 {
2357 m_queryPool = queryPool;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002358 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002359 }
2360#endif
2361
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002362 QueryPool & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002363 {
2364 m_queryPool = VK_NULL_HANDLE;
2365 return *this;
2366 }
2367
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002368 bool operator==( QueryPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002369 {
2370 return m_queryPool == rhs.m_queryPool;
2371 }
2372
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002373 bool operator!=(QueryPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002374 {
2375 return m_queryPool != rhs.m_queryPool;
2376 }
2377
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002378 bool operator<(QueryPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002379 {
2380 return m_queryPool < rhs.m_queryPool;
2381 }
2382
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002383
2384
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002385 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueryPool() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002386 {
2387 return m_queryPool;
2388 }
2389
2390 explicit operator bool() const
2391 {
2392 return m_queryPool != VK_NULL_HANDLE;
2393 }
2394
2395 bool operator!() const
2396 {
2397 return m_queryPool == VK_NULL_HANDLE;
2398 }
2399
2400 private:
2401 VkQueryPool m_queryPool;
2402 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002403
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002404 static_assert( sizeof( QueryPool ) == sizeof( VkQueryPool ), "handle and wrapper have different size!" );
2405
2406 class Framebuffer
2407 {
2408 public:
2409 Framebuffer()
2410 : m_framebuffer(VK_NULL_HANDLE)
2411 {}
2412
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002413 Framebuffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002414 : m_framebuffer(VK_NULL_HANDLE)
2415 {}
2416
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002417 VULKAN_HPP_TYPESAFE_EXPLICIT Framebuffer( VkFramebuffer framebuffer )
2418 : m_framebuffer( framebuffer )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002419 {}
2420
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002421#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002422 Framebuffer & operator=(VkFramebuffer framebuffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002423 {
2424 m_framebuffer = framebuffer;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002425 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002426 }
2427#endif
2428
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002429 Framebuffer & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002430 {
2431 m_framebuffer = VK_NULL_HANDLE;
2432 return *this;
2433 }
2434
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002435 bool operator==( Framebuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002436 {
2437 return m_framebuffer == rhs.m_framebuffer;
2438 }
2439
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002440 bool operator!=(Framebuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002441 {
2442 return m_framebuffer != rhs.m_framebuffer;
2443 }
2444
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002445 bool operator<(Framebuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002446 {
2447 return m_framebuffer < rhs.m_framebuffer;
2448 }
2449
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002450
2451
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002452 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkFramebuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002453 {
2454 return m_framebuffer;
2455 }
2456
2457 explicit operator bool() const
2458 {
2459 return m_framebuffer != VK_NULL_HANDLE;
2460 }
2461
2462 bool operator!() const
2463 {
2464 return m_framebuffer == VK_NULL_HANDLE;
2465 }
2466
2467 private:
2468 VkFramebuffer m_framebuffer;
2469 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002470
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002471 static_assert( sizeof( Framebuffer ) == sizeof( VkFramebuffer ), "handle and wrapper have different size!" );
2472
2473 class RenderPass
2474 {
2475 public:
2476 RenderPass()
2477 : m_renderPass(VK_NULL_HANDLE)
2478 {}
2479
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002480 RenderPass( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002481 : m_renderPass(VK_NULL_HANDLE)
2482 {}
2483
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002484 VULKAN_HPP_TYPESAFE_EXPLICIT RenderPass( VkRenderPass renderPass )
2485 : m_renderPass( renderPass )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002486 {}
2487
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002488#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002489 RenderPass & operator=(VkRenderPass renderPass)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002490 {
2491 m_renderPass = renderPass;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002492 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002493 }
2494#endif
2495
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002496 RenderPass & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002497 {
2498 m_renderPass = VK_NULL_HANDLE;
2499 return *this;
2500 }
2501
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002502 bool operator==( RenderPass const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002503 {
2504 return m_renderPass == rhs.m_renderPass;
2505 }
2506
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002507 bool operator!=(RenderPass const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002508 {
2509 return m_renderPass != rhs.m_renderPass;
2510 }
2511
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002512 bool operator<(RenderPass const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002513 {
2514 return m_renderPass < rhs.m_renderPass;
2515 }
2516
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002517
2518
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002519 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkRenderPass() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002520 {
2521 return m_renderPass;
2522 }
2523
2524 explicit operator bool() const
2525 {
2526 return m_renderPass != VK_NULL_HANDLE;
2527 }
2528
2529 bool operator!() const
2530 {
2531 return m_renderPass == VK_NULL_HANDLE;
2532 }
2533
2534 private:
2535 VkRenderPass m_renderPass;
2536 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002537
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002538 static_assert( sizeof( RenderPass ) == sizeof( VkRenderPass ), "handle and wrapper have different size!" );
2539
2540 class PipelineCache
2541 {
2542 public:
2543 PipelineCache()
2544 : m_pipelineCache(VK_NULL_HANDLE)
2545 {}
2546
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002547 PipelineCache( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002548 : m_pipelineCache(VK_NULL_HANDLE)
2549 {}
2550
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002551 VULKAN_HPP_TYPESAFE_EXPLICIT PipelineCache( VkPipelineCache pipelineCache )
2552 : m_pipelineCache( pipelineCache )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002553 {}
2554
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002555#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002556 PipelineCache & operator=(VkPipelineCache pipelineCache)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002557 {
2558 m_pipelineCache = pipelineCache;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002559 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002560 }
2561#endif
2562
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002563 PipelineCache & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002564 {
2565 m_pipelineCache = VK_NULL_HANDLE;
2566 return *this;
2567 }
2568
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002569 bool operator==( PipelineCache const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002570 {
2571 return m_pipelineCache == rhs.m_pipelineCache;
2572 }
2573
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002574 bool operator!=(PipelineCache const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002575 {
2576 return m_pipelineCache != rhs.m_pipelineCache;
2577 }
2578
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002579 bool operator<(PipelineCache const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002580 {
2581 return m_pipelineCache < rhs.m_pipelineCache;
2582 }
2583
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002584
2585
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002586 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipelineCache() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002587 {
2588 return m_pipelineCache;
2589 }
2590
2591 explicit operator bool() const
2592 {
2593 return m_pipelineCache != VK_NULL_HANDLE;
2594 }
2595
2596 bool operator!() const
2597 {
2598 return m_pipelineCache == VK_NULL_HANDLE;
2599 }
2600
2601 private:
2602 VkPipelineCache m_pipelineCache;
2603 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002604
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002605 static_assert( sizeof( PipelineCache ) == sizeof( VkPipelineCache ), "handle and wrapper have different size!" );
2606
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002607 class ObjectTableNVX
2608 {
2609 public:
2610 ObjectTableNVX()
2611 : m_objectTableNVX(VK_NULL_HANDLE)
2612 {}
2613
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002614 ObjectTableNVX( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002615 : m_objectTableNVX(VK_NULL_HANDLE)
2616 {}
2617
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002618 VULKAN_HPP_TYPESAFE_EXPLICIT ObjectTableNVX( VkObjectTableNVX objectTableNVX )
2619 : m_objectTableNVX( objectTableNVX )
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002620 {}
2621
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002622#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002623 ObjectTableNVX & operator=(VkObjectTableNVX objectTableNVX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002624 {
2625 m_objectTableNVX = objectTableNVX;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002626 return *this;
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002627 }
2628#endif
2629
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002630 ObjectTableNVX & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002631 {
2632 m_objectTableNVX = VK_NULL_HANDLE;
2633 return *this;
2634 }
2635
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002636 bool operator==( ObjectTableNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002637 {
2638 return m_objectTableNVX == rhs.m_objectTableNVX;
2639 }
2640
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002641 bool operator!=(ObjectTableNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002642 {
2643 return m_objectTableNVX != rhs.m_objectTableNVX;
2644 }
2645
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002646 bool operator<(ObjectTableNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002647 {
2648 return m_objectTableNVX < rhs.m_objectTableNVX;
2649 }
2650
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002651
2652
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002653 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkObjectTableNVX() const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002654 {
2655 return m_objectTableNVX;
2656 }
2657
2658 explicit operator bool() const
2659 {
2660 return m_objectTableNVX != VK_NULL_HANDLE;
2661 }
2662
2663 bool operator!() const
2664 {
2665 return m_objectTableNVX == VK_NULL_HANDLE;
2666 }
2667
2668 private:
2669 VkObjectTableNVX m_objectTableNVX;
2670 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002671
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002672 static_assert( sizeof( ObjectTableNVX ) == sizeof( VkObjectTableNVX ), "handle and wrapper have different size!" );
2673
2674 class IndirectCommandsLayoutNVX
2675 {
2676 public:
2677 IndirectCommandsLayoutNVX()
2678 : m_indirectCommandsLayoutNVX(VK_NULL_HANDLE)
2679 {}
2680
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002681 IndirectCommandsLayoutNVX( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002682 : m_indirectCommandsLayoutNVX(VK_NULL_HANDLE)
2683 {}
2684
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002685 VULKAN_HPP_TYPESAFE_EXPLICIT IndirectCommandsLayoutNVX( VkIndirectCommandsLayoutNVX indirectCommandsLayoutNVX )
2686 : m_indirectCommandsLayoutNVX( indirectCommandsLayoutNVX )
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002687 {}
2688
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002689#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002690 IndirectCommandsLayoutNVX & operator=(VkIndirectCommandsLayoutNVX indirectCommandsLayoutNVX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002691 {
2692 m_indirectCommandsLayoutNVX = indirectCommandsLayoutNVX;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002693 return *this;
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002694 }
2695#endif
2696
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002697 IndirectCommandsLayoutNVX & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002698 {
2699 m_indirectCommandsLayoutNVX = VK_NULL_HANDLE;
2700 return *this;
2701 }
2702
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002703 bool operator==( IndirectCommandsLayoutNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002704 {
2705 return m_indirectCommandsLayoutNVX == rhs.m_indirectCommandsLayoutNVX;
2706 }
2707
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002708 bool operator!=(IndirectCommandsLayoutNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002709 {
2710 return m_indirectCommandsLayoutNVX != rhs.m_indirectCommandsLayoutNVX;
2711 }
2712
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002713 bool operator<(IndirectCommandsLayoutNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002714 {
2715 return m_indirectCommandsLayoutNVX < rhs.m_indirectCommandsLayoutNVX;
2716 }
2717
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002718
2719
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002720 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkIndirectCommandsLayoutNVX() const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002721 {
2722 return m_indirectCommandsLayoutNVX;
2723 }
2724
2725 explicit operator bool() const
2726 {
2727 return m_indirectCommandsLayoutNVX != VK_NULL_HANDLE;
2728 }
2729
2730 bool operator!() const
2731 {
2732 return m_indirectCommandsLayoutNVX == VK_NULL_HANDLE;
2733 }
2734
2735 private:
2736 VkIndirectCommandsLayoutNVX m_indirectCommandsLayoutNVX;
2737 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002738
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002739 static_assert( sizeof( IndirectCommandsLayoutNVX ) == sizeof( VkIndirectCommandsLayoutNVX ), "handle and wrapper have different size!" );
2740
Mark Young0f183a82017-02-28 09:58:04 -07002741 class DescriptorUpdateTemplateKHR
2742 {
2743 public:
2744 DescriptorUpdateTemplateKHR()
2745 : m_descriptorUpdateTemplateKHR(VK_NULL_HANDLE)
2746 {}
2747
2748 DescriptorUpdateTemplateKHR( std::nullptr_t )
2749 : m_descriptorUpdateTemplateKHR(VK_NULL_HANDLE)
2750 {}
2751
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002752 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorUpdateTemplateKHR( VkDescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR )
2753 : m_descriptorUpdateTemplateKHR( descriptorUpdateTemplateKHR )
Mark Young0f183a82017-02-28 09:58:04 -07002754 {}
2755
2756#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002757 DescriptorUpdateTemplateKHR & operator=(VkDescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR)
Mark Young0f183a82017-02-28 09:58:04 -07002758 {
2759 m_descriptorUpdateTemplateKHR = descriptorUpdateTemplateKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002760 return *this;
Mark Young0f183a82017-02-28 09:58:04 -07002761 }
2762#endif
2763
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002764 DescriptorUpdateTemplateKHR & operator=( std::nullptr_t )
Mark Young0f183a82017-02-28 09:58:04 -07002765 {
2766 m_descriptorUpdateTemplateKHR = VK_NULL_HANDLE;
2767 return *this;
2768 }
2769
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002770 bool operator==( DescriptorUpdateTemplateKHR const & rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -07002771 {
2772 return m_descriptorUpdateTemplateKHR == rhs.m_descriptorUpdateTemplateKHR;
2773 }
2774
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002775 bool operator!=(DescriptorUpdateTemplateKHR const & rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -07002776 {
2777 return m_descriptorUpdateTemplateKHR != rhs.m_descriptorUpdateTemplateKHR;
2778 }
2779
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002780 bool operator<(DescriptorUpdateTemplateKHR const & rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -07002781 {
2782 return m_descriptorUpdateTemplateKHR < rhs.m_descriptorUpdateTemplateKHR;
2783 }
2784
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002785
2786
Mark Young0f183a82017-02-28 09:58:04 -07002787 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorUpdateTemplateKHR() const
2788 {
2789 return m_descriptorUpdateTemplateKHR;
2790 }
2791
2792 explicit operator bool() const
2793 {
2794 return m_descriptorUpdateTemplateKHR != VK_NULL_HANDLE;
2795 }
2796
2797 bool operator!() const
2798 {
2799 return m_descriptorUpdateTemplateKHR == VK_NULL_HANDLE;
2800 }
2801
2802 private:
2803 VkDescriptorUpdateTemplateKHR m_descriptorUpdateTemplateKHR;
2804 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002805
Mark Young0f183a82017-02-28 09:58:04 -07002806 static_assert( sizeof( DescriptorUpdateTemplateKHR ) == sizeof( VkDescriptorUpdateTemplateKHR ), "handle and wrapper have different size!" );
2807
Lenny Komowb79f04a2017-09-18 17:07:00 -06002808 class SamplerYcbcrConversionKHR
2809 {
2810 public:
2811 SamplerYcbcrConversionKHR()
2812 : m_samplerYcbcrConversionKHR(VK_NULL_HANDLE)
2813 {}
2814
2815 SamplerYcbcrConversionKHR( std::nullptr_t )
2816 : m_samplerYcbcrConversionKHR(VK_NULL_HANDLE)
2817 {}
2818
2819 VULKAN_HPP_TYPESAFE_EXPLICIT SamplerYcbcrConversionKHR( VkSamplerYcbcrConversionKHR samplerYcbcrConversionKHR )
2820 : m_samplerYcbcrConversionKHR( samplerYcbcrConversionKHR )
2821 {}
2822
2823#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
2824 SamplerYcbcrConversionKHR & operator=(VkSamplerYcbcrConversionKHR samplerYcbcrConversionKHR)
2825 {
2826 m_samplerYcbcrConversionKHR = samplerYcbcrConversionKHR;
2827 return *this;
2828 }
2829#endif
2830
2831 SamplerYcbcrConversionKHR & operator=( std::nullptr_t )
2832 {
2833 m_samplerYcbcrConversionKHR = VK_NULL_HANDLE;
2834 return *this;
2835 }
2836
2837 bool operator==( SamplerYcbcrConversionKHR const & rhs ) const
2838 {
2839 return m_samplerYcbcrConversionKHR == rhs.m_samplerYcbcrConversionKHR;
2840 }
2841
2842 bool operator!=(SamplerYcbcrConversionKHR const & rhs ) const
2843 {
2844 return m_samplerYcbcrConversionKHR != rhs.m_samplerYcbcrConversionKHR;
2845 }
2846
2847 bool operator<(SamplerYcbcrConversionKHR const & rhs ) const
2848 {
2849 return m_samplerYcbcrConversionKHR < rhs.m_samplerYcbcrConversionKHR;
2850 }
2851
2852
2853
2854 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSamplerYcbcrConversionKHR() const
2855 {
2856 return m_samplerYcbcrConversionKHR;
2857 }
2858
2859 explicit operator bool() const
2860 {
2861 return m_samplerYcbcrConversionKHR != VK_NULL_HANDLE;
2862 }
2863
2864 bool operator!() const
2865 {
2866 return m_samplerYcbcrConversionKHR == VK_NULL_HANDLE;
2867 }
2868
2869 private:
2870 VkSamplerYcbcrConversionKHR m_samplerYcbcrConversionKHR;
2871 };
2872
2873 static_assert( sizeof( SamplerYcbcrConversionKHR ) == sizeof( VkSamplerYcbcrConversionKHR ), "handle and wrapper have different size!" );
2874
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06002875 class ValidationCacheEXT
2876 {
2877 public:
2878 ValidationCacheEXT()
2879 : m_validationCacheEXT(VK_NULL_HANDLE)
2880 {}
2881
2882 ValidationCacheEXT( std::nullptr_t )
2883 : m_validationCacheEXT(VK_NULL_HANDLE)
2884 {}
2885
2886 VULKAN_HPP_TYPESAFE_EXPLICIT ValidationCacheEXT( VkValidationCacheEXT validationCacheEXT )
2887 : m_validationCacheEXT( validationCacheEXT )
2888 {}
2889
2890#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
2891 ValidationCacheEXT & operator=(VkValidationCacheEXT validationCacheEXT)
2892 {
2893 m_validationCacheEXT = validationCacheEXT;
2894 return *this;
2895 }
2896#endif
2897
2898 ValidationCacheEXT & operator=( std::nullptr_t )
2899 {
2900 m_validationCacheEXT = VK_NULL_HANDLE;
2901 return *this;
2902 }
2903
2904 bool operator==( ValidationCacheEXT const & rhs ) const
2905 {
2906 return m_validationCacheEXT == rhs.m_validationCacheEXT;
2907 }
2908
2909 bool operator!=(ValidationCacheEXT const & rhs ) const
2910 {
2911 return m_validationCacheEXT != rhs.m_validationCacheEXT;
2912 }
2913
2914 bool operator<(ValidationCacheEXT const & rhs ) const
2915 {
2916 return m_validationCacheEXT < rhs.m_validationCacheEXT;
2917 }
2918
2919
2920
2921 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkValidationCacheEXT() const
2922 {
2923 return m_validationCacheEXT;
2924 }
2925
2926 explicit operator bool() const
2927 {
2928 return m_validationCacheEXT != VK_NULL_HANDLE;
2929 }
2930
2931 bool operator!() const
2932 {
2933 return m_validationCacheEXT == VK_NULL_HANDLE;
2934 }
2935
2936 private:
2937 VkValidationCacheEXT m_validationCacheEXT;
2938 };
2939
2940 static_assert( sizeof( ValidationCacheEXT ) == sizeof( VkValidationCacheEXT ), "handle and wrapper have different size!" );
2941
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002942 class DisplayKHR
2943 {
2944 public:
2945 DisplayKHR()
2946 : m_displayKHR(VK_NULL_HANDLE)
2947 {}
2948
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002949 DisplayKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002950 : m_displayKHR(VK_NULL_HANDLE)
2951 {}
2952
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002953 VULKAN_HPP_TYPESAFE_EXPLICIT DisplayKHR( VkDisplayKHR displayKHR )
2954 : m_displayKHR( displayKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002955 {}
2956
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002957#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002958 DisplayKHR & operator=(VkDisplayKHR displayKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002959 {
2960 m_displayKHR = displayKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002961 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002962 }
2963#endif
2964
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002965 DisplayKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002966 {
2967 m_displayKHR = VK_NULL_HANDLE;
2968 return *this;
2969 }
2970
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002971 bool operator==( DisplayKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002972 {
2973 return m_displayKHR == rhs.m_displayKHR;
2974 }
2975
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002976 bool operator!=(DisplayKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002977 {
2978 return m_displayKHR != rhs.m_displayKHR;
2979 }
2980
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002981 bool operator<(DisplayKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002982 {
2983 return m_displayKHR < rhs.m_displayKHR;
2984 }
2985
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002986
2987
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002988 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDisplayKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002989 {
2990 return m_displayKHR;
2991 }
2992
2993 explicit operator bool() const
2994 {
2995 return m_displayKHR != VK_NULL_HANDLE;
2996 }
2997
2998 bool operator!() const
2999 {
3000 return m_displayKHR == VK_NULL_HANDLE;
3001 }
3002
3003 private:
3004 VkDisplayKHR m_displayKHR;
3005 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003006
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003007 static_assert( sizeof( DisplayKHR ) == sizeof( VkDisplayKHR ), "handle and wrapper have different size!" );
3008
3009 class DisplayModeKHR
3010 {
3011 public:
3012 DisplayModeKHR()
3013 : m_displayModeKHR(VK_NULL_HANDLE)
3014 {}
3015
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07003016 DisplayModeKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003017 : m_displayModeKHR(VK_NULL_HANDLE)
3018 {}
3019
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003020 VULKAN_HPP_TYPESAFE_EXPLICIT DisplayModeKHR( VkDisplayModeKHR displayModeKHR )
3021 : m_displayModeKHR( displayModeKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003022 {}
3023
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003024#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003025 DisplayModeKHR & operator=(VkDisplayModeKHR displayModeKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003026 {
3027 m_displayModeKHR = displayModeKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003028 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003029 }
3030#endif
3031
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003032 DisplayModeKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003033 {
3034 m_displayModeKHR = VK_NULL_HANDLE;
3035 return *this;
3036 }
3037
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003038 bool operator==( DisplayModeKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003039 {
3040 return m_displayModeKHR == rhs.m_displayModeKHR;
3041 }
3042
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003043 bool operator!=(DisplayModeKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003044 {
3045 return m_displayModeKHR != rhs.m_displayModeKHR;
3046 }
3047
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003048 bool operator<(DisplayModeKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003049 {
3050 return m_displayModeKHR < rhs.m_displayModeKHR;
3051 }
3052
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003053
3054
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003055 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDisplayModeKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003056 {
3057 return m_displayModeKHR;
3058 }
3059
3060 explicit operator bool() const
3061 {
3062 return m_displayModeKHR != VK_NULL_HANDLE;
3063 }
3064
3065 bool operator!() const
3066 {
3067 return m_displayModeKHR == VK_NULL_HANDLE;
3068 }
3069
3070 private:
3071 VkDisplayModeKHR m_displayModeKHR;
3072 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003073
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003074 static_assert( sizeof( DisplayModeKHR ) == sizeof( VkDisplayModeKHR ), "handle and wrapper have different size!" );
3075
3076 class SurfaceKHR
3077 {
3078 public:
3079 SurfaceKHR()
3080 : m_surfaceKHR(VK_NULL_HANDLE)
3081 {}
3082
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07003083 SurfaceKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003084 : m_surfaceKHR(VK_NULL_HANDLE)
3085 {}
3086
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003087 VULKAN_HPP_TYPESAFE_EXPLICIT SurfaceKHR( VkSurfaceKHR surfaceKHR )
3088 : m_surfaceKHR( surfaceKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003089 {}
3090
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003091#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003092 SurfaceKHR & operator=(VkSurfaceKHR surfaceKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003093 {
3094 m_surfaceKHR = surfaceKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003095 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003096 }
3097#endif
3098
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003099 SurfaceKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003100 {
3101 m_surfaceKHR = VK_NULL_HANDLE;
3102 return *this;
3103 }
3104
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003105 bool operator==( SurfaceKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003106 {
3107 return m_surfaceKHR == rhs.m_surfaceKHR;
3108 }
3109
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003110 bool operator!=(SurfaceKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003111 {
3112 return m_surfaceKHR != rhs.m_surfaceKHR;
3113 }
3114
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003115 bool operator<(SurfaceKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003116 {
3117 return m_surfaceKHR < rhs.m_surfaceKHR;
3118 }
3119
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003120
3121
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003122 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSurfaceKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003123 {
3124 return m_surfaceKHR;
3125 }
3126
3127 explicit operator bool() const
3128 {
3129 return m_surfaceKHR != VK_NULL_HANDLE;
3130 }
3131
3132 bool operator!() const
3133 {
3134 return m_surfaceKHR == VK_NULL_HANDLE;
3135 }
3136
3137 private:
3138 VkSurfaceKHR m_surfaceKHR;
3139 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003140
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003141 static_assert( sizeof( SurfaceKHR ) == sizeof( VkSurfaceKHR ), "handle and wrapper have different size!" );
3142
3143 class SwapchainKHR
3144 {
3145 public:
3146 SwapchainKHR()
3147 : m_swapchainKHR(VK_NULL_HANDLE)
3148 {}
3149
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07003150 SwapchainKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003151 : m_swapchainKHR(VK_NULL_HANDLE)
3152 {}
3153
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003154 VULKAN_HPP_TYPESAFE_EXPLICIT SwapchainKHR( VkSwapchainKHR swapchainKHR )
3155 : m_swapchainKHR( swapchainKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003156 {}
3157
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003158#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003159 SwapchainKHR & operator=(VkSwapchainKHR swapchainKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003160 {
3161 m_swapchainKHR = swapchainKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003162 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003163 }
3164#endif
3165
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003166 SwapchainKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003167 {
3168 m_swapchainKHR = VK_NULL_HANDLE;
3169 return *this;
3170 }
3171
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003172 bool operator==( SwapchainKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003173 {
3174 return m_swapchainKHR == rhs.m_swapchainKHR;
3175 }
3176
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003177 bool operator!=(SwapchainKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003178 {
3179 return m_swapchainKHR != rhs.m_swapchainKHR;
3180 }
3181
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003182 bool operator<(SwapchainKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003183 {
3184 return m_swapchainKHR < rhs.m_swapchainKHR;
3185 }
3186
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003187
3188
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003189 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSwapchainKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003190 {
3191 return m_swapchainKHR;
3192 }
3193
3194 explicit operator bool() const
3195 {
3196 return m_swapchainKHR != VK_NULL_HANDLE;
3197 }
3198
3199 bool operator!() const
3200 {
3201 return m_swapchainKHR == VK_NULL_HANDLE;
3202 }
3203
3204 private:
3205 VkSwapchainKHR m_swapchainKHR;
3206 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003207
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003208 static_assert( sizeof( SwapchainKHR ) == sizeof( VkSwapchainKHR ), "handle and wrapper have different size!" );
3209
3210 class DebugReportCallbackEXT
3211 {
3212 public:
3213 DebugReportCallbackEXT()
3214 : m_debugReportCallbackEXT(VK_NULL_HANDLE)
3215 {}
3216
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07003217 DebugReportCallbackEXT( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003218 : m_debugReportCallbackEXT(VK_NULL_HANDLE)
3219 {}
3220
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003221 VULKAN_HPP_TYPESAFE_EXPLICIT DebugReportCallbackEXT( VkDebugReportCallbackEXT debugReportCallbackEXT )
3222 : m_debugReportCallbackEXT( debugReportCallbackEXT )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003223 {}
3224
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003225#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003226 DebugReportCallbackEXT & operator=(VkDebugReportCallbackEXT debugReportCallbackEXT)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003227 {
3228 m_debugReportCallbackEXT = debugReportCallbackEXT;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003229 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003230 }
3231#endif
3232
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003233 DebugReportCallbackEXT & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003234 {
3235 m_debugReportCallbackEXT = VK_NULL_HANDLE;
3236 return *this;
3237 }
3238
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003239 bool operator==( DebugReportCallbackEXT const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003240 {
3241 return m_debugReportCallbackEXT == rhs.m_debugReportCallbackEXT;
3242 }
3243
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003244 bool operator!=(DebugReportCallbackEXT const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003245 {
3246 return m_debugReportCallbackEXT != rhs.m_debugReportCallbackEXT;
3247 }
3248
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003249 bool operator<(DebugReportCallbackEXT const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003250 {
3251 return m_debugReportCallbackEXT < rhs.m_debugReportCallbackEXT;
3252 }
3253
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003254
3255
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003256 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDebugReportCallbackEXT() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003257 {
3258 return m_debugReportCallbackEXT;
3259 }
3260
3261 explicit operator bool() const
3262 {
3263 return m_debugReportCallbackEXT != VK_NULL_HANDLE;
3264 }
3265
3266 bool operator!() const
3267 {
3268 return m_debugReportCallbackEXT == VK_NULL_HANDLE;
3269 }
3270
3271 private:
3272 VkDebugReportCallbackEXT m_debugReportCallbackEXT;
3273 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003274
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003275 static_assert( sizeof( DebugReportCallbackEXT ) == sizeof( VkDebugReportCallbackEXT ), "handle and wrapper have different size!" );
3276
3277 struct Offset2D
3278 {
3279 Offset2D( int32_t x_ = 0, int32_t y_ = 0 )
3280 : x( x_ )
3281 , y( y_ )
3282 {
3283 }
3284
3285 Offset2D( VkOffset2D const & rhs )
3286 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003287 memcpy( this, &rhs, sizeof( Offset2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003288 }
3289
3290 Offset2D& operator=( VkOffset2D const & rhs )
3291 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003292 memcpy( this, &rhs, sizeof( Offset2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003293 return *this;
3294 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003295 Offset2D& setX( int32_t x_ )
3296 {
3297 x = x_;
3298 return *this;
3299 }
3300
3301 Offset2D& setY( int32_t y_ )
3302 {
3303 y = y_;
3304 return *this;
3305 }
3306
3307 operator const VkOffset2D&() const
3308 {
3309 return *reinterpret_cast<const VkOffset2D*>(this);
3310 }
3311
3312 bool operator==( Offset2D const& rhs ) const
3313 {
3314 return ( x == rhs.x )
3315 && ( y == rhs.y );
3316 }
3317
3318 bool operator!=( Offset2D const& rhs ) const
3319 {
3320 return !operator==( rhs );
3321 }
3322
3323 int32_t x;
3324 int32_t y;
3325 };
3326 static_assert( sizeof( Offset2D ) == sizeof( VkOffset2D ), "struct and wrapper have different size!" );
3327
3328 struct Offset3D
3329 {
3330 Offset3D( int32_t x_ = 0, int32_t y_ = 0, int32_t z_ = 0 )
3331 : x( x_ )
3332 , y( y_ )
3333 , z( z_ )
3334 {
3335 }
3336
3337 Offset3D( VkOffset3D const & rhs )
3338 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003339 memcpy( this, &rhs, sizeof( Offset3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003340 }
3341
3342 Offset3D& operator=( VkOffset3D const & rhs )
3343 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003344 memcpy( this, &rhs, sizeof( Offset3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003345 return *this;
3346 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003347 Offset3D& setX( int32_t x_ )
3348 {
3349 x = x_;
3350 return *this;
3351 }
3352
3353 Offset3D& setY( int32_t y_ )
3354 {
3355 y = y_;
3356 return *this;
3357 }
3358
3359 Offset3D& setZ( int32_t z_ )
3360 {
3361 z = z_;
3362 return *this;
3363 }
3364
3365 operator const VkOffset3D&() const
3366 {
3367 return *reinterpret_cast<const VkOffset3D*>(this);
3368 }
3369
3370 bool operator==( Offset3D const& rhs ) const
3371 {
3372 return ( x == rhs.x )
3373 && ( y == rhs.y )
3374 && ( z == rhs.z );
3375 }
3376
3377 bool operator!=( Offset3D const& rhs ) const
3378 {
3379 return !operator==( rhs );
3380 }
3381
3382 int32_t x;
3383 int32_t y;
3384 int32_t z;
3385 };
3386 static_assert( sizeof( Offset3D ) == sizeof( VkOffset3D ), "struct and wrapper have different size!" );
3387
3388 struct Extent2D
3389 {
3390 Extent2D( uint32_t width_ = 0, uint32_t height_ = 0 )
3391 : width( width_ )
3392 , height( height_ )
3393 {
3394 }
3395
3396 Extent2D( VkExtent2D const & rhs )
3397 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003398 memcpy( this, &rhs, sizeof( Extent2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003399 }
3400
3401 Extent2D& operator=( VkExtent2D const & rhs )
3402 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003403 memcpy( this, &rhs, sizeof( Extent2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003404 return *this;
3405 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003406 Extent2D& setWidth( uint32_t width_ )
3407 {
3408 width = width_;
3409 return *this;
3410 }
3411
3412 Extent2D& setHeight( uint32_t height_ )
3413 {
3414 height = height_;
3415 return *this;
3416 }
3417
3418 operator const VkExtent2D&() const
3419 {
3420 return *reinterpret_cast<const VkExtent2D*>(this);
3421 }
3422
3423 bool operator==( Extent2D const& rhs ) const
3424 {
3425 return ( width == rhs.width )
3426 && ( height == rhs.height );
3427 }
3428
3429 bool operator!=( Extent2D const& rhs ) const
3430 {
3431 return !operator==( rhs );
3432 }
3433
3434 uint32_t width;
3435 uint32_t height;
3436 };
3437 static_assert( sizeof( Extent2D ) == sizeof( VkExtent2D ), "struct and wrapper have different size!" );
3438
3439 struct Extent3D
3440 {
3441 Extent3D( uint32_t width_ = 0, uint32_t height_ = 0, uint32_t depth_ = 0 )
3442 : width( width_ )
3443 , height( height_ )
3444 , depth( depth_ )
3445 {
3446 }
3447
3448 Extent3D( VkExtent3D const & rhs )
3449 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003450 memcpy( this, &rhs, sizeof( Extent3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003451 }
3452
3453 Extent3D& operator=( VkExtent3D const & rhs )
3454 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003455 memcpy( this, &rhs, sizeof( Extent3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003456 return *this;
3457 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003458 Extent3D& setWidth( uint32_t width_ )
3459 {
3460 width = width_;
3461 return *this;
3462 }
3463
3464 Extent3D& setHeight( uint32_t height_ )
3465 {
3466 height = height_;
3467 return *this;
3468 }
3469
3470 Extent3D& setDepth( uint32_t depth_ )
3471 {
3472 depth = depth_;
3473 return *this;
3474 }
3475
3476 operator const VkExtent3D&() const
3477 {
3478 return *reinterpret_cast<const VkExtent3D*>(this);
3479 }
3480
3481 bool operator==( Extent3D const& rhs ) const
3482 {
3483 return ( width == rhs.width )
3484 && ( height == rhs.height )
3485 && ( depth == rhs.depth );
3486 }
3487
3488 bool operator!=( Extent3D const& rhs ) const
3489 {
3490 return !operator==( rhs );
3491 }
3492
3493 uint32_t width;
3494 uint32_t height;
3495 uint32_t depth;
3496 };
3497 static_assert( sizeof( Extent3D ) == sizeof( VkExtent3D ), "struct and wrapper have different size!" );
3498
3499 struct Viewport
3500 {
3501 Viewport( float x_ = 0, float y_ = 0, float width_ = 0, float height_ = 0, float minDepth_ = 0, float maxDepth_ = 0 )
3502 : x( x_ )
3503 , y( y_ )
3504 , width( width_ )
3505 , height( height_ )
3506 , minDepth( minDepth_ )
3507 , maxDepth( maxDepth_ )
3508 {
3509 }
3510
3511 Viewport( VkViewport const & rhs )
3512 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003513 memcpy( this, &rhs, sizeof( Viewport ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003514 }
3515
3516 Viewport& operator=( VkViewport const & rhs )
3517 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003518 memcpy( this, &rhs, sizeof( Viewport ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003519 return *this;
3520 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003521 Viewport& setX( float x_ )
3522 {
3523 x = x_;
3524 return *this;
3525 }
3526
3527 Viewport& setY( float y_ )
3528 {
3529 y = y_;
3530 return *this;
3531 }
3532
3533 Viewport& setWidth( float width_ )
3534 {
3535 width = width_;
3536 return *this;
3537 }
3538
3539 Viewport& setHeight( float height_ )
3540 {
3541 height = height_;
3542 return *this;
3543 }
3544
3545 Viewport& setMinDepth( float minDepth_ )
3546 {
3547 minDepth = minDepth_;
3548 return *this;
3549 }
3550
3551 Viewport& setMaxDepth( float maxDepth_ )
3552 {
3553 maxDepth = maxDepth_;
3554 return *this;
3555 }
3556
3557 operator const VkViewport&() const
3558 {
3559 return *reinterpret_cast<const VkViewport*>(this);
3560 }
3561
3562 bool operator==( Viewport const& rhs ) const
3563 {
3564 return ( x == rhs.x )
3565 && ( y == rhs.y )
3566 && ( width == rhs.width )
3567 && ( height == rhs.height )
3568 && ( minDepth == rhs.minDepth )
3569 && ( maxDepth == rhs.maxDepth );
3570 }
3571
3572 bool operator!=( Viewport const& rhs ) const
3573 {
3574 return !operator==( rhs );
3575 }
3576
3577 float x;
3578 float y;
3579 float width;
3580 float height;
3581 float minDepth;
3582 float maxDepth;
3583 };
3584 static_assert( sizeof( Viewport ) == sizeof( VkViewport ), "struct and wrapper have different size!" );
3585
3586 struct Rect2D
3587 {
3588 Rect2D( Offset2D offset_ = Offset2D(), Extent2D extent_ = Extent2D() )
3589 : offset( offset_ )
3590 , extent( extent_ )
3591 {
3592 }
3593
3594 Rect2D( VkRect2D const & rhs )
3595 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003596 memcpy( this, &rhs, sizeof( Rect2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003597 }
3598
3599 Rect2D& operator=( VkRect2D const & rhs )
3600 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003601 memcpy( this, &rhs, sizeof( Rect2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003602 return *this;
3603 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003604 Rect2D& setOffset( Offset2D offset_ )
3605 {
3606 offset = offset_;
3607 return *this;
3608 }
3609
3610 Rect2D& setExtent( Extent2D extent_ )
3611 {
3612 extent = extent_;
3613 return *this;
3614 }
3615
3616 operator const VkRect2D&() const
3617 {
3618 return *reinterpret_cast<const VkRect2D*>(this);
3619 }
3620
3621 bool operator==( Rect2D const& rhs ) const
3622 {
3623 return ( offset == rhs.offset )
3624 && ( extent == rhs.extent );
3625 }
3626
3627 bool operator!=( Rect2D const& rhs ) const
3628 {
3629 return !operator==( rhs );
3630 }
3631
3632 Offset2D offset;
3633 Extent2D extent;
3634 };
3635 static_assert( sizeof( Rect2D ) == sizeof( VkRect2D ), "struct and wrapper have different size!" );
3636
3637 struct ClearRect
3638 {
3639 ClearRect( Rect2D rect_ = Rect2D(), uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
3640 : rect( rect_ )
3641 , baseArrayLayer( baseArrayLayer_ )
3642 , layerCount( layerCount_ )
3643 {
3644 }
3645
3646 ClearRect( VkClearRect const & rhs )
3647 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003648 memcpy( this, &rhs, sizeof( ClearRect ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003649 }
3650
3651 ClearRect& operator=( VkClearRect const & rhs )
3652 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003653 memcpy( this, &rhs, sizeof( ClearRect ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003654 return *this;
3655 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003656 ClearRect& setRect( Rect2D rect_ )
3657 {
3658 rect = rect_;
3659 return *this;
3660 }
3661
3662 ClearRect& setBaseArrayLayer( uint32_t baseArrayLayer_ )
3663 {
3664 baseArrayLayer = baseArrayLayer_;
3665 return *this;
3666 }
3667
3668 ClearRect& setLayerCount( uint32_t layerCount_ )
3669 {
3670 layerCount = layerCount_;
3671 return *this;
3672 }
3673
3674 operator const VkClearRect&() const
3675 {
3676 return *reinterpret_cast<const VkClearRect*>(this);
3677 }
3678
3679 bool operator==( ClearRect const& rhs ) const
3680 {
3681 return ( rect == rhs.rect )
3682 && ( baseArrayLayer == rhs.baseArrayLayer )
3683 && ( layerCount == rhs.layerCount );
3684 }
3685
3686 bool operator!=( ClearRect const& rhs ) const
3687 {
3688 return !operator==( rhs );
3689 }
3690
3691 Rect2D rect;
3692 uint32_t baseArrayLayer;
3693 uint32_t layerCount;
3694 };
3695 static_assert( sizeof( ClearRect ) == sizeof( VkClearRect ), "struct and wrapper have different size!" );
3696
3697 struct ExtensionProperties
3698 {
3699 operator const VkExtensionProperties&() const
3700 {
3701 return *reinterpret_cast<const VkExtensionProperties*>(this);
3702 }
3703
3704 bool operator==( ExtensionProperties const& rhs ) const
3705 {
3706 return ( memcmp( extensionName, rhs.extensionName, VK_MAX_EXTENSION_NAME_SIZE * sizeof( char ) ) == 0 )
3707 && ( specVersion == rhs.specVersion );
3708 }
3709
3710 bool operator!=( ExtensionProperties const& rhs ) const
3711 {
3712 return !operator==( rhs );
3713 }
3714
3715 char extensionName[VK_MAX_EXTENSION_NAME_SIZE];
3716 uint32_t specVersion;
3717 };
3718 static_assert( sizeof( ExtensionProperties ) == sizeof( VkExtensionProperties ), "struct and wrapper have different size!" );
3719
3720 struct LayerProperties
3721 {
3722 operator const VkLayerProperties&() const
3723 {
3724 return *reinterpret_cast<const VkLayerProperties*>(this);
3725 }
3726
3727 bool operator==( LayerProperties const& rhs ) const
3728 {
3729 return ( memcmp( layerName, rhs.layerName, VK_MAX_EXTENSION_NAME_SIZE * sizeof( char ) ) == 0 )
3730 && ( specVersion == rhs.specVersion )
3731 && ( implementationVersion == rhs.implementationVersion )
3732 && ( memcmp( description, rhs.description, VK_MAX_DESCRIPTION_SIZE * sizeof( char ) ) == 0 );
3733 }
3734
3735 bool operator!=( LayerProperties const& rhs ) const
3736 {
3737 return !operator==( rhs );
3738 }
3739
3740 char layerName[VK_MAX_EXTENSION_NAME_SIZE];
3741 uint32_t specVersion;
3742 uint32_t implementationVersion;
3743 char description[VK_MAX_DESCRIPTION_SIZE];
3744 };
3745 static_assert( sizeof( LayerProperties ) == sizeof( VkLayerProperties ), "struct and wrapper have different size!" );
3746
3747 struct AllocationCallbacks
3748 {
3749 AllocationCallbacks( void* pUserData_ = nullptr, PFN_vkAllocationFunction pfnAllocation_ = nullptr, PFN_vkReallocationFunction pfnReallocation_ = nullptr, PFN_vkFreeFunction pfnFree_ = nullptr, PFN_vkInternalAllocationNotification pfnInternalAllocation_ = nullptr, PFN_vkInternalFreeNotification pfnInternalFree_ = nullptr )
3750 : pUserData( pUserData_ )
3751 , pfnAllocation( pfnAllocation_ )
3752 , pfnReallocation( pfnReallocation_ )
3753 , pfnFree( pfnFree_ )
3754 , pfnInternalAllocation( pfnInternalAllocation_ )
3755 , pfnInternalFree( pfnInternalFree_ )
3756 {
3757 }
3758
3759 AllocationCallbacks( VkAllocationCallbacks const & rhs )
3760 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003761 memcpy( this, &rhs, sizeof( AllocationCallbacks ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003762 }
3763
3764 AllocationCallbacks& operator=( VkAllocationCallbacks const & rhs )
3765 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003766 memcpy( this, &rhs, sizeof( AllocationCallbacks ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003767 return *this;
3768 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003769 AllocationCallbacks& setPUserData( void* pUserData_ )
3770 {
3771 pUserData = pUserData_;
3772 return *this;
3773 }
3774
3775 AllocationCallbacks& setPfnAllocation( PFN_vkAllocationFunction pfnAllocation_ )
3776 {
3777 pfnAllocation = pfnAllocation_;
3778 return *this;
3779 }
3780
3781 AllocationCallbacks& setPfnReallocation( PFN_vkReallocationFunction pfnReallocation_ )
3782 {
3783 pfnReallocation = pfnReallocation_;
3784 return *this;
3785 }
3786
3787 AllocationCallbacks& setPfnFree( PFN_vkFreeFunction pfnFree_ )
3788 {
3789 pfnFree = pfnFree_;
3790 return *this;
3791 }
3792
3793 AllocationCallbacks& setPfnInternalAllocation( PFN_vkInternalAllocationNotification pfnInternalAllocation_ )
3794 {
3795 pfnInternalAllocation = pfnInternalAllocation_;
3796 return *this;
3797 }
3798
3799 AllocationCallbacks& setPfnInternalFree( PFN_vkInternalFreeNotification pfnInternalFree_ )
3800 {
3801 pfnInternalFree = pfnInternalFree_;
3802 return *this;
3803 }
3804
3805 operator const VkAllocationCallbacks&() const
3806 {
3807 return *reinterpret_cast<const VkAllocationCallbacks*>(this);
3808 }
3809
3810 bool operator==( AllocationCallbacks const& rhs ) const
3811 {
3812 return ( pUserData == rhs.pUserData )
3813 && ( pfnAllocation == rhs.pfnAllocation )
3814 && ( pfnReallocation == rhs.pfnReallocation )
3815 && ( pfnFree == rhs.pfnFree )
3816 && ( pfnInternalAllocation == rhs.pfnInternalAllocation )
3817 && ( pfnInternalFree == rhs.pfnInternalFree );
3818 }
3819
3820 bool operator!=( AllocationCallbacks const& rhs ) const
3821 {
3822 return !operator==( rhs );
3823 }
3824
3825 void* pUserData;
3826 PFN_vkAllocationFunction pfnAllocation;
3827 PFN_vkReallocationFunction pfnReallocation;
3828 PFN_vkFreeFunction pfnFree;
3829 PFN_vkInternalAllocationNotification pfnInternalAllocation;
3830 PFN_vkInternalFreeNotification pfnInternalFree;
3831 };
3832 static_assert( sizeof( AllocationCallbacks ) == sizeof( VkAllocationCallbacks ), "struct and wrapper have different size!" );
3833
3834 struct MemoryRequirements
3835 {
3836 operator const VkMemoryRequirements&() const
3837 {
3838 return *reinterpret_cast<const VkMemoryRequirements*>(this);
3839 }
3840
3841 bool operator==( MemoryRequirements const& rhs ) const
3842 {
3843 return ( size == rhs.size )
3844 && ( alignment == rhs.alignment )
3845 && ( memoryTypeBits == rhs.memoryTypeBits );
3846 }
3847
3848 bool operator!=( MemoryRequirements const& rhs ) const
3849 {
3850 return !operator==( rhs );
3851 }
3852
3853 DeviceSize size;
3854 DeviceSize alignment;
3855 uint32_t memoryTypeBits;
3856 };
3857 static_assert( sizeof( MemoryRequirements ) == sizeof( VkMemoryRequirements ), "struct and wrapper have different size!" );
3858
3859 struct DescriptorBufferInfo
3860 {
3861 DescriptorBufferInfo( Buffer buffer_ = Buffer(), DeviceSize offset_ = 0, DeviceSize range_ = 0 )
3862 : buffer( buffer_ )
3863 , offset( offset_ )
3864 , range( range_ )
3865 {
3866 }
3867
3868 DescriptorBufferInfo( VkDescriptorBufferInfo const & rhs )
3869 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003870 memcpy( this, &rhs, sizeof( DescriptorBufferInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003871 }
3872
3873 DescriptorBufferInfo& operator=( VkDescriptorBufferInfo const & rhs )
3874 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003875 memcpy( this, &rhs, sizeof( DescriptorBufferInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003876 return *this;
3877 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003878 DescriptorBufferInfo& setBuffer( Buffer buffer_ )
3879 {
3880 buffer = buffer_;
3881 return *this;
3882 }
3883
3884 DescriptorBufferInfo& setOffset( DeviceSize offset_ )
3885 {
3886 offset = offset_;
3887 return *this;
3888 }
3889
3890 DescriptorBufferInfo& setRange( DeviceSize range_ )
3891 {
3892 range = range_;
3893 return *this;
3894 }
3895
3896 operator const VkDescriptorBufferInfo&() const
3897 {
3898 return *reinterpret_cast<const VkDescriptorBufferInfo*>(this);
3899 }
3900
3901 bool operator==( DescriptorBufferInfo const& rhs ) const
3902 {
3903 return ( buffer == rhs.buffer )
3904 && ( offset == rhs.offset )
3905 && ( range == rhs.range );
3906 }
3907
3908 bool operator!=( DescriptorBufferInfo const& rhs ) const
3909 {
3910 return !operator==( rhs );
3911 }
3912
3913 Buffer buffer;
3914 DeviceSize offset;
3915 DeviceSize range;
3916 };
3917 static_assert( sizeof( DescriptorBufferInfo ) == sizeof( VkDescriptorBufferInfo ), "struct and wrapper have different size!" );
3918
3919 struct SubresourceLayout
3920 {
3921 operator const VkSubresourceLayout&() const
3922 {
3923 return *reinterpret_cast<const VkSubresourceLayout*>(this);
3924 }
3925
3926 bool operator==( SubresourceLayout const& rhs ) const
3927 {
3928 return ( offset == rhs.offset )
3929 && ( size == rhs.size )
3930 && ( rowPitch == rhs.rowPitch )
3931 && ( arrayPitch == rhs.arrayPitch )
3932 && ( depthPitch == rhs.depthPitch );
3933 }
3934
3935 bool operator!=( SubresourceLayout const& rhs ) const
3936 {
3937 return !operator==( rhs );
3938 }
3939
3940 DeviceSize offset;
3941 DeviceSize size;
3942 DeviceSize rowPitch;
3943 DeviceSize arrayPitch;
3944 DeviceSize depthPitch;
3945 };
3946 static_assert( sizeof( SubresourceLayout ) == sizeof( VkSubresourceLayout ), "struct and wrapper have different size!" );
3947
3948 struct BufferCopy
3949 {
3950 BufferCopy( DeviceSize srcOffset_ = 0, DeviceSize dstOffset_ = 0, DeviceSize size_ = 0 )
3951 : srcOffset( srcOffset_ )
3952 , dstOffset( dstOffset_ )
3953 , size( size_ )
3954 {
3955 }
3956
3957 BufferCopy( VkBufferCopy const & rhs )
3958 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003959 memcpy( this, &rhs, sizeof( BufferCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003960 }
3961
3962 BufferCopy& operator=( VkBufferCopy const & rhs )
3963 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003964 memcpy( this, &rhs, sizeof( BufferCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003965 return *this;
3966 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003967 BufferCopy& setSrcOffset( DeviceSize srcOffset_ )
3968 {
3969 srcOffset = srcOffset_;
3970 return *this;
3971 }
3972
3973 BufferCopy& setDstOffset( DeviceSize dstOffset_ )
3974 {
3975 dstOffset = dstOffset_;
3976 return *this;
3977 }
3978
3979 BufferCopy& setSize( DeviceSize size_ )
3980 {
3981 size = size_;
3982 return *this;
3983 }
3984
3985 operator const VkBufferCopy&() const
3986 {
3987 return *reinterpret_cast<const VkBufferCopy*>(this);
3988 }
3989
3990 bool operator==( BufferCopy const& rhs ) const
3991 {
3992 return ( srcOffset == rhs.srcOffset )
3993 && ( dstOffset == rhs.dstOffset )
3994 && ( size == rhs.size );
3995 }
3996
3997 bool operator!=( BufferCopy const& rhs ) const
3998 {
3999 return !operator==( rhs );
4000 }
4001
4002 DeviceSize srcOffset;
4003 DeviceSize dstOffset;
4004 DeviceSize size;
4005 };
4006 static_assert( sizeof( BufferCopy ) == sizeof( VkBufferCopy ), "struct and wrapper have different size!" );
4007
4008 struct SpecializationMapEntry
4009 {
4010 SpecializationMapEntry( uint32_t constantID_ = 0, uint32_t offset_ = 0, size_t size_ = 0 )
4011 : constantID( constantID_ )
4012 , offset( offset_ )
4013 , size( size_ )
4014 {
4015 }
4016
4017 SpecializationMapEntry( VkSpecializationMapEntry const & rhs )
4018 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004019 memcpy( this, &rhs, sizeof( SpecializationMapEntry ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004020 }
4021
4022 SpecializationMapEntry& operator=( VkSpecializationMapEntry const & rhs )
4023 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004024 memcpy( this, &rhs, sizeof( SpecializationMapEntry ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004025 return *this;
4026 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004027 SpecializationMapEntry& setConstantID( uint32_t constantID_ )
4028 {
4029 constantID = constantID_;
4030 return *this;
4031 }
4032
4033 SpecializationMapEntry& setOffset( uint32_t offset_ )
4034 {
4035 offset = offset_;
4036 return *this;
4037 }
4038
4039 SpecializationMapEntry& setSize( size_t size_ )
4040 {
4041 size = size_;
4042 return *this;
4043 }
4044
4045 operator const VkSpecializationMapEntry&() const
4046 {
4047 return *reinterpret_cast<const VkSpecializationMapEntry*>(this);
4048 }
4049
4050 bool operator==( SpecializationMapEntry const& rhs ) const
4051 {
4052 return ( constantID == rhs.constantID )
4053 && ( offset == rhs.offset )
4054 && ( size == rhs.size );
4055 }
4056
4057 bool operator!=( SpecializationMapEntry const& rhs ) const
4058 {
4059 return !operator==( rhs );
4060 }
4061
4062 uint32_t constantID;
4063 uint32_t offset;
4064 size_t size;
4065 };
4066 static_assert( sizeof( SpecializationMapEntry ) == sizeof( VkSpecializationMapEntry ), "struct and wrapper have different size!" );
4067
4068 struct SpecializationInfo
4069 {
4070 SpecializationInfo( uint32_t mapEntryCount_ = 0, const SpecializationMapEntry* pMapEntries_ = nullptr, size_t dataSize_ = 0, const void* pData_ = nullptr )
4071 : mapEntryCount( mapEntryCount_ )
4072 , pMapEntries( pMapEntries_ )
4073 , dataSize( dataSize_ )
4074 , pData( pData_ )
4075 {
4076 }
4077
4078 SpecializationInfo( VkSpecializationInfo const & rhs )
4079 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004080 memcpy( this, &rhs, sizeof( SpecializationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004081 }
4082
4083 SpecializationInfo& operator=( VkSpecializationInfo const & rhs )
4084 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004085 memcpy( this, &rhs, sizeof( SpecializationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004086 return *this;
4087 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004088 SpecializationInfo& setMapEntryCount( uint32_t mapEntryCount_ )
4089 {
4090 mapEntryCount = mapEntryCount_;
4091 return *this;
4092 }
4093
4094 SpecializationInfo& setPMapEntries( const SpecializationMapEntry* pMapEntries_ )
4095 {
4096 pMapEntries = pMapEntries_;
4097 return *this;
4098 }
4099
4100 SpecializationInfo& setDataSize( size_t dataSize_ )
4101 {
4102 dataSize = dataSize_;
4103 return *this;
4104 }
4105
4106 SpecializationInfo& setPData( const void* pData_ )
4107 {
4108 pData = pData_;
4109 return *this;
4110 }
4111
4112 operator const VkSpecializationInfo&() const
4113 {
4114 return *reinterpret_cast<const VkSpecializationInfo*>(this);
4115 }
4116
4117 bool operator==( SpecializationInfo const& rhs ) const
4118 {
4119 return ( mapEntryCount == rhs.mapEntryCount )
4120 && ( pMapEntries == rhs.pMapEntries )
4121 && ( dataSize == rhs.dataSize )
4122 && ( pData == rhs.pData );
4123 }
4124
4125 bool operator!=( SpecializationInfo const& rhs ) const
4126 {
4127 return !operator==( rhs );
4128 }
4129
4130 uint32_t mapEntryCount;
4131 const SpecializationMapEntry* pMapEntries;
4132 size_t dataSize;
4133 const void* pData;
4134 };
4135 static_assert( sizeof( SpecializationInfo ) == sizeof( VkSpecializationInfo ), "struct and wrapper have different size!" );
4136
4137 union ClearColorValue
4138 {
4139 ClearColorValue( const std::array<float,4>& float32_ = { {0} } )
4140 {
4141 memcpy( &float32, float32_.data(), 4 * sizeof( float ) );
4142 }
4143
4144 ClearColorValue( const std::array<int32_t,4>& int32_ )
4145 {
4146 memcpy( &int32, int32_.data(), 4 * sizeof( int32_t ) );
4147 }
4148
4149 ClearColorValue( const std::array<uint32_t,4>& uint32_ )
4150 {
4151 memcpy( &uint32, uint32_.data(), 4 * sizeof( uint32_t ) );
4152 }
4153
4154 ClearColorValue& setFloat32( std::array<float,4> float32_ )
4155 {
4156 memcpy( &float32, float32_.data(), 4 * sizeof( float ) );
4157 return *this;
4158 }
4159
4160 ClearColorValue& setInt32( std::array<int32_t,4> int32_ )
4161 {
4162 memcpy( &int32, int32_.data(), 4 * sizeof( int32_t ) );
4163 return *this;
4164 }
4165
4166 ClearColorValue& setUint32( std::array<uint32_t,4> uint32_ )
4167 {
4168 memcpy( &uint32, uint32_.data(), 4 * sizeof( uint32_t ) );
4169 return *this;
4170 }
4171
4172 operator VkClearColorValue const& () const
4173 {
4174 return *reinterpret_cast<const VkClearColorValue*>(this);
4175 }
4176
4177 float float32[4];
4178 int32_t int32[4];
4179 uint32_t uint32[4];
4180 };
4181
4182 struct ClearDepthStencilValue
4183 {
4184 ClearDepthStencilValue( float depth_ = 0, uint32_t stencil_ = 0 )
4185 : depth( depth_ )
4186 , stencil( stencil_ )
4187 {
4188 }
4189
4190 ClearDepthStencilValue( VkClearDepthStencilValue const & rhs )
4191 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004192 memcpy( this, &rhs, sizeof( ClearDepthStencilValue ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004193 }
4194
4195 ClearDepthStencilValue& operator=( VkClearDepthStencilValue const & rhs )
4196 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004197 memcpy( this, &rhs, sizeof( ClearDepthStencilValue ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004198 return *this;
4199 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004200 ClearDepthStencilValue& setDepth( float depth_ )
4201 {
4202 depth = depth_;
4203 return *this;
4204 }
4205
4206 ClearDepthStencilValue& setStencil( uint32_t stencil_ )
4207 {
4208 stencil = stencil_;
4209 return *this;
4210 }
4211
4212 operator const VkClearDepthStencilValue&() const
4213 {
4214 return *reinterpret_cast<const VkClearDepthStencilValue*>(this);
4215 }
4216
4217 bool operator==( ClearDepthStencilValue const& rhs ) const
4218 {
4219 return ( depth == rhs.depth )
4220 && ( stencil == rhs.stencil );
4221 }
4222
4223 bool operator!=( ClearDepthStencilValue const& rhs ) const
4224 {
4225 return !operator==( rhs );
4226 }
4227
4228 float depth;
4229 uint32_t stencil;
4230 };
4231 static_assert( sizeof( ClearDepthStencilValue ) == sizeof( VkClearDepthStencilValue ), "struct and wrapper have different size!" );
4232
4233 union ClearValue
4234 {
4235 ClearValue( ClearColorValue color_ = ClearColorValue() )
4236 {
4237 color = color_;
4238 }
4239
4240 ClearValue( ClearDepthStencilValue depthStencil_ )
4241 {
4242 depthStencil = depthStencil_;
4243 }
4244
4245 ClearValue& setColor( ClearColorValue color_ )
4246 {
4247 color = color_;
4248 return *this;
4249 }
4250
4251 ClearValue& setDepthStencil( ClearDepthStencilValue depthStencil_ )
4252 {
4253 depthStencil = depthStencil_;
4254 return *this;
4255 }
4256
4257 operator VkClearValue const& () const
4258 {
4259 return *reinterpret_cast<const VkClearValue*>(this);
4260 }
4261
4262#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
4263 ClearColorValue color;
4264 ClearDepthStencilValue depthStencil;
4265#else
4266 VkClearColorValue color;
4267 VkClearDepthStencilValue depthStencil;
4268#endif // VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
4269 };
4270
4271 struct PhysicalDeviceFeatures
4272 {
4273 PhysicalDeviceFeatures( Bool32 robustBufferAccess_ = 0, Bool32 fullDrawIndexUint32_ = 0, Bool32 imageCubeArray_ = 0, Bool32 independentBlend_ = 0, Bool32 geometryShader_ = 0, Bool32 tessellationShader_ = 0, Bool32 sampleRateShading_ = 0, Bool32 dualSrcBlend_ = 0, Bool32 logicOp_ = 0, Bool32 multiDrawIndirect_ = 0, Bool32 drawIndirectFirstInstance_ = 0, Bool32 depthClamp_ = 0, Bool32 depthBiasClamp_ = 0, Bool32 fillModeNonSolid_ = 0, Bool32 depthBounds_ = 0, Bool32 wideLines_ = 0, Bool32 largePoints_ = 0, Bool32 alphaToOne_ = 0, Bool32 multiViewport_ = 0, Bool32 samplerAnisotropy_ = 0, Bool32 textureCompressionETC2_ = 0, Bool32 textureCompressionASTC_LDR_ = 0, Bool32 textureCompressionBC_ = 0, Bool32 occlusionQueryPrecise_ = 0, Bool32 pipelineStatisticsQuery_ = 0, Bool32 vertexPipelineStoresAndAtomics_ = 0, Bool32 fragmentStoresAndAtomics_ = 0, Bool32 shaderTessellationAndGeometryPointSize_ = 0, Bool32 shaderImageGatherExtended_ = 0, Bool32 shaderStorageImageExtendedFormats_ = 0, Bool32 shaderStorageImageMultisample_ = 0, Bool32 shaderStorageImageReadWithoutFormat_ = 0, Bool32 shaderStorageImageWriteWithoutFormat_ = 0, Bool32 shaderUniformBufferArrayDynamicIndexing_ = 0, Bool32 shaderSampledImageArrayDynamicIndexing_ = 0, Bool32 shaderStorageBufferArrayDynamicIndexing_ = 0, Bool32 shaderStorageImageArrayDynamicIndexing_ = 0, Bool32 shaderClipDistance_ = 0, Bool32 shaderCullDistance_ = 0, Bool32 shaderFloat64_ = 0, Bool32 shaderInt64_ = 0, Bool32 shaderInt16_ = 0, Bool32 shaderResourceResidency_ = 0, Bool32 shaderResourceMinLod_ = 0, Bool32 sparseBinding_ = 0, Bool32 sparseResidencyBuffer_ = 0, Bool32 sparseResidencyImage2D_ = 0, Bool32 sparseResidencyImage3D_ = 0, Bool32 sparseResidency2Samples_ = 0, Bool32 sparseResidency4Samples_ = 0, Bool32 sparseResidency8Samples_ = 0, Bool32 sparseResidency16Samples_ = 0, Bool32 sparseResidencyAliased_ = 0, Bool32 variableMultisampleRate_ = 0, Bool32 inheritedQueries_ = 0 )
4274 : robustBufferAccess( robustBufferAccess_ )
4275 , fullDrawIndexUint32( fullDrawIndexUint32_ )
4276 , imageCubeArray( imageCubeArray_ )
4277 , independentBlend( independentBlend_ )
4278 , geometryShader( geometryShader_ )
4279 , tessellationShader( tessellationShader_ )
4280 , sampleRateShading( sampleRateShading_ )
4281 , dualSrcBlend( dualSrcBlend_ )
4282 , logicOp( logicOp_ )
4283 , multiDrawIndirect( multiDrawIndirect_ )
4284 , drawIndirectFirstInstance( drawIndirectFirstInstance_ )
4285 , depthClamp( depthClamp_ )
4286 , depthBiasClamp( depthBiasClamp_ )
4287 , fillModeNonSolid( fillModeNonSolid_ )
4288 , depthBounds( depthBounds_ )
4289 , wideLines( wideLines_ )
4290 , largePoints( largePoints_ )
4291 , alphaToOne( alphaToOne_ )
4292 , multiViewport( multiViewport_ )
4293 , samplerAnisotropy( samplerAnisotropy_ )
4294 , textureCompressionETC2( textureCompressionETC2_ )
4295 , textureCompressionASTC_LDR( textureCompressionASTC_LDR_ )
4296 , textureCompressionBC( textureCompressionBC_ )
4297 , occlusionQueryPrecise( occlusionQueryPrecise_ )
4298 , pipelineStatisticsQuery( pipelineStatisticsQuery_ )
4299 , vertexPipelineStoresAndAtomics( vertexPipelineStoresAndAtomics_ )
4300 , fragmentStoresAndAtomics( fragmentStoresAndAtomics_ )
4301 , shaderTessellationAndGeometryPointSize( shaderTessellationAndGeometryPointSize_ )
4302 , shaderImageGatherExtended( shaderImageGatherExtended_ )
4303 , shaderStorageImageExtendedFormats( shaderStorageImageExtendedFormats_ )
4304 , shaderStorageImageMultisample( shaderStorageImageMultisample_ )
4305 , shaderStorageImageReadWithoutFormat( shaderStorageImageReadWithoutFormat_ )
4306 , shaderStorageImageWriteWithoutFormat( shaderStorageImageWriteWithoutFormat_ )
4307 , shaderUniformBufferArrayDynamicIndexing( shaderUniformBufferArrayDynamicIndexing_ )
4308 , shaderSampledImageArrayDynamicIndexing( shaderSampledImageArrayDynamicIndexing_ )
4309 , shaderStorageBufferArrayDynamicIndexing( shaderStorageBufferArrayDynamicIndexing_ )
4310 , shaderStorageImageArrayDynamicIndexing( shaderStorageImageArrayDynamicIndexing_ )
4311 , shaderClipDistance( shaderClipDistance_ )
4312 , shaderCullDistance( shaderCullDistance_ )
4313 , shaderFloat64( shaderFloat64_ )
4314 , shaderInt64( shaderInt64_ )
4315 , shaderInt16( shaderInt16_ )
4316 , shaderResourceResidency( shaderResourceResidency_ )
4317 , shaderResourceMinLod( shaderResourceMinLod_ )
4318 , sparseBinding( sparseBinding_ )
4319 , sparseResidencyBuffer( sparseResidencyBuffer_ )
4320 , sparseResidencyImage2D( sparseResidencyImage2D_ )
4321 , sparseResidencyImage3D( sparseResidencyImage3D_ )
4322 , sparseResidency2Samples( sparseResidency2Samples_ )
4323 , sparseResidency4Samples( sparseResidency4Samples_ )
4324 , sparseResidency8Samples( sparseResidency8Samples_ )
4325 , sparseResidency16Samples( sparseResidency16Samples_ )
4326 , sparseResidencyAliased( sparseResidencyAliased_ )
4327 , variableMultisampleRate( variableMultisampleRate_ )
4328 , inheritedQueries( inheritedQueries_ )
4329 {
4330 }
4331
4332 PhysicalDeviceFeatures( VkPhysicalDeviceFeatures const & rhs )
4333 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004334 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004335 }
4336
4337 PhysicalDeviceFeatures& operator=( VkPhysicalDeviceFeatures const & rhs )
4338 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004339 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004340 return *this;
4341 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004342 PhysicalDeviceFeatures& setRobustBufferAccess( Bool32 robustBufferAccess_ )
4343 {
4344 robustBufferAccess = robustBufferAccess_;
4345 return *this;
4346 }
4347
4348 PhysicalDeviceFeatures& setFullDrawIndexUint32( Bool32 fullDrawIndexUint32_ )
4349 {
4350 fullDrawIndexUint32 = fullDrawIndexUint32_;
4351 return *this;
4352 }
4353
4354 PhysicalDeviceFeatures& setImageCubeArray( Bool32 imageCubeArray_ )
4355 {
4356 imageCubeArray = imageCubeArray_;
4357 return *this;
4358 }
4359
4360 PhysicalDeviceFeatures& setIndependentBlend( Bool32 independentBlend_ )
4361 {
4362 independentBlend = independentBlend_;
4363 return *this;
4364 }
4365
4366 PhysicalDeviceFeatures& setGeometryShader( Bool32 geometryShader_ )
4367 {
4368 geometryShader = geometryShader_;
4369 return *this;
4370 }
4371
4372 PhysicalDeviceFeatures& setTessellationShader( Bool32 tessellationShader_ )
4373 {
4374 tessellationShader = tessellationShader_;
4375 return *this;
4376 }
4377
4378 PhysicalDeviceFeatures& setSampleRateShading( Bool32 sampleRateShading_ )
4379 {
4380 sampleRateShading = sampleRateShading_;
4381 return *this;
4382 }
4383
4384 PhysicalDeviceFeatures& setDualSrcBlend( Bool32 dualSrcBlend_ )
4385 {
4386 dualSrcBlend = dualSrcBlend_;
4387 return *this;
4388 }
4389
4390 PhysicalDeviceFeatures& setLogicOp( Bool32 logicOp_ )
4391 {
4392 logicOp = logicOp_;
4393 return *this;
4394 }
4395
4396 PhysicalDeviceFeatures& setMultiDrawIndirect( Bool32 multiDrawIndirect_ )
4397 {
4398 multiDrawIndirect = multiDrawIndirect_;
4399 return *this;
4400 }
4401
4402 PhysicalDeviceFeatures& setDrawIndirectFirstInstance( Bool32 drawIndirectFirstInstance_ )
4403 {
4404 drawIndirectFirstInstance = drawIndirectFirstInstance_;
4405 return *this;
4406 }
4407
4408 PhysicalDeviceFeatures& setDepthClamp( Bool32 depthClamp_ )
4409 {
4410 depthClamp = depthClamp_;
4411 return *this;
4412 }
4413
4414 PhysicalDeviceFeatures& setDepthBiasClamp( Bool32 depthBiasClamp_ )
4415 {
4416 depthBiasClamp = depthBiasClamp_;
4417 return *this;
4418 }
4419
4420 PhysicalDeviceFeatures& setFillModeNonSolid( Bool32 fillModeNonSolid_ )
4421 {
4422 fillModeNonSolid = fillModeNonSolid_;
4423 return *this;
4424 }
4425
4426 PhysicalDeviceFeatures& setDepthBounds( Bool32 depthBounds_ )
4427 {
4428 depthBounds = depthBounds_;
4429 return *this;
4430 }
4431
4432 PhysicalDeviceFeatures& setWideLines( Bool32 wideLines_ )
4433 {
4434 wideLines = wideLines_;
4435 return *this;
4436 }
4437
4438 PhysicalDeviceFeatures& setLargePoints( Bool32 largePoints_ )
4439 {
4440 largePoints = largePoints_;
4441 return *this;
4442 }
4443
4444 PhysicalDeviceFeatures& setAlphaToOne( Bool32 alphaToOne_ )
4445 {
4446 alphaToOne = alphaToOne_;
4447 return *this;
4448 }
4449
4450 PhysicalDeviceFeatures& setMultiViewport( Bool32 multiViewport_ )
4451 {
4452 multiViewport = multiViewport_;
4453 return *this;
4454 }
4455
4456 PhysicalDeviceFeatures& setSamplerAnisotropy( Bool32 samplerAnisotropy_ )
4457 {
4458 samplerAnisotropy = samplerAnisotropy_;
4459 return *this;
4460 }
4461
4462 PhysicalDeviceFeatures& setTextureCompressionETC2( Bool32 textureCompressionETC2_ )
4463 {
4464 textureCompressionETC2 = textureCompressionETC2_;
4465 return *this;
4466 }
4467
4468 PhysicalDeviceFeatures& setTextureCompressionASTC_LDR( Bool32 textureCompressionASTC_LDR_ )
4469 {
4470 textureCompressionASTC_LDR = textureCompressionASTC_LDR_;
4471 return *this;
4472 }
4473
4474 PhysicalDeviceFeatures& setTextureCompressionBC( Bool32 textureCompressionBC_ )
4475 {
4476 textureCompressionBC = textureCompressionBC_;
4477 return *this;
4478 }
4479
4480 PhysicalDeviceFeatures& setOcclusionQueryPrecise( Bool32 occlusionQueryPrecise_ )
4481 {
4482 occlusionQueryPrecise = occlusionQueryPrecise_;
4483 return *this;
4484 }
4485
4486 PhysicalDeviceFeatures& setPipelineStatisticsQuery( Bool32 pipelineStatisticsQuery_ )
4487 {
4488 pipelineStatisticsQuery = pipelineStatisticsQuery_;
4489 return *this;
4490 }
4491
4492 PhysicalDeviceFeatures& setVertexPipelineStoresAndAtomics( Bool32 vertexPipelineStoresAndAtomics_ )
4493 {
4494 vertexPipelineStoresAndAtomics = vertexPipelineStoresAndAtomics_;
4495 return *this;
4496 }
4497
4498 PhysicalDeviceFeatures& setFragmentStoresAndAtomics( Bool32 fragmentStoresAndAtomics_ )
4499 {
4500 fragmentStoresAndAtomics = fragmentStoresAndAtomics_;
4501 return *this;
4502 }
4503
4504 PhysicalDeviceFeatures& setShaderTessellationAndGeometryPointSize( Bool32 shaderTessellationAndGeometryPointSize_ )
4505 {
4506 shaderTessellationAndGeometryPointSize = shaderTessellationAndGeometryPointSize_;
4507 return *this;
4508 }
4509
4510 PhysicalDeviceFeatures& setShaderImageGatherExtended( Bool32 shaderImageGatherExtended_ )
4511 {
4512 shaderImageGatherExtended = shaderImageGatherExtended_;
4513 return *this;
4514 }
4515
4516 PhysicalDeviceFeatures& setShaderStorageImageExtendedFormats( Bool32 shaderStorageImageExtendedFormats_ )
4517 {
4518 shaderStorageImageExtendedFormats = shaderStorageImageExtendedFormats_;
4519 return *this;
4520 }
4521
4522 PhysicalDeviceFeatures& setShaderStorageImageMultisample( Bool32 shaderStorageImageMultisample_ )
4523 {
4524 shaderStorageImageMultisample = shaderStorageImageMultisample_;
4525 return *this;
4526 }
4527
4528 PhysicalDeviceFeatures& setShaderStorageImageReadWithoutFormat( Bool32 shaderStorageImageReadWithoutFormat_ )
4529 {
4530 shaderStorageImageReadWithoutFormat = shaderStorageImageReadWithoutFormat_;
4531 return *this;
4532 }
4533
4534 PhysicalDeviceFeatures& setShaderStorageImageWriteWithoutFormat( Bool32 shaderStorageImageWriteWithoutFormat_ )
4535 {
4536 shaderStorageImageWriteWithoutFormat = shaderStorageImageWriteWithoutFormat_;
4537 return *this;
4538 }
4539
4540 PhysicalDeviceFeatures& setShaderUniformBufferArrayDynamicIndexing( Bool32 shaderUniformBufferArrayDynamicIndexing_ )
4541 {
4542 shaderUniformBufferArrayDynamicIndexing = shaderUniformBufferArrayDynamicIndexing_;
4543 return *this;
4544 }
4545
4546 PhysicalDeviceFeatures& setShaderSampledImageArrayDynamicIndexing( Bool32 shaderSampledImageArrayDynamicIndexing_ )
4547 {
4548 shaderSampledImageArrayDynamicIndexing = shaderSampledImageArrayDynamicIndexing_;
4549 return *this;
4550 }
4551
4552 PhysicalDeviceFeatures& setShaderStorageBufferArrayDynamicIndexing( Bool32 shaderStorageBufferArrayDynamicIndexing_ )
4553 {
4554 shaderStorageBufferArrayDynamicIndexing = shaderStorageBufferArrayDynamicIndexing_;
4555 return *this;
4556 }
4557
4558 PhysicalDeviceFeatures& setShaderStorageImageArrayDynamicIndexing( Bool32 shaderStorageImageArrayDynamicIndexing_ )
4559 {
4560 shaderStorageImageArrayDynamicIndexing = shaderStorageImageArrayDynamicIndexing_;
4561 return *this;
4562 }
4563
4564 PhysicalDeviceFeatures& setShaderClipDistance( Bool32 shaderClipDistance_ )
4565 {
4566 shaderClipDistance = shaderClipDistance_;
4567 return *this;
4568 }
4569
4570 PhysicalDeviceFeatures& setShaderCullDistance( Bool32 shaderCullDistance_ )
4571 {
4572 shaderCullDistance = shaderCullDistance_;
4573 return *this;
4574 }
4575
4576 PhysicalDeviceFeatures& setShaderFloat64( Bool32 shaderFloat64_ )
4577 {
4578 shaderFloat64 = shaderFloat64_;
4579 return *this;
4580 }
4581
4582 PhysicalDeviceFeatures& setShaderInt64( Bool32 shaderInt64_ )
4583 {
4584 shaderInt64 = shaderInt64_;
4585 return *this;
4586 }
4587
4588 PhysicalDeviceFeatures& setShaderInt16( Bool32 shaderInt16_ )
4589 {
4590 shaderInt16 = shaderInt16_;
4591 return *this;
4592 }
4593
4594 PhysicalDeviceFeatures& setShaderResourceResidency( Bool32 shaderResourceResidency_ )
4595 {
4596 shaderResourceResidency = shaderResourceResidency_;
4597 return *this;
4598 }
4599
4600 PhysicalDeviceFeatures& setShaderResourceMinLod( Bool32 shaderResourceMinLod_ )
4601 {
4602 shaderResourceMinLod = shaderResourceMinLod_;
4603 return *this;
4604 }
4605
4606 PhysicalDeviceFeatures& setSparseBinding( Bool32 sparseBinding_ )
4607 {
4608 sparseBinding = sparseBinding_;
4609 return *this;
4610 }
4611
4612 PhysicalDeviceFeatures& setSparseResidencyBuffer( Bool32 sparseResidencyBuffer_ )
4613 {
4614 sparseResidencyBuffer = sparseResidencyBuffer_;
4615 return *this;
4616 }
4617
4618 PhysicalDeviceFeatures& setSparseResidencyImage2D( Bool32 sparseResidencyImage2D_ )
4619 {
4620 sparseResidencyImage2D = sparseResidencyImage2D_;
4621 return *this;
4622 }
4623
4624 PhysicalDeviceFeatures& setSparseResidencyImage3D( Bool32 sparseResidencyImage3D_ )
4625 {
4626 sparseResidencyImage3D = sparseResidencyImage3D_;
4627 return *this;
4628 }
4629
4630 PhysicalDeviceFeatures& setSparseResidency2Samples( Bool32 sparseResidency2Samples_ )
4631 {
4632 sparseResidency2Samples = sparseResidency2Samples_;
4633 return *this;
4634 }
4635
4636 PhysicalDeviceFeatures& setSparseResidency4Samples( Bool32 sparseResidency4Samples_ )
4637 {
4638 sparseResidency4Samples = sparseResidency4Samples_;
4639 return *this;
4640 }
4641
4642 PhysicalDeviceFeatures& setSparseResidency8Samples( Bool32 sparseResidency8Samples_ )
4643 {
4644 sparseResidency8Samples = sparseResidency8Samples_;
4645 return *this;
4646 }
4647
4648 PhysicalDeviceFeatures& setSparseResidency16Samples( Bool32 sparseResidency16Samples_ )
4649 {
4650 sparseResidency16Samples = sparseResidency16Samples_;
4651 return *this;
4652 }
4653
4654 PhysicalDeviceFeatures& setSparseResidencyAliased( Bool32 sparseResidencyAliased_ )
4655 {
4656 sparseResidencyAliased = sparseResidencyAliased_;
4657 return *this;
4658 }
4659
4660 PhysicalDeviceFeatures& setVariableMultisampleRate( Bool32 variableMultisampleRate_ )
4661 {
4662 variableMultisampleRate = variableMultisampleRate_;
4663 return *this;
4664 }
4665
4666 PhysicalDeviceFeatures& setInheritedQueries( Bool32 inheritedQueries_ )
4667 {
4668 inheritedQueries = inheritedQueries_;
4669 return *this;
4670 }
4671
4672 operator const VkPhysicalDeviceFeatures&() const
4673 {
4674 return *reinterpret_cast<const VkPhysicalDeviceFeatures*>(this);
4675 }
4676
4677 bool operator==( PhysicalDeviceFeatures const& rhs ) const
4678 {
4679 return ( robustBufferAccess == rhs.robustBufferAccess )
4680 && ( fullDrawIndexUint32 == rhs.fullDrawIndexUint32 )
4681 && ( imageCubeArray == rhs.imageCubeArray )
4682 && ( independentBlend == rhs.independentBlend )
4683 && ( geometryShader == rhs.geometryShader )
4684 && ( tessellationShader == rhs.tessellationShader )
4685 && ( sampleRateShading == rhs.sampleRateShading )
4686 && ( dualSrcBlend == rhs.dualSrcBlend )
4687 && ( logicOp == rhs.logicOp )
4688 && ( multiDrawIndirect == rhs.multiDrawIndirect )
4689 && ( drawIndirectFirstInstance == rhs.drawIndirectFirstInstance )
4690 && ( depthClamp == rhs.depthClamp )
4691 && ( depthBiasClamp == rhs.depthBiasClamp )
4692 && ( fillModeNonSolid == rhs.fillModeNonSolid )
4693 && ( depthBounds == rhs.depthBounds )
4694 && ( wideLines == rhs.wideLines )
4695 && ( largePoints == rhs.largePoints )
4696 && ( alphaToOne == rhs.alphaToOne )
4697 && ( multiViewport == rhs.multiViewport )
4698 && ( samplerAnisotropy == rhs.samplerAnisotropy )
4699 && ( textureCompressionETC2 == rhs.textureCompressionETC2 )
4700 && ( textureCompressionASTC_LDR == rhs.textureCompressionASTC_LDR )
4701 && ( textureCompressionBC == rhs.textureCompressionBC )
4702 && ( occlusionQueryPrecise == rhs.occlusionQueryPrecise )
4703 && ( pipelineStatisticsQuery == rhs.pipelineStatisticsQuery )
4704 && ( vertexPipelineStoresAndAtomics == rhs.vertexPipelineStoresAndAtomics )
4705 && ( fragmentStoresAndAtomics == rhs.fragmentStoresAndAtomics )
4706 && ( shaderTessellationAndGeometryPointSize == rhs.shaderTessellationAndGeometryPointSize )
4707 && ( shaderImageGatherExtended == rhs.shaderImageGatherExtended )
4708 && ( shaderStorageImageExtendedFormats == rhs.shaderStorageImageExtendedFormats )
4709 && ( shaderStorageImageMultisample == rhs.shaderStorageImageMultisample )
4710 && ( shaderStorageImageReadWithoutFormat == rhs.shaderStorageImageReadWithoutFormat )
4711 && ( shaderStorageImageWriteWithoutFormat == rhs.shaderStorageImageWriteWithoutFormat )
4712 && ( shaderUniformBufferArrayDynamicIndexing == rhs.shaderUniformBufferArrayDynamicIndexing )
4713 && ( shaderSampledImageArrayDynamicIndexing == rhs.shaderSampledImageArrayDynamicIndexing )
4714 && ( shaderStorageBufferArrayDynamicIndexing == rhs.shaderStorageBufferArrayDynamicIndexing )
4715 && ( shaderStorageImageArrayDynamicIndexing == rhs.shaderStorageImageArrayDynamicIndexing )
4716 && ( shaderClipDistance == rhs.shaderClipDistance )
4717 && ( shaderCullDistance == rhs.shaderCullDistance )
4718 && ( shaderFloat64 == rhs.shaderFloat64 )
4719 && ( shaderInt64 == rhs.shaderInt64 )
4720 && ( shaderInt16 == rhs.shaderInt16 )
4721 && ( shaderResourceResidency == rhs.shaderResourceResidency )
4722 && ( shaderResourceMinLod == rhs.shaderResourceMinLod )
4723 && ( sparseBinding == rhs.sparseBinding )
4724 && ( sparseResidencyBuffer == rhs.sparseResidencyBuffer )
4725 && ( sparseResidencyImage2D == rhs.sparseResidencyImage2D )
4726 && ( sparseResidencyImage3D == rhs.sparseResidencyImage3D )
4727 && ( sparseResidency2Samples == rhs.sparseResidency2Samples )
4728 && ( sparseResidency4Samples == rhs.sparseResidency4Samples )
4729 && ( sparseResidency8Samples == rhs.sparseResidency8Samples )
4730 && ( sparseResidency16Samples == rhs.sparseResidency16Samples )
4731 && ( sparseResidencyAliased == rhs.sparseResidencyAliased )
4732 && ( variableMultisampleRate == rhs.variableMultisampleRate )
4733 && ( inheritedQueries == rhs.inheritedQueries );
4734 }
4735
4736 bool operator!=( PhysicalDeviceFeatures const& rhs ) const
4737 {
4738 return !operator==( rhs );
4739 }
4740
4741 Bool32 robustBufferAccess;
4742 Bool32 fullDrawIndexUint32;
4743 Bool32 imageCubeArray;
4744 Bool32 independentBlend;
4745 Bool32 geometryShader;
4746 Bool32 tessellationShader;
4747 Bool32 sampleRateShading;
4748 Bool32 dualSrcBlend;
4749 Bool32 logicOp;
4750 Bool32 multiDrawIndirect;
4751 Bool32 drawIndirectFirstInstance;
4752 Bool32 depthClamp;
4753 Bool32 depthBiasClamp;
4754 Bool32 fillModeNonSolid;
4755 Bool32 depthBounds;
4756 Bool32 wideLines;
4757 Bool32 largePoints;
4758 Bool32 alphaToOne;
4759 Bool32 multiViewport;
4760 Bool32 samplerAnisotropy;
4761 Bool32 textureCompressionETC2;
4762 Bool32 textureCompressionASTC_LDR;
4763 Bool32 textureCompressionBC;
4764 Bool32 occlusionQueryPrecise;
4765 Bool32 pipelineStatisticsQuery;
4766 Bool32 vertexPipelineStoresAndAtomics;
4767 Bool32 fragmentStoresAndAtomics;
4768 Bool32 shaderTessellationAndGeometryPointSize;
4769 Bool32 shaderImageGatherExtended;
4770 Bool32 shaderStorageImageExtendedFormats;
4771 Bool32 shaderStorageImageMultisample;
4772 Bool32 shaderStorageImageReadWithoutFormat;
4773 Bool32 shaderStorageImageWriteWithoutFormat;
4774 Bool32 shaderUniformBufferArrayDynamicIndexing;
4775 Bool32 shaderSampledImageArrayDynamicIndexing;
4776 Bool32 shaderStorageBufferArrayDynamicIndexing;
4777 Bool32 shaderStorageImageArrayDynamicIndexing;
4778 Bool32 shaderClipDistance;
4779 Bool32 shaderCullDistance;
4780 Bool32 shaderFloat64;
4781 Bool32 shaderInt64;
4782 Bool32 shaderInt16;
4783 Bool32 shaderResourceResidency;
4784 Bool32 shaderResourceMinLod;
4785 Bool32 sparseBinding;
4786 Bool32 sparseResidencyBuffer;
4787 Bool32 sparseResidencyImage2D;
4788 Bool32 sparseResidencyImage3D;
4789 Bool32 sparseResidency2Samples;
4790 Bool32 sparseResidency4Samples;
4791 Bool32 sparseResidency8Samples;
4792 Bool32 sparseResidency16Samples;
4793 Bool32 sparseResidencyAliased;
4794 Bool32 variableMultisampleRate;
4795 Bool32 inheritedQueries;
4796 };
4797 static_assert( sizeof( PhysicalDeviceFeatures ) == sizeof( VkPhysicalDeviceFeatures ), "struct and wrapper have different size!" );
4798
4799 struct PhysicalDeviceSparseProperties
4800 {
4801 operator const VkPhysicalDeviceSparseProperties&() const
4802 {
4803 return *reinterpret_cast<const VkPhysicalDeviceSparseProperties*>(this);
4804 }
4805
4806 bool operator==( PhysicalDeviceSparseProperties const& rhs ) const
4807 {
4808 return ( residencyStandard2DBlockShape == rhs.residencyStandard2DBlockShape )
4809 && ( residencyStandard2DMultisampleBlockShape == rhs.residencyStandard2DMultisampleBlockShape )
4810 && ( residencyStandard3DBlockShape == rhs.residencyStandard3DBlockShape )
4811 && ( residencyAlignedMipSize == rhs.residencyAlignedMipSize )
4812 && ( residencyNonResidentStrict == rhs.residencyNonResidentStrict );
4813 }
4814
4815 bool operator!=( PhysicalDeviceSparseProperties const& rhs ) const
4816 {
4817 return !operator==( rhs );
4818 }
4819
4820 Bool32 residencyStandard2DBlockShape;
4821 Bool32 residencyStandard2DMultisampleBlockShape;
4822 Bool32 residencyStandard3DBlockShape;
4823 Bool32 residencyAlignedMipSize;
4824 Bool32 residencyNonResidentStrict;
4825 };
4826 static_assert( sizeof( PhysicalDeviceSparseProperties ) == sizeof( VkPhysicalDeviceSparseProperties ), "struct and wrapper have different size!" );
4827
4828 struct DrawIndirectCommand
4829 {
4830 DrawIndirectCommand( uint32_t vertexCount_ = 0, uint32_t instanceCount_ = 0, uint32_t firstVertex_ = 0, uint32_t firstInstance_ = 0 )
4831 : vertexCount( vertexCount_ )
4832 , instanceCount( instanceCount_ )
4833 , firstVertex( firstVertex_ )
4834 , firstInstance( firstInstance_ )
4835 {
4836 }
4837
4838 DrawIndirectCommand( VkDrawIndirectCommand const & rhs )
4839 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004840 memcpy( this, &rhs, sizeof( DrawIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004841 }
4842
4843 DrawIndirectCommand& operator=( VkDrawIndirectCommand const & rhs )
4844 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004845 memcpy( this, &rhs, sizeof( DrawIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004846 return *this;
4847 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004848 DrawIndirectCommand& setVertexCount( uint32_t vertexCount_ )
4849 {
4850 vertexCount = vertexCount_;
4851 return *this;
4852 }
4853
4854 DrawIndirectCommand& setInstanceCount( uint32_t instanceCount_ )
4855 {
4856 instanceCount = instanceCount_;
4857 return *this;
4858 }
4859
4860 DrawIndirectCommand& setFirstVertex( uint32_t firstVertex_ )
4861 {
4862 firstVertex = firstVertex_;
4863 return *this;
4864 }
4865
4866 DrawIndirectCommand& setFirstInstance( uint32_t firstInstance_ )
4867 {
4868 firstInstance = firstInstance_;
4869 return *this;
4870 }
4871
4872 operator const VkDrawIndirectCommand&() const
4873 {
4874 return *reinterpret_cast<const VkDrawIndirectCommand*>(this);
4875 }
4876
4877 bool operator==( DrawIndirectCommand const& rhs ) const
4878 {
4879 return ( vertexCount == rhs.vertexCount )
4880 && ( instanceCount == rhs.instanceCount )
4881 && ( firstVertex == rhs.firstVertex )
4882 && ( firstInstance == rhs.firstInstance );
4883 }
4884
4885 bool operator!=( DrawIndirectCommand const& rhs ) const
4886 {
4887 return !operator==( rhs );
4888 }
4889
4890 uint32_t vertexCount;
4891 uint32_t instanceCount;
4892 uint32_t firstVertex;
4893 uint32_t firstInstance;
4894 };
4895 static_assert( sizeof( DrawIndirectCommand ) == sizeof( VkDrawIndirectCommand ), "struct and wrapper have different size!" );
4896
4897 struct DrawIndexedIndirectCommand
4898 {
4899 DrawIndexedIndirectCommand( uint32_t indexCount_ = 0, uint32_t instanceCount_ = 0, uint32_t firstIndex_ = 0, int32_t vertexOffset_ = 0, uint32_t firstInstance_ = 0 )
4900 : indexCount( indexCount_ )
4901 , instanceCount( instanceCount_ )
4902 , firstIndex( firstIndex_ )
4903 , vertexOffset( vertexOffset_ )
4904 , firstInstance( firstInstance_ )
4905 {
4906 }
4907
4908 DrawIndexedIndirectCommand( VkDrawIndexedIndirectCommand const & rhs )
4909 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004910 memcpy( this, &rhs, sizeof( DrawIndexedIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004911 }
4912
4913 DrawIndexedIndirectCommand& operator=( VkDrawIndexedIndirectCommand const & rhs )
4914 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004915 memcpy( this, &rhs, sizeof( DrawIndexedIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004916 return *this;
4917 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004918 DrawIndexedIndirectCommand& setIndexCount( uint32_t indexCount_ )
4919 {
4920 indexCount = indexCount_;
4921 return *this;
4922 }
4923
4924 DrawIndexedIndirectCommand& setInstanceCount( uint32_t instanceCount_ )
4925 {
4926 instanceCount = instanceCount_;
4927 return *this;
4928 }
4929
4930 DrawIndexedIndirectCommand& setFirstIndex( uint32_t firstIndex_ )
4931 {
4932 firstIndex = firstIndex_;
4933 return *this;
4934 }
4935
4936 DrawIndexedIndirectCommand& setVertexOffset( int32_t vertexOffset_ )
4937 {
4938 vertexOffset = vertexOffset_;
4939 return *this;
4940 }
4941
4942 DrawIndexedIndirectCommand& setFirstInstance( uint32_t firstInstance_ )
4943 {
4944 firstInstance = firstInstance_;
4945 return *this;
4946 }
4947
4948 operator const VkDrawIndexedIndirectCommand&() const
4949 {
4950 return *reinterpret_cast<const VkDrawIndexedIndirectCommand*>(this);
4951 }
4952
4953 bool operator==( DrawIndexedIndirectCommand const& rhs ) const
4954 {
4955 return ( indexCount == rhs.indexCount )
4956 && ( instanceCount == rhs.instanceCount )
4957 && ( firstIndex == rhs.firstIndex )
4958 && ( vertexOffset == rhs.vertexOffset )
4959 && ( firstInstance == rhs.firstInstance );
4960 }
4961
4962 bool operator!=( DrawIndexedIndirectCommand const& rhs ) const
4963 {
4964 return !operator==( rhs );
4965 }
4966
4967 uint32_t indexCount;
4968 uint32_t instanceCount;
4969 uint32_t firstIndex;
4970 int32_t vertexOffset;
4971 uint32_t firstInstance;
4972 };
4973 static_assert( sizeof( DrawIndexedIndirectCommand ) == sizeof( VkDrawIndexedIndirectCommand ), "struct and wrapper have different size!" );
4974
4975 struct DispatchIndirectCommand
4976 {
4977 DispatchIndirectCommand( uint32_t x_ = 0, uint32_t y_ = 0, uint32_t z_ = 0 )
4978 : x( x_ )
4979 , y( y_ )
4980 , z( z_ )
4981 {
4982 }
4983
4984 DispatchIndirectCommand( VkDispatchIndirectCommand const & rhs )
4985 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004986 memcpy( this, &rhs, sizeof( DispatchIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004987 }
4988
4989 DispatchIndirectCommand& operator=( VkDispatchIndirectCommand const & rhs )
4990 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004991 memcpy( this, &rhs, sizeof( DispatchIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004992 return *this;
4993 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004994 DispatchIndirectCommand& setX( uint32_t x_ )
4995 {
4996 x = x_;
4997 return *this;
4998 }
4999
5000 DispatchIndirectCommand& setY( uint32_t y_ )
5001 {
5002 y = y_;
5003 return *this;
5004 }
5005
5006 DispatchIndirectCommand& setZ( uint32_t z_ )
5007 {
5008 z = z_;
5009 return *this;
5010 }
5011
5012 operator const VkDispatchIndirectCommand&() const
5013 {
5014 return *reinterpret_cast<const VkDispatchIndirectCommand*>(this);
5015 }
5016
5017 bool operator==( DispatchIndirectCommand const& rhs ) const
5018 {
5019 return ( x == rhs.x )
5020 && ( y == rhs.y )
5021 && ( z == rhs.z );
5022 }
5023
5024 bool operator!=( DispatchIndirectCommand const& rhs ) const
5025 {
5026 return !operator==( rhs );
5027 }
5028
5029 uint32_t x;
5030 uint32_t y;
5031 uint32_t z;
5032 };
5033 static_assert( sizeof( DispatchIndirectCommand ) == sizeof( VkDispatchIndirectCommand ), "struct and wrapper have different size!" );
5034
5035 struct DisplayPlanePropertiesKHR
5036 {
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005037 operator const VkDisplayPlanePropertiesKHR&() const
5038 {
5039 return *reinterpret_cast<const VkDisplayPlanePropertiesKHR*>(this);
5040 }
5041
5042 bool operator==( DisplayPlanePropertiesKHR const& rhs ) const
5043 {
5044 return ( currentDisplay == rhs.currentDisplay )
5045 && ( currentStackIndex == rhs.currentStackIndex );
5046 }
5047
5048 bool operator!=( DisplayPlanePropertiesKHR const& rhs ) const
5049 {
5050 return !operator==( rhs );
5051 }
5052
5053 DisplayKHR currentDisplay;
5054 uint32_t currentStackIndex;
5055 };
5056 static_assert( sizeof( DisplayPlanePropertiesKHR ) == sizeof( VkDisplayPlanePropertiesKHR ), "struct and wrapper have different size!" );
5057
5058 struct DisplayModeParametersKHR
5059 {
5060 DisplayModeParametersKHR( Extent2D visibleRegion_ = Extent2D(), uint32_t refreshRate_ = 0 )
5061 : visibleRegion( visibleRegion_ )
5062 , refreshRate( refreshRate_ )
5063 {
5064 }
5065
5066 DisplayModeParametersKHR( VkDisplayModeParametersKHR const & rhs )
5067 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005068 memcpy( this, &rhs, sizeof( DisplayModeParametersKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005069 }
5070
5071 DisplayModeParametersKHR& operator=( VkDisplayModeParametersKHR const & rhs )
5072 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005073 memcpy( this, &rhs, sizeof( DisplayModeParametersKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005074 return *this;
5075 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005076 DisplayModeParametersKHR& setVisibleRegion( Extent2D visibleRegion_ )
5077 {
5078 visibleRegion = visibleRegion_;
5079 return *this;
5080 }
5081
5082 DisplayModeParametersKHR& setRefreshRate( uint32_t refreshRate_ )
5083 {
5084 refreshRate = refreshRate_;
5085 return *this;
5086 }
5087
5088 operator const VkDisplayModeParametersKHR&() const
5089 {
5090 return *reinterpret_cast<const VkDisplayModeParametersKHR*>(this);
5091 }
5092
5093 bool operator==( DisplayModeParametersKHR const& rhs ) const
5094 {
5095 return ( visibleRegion == rhs.visibleRegion )
5096 && ( refreshRate == rhs.refreshRate );
5097 }
5098
5099 bool operator!=( DisplayModeParametersKHR const& rhs ) const
5100 {
5101 return !operator==( rhs );
5102 }
5103
5104 Extent2D visibleRegion;
5105 uint32_t refreshRate;
5106 };
5107 static_assert( sizeof( DisplayModeParametersKHR ) == sizeof( VkDisplayModeParametersKHR ), "struct and wrapper have different size!" );
5108
5109 struct DisplayModePropertiesKHR
5110 {
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005111 operator const VkDisplayModePropertiesKHR&() const
5112 {
5113 return *reinterpret_cast<const VkDisplayModePropertiesKHR*>(this);
5114 }
5115
5116 bool operator==( DisplayModePropertiesKHR const& rhs ) const
5117 {
5118 return ( displayMode == rhs.displayMode )
5119 && ( parameters == rhs.parameters );
5120 }
5121
5122 bool operator!=( DisplayModePropertiesKHR const& rhs ) const
5123 {
5124 return !operator==( rhs );
5125 }
5126
5127 DisplayModeKHR displayMode;
5128 DisplayModeParametersKHR parameters;
5129 };
5130 static_assert( sizeof( DisplayModePropertiesKHR ) == sizeof( VkDisplayModePropertiesKHR ), "struct and wrapper have different size!" );
5131
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005132 struct RectLayerKHR
5133 {
5134 RectLayerKHR( Offset2D offset_ = Offset2D(), Extent2D extent_ = Extent2D(), uint32_t layer_ = 0 )
5135 : offset( offset_ )
5136 , extent( extent_ )
5137 , layer( layer_ )
5138 {
5139 }
5140
5141 RectLayerKHR( VkRectLayerKHR const & rhs )
5142 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005143 memcpy( this, &rhs, sizeof( RectLayerKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005144 }
5145
5146 RectLayerKHR& operator=( VkRectLayerKHR const & rhs )
5147 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005148 memcpy( this, &rhs, sizeof( RectLayerKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005149 return *this;
5150 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005151 RectLayerKHR& setOffset( Offset2D offset_ )
5152 {
5153 offset = offset_;
5154 return *this;
5155 }
5156
5157 RectLayerKHR& setExtent( Extent2D extent_ )
5158 {
5159 extent = extent_;
5160 return *this;
5161 }
5162
5163 RectLayerKHR& setLayer( uint32_t layer_ )
5164 {
5165 layer = layer_;
5166 return *this;
5167 }
5168
5169 operator const VkRectLayerKHR&() const
5170 {
5171 return *reinterpret_cast<const VkRectLayerKHR*>(this);
5172 }
5173
5174 bool operator==( RectLayerKHR const& rhs ) const
5175 {
5176 return ( offset == rhs.offset )
5177 && ( extent == rhs.extent )
5178 && ( layer == rhs.layer );
5179 }
5180
5181 bool operator!=( RectLayerKHR const& rhs ) const
5182 {
5183 return !operator==( rhs );
5184 }
5185
5186 Offset2D offset;
5187 Extent2D extent;
5188 uint32_t layer;
5189 };
5190 static_assert( sizeof( RectLayerKHR ) == sizeof( VkRectLayerKHR ), "struct and wrapper have different size!" );
5191
5192 struct PresentRegionKHR
5193 {
5194 PresentRegionKHR( uint32_t rectangleCount_ = 0, const RectLayerKHR* pRectangles_ = nullptr )
5195 : rectangleCount( rectangleCount_ )
5196 , pRectangles( pRectangles_ )
5197 {
5198 }
5199
5200 PresentRegionKHR( VkPresentRegionKHR const & rhs )
5201 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005202 memcpy( this, &rhs, sizeof( PresentRegionKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005203 }
5204
5205 PresentRegionKHR& operator=( VkPresentRegionKHR const & rhs )
5206 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005207 memcpy( this, &rhs, sizeof( PresentRegionKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005208 return *this;
5209 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005210 PresentRegionKHR& setRectangleCount( uint32_t rectangleCount_ )
5211 {
5212 rectangleCount = rectangleCount_;
5213 return *this;
5214 }
5215
5216 PresentRegionKHR& setPRectangles( const RectLayerKHR* pRectangles_ )
5217 {
5218 pRectangles = pRectangles_;
5219 return *this;
5220 }
5221
5222 operator const VkPresentRegionKHR&() const
5223 {
5224 return *reinterpret_cast<const VkPresentRegionKHR*>(this);
5225 }
5226
5227 bool operator==( PresentRegionKHR const& rhs ) const
5228 {
5229 return ( rectangleCount == rhs.rectangleCount )
5230 && ( pRectangles == rhs.pRectangles );
5231 }
5232
5233 bool operator!=( PresentRegionKHR const& rhs ) const
5234 {
5235 return !operator==( rhs );
5236 }
5237
5238 uint32_t rectangleCount;
5239 const RectLayerKHR* pRectangles;
5240 };
5241 static_assert( sizeof( PresentRegionKHR ) == sizeof( VkPresentRegionKHR ), "struct and wrapper have different size!" );
5242
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005243 struct XYColorEXT
5244 {
5245 XYColorEXT( float x_ = 0, float y_ = 0 )
5246 : x( x_ )
5247 , y( y_ )
5248 {
5249 }
5250
5251 XYColorEXT( VkXYColorEXT const & rhs )
5252 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005253 memcpy( this, &rhs, sizeof( XYColorEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005254 }
5255
5256 XYColorEXT& operator=( VkXYColorEXT const & rhs )
5257 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005258 memcpy( this, &rhs, sizeof( XYColorEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005259 return *this;
5260 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005261 XYColorEXT& setX( float x_ )
5262 {
5263 x = x_;
5264 return *this;
5265 }
5266
5267 XYColorEXT& setY( float y_ )
5268 {
5269 y = y_;
5270 return *this;
5271 }
5272
5273 operator const VkXYColorEXT&() const
5274 {
5275 return *reinterpret_cast<const VkXYColorEXT*>(this);
5276 }
5277
5278 bool operator==( XYColorEXT const& rhs ) const
5279 {
5280 return ( x == rhs.x )
5281 && ( y == rhs.y );
5282 }
5283
5284 bool operator!=( XYColorEXT const& rhs ) const
5285 {
5286 return !operator==( rhs );
5287 }
5288
5289 float x;
5290 float y;
5291 };
5292 static_assert( sizeof( XYColorEXT ) == sizeof( VkXYColorEXT ), "struct and wrapper have different size!" );
5293
5294 struct RefreshCycleDurationGOOGLE
5295 {
5296 RefreshCycleDurationGOOGLE( uint64_t refreshDuration_ = 0 )
5297 : refreshDuration( refreshDuration_ )
5298 {
5299 }
5300
5301 RefreshCycleDurationGOOGLE( VkRefreshCycleDurationGOOGLE const & rhs )
5302 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005303 memcpy( this, &rhs, sizeof( RefreshCycleDurationGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005304 }
5305
5306 RefreshCycleDurationGOOGLE& operator=( VkRefreshCycleDurationGOOGLE const & rhs )
5307 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005308 memcpy( this, &rhs, sizeof( RefreshCycleDurationGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005309 return *this;
5310 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005311 RefreshCycleDurationGOOGLE& setRefreshDuration( uint64_t refreshDuration_ )
5312 {
5313 refreshDuration = refreshDuration_;
5314 return *this;
5315 }
5316
5317 operator const VkRefreshCycleDurationGOOGLE&() const
5318 {
5319 return *reinterpret_cast<const VkRefreshCycleDurationGOOGLE*>(this);
5320 }
5321
5322 bool operator==( RefreshCycleDurationGOOGLE const& rhs ) const
5323 {
5324 return ( refreshDuration == rhs.refreshDuration );
5325 }
5326
5327 bool operator!=( RefreshCycleDurationGOOGLE const& rhs ) const
5328 {
5329 return !operator==( rhs );
5330 }
5331
5332 uint64_t refreshDuration;
5333 };
5334 static_assert( sizeof( RefreshCycleDurationGOOGLE ) == sizeof( VkRefreshCycleDurationGOOGLE ), "struct and wrapper have different size!" );
5335
5336 struct PastPresentationTimingGOOGLE
5337 {
5338 PastPresentationTimingGOOGLE( uint32_t presentID_ = 0, uint64_t desiredPresentTime_ = 0, uint64_t actualPresentTime_ = 0, uint64_t earliestPresentTime_ = 0, uint64_t presentMargin_ = 0 )
5339 : presentID( presentID_ )
5340 , desiredPresentTime( desiredPresentTime_ )
5341 , actualPresentTime( actualPresentTime_ )
5342 , earliestPresentTime( earliestPresentTime_ )
5343 , presentMargin( presentMargin_ )
5344 {
5345 }
5346
5347 PastPresentationTimingGOOGLE( VkPastPresentationTimingGOOGLE const & rhs )
5348 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005349 memcpy( this, &rhs, sizeof( PastPresentationTimingGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005350 }
5351
5352 PastPresentationTimingGOOGLE& operator=( VkPastPresentationTimingGOOGLE const & rhs )
5353 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005354 memcpy( this, &rhs, sizeof( PastPresentationTimingGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005355 return *this;
5356 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005357 PastPresentationTimingGOOGLE& setPresentID( uint32_t presentID_ )
5358 {
5359 presentID = presentID_;
5360 return *this;
5361 }
5362
5363 PastPresentationTimingGOOGLE& setDesiredPresentTime( uint64_t desiredPresentTime_ )
5364 {
5365 desiredPresentTime = desiredPresentTime_;
5366 return *this;
5367 }
5368
5369 PastPresentationTimingGOOGLE& setActualPresentTime( uint64_t actualPresentTime_ )
5370 {
5371 actualPresentTime = actualPresentTime_;
5372 return *this;
5373 }
5374
5375 PastPresentationTimingGOOGLE& setEarliestPresentTime( uint64_t earliestPresentTime_ )
5376 {
5377 earliestPresentTime = earliestPresentTime_;
5378 return *this;
5379 }
5380
5381 PastPresentationTimingGOOGLE& setPresentMargin( uint64_t presentMargin_ )
5382 {
5383 presentMargin = presentMargin_;
5384 return *this;
5385 }
5386
5387 operator const VkPastPresentationTimingGOOGLE&() const
5388 {
5389 return *reinterpret_cast<const VkPastPresentationTimingGOOGLE*>(this);
5390 }
5391
5392 bool operator==( PastPresentationTimingGOOGLE const& rhs ) const
5393 {
5394 return ( presentID == rhs.presentID )
5395 && ( desiredPresentTime == rhs.desiredPresentTime )
5396 && ( actualPresentTime == rhs.actualPresentTime )
5397 && ( earliestPresentTime == rhs.earliestPresentTime )
5398 && ( presentMargin == rhs.presentMargin );
5399 }
5400
5401 bool operator!=( PastPresentationTimingGOOGLE const& rhs ) const
5402 {
5403 return !operator==( rhs );
5404 }
5405
5406 uint32_t presentID;
5407 uint64_t desiredPresentTime;
5408 uint64_t actualPresentTime;
5409 uint64_t earliestPresentTime;
5410 uint64_t presentMargin;
5411 };
5412 static_assert( sizeof( PastPresentationTimingGOOGLE ) == sizeof( VkPastPresentationTimingGOOGLE ), "struct and wrapper have different size!" );
5413
5414 struct PresentTimeGOOGLE
5415 {
5416 PresentTimeGOOGLE( uint32_t presentID_ = 0, uint64_t desiredPresentTime_ = 0 )
5417 : presentID( presentID_ )
5418 , desiredPresentTime( desiredPresentTime_ )
5419 {
5420 }
5421
5422 PresentTimeGOOGLE( VkPresentTimeGOOGLE const & rhs )
5423 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005424 memcpy( this, &rhs, sizeof( PresentTimeGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005425 }
5426
5427 PresentTimeGOOGLE& operator=( VkPresentTimeGOOGLE const & rhs )
5428 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005429 memcpy( this, &rhs, sizeof( PresentTimeGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005430 return *this;
5431 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005432 PresentTimeGOOGLE& setPresentID( uint32_t presentID_ )
5433 {
5434 presentID = presentID_;
5435 return *this;
5436 }
5437
5438 PresentTimeGOOGLE& setDesiredPresentTime( uint64_t desiredPresentTime_ )
5439 {
5440 desiredPresentTime = desiredPresentTime_;
5441 return *this;
5442 }
5443
5444 operator const VkPresentTimeGOOGLE&() const
5445 {
5446 return *reinterpret_cast<const VkPresentTimeGOOGLE*>(this);
5447 }
5448
5449 bool operator==( PresentTimeGOOGLE const& rhs ) const
5450 {
5451 return ( presentID == rhs.presentID )
5452 && ( desiredPresentTime == rhs.desiredPresentTime );
5453 }
5454
5455 bool operator!=( PresentTimeGOOGLE const& rhs ) const
5456 {
5457 return !operator==( rhs );
5458 }
5459
5460 uint32_t presentID;
5461 uint64_t desiredPresentTime;
5462 };
5463 static_assert( sizeof( PresentTimeGOOGLE ) == sizeof( VkPresentTimeGOOGLE ), "struct and wrapper have different size!" );
5464
Mark Young0f183a82017-02-28 09:58:04 -07005465 struct ViewportWScalingNV
5466 {
5467 ViewportWScalingNV( float xcoeff_ = 0, float ycoeff_ = 0 )
5468 : xcoeff( xcoeff_ )
5469 , ycoeff( ycoeff_ )
5470 {
5471 }
5472
5473 ViewportWScalingNV( VkViewportWScalingNV const & rhs )
5474 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005475 memcpy( this, &rhs, sizeof( ViewportWScalingNV ) );
Mark Young0f183a82017-02-28 09:58:04 -07005476 }
5477
5478 ViewportWScalingNV& operator=( VkViewportWScalingNV const & rhs )
5479 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005480 memcpy( this, &rhs, sizeof( ViewportWScalingNV ) );
Mark Young0f183a82017-02-28 09:58:04 -07005481 return *this;
5482 }
Mark Young0f183a82017-02-28 09:58:04 -07005483 ViewportWScalingNV& setXcoeff( float xcoeff_ )
5484 {
5485 xcoeff = xcoeff_;
5486 return *this;
5487 }
5488
5489 ViewportWScalingNV& setYcoeff( float ycoeff_ )
5490 {
5491 ycoeff = ycoeff_;
5492 return *this;
5493 }
5494
5495 operator const VkViewportWScalingNV&() const
5496 {
5497 return *reinterpret_cast<const VkViewportWScalingNV*>(this);
5498 }
5499
5500 bool operator==( ViewportWScalingNV const& rhs ) const
5501 {
5502 return ( xcoeff == rhs.xcoeff )
5503 && ( ycoeff == rhs.ycoeff );
5504 }
5505
5506 bool operator!=( ViewportWScalingNV const& rhs ) const
5507 {
5508 return !operator==( rhs );
5509 }
5510
5511 float xcoeff;
5512 float ycoeff;
5513 };
5514 static_assert( sizeof( ViewportWScalingNV ) == sizeof( VkViewportWScalingNV ), "struct and wrapper have different size!" );
5515
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06005516 struct SampleLocationEXT
5517 {
5518 SampleLocationEXT( float x_ = 0, float y_ = 0 )
5519 : x( x_ )
5520 , y( y_ )
5521 {
5522 }
5523
5524 SampleLocationEXT( VkSampleLocationEXT const & rhs )
5525 {
5526 memcpy( this, &rhs, sizeof( SampleLocationEXT ) );
5527 }
5528
5529 SampleLocationEXT& operator=( VkSampleLocationEXT const & rhs )
5530 {
5531 memcpy( this, &rhs, sizeof( SampleLocationEXT ) );
5532 return *this;
5533 }
5534 SampleLocationEXT& setX( float x_ )
5535 {
5536 x = x_;
5537 return *this;
5538 }
5539
5540 SampleLocationEXT& setY( float y_ )
5541 {
5542 y = y_;
5543 return *this;
5544 }
5545
5546 operator const VkSampleLocationEXT&() const
5547 {
5548 return *reinterpret_cast<const VkSampleLocationEXT*>(this);
5549 }
5550
5551 bool operator==( SampleLocationEXT const& rhs ) const
5552 {
5553 return ( x == rhs.x )
5554 && ( y == rhs.y );
5555 }
5556
5557 bool operator!=( SampleLocationEXT const& rhs ) const
5558 {
5559 return !operator==( rhs );
5560 }
5561
5562 float x;
5563 float y;
5564 };
5565 static_assert( sizeof( SampleLocationEXT ) == sizeof( VkSampleLocationEXT ), "struct and wrapper have different size!" );
5566
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -06005567 struct ShaderResourceUsageAMD
5568 {
5569 operator const VkShaderResourceUsageAMD&() const
5570 {
5571 return *reinterpret_cast<const VkShaderResourceUsageAMD*>(this);
5572 }
5573
5574 bool operator==( ShaderResourceUsageAMD const& rhs ) const
5575 {
5576 return ( numUsedVgprs == rhs.numUsedVgprs )
5577 && ( numUsedSgprs == rhs.numUsedSgprs )
5578 && ( ldsSizePerLocalWorkGroup == rhs.ldsSizePerLocalWorkGroup )
5579 && ( ldsUsageSizeInBytes == rhs.ldsUsageSizeInBytes )
5580 && ( scratchMemUsageInBytes == rhs.scratchMemUsageInBytes );
5581 }
5582
5583 bool operator!=( ShaderResourceUsageAMD const& rhs ) const
5584 {
5585 return !operator==( rhs );
5586 }
5587
5588 uint32_t numUsedVgprs;
5589 uint32_t numUsedSgprs;
5590 uint32_t ldsSizePerLocalWorkGroup;
5591 size_t ldsUsageSizeInBytes;
5592 size_t scratchMemUsageInBytes;
5593 };
5594 static_assert( sizeof( ShaderResourceUsageAMD ) == sizeof( VkShaderResourceUsageAMD ), "struct and wrapper have different size!" );
5595
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005596 enum class ImageLayout
5597 {
5598 eUndefined = VK_IMAGE_LAYOUT_UNDEFINED,
5599 eGeneral = VK_IMAGE_LAYOUT_GENERAL,
5600 eColorAttachmentOptimal = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
5601 eDepthStencilAttachmentOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
5602 eDepthStencilReadOnlyOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,
5603 eShaderReadOnlyOptimal = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
5604 eTransferSrcOptimal = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
5605 eTransferDstOptimal = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
5606 ePreinitialized = VK_IMAGE_LAYOUT_PREINITIALIZED,
Mark Lobodzinski54385432017-05-15 10:27:52 -06005607 ePresentSrcKHR = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR,
Lenny Komowb79f04a2017-09-18 17:07:00 -06005608 eSharedPresentKHR = VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR,
5609 eDepthReadOnlyStencilAttachmentOptimalKHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR,
5610 eDepthAttachmentStencilReadOnlyOptimalKHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005611 };
5612
5613 struct DescriptorImageInfo
5614 {
5615 DescriptorImageInfo( Sampler sampler_ = Sampler(), ImageView imageView_ = ImageView(), ImageLayout imageLayout_ = ImageLayout::eUndefined )
5616 : sampler( sampler_ )
5617 , imageView( imageView_ )
5618 , imageLayout( imageLayout_ )
5619 {
5620 }
5621
5622 DescriptorImageInfo( VkDescriptorImageInfo const & rhs )
5623 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005624 memcpy( this, &rhs, sizeof( DescriptorImageInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005625 }
5626
5627 DescriptorImageInfo& operator=( VkDescriptorImageInfo const & rhs )
5628 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005629 memcpy( this, &rhs, sizeof( DescriptorImageInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005630 return *this;
5631 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005632 DescriptorImageInfo& setSampler( Sampler sampler_ )
5633 {
5634 sampler = sampler_;
5635 return *this;
5636 }
5637
5638 DescriptorImageInfo& setImageView( ImageView imageView_ )
5639 {
5640 imageView = imageView_;
5641 return *this;
5642 }
5643
5644 DescriptorImageInfo& setImageLayout( ImageLayout imageLayout_ )
5645 {
5646 imageLayout = imageLayout_;
5647 return *this;
5648 }
5649
5650 operator const VkDescriptorImageInfo&() const
5651 {
5652 return *reinterpret_cast<const VkDescriptorImageInfo*>(this);
5653 }
5654
5655 bool operator==( DescriptorImageInfo const& rhs ) const
5656 {
5657 return ( sampler == rhs.sampler )
5658 && ( imageView == rhs.imageView )
5659 && ( imageLayout == rhs.imageLayout );
5660 }
5661
5662 bool operator!=( DescriptorImageInfo const& rhs ) const
5663 {
5664 return !operator==( rhs );
5665 }
5666
5667 Sampler sampler;
5668 ImageView imageView;
5669 ImageLayout imageLayout;
5670 };
5671 static_assert( sizeof( DescriptorImageInfo ) == sizeof( VkDescriptorImageInfo ), "struct and wrapper have different size!" );
5672
5673 struct AttachmentReference
5674 {
5675 AttachmentReference( uint32_t attachment_ = 0, ImageLayout layout_ = ImageLayout::eUndefined )
5676 : attachment( attachment_ )
5677 , layout( layout_ )
5678 {
5679 }
5680
5681 AttachmentReference( VkAttachmentReference const & rhs )
5682 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005683 memcpy( this, &rhs, sizeof( AttachmentReference ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005684 }
5685
5686 AttachmentReference& operator=( VkAttachmentReference const & rhs )
5687 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005688 memcpy( this, &rhs, sizeof( AttachmentReference ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005689 return *this;
5690 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005691 AttachmentReference& setAttachment( uint32_t attachment_ )
5692 {
5693 attachment = attachment_;
5694 return *this;
5695 }
5696
5697 AttachmentReference& setLayout( ImageLayout layout_ )
5698 {
5699 layout = layout_;
5700 return *this;
5701 }
5702
5703 operator const VkAttachmentReference&() const
5704 {
5705 return *reinterpret_cast<const VkAttachmentReference*>(this);
5706 }
5707
5708 bool operator==( AttachmentReference const& rhs ) const
5709 {
5710 return ( attachment == rhs.attachment )
5711 && ( layout == rhs.layout );
5712 }
5713
5714 bool operator!=( AttachmentReference const& rhs ) const
5715 {
5716 return !operator==( rhs );
5717 }
5718
5719 uint32_t attachment;
5720 ImageLayout layout;
5721 };
5722 static_assert( sizeof( AttachmentReference ) == sizeof( VkAttachmentReference ), "struct and wrapper have different size!" );
5723
5724 enum class AttachmentLoadOp
5725 {
5726 eLoad = VK_ATTACHMENT_LOAD_OP_LOAD,
5727 eClear = VK_ATTACHMENT_LOAD_OP_CLEAR,
5728 eDontCare = VK_ATTACHMENT_LOAD_OP_DONT_CARE
5729 };
5730
5731 enum class AttachmentStoreOp
5732 {
5733 eStore = VK_ATTACHMENT_STORE_OP_STORE,
5734 eDontCare = VK_ATTACHMENT_STORE_OP_DONT_CARE
5735 };
5736
5737 enum class ImageType
5738 {
5739 e1D = VK_IMAGE_TYPE_1D,
5740 e2D = VK_IMAGE_TYPE_2D,
5741 e3D = VK_IMAGE_TYPE_3D
5742 };
5743
5744 enum class ImageTiling
5745 {
5746 eOptimal = VK_IMAGE_TILING_OPTIMAL,
5747 eLinear = VK_IMAGE_TILING_LINEAR
5748 };
5749
5750 enum class ImageViewType
5751 {
5752 e1D = VK_IMAGE_VIEW_TYPE_1D,
5753 e2D = VK_IMAGE_VIEW_TYPE_2D,
5754 e3D = VK_IMAGE_VIEW_TYPE_3D,
5755 eCube = VK_IMAGE_VIEW_TYPE_CUBE,
5756 e1DArray = VK_IMAGE_VIEW_TYPE_1D_ARRAY,
5757 e2DArray = VK_IMAGE_VIEW_TYPE_2D_ARRAY,
5758 eCubeArray = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
5759 };
5760
5761 enum class CommandBufferLevel
5762 {
5763 ePrimary = VK_COMMAND_BUFFER_LEVEL_PRIMARY,
5764 eSecondary = VK_COMMAND_BUFFER_LEVEL_SECONDARY
5765 };
5766
5767 enum class ComponentSwizzle
5768 {
5769 eIdentity = VK_COMPONENT_SWIZZLE_IDENTITY,
5770 eZero = VK_COMPONENT_SWIZZLE_ZERO,
5771 eOne = VK_COMPONENT_SWIZZLE_ONE,
5772 eR = VK_COMPONENT_SWIZZLE_R,
5773 eG = VK_COMPONENT_SWIZZLE_G,
5774 eB = VK_COMPONENT_SWIZZLE_B,
5775 eA = VK_COMPONENT_SWIZZLE_A
5776 };
5777
5778 struct ComponentMapping
5779 {
5780 ComponentMapping( ComponentSwizzle r_ = ComponentSwizzle::eIdentity, ComponentSwizzle g_ = ComponentSwizzle::eIdentity, ComponentSwizzle b_ = ComponentSwizzle::eIdentity, ComponentSwizzle a_ = ComponentSwizzle::eIdentity )
5781 : r( r_ )
5782 , g( g_ )
5783 , b( b_ )
5784 , a( a_ )
5785 {
5786 }
5787
5788 ComponentMapping( VkComponentMapping const & rhs )
5789 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005790 memcpy( this, &rhs, sizeof( ComponentMapping ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005791 }
5792
5793 ComponentMapping& operator=( VkComponentMapping const & rhs )
5794 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005795 memcpy( this, &rhs, sizeof( ComponentMapping ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005796 return *this;
5797 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005798 ComponentMapping& setR( ComponentSwizzle r_ )
5799 {
5800 r = r_;
5801 return *this;
5802 }
5803
5804 ComponentMapping& setG( ComponentSwizzle g_ )
5805 {
5806 g = g_;
5807 return *this;
5808 }
5809
5810 ComponentMapping& setB( ComponentSwizzle b_ )
5811 {
5812 b = b_;
5813 return *this;
5814 }
5815
5816 ComponentMapping& setA( ComponentSwizzle a_ )
5817 {
5818 a = a_;
5819 return *this;
5820 }
5821
5822 operator const VkComponentMapping&() const
5823 {
5824 return *reinterpret_cast<const VkComponentMapping*>(this);
5825 }
5826
5827 bool operator==( ComponentMapping const& rhs ) const
5828 {
5829 return ( r == rhs.r )
5830 && ( g == rhs.g )
5831 && ( b == rhs.b )
5832 && ( a == rhs.a );
5833 }
5834
5835 bool operator!=( ComponentMapping const& rhs ) const
5836 {
5837 return !operator==( rhs );
5838 }
5839
5840 ComponentSwizzle r;
5841 ComponentSwizzle g;
5842 ComponentSwizzle b;
5843 ComponentSwizzle a;
5844 };
5845 static_assert( sizeof( ComponentMapping ) == sizeof( VkComponentMapping ), "struct and wrapper have different size!" );
5846
5847 enum class DescriptorType
5848 {
5849 eSampler = VK_DESCRIPTOR_TYPE_SAMPLER,
5850 eCombinedImageSampler = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
5851 eSampledImage = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
5852 eStorageImage = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,
5853 eUniformTexelBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER,
5854 eStorageTexelBuffer = VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER,
5855 eUniformBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
5856 eStorageBuffer = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
5857 eUniformBufferDynamic = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
5858 eStorageBufferDynamic = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC,
5859 eInputAttachment = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
5860 };
5861
5862 struct DescriptorPoolSize
5863 {
5864 DescriptorPoolSize( DescriptorType type_ = DescriptorType::eSampler, uint32_t descriptorCount_ = 0 )
5865 : type( type_ )
5866 , descriptorCount( descriptorCount_ )
5867 {
5868 }
5869
5870 DescriptorPoolSize( VkDescriptorPoolSize const & rhs )
5871 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005872 memcpy( this, &rhs, sizeof( DescriptorPoolSize ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005873 }
5874
5875 DescriptorPoolSize& operator=( VkDescriptorPoolSize const & rhs )
5876 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005877 memcpy( this, &rhs, sizeof( DescriptorPoolSize ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005878 return *this;
5879 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005880 DescriptorPoolSize& setType( DescriptorType type_ )
5881 {
5882 type = type_;
5883 return *this;
5884 }
5885
5886 DescriptorPoolSize& setDescriptorCount( uint32_t descriptorCount_ )
5887 {
5888 descriptorCount = descriptorCount_;
5889 return *this;
5890 }
5891
5892 operator const VkDescriptorPoolSize&() const
5893 {
5894 return *reinterpret_cast<const VkDescriptorPoolSize*>(this);
5895 }
5896
5897 bool operator==( DescriptorPoolSize const& rhs ) const
5898 {
5899 return ( type == rhs.type )
5900 && ( descriptorCount == rhs.descriptorCount );
5901 }
5902
5903 bool operator!=( DescriptorPoolSize const& rhs ) const
5904 {
5905 return !operator==( rhs );
5906 }
5907
5908 DescriptorType type;
5909 uint32_t descriptorCount;
5910 };
5911 static_assert( sizeof( DescriptorPoolSize ) == sizeof( VkDescriptorPoolSize ), "struct and wrapper have different size!" );
5912
Mark Young0f183a82017-02-28 09:58:04 -07005913 struct DescriptorUpdateTemplateEntryKHR
5914 {
5915 DescriptorUpdateTemplateEntryKHR( uint32_t dstBinding_ = 0, uint32_t dstArrayElement_ = 0, uint32_t descriptorCount_ = 0, DescriptorType descriptorType_ = DescriptorType::eSampler, size_t offset_ = 0, size_t stride_ = 0 )
5916 : dstBinding( dstBinding_ )
5917 , dstArrayElement( dstArrayElement_ )
5918 , descriptorCount( descriptorCount_ )
5919 , descriptorType( descriptorType_ )
5920 , offset( offset_ )
5921 , stride( stride_ )
5922 {
5923 }
5924
5925 DescriptorUpdateTemplateEntryKHR( VkDescriptorUpdateTemplateEntryKHR const & rhs )
5926 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005927 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateEntryKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -07005928 }
5929
5930 DescriptorUpdateTemplateEntryKHR& operator=( VkDescriptorUpdateTemplateEntryKHR const & rhs )
5931 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005932 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateEntryKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -07005933 return *this;
5934 }
Mark Young0f183a82017-02-28 09:58:04 -07005935 DescriptorUpdateTemplateEntryKHR& setDstBinding( uint32_t dstBinding_ )
5936 {
5937 dstBinding = dstBinding_;
5938 return *this;
5939 }
5940
5941 DescriptorUpdateTemplateEntryKHR& setDstArrayElement( uint32_t dstArrayElement_ )
5942 {
5943 dstArrayElement = dstArrayElement_;
5944 return *this;
5945 }
5946
5947 DescriptorUpdateTemplateEntryKHR& setDescriptorCount( uint32_t descriptorCount_ )
5948 {
5949 descriptorCount = descriptorCount_;
5950 return *this;
5951 }
5952
5953 DescriptorUpdateTemplateEntryKHR& setDescriptorType( DescriptorType descriptorType_ )
5954 {
5955 descriptorType = descriptorType_;
5956 return *this;
5957 }
5958
5959 DescriptorUpdateTemplateEntryKHR& setOffset( size_t offset_ )
5960 {
5961 offset = offset_;
5962 return *this;
5963 }
5964
5965 DescriptorUpdateTemplateEntryKHR& setStride( size_t stride_ )
5966 {
5967 stride = stride_;
5968 return *this;
5969 }
5970
5971 operator const VkDescriptorUpdateTemplateEntryKHR&() const
5972 {
5973 return *reinterpret_cast<const VkDescriptorUpdateTemplateEntryKHR*>(this);
5974 }
5975
5976 bool operator==( DescriptorUpdateTemplateEntryKHR const& rhs ) const
5977 {
5978 return ( dstBinding == rhs.dstBinding )
5979 && ( dstArrayElement == rhs.dstArrayElement )
5980 && ( descriptorCount == rhs.descriptorCount )
5981 && ( descriptorType == rhs.descriptorType )
5982 && ( offset == rhs.offset )
5983 && ( stride == rhs.stride );
5984 }
5985
5986 bool operator!=( DescriptorUpdateTemplateEntryKHR const& rhs ) const
5987 {
5988 return !operator==( rhs );
5989 }
5990
5991 uint32_t dstBinding;
5992 uint32_t dstArrayElement;
5993 uint32_t descriptorCount;
5994 DescriptorType descriptorType;
5995 size_t offset;
5996 size_t stride;
5997 };
5998 static_assert( sizeof( DescriptorUpdateTemplateEntryKHR ) == sizeof( VkDescriptorUpdateTemplateEntryKHR ), "struct and wrapper have different size!" );
5999
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006000 enum class QueryType
6001 {
6002 eOcclusion = VK_QUERY_TYPE_OCCLUSION,
6003 ePipelineStatistics = VK_QUERY_TYPE_PIPELINE_STATISTICS,
6004 eTimestamp = VK_QUERY_TYPE_TIMESTAMP
6005 };
6006
6007 enum class BorderColor
6008 {
6009 eFloatTransparentBlack = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,
6010 eIntTransparentBlack = VK_BORDER_COLOR_INT_TRANSPARENT_BLACK,
6011 eFloatOpaqueBlack = VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK,
6012 eIntOpaqueBlack = VK_BORDER_COLOR_INT_OPAQUE_BLACK,
6013 eFloatOpaqueWhite = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE,
6014 eIntOpaqueWhite = VK_BORDER_COLOR_INT_OPAQUE_WHITE
6015 };
6016
6017 enum class PipelineBindPoint
6018 {
6019 eGraphics = VK_PIPELINE_BIND_POINT_GRAPHICS,
6020 eCompute = VK_PIPELINE_BIND_POINT_COMPUTE
6021 };
6022
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006023 enum class PipelineCacheHeaderVersion
6024 {
6025 eOne = VK_PIPELINE_CACHE_HEADER_VERSION_ONE
6026 };
6027
6028 enum class PrimitiveTopology
6029 {
6030 ePointList = VK_PRIMITIVE_TOPOLOGY_POINT_LIST,
6031 eLineList = VK_PRIMITIVE_TOPOLOGY_LINE_LIST,
6032 eLineStrip = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP,
6033 eTriangleList = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,
6034 eTriangleStrip = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP,
6035 eTriangleFan = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN,
6036 eLineListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY,
6037 eLineStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY,
6038 eTriangleListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY,
6039 eTriangleStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY,
6040 ePatchList = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
6041 };
6042
6043 enum class SharingMode
6044 {
6045 eExclusive = VK_SHARING_MODE_EXCLUSIVE,
6046 eConcurrent = VK_SHARING_MODE_CONCURRENT
6047 };
6048
6049 enum class IndexType
6050 {
6051 eUint16 = VK_INDEX_TYPE_UINT16,
6052 eUint32 = VK_INDEX_TYPE_UINT32
6053 };
6054
6055 enum class Filter
6056 {
6057 eNearest = VK_FILTER_NEAREST,
6058 eLinear = VK_FILTER_LINEAR,
6059 eCubicIMG = VK_FILTER_CUBIC_IMG
6060 };
6061
6062 enum class SamplerMipmapMode
6063 {
6064 eNearest = VK_SAMPLER_MIPMAP_MODE_NEAREST,
6065 eLinear = VK_SAMPLER_MIPMAP_MODE_LINEAR
6066 };
6067
6068 enum class SamplerAddressMode
6069 {
6070 eRepeat = VK_SAMPLER_ADDRESS_MODE_REPEAT,
6071 eMirroredRepeat = VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT,
6072 eClampToEdge = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
6073 eClampToBorder = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER,
6074 eMirrorClampToEdge = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE
6075 };
6076
6077 enum class CompareOp
6078 {
6079 eNever = VK_COMPARE_OP_NEVER,
6080 eLess = VK_COMPARE_OP_LESS,
6081 eEqual = VK_COMPARE_OP_EQUAL,
6082 eLessOrEqual = VK_COMPARE_OP_LESS_OR_EQUAL,
6083 eGreater = VK_COMPARE_OP_GREATER,
6084 eNotEqual = VK_COMPARE_OP_NOT_EQUAL,
6085 eGreaterOrEqual = VK_COMPARE_OP_GREATER_OR_EQUAL,
6086 eAlways = VK_COMPARE_OP_ALWAYS
6087 };
6088
6089 enum class PolygonMode
6090 {
6091 eFill = VK_POLYGON_MODE_FILL,
6092 eLine = VK_POLYGON_MODE_LINE,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006093 ePoint = VK_POLYGON_MODE_POINT,
6094 eFillRectangleNV = VK_POLYGON_MODE_FILL_RECTANGLE_NV
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006095 };
6096
6097 enum class CullModeFlagBits
6098 {
6099 eNone = VK_CULL_MODE_NONE,
6100 eFront = VK_CULL_MODE_FRONT_BIT,
6101 eBack = VK_CULL_MODE_BACK_BIT,
6102 eFrontAndBack = VK_CULL_MODE_FRONT_AND_BACK
6103 };
6104
6105 using CullModeFlags = Flags<CullModeFlagBits, VkCullModeFlags>;
6106
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006107 VULKAN_HPP_INLINE CullModeFlags operator|( CullModeFlagBits bit0, CullModeFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006108 {
6109 return CullModeFlags( bit0 ) | bit1;
6110 }
6111
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006112 VULKAN_HPP_INLINE CullModeFlags operator~( CullModeFlagBits bits )
6113 {
6114 return ~( CullModeFlags( bits ) );
6115 }
6116
6117 template <> struct FlagTraits<CullModeFlagBits>
6118 {
6119 enum
6120 {
6121 allFlags = VkFlags(CullModeFlagBits::eNone) | VkFlags(CullModeFlagBits::eFront) | VkFlags(CullModeFlagBits::eBack) | VkFlags(CullModeFlagBits::eFrontAndBack)
6122 };
6123 };
6124
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006125 enum class FrontFace
6126 {
6127 eCounterClockwise = VK_FRONT_FACE_COUNTER_CLOCKWISE,
6128 eClockwise = VK_FRONT_FACE_CLOCKWISE
6129 };
6130
6131 enum class BlendFactor
6132 {
6133 eZero = VK_BLEND_FACTOR_ZERO,
6134 eOne = VK_BLEND_FACTOR_ONE,
6135 eSrcColor = VK_BLEND_FACTOR_SRC_COLOR,
6136 eOneMinusSrcColor = VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR,
6137 eDstColor = VK_BLEND_FACTOR_DST_COLOR,
6138 eOneMinusDstColor = VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR,
6139 eSrcAlpha = VK_BLEND_FACTOR_SRC_ALPHA,
6140 eOneMinusSrcAlpha = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA,
6141 eDstAlpha = VK_BLEND_FACTOR_DST_ALPHA,
6142 eOneMinusDstAlpha = VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA,
6143 eConstantColor = VK_BLEND_FACTOR_CONSTANT_COLOR,
6144 eOneMinusConstantColor = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR,
6145 eConstantAlpha = VK_BLEND_FACTOR_CONSTANT_ALPHA,
6146 eOneMinusConstantAlpha = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,
6147 eSrcAlphaSaturate = VK_BLEND_FACTOR_SRC_ALPHA_SATURATE,
6148 eSrc1Color = VK_BLEND_FACTOR_SRC1_COLOR,
6149 eOneMinusSrc1Color = VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,
6150 eSrc1Alpha = VK_BLEND_FACTOR_SRC1_ALPHA,
6151 eOneMinusSrc1Alpha = VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
6152 };
6153
6154 enum class BlendOp
6155 {
6156 eAdd = VK_BLEND_OP_ADD,
6157 eSubtract = VK_BLEND_OP_SUBTRACT,
6158 eReverseSubtract = VK_BLEND_OP_REVERSE_SUBTRACT,
6159 eMin = VK_BLEND_OP_MIN,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006160 eMax = VK_BLEND_OP_MAX,
6161 eZeroEXT = VK_BLEND_OP_ZERO_EXT,
6162 eSrcEXT = VK_BLEND_OP_SRC_EXT,
6163 eDstEXT = VK_BLEND_OP_DST_EXT,
6164 eSrcOverEXT = VK_BLEND_OP_SRC_OVER_EXT,
6165 eDstOverEXT = VK_BLEND_OP_DST_OVER_EXT,
6166 eSrcInEXT = VK_BLEND_OP_SRC_IN_EXT,
6167 eDstInEXT = VK_BLEND_OP_DST_IN_EXT,
6168 eSrcOutEXT = VK_BLEND_OP_SRC_OUT_EXT,
6169 eDstOutEXT = VK_BLEND_OP_DST_OUT_EXT,
6170 eSrcAtopEXT = VK_BLEND_OP_SRC_ATOP_EXT,
6171 eDstAtopEXT = VK_BLEND_OP_DST_ATOP_EXT,
6172 eXorEXT = VK_BLEND_OP_XOR_EXT,
6173 eMultiplyEXT = VK_BLEND_OP_MULTIPLY_EXT,
6174 eScreenEXT = VK_BLEND_OP_SCREEN_EXT,
6175 eOverlayEXT = VK_BLEND_OP_OVERLAY_EXT,
6176 eDarkenEXT = VK_BLEND_OP_DARKEN_EXT,
6177 eLightenEXT = VK_BLEND_OP_LIGHTEN_EXT,
6178 eColordodgeEXT = VK_BLEND_OP_COLORDODGE_EXT,
6179 eColorburnEXT = VK_BLEND_OP_COLORBURN_EXT,
6180 eHardlightEXT = VK_BLEND_OP_HARDLIGHT_EXT,
6181 eSoftlightEXT = VK_BLEND_OP_SOFTLIGHT_EXT,
6182 eDifferenceEXT = VK_BLEND_OP_DIFFERENCE_EXT,
6183 eExclusionEXT = VK_BLEND_OP_EXCLUSION_EXT,
6184 eInvertEXT = VK_BLEND_OP_INVERT_EXT,
6185 eInvertRgbEXT = VK_BLEND_OP_INVERT_RGB_EXT,
6186 eLineardodgeEXT = VK_BLEND_OP_LINEARDODGE_EXT,
6187 eLinearburnEXT = VK_BLEND_OP_LINEARBURN_EXT,
6188 eVividlightEXT = VK_BLEND_OP_VIVIDLIGHT_EXT,
6189 eLinearlightEXT = VK_BLEND_OP_LINEARLIGHT_EXT,
6190 ePinlightEXT = VK_BLEND_OP_PINLIGHT_EXT,
6191 eHardmixEXT = VK_BLEND_OP_HARDMIX_EXT,
6192 eHslHueEXT = VK_BLEND_OP_HSL_HUE_EXT,
6193 eHslSaturationEXT = VK_BLEND_OP_HSL_SATURATION_EXT,
6194 eHslColorEXT = VK_BLEND_OP_HSL_COLOR_EXT,
6195 eHslLuminosityEXT = VK_BLEND_OP_HSL_LUMINOSITY_EXT,
6196 ePlusEXT = VK_BLEND_OP_PLUS_EXT,
6197 ePlusClampedEXT = VK_BLEND_OP_PLUS_CLAMPED_EXT,
6198 ePlusClampedAlphaEXT = VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT,
6199 ePlusDarkerEXT = VK_BLEND_OP_PLUS_DARKER_EXT,
6200 eMinusEXT = VK_BLEND_OP_MINUS_EXT,
6201 eMinusClampedEXT = VK_BLEND_OP_MINUS_CLAMPED_EXT,
6202 eContrastEXT = VK_BLEND_OP_CONTRAST_EXT,
6203 eInvertOvgEXT = VK_BLEND_OP_INVERT_OVG_EXT,
6204 eRedEXT = VK_BLEND_OP_RED_EXT,
6205 eGreenEXT = VK_BLEND_OP_GREEN_EXT,
6206 eBlueEXT = VK_BLEND_OP_BLUE_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006207 };
6208
6209 enum class StencilOp
6210 {
6211 eKeep = VK_STENCIL_OP_KEEP,
6212 eZero = VK_STENCIL_OP_ZERO,
6213 eReplace = VK_STENCIL_OP_REPLACE,
6214 eIncrementAndClamp = VK_STENCIL_OP_INCREMENT_AND_CLAMP,
6215 eDecrementAndClamp = VK_STENCIL_OP_DECREMENT_AND_CLAMP,
6216 eInvert = VK_STENCIL_OP_INVERT,
6217 eIncrementAndWrap = VK_STENCIL_OP_INCREMENT_AND_WRAP,
6218 eDecrementAndWrap = VK_STENCIL_OP_DECREMENT_AND_WRAP
6219 };
6220
6221 struct StencilOpState
6222 {
6223 StencilOpState( StencilOp failOp_ = StencilOp::eKeep, StencilOp passOp_ = StencilOp::eKeep, StencilOp depthFailOp_ = StencilOp::eKeep, CompareOp compareOp_ = CompareOp::eNever, uint32_t compareMask_ = 0, uint32_t writeMask_ = 0, uint32_t reference_ = 0 )
6224 : failOp( failOp_ )
6225 , passOp( passOp_ )
6226 , depthFailOp( depthFailOp_ )
6227 , compareOp( compareOp_ )
6228 , compareMask( compareMask_ )
6229 , writeMask( writeMask_ )
6230 , reference( reference_ )
6231 {
6232 }
6233
6234 StencilOpState( VkStencilOpState const & rhs )
6235 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006236 memcpy( this, &rhs, sizeof( StencilOpState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006237 }
6238
6239 StencilOpState& operator=( VkStencilOpState const & rhs )
6240 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006241 memcpy( this, &rhs, sizeof( StencilOpState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006242 return *this;
6243 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006244 StencilOpState& setFailOp( StencilOp failOp_ )
6245 {
6246 failOp = failOp_;
6247 return *this;
6248 }
6249
6250 StencilOpState& setPassOp( StencilOp passOp_ )
6251 {
6252 passOp = passOp_;
6253 return *this;
6254 }
6255
6256 StencilOpState& setDepthFailOp( StencilOp depthFailOp_ )
6257 {
6258 depthFailOp = depthFailOp_;
6259 return *this;
6260 }
6261
6262 StencilOpState& setCompareOp( CompareOp compareOp_ )
6263 {
6264 compareOp = compareOp_;
6265 return *this;
6266 }
6267
6268 StencilOpState& setCompareMask( uint32_t compareMask_ )
6269 {
6270 compareMask = compareMask_;
6271 return *this;
6272 }
6273
6274 StencilOpState& setWriteMask( uint32_t writeMask_ )
6275 {
6276 writeMask = writeMask_;
6277 return *this;
6278 }
6279
6280 StencilOpState& setReference( uint32_t reference_ )
6281 {
6282 reference = reference_;
6283 return *this;
6284 }
6285
6286 operator const VkStencilOpState&() const
6287 {
6288 return *reinterpret_cast<const VkStencilOpState*>(this);
6289 }
6290
6291 bool operator==( StencilOpState const& rhs ) const
6292 {
6293 return ( failOp == rhs.failOp )
6294 && ( passOp == rhs.passOp )
6295 && ( depthFailOp == rhs.depthFailOp )
6296 && ( compareOp == rhs.compareOp )
6297 && ( compareMask == rhs.compareMask )
6298 && ( writeMask == rhs.writeMask )
6299 && ( reference == rhs.reference );
6300 }
6301
6302 bool operator!=( StencilOpState const& rhs ) const
6303 {
6304 return !operator==( rhs );
6305 }
6306
6307 StencilOp failOp;
6308 StencilOp passOp;
6309 StencilOp depthFailOp;
6310 CompareOp compareOp;
6311 uint32_t compareMask;
6312 uint32_t writeMask;
6313 uint32_t reference;
6314 };
6315 static_assert( sizeof( StencilOpState ) == sizeof( VkStencilOpState ), "struct and wrapper have different size!" );
6316
6317 enum class LogicOp
6318 {
6319 eClear = VK_LOGIC_OP_CLEAR,
6320 eAnd = VK_LOGIC_OP_AND,
6321 eAndReverse = VK_LOGIC_OP_AND_REVERSE,
6322 eCopy = VK_LOGIC_OP_COPY,
6323 eAndInverted = VK_LOGIC_OP_AND_INVERTED,
6324 eNoOp = VK_LOGIC_OP_NO_OP,
6325 eXor = VK_LOGIC_OP_XOR,
6326 eOr = VK_LOGIC_OP_OR,
6327 eNor = VK_LOGIC_OP_NOR,
6328 eEquivalent = VK_LOGIC_OP_EQUIVALENT,
6329 eInvert = VK_LOGIC_OP_INVERT,
6330 eOrReverse = VK_LOGIC_OP_OR_REVERSE,
6331 eCopyInverted = VK_LOGIC_OP_COPY_INVERTED,
6332 eOrInverted = VK_LOGIC_OP_OR_INVERTED,
6333 eNand = VK_LOGIC_OP_NAND,
6334 eSet = VK_LOGIC_OP_SET
6335 };
6336
6337 enum class InternalAllocationType
6338 {
6339 eExecutable = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE
6340 };
6341
6342 enum class SystemAllocationScope
6343 {
6344 eCommand = VK_SYSTEM_ALLOCATION_SCOPE_COMMAND,
6345 eObject = VK_SYSTEM_ALLOCATION_SCOPE_OBJECT,
6346 eCache = VK_SYSTEM_ALLOCATION_SCOPE_CACHE,
6347 eDevice = VK_SYSTEM_ALLOCATION_SCOPE_DEVICE,
6348 eInstance = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE
6349 };
6350
6351 enum class PhysicalDeviceType
6352 {
6353 eOther = VK_PHYSICAL_DEVICE_TYPE_OTHER,
6354 eIntegratedGpu = VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU,
6355 eDiscreteGpu = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU,
6356 eVirtualGpu = VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU,
6357 eCpu = VK_PHYSICAL_DEVICE_TYPE_CPU
6358 };
6359
6360 enum class VertexInputRate
6361 {
6362 eVertex = VK_VERTEX_INPUT_RATE_VERTEX,
6363 eInstance = VK_VERTEX_INPUT_RATE_INSTANCE
6364 };
6365
6366 struct VertexInputBindingDescription
6367 {
6368 VertexInputBindingDescription( uint32_t binding_ = 0, uint32_t stride_ = 0, VertexInputRate inputRate_ = VertexInputRate::eVertex )
6369 : binding( binding_ )
6370 , stride( stride_ )
6371 , inputRate( inputRate_ )
6372 {
6373 }
6374
6375 VertexInputBindingDescription( VkVertexInputBindingDescription const & rhs )
6376 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006377 memcpy( this, &rhs, sizeof( VertexInputBindingDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006378 }
6379
6380 VertexInputBindingDescription& operator=( VkVertexInputBindingDescription const & rhs )
6381 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006382 memcpy( this, &rhs, sizeof( VertexInputBindingDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006383 return *this;
6384 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006385 VertexInputBindingDescription& setBinding( uint32_t binding_ )
6386 {
6387 binding = binding_;
6388 return *this;
6389 }
6390
6391 VertexInputBindingDescription& setStride( uint32_t stride_ )
6392 {
6393 stride = stride_;
6394 return *this;
6395 }
6396
6397 VertexInputBindingDescription& setInputRate( VertexInputRate inputRate_ )
6398 {
6399 inputRate = inputRate_;
6400 return *this;
6401 }
6402
6403 operator const VkVertexInputBindingDescription&() const
6404 {
6405 return *reinterpret_cast<const VkVertexInputBindingDescription*>(this);
6406 }
6407
6408 bool operator==( VertexInputBindingDescription const& rhs ) const
6409 {
6410 return ( binding == rhs.binding )
6411 && ( stride == rhs.stride )
6412 && ( inputRate == rhs.inputRate );
6413 }
6414
6415 bool operator!=( VertexInputBindingDescription const& rhs ) const
6416 {
6417 return !operator==( rhs );
6418 }
6419
6420 uint32_t binding;
6421 uint32_t stride;
6422 VertexInputRate inputRate;
6423 };
6424 static_assert( sizeof( VertexInputBindingDescription ) == sizeof( VkVertexInputBindingDescription ), "struct and wrapper have different size!" );
6425
6426 enum class Format
6427 {
6428 eUndefined = VK_FORMAT_UNDEFINED,
6429 eR4G4UnormPack8 = VK_FORMAT_R4G4_UNORM_PACK8,
6430 eR4G4B4A4UnormPack16 = VK_FORMAT_R4G4B4A4_UNORM_PACK16,
6431 eB4G4R4A4UnormPack16 = VK_FORMAT_B4G4R4A4_UNORM_PACK16,
6432 eR5G6B5UnormPack16 = VK_FORMAT_R5G6B5_UNORM_PACK16,
6433 eB5G6R5UnormPack16 = VK_FORMAT_B5G6R5_UNORM_PACK16,
6434 eR5G5B5A1UnormPack16 = VK_FORMAT_R5G5B5A1_UNORM_PACK16,
6435 eB5G5R5A1UnormPack16 = VK_FORMAT_B5G5R5A1_UNORM_PACK16,
6436 eA1R5G5B5UnormPack16 = VK_FORMAT_A1R5G5B5_UNORM_PACK16,
6437 eR8Unorm = VK_FORMAT_R8_UNORM,
6438 eR8Snorm = VK_FORMAT_R8_SNORM,
6439 eR8Uscaled = VK_FORMAT_R8_USCALED,
6440 eR8Sscaled = VK_FORMAT_R8_SSCALED,
6441 eR8Uint = VK_FORMAT_R8_UINT,
6442 eR8Sint = VK_FORMAT_R8_SINT,
6443 eR8Srgb = VK_FORMAT_R8_SRGB,
6444 eR8G8Unorm = VK_FORMAT_R8G8_UNORM,
6445 eR8G8Snorm = VK_FORMAT_R8G8_SNORM,
6446 eR8G8Uscaled = VK_FORMAT_R8G8_USCALED,
6447 eR8G8Sscaled = VK_FORMAT_R8G8_SSCALED,
6448 eR8G8Uint = VK_FORMAT_R8G8_UINT,
6449 eR8G8Sint = VK_FORMAT_R8G8_SINT,
6450 eR8G8Srgb = VK_FORMAT_R8G8_SRGB,
6451 eR8G8B8Unorm = VK_FORMAT_R8G8B8_UNORM,
6452 eR8G8B8Snorm = VK_FORMAT_R8G8B8_SNORM,
6453 eR8G8B8Uscaled = VK_FORMAT_R8G8B8_USCALED,
6454 eR8G8B8Sscaled = VK_FORMAT_R8G8B8_SSCALED,
6455 eR8G8B8Uint = VK_FORMAT_R8G8B8_UINT,
6456 eR8G8B8Sint = VK_FORMAT_R8G8B8_SINT,
6457 eR8G8B8Srgb = VK_FORMAT_R8G8B8_SRGB,
6458 eB8G8R8Unorm = VK_FORMAT_B8G8R8_UNORM,
6459 eB8G8R8Snorm = VK_FORMAT_B8G8R8_SNORM,
6460 eB8G8R8Uscaled = VK_FORMAT_B8G8R8_USCALED,
6461 eB8G8R8Sscaled = VK_FORMAT_B8G8R8_SSCALED,
6462 eB8G8R8Uint = VK_FORMAT_B8G8R8_UINT,
6463 eB8G8R8Sint = VK_FORMAT_B8G8R8_SINT,
6464 eB8G8R8Srgb = VK_FORMAT_B8G8R8_SRGB,
6465 eR8G8B8A8Unorm = VK_FORMAT_R8G8B8A8_UNORM,
6466 eR8G8B8A8Snorm = VK_FORMAT_R8G8B8A8_SNORM,
6467 eR8G8B8A8Uscaled = VK_FORMAT_R8G8B8A8_USCALED,
6468 eR8G8B8A8Sscaled = VK_FORMAT_R8G8B8A8_SSCALED,
6469 eR8G8B8A8Uint = VK_FORMAT_R8G8B8A8_UINT,
6470 eR8G8B8A8Sint = VK_FORMAT_R8G8B8A8_SINT,
6471 eR8G8B8A8Srgb = VK_FORMAT_R8G8B8A8_SRGB,
6472 eB8G8R8A8Unorm = VK_FORMAT_B8G8R8A8_UNORM,
6473 eB8G8R8A8Snorm = VK_FORMAT_B8G8R8A8_SNORM,
6474 eB8G8R8A8Uscaled = VK_FORMAT_B8G8R8A8_USCALED,
6475 eB8G8R8A8Sscaled = VK_FORMAT_B8G8R8A8_SSCALED,
6476 eB8G8R8A8Uint = VK_FORMAT_B8G8R8A8_UINT,
6477 eB8G8R8A8Sint = VK_FORMAT_B8G8R8A8_SINT,
6478 eB8G8R8A8Srgb = VK_FORMAT_B8G8R8A8_SRGB,
6479 eA8B8G8R8UnormPack32 = VK_FORMAT_A8B8G8R8_UNORM_PACK32,
6480 eA8B8G8R8SnormPack32 = VK_FORMAT_A8B8G8R8_SNORM_PACK32,
6481 eA8B8G8R8UscaledPack32 = VK_FORMAT_A8B8G8R8_USCALED_PACK32,
6482 eA8B8G8R8SscaledPack32 = VK_FORMAT_A8B8G8R8_SSCALED_PACK32,
6483 eA8B8G8R8UintPack32 = VK_FORMAT_A8B8G8R8_UINT_PACK32,
6484 eA8B8G8R8SintPack32 = VK_FORMAT_A8B8G8R8_SINT_PACK32,
6485 eA8B8G8R8SrgbPack32 = VK_FORMAT_A8B8G8R8_SRGB_PACK32,
6486 eA2R10G10B10UnormPack32 = VK_FORMAT_A2R10G10B10_UNORM_PACK32,
6487 eA2R10G10B10SnormPack32 = VK_FORMAT_A2R10G10B10_SNORM_PACK32,
6488 eA2R10G10B10UscaledPack32 = VK_FORMAT_A2R10G10B10_USCALED_PACK32,
6489 eA2R10G10B10SscaledPack32 = VK_FORMAT_A2R10G10B10_SSCALED_PACK32,
6490 eA2R10G10B10UintPack32 = VK_FORMAT_A2R10G10B10_UINT_PACK32,
6491 eA2R10G10B10SintPack32 = VK_FORMAT_A2R10G10B10_SINT_PACK32,
6492 eA2B10G10R10UnormPack32 = VK_FORMAT_A2B10G10R10_UNORM_PACK32,
6493 eA2B10G10R10SnormPack32 = VK_FORMAT_A2B10G10R10_SNORM_PACK32,
6494 eA2B10G10R10UscaledPack32 = VK_FORMAT_A2B10G10R10_USCALED_PACK32,
6495 eA2B10G10R10SscaledPack32 = VK_FORMAT_A2B10G10R10_SSCALED_PACK32,
6496 eA2B10G10R10UintPack32 = VK_FORMAT_A2B10G10R10_UINT_PACK32,
6497 eA2B10G10R10SintPack32 = VK_FORMAT_A2B10G10R10_SINT_PACK32,
6498 eR16Unorm = VK_FORMAT_R16_UNORM,
6499 eR16Snorm = VK_FORMAT_R16_SNORM,
6500 eR16Uscaled = VK_FORMAT_R16_USCALED,
6501 eR16Sscaled = VK_FORMAT_R16_SSCALED,
6502 eR16Uint = VK_FORMAT_R16_UINT,
6503 eR16Sint = VK_FORMAT_R16_SINT,
6504 eR16Sfloat = VK_FORMAT_R16_SFLOAT,
6505 eR16G16Unorm = VK_FORMAT_R16G16_UNORM,
6506 eR16G16Snorm = VK_FORMAT_R16G16_SNORM,
6507 eR16G16Uscaled = VK_FORMAT_R16G16_USCALED,
6508 eR16G16Sscaled = VK_FORMAT_R16G16_SSCALED,
6509 eR16G16Uint = VK_FORMAT_R16G16_UINT,
6510 eR16G16Sint = VK_FORMAT_R16G16_SINT,
6511 eR16G16Sfloat = VK_FORMAT_R16G16_SFLOAT,
6512 eR16G16B16Unorm = VK_FORMAT_R16G16B16_UNORM,
6513 eR16G16B16Snorm = VK_FORMAT_R16G16B16_SNORM,
6514 eR16G16B16Uscaled = VK_FORMAT_R16G16B16_USCALED,
6515 eR16G16B16Sscaled = VK_FORMAT_R16G16B16_SSCALED,
6516 eR16G16B16Uint = VK_FORMAT_R16G16B16_UINT,
6517 eR16G16B16Sint = VK_FORMAT_R16G16B16_SINT,
6518 eR16G16B16Sfloat = VK_FORMAT_R16G16B16_SFLOAT,
6519 eR16G16B16A16Unorm = VK_FORMAT_R16G16B16A16_UNORM,
6520 eR16G16B16A16Snorm = VK_FORMAT_R16G16B16A16_SNORM,
6521 eR16G16B16A16Uscaled = VK_FORMAT_R16G16B16A16_USCALED,
6522 eR16G16B16A16Sscaled = VK_FORMAT_R16G16B16A16_SSCALED,
6523 eR16G16B16A16Uint = VK_FORMAT_R16G16B16A16_UINT,
6524 eR16G16B16A16Sint = VK_FORMAT_R16G16B16A16_SINT,
6525 eR16G16B16A16Sfloat = VK_FORMAT_R16G16B16A16_SFLOAT,
6526 eR32Uint = VK_FORMAT_R32_UINT,
6527 eR32Sint = VK_FORMAT_R32_SINT,
6528 eR32Sfloat = VK_FORMAT_R32_SFLOAT,
6529 eR32G32Uint = VK_FORMAT_R32G32_UINT,
6530 eR32G32Sint = VK_FORMAT_R32G32_SINT,
6531 eR32G32Sfloat = VK_FORMAT_R32G32_SFLOAT,
6532 eR32G32B32Uint = VK_FORMAT_R32G32B32_UINT,
6533 eR32G32B32Sint = VK_FORMAT_R32G32B32_SINT,
6534 eR32G32B32Sfloat = VK_FORMAT_R32G32B32_SFLOAT,
6535 eR32G32B32A32Uint = VK_FORMAT_R32G32B32A32_UINT,
6536 eR32G32B32A32Sint = VK_FORMAT_R32G32B32A32_SINT,
6537 eR32G32B32A32Sfloat = VK_FORMAT_R32G32B32A32_SFLOAT,
6538 eR64Uint = VK_FORMAT_R64_UINT,
6539 eR64Sint = VK_FORMAT_R64_SINT,
6540 eR64Sfloat = VK_FORMAT_R64_SFLOAT,
6541 eR64G64Uint = VK_FORMAT_R64G64_UINT,
6542 eR64G64Sint = VK_FORMAT_R64G64_SINT,
6543 eR64G64Sfloat = VK_FORMAT_R64G64_SFLOAT,
6544 eR64G64B64Uint = VK_FORMAT_R64G64B64_UINT,
6545 eR64G64B64Sint = VK_FORMAT_R64G64B64_SINT,
6546 eR64G64B64Sfloat = VK_FORMAT_R64G64B64_SFLOAT,
6547 eR64G64B64A64Uint = VK_FORMAT_R64G64B64A64_UINT,
6548 eR64G64B64A64Sint = VK_FORMAT_R64G64B64A64_SINT,
6549 eR64G64B64A64Sfloat = VK_FORMAT_R64G64B64A64_SFLOAT,
6550 eB10G11R11UfloatPack32 = VK_FORMAT_B10G11R11_UFLOAT_PACK32,
6551 eE5B9G9R9UfloatPack32 = VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,
6552 eD16Unorm = VK_FORMAT_D16_UNORM,
6553 eX8D24UnormPack32 = VK_FORMAT_X8_D24_UNORM_PACK32,
6554 eD32Sfloat = VK_FORMAT_D32_SFLOAT,
6555 eS8Uint = VK_FORMAT_S8_UINT,
6556 eD16UnormS8Uint = VK_FORMAT_D16_UNORM_S8_UINT,
6557 eD24UnormS8Uint = VK_FORMAT_D24_UNORM_S8_UINT,
6558 eD32SfloatS8Uint = VK_FORMAT_D32_SFLOAT_S8_UINT,
6559 eBc1RgbUnormBlock = VK_FORMAT_BC1_RGB_UNORM_BLOCK,
6560 eBc1RgbSrgbBlock = VK_FORMAT_BC1_RGB_SRGB_BLOCK,
6561 eBc1RgbaUnormBlock = VK_FORMAT_BC1_RGBA_UNORM_BLOCK,
6562 eBc1RgbaSrgbBlock = VK_FORMAT_BC1_RGBA_SRGB_BLOCK,
6563 eBc2UnormBlock = VK_FORMAT_BC2_UNORM_BLOCK,
6564 eBc2SrgbBlock = VK_FORMAT_BC2_SRGB_BLOCK,
6565 eBc3UnormBlock = VK_FORMAT_BC3_UNORM_BLOCK,
6566 eBc3SrgbBlock = VK_FORMAT_BC3_SRGB_BLOCK,
6567 eBc4UnormBlock = VK_FORMAT_BC4_UNORM_BLOCK,
6568 eBc4SnormBlock = VK_FORMAT_BC4_SNORM_BLOCK,
6569 eBc5UnormBlock = VK_FORMAT_BC5_UNORM_BLOCK,
6570 eBc5SnormBlock = VK_FORMAT_BC5_SNORM_BLOCK,
6571 eBc6HUfloatBlock = VK_FORMAT_BC6H_UFLOAT_BLOCK,
6572 eBc6HSfloatBlock = VK_FORMAT_BC6H_SFLOAT_BLOCK,
6573 eBc7UnormBlock = VK_FORMAT_BC7_UNORM_BLOCK,
6574 eBc7SrgbBlock = VK_FORMAT_BC7_SRGB_BLOCK,
6575 eEtc2R8G8B8UnormBlock = VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK,
6576 eEtc2R8G8B8SrgbBlock = VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK,
6577 eEtc2R8G8B8A1UnormBlock = VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK,
6578 eEtc2R8G8B8A1SrgbBlock = VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK,
6579 eEtc2R8G8B8A8UnormBlock = VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK,
6580 eEtc2R8G8B8A8SrgbBlock = VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK,
6581 eEacR11UnormBlock = VK_FORMAT_EAC_R11_UNORM_BLOCK,
6582 eEacR11SnormBlock = VK_FORMAT_EAC_R11_SNORM_BLOCK,
6583 eEacR11G11UnormBlock = VK_FORMAT_EAC_R11G11_UNORM_BLOCK,
6584 eEacR11G11SnormBlock = VK_FORMAT_EAC_R11G11_SNORM_BLOCK,
6585 eAstc4x4UnormBlock = VK_FORMAT_ASTC_4x4_UNORM_BLOCK,
6586 eAstc4x4SrgbBlock = VK_FORMAT_ASTC_4x4_SRGB_BLOCK,
6587 eAstc5x4UnormBlock = VK_FORMAT_ASTC_5x4_UNORM_BLOCK,
6588 eAstc5x4SrgbBlock = VK_FORMAT_ASTC_5x4_SRGB_BLOCK,
6589 eAstc5x5UnormBlock = VK_FORMAT_ASTC_5x5_UNORM_BLOCK,
6590 eAstc5x5SrgbBlock = VK_FORMAT_ASTC_5x5_SRGB_BLOCK,
6591 eAstc6x5UnormBlock = VK_FORMAT_ASTC_6x5_UNORM_BLOCK,
6592 eAstc6x5SrgbBlock = VK_FORMAT_ASTC_6x5_SRGB_BLOCK,
6593 eAstc6x6UnormBlock = VK_FORMAT_ASTC_6x6_UNORM_BLOCK,
6594 eAstc6x6SrgbBlock = VK_FORMAT_ASTC_6x6_SRGB_BLOCK,
6595 eAstc8x5UnormBlock = VK_FORMAT_ASTC_8x5_UNORM_BLOCK,
6596 eAstc8x5SrgbBlock = VK_FORMAT_ASTC_8x5_SRGB_BLOCK,
6597 eAstc8x6UnormBlock = VK_FORMAT_ASTC_8x6_UNORM_BLOCK,
6598 eAstc8x6SrgbBlock = VK_FORMAT_ASTC_8x6_SRGB_BLOCK,
6599 eAstc8x8UnormBlock = VK_FORMAT_ASTC_8x8_UNORM_BLOCK,
6600 eAstc8x8SrgbBlock = VK_FORMAT_ASTC_8x8_SRGB_BLOCK,
6601 eAstc10x5UnormBlock = VK_FORMAT_ASTC_10x5_UNORM_BLOCK,
6602 eAstc10x5SrgbBlock = VK_FORMAT_ASTC_10x5_SRGB_BLOCK,
6603 eAstc10x6UnormBlock = VK_FORMAT_ASTC_10x6_UNORM_BLOCK,
6604 eAstc10x6SrgbBlock = VK_FORMAT_ASTC_10x6_SRGB_BLOCK,
6605 eAstc10x8UnormBlock = VK_FORMAT_ASTC_10x8_UNORM_BLOCK,
6606 eAstc10x8SrgbBlock = VK_FORMAT_ASTC_10x8_SRGB_BLOCK,
6607 eAstc10x10UnormBlock = VK_FORMAT_ASTC_10x10_UNORM_BLOCK,
6608 eAstc10x10SrgbBlock = VK_FORMAT_ASTC_10x10_SRGB_BLOCK,
6609 eAstc12x10UnormBlock = VK_FORMAT_ASTC_12x10_UNORM_BLOCK,
6610 eAstc12x10SrgbBlock = VK_FORMAT_ASTC_12x10_SRGB_BLOCK,
6611 eAstc12x12UnormBlock = VK_FORMAT_ASTC_12x12_UNORM_BLOCK,
Lenny Komowebf33162016-08-26 14:10:08 -06006612 eAstc12x12SrgbBlock = VK_FORMAT_ASTC_12x12_SRGB_BLOCK,
6613 ePvrtc12BppUnormBlockIMG = VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG,
6614 ePvrtc14BppUnormBlockIMG = VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG,
6615 ePvrtc22BppUnormBlockIMG = VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG,
6616 ePvrtc24BppUnormBlockIMG = VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG,
6617 ePvrtc12BppSrgbBlockIMG = VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG,
6618 ePvrtc14BppSrgbBlockIMG = VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG,
6619 ePvrtc22BppSrgbBlockIMG = VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG,
Lenny Komowb79f04a2017-09-18 17:07:00 -06006620 ePvrtc24BppSrgbBlockIMG = VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG,
6621 eG8B8G8R8422UnormKHR = VK_FORMAT_G8B8G8R8_422_UNORM_KHR,
6622 eB8G8R8G8422UnormKHR = VK_FORMAT_B8G8R8G8_422_UNORM_KHR,
6623 eG8B8R83Plane420UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR,
6624 eG8B8R82Plane420UnormKHR = VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR,
6625 eG8B8R83Plane422UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR,
6626 eG8B8R82Plane422UnormKHR = VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR,
6627 eG8B8R83Plane444UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR,
6628 eR10X6UnormPack16KHR = VK_FORMAT_R10X6_UNORM_PACK16_KHR,
6629 eR10X6G10X6Unorm2Pack16KHR = VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR,
6630 eR10X6G10X6B10X6A10X6Unorm4Pack16KHR = VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR,
6631 eG10X6B10X6G10X6R10X6422Unorm4Pack16KHR = VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR,
6632 eB10X6G10X6R10X6G10X6422Unorm4Pack16KHR = VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR,
6633 eG10X6B10X6R10X63Plane420Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR,
6634 eG10X6B10X6R10X62Plane420Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR,
6635 eG10X6B10X6R10X63Plane422Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR,
6636 eG10X6B10X6R10X62Plane422Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR,
6637 eG10X6B10X6R10X63Plane444Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR,
6638 eR12X4UnormPack16KHR = VK_FORMAT_R12X4_UNORM_PACK16_KHR,
6639 eR12X4G12X4Unorm2Pack16KHR = VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR,
6640 eR12X4G12X4B12X4A12X4Unorm4Pack16KHR = VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR,
6641 eG12X4B12X4G12X4R12X4422Unorm4Pack16KHR = VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR,
6642 eB12X4G12X4R12X4G12X4422Unorm4Pack16KHR = VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR,
6643 eG12X4B12X4R12X43Plane420Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR,
6644 eG12X4B12X4R12X42Plane420Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR,
6645 eG12X4B12X4R12X43Plane422Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR,
6646 eG12X4B12X4R12X42Plane422Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR,
6647 eG12X4B12X4R12X43Plane444Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR,
6648 eG16B16G16R16422UnormKHR = VK_FORMAT_G16B16G16R16_422_UNORM_KHR,
6649 eB16G16R16G16422UnormKHR = VK_FORMAT_B16G16R16G16_422_UNORM_KHR,
6650 eG16B16R163Plane420UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR,
6651 eG16B16R162Plane420UnormKHR = VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR,
6652 eG16B16R163Plane422UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR,
6653 eG16B16R162Plane422UnormKHR = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR,
6654 eG16B16R163Plane444UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006655 };
6656
6657 struct VertexInputAttributeDescription
6658 {
6659 VertexInputAttributeDescription( uint32_t location_ = 0, uint32_t binding_ = 0, Format format_ = Format::eUndefined, uint32_t offset_ = 0 )
6660 : location( location_ )
6661 , binding( binding_ )
6662 , format( format_ )
6663 , offset( offset_ )
6664 {
6665 }
6666
6667 VertexInputAttributeDescription( VkVertexInputAttributeDescription const & rhs )
6668 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006669 memcpy( this, &rhs, sizeof( VertexInputAttributeDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006670 }
6671
6672 VertexInputAttributeDescription& operator=( VkVertexInputAttributeDescription const & rhs )
6673 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006674 memcpy( this, &rhs, sizeof( VertexInputAttributeDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006675 return *this;
6676 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006677 VertexInputAttributeDescription& setLocation( uint32_t location_ )
6678 {
6679 location = location_;
6680 return *this;
6681 }
6682
6683 VertexInputAttributeDescription& setBinding( uint32_t binding_ )
6684 {
6685 binding = binding_;
6686 return *this;
6687 }
6688
6689 VertexInputAttributeDescription& setFormat( Format format_ )
6690 {
6691 format = format_;
6692 return *this;
6693 }
6694
6695 VertexInputAttributeDescription& setOffset( uint32_t offset_ )
6696 {
6697 offset = offset_;
6698 return *this;
6699 }
6700
6701 operator const VkVertexInputAttributeDescription&() const
6702 {
6703 return *reinterpret_cast<const VkVertexInputAttributeDescription*>(this);
6704 }
6705
6706 bool operator==( VertexInputAttributeDescription const& rhs ) const
6707 {
6708 return ( location == rhs.location )
6709 && ( binding == rhs.binding )
6710 && ( format == rhs.format )
6711 && ( offset == rhs.offset );
6712 }
6713
6714 bool operator!=( VertexInputAttributeDescription const& rhs ) const
6715 {
6716 return !operator==( rhs );
6717 }
6718
6719 uint32_t location;
6720 uint32_t binding;
6721 Format format;
6722 uint32_t offset;
6723 };
6724 static_assert( sizeof( VertexInputAttributeDescription ) == sizeof( VkVertexInputAttributeDescription ), "struct and wrapper have different size!" );
6725
6726 enum class StructureType
6727 {
6728 eApplicationInfo = VK_STRUCTURE_TYPE_APPLICATION_INFO,
6729 eInstanceCreateInfo = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
6730 eDeviceQueueCreateInfo = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO,
6731 eDeviceCreateInfo = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,
6732 eSubmitInfo = VK_STRUCTURE_TYPE_SUBMIT_INFO,
6733 eMemoryAllocateInfo = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
6734 eMappedMemoryRange = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE,
6735 eBindSparseInfo = VK_STRUCTURE_TYPE_BIND_SPARSE_INFO,
6736 eFenceCreateInfo = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO,
6737 eSemaphoreCreateInfo = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO,
6738 eEventCreateInfo = VK_STRUCTURE_TYPE_EVENT_CREATE_INFO,
6739 eQueryPoolCreateInfo = VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO,
6740 eBufferCreateInfo = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO,
6741 eBufferViewCreateInfo = VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO,
6742 eImageCreateInfo = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
6743 eImageViewCreateInfo = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
6744 eShaderModuleCreateInfo = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO,
6745 ePipelineCacheCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO,
6746 ePipelineShaderStageCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
6747 ePipelineVertexInputStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,
6748 ePipelineInputAssemblyStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,
6749 ePipelineTessellationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO,
6750 ePipelineViewportStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO,
6751 ePipelineRasterizationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO,
6752 ePipelineMultisampleStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,
6753 ePipelineDepthStencilStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO,
6754 ePipelineColorBlendStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,
6755 ePipelineDynamicStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO,
6756 eGraphicsPipelineCreateInfo = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO,
6757 eComputePipelineCreateInfo = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO,
6758 ePipelineLayoutCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO,
6759 eSamplerCreateInfo = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO,
6760 eDescriptorSetLayoutCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
6761 eDescriptorPoolCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO,
6762 eDescriptorSetAllocateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO,
6763 eWriteDescriptorSet = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET,
6764 eCopyDescriptorSet = VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET,
6765 eFramebufferCreateInfo = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO,
6766 eRenderPassCreateInfo = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
6767 eCommandPoolCreateInfo = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO,
6768 eCommandBufferAllocateInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO,
6769 eCommandBufferInheritanceInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO,
6770 eCommandBufferBeginInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
6771 eRenderPassBeginInfo = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,
6772 eBufferMemoryBarrier = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,
6773 eImageMemoryBarrier = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
6774 eMemoryBarrier = VK_STRUCTURE_TYPE_MEMORY_BARRIER,
6775 eLoaderInstanceCreateInfo = VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO,
6776 eLoaderDeviceCreateInfo = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
6777 eSwapchainCreateInfoKHR = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR,
6778 ePresentInfoKHR = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR,
6779 eDisplayModeCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR,
6780 eDisplaySurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR,
6781 eDisplayPresentInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR,
6782 eXlibSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR,
6783 eXcbSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR,
6784 eWaylandSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR,
6785 eMirSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR,
6786 eAndroidSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR,
6787 eWin32SurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR,
6788 eDebugReportCallbackCreateInfoEXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
6789 ePipelineRasterizationStateRasterizationOrderAMD = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD,
6790 eDebugMarkerObjectNameInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT,
6791 eDebugMarkerObjectTagInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT,
6792 eDebugMarkerMarkerInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT,
6793 eDedicatedAllocationImageCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,
6794 eDedicatedAllocationBufferCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV,
Lenny Komow6501c122016-08-31 15:03:49 -06006795 eDedicatedAllocationMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006796 eTextureLodGatherFormatPropertiesAMD = VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD,
Mark Young0f183a82017-02-28 09:58:04 -07006797 eRenderPassMultiviewCreateInfoKHX = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX,
6798 ePhysicalDeviceMultiviewFeaturesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHX,
6799 ePhysicalDeviceMultiviewPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHX,
Lenny Komow6501c122016-08-31 15:03:49 -06006800 eExternalMemoryImageCreateInfoNV = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,
6801 eExportMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV,
6802 eImportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV,
6803 eExportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV,
Lenny Komow68432d72016-09-29 14:16:59 -06006804 eWin32KeyedMutexAcquireReleaseInfoNV = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV,
Mark Young39389872017-01-19 21:10:49 -07006805 ePhysicalDeviceFeatures2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR,
6806 ePhysicalDeviceProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR,
6807 eFormatProperties2KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR,
6808 eImageFormatProperties2KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR,
6809 ePhysicalDeviceImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR,
6810 eQueueFamilyProperties2KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR,
6811 ePhysicalDeviceMemoryProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR,
6812 eSparseImageFormatProperties2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR,
6813 ePhysicalDeviceSparseImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006814 eMemoryAllocateFlagsInfoKHX = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHX,
Mark Young0f183a82017-02-28 09:58:04 -07006815 eDeviceGroupRenderPassBeginInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHX,
6816 eDeviceGroupCommandBufferBeginInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX,
6817 eDeviceGroupSubmitInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX,
6818 eDeviceGroupBindSparseInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06006819 eAcquireNextImageInfoKHX = VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX,
Lenny Komowb79f04a2017-09-18 17:07:00 -06006820 eBindBufferMemoryDeviceGroupInfoKHX = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHX,
6821 eBindImageMemoryDeviceGroupInfoKHX = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHX,
Mark Young0f183a82017-02-28 09:58:04 -07006822 eDeviceGroupPresentCapabilitiesKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX,
6823 eImageSwapchainCreateInfoKHX = VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX,
6824 eBindImageMemorySwapchainInfoKHX = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX,
Mark Young0f183a82017-02-28 09:58:04 -07006825 eDeviceGroupPresentInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX,
6826 eDeviceGroupSwapchainCreateInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX,
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006827 eValidationFlagsEXT = VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT,
Mark Young39389872017-01-19 21:10:49 -07006828 eViSurfaceCreateInfoNN = VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN,
Mark Young0f183a82017-02-28 09:58:04 -07006829 ePhysicalDeviceGroupPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHX,
6830 eDeviceGroupDeviceCreateInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHX,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006831 ePhysicalDeviceExternalImageFormatInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR,
6832 eExternalImageFormatPropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR,
6833 ePhysicalDeviceExternalBufferInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR,
6834 eExternalBufferPropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR,
6835 ePhysicalDeviceIdPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR,
6836 eExternalMemoryBufferCreateInfoKHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR,
6837 eExternalMemoryImageCreateInfoKHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR,
6838 eExportMemoryAllocateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR,
6839 eImportMemoryWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
6840 eExportMemoryWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
6841 eMemoryWin32HandlePropertiesKHR = VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR,
6842 eMemoryGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR,
6843 eImportMemoryFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR,
6844 eMemoryFdPropertiesKHR = VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR,
6845 eMemoryGetFdInfoKHR = VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR,
6846 eWin32KeyedMutexAcquireReleaseInfoKHR = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR,
6847 ePhysicalDeviceExternalSemaphoreInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR,
6848 eExternalSemaphorePropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR,
6849 eExportSemaphoreCreateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR,
6850 eImportSemaphoreWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
6851 eExportSemaphoreWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
6852 eD3D12FenceSubmitInfoKHR = VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR,
6853 eSemaphoreGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR,
6854 eImportSemaphoreFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR,
6855 eSemaphoreGetFdInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006856 ePhysicalDevicePushDescriptorPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006857 ePhysicalDevice16BitStorageFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR,
Mark Lobodzinski3289d762017-04-03 08:22:04 -06006858 ePresentRegionsKHR = VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006859 eDescriptorUpdateTemplateCreateInfoKHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR,
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006860 eObjectTableCreateInfoNVX = VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX,
6861 eIndirectCommandsLayoutCreateInfoNVX = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX,
6862 eCmdProcessCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX,
6863 eCmdReserveSpaceForCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX,
6864 eDeviceGeneratedCommandsLimitsNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX,
Mark Young39389872017-01-19 21:10:49 -07006865 eDeviceGeneratedCommandsFeaturesNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX,
Mark Young0f183a82017-02-28 09:58:04 -07006866 ePipelineViewportWScalingStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV,
Mark Lobodzinski11a1a342017-08-21 10:34:38 -06006867 eSurfaceCapabilities2EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT,
Mark Young39389872017-01-19 21:10:49 -07006868 eDisplayPowerInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT,
6869 eDeviceEventInfoEXT = VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT,
6870 eDisplayEventInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT,
Mark Young0f183a82017-02-28 09:58:04 -07006871 eSwapchainCounterCreateInfoEXT = VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT,
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06006872 ePresentTimesInfoGOOGLE = VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE,
Mark Young0f183a82017-02-28 09:58:04 -07006873 ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX,
6874 ePipelineViewportSwizzleStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV,
6875 ePhysicalDeviceDiscardRectanglePropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT,
6876 ePipelineDiscardRectangleStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT,
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06006877 eHdrMetadataEXT = VK_STRUCTURE_TYPE_HDR_METADATA_EXT,
Mark Lobodzinski54385432017-05-15 10:27:52 -06006878 eSharedPresentSurfaceCapabilitiesKHR = VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006879 ePhysicalDeviceExternalFenceInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR,
6880 eExternalFencePropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR,
6881 eExportFenceCreateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR,
6882 eImportFenceWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR,
6883 eExportFenceWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR,
6884 eFenceGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR,
6885 eImportFenceFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR,
6886 eFenceGetFdInfoKHR = VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR,
Lenny Komowb79f04a2017-09-18 17:07:00 -06006887 ePhysicalDevicePointClippingPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR,
6888 eRenderPassInputAttachmentAspectCreateInfoKHR = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR,
6889 eImageViewUsageCreateInfoKHR = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR,
6890 ePipelineTessellationDomainOriginStateCreateInfoKHR = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR,
Mark Lobodzinski54385432017-05-15 10:27:52 -06006891 ePhysicalDeviceSurfaceInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR,
6892 eSurfaceCapabilities2KHR = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR,
6893 eSurfaceFormat2KHR = VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006894 ePhysicalDeviceVariablePointerFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006895 eIosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006896 eMacosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006897 eMemoryDedicatedRequirementsKHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR,
6898 eMemoryDedicatedAllocateInfoKHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006899 ePhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT,
6900 eSamplerReductionModeCreateInfoEXT = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06006901 eSampleLocationsInfoEXT = VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT,
6902 eRenderPassSampleLocationsBeginInfoEXT = VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT,
6903 ePipelineSampleLocationsStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT,
6904 ePhysicalDeviceSampleLocationsPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT,
6905 eMultisamplePropertiesEXT = VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006906 eBufferMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR,
6907 eImageMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR,
6908 eImageSparseMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR,
6909 eMemoryRequirements2KHR = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR,
6910 eSparseImageMemoryRequirements2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR,
Lenny Komowb79f04a2017-09-18 17:07:00 -06006911 eImageFormatListCreateInfoKHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006912 ePhysicalDeviceBlendOperationAdvancedFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT,
6913 ePhysicalDeviceBlendOperationAdvancedPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT,
6914 ePipelineColorBlendAdvancedStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT,
6915 ePipelineCoverageToColorStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06006916 ePipelineCoverageModulationStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV,
Lenny Komowb79f04a2017-09-18 17:07:00 -06006917 eSamplerYcbcrConversionCreateInfoKHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR,
6918 eSamplerYcbcrConversionInfoKHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR,
6919 eBindImagePlaneMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR,
6920 eImagePlaneMemoryRequirementsInfoKHR = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR,
6921 ePhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR,
6922 eSamplerYcbcrConversionImageFormatPropertiesKHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR,
6923 eBindBufferMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR,
6924 eBindImageMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06006925 eValidationCacheCreateInfoEXT = VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT,
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -06006926 eShaderModuleValidationCacheCreateInfoEXT = VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT,
6927 eDeviceQueueGlobalPriorityCreateInfoEXT = VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006928 };
6929
6930 struct ApplicationInfo
6931 {
6932 ApplicationInfo( const char* pApplicationName_ = nullptr, uint32_t applicationVersion_ = 0, const char* pEngineName_ = nullptr, uint32_t engineVersion_ = 0, uint32_t apiVersion_ = 0 )
6933 : sType( StructureType::eApplicationInfo )
6934 , pNext( nullptr )
6935 , pApplicationName( pApplicationName_ )
6936 , applicationVersion( applicationVersion_ )
6937 , pEngineName( pEngineName_ )
6938 , engineVersion( engineVersion_ )
6939 , apiVersion( apiVersion_ )
6940 {
6941 }
6942
6943 ApplicationInfo( VkApplicationInfo const & rhs )
6944 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006945 memcpy( this, &rhs, sizeof( ApplicationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006946 }
6947
6948 ApplicationInfo& operator=( VkApplicationInfo const & rhs )
6949 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006950 memcpy( this, &rhs, sizeof( ApplicationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006951 return *this;
6952 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006953 ApplicationInfo& setPNext( const void* pNext_ )
6954 {
6955 pNext = pNext_;
6956 return *this;
6957 }
6958
6959 ApplicationInfo& setPApplicationName( const char* pApplicationName_ )
6960 {
6961 pApplicationName = pApplicationName_;
6962 return *this;
6963 }
6964
6965 ApplicationInfo& setApplicationVersion( uint32_t applicationVersion_ )
6966 {
6967 applicationVersion = applicationVersion_;
6968 return *this;
6969 }
6970
6971 ApplicationInfo& setPEngineName( const char* pEngineName_ )
6972 {
6973 pEngineName = pEngineName_;
6974 return *this;
6975 }
6976
6977 ApplicationInfo& setEngineVersion( uint32_t engineVersion_ )
6978 {
6979 engineVersion = engineVersion_;
6980 return *this;
6981 }
6982
6983 ApplicationInfo& setApiVersion( uint32_t apiVersion_ )
6984 {
6985 apiVersion = apiVersion_;
6986 return *this;
6987 }
6988
6989 operator const VkApplicationInfo&() const
6990 {
6991 return *reinterpret_cast<const VkApplicationInfo*>(this);
6992 }
6993
6994 bool operator==( ApplicationInfo const& rhs ) const
6995 {
6996 return ( sType == rhs.sType )
6997 && ( pNext == rhs.pNext )
6998 && ( pApplicationName == rhs.pApplicationName )
6999 && ( applicationVersion == rhs.applicationVersion )
7000 && ( pEngineName == rhs.pEngineName )
7001 && ( engineVersion == rhs.engineVersion )
7002 && ( apiVersion == rhs.apiVersion );
7003 }
7004
7005 bool operator!=( ApplicationInfo const& rhs ) const
7006 {
7007 return !operator==( rhs );
7008 }
7009
7010 private:
7011 StructureType sType;
7012
7013 public:
7014 const void* pNext;
7015 const char* pApplicationName;
7016 uint32_t applicationVersion;
7017 const char* pEngineName;
7018 uint32_t engineVersion;
7019 uint32_t apiVersion;
7020 };
7021 static_assert( sizeof( ApplicationInfo ) == sizeof( VkApplicationInfo ), "struct and wrapper have different size!" );
7022
7023 struct DeviceQueueCreateInfo
7024 {
7025 DeviceQueueCreateInfo( DeviceQueueCreateFlags flags_ = DeviceQueueCreateFlags(), uint32_t queueFamilyIndex_ = 0, uint32_t queueCount_ = 0, const float* pQueuePriorities_ = nullptr )
7026 : sType( StructureType::eDeviceQueueCreateInfo )
7027 , pNext( nullptr )
7028 , flags( flags_ )
7029 , queueFamilyIndex( queueFamilyIndex_ )
7030 , queueCount( queueCount_ )
7031 , pQueuePriorities( pQueuePriorities_ )
7032 {
7033 }
7034
7035 DeviceQueueCreateInfo( VkDeviceQueueCreateInfo const & rhs )
7036 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007037 memcpy( this, &rhs, sizeof( DeviceQueueCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007038 }
7039
7040 DeviceQueueCreateInfo& operator=( VkDeviceQueueCreateInfo const & rhs )
7041 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007042 memcpy( this, &rhs, sizeof( DeviceQueueCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007043 return *this;
7044 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007045 DeviceQueueCreateInfo& setPNext( const void* pNext_ )
7046 {
7047 pNext = pNext_;
7048 return *this;
7049 }
7050
7051 DeviceQueueCreateInfo& setFlags( DeviceQueueCreateFlags flags_ )
7052 {
7053 flags = flags_;
7054 return *this;
7055 }
7056
7057 DeviceQueueCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
7058 {
7059 queueFamilyIndex = queueFamilyIndex_;
7060 return *this;
7061 }
7062
7063 DeviceQueueCreateInfo& setQueueCount( uint32_t queueCount_ )
7064 {
7065 queueCount = queueCount_;
7066 return *this;
7067 }
7068
7069 DeviceQueueCreateInfo& setPQueuePriorities( const float* pQueuePriorities_ )
7070 {
7071 pQueuePriorities = pQueuePriorities_;
7072 return *this;
7073 }
7074
7075 operator const VkDeviceQueueCreateInfo&() const
7076 {
7077 return *reinterpret_cast<const VkDeviceQueueCreateInfo*>(this);
7078 }
7079
7080 bool operator==( DeviceQueueCreateInfo const& rhs ) const
7081 {
7082 return ( sType == rhs.sType )
7083 && ( pNext == rhs.pNext )
7084 && ( flags == rhs.flags )
7085 && ( queueFamilyIndex == rhs.queueFamilyIndex )
7086 && ( queueCount == rhs.queueCount )
7087 && ( pQueuePriorities == rhs.pQueuePriorities );
7088 }
7089
7090 bool operator!=( DeviceQueueCreateInfo const& rhs ) const
7091 {
7092 return !operator==( rhs );
7093 }
7094
7095 private:
7096 StructureType sType;
7097
7098 public:
7099 const void* pNext;
7100 DeviceQueueCreateFlags flags;
7101 uint32_t queueFamilyIndex;
7102 uint32_t queueCount;
7103 const float* pQueuePriorities;
7104 };
7105 static_assert( sizeof( DeviceQueueCreateInfo ) == sizeof( VkDeviceQueueCreateInfo ), "struct and wrapper have different size!" );
7106
7107 struct DeviceCreateInfo
7108 {
7109 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 )
7110 : sType( StructureType::eDeviceCreateInfo )
7111 , pNext( nullptr )
7112 , flags( flags_ )
7113 , queueCreateInfoCount( queueCreateInfoCount_ )
7114 , pQueueCreateInfos( pQueueCreateInfos_ )
7115 , enabledLayerCount( enabledLayerCount_ )
7116 , ppEnabledLayerNames( ppEnabledLayerNames_ )
7117 , enabledExtensionCount( enabledExtensionCount_ )
7118 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
7119 , pEnabledFeatures( pEnabledFeatures_ )
7120 {
7121 }
7122
7123 DeviceCreateInfo( VkDeviceCreateInfo const & rhs )
7124 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007125 memcpy( this, &rhs, sizeof( DeviceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007126 }
7127
7128 DeviceCreateInfo& operator=( VkDeviceCreateInfo const & rhs )
7129 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007130 memcpy( this, &rhs, sizeof( DeviceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007131 return *this;
7132 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007133 DeviceCreateInfo& setPNext( const void* pNext_ )
7134 {
7135 pNext = pNext_;
7136 return *this;
7137 }
7138
7139 DeviceCreateInfo& setFlags( DeviceCreateFlags flags_ )
7140 {
7141 flags = flags_;
7142 return *this;
7143 }
7144
7145 DeviceCreateInfo& setQueueCreateInfoCount( uint32_t queueCreateInfoCount_ )
7146 {
7147 queueCreateInfoCount = queueCreateInfoCount_;
7148 return *this;
7149 }
7150
7151 DeviceCreateInfo& setPQueueCreateInfos( const DeviceQueueCreateInfo* pQueueCreateInfos_ )
7152 {
7153 pQueueCreateInfos = pQueueCreateInfos_;
7154 return *this;
7155 }
7156
7157 DeviceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
7158 {
7159 enabledLayerCount = enabledLayerCount_;
7160 return *this;
7161 }
7162
7163 DeviceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
7164 {
7165 ppEnabledLayerNames = ppEnabledLayerNames_;
7166 return *this;
7167 }
7168
7169 DeviceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
7170 {
7171 enabledExtensionCount = enabledExtensionCount_;
7172 return *this;
7173 }
7174
7175 DeviceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
7176 {
7177 ppEnabledExtensionNames = ppEnabledExtensionNames_;
7178 return *this;
7179 }
7180
7181 DeviceCreateInfo& setPEnabledFeatures( const PhysicalDeviceFeatures* pEnabledFeatures_ )
7182 {
7183 pEnabledFeatures = pEnabledFeatures_;
7184 return *this;
7185 }
7186
7187 operator const VkDeviceCreateInfo&() const
7188 {
7189 return *reinterpret_cast<const VkDeviceCreateInfo*>(this);
7190 }
7191
7192 bool operator==( DeviceCreateInfo const& rhs ) const
7193 {
7194 return ( sType == rhs.sType )
7195 && ( pNext == rhs.pNext )
7196 && ( flags == rhs.flags )
7197 && ( queueCreateInfoCount == rhs.queueCreateInfoCount )
7198 && ( pQueueCreateInfos == rhs.pQueueCreateInfos )
7199 && ( enabledLayerCount == rhs.enabledLayerCount )
7200 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
7201 && ( enabledExtensionCount == rhs.enabledExtensionCount )
7202 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames )
7203 && ( pEnabledFeatures == rhs.pEnabledFeatures );
7204 }
7205
7206 bool operator!=( DeviceCreateInfo const& rhs ) const
7207 {
7208 return !operator==( rhs );
7209 }
7210
7211 private:
7212 StructureType sType;
7213
7214 public:
7215 const void* pNext;
7216 DeviceCreateFlags flags;
7217 uint32_t queueCreateInfoCount;
7218 const DeviceQueueCreateInfo* pQueueCreateInfos;
7219 uint32_t enabledLayerCount;
7220 const char* const* ppEnabledLayerNames;
7221 uint32_t enabledExtensionCount;
7222 const char* const* ppEnabledExtensionNames;
7223 const PhysicalDeviceFeatures* pEnabledFeatures;
7224 };
7225 static_assert( sizeof( DeviceCreateInfo ) == sizeof( VkDeviceCreateInfo ), "struct and wrapper have different size!" );
7226
7227 struct InstanceCreateInfo
7228 {
7229 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 )
7230 : sType( StructureType::eInstanceCreateInfo )
7231 , pNext( nullptr )
7232 , flags( flags_ )
7233 , pApplicationInfo( pApplicationInfo_ )
7234 , enabledLayerCount( enabledLayerCount_ )
7235 , ppEnabledLayerNames( ppEnabledLayerNames_ )
7236 , enabledExtensionCount( enabledExtensionCount_ )
7237 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
7238 {
7239 }
7240
7241 InstanceCreateInfo( VkInstanceCreateInfo const & rhs )
7242 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007243 memcpy( this, &rhs, sizeof( InstanceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007244 }
7245
7246 InstanceCreateInfo& operator=( VkInstanceCreateInfo const & rhs )
7247 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007248 memcpy( this, &rhs, sizeof( InstanceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007249 return *this;
7250 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007251 InstanceCreateInfo& setPNext( const void* pNext_ )
7252 {
7253 pNext = pNext_;
7254 return *this;
7255 }
7256
7257 InstanceCreateInfo& setFlags( InstanceCreateFlags flags_ )
7258 {
7259 flags = flags_;
7260 return *this;
7261 }
7262
7263 InstanceCreateInfo& setPApplicationInfo( const ApplicationInfo* pApplicationInfo_ )
7264 {
7265 pApplicationInfo = pApplicationInfo_;
7266 return *this;
7267 }
7268
7269 InstanceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
7270 {
7271 enabledLayerCount = enabledLayerCount_;
7272 return *this;
7273 }
7274
7275 InstanceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
7276 {
7277 ppEnabledLayerNames = ppEnabledLayerNames_;
7278 return *this;
7279 }
7280
7281 InstanceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
7282 {
7283 enabledExtensionCount = enabledExtensionCount_;
7284 return *this;
7285 }
7286
7287 InstanceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
7288 {
7289 ppEnabledExtensionNames = ppEnabledExtensionNames_;
7290 return *this;
7291 }
7292
7293 operator const VkInstanceCreateInfo&() const
7294 {
7295 return *reinterpret_cast<const VkInstanceCreateInfo*>(this);
7296 }
7297
7298 bool operator==( InstanceCreateInfo const& rhs ) const
7299 {
7300 return ( sType == rhs.sType )
7301 && ( pNext == rhs.pNext )
7302 && ( flags == rhs.flags )
7303 && ( pApplicationInfo == rhs.pApplicationInfo )
7304 && ( enabledLayerCount == rhs.enabledLayerCount )
7305 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
7306 && ( enabledExtensionCount == rhs.enabledExtensionCount )
7307 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames );
7308 }
7309
7310 bool operator!=( InstanceCreateInfo const& rhs ) const
7311 {
7312 return !operator==( rhs );
7313 }
7314
7315 private:
7316 StructureType sType;
7317
7318 public:
7319 const void* pNext;
7320 InstanceCreateFlags flags;
7321 const ApplicationInfo* pApplicationInfo;
7322 uint32_t enabledLayerCount;
7323 const char* const* ppEnabledLayerNames;
7324 uint32_t enabledExtensionCount;
7325 const char* const* ppEnabledExtensionNames;
7326 };
7327 static_assert( sizeof( InstanceCreateInfo ) == sizeof( VkInstanceCreateInfo ), "struct and wrapper have different size!" );
7328
7329 struct MemoryAllocateInfo
7330 {
7331 MemoryAllocateInfo( DeviceSize allocationSize_ = 0, uint32_t memoryTypeIndex_ = 0 )
7332 : sType( StructureType::eMemoryAllocateInfo )
7333 , pNext( nullptr )
7334 , allocationSize( allocationSize_ )
7335 , memoryTypeIndex( memoryTypeIndex_ )
7336 {
7337 }
7338
7339 MemoryAllocateInfo( VkMemoryAllocateInfo const & rhs )
7340 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007341 memcpy( this, &rhs, sizeof( MemoryAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007342 }
7343
7344 MemoryAllocateInfo& operator=( VkMemoryAllocateInfo const & rhs )
7345 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007346 memcpy( this, &rhs, sizeof( MemoryAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007347 return *this;
7348 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007349 MemoryAllocateInfo& setPNext( const void* pNext_ )
7350 {
7351 pNext = pNext_;
7352 return *this;
7353 }
7354
7355 MemoryAllocateInfo& setAllocationSize( DeviceSize allocationSize_ )
7356 {
7357 allocationSize = allocationSize_;
7358 return *this;
7359 }
7360
7361 MemoryAllocateInfo& setMemoryTypeIndex( uint32_t memoryTypeIndex_ )
7362 {
7363 memoryTypeIndex = memoryTypeIndex_;
7364 return *this;
7365 }
7366
7367 operator const VkMemoryAllocateInfo&() const
7368 {
7369 return *reinterpret_cast<const VkMemoryAllocateInfo*>(this);
7370 }
7371
7372 bool operator==( MemoryAllocateInfo const& rhs ) const
7373 {
7374 return ( sType == rhs.sType )
7375 && ( pNext == rhs.pNext )
7376 && ( allocationSize == rhs.allocationSize )
7377 && ( memoryTypeIndex == rhs.memoryTypeIndex );
7378 }
7379
7380 bool operator!=( MemoryAllocateInfo const& rhs ) const
7381 {
7382 return !operator==( rhs );
7383 }
7384
7385 private:
7386 StructureType sType;
7387
7388 public:
7389 const void* pNext;
7390 DeviceSize allocationSize;
7391 uint32_t memoryTypeIndex;
7392 };
7393 static_assert( sizeof( MemoryAllocateInfo ) == sizeof( VkMemoryAllocateInfo ), "struct and wrapper have different size!" );
7394
7395 struct MappedMemoryRange
7396 {
7397 MappedMemoryRange( DeviceMemory memory_ = DeviceMemory(), DeviceSize offset_ = 0, DeviceSize size_ = 0 )
7398 : sType( StructureType::eMappedMemoryRange )
7399 , pNext( nullptr )
7400 , memory( memory_ )
7401 , offset( offset_ )
7402 , size( size_ )
7403 {
7404 }
7405
7406 MappedMemoryRange( VkMappedMemoryRange const & rhs )
7407 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007408 memcpy( this, &rhs, sizeof( MappedMemoryRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007409 }
7410
7411 MappedMemoryRange& operator=( VkMappedMemoryRange const & rhs )
7412 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007413 memcpy( this, &rhs, sizeof( MappedMemoryRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007414 return *this;
7415 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007416 MappedMemoryRange& setPNext( const void* pNext_ )
7417 {
7418 pNext = pNext_;
7419 return *this;
7420 }
7421
7422 MappedMemoryRange& setMemory( DeviceMemory memory_ )
7423 {
7424 memory = memory_;
7425 return *this;
7426 }
7427
7428 MappedMemoryRange& setOffset( DeviceSize offset_ )
7429 {
7430 offset = offset_;
7431 return *this;
7432 }
7433
7434 MappedMemoryRange& setSize( DeviceSize size_ )
7435 {
7436 size = size_;
7437 return *this;
7438 }
7439
7440 operator const VkMappedMemoryRange&() const
7441 {
7442 return *reinterpret_cast<const VkMappedMemoryRange*>(this);
7443 }
7444
7445 bool operator==( MappedMemoryRange const& rhs ) const
7446 {
7447 return ( sType == rhs.sType )
7448 && ( pNext == rhs.pNext )
7449 && ( memory == rhs.memory )
7450 && ( offset == rhs.offset )
7451 && ( size == rhs.size );
7452 }
7453
7454 bool operator!=( MappedMemoryRange const& rhs ) const
7455 {
7456 return !operator==( rhs );
7457 }
7458
7459 private:
7460 StructureType sType;
7461
7462 public:
7463 const void* pNext;
7464 DeviceMemory memory;
7465 DeviceSize offset;
7466 DeviceSize size;
7467 };
7468 static_assert( sizeof( MappedMemoryRange ) == sizeof( VkMappedMemoryRange ), "struct and wrapper have different size!" );
7469
7470 struct WriteDescriptorSet
7471 {
7472 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 )
7473 : sType( StructureType::eWriteDescriptorSet )
7474 , pNext( nullptr )
7475 , dstSet( dstSet_ )
7476 , dstBinding( dstBinding_ )
7477 , dstArrayElement( dstArrayElement_ )
7478 , descriptorCount( descriptorCount_ )
7479 , descriptorType( descriptorType_ )
7480 , pImageInfo( pImageInfo_ )
7481 , pBufferInfo( pBufferInfo_ )
7482 , pTexelBufferView( pTexelBufferView_ )
7483 {
7484 }
7485
7486 WriteDescriptorSet( VkWriteDescriptorSet const & rhs )
7487 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007488 memcpy( this, &rhs, sizeof( WriteDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007489 }
7490
7491 WriteDescriptorSet& operator=( VkWriteDescriptorSet const & rhs )
7492 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007493 memcpy( this, &rhs, sizeof( WriteDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007494 return *this;
7495 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007496 WriteDescriptorSet& setPNext( const void* pNext_ )
7497 {
7498 pNext = pNext_;
7499 return *this;
7500 }
7501
7502 WriteDescriptorSet& setDstSet( DescriptorSet dstSet_ )
7503 {
7504 dstSet = dstSet_;
7505 return *this;
7506 }
7507
7508 WriteDescriptorSet& setDstBinding( uint32_t dstBinding_ )
7509 {
7510 dstBinding = dstBinding_;
7511 return *this;
7512 }
7513
7514 WriteDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
7515 {
7516 dstArrayElement = dstArrayElement_;
7517 return *this;
7518 }
7519
7520 WriteDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
7521 {
7522 descriptorCount = descriptorCount_;
7523 return *this;
7524 }
7525
7526 WriteDescriptorSet& setDescriptorType( DescriptorType descriptorType_ )
7527 {
7528 descriptorType = descriptorType_;
7529 return *this;
7530 }
7531
7532 WriteDescriptorSet& setPImageInfo( const DescriptorImageInfo* pImageInfo_ )
7533 {
7534 pImageInfo = pImageInfo_;
7535 return *this;
7536 }
7537
7538 WriteDescriptorSet& setPBufferInfo( const DescriptorBufferInfo* pBufferInfo_ )
7539 {
7540 pBufferInfo = pBufferInfo_;
7541 return *this;
7542 }
7543
7544 WriteDescriptorSet& setPTexelBufferView( const BufferView* pTexelBufferView_ )
7545 {
7546 pTexelBufferView = pTexelBufferView_;
7547 return *this;
7548 }
7549
7550 operator const VkWriteDescriptorSet&() const
7551 {
7552 return *reinterpret_cast<const VkWriteDescriptorSet*>(this);
7553 }
7554
7555 bool operator==( WriteDescriptorSet const& rhs ) const
7556 {
7557 return ( sType == rhs.sType )
7558 && ( pNext == rhs.pNext )
7559 && ( dstSet == rhs.dstSet )
7560 && ( dstBinding == rhs.dstBinding )
7561 && ( dstArrayElement == rhs.dstArrayElement )
7562 && ( descriptorCount == rhs.descriptorCount )
7563 && ( descriptorType == rhs.descriptorType )
7564 && ( pImageInfo == rhs.pImageInfo )
7565 && ( pBufferInfo == rhs.pBufferInfo )
7566 && ( pTexelBufferView == rhs.pTexelBufferView );
7567 }
7568
7569 bool operator!=( WriteDescriptorSet const& rhs ) const
7570 {
7571 return !operator==( rhs );
7572 }
7573
7574 private:
7575 StructureType sType;
7576
7577 public:
7578 const void* pNext;
7579 DescriptorSet dstSet;
7580 uint32_t dstBinding;
7581 uint32_t dstArrayElement;
7582 uint32_t descriptorCount;
7583 DescriptorType descriptorType;
7584 const DescriptorImageInfo* pImageInfo;
7585 const DescriptorBufferInfo* pBufferInfo;
7586 const BufferView* pTexelBufferView;
7587 };
7588 static_assert( sizeof( WriteDescriptorSet ) == sizeof( VkWriteDescriptorSet ), "struct and wrapper have different size!" );
7589
7590 struct CopyDescriptorSet
7591 {
7592 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 )
7593 : sType( StructureType::eCopyDescriptorSet )
7594 , pNext( nullptr )
7595 , srcSet( srcSet_ )
7596 , srcBinding( srcBinding_ )
7597 , srcArrayElement( srcArrayElement_ )
7598 , dstSet( dstSet_ )
7599 , dstBinding( dstBinding_ )
7600 , dstArrayElement( dstArrayElement_ )
7601 , descriptorCount( descriptorCount_ )
7602 {
7603 }
7604
7605 CopyDescriptorSet( VkCopyDescriptorSet const & rhs )
7606 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007607 memcpy( this, &rhs, sizeof( CopyDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007608 }
7609
7610 CopyDescriptorSet& operator=( VkCopyDescriptorSet const & rhs )
7611 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007612 memcpy( this, &rhs, sizeof( CopyDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007613 return *this;
7614 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007615 CopyDescriptorSet& setPNext( const void* pNext_ )
7616 {
7617 pNext = pNext_;
7618 return *this;
7619 }
7620
7621 CopyDescriptorSet& setSrcSet( DescriptorSet srcSet_ )
7622 {
7623 srcSet = srcSet_;
7624 return *this;
7625 }
7626
7627 CopyDescriptorSet& setSrcBinding( uint32_t srcBinding_ )
7628 {
7629 srcBinding = srcBinding_;
7630 return *this;
7631 }
7632
7633 CopyDescriptorSet& setSrcArrayElement( uint32_t srcArrayElement_ )
7634 {
7635 srcArrayElement = srcArrayElement_;
7636 return *this;
7637 }
7638
7639 CopyDescriptorSet& setDstSet( DescriptorSet dstSet_ )
7640 {
7641 dstSet = dstSet_;
7642 return *this;
7643 }
7644
7645 CopyDescriptorSet& setDstBinding( uint32_t dstBinding_ )
7646 {
7647 dstBinding = dstBinding_;
7648 return *this;
7649 }
7650
7651 CopyDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
7652 {
7653 dstArrayElement = dstArrayElement_;
7654 return *this;
7655 }
7656
7657 CopyDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
7658 {
7659 descriptorCount = descriptorCount_;
7660 return *this;
7661 }
7662
7663 operator const VkCopyDescriptorSet&() const
7664 {
7665 return *reinterpret_cast<const VkCopyDescriptorSet*>(this);
7666 }
7667
7668 bool operator==( CopyDescriptorSet const& rhs ) const
7669 {
7670 return ( sType == rhs.sType )
7671 && ( pNext == rhs.pNext )
7672 && ( srcSet == rhs.srcSet )
7673 && ( srcBinding == rhs.srcBinding )
7674 && ( srcArrayElement == rhs.srcArrayElement )
7675 && ( dstSet == rhs.dstSet )
7676 && ( dstBinding == rhs.dstBinding )
7677 && ( dstArrayElement == rhs.dstArrayElement )
7678 && ( descriptorCount == rhs.descriptorCount );
7679 }
7680
7681 bool operator!=( CopyDescriptorSet const& rhs ) const
7682 {
7683 return !operator==( rhs );
7684 }
7685
7686 private:
7687 StructureType sType;
7688
7689 public:
7690 const void* pNext;
7691 DescriptorSet srcSet;
7692 uint32_t srcBinding;
7693 uint32_t srcArrayElement;
7694 DescriptorSet dstSet;
7695 uint32_t dstBinding;
7696 uint32_t dstArrayElement;
7697 uint32_t descriptorCount;
7698 };
7699 static_assert( sizeof( CopyDescriptorSet ) == sizeof( VkCopyDescriptorSet ), "struct and wrapper have different size!" );
7700
7701 struct BufferViewCreateInfo
7702 {
7703 BufferViewCreateInfo( BufferViewCreateFlags flags_ = BufferViewCreateFlags(), Buffer buffer_ = Buffer(), Format format_ = Format::eUndefined, DeviceSize offset_ = 0, DeviceSize range_ = 0 )
7704 : sType( StructureType::eBufferViewCreateInfo )
7705 , pNext( nullptr )
7706 , flags( flags_ )
7707 , buffer( buffer_ )
7708 , format( format_ )
7709 , offset( offset_ )
7710 , range( range_ )
7711 {
7712 }
7713
7714 BufferViewCreateInfo( VkBufferViewCreateInfo const & rhs )
7715 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007716 memcpy( this, &rhs, sizeof( BufferViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007717 }
7718
7719 BufferViewCreateInfo& operator=( VkBufferViewCreateInfo const & rhs )
7720 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007721 memcpy( this, &rhs, sizeof( BufferViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007722 return *this;
7723 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007724 BufferViewCreateInfo& setPNext( const void* pNext_ )
7725 {
7726 pNext = pNext_;
7727 return *this;
7728 }
7729
7730 BufferViewCreateInfo& setFlags( BufferViewCreateFlags flags_ )
7731 {
7732 flags = flags_;
7733 return *this;
7734 }
7735
7736 BufferViewCreateInfo& setBuffer( Buffer buffer_ )
7737 {
7738 buffer = buffer_;
7739 return *this;
7740 }
7741
7742 BufferViewCreateInfo& setFormat( Format format_ )
7743 {
7744 format = format_;
7745 return *this;
7746 }
7747
7748 BufferViewCreateInfo& setOffset( DeviceSize offset_ )
7749 {
7750 offset = offset_;
7751 return *this;
7752 }
7753
7754 BufferViewCreateInfo& setRange( DeviceSize range_ )
7755 {
7756 range = range_;
7757 return *this;
7758 }
7759
7760 operator const VkBufferViewCreateInfo&() const
7761 {
7762 return *reinterpret_cast<const VkBufferViewCreateInfo*>(this);
7763 }
7764
7765 bool operator==( BufferViewCreateInfo const& rhs ) const
7766 {
7767 return ( sType == rhs.sType )
7768 && ( pNext == rhs.pNext )
7769 && ( flags == rhs.flags )
7770 && ( buffer == rhs.buffer )
7771 && ( format == rhs.format )
7772 && ( offset == rhs.offset )
7773 && ( range == rhs.range );
7774 }
7775
7776 bool operator!=( BufferViewCreateInfo const& rhs ) const
7777 {
7778 return !operator==( rhs );
7779 }
7780
7781 private:
7782 StructureType sType;
7783
7784 public:
7785 const void* pNext;
7786 BufferViewCreateFlags flags;
7787 Buffer buffer;
7788 Format format;
7789 DeviceSize offset;
7790 DeviceSize range;
7791 };
7792 static_assert( sizeof( BufferViewCreateInfo ) == sizeof( VkBufferViewCreateInfo ), "struct and wrapper have different size!" );
7793
7794 struct ShaderModuleCreateInfo
7795 {
7796 ShaderModuleCreateInfo( ShaderModuleCreateFlags flags_ = ShaderModuleCreateFlags(), size_t codeSize_ = 0, const uint32_t* pCode_ = nullptr )
7797 : sType( StructureType::eShaderModuleCreateInfo )
7798 , pNext( nullptr )
7799 , flags( flags_ )
7800 , codeSize( codeSize_ )
7801 , pCode( pCode_ )
7802 {
7803 }
7804
7805 ShaderModuleCreateInfo( VkShaderModuleCreateInfo const & rhs )
7806 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007807 memcpy( this, &rhs, sizeof( ShaderModuleCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007808 }
7809
7810 ShaderModuleCreateInfo& operator=( VkShaderModuleCreateInfo const & rhs )
7811 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007812 memcpy( this, &rhs, sizeof( ShaderModuleCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007813 return *this;
7814 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007815 ShaderModuleCreateInfo& setPNext( const void* pNext_ )
7816 {
7817 pNext = pNext_;
7818 return *this;
7819 }
7820
7821 ShaderModuleCreateInfo& setFlags( ShaderModuleCreateFlags flags_ )
7822 {
7823 flags = flags_;
7824 return *this;
7825 }
7826
7827 ShaderModuleCreateInfo& setCodeSize( size_t codeSize_ )
7828 {
7829 codeSize = codeSize_;
7830 return *this;
7831 }
7832
7833 ShaderModuleCreateInfo& setPCode( const uint32_t* pCode_ )
7834 {
7835 pCode = pCode_;
7836 return *this;
7837 }
7838
7839 operator const VkShaderModuleCreateInfo&() const
7840 {
7841 return *reinterpret_cast<const VkShaderModuleCreateInfo*>(this);
7842 }
7843
7844 bool operator==( ShaderModuleCreateInfo const& rhs ) const
7845 {
7846 return ( sType == rhs.sType )
7847 && ( pNext == rhs.pNext )
7848 && ( flags == rhs.flags )
7849 && ( codeSize == rhs.codeSize )
7850 && ( pCode == rhs.pCode );
7851 }
7852
7853 bool operator!=( ShaderModuleCreateInfo const& rhs ) const
7854 {
7855 return !operator==( rhs );
7856 }
7857
7858 private:
7859 StructureType sType;
7860
7861 public:
7862 const void* pNext;
7863 ShaderModuleCreateFlags flags;
7864 size_t codeSize;
7865 const uint32_t* pCode;
7866 };
7867 static_assert( sizeof( ShaderModuleCreateInfo ) == sizeof( VkShaderModuleCreateInfo ), "struct and wrapper have different size!" );
7868
7869 struct DescriptorSetAllocateInfo
7870 {
7871 DescriptorSetAllocateInfo( DescriptorPool descriptorPool_ = DescriptorPool(), uint32_t descriptorSetCount_ = 0, const DescriptorSetLayout* pSetLayouts_ = nullptr )
7872 : sType( StructureType::eDescriptorSetAllocateInfo )
7873 , pNext( nullptr )
7874 , descriptorPool( descriptorPool_ )
7875 , descriptorSetCount( descriptorSetCount_ )
7876 , pSetLayouts( pSetLayouts_ )
7877 {
7878 }
7879
7880 DescriptorSetAllocateInfo( VkDescriptorSetAllocateInfo const & rhs )
7881 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007882 memcpy( this, &rhs, sizeof( DescriptorSetAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007883 }
7884
7885 DescriptorSetAllocateInfo& operator=( VkDescriptorSetAllocateInfo const & rhs )
7886 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007887 memcpy( this, &rhs, sizeof( DescriptorSetAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007888 return *this;
7889 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007890 DescriptorSetAllocateInfo& setPNext( const void* pNext_ )
7891 {
7892 pNext = pNext_;
7893 return *this;
7894 }
7895
7896 DescriptorSetAllocateInfo& setDescriptorPool( DescriptorPool descriptorPool_ )
7897 {
7898 descriptorPool = descriptorPool_;
7899 return *this;
7900 }
7901
7902 DescriptorSetAllocateInfo& setDescriptorSetCount( uint32_t descriptorSetCount_ )
7903 {
7904 descriptorSetCount = descriptorSetCount_;
7905 return *this;
7906 }
7907
7908 DescriptorSetAllocateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
7909 {
7910 pSetLayouts = pSetLayouts_;
7911 return *this;
7912 }
7913
7914 operator const VkDescriptorSetAllocateInfo&() const
7915 {
7916 return *reinterpret_cast<const VkDescriptorSetAllocateInfo*>(this);
7917 }
7918
7919 bool operator==( DescriptorSetAllocateInfo const& rhs ) const
7920 {
7921 return ( sType == rhs.sType )
7922 && ( pNext == rhs.pNext )
7923 && ( descriptorPool == rhs.descriptorPool )
7924 && ( descriptorSetCount == rhs.descriptorSetCount )
7925 && ( pSetLayouts == rhs.pSetLayouts );
7926 }
7927
7928 bool operator!=( DescriptorSetAllocateInfo const& rhs ) const
7929 {
7930 return !operator==( rhs );
7931 }
7932
7933 private:
7934 StructureType sType;
7935
7936 public:
7937 const void* pNext;
7938 DescriptorPool descriptorPool;
7939 uint32_t descriptorSetCount;
7940 const DescriptorSetLayout* pSetLayouts;
7941 };
7942 static_assert( sizeof( DescriptorSetAllocateInfo ) == sizeof( VkDescriptorSetAllocateInfo ), "struct and wrapper have different size!" );
7943
7944 struct PipelineVertexInputStateCreateInfo
7945 {
7946 PipelineVertexInputStateCreateInfo( PipelineVertexInputStateCreateFlags flags_ = PipelineVertexInputStateCreateFlags(), uint32_t vertexBindingDescriptionCount_ = 0, const VertexInputBindingDescription* pVertexBindingDescriptions_ = nullptr, uint32_t vertexAttributeDescriptionCount_ = 0, const VertexInputAttributeDescription* pVertexAttributeDescriptions_ = nullptr )
7947 : sType( StructureType::ePipelineVertexInputStateCreateInfo )
7948 , pNext( nullptr )
7949 , flags( flags_ )
7950 , vertexBindingDescriptionCount( vertexBindingDescriptionCount_ )
7951 , pVertexBindingDescriptions( pVertexBindingDescriptions_ )
7952 , vertexAttributeDescriptionCount( vertexAttributeDescriptionCount_ )
7953 , pVertexAttributeDescriptions( pVertexAttributeDescriptions_ )
7954 {
7955 }
7956
7957 PipelineVertexInputStateCreateInfo( VkPipelineVertexInputStateCreateInfo const & rhs )
7958 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007959 memcpy( this, &rhs, sizeof( PipelineVertexInputStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007960 }
7961
7962 PipelineVertexInputStateCreateInfo& operator=( VkPipelineVertexInputStateCreateInfo const & rhs )
7963 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007964 memcpy( this, &rhs, sizeof( PipelineVertexInputStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007965 return *this;
7966 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007967 PipelineVertexInputStateCreateInfo& setPNext( const void* pNext_ )
7968 {
7969 pNext = pNext_;
7970 return *this;
7971 }
7972
7973 PipelineVertexInputStateCreateInfo& setFlags( PipelineVertexInputStateCreateFlags flags_ )
7974 {
7975 flags = flags_;
7976 return *this;
7977 }
7978
7979 PipelineVertexInputStateCreateInfo& setVertexBindingDescriptionCount( uint32_t vertexBindingDescriptionCount_ )
7980 {
7981 vertexBindingDescriptionCount = vertexBindingDescriptionCount_;
7982 return *this;
7983 }
7984
7985 PipelineVertexInputStateCreateInfo& setPVertexBindingDescriptions( const VertexInputBindingDescription* pVertexBindingDescriptions_ )
7986 {
7987 pVertexBindingDescriptions = pVertexBindingDescriptions_;
7988 return *this;
7989 }
7990
7991 PipelineVertexInputStateCreateInfo& setVertexAttributeDescriptionCount( uint32_t vertexAttributeDescriptionCount_ )
7992 {
7993 vertexAttributeDescriptionCount = vertexAttributeDescriptionCount_;
7994 return *this;
7995 }
7996
7997 PipelineVertexInputStateCreateInfo& setPVertexAttributeDescriptions( const VertexInputAttributeDescription* pVertexAttributeDescriptions_ )
7998 {
7999 pVertexAttributeDescriptions = pVertexAttributeDescriptions_;
8000 return *this;
8001 }
8002
8003 operator const VkPipelineVertexInputStateCreateInfo&() const
8004 {
8005 return *reinterpret_cast<const VkPipelineVertexInputStateCreateInfo*>(this);
8006 }
8007
8008 bool operator==( PipelineVertexInputStateCreateInfo const& rhs ) const
8009 {
8010 return ( sType == rhs.sType )
8011 && ( pNext == rhs.pNext )
8012 && ( flags == rhs.flags )
8013 && ( vertexBindingDescriptionCount == rhs.vertexBindingDescriptionCount )
8014 && ( pVertexBindingDescriptions == rhs.pVertexBindingDescriptions )
8015 && ( vertexAttributeDescriptionCount == rhs.vertexAttributeDescriptionCount )
8016 && ( pVertexAttributeDescriptions == rhs.pVertexAttributeDescriptions );
8017 }
8018
8019 bool operator!=( PipelineVertexInputStateCreateInfo const& rhs ) const
8020 {
8021 return !operator==( rhs );
8022 }
8023
8024 private:
8025 StructureType sType;
8026
8027 public:
8028 const void* pNext;
8029 PipelineVertexInputStateCreateFlags flags;
8030 uint32_t vertexBindingDescriptionCount;
8031 const VertexInputBindingDescription* pVertexBindingDescriptions;
8032 uint32_t vertexAttributeDescriptionCount;
8033 const VertexInputAttributeDescription* pVertexAttributeDescriptions;
8034 };
8035 static_assert( sizeof( PipelineVertexInputStateCreateInfo ) == sizeof( VkPipelineVertexInputStateCreateInfo ), "struct and wrapper have different size!" );
8036
8037 struct PipelineInputAssemblyStateCreateInfo
8038 {
8039 PipelineInputAssemblyStateCreateInfo( PipelineInputAssemblyStateCreateFlags flags_ = PipelineInputAssemblyStateCreateFlags(), PrimitiveTopology topology_ = PrimitiveTopology::ePointList, Bool32 primitiveRestartEnable_ = 0 )
8040 : sType( StructureType::ePipelineInputAssemblyStateCreateInfo )
8041 , pNext( nullptr )
8042 , flags( flags_ )
8043 , topology( topology_ )
8044 , primitiveRestartEnable( primitiveRestartEnable_ )
8045 {
8046 }
8047
8048 PipelineInputAssemblyStateCreateInfo( VkPipelineInputAssemblyStateCreateInfo const & rhs )
8049 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008050 memcpy( this, &rhs, sizeof( PipelineInputAssemblyStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008051 }
8052
8053 PipelineInputAssemblyStateCreateInfo& operator=( VkPipelineInputAssemblyStateCreateInfo const & rhs )
8054 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008055 memcpy( this, &rhs, sizeof( PipelineInputAssemblyStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008056 return *this;
8057 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008058 PipelineInputAssemblyStateCreateInfo& setPNext( const void* pNext_ )
8059 {
8060 pNext = pNext_;
8061 return *this;
8062 }
8063
8064 PipelineInputAssemblyStateCreateInfo& setFlags( PipelineInputAssemblyStateCreateFlags flags_ )
8065 {
8066 flags = flags_;
8067 return *this;
8068 }
8069
8070 PipelineInputAssemblyStateCreateInfo& setTopology( PrimitiveTopology topology_ )
8071 {
8072 topology = topology_;
8073 return *this;
8074 }
8075
8076 PipelineInputAssemblyStateCreateInfo& setPrimitiveRestartEnable( Bool32 primitiveRestartEnable_ )
8077 {
8078 primitiveRestartEnable = primitiveRestartEnable_;
8079 return *this;
8080 }
8081
8082 operator const VkPipelineInputAssemblyStateCreateInfo&() const
8083 {
8084 return *reinterpret_cast<const VkPipelineInputAssemblyStateCreateInfo*>(this);
8085 }
8086
8087 bool operator==( PipelineInputAssemblyStateCreateInfo const& rhs ) const
8088 {
8089 return ( sType == rhs.sType )
8090 && ( pNext == rhs.pNext )
8091 && ( flags == rhs.flags )
8092 && ( topology == rhs.topology )
8093 && ( primitiveRestartEnable == rhs.primitiveRestartEnable );
8094 }
8095
8096 bool operator!=( PipelineInputAssemblyStateCreateInfo const& rhs ) const
8097 {
8098 return !operator==( rhs );
8099 }
8100
8101 private:
8102 StructureType sType;
8103
8104 public:
8105 const void* pNext;
8106 PipelineInputAssemblyStateCreateFlags flags;
8107 PrimitiveTopology topology;
8108 Bool32 primitiveRestartEnable;
8109 };
8110 static_assert( sizeof( PipelineInputAssemblyStateCreateInfo ) == sizeof( VkPipelineInputAssemblyStateCreateInfo ), "struct and wrapper have different size!" );
8111
8112 struct PipelineTessellationStateCreateInfo
8113 {
8114 PipelineTessellationStateCreateInfo( PipelineTessellationStateCreateFlags flags_ = PipelineTessellationStateCreateFlags(), uint32_t patchControlPoints_ = 0 )
8115 : sType( StructureType::ePipelineTessellationStateCreateInfo )
8116 , pNext( nullptr )
8117 , flags( flags_ )
8118 , patchControlPoints( patchControlPoints_ )
8119 {
8120 }
8121
8122 PipelineTessellationStateCreateInfo( VkPipelineTessellationStateCreateInfo const & rhs )
8123 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008124 memcpy( this, &rhs, sizeof( PipelineTessellationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008125 }
8126
8127 PipelineTessellationStateCreateInfo& operator=( VkPipelineTessellationStateCreateInfo const & rhs )
8128 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008129 memcpy( this, &rhs, sizeof( PipelineTessellationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008130 return *this;
8131 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008132 PipelineTessellationStateCreateInfo& setPNext( const void* pNext_ )
8133 {
8134 pNext = pNext_;
8135 return *this;
8136 }
8137
8138 PipelineTessellationStateCreateInfo& setFlags( PipelineTessellationStateCreateFlags flags_ )
8139 {
8140 flags = flags_;
8141 return *this;
8142 }
8143
8144 PipelineTessellationStateCreateInfo& setPatchControlPoints( uint32_t patchControlPoints_ )
8145 {
8146 patchControlPoints = patchControlPoints_;
8147 return *this;
8148 }
8149
8150 operator const VkPipelineTessellationStateCreateInfo&() const
8151 {
8152 return *reinterpret_cast<const VkPipelineTessellationStateCreateInfo*>(this);
8153 }
8154
8155 bool operator==( PipelineTessellationStateCreateInfo const& rhs ) const
8156 {
8157 return ( sType == rhs.sType )
8158 && ( pNext == rhs.pNext )
8159 && ( flags == rhs.flags )
8160 && ( patchControlPoints == rhs.patchControlPoints );
8161 }
8162
8163 bool operator!=( PipelineTessellationStateCreateInfo const& rhs ) const
8164 {
8165 return !operator==( rhs );
8166 }
8167
8168 private:
8169 StructureType sType;
8170
8171 public:
8172 const void* pNext;
8173 PipelineTessellationStateCreateFlags flags;
8174 uint32_t patchControlPoints;
8175 };
8176 static_assert( sizeof( PipelineTessellationStateCreateInfo ) == sizeof( VkPipelineTessellationStateCreateInfo ), "struct and wrapper have different size!" );
8177
8178 struct PipelineViewportStateCreateInfo
8179 {
8180 PipelineViewportStateCreateInfo( PipelineViewportStateCreateFlags flags_ = PipelineViewportStateCreateFlags(), uint32_t viewportCount_ = 0, const Viewport* pViewports_ = nullptr, uint32_t scissorCount_ = 0, const Rect2D* pScissors_ = nullptr )
8181 : sType( StructureType::ePipelineViewportStateCreateInfo )
8182 , pNext( nullptr )
8183 , flags( flags_ )
8184 , viewportCount( viewportCount_ )
8185 , pViewports( pViewports_ )
8186 , scissorCount( scissorCount_ )
8187 , pScissors( pScissors_ )
8188 {
8189 }
8190
8191 PipelineViewportStateCreateInfo( VkPipelineViewportStateCreateInfo const & rhs )
8192 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008193 memcpy( this, &rhs, sizeof( PipelineViewportStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008194 }
8195
8196 PipelineViewportStateCreateInfo& operator=( VkPipelineViewportStateCreateInfo const & rhs )
8197 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008198 memcpy( this, &rhs, sizeof( PipelineViewportStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008199 return *this;
8200 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008201 PipelineViewportStateCreateInfo& setPNext( const void* pNext_ )
8202 {
8203 pNext = pNext_;
8204 return *this;
8205 }
8206
8207 PipelineViewportStateCreateInfo& setFlags( PipelineViewportStateCreateFlags flags_ )
8208 {
8209 flags = flags_;
8210 return *this;
8211 }
8212
8213 PipelineViewportStateCreateInfo& setViewportCount( uint32_t viewportCount_ )
8214 {
8215 viewportCount = viewportCount_;
8216 return *this;
8217 }
8218
8219 PipelineViewportStateCreateInfo& setPViewports( const Viewport* pViewports_ )
8220 {
8221 pViewports = pViewports_;
8222 return *this;
8223 }
8224
8225 PipelineViewportStateCreateInfo& setScissorCount( uint32_t scissorCount_ )
8226 {
8227 scissorCount = scissorCount_;
8228 return *this;
8229 }
8230
8231 PipelineViewportStateCreateInfo& setPScissors( const Rect2D* pScissors_ )
8232 {
8233 pScissors = pScissors_;
8234 return *this;
8235 }
8236
8237 operator const VkPipelineViewportStateCreateInfo&() const
8238 {
8239 return *reinterpret_cast<const VkPipelineViewportStateCreateInfo*>(this);
8240 }
8241
8242 bool operator==( PipelineViewportStateCreateInfo const& rhs ) const
8243 {
8244 return ( sType == rhs.sType )
8245 && ( pNext == rhs.pNext )
8246 && ( flags == rhs.flags )
8247 && ( viewportCount == rhs.viewportCount )
8248 && ( pViewports == rhs.pViewports )
8249 && ( scissorCount == rhs.scissorCount )
8250 && ( pScissors == rhs.pScissors );
8251 }
8252
8253 bool operator!=( PipelineViewportStateCreateInfo const& rhs ) const
8254 {
8255 return !operator==( rhs );
8256 }
8257
8258 private:
8259 StructureType sType;
8260
8261 public:
8262 const void* pNext;
8263 PipelineViewportStateCreateFlags flags;
8264 uint32_t viewportCount;
8265 const Viewport* pViewports;
8266 uint32_t scissorCount;
8267 const Rect2D* pScissors;
8268 };
8269 static_assert( sizeof( PipelineViewportStateCreateInfo ) == sizeof( VkPipelineViewportStateCreateInfo ), "struct and wrapper have different size!" );
8270
8271 struct PipelineRasterizationStateCreateInfo
8272 {
8273 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 )
8274 : sType( StructureType::ePipelineRasterizationStateCreateInfo )
8275 , pNext( nullptr )
8276 , flags( flags_ )
8277 , depthClampEnable( depthClampEnable_ )
8278 , rasterizerDiscardEnable( rasterizerDiscardEnable_ )
8279 , polygonMode( polygonMode_ )
8280 , cullMode( cullMode_ )
8281 , frontFace( frontFace_ )
8282 , depthBiasEnable( depthBiasEnable_ )
8283 , depthBiasConstantFactor( depthBiasConstantFactor_ )
8284 , depthBiasClamp( depthBiasClamp_ )
8285 , depthBiasSlopeFactor( depthBiasSlopeFactor_ )
8286 , lineWidth( lineWidth_ )
8287 {
8288 }
8289
8290 PipelineRasterizationStateCreateInfo( VkPipelineRasterizationStateCreateInfo const & rhs )
8291 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008292 memcpy( this, &rhs, sizeof( PipelineRasterizationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008293 }
8294
8295 PipelineRasterizationStateCreateInfo& operator=( VkPipelineRasterizationStateCreateInfo const & rhs )
8296 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008297 memcpy( this, &rhs, sizeof( PipelineRasterizationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008298 return *this;
8299 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008300 PipelineRasterizationStateCreateInfo& setPNext( const void* pNext_ )
8301 {
8302 pNext = pNext_;
8303 return *this;
8304 }
8305
8306 PipelineRasterizationStateCreateInfo& setFlags( PipelineRasterizationStateCreateFlags flags_ )
8307 {
8308 flags = flags_;
8309 return *this;
8310 }
8311
8312 PipelineRasterizationStateCreateInfo& setDepthClampEnable( Bool32 depthClampEnable_ )
8313 {
8314 depthClampEnable = depthClampEnable_;
8315 return *this;
8316 }
8317
8318 PipelineRasterizationStateCreateInfo& setRasterizerDiscardEnable( Bool32 rasterizerDiscardEnable_ )
8319 {
8320 rasterizerDiscardEnable = rasterizerDiscardEnable_;
8321 return *this;
8322 }
8323
8324 PipelineRasterizationStateCreateInfo& setPolygonMode( PolygonMode polygonMode_ )
8325 {
8326 polygonMode = polygonMode_;
8327 return *this;
8328 }
8329
8330 PipelineRasterizationStateCreateInfo& setCullMode( CullModeFlags cullMode_ )
8331 {
8332 cullMode = cullMode_;
8333 return *this;
8334 }
8335
8336 PipelineRasterizationStateCreateInfo& setFrontFace( FrontFace frontFace_ )
8337 {
8338 frontFace = frontFace_;
8339 return *this;
8340 }
8341
8342 PipelineRasterizationStateCreateInfo& setDepthBiasEnable( Bool32 depthBiasEnable_ )
8343 {
8344 depthBiasEnable = depthBiasEnable_;
8345 return *this;
8346 }
8347
8348 PipelineRasterizationStateCreateInfo& setDepthBiasConstantFactor( float depthBiasConstantFactor_ )
8349 {
8350 depthBiasConstantFactor = depthBiasConstantFactor_;
8351 return *this;
8352 }
8353
8354 PipelineRasterizationStateCreateInfo& setDepthBiasClamp( float depthBiasClamp_ )
8355 {
8356 depthBiasClamp = depthBiasClamp_;
8357 return *this;
8358 }
8359
8360 PipelineRasterizationStateCreateInfo& setDepthBiasSlopeFactor( float depthBiasSlopeFactor_ )
8361 {
8362 depthBiasSlopeFactor = depthBiasSlopeFactor_;
8363 return *this;
8364 }
8365
8366 PipelineRasterizationStateCreateInfo& setLineWidth( float lineWidth_ )
8367 {
8368 lineWidth = lineWidth_;
8369 return *this;
8370 }
8371
8372 operator const VkPipelineRasterizationStateCreateInfo&() const
8373 {
8374 return *reinterpret_cast<const VkPipelineRasterizationStateCreateInfo*>(this);
8375 }
8376
8377 bool operator==( PipelineRasterizationStateCreateInfo const& rhs ) const
8378 {
8379 return ( sType == rhs.sType )
8380 && ( pNext == rhs.pNext )
8381 && ( flags == rhs.flags )
8382 && ( depthClampEnable == rhs.depthClampEnable )
8383 && ( rasterizerDiscardEnable == rhs.rasterizerDiscardEnable )
8384 && ( polygonMode == rhs.polygonMode )
8385 && ( cullMode == rhs.cullMode )
8386 && ( frontFace == rhs.frontFace )
8387 && ( depthBiasEnable == rhs.depthBiasEnable )
8388 && ( depthBiasConstantFactor == rhs.depthBiasConstantFactor )
8389 && ( depthBiasClamp == rhs.depthBiasClamp )
8390 && ( depthBiasSlopeFactor == rhs.depthBiasSlopeFactor )
8391 && ( lineWidth == rhs.lineWidth );
8392 }
8393
8394 bool operator!=( PipelineRasterizationStateCreateInfo const& rhs ) const
8395 {
8396 return !operator==( rhs );
8397 }
8398
8399 private:
8400 StructureType sType;
8401
8402 public:
8403 const void* pNext;
8404 PipelineRasterizationStateCreateFlags flags;
8405 Bool32 depthClampEnable;
8406 Bool32 rasterizerDiscardEnable;
8407 PolygonMode polygonMode;
8408 CullModeFlags cullMode;
8409 FrontFace frontFace;
8410 Bool32 depthBiasEnable;
8411 float depthBiasConstantFactor;
8412 float depthBiasClamp;
8413 float depthBiasSlopeFactor;
8414 float lineWidth;
8415 };
8416 static_assert( sizeof( PipelineRasterizationStateCreateInfo ) == sizeof( VkPipelineRasterizationStateCreateInfo ), "struct and wrapper have different size!" );
8417
8418 struct PipelineDepthStencilStateCreateInfo
8419 {
8420 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 )
8421 : sType( StructureType::ePipelineDepthStencilStateCreateInfo )
8422 , pNext( nullptr )
8423 , flags( flags_ )
8424 , depthTestEnable( depthTestEnable_ )
8425 , depthWriteEnable( depthWriteEnable_ )
8426 , depthCompareOp( depthCompareOp_ )
8427 , depthBoundsTestEnable( depthBoundsTestEnable_ )
8428 , stencilTestEnable( stencilTestEnable_ )
8429 , front( front_ )
8430 , back( back_ )
8431 , minDepthBounds( minDepthBounds_ )
8432 , maxDepthBounds( maxDepthBounds_ )
8433 {
8434 }
8435
8436 PipelineDepthStencilStateCreateInfo( VkPipelineDepthStencilStateCreateInfo const & rhs )
8437 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008438 memcpy( this, &rhs, sizeof( PipelineDepthStencilStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008439 }
8440
8441 PipelineDepthStencilStateCreateInfo& operator=( VkPipelineDepthStencilStateCreateInfo const & rhs )
8442 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008443 memcpy( this, &rhs, sizeof( PipelineDepthStencilStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008444 return *this;
8445 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008446 PipelineDepthStencilStateCreateInfo& setPNext( const void* pNext_ )
8447 {
8448 pNext = pNext_;
8449 return *this;
8450 }
8451
8452 PipelineDepthStencilStateCreateInfo& setFlags( PipelineDepthStencilStateCreateFlags flags_ )
8453 {
8454 flags = flags_;
8455 return *this;
8456 }
8457
8458 PipelineDepthStencilStateCreateInfo& setDepthTestEnable( Bool32 depthTestEnable_ )
8459 {
8460 depthTestEnable = depthTestEnable_;
8461 return *this;
8462 }
8463
8464 PipelineDepthStencilStateCreateInfo& setDepthWriteEnable( Bool32 depthWriteEnable_ )
8465 {
8466 depthWriteEnable = depthWriteEnable_;
8467 return *this;
8468 }
8469
8470 PipelineDepthStencilStateCreateInfo& setDepthCompareOp( CompareOp depthCompareOp_ )
8471 {
8472 depthCompareOp = depthCompareOp_;
8473 return *this;
8474 }
8475
8476 PipelineDepthStencilStateCreateInfo& setDepthBoundsTestEnable( Bool32 depthBoundsTestEnable_ )
8477 {
8478 depthBoundsTestEnable = depthBoundsTestEnable_;
8479 return *this;
8480 }
8481
8482 PipelineDepthStencilStateCreateInfo& setStencilTestEnable( Bool32 stencilTestEnable_ )
8483 {
8484 stencilTestEnable = stencilTestEnable_;
8485 return *this;
8486 }
8487
8488 PipelineDepthStencilStateCreateInfo& setFront( StencilOpState front_ )
8489 {
8490 front = front_;
8491 return *this;
8492 }
8493
8494 PipelineDepthStencilStateCreateInfo& setBack( StencilOpState back_ )
8495 {
8496 back = back_;
8497 return *this;
8498 }
8499
8500 PipelineDepthStencilStateCreateInfo& setMinDepthBounds( float minDepthBounds_ )
8501 {
8502 minDepthBounds = minDepthBounds_;
8503 return *this;
8504 }
8505
8506 PipelineDepthStencilStateCreateInfo& setMaxDepthBounds( float maxDepthBounds_ )
8507 {
8508 maxDepthBounds = maxDepthBounds_;
8509 return *this;
8510 }
8511
8512 operator const VkPipelineDepthStencilStateCreateInfo&() const
8513 {
8514 return *reinterpret_cast<const VkPipelineDepthStencilStateCreateInfo*>(this);
8515 }
8516
8517 bool operator==( PipelineDepthStencilStateCreateInfo const& rhs ) const
8518 {
8519 return ( sType == rhs.sType )
8520 && ( pNext == rhs.pNext )
8521 && ( flags == rhs.flags )
8522 && ( depthTestEnable == rhs.depthTestEnable )
8523 && ( depthWriteEnable == rhs.depthWriteEnable )
8524 && ( depthCompareOp == rhs.depthCompareOp )
8525 && ( depthBoundsTestEnable == rhs.depthBoundsTestEnable )
8526 && ( stencilTestEnable == rhs.stencilTestEnable )
8527 && ( front == rhs.front )
8528 && ( back == rhs.back )
8529 && ( minDepthBounds == rhs.minDepthBounds )
8530 && ( maxDepthBounds == rhs.maxDepthBounds );
8531 }
8532
8533 bool operator!=( PipelineDepthStencilStateCreateInfo const& rhs ) const
8534 {
8535 return !operator==( rhs );
8536 }
8537
8538 private:
8539 StructureType sType;
8540
8541 public:
8542 const void* pNext;
8543 PipelineDepthStencilStateCreateFlags flags;
8544 Bool32 depthTestEnable;
8545 Bool32 depthWriteEnable;
8546 CompareOp depthCompareOp;
8547 Bool32 depthBoundsTestEnable;
8548 Bool32 stencilTestEnable;
8549 StencilOpState front;
8550 StencilOpState back;
8551 float minDepthBounds;
8552 float maxDepthBounds;
8553 };
8554 static_assert( sizeof( PipelineDepthStencilStateCreateInfo ) == sizeof( VkPipelineDepthStencilStateCreateInfo ), "struct and wrapper have different size!" );
8555
8556 struct PipelineCacheCreateInfo
8557 {
8558 PipelineCacheCreateInfo( PipelineCacheCreateFlags flags_ = PipelineCacheCreateFlags(), size_t initialDataSize_ = 0, const void* pInitialData_ = nullptr )
8559 : sType( StructureType::ePipelineCacheCreateInfo )
8560 , pNext( nullptr )
8561 , flags( flags_ )
8562 , initialDataSize( initialDataSize_ )
8563 , pInitialData( pInitialData_ )
8564 {
8565 }
8566
8567 PipelineCacheCreateInfo( VkPipelineCacheCreateInfo const & rhs )
8568 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008569 memcpy( this, &rhs, sizeof( PipelineCacheCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008570 }
8571
8572 PipelineCacheCreateInfo& operator=( VkPipelineCacheCreateInfo const & rhs )
8573 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008574 memcpy( this, &rhs, sizeof( PipelineCacheCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008575 return *this;
8576 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008577 PipelineCacheCreateInfo& setPNext( const void* pNext_ )
8578 {
8579 pNext = pNext_;
8580 return *this;
8581 }
8582
8583 PipelineCacheCreateInfo& setFlags( PipelineCacheCreateFlags flags_ )
8584 {
8585 flags = flags_;
8586 return *this;
8587 }
8588
8589 PipelineCacheCreateInfo& setInitialDataSize( size_t initialDataSize_ )
8590 {
8591 initialDataSize = initialDataSize_;
8592 return *this;
8593 }
8594
8595 PipelineCacheCreateInfo& setPInitialData( const void* pInitialData_ )
8596 {
8597 pInitialData = pInitialData_;
8598 return *this;
8599 }
8600
8601 operator const VkPipelineCacheCreateInfo&() const
8602 {
8603 return *reinterpret_cast<const VkPipelineCacheCreateInfo*>(this);
8604 }
8605
8606 bool operator==( PipelineCacheCreateInfo const& rhs ) const
8607 {
8608 return ( sType == rhs.sType )
8609 && ( pNext == rhs.pNext )
8610 && ( flags == rhs.flags )
8611 && ( initialDataSize == rhs.initialDataSize )
8612 && ( pInitialData == rhs.pInitialData );
8613 }
8614
8615 bool operator!=( PipelineCacheCreateInfo const& rhs ) const
8616 {
8617 return !operator==( rhs );
8618 }
8619
8620 private:
8621 StructureType sType;
8622
8623 public:
8624 const void* pNext;
8625 PipelineCacheCreateFlags flags;
8626 size_t initialDataSize;
8627 const void* pInitialData;
8628 };
8629 static_assert( sizeof( PipelineCacheCreateInfo ) == sizeof( VkPipelineCacheCreateInfo ), "struct and wrapper have different size!" );
8630
8631 struct SamplerCreateInfo
8632 {
8633 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 )
8634 : sType( StructureType::eSamplerCreateInfo )
8635 , pNext( nullptr )
8636 , flags( flags_ )
8637 , magFilter( magFilter_ )
8638 , minFilter( minFilter_ )
8639 , mipmapMode( mipmapMode_ )
8640 , addressModeU( addressModeU_ )
8641 , addressModeV( addressModeV_ )
8642 , addressModeW( addressModeW_ )
8643 , mipLodBias( mipLodBias_ )
8644 , anisotropyEnable( anisotropyEnable_ )
8645 , maxAnisotropy( maxAnisotropy_ )
8646 , compareEnable( compareEnable_ )
8647 , compareOp( compareOp_ )
8648 , minLod( minLod_ )
8649 , maxLod( maxLod_ )
8650 , borderColor( borderColor_ )
8651 , unnormalizedCoordinates( unnormalizedCoordinates_ )
8652 {
8653 }
8654
8655 SamplerCreateInfo( VkSamplerCreateInfo const & rhs )
8656 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008657 memcpy( this, &rhs, sizeof( SamplerCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008658 }
8659
8660 SamplerCreateInfo& operator=( VkSamplerCreateInfo const & rhs )
8661 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008662 memcpy( this, &rhs, sizeof( SamplerCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008663 return *this;
8664 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008665 SamplerCreateInfo& setPNext( const void* pNext_ )
8666 {
8667 pNext = pNext_;
8668 return *this;
8669 }
8670
8671 SamplerCreateInfo& setFlags( SamplerCreateFlags flags_ )
8672 {
8673 flags = flags_;
8674 return *this;
8675 }
8676
8677 SamplerCreateInfo& setMagFilter( Filter magFilter_ )
8678 {
8679 magFilter = magFilter_;
8680 return *this;
8681 }
8682
8683 SamplerCreateInfo& setMinFilter( Filter minFilter_ )
8684 {
8685 minFilter = minFilter_;
8686 return *this;
8687 }
8688
8689 SamplerCreateInfo& setMipmapMode( SamplerMipmapMode mipmapMode_ )
8690 {
8691 mipmapMode = mipmapMode_;
8692 return *this;
8693 }
8694
8695 SamplerCreateInfo& setAddressModeU( SamplerAddressMode addressModeU_ )
8696 {
8697 addressModeU = addressModeU_;
8698 return *this;
8699 }
8700
8701 SamplerCreateInfo& setAddressModeV( SamplerAddressMode addressModeV_ )
8702 {
8703 addressModeV = addressModeV_;
8704 return *this;
8705 }
8706
8707 SamplerCreateInfo& setAddressModeW( SamplerAddressMode addressModeW_ )
8708 {
8709 addressModeW = addressModeW_;
8710 return *this;
8711 }
8712
8713 SamplerCreateInfo& setMipLodBias( float mipLodBias_ )
8714 {
8715 mipLodBias = mipLodBias_;
8716 return *this;
8717 }
8718
8719 SamplerCreateInfo& setAnisotropyEnable( Bool32 anisotropyEnable_ )
8720 {
8721 anisotropyEnable = anisotropyEnable_;
8722 return *this;
8723 }
8724
8725 SamplerCreateInfo& setMaxAnisotropy( float maxAnisotropy_ )
8726 {
8727 maxAnisotropy = maxAnisotropy_;
8728 return *this;
8729 }
8730
8731 SamplerCreateInfo& setCompareEnable( Bool32 compareEnable_ )
8732 {
8733 compareEnable = compareEnable_;
8734 return *this;
8735 }
8736
8737 SamplerCreateInfo& setCompareOp( CompareOp compareOp_ )
8738 {
8739 compareOp = compareOp_;
8740 return *this;
8741 }
8742
8743 SamplerCreateInfo& setMinLod( float minLod_ )
8744 {
8745 minLod = minLod_;
8746 return *this;
8747 }
8748
8749 SamplerCreateInfo& setMaxLod( float maxLod_ )
8750 {
8751 maxLod = maxLod_;
8752 return *this;
8753 }
8754
8755 SamplerCreateInfo& setBorderColor( BorderColor borderColor_ )
8756 {
8757 borderColor = borderColor_;
8758 return *this;
8759 }
8760
8761 SamplerCreateInfo& setUnnormalizedCoordinates( Bool32 unnormalizedCoordinates_ )
8762 {
8763 unnormalizedCoordinates = unnormalizedCoordinates_;
8764 return *this;
8765 }
8766
8767 operator const VkSamplerCreateInfo&() const
8768 {
8769 return *reinterpret_cast<const VkSamplerCreateInfo*>(this);
8770 }
8771
8772 bool operator==( SamplerCreateInfo const& rhs ) const
8773 {
8774 return ( sType == rhs.sType )
8775 && ( pNext == rhs.pNext )
8776 && ( flags == rhs.flags )
8777 && ( magFilter == rhs.magFilter )
8778 && ( minFilter == rhs.minFilter )
8779 && ( mipmapMode == rhs.mipmapMode )
8780 && ( addressModeU == rhs.addressModeU )
8781 && ( addressModeV == rhs.addressModeV )
8782 && ( addressModeW == rhs.addressModeW )
8783 && ( mipLodBias == rhs.mipLodBias )
8784 && ( anisotropyEnable == rhs.anisotropyEnable )
8785 && ( maxAnisotropy == rhs.maxAnisotropy )
8786 && ( compareEnable == rhs.compareEnable )
8787 && ( compareOp == rhs.compareOp )
8788 && ( minLod == rhs.minLod )
8789 && ( maxLod == rhs.maxLod )
8790 && ( borderColor == rhs.borderColor )
8791 && ( unnormalizedCoordinates == rhs.unnormalizedCoordinates );
8792 }
8793
8794 bool operator!=( SamplerCreateInfo const& rhs ) const
8795 {
8796 return !operator==( rhs );
8797 }
8798
8799 private:
8800 StructureType sType;
8801
8802 public:
8803 const void* pNext;
8804 SamplerCreateFlags flags;
8805 Filter magFilter;
8806 Filter minFilter;
8807 SamplerMipmapMode mipmapMode;
8808 SamplerAddressMode addressModeU;
8809 SamplerAddressMode addressModeV;
8810 SamplerAddressMode addressModeW;
8811 float mipLodBias;
8812 Bool32 anisotropyEnable;
8813 float maxAnisotropy;
8814 Bool32 compareEnable;
8815 CompareOp compareOp;
8816 float minLod;
8817 float maxLod;
8818 BorderColor borderColor;
8819 Bool32 unnormalizedCoordinates;
8820 };
8821 static_assert( sizeof( SamplerCreateInfo ) == sizeof( VkSamplerCreateInfo ), "struct and wrapper have different size!" );
8822
8823 struct CommandBufferAllocateInfo
8824 {
8825 CommandBufferAllocateInfo( CommandPool commandPool_ = CommandPool(), CommandBufferLevel level_ = CommandBufferLevel::ePrimary, uint32_t commandBufferCount_ = 0 )
8826 : sType( StructureType::eCommandBufferAllocateInfo )
8827 , pNext( nullptr )
8828 , commandPool( commandPool_ )
8829 , level( level_ )
8830 , commandBufferCount( commandBufferCount_ )
8831 {
8832 }
8833
8834 CommandBufferAllocateInfo( VkCommandBufferAllocateInfo const & rhs )
8835 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008836 memcpy( this, &rhs, sizeof( CommandBufferAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008837 }
8838
8839 CommandBufferAllocateInfo& operator=( VkCommandBufferAllocateInfo const & rhs )
8840 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008841 memcpy( this, &rhs, sizeof( CommandBufferAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008842 return *this;
8843 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008844 CommandBufferAllocateInfo& setPNext( const void* pNext_ )
8845 {
8846 pNext = pNext_;
8847 return *this;
8848 }
8849
8850 CommandBufferAllocateInfo& setCommandPool( CommandPool commandPool_ )
8851 {
8852 commandPool = commandPool_;
8853 return *this;
8854 }
8855
8856 CommandBufferAllocateInfo& setLevel( CommandBufferLevel level_ )
8857 {
8858 level = level_;
8859 return *this;
8860 }
8861
8862 CommandBufferAllocateInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
8863 {
8864 commandBufferCount = commandBufferCount_;
8865 return *this;
8866 }
8867
8868 operator const VkCommandBufferAllocateInfo&() const
8869 {
8870 return *reinterpret_cast<const VkCommandBufferAllocateInfo*>(this);
8871 }
8872
8873 bool operator==( CommandBufferAllocateInfo const& rhs ) const
8874 {
8875 return ( sType == rhs.sType )
8876 && ( pNext == rhs.pNext )
8877 && ( commandPool == rhs.commandPool )
8878 && ( level == rhs.level )
8879 && ( commandBufferCount == rhs.commandBufferCount );
8880 }
8881
8882 bool operator!=( CommandBufferAllocateInfo const& rhs ) const
8883 {
8884 return !operator==( rhs );
8885 }
8886
8887 private:
8888 StructureType sType;
8889
8890 public:
8891 const void* pNext;
8892 CommandPool commandPool;
8893 CommandBufferLevel level;
8894 uint32_t commandBufferCount;
8895 };
8896 static_assert( sizeof( CommandBufferAllocateInfo ) == sizeof( VkCommandBufferAllocateInfo ), "struct and wrapper have different size!" );
8897
8898 struct RenderPassBeginInfo
8899 {
8900 RenderPassBeginInfo( RenderPass renderPass_ = RenderPass(), Framebuffer framebuffer_ = Framebuffer(), Rect2D renderArea_ = Rect2D(), uint32_t clearValueCount_ = 0, const ClearValue* pClearValues_ = nullptr )
8901 : sType( StructureType::eRenderPassBeginInfo )
8902 , pNext( nullptr )
8903 , renderPass( renderPass_ )
8904 , framebuffer( framebuffer_ )
8905 , renderArea( renderArea_ )
8906 , clearValueCount( clearValueCount_ )
8907 , pClearValues( pClearValues_ )
8908 {
8909 }
8910
8911 RenderPassBeginInfo( VkRenderPassBeginInfo const & rhs )
8912 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008913 memcpy( this, &rhs, sizeof( RenderPassBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008914 }
8915
8916 RenderPassBeginInfo& operator=( VkRenderPassBeginInfo const & rhs )
8917 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008918 memcpy( this, &rhs, sizeof( RenderPassBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008919 return *this;
8920 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008921 RenderPassBeginInfo& setPNext( const void* pNext_ )
8922 {
8923 pNext = pNext_;
8924 return *this;
8925 }
8926
8927 RenderPassBeginInfo& setRenderPass( RenderPass renderPass_ )
8928 {
8929 renderPass = renderPass_;
8930 return *this;
8931 }
8932
8933 RenderPassBeginInfo& setFramebuffer( Framebuffer framebuffer_ )
8934 {
8935 framebuffer = framebuffer_;
8936 return *this;
8937 }
8938
8939 RenderPassBeginInfo& setRenderArea( Rect2D renderArea_ )
8940 {
8941 renderArea = renderArea_;
8942 return *this;
8943 }
8944
8945 RenderPassBeginInfo& setClearValueCount( uint32_t clearValueCount_ )
8946 {
8947 clearValueCount = clearValueCount_;
8948 return *this;
8949 }
8950
8951 RenderPassBeginInfo& setPClearValues( const ClearValue* pClearValues_ )
8952 {
8953 pClearValues = pClearValues_;
8954 return *this;
8955 }
8956
8957 operator const VkRenderPassBeginInfo&() const
8958 {
8959 return *reinterpret_cast<const VkRenderPassBeginInfo*>(this);
8960 }
8961
8962 bool operator==( RenderPassBeginInfo const& rhs ) const
8963 {
8964 return ( sType == rhs.sType )
8965 && ( pNext == rhs.pNext )
8966 && ( renderPass == rhs.renderPass )
8967 && ( framebuffer == rhs.framebuffer )
8968 && ( renderArea == rhs.renderArea )
8969 && ( clearValueCount == rhs.clearValueCount )
8970 && ( pClearValues == rhs.pClearValues );
8971 }
8972
8973 bool operator!=( RenderPassBeginInfo const& rhs ) const
8974 {
8975 return !operator==( rhs );
8976 }
8977
8978 private:
8979 StructureType sType;
8980
8981 public:
8982 const void* pNext;
8983 RenderPass renderPass;
8984 Framebuffer framebuffer;
8985 Rect2D renderArea;
8986 uint32_t clearValueCount;
8987 const ClearValue* pClearValues;
8988 };
8989 static_assert( sizeof( RenderPassBeginInfo ) == sizeof( VkRenderPassBeginInfo ), "struct and wrapper have different size!" );
8990
8991 struct EventCreateInfo
8992 {
8993 EventCreateInfo( EventCreateFlags flags_ = EventCreateFlags() )
8994 : sType( StructureType::eEventCreateInfo )
8995 , pNext( nullptr )
8996 , flags( flags_ )
8997 {
8998 }
8999
9000 EventCreateInfo( VkEventCreateInfo const & rhs )
9001 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009002 memcpy( this, &rhs, sizeof( EventCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009003 }
9004
9005 EventCreateInfo& operator=( VkEventCreateInfo const & rhs )
9006 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009007 memcpy( this, &rhs, sizeof( EventCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009008 return *this;
9009 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009010 EventCreateInfo& setPNext( const void* pNext_ )
9011 {
9012 pNext = pNext_;
9013 return *this;
9014 }
9015
9016 EventCreateInfo& setFlags( EventCreateFlags flags_ )
9017 {
9018 flags = flags_;
9019 return *this;
9020 }
9021
9022 operator const VkEventCreateInfo&() const
9023 {
9024 return *reinterpret_cast<const VkEventCreateInfo*>(this);
9025 }
9026
9027 bool operator==( EventCreateInfo const& rhs ) const
9028 {
9029 return ( sType == rhs.sType )
9030 && ( pNext == rhs.pNext )
9031 && ( flags == rhs.flags );
9032 }
9033
9034 bool operator!=( EventCreateInfo const& rhs ) const
9035 {
9036 return !operator==( rhs );
9037 }
9038
9039 private:
9040 StructureType sType;
9041
9042 public:
9043 const void* pNext;
9044 EventCreateFlags flags;
9045 };
9046 static_assert( sizeof( EventCreateInfo ) == sizeof( VkEventCreateInfo ), "struct and wrapper have different size!" );
9047
9048 struct SemaphoreCreateInfo
9049 {
9050 SemaphoreCreateInfo( SemaphoreCreateFlags flags_ = SemaphoreCreateFlags() )
9051 : sType( StructureType::eSemaphoreCreateInfo )
9052 , pNext( nullptr )
9053 , flags( flags_ )
9054 {
9055 }
9056
9057 SemaphoreCreateInfo( VkSemaphoreCreateInfo const & rhs )
9058 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009059 memcpy( this, &rhs, sizeof( SemaphoreCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009060 }
9061
9062 SemaphoreCreateInfo& operator=( VkSemaphoreCreateInfo const & rhs )
9063 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009064 memcpy( this, &rhs, sizeof( SemaphoreCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009065 return *this;
9066 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009067 SemaphoreCreateInfo& setPNext( const void* pNext_ )
9068 {
9069 pNext = pNext_;
9070 return *this;
9071 }
9072
9073 SemaphoreCreateInfo& setFlags( SemaphoreCreateFlags flags_ )
9074 {
9075 flags = flags_;
9076 return *this;
9077 }
9078
9079 operator const VkSemaphoreCreateInfo&() const
9080 {
9081 return *reinterpret_cast<const VkSemaphoreCreateInfo*>(this);
9082 }
9083
9084 bool operator==( SemaphoreCreateInfo const& rhs ) const
9085 {
9086 return ( sType == rhs.sType )
9087 && ( pNext == rhs.pNext )
9088 && ( flags == rhs.flags );
9089 }
9090
9091 bool operator!=( SemaphoreCreateInfo const& rhs ) const
9092 {
9093 return !operator==( rhs );
9094 }
9095
9096 private:
9097 StructureType sType;
9098
9099 public:
9100 const void* pNext;
9101 SemaphoreCreateFlags flags;
9102 };
9103 static_assert( sizeof( SemaphoreCreateInfo ) == sizeof( VkSemaphoreCreateInfo ), "struct and wrapper have different size!" );
9104
9105 struct FramebufferCreateInfo
9106 {
9107 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 )
9108 : sType( StructureType::eFramebufferCreateInfo )
9109 , pNext( nullptr )
9110 , flags( flags_ )
9111 , renderPass( renderPass_ )
9112 , attachmentCount( attachmentCount_ )
9113 , pAttachments( pAttachments_ )
9114 , width( width_ )
9115 , height( height_ )
9116 , layers( layers_ )
9117 {
9118 }
9119
9120 FramebufferCreateInfo( VkFramebufferCreateInfo const & rhs )
9121 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009122 memcpy( this, &rhs, sizeof( FramebufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009123 }
9124
9125 FramebufferCreateInfo& operator=( VkFramebufferCreateInfo const & rhs )
9126 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009127 memcpy( this, &rhs, sizeof( FramebufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009128 return *this;
9129 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009130 FramebufferCreateInfo& setPNext( const void* pNext_ )
9131 {
9132 pNext = pNext_;
9133 return *this;
9134 }
9135
9136 FramebufferCreateInfo& setFlags( FramebufferCreateFlags flags_ )
9137 {
9138 flags = flags_;
9139 return *this;
9140 }
9141
9142 FramebufferCreateInfo& setRenderPass( RenderPass renderPass_ )
9143 {
9144 renderPass = renderPass_;
9145 return *this;
9146 }
9147
9148 FramebufferCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
9149 {
9150 attachmentCount = attachmentCount_;
9151 return *this;
9152 }
9153
9154 FramebufferCreateInfo& setPAttachments( const ImageView* pAttachments_ )
9155 {
9156 pAttachments = pAttachments_;
9157 return *this;
9158 }
9159
9160 FramebufferCreateInfo& setWidth( uint32_t width_ )
9161 {
9162 width = width_;
9163 return *this;
9164 }
9165
9166 FramebufferCreateInfo& setHeight( uint32_t height_ )
9167 {
9168 height = height_;
9169 return *this;
9170 }
9171
9172 FramebufferCreateInfo& setLayers( uint32_t layers_ )
9173 {
9174 layers = layers_;
9175 return *this;
9176 }
9177
9178 operator const VkFramebufferCreateInfo&() const
9179 {
9180 return *reinterpret_cast<const VkFramebufferCreateInfo*>(this);
9181 }
9182
9183 bool operator==( FramebufferCreateInfo const& rhs ) const
9184 {
9185 return ( sType == rhs.sType )
9186 && ( pNext == rhs.pNext )
9187 && ( flags == rhs.flags )
9188 && ( renderPass == rhs.renderPass )
9189 && ( attachmentCount == rhs.attachmentCount )
9190 && ( pAttachments == rhs.pAttachments )
9191 && ( width == rhs.width )
9192 && ( height == rhs.height )
9193 && ( layers == rhs.layers );
9194 }
9195
9196 bool operator!=( FramebufferCreateInfo const& rhs ) const
9197 {
9198 return !operator==( rhs );
9199 }
9200
9201 private:
9202 StructureType sType;
9203
9204 public:
9205 const void* pNext;
9206 FramebufferCreateFlags flags;
9207 RenderPass renderPass;
9208 uint32_t attachmentCount;
9209 const ImageView* pAttachments;
9210 uint32_t width;
9211 uint32_t height;
9212 uint32_t layers;
9213 };
9214 static_assert( sizeof( FramebufferCreateInfo ) == sizeof( VkFramebufferCreateInfo ), "struct and wrapper have different size!" );
9215
9216 struct DisplayModeCreateInfoKHR
9217 {
9218 DisplayModeCreateInfoKHR( DisplayModeCreateFlagsKHR flags_ = DisplayModeCreateFlagsKHR(), DisplayModeParametersKHR parameters_ = DisplayModeParametersKHR() )
9219 : sType( StructureType::eDisplayModeCreateInfoKHR )
9220 , pNext( nullptr )
9221 , flags( flags_ )
9222 , parameters( parameters_ )
9223 {
9224 }
9225
9226 DisplayModeCreateInfoKHR( VkDisplayModeCreateInfoKHR const & rhs )
9227 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009228 memcpy( this, &rhs, sizeof( DisplayModeCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009229 }
9230
9231 DisplayModeCreateInfoKHR& operator=( VkDisplayModeCreateInfoKHR const & rhs )
9232 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009233 memcpy( this, &rhs, sizeof( DisplayModeCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009234 return *this;
9235 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009236 DisplayModeCreateInfoKHR& setPNext( const void* pNext_ )
9237 {
9238 pNext = pNext_;
9239 return *this;
9240 }
9241
9242 DisplayModeCreateInfoKHR& setFlags( DisplayModeCreateFlagsKHR flags_ )
9243 {
9244 flags = flags_;
9245 return *this;
9246 }
9247
9248 DisplayModeCreateInfoKHR& setParameters( DisplayModeParametersKHR parameters_ )
9249 {
9250 parameters = parameters_;
9251 return *this;
9252 }
9253
9254 operator const VkDisplayModeCreateInfoKHR&() const
9255 {
9256 return *reinterpret_cast<const VkDisplayModeCreateInfoKHR*>(this);
9257 }
9258
9259 bool operator==( DisplayModeCreateInfoKHR const& rhs ) const
9260 {
9261 return ( sType == rhs.sType )
9262 && ( pNext == rhs.pNext )
9263 && ( flags == rhs.flags )
9264 && ( parameters == rhs.parameters );
9265 }
9266
9267 bool operator!=( DisplayModeCreateInfoKHR const& rhs ) const
9268 {
9269 return !operator==( rhs );
9270 }
9271
9272 private:
9273 StructureType sType;
9274
9275 public:
9276 const void* pNext;
9277 DisplayModeCreateFlagsKHR flags;
9278 DisplayModeParametersKHR parameters;
9279 };
9280 static_assert( sizeof( DisplayModeCreateInfoKHR ) == sizeof( VkDisplayModeCreateInfoKHR ), "struct and wrapper have different size!" );
9281
9282 struct DisplayPresentInfoKHR
9283 {
9284 DisplayPresentInfoKHR( Rect2D srcRect_ = Rect2D(), Rect2D dstRect_ = Rect2D(), Bool32 persistent_ = 0 )
9285 : sType( StructureType::eDisplayPresentInfoKHR )
9286 , pNext( nullptr )
9287 , srcRect( srcRect_ )
9288 , dstRect( dstRect_ )
9289 , persistent( persistent_ )
9290 {
9291 }
9292
9293 DisplayPresentInfoKHR( VkDisplayPresentInfoKHR const & rhs )
9294 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009295 memcpy( this, &rhs, sizeof( DisplayPresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009296 }
9297
9298 DisplayPresentInfoKHR& operator=( VkDisplayPresentInfoKHR const & rhs )
9299 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009300 memcpy( this, &rhs, sizeof( DisplayPresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009301 return *this;
9302 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009303 DisplayPresentInfoKHR& setPNext( const void* pNext_ )
9304 {
9305 pNext = pNext_;
9306 return *this;
9307 }
9308
9309 DisplayPresentInfoKHR& setSrcRect( Rect2D srcRect_ )
9310 {
9311 srcRect = srcRect_;
9312 return *this;
9313 }
9314
9315 DisplayPresentInfoKHR& setDstRect( Rect2D dstRect_ )
9316 {
9317 dstRect = dstRect_;
9318 return *this;
9319 }
9320
9321 DisplayPresentInfoKHR& setPersistent( Bool32 persistent_ )
9322 {
9323 persistent = persistent_;
9324 return *this;
9325 }
9326
9327 operator const VkDisplayPresentInfoKHR&() const
9328 {
9329 return *reinterpret_cast<const VkDisplayPresentInfoKHR*>(this);
9330 }
9331
9332 bool operator==( DisplayPresentInfoKHR const& rhs ) const
9333 {
9334 return ( sType == rhs.sType )
9335 && ( pNext == rhs.pNext )
9336 && ( srcRect == rhs.srcRect )
9337 && ( dstRect == rhs.dstRect )
9338 && ( persistent == rhs.persistent );
9339 }
9340
9341 bool operator!=( DisplayPresentInfoKHR const& rhs ) const
9342 {
9343 return !operator==( rhs );
9344 }
9345
9346 private:
9347 StructureType sType;
9348
9349 public:
9350 const void* pNext;
9351 Rect2D srcRect;
9352 Rect2D dstRect;
9353 Bool32 persistent;
9354 };
9355 static_assert( sizeof( DisplayPresentInfoKHR ) == sizeof( VkDisplayPresentInfoKHR ), "struct and wrapper have different size!" );
9356
9357#ifdef VK_USE_PLATFORM_ANDROID_KHR
9358 struct AndroidSurfaceCreateInfoKHR
9359 {
9360 AndroidSurfaceCreateInfoKHR( AndroidSurfaceCreateFlagsKHR flags_ = AndroidSurfaceCreateFlagsKHR(), ANativeWindow* window_ = nullptr )
9361 : sType( StructureType::eAndroidSurfaceCreateInfoKHR )
9362 , pNext( nullptr )
9363 , flags( flags_ )
9364 , window( window_ )
9365 {
9366 }
9367
9368 AndroidSurfaceCreateInfoKHR( VkAndroidSurfaceCreateInfoKHR const & rhs )
9369 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009370 memcpy( this, &rhs, sizeof( AndroidSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009371 }
9372
9373 AndroidSurfaceCreateInfoKHR& operator=( VkAndroidSurfaceCreateInfoKHR const & rhs )
9374 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009375 memcpy( this, &rhs, sizeof( AndroidSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009376 return *this;
9377 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009378 AndroidSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9379 {
9380 pNext = pNext_;
9381 return *this;
9382 }
9383
9384 AndroidSurfaceCreateInfoKHR& setFlags( AndroidSurfaceCreateFlagsKHR flags_ )
9385 {
9386 flags = flags_;
9387 return *this;
9388 }
9389
9390 AndroidSurfaceCreateInfoKHR& setWindow( ANativeWindow* window_ )
9391 {
9392 window = window_;
9393 return *this;
9394 }
9395
9396 operator const VkAndroidSurfaceCreateInfoKHR&() const
9397 {
9398 return *reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>(this);
9399 }
9400
9401 bool operator==( AndroidSurfaceCreateInfoKHR const& rhs ) const
9402 {
9403 return ( sType == rhs.sType )
9404 && ( pNext == rhs.pNext )
9405 && ( flags == rhs.flags )
9406 && ( window == rhs.window );
9407 }
9408
9409 bool operator!=( AndroidSurfaceCreateInfoKHR const& rhs ) const
9410 {
9411 return !operator==( rhs );
9412 }
9413
9414 private:
9415 StructureType sType;
9416
9417 public:
9418 const void* pNext;
9419 AndroidSurfaceCreateFlagsKHR flags;
9420 ANativeWindow* window;
9421 };
9422 static_assert( sizeof( AndroidSurfaceCreateInfoKHR ) == sizeof( VkAndroidSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9423#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
9424
9425#ifdef VK_USE_PLATFORM_MIR_KHR
9426 struct MirSurfaceCreateInfoKHR
9427 {
9428 MirSurfaceCreateInfoKHR( MirSurfaceCreateFlagsKHR flags_ = MirSurfaceCreateFlagsKHR(), MirConnection* connection_ = nullptr, MirSurface* mirSurface_ = nullptr )
9429 : sType( StructureType::eMirSurfaceCreateInfoKHR )
9430 , pNext( nullptr )
9431 , flags( flags_ )
9432 , connection( connection_ )
9433 , mirSurface( mirSurface_ )
9434 {
9435 }
9436
9437 MirSurfaceCreateInfoKHR( VkMirSurfaceCreateInfoKHR const & rhs )
9438 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009439 memcpy( this, &rhs, sizeof( MirSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009440 }
9441
9442 MirSurfaceCreateInfoKHR& operator=( VkMirSurfaceCreateInfoKHR const & rhs )
9443 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009444 memcpy( this, &rhs, sizeof( MirSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009445 return *this;
9446 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009447 MirSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9448 {
9449 pNext = pNext_;
9450 return *this;
9451 }
9452
9453 MirSurfaceCreateInfoKHR& setFlags( MirSurfaceCreateFlagsKHR flags_ )
9454 {
9455 flags = flags_;
9456 return *this;
9457 }
9458
9459 MirSurfaceCreateInfoKHR& setConnection( MirConnection* connection_ )
9460 {
9461 connection = connection_;
9462 return *this;
9463 }
9464
9465 MirSurfaceCreateInfoKHR& setMirSurface( MirSurface* mirSurface_ )
9466 {
9467 mirSurface = mirSurface_;
9468 return *this;
9469 }
9470
9471 operator const VkMirSurfaceCreateInfoKHR&() const
9472 {
9473 return *reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>(this);
9474 }
9475
9476 bool operator==( MirSurfaceCreateInfoKHR const& rhs ) const
9477 {
9478 return ( sType == rhs.sType )
9479 && ( pNext == rhs.pNext )
9480 && ( flags == rhs.flags )
9481 && ( connection == rhs.connection )
9482 && ( mirSurface == rhs.mirSurface );
9483 }
9484
9485 bool operator!=( MirSurfaceCreateInfoKHR const& rhs ) const
9486 {
9487 return !operator==( rhs );
9488 }
9489
9490 private:
9491 StructureType sType;
9492
9493 public:
9494 const void* pNext;
9495 MirSurfaceCreateFlagsKHR flags;
9496 MirConnection* connection;
9497 MirSurface* mirSurface;
9498 };
9499 static_assert( sizeof( MirSurfaceCreateInfoKHR ) == sizeof( VkMirSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9500#endif /*VK_USE_PLATFORM_MIR_KHR*/
9501
Mark Young39389872017-01-19 21:10:49 -07009502#ifdef VK_USE_PLATFORM_VI_NN
9503 struct ViSurfaceCreateInfoNN
9504 {
9505 ViSurfaceCreateInfoNN( ViSurfaceCreateFlagsNN flags_ = ViSurfaceCreateFlagsNN(), void* window_ = nullptr )
9506 : sType( StructureType::eViSurfaceCreateInfoNN )
9507 , pNext( nullptr )
9508 , flags( flags_ )
9509 , window( window_ )
9510 {
9511 }
9512
9513 ViSurfaceCreateInfoNN( VkViSurfaceCreateInfoNN const & rhs )
9514 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009515 memcpy( this, &rhs, sizeof( ViSurfaceCreateInfoNN ) );
Mark Young39389872017-01-19 21:10:49 -07009516 }
9517
9518 ViSurfaceCreateInfoNN& operator=( VkViSurfaceCreateInfoNN const & rhs )
9519 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009520 memcpy( this, &rhs, sizeof( ViSurfaceCreateInfoNN ) );
Mark Young39389872017-01-19 21:10:49 -07009521 return *this;
9522 }
Mark Young39389872017-01-19 21:10:49 -07009523 ViSurfaceCreateInfoNN& setPNext( const void* pNext_ )
9524 {
9525 pNext = pNext_;
9526 return *this;
9527 }
9528
9529 ViSurfaceCreateInfoNN& setFlags( ViSurfaceCreateFlagsNN flags_ )
9530 {
9531 flags = flags_;
9532 return *this;
9533 }
9534
9535 ViSurfaceCreateInfoNN& setWindow( void* window_ )
9536 {
9537 window = window_;
9538 return *this;
9539 }
9540
9541 operator const VkViSurfaceCreateInfoNN&() const
9542 {
9543 return *reinterpret_cast<const VkViSurfaceCreateInfoNN*>(this);
9544 }
9545
9546 bool operator==( ViSurfaceCreateInfoNN const& rhs ) const
9547 {
9548 return ( sType == rhs.sType )
9549 && ( pNext == rhs.pNext )
9550 && ( flags == rhs.flags )
9551 && ( window == rhs.window );
9552 }
9553
9554 bool operator!=( ViSurfaceCreateInfoNN const& rhs ) const
9555 {
9556 return !operator==( rhs );
9557 }
9558
9559 private:
9560 StructureType sType;
9561
9562 public:
9563 const void* pNext;
9564 ViSurfaceCreateFlagsNN flags;
9565 void* window;
9566 };
9567 static_assert( sizeof( ViSurfaceCreateInfoNN ) == sizeof( VkViSurfaceCreateInfoNN ), "struct and wrapper have different size!" );
9568#endif /*VK_USE_PLATFORM_VI_NN*/
9569
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009570#ifdef VK_USE_PLATFORM_WAYLAND_KHR
9571 struct WaylandSurfaceCreateInfoKHR
9572 {
9573 WaylandSurfaceCreateInfoKHR( WaylandSurfaceCreateFlagsKHR flags_ = WaylandSurfaceCreateFlagsKHR(), struct wl_display* display_ = nullptr, struct wl_surface* surface_ = nullptr )
9574 : sType( StructureType::eWaylandSurfaceCreateInfoKHR )
9575 , pNext( nullptr )
9576 , flags( flags_ )
9577 , display( display_ )
9578 , surface( surface_ )
9579 {
9580 }
9581
9582 WaylandSurfaceCreateInfoKHR( VkWaylandSurfaceCreateInfoKHR const & rhs )
9583 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009584 memcpy( this, &rhs, sizeof( WaylandSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009585 }
9586
9587 WaylandSurfaceCreateInfoKHR& operator=( VkWaylandSurfaceCreateInfoKHR const & rhs )
9588 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009589 memcpy( this, &rhs, sizeof( WaylandSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009590 return *this;
9591 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009592 WaylandSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9593 {
9594 pNext = pNext_;
9595 return *this;
9596 }
9597
9598 WaylandSurfaceCreateInfoKHR& setFlags( WaylandSurfaceCreateFlagsKHR flags_ )
9599 {
9600 flags = flags_;
9601 return *this;
9602 }
9603
9604 WaylandSurfaceCreateInfoKHR& setDisplay( struct wl_display* display_ )
9605 {
9606 display = display_;
9607 return *this;
9608 }
9609
9610 WaylandSurfaceCreateInfoKHR& setSurface( struct wl_surface* surface_ )
9611 {
9612 surface = surface_;
9613 return *this;
9614 }
9615
9616 operator const VkWaylandSurfaceCreateInfoKHR&() const
9617 {
9618 return *reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>(this);
9619 }
9620
9621 bool operator==( WaylandSurfaceCreateInfoKHR const& rhs ) const
9622 {
9623 return ( sType == rhs.sType )
9624 && ( pNext == rhs.pNext )
9625 && ( flags == rhs.flags )
9626 && ( display == rhs.display )
9627 && ( surface == rhs.surface );
9628 }
9629
9630 bool operator!=( WaylandSurfaceCreateInfoKHR const& rhs ) const
9631 {
9632 return !operator==( rhs );
9633 }
9634
9635 private:
9636 StructureType sType;
9637
9638 public:
9639 const void* pNext;
9640 WaylandSurfaceCreateFlagsKHR flags;
9641 struct wl_display* display;
9642 struct wl_surface* surface;
9643 };
9644 static_assert( sizeof( WaylandSurfaceCreateInfoKHR ) == sizeof( VkWaylandSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9645#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
9646
9647#ifdef VK_USE_PLATFORM_WIN32_KHR
9648 struct Win32SurfaceCreateInfoKHR
9649 {
9650 Win32SurfaceCreateInfoKHR( Win32SurfaceCreateFlagsKHR flags_ = Win32SurfaceCreateFlagsKHR(), HINSTANCE hinstance_ = 0, HWND hwnd_ = 0 )
9651 : sType( StructureType::eWin32SurfaceCreateInfoKHR )
9652 , pNext( nullptr )
9653 , flags( flags_ )
9654 , hinstance( hinstance_ )
9655 , hwnd( hwnd_ )
9656 {
9657 }
9658
9659 Win32SurfaceCreateInfoKHR( VkWin32SurfaceCreateInfoKHR const & rhs )
9660 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009661 memcpy( this, &rhs, sizeof( Win32SurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009662 }
9663
9664 Win32SurfaceCreateInfoKHR& operator=( VkWin32SurfaceCreateInfoKHR const & rhs )
9665 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009666 memcpy( this, &rhs, sizeof( Win32SurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009667 return *this;
9668 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009669 Win32SurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9670 {
9671 pNext = pNext_;
9672 return *this;
9673 }
9674
9675 Win32SurfaceCreateInfoKHR& setFlags( Win32SurfaceCreateFlagsKHR flags_ )
9676 {
9677 flags = flags_;
9678 return *this;
9679 }
9680
9681 Win32SurfaceCreateInfoKHR& setHinstance( HINSTANCE hinstance_ )
9682 {
9683 hinstance = hinstance_;
9684 return *this;
9685 }
9686
9687 Win32SurfaceCreateInfoKHR& setHwnd( HWND hwnd_ )
9688 {
9689 hwnd = hwnd_;
9690 return *this;
9691 }
9692
9693 operator const VkWin32SurfaceCreateInfoKHR&() const
9694 {
9695 return *reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>(this);
9696 }
9697
9698 bool operator==( Win32SurfaceCreateInfoKHR const& rhs ) const
9699 {
9700 return ( sType == rhs.sType )
9701 && ( pNext == rhs.pNext )
9702 && ( flags == rhs.flags )
9703 && ( hinstance == rhs.hinstance )
9704 && ( hwnd == rhs.hwnd );
9705 }
9706
9707 bool operator!=( Win32SurfaceCreateInfoKHR const& rhs ) const
9708 {
9709 return !operator==( rhs );
9710 }
9711
9712 private:
9713 StructureType sType;
9714
9715 public:
9716 const void* pNext;
9717 Win32SurfaceCreateFlagsKHR flags;
9718 HINSTANCE hinstance;
9719 HWND hwnd;
9720 };
9721 static_assert( sizeof( Win32SurfaceCreateInfoKHR ) == sizeof( VkWin32SurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9722#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9723
9724#ifdef VK_USE_PLATFORM_XLIB_KHR
9725 struct XlibSurfaceCreateInfoKHR
9726 {
9727 XlibSurfaceCreateInfoKHR( XlibSurfaceCreateFlagsKHR flags_ = XlibSurfaceCreateFlagsKHR(), Display* dpy_ = nullptr, Window window_ = 0 )
9728 : sType( StructureType::eXlibSurfaceCreateInfoKHR )
9729 , pNext( nullptr )
9730 , flags( flags_ )
9731 , dpy( dpy_ )
9732 , window( window_ )
9733 {
9734 }
9735
9736 XlibSurfaceCreateInfoKHR( VkXlibSurfaceCreateInfoKHR const & rhs )
9737 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009738 memcpy( this, &rhs, sizeof( XlibSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009739 }
9740
9741 XlibSurfaceCreateInfoKHR& operator=( VkXlibSurfaceCreateInfoKHR const & rhs )
9742 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009743 memcpy( this, &rhs, sizeof( XlibSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009744 return *this;
9745 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009746 XlibSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9747 {
9748 pNext = pNext_;
9749 return *this;
9750 }
9751
9752 XlibSurfaceCreateInfoKHR& setFlags( XlibSurfaceCreateFlagsKHR flags_ )
9753 {
9754 flags = flags_;
9755 return *this;
9756 }
9757
9758 XlibSurfaceCreateInfoKHR& setDpy( Display* dpy_ )
9759 {
9760 dpy = dpy_;
9761 return *this;
9762 }
9763
9764 XlibSurfaceCreateInfoKHR& setWindow( Window window_ )
9765 {
9766 window = window_;
9767 return *this;
9768 }
9769
9770 operator const VkXlibSurfaceCreateInfoKHR&() const
9771 {
9772 return *reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>(this);
9773 }
9774
9775 bool operator==( XlibSurfaceCreateInfoKHR const& rhs ) const
9776 {
9777 return ( sType == rhs.sType )
9778 && ( pNext == rhs.pNext )
9779 && ( flags == rhs.flags )
9780 && ( dpy == rhs.dpy )
9781 && ( window == rhs.window );
9782 }
9783
9784 bool operator!=( XlibSurfaceCreateInfoKHR const& rhs ) const
9785 {
9786 return !operator==( rhs );
9787 }
9788
9789 private:
9790 StructureType sType;
9791
9792 public:
9793 const void* pNext;
9794 XlibSurfaceCreateFlagsKHR flags;
9795 Display* dpy;
9796 Window window;
9797 };
9798 static_assert( sizeof( XlibSurfaceCreateInfoKHR ) == sizeof( VkXlibSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9799#endif /*VK_USE_PLATFORM_XLIB_KHR*/
9800
9801#ifdef VK_USE_PLATFORM_XCB_KHR
9802 struct XcbSurfaceCreateInfoKHR
9803 {
9804 XcbSurfaceCreateInfoKHR( XcbSurfaceCreateFlagsKHR flags_ = XcbSurfaceCreateFlagsKHR(), xcb_connection_t* connection_ = nullptr, xcb_window_t window_ = 0 )
9805 : sType( StructureType::eXcbSurfaceCreateInfoKHR )
9806 , pNext( nullptr )
9807 , flags( flags_ )
9808 , connection( connection_ )
9809 , window( window_ )
9810 {
9811 }
9812
9813 XcbSurfaceCreateInfoKHR( VkXcbSurfaceCreateInfoKHR const & rhs )
9814 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009815 memcpy( this, &rhs, sizeof( XcbSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009816 }
9817
9818 XcbSurfaceCreateInfoKHR& operator=( VkXcbSurfaceCreateInfoKHR const & rhs )
9819 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009820 memcpy( this, &rhs, sizeof( XcbSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009821 return *this;
9822 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009823 XcbSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9824 {
9825 pNext = pNext_;
9826 return *this;
9827 }
9828
9829 XcbSurfaceCreateInfoKHR& setFlags( XcbSurfaceCreateFlagsKHR flags_ )
9830 {
9831 flags = flags_;
9832 return *this;
9833 }
9834
9835 XcbSurfaceCreateInfoKHR& setConnection( xcb_connection_t* connection_ )
9836 {
9837 connection = connection_;
9838 return *this;
9839 }
9840
9841 XcbSurfaceCreateInfoKHR& setWindow( xcb_window_t window_ )
9842 {
9843 window = window_;
9844 return *this;
9845 }
9846
9847 operator const VkXcbSurfaceCreateInfoKHR&() const
9848 {
9849 return *reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>(this);
9850 }
9851
9852 bool operator==( XcbSurfaceCreateInfoKHR const& rhs ) const
9853 {
9854 return ( sType == rhs.sType )
9855 && ( pNext == rhs.pNext )
9856 && ( flags == rhs.flags )
9857 && ( connection == rhs.connection )
9858 && ( window == rhs.window );
9859 }
9860
9861 bool operator!=( XcbSurfaceCreateInfoKHR const& rhs ) const
9862 {
9863 return !operator==( rhs );
9864 }
9865
9866 private:
9867 StructureType sType;
9868
9869 public:
9870 const void* pNext;
9871 XcbSurfaceCreateFlagsKHR flags;
9872 xcb_connection_t* connection;
9873 xcb_window_t window;
9874 };
9875 static_assert( sizeof( XcbSurfaceCreateInfoKHR ) == sizeof( VkXcbSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9876#endif /*VK_USE_PLATFORM_XCB_KHR*/
9877
9878 struct DebugMarkerMarkerInfoEXT
9879 {
9880 DebugMarkerMarkerInfoEXT( const char* pMarkerName_ = nullptr, std::array<float,4> const& color_ = { { 0, 0, 0, 0 } } )
9881 : sType( StructureType::eDebugMarkerMarkerInfoEXT )
9882 , pNext( nullptr )
9883 , pMarkerName( pMarkerName_ )
9884 {
9885 memcpy( &color, color_.data(), 4 * sizeof( float ) );
9886 }
9887
9888 DebugMarkerMarkerInfoEXT( VkDebugMarkerMarkerInfoEXT const & rhs )
9889 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009890 memcpy( this, &rhs, sizeof( DebugMarkerMarkerInfoEXT ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009891 }
9892
9893 DebugMarkerMarkerInfoEXT& operator=( VkDebugMarkerMarkerInfoEXT const & rhs )
9894 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009895 memcpy( this, &rhs, sizeof( DebugMarkerMarkerInfoEXT ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009896 return *this;
9897 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009898 DebugMarkerMarkerInfoEXT& setPNext( const void* pNext_ )
9899 {
9900 pNext = pNext_;
9901 return *this;
9902 }
9903
9904 DebugMarkerMarkerInfoEXT& setPMarkerName( const char* pMarkerName_ )
9905 {
9906 pMarkerName = pMarkerName_;
9907 return *this;
9908 }
9909
9910 DebugMarkerMarkerInfoEXT& setColor( std::array<float,4> color_ )
9911 {
9912 memcpy( &color, color_.data(), 4 * sizeof( float ) );
9913 return *this;
9914 }
9915
9916 operator const VkDebugMarkerMarkerInfoEXT&() const
9917 {
9918 return *reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>(this);
9919 }
9920
9921 bool operator==( DebugMarkerMarkerInfoEXT const& rhs ) const
9922 {
9923 return ( sType == rhs.sType )
9924 && ( pNext == rhs.pNext )
9925 && ( pMarkerName == rhs.pMarkerName )
9926 && ( memcmp( color, rhs.color, 4 * sizeof( float ) ) == 0 );
9927 }
9928
9929 bool operator!=( DebugMarkerMarkerInfoEXT const& rhs ) const
9930 {
9931 return !operator==( rhs );
9932 }
9933
9934 private:
9935 StructureType sType;
9936
9937 public:
9938 const void* pNext;
9939 const char* pMarkerName;
9940 float color[4];
9941 };
9942 static_assert( sizeof( DebugMarkerMarkerInfoEXT ) == sizeof( VkDebugMarkerMarkerInfoEXT ), "struct and wrapper have different size!" );
9943
9944 struct DedicatedAllocationImageCreateInfoNV
9945 {
9946 DedicatedAllocationImageCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
9947 : sType( StructureType::eDedicatedAllocationImageCreateInfoNV )
9948 , pNext( nullptr )
9949 , dedicatedAllocation( dedicatedAllocation_ )
9950 {
9951 }
9952
9953 DedicatedAllocationImageCreateInfoNV( VkDedicatedAllocationImageCreateInfoNV const & rhs )
9954 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009955 memcpy( this, &rhs, sizeof( DedicatedAllocationImageCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009956 }
9957
9958 DedicatedAllocationImageCreateInfoNV& operator=( VkDedicatedAllocationImageCreateInfoNV const & rhs )
9959 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009960 memcpy( this, &rhs, sizeof( DedicatedAllocationImageCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009961 return *this;
9962 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009963 DedicatedAllocationImageCreateInfoNV& setPNext( const void* pNext_ )
9964 {
9965 pNext = pNext_;
9966 return *this;
9967 }
9968
9969 DedicatedAllocationImageCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
9970 {
9971 dedicatedAllocation = dedicatedAllocation_;
9972 return *this;
9973 }
9974
9975 operator const VkDedicatedAllocationImageCreateInfoNV&() const
9976 {
9977 return *reinterpret_cast<const VkDedicatedAllocationImageCreateInfoNV*>(this);
9978 }
9979
9980 bool operator==( DedicatedAllocationImageCreateInfoNV const& rhs ) const
9981 {
9982 return ( sType == rhs.sType )
9983 && ( pNext == rhs.pNext )
9984 && ( dedicatedAllocation == rhs.dedicatedAllocation );
9985 }
9986
9987 bool operator!=( DedicatedAllocationImageCreateInfoNV const& rhs ) const
9988 {
9989 return !operator==( rhs );
9990 }
9991
9992 private:
9993 StructureType sType;
9994
9995 public:
9996 const void* pNext;
9997 Bool32 dedicatedAllocation;
9998 };
9999 static_assert( sizeof( DedicatedAllocationImageCreateInfoNV ) == sizeof( VkDedicatedAllocationImageCreateInfoNV ), "struct and wrapper have different size!" );
10000
10001 struct DedicatedAllocationBufferCreateInfoNV
10002 {
10003 DedicatedAllocationBufferCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
10004 : sType( StructureType::eDedicatedAllocationBufferCreateInfoNV )
10005 , pNext( nullptr )
10006 , dedicatedAllocation( dedicatedAllocation_ )
10007 {
10008 }
10009
10010 DedicatedAllocationBufferCreateInfoNV( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
10011 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010012 memcpy( this, &rhs, sizeof( DedicatedAllocationBufferCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060010013 }
10014
10015 DedicatedAllocationBufferCreateInfoNV& operator=( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
10016 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010017 memcpy( this, &rhs, sizeof( DedicatedAllocationBufferCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060010018 return *this;
10019 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060010020 DedicatedAllocationBufferCreateInfoNV& setPNext( const void* pNext_ )
10021 {
10022 pNext = pNext_;
10023 return *this;
10024 }
10025
10026 DedicatedAllocationBufferCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
10027 {
10028 dedicatedAllocation = dedicatedAllocation_;
10029 return *this;
10030 }
10031
10032 operator const VkDedicatedAllocationBufferCreateInfoNV&() const
10033 {
10034 return *reinterpret_cast<const VkDedicatedAllocationBufferCreateInfoNV*>(this);
10035 }
10036
10037 bool operator==( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
10038 {
10039 return ( sType == rhs.sType )
10040 && ( pNext == rhs.pNext )
10041 && ( dedicatedAllocation == rhs.dedicatedAllocation );
10042 }
10043
10044 bool operator!=( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
10045 {
10046 return !operator==( rhs );
10047 }
10048
10049 private:
10050 StructureType sType;
10051
10052 public:
10053 const void* pNext;
10054 Bool32 dedicatedAllocation;
10055 };
10056 static_assert( sizeof( DedicatedAllocationBufferCreateInfoNV ) == sizeof( VkDedicatedAllocationBufferCreateInfoNV ), "struct and wrapper have different size!" );
10057
10058 struct DedicatedAllocationMemoryAllocateInfoNV
10059 {
10060 DedicatedAllocationMemoryAllocateInfoNV( Image image_ = Image(), Buffer buffer_ = Buffer() )
10061 : sType( StructureType::eDedicatedAllocationMemoryAllocateInfoNV )
10062 , pNext( nullptr )
10063 , image( image_ )
10064 , buffer( buffer_ )
10065 {
10066 }
10067
10068 DedicatedAllocationMemoryAllocateInfoNV( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
10069 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010070 memcpy( this, &rhs, sizeof( DedicatedAllocationMemoryAllocateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060010071 }
10072
10073 DedicatedAllocationMemoryAllocateInfoNV& operator=( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
10074 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010075 memcpy( this, &rhs, sizeof( DedicatedAllocationMemoryAllocateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060010076 return *this;
10077 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060010078 DedicatedAllocationMemoryAllocateInfoNV& setPNext( const void* pNext_ )
10079 {
10080 pNext = pNext_;
10081 return *this;
10082 }
10083
10084 DedicatedAllocationMemoryAllocateInfoNV& setImage( Image image_ )
10085 {
10086 image = image_;
10087 return *this;
10088 }
10089
10090 DedicatedAllocationMemoryAllocateInfoNV& setBuffer( Buffer buffer_ )
10091 {
10092 buffer = buffer_;
10093 return *this;
10094 }
10095
10096 operator const VkDedicatedAllocationMemoryAllocateInfoNV&() const
10097 {
10098 return *reinterpret_cast<const VkDedicatedAllocationMemoryAllocateInfoNV*>(this);
10099 }
10100
10101 bool operator==( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
10102 {
10103 return ( sType == rhs.sType )
10104 && ( pNext == rhs.pNext )
10105 && ( image == rhs.image )
10106 && ( buffer == rhs.buffer );
10107 }
10108
10109 bool operator!=( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
10110 {
10111 return !operator==( rhs );
10112 }
10113
10114 private:
10115 StructureType sType;
10116
10117 public:
10118 const void* pNext;
10119 Image image;
10120 Buffer buffer;
10121 };
10122 static_assert( sizeof( DedicatedAllocationMemoryAllocateInfoNV ) == sizeof( VkDedicatedAllocationMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
10123
Lenny Komow6501c122016-08-31 15:03:49 -060010124#ifdef VK_USE_PLATFORM_WIN32_KHR
10125 struct ExportMemoryWin32HandleInfoNV
10126 {
10127 ExportMemoryWin32HandleInfoNV( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0 )
10128 : sType( StructureType::eExportMemoryWin32HandleInfoNV )
10129 , pNext( nullptr )
10130 , pAttributes( pAttributes_ )
10131 , dwAccess( dwAccess_ )
10132 {
10133 }
10134
10135 ExportMemoryWin32HandleInfoNV( VkExportMemoryWin32HandleInfoNV const & rhs )
10136 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010137 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -060010138 }
10139
10140 ExportMemoryWin32HandleInfoNV& operator=( VkExportMemoryWin32HandleInfoNV const & rhs )
10141 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010142 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -060010143 return *this;
10144 }
Lenny Komow6501c122016-08-31 15:03:49 -060010145 ExportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
10146 {
10147 pNext = pNext_;
10148 return *this;
10149 }
10150
10151 ExportMemoryWin32HandleInfoNV& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
10152 {
10153 pAttributes = pAttributes_;
10154 return *this;
10155 }
10156
10157 ExportMemoryWin32HandleInfoNV& setDwAccess( DWORD dwAccess_ )
10158 {
10159 dwAccess = dwAccess_;
10160 return *this;
10161 }
10162
10163 operator const VkExportMemoryWin32HandleInfoNV&() const
10164 {
10165 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoNV*>(this);
10166 }
10167
10168 bool operator==( ExportMemoryWin32HandleInfoNV const& rhs ) const
10169 {
10170 return ( sType == rhs.sType )
10171 && ( pNext == rhs.pNext )
10172 && ( pAttributes == rhs.pAttributes )
10173 && ( dwAccess == rhs.dwAccess );
10174 }
10175
10176 bool operator!=( ExportMemoryWin32HandleInfoNV const& rhs ) const
10177 {
10178 return !operator==( rhs );
10179 }
10180
10181 private:
10182 StructureType sType;
10183
10184 public:
10185 const void* pNext;
10186 const SECURITY_ATTRIBUTES* pAttributes;
10187 DWORD dwAccess;
10188 };
10189 static_assert( sizeof( ExportMemoryWin32HandleInfoNV ) == sizeof( VkExportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
10190#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10191
10192#ifdef VK_USE_PLATFORM_WIN32_KHR
10193 struct Win32KeyedMutexAcquireReleaseInfoNV
10194 {
10195 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 )
10196 : sType( StructureType::eWin32KeyedMutexAcquireReleaseInfoNV )
10197 , pNext( nullptr )
10198 , acquireCount( acquireCount_ )
10199 , pAcquireSyncs( pAcquireSyncs_ )
10200 , pAcquireKeys( pAcquireKeys_ )
10201 , pAcquireTimeoutMilliseconds( pAcquireTimeoutMilliseconds_ )
10202 , releaseCount( releaseCount_ )
10203 , pReleaseSyncs( pReleaseSyncs_ )
10204 , pReleaseKeys( pReleaseKeys_ )
10205 {
10206 }
10207
10208 Win32KeyedMutexAcquireReleaseInfoNV( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
10209 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010210 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -060010211 }
10212
10213 Win32KeyedMutexAcquireReleaseInfoNV& operator=( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
10214 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010215 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -060010216 return *this;
10217 }
Lenny Komow6501c122016-08-31 15:03:49 -060010218 Win32KeyedMutexAcquireReleaseInfoNV& setPNext( const void* pNext_ )
10219 {
10220 pNext = pNext_;
10221 return *this;
10222 }
10223
10224 Win32KeyedMutexAcquireReleaseInfoNV& setAcquireCount( uint32_t acquireCount_ )
10225 {
10226 acquireCount = acquireCount_;
10227 return *this;
10228 }
10229
10230 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
10231 {
10232 pAcquireSyncs = pAcquireSyncs_;
10233 return *this;
10234 }
10235
10236 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
10237 {
10238 pAcquireKeys = pAcquireKeys_;
10239 return *this;
10240 }
10241
10242 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireTimeoutMilliseconds( const uint32_t* pAcquireTimeoutMilliseconds_ )
10243 {
10244 pAcquireTimeoutMilliseconds = pAcquireTimeoutMilliseconds_;
10245 return *this;
10246 }
10247
10248 Win32KeyedMutexAcquireReleaseInfoNV& setReleaseCount( uint32_t releaseCount_ )
10249 {
10250 releaseCount = releaseCount_;
10251 return *this;
10252 }
10253
10254 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
10255 {
10256 pReleaseSyncs = pReleaseSyncs_;
10257 return *this;
10258 }
10259
10260 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
10261 {
10262 pReleaseKeys = pReleaseKeys_;
10263 return *this;
10264 }
10265
10266 operator const VkWin32KeyedMutexAcquireReleaseInfoNV&() const
10267 {
10268 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoNV*>(this);
10269 }
10270
10271 bool operator==( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
10272 {
10273 return ( sType == rhs.sType )
10274 && ( pNext == rhs.pNext )
10275 && ( acquireCount == rhs.acquireCount )
10276 && ( pAcquireSyncs == rhs.pAcquireSyncs )
10277 && ( pAcquireKeys == rhs.pAcquireKeys )
10278 && ( pAcquireTimeoutMilliseconds == rhs.pAcquireTimeoutMilliseconds )
10279 && ( releaseCount == rhs.releaseCount )
10280 && ( pReleaseSyncs == rhs.pReleaseSyncs )
10281 && ( pReleaseKeys == rhs.pReleaseKeys );
10282 }
10283
10284 bool operator!=( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
10285 {
10286 return !operator==( rhs );
10287 }
10288
10289 private:
10290 StructureType sType;
10291
10292 public:
10293 const void* pNext;
10294 uint32_t acquireCount;
10295 const DeviceMemory* pAcquireSyncs;
10296 const uint64_t* pAcquireKeys;
10297 const uint32_t* pAcquireTimeoutMilliseconds;
10298 uint32_t releaseCount;
10299 const DeviceMemory* pReleaseSyncs;
10300 const uint64_t* pReleaseKeys;
10301 };
10302 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoNV ), "struct and wrapper have different size!" );
10303#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10304
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010305 struct DeviceGeneratedCommandsFeaturesNVX
10306 {
10307 DeviceGeneratedCommandsFeaturesNVX( Bool32 computeBindingPointSupport_ = 0 )
10308 : sType( StructureType::eDeviceGeneratedCommandsFeaturesNVX )
10309 , pNext( nullptr )
10310 , computeBindingPointSupport( computeBindingPointSupport_ )
10311 {
10312 }
10313
10314 DeviceGeneratedCommandsFeaturesNVX( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
10315 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010316 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsFeaturesNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010317 }
10318
10319 DeviceGeneratedCommandsFeaturesNVX& operator=( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
10320 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010321 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsFeaturesNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010322 return *this;
10323 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010324 DeviceGeneratedCommandsFeaturesNVX& setPNext( const void* pNext_ )
10325 {
10326 pNext = pNext_;
10327 return *this;
10328 }
10329
10330 DeviceGeneratedCommandsFeaturesNVX& setComputeBindingPointSupport( Bool32 computeBindingPointSupport_ )
10331 {
10332 computeBindingPointSupport = computeBindingPointSupport_;
10333 return *this;
10334 }
10335
10336 operator const VkDeviceGeneratedCommandsFeaturesNVX&() const
10337 {
10338 return *reinterpret_cast<const VkDeviceGeneratedCommandsFeaturesNVX*>(this);
10339 }
10340
10341 bool operator==( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
10342 {
10343 return ( sType == rhs.sType )
10344 && ( pNext == rhs.pNext )
10345 && ( computeBindingPointSupport == rhs.computeBindingPointSupport );
10346 }
10347
10348 bool operator!=( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
10349 {
10350 return !operator==( rhs );
10351 }
10352
10353 private:
10354 StructureType sType;
10355
10356 public:
10357 const void* pNext;
10358 Bool32 computeBindingPointSupport;
10359 };
10360 static_assert( sizeof( DeviceGeneratedCommandsFeaturesNVX ) == sizeof( VkDeviceGeneratedCommandsFeaturesNVX ), "struct and wrapper have different size!" );
10361
10362 struct DeviceGeneratedCommandsLimitsNVX
10363 {
10364 DeviceGeneratedCommandsLimitsNVX( uint32_t maxIndirectCommandsLayoutTokenCount_ = 0, uint32_t maxObjectEntryCounts_ = 0, uint32_t minSequenceCountBufferOffsetAlignment_ = 0, uint32_t minSequenceIndexBufferOffsetAlignment_ = 0, uint32_t minCommandsTokenBufferOffsetAlignment_ = 0 )
10365 : sType( StructureType::eDeviceGeneratedCommandsLimitsNVX )
10366 , pNext( nullptr )
10367 , maxIndirectCommandsLayoutTokenCount( maxIndirectCommandsLayoutTokenCount_ )
10368 , maxObjectEntryCounts( maxObjectEntryCounts_ )
10369 , minSequenceCountBufferOffsetAlignment( minSequenceCountBufferOffsetAlignment_ )
10370 , minSequenceIndexBufferOffsetAlignment( minSequenceIndexBufferOffsetAlignment_ )
10371 , minCommandsTokenBufferOffsetAlignment( minCommandsTokenBufferOffsetAlignment_ )
10372 {
10373 }
10374
10375 DeviceGeneratedCommandsLimitsNVX( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
10376 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010377 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsLimitsNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010378 }
10379
10380 DeviceGeneratedCommandsLimitsNVX& operator=( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
10381 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010382 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsLimitsNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010383 return *this;
10384 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010385 DeviceGeneratedCommandsLimitsNVX& setPNext( const void* pNext_ )
10386 {
10387 pNext = pNext_;
10388 return *this;
10389 }
10390
10391 DeviceGeneratedCommandsLimitsNVX& setMaxIndirectCommandsLayoutTokenCount( uint32_t maxIndirectCommandsLayoutTokenCount_ )
10392 {
10393 maxIndirectCommandsLayoutTokenCount = maxIndirectCommandsLayoutTokenCount_;
10394 return *this;
10395 }
10396
10397 DeviceGeneratedCommandsLimitsNVX& setMaxObjectEntryCounts( uint32_t maxObjectEntryCounts_ )
10398 {
10399 maxObjectEntryCounts = maxObjectEntryCounts_;
10400 return *this;
10401 }
10402
10403 DeviceGeneratedCommandsLimitsNVX& setMinSequenceCountBufferOffsetAlignment( uint32_t minSequenceCountBufferOffsetAlignment_ )
10404 {
10405 minSequenceCountBufferOffsetAlignment = minSequenceCountBufferOffsetAlignment_;
10406 return *this;
10407 }
10408
10409 DeviceGeneratedCommandsLimitsNVX& setMinSequenceIndexBufferOffsetAlignment( uint32_t minSequenceIndexBufferOffsetAlignment_ )
10410 {
10411 minSequenceIndexBufferOffsetAlignment = minSequenceIndexBufferOffsetAlignment_;
10412 return *this;
10413 }
10414
10415 DeviceGeneratedCommandsLimitsNVX& setMinCommandsTokenBufferOffsetAlignment( uint32_t minCommandsTokenBufferOffsetAlignment_ )
10416 {
10417 minCommandsTokenBufferOffsetAlignment = minCommandsTokenBufferOffsetAlignment_;
10418 return *this;
10419 }
10420
10421 operator const VkDeviceGeneratedCommandsLimitsNVX&() const
10422 {
10423 return *reinterpret_cast<const VkDeviceGeneratedCommandsLimitsNVX*>(this);
10424 }
10425
10426 bool operator==( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
10427 {
10428 return ( sType == rhs.sType )
10429 && ( pNext == rhs.pNext )
10430 && ( maxIndirectCommandsLayoutTokenCount == rhs.maxIndirectCommandsLayoutTokenCount )
10431 && ( maxObjectEntryCounts == rhs.maxObjectEntryCounts )
10432 && ( minSequenceCountBufferOffsetAlignment == rhs.minSequenceCountBufferOffsetAlignment )
10433 && ( minSequenceIndexBufferOffsetAlignment == rhs.minSequenceIndexBufferOffsetAlignment )
10434 && ( minCommandsTokenBufferOffsetAlignment == rhs.minCommandsTokenBufferOffsetAlignment );
10435 }
10436
10437 bool operator!=( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
10438 {
10439 return !operator==( rhs );
10440 }
10441
10442 private:
10443 StructureType sType;
10444
10445 public:
10446 const void* pNext;
10447 uint32_t maxIndirectCommandsLayoutTokenCount;
10448 uint32_t maxObjectEntryCounts;
10449 uint32_t minSequenceCountBufferOffsetAlignment;
10450 uint32_t minSequenceIndexBufferOffsetAlignment;
10451 uint32_t minCommandsTokenBufferOffsetAlignment;
10452 };
10453 static_assert( sizeof( DeviceGeneratedCommandsLimitsNVX ) == sizeof( VkDeviceGeneratedCommandsLimitsNVX ), "struct and wrapper have different size!" );
10454
10455 struct CmdReserveSpaceForCommandsInfoNVX
10456 {
10457 CmdReserveSpaceForCommandsInfoNVX( ObjectTableNVX objectTable_ = ObjectTableNVX(), IndirectCommandsLayoutNVX indirectCommandsLayout_ = IndirectCommandsLayoutNVX(), uint32_t maxSequencesCount_ = 0 )
10458 : sType( StructureType::eCmdReserveSpaceForCommandsInfoNVX )
10459 , pNext( nullptr )
10460 , objectTable( objectTable_ )
10461 , indirectCommandsLayout( indirectCommandsLayout_ )
10462 , maxSequencesCount( maxSequencesCount_ )
10463 {
10464 }
10465
10466 CmdReserveSpaceForCommandsInfoNVX( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
10467 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010468 memcpy( this, &rhs, sizeof( CmdReserveSpaceForCommandsInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010469 }
10470
10471 CmdReserveSpaceForCommandsInfoNVX& operator=( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
10472 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010473 memcpy( this, &rhs, sizeof( CmdReserveSpaceForCommandsInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010474 return *this;
10475 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010476 CmdReserveSpaceForCommandsInfoNVX& setPNext( const void* pNext_ )
10477 {
10478 pNext = pNext_;
10479 return *this;
10480 }
10481
10482 CmdReserveSpaceForCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
10483 {
10484 objectTable = objectTable_;
10485 return *this;
10486 }
10487
10488 CmdReserveSpaceForCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
10489 {
10490 indirectCommandsLayout = indirectCommandsLayout_;
10491 return *this;
10492 }
10493
10494 CmdReserveSpaceForCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
10495 {
10496 maxSequencesCount = maxSequencesCount_;
10497 return *this;
10498 }
10499
10500 operator const VkCmdReserveSpaceForCommandsInfoNVX&() const
10501 {
10502 return *reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>(this);
10503 }
10504
10505 bool operator==( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
10506 {
10507 return ( sType == rhs.sType )
10508 && ( pNext == rhs.pNext )
10509 && ( objectTable == rhs.objectTable )
10510 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
10511 && ( maxSequencesCount == rhs.maxSequencesCount );
10512 }
10513
10514 bool operator!=( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
10515 {
10516 return !operator==( rhs );
10517 }
10518
10519 private:
10520 StructureType sType;
10521
10522 public:
10523 const void* pNext;
10524 ObjectTableNVX objectTable;
10525 IndirectCommandsLayoutNVX indirectCommandsLayout;
10526 uint32_t maxSequencesCount;
10527 };
10528 static_assert( sizeof( CmdReserveSpaceForCommandsInfoNVX ) == sizeof( VkCmdReserveSpaceForCommandsInfoNVX ), "struct and wrapper have different size!" );
10529
Mark Young39389872017-01-19 21:10:49 -070010530 struct PhysicalDeviceFeatures2KHR
10531 {
10532 PhysicalDeviceFeatures2KHR( PhysicalDeviceFeatures features_ = PhysicalDeviceFeatures() )
10533 : sType( StructureType::ePhysicalDeviceFeatures2KHR )
10534 , pNext( nullptr )
10535 , features( features_ )
10536 {
10537 }
10538
10539 PhysicalDeviceFeatures2KHR( VkPhysicalDeviceFeatures2KHR const & rhs )
10540 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010541 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070010542 }
10543
10544 PhysicalDeviceFeatures2KHR& operator=( VkPhysicalDeviceFeatures2KHR const & rhs )
10545 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010546 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070010547 return *this;
10548 }
Mark Young39389872017-01-19 21:10:49 -070010549 PhysicalDeviceFeatures2KHR& setPNext( void* pNext_ )
10550 {
10551 pNext = pNext_;
10552 return *this;
10553 }
10554
10555 PhysicalDeviceFeatures2KHR& setFeatures( PhysicalDeviceFeatures features_ )
10556 {
10557 features = features_;
10558 return *this;
10559 }
10560
10561 operator const VkPhysicalDeviceFeatures2KHR&() const
10562 {
10563 return *reinterpret_cast<const VkPhysicalDeviceFeatures2KHR*>(this);
10564 }
10565
10566 bool operator==( PhysicalDeviceFeatures2KHR const& rhs ) const
10567 {
10568 return ( sType == rhs.sType )
10569 && ( pNext == rhs.pNext )
10570 && ( features == rhs.features );
10571 }
10572
10573 bool operator!=( PhysicalDeviceFeatures2KHR const& rhs ) const
10574 {
10575 return !operator==( rhs );
10576 }
10577
10578 private:
10579 StructureType sType;
10580
10581 public:
10582 void* pNext;
10583 PhysicalDeviceFeatures features;
10584 };
10585 static_assert( sizeof( PhysicalDeviceFeatures2KHR ) == sizeof( VkPhysicalDeviceFeatures2KHR ), "struct and wrapper have different size!" );
10586
Mark Young0f183a82017-02-28 09:58:04 -070010587 struct PhysicalDevicePushDescriptorPropertiesKHR
10588 {
10589 PhysicalDevicePushDescriptorPropertiesKHR( uint32_t maxPushDescriptors_ = 0 )
10590 : sType( StructureType::ePhysicalDevicePushDescriptorPropertiesKHR )
10591 , pNext( nullptr )
10592 , maxPushDescriptors( maxPushDescriptors_ )
10593 {
10594 }
10595
10596 PhysicalDevicePushDescriptorPropertiesKHR( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
10597 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010598 memcpy( this, &rhs, sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010599 }
10600
10601 PhysicalDevicePushDescriptorPropertiesKHR& operator=( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
10602 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010603 memcpy( this, &rhs, sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010604 return *this;
10605 }
Mark Young0f183a82017-02-28 09:58:04 -070010606 PhysicalDevicePushDescriptorPropertiesKHR& setPNext( void* pNext_ )
10607 {
10608 pNext = pNext_;
10609 return *this;
10610 }
10611
10612 PhysicalDevicePushDescriptorPropertiesKHR& setMaxPushDescriptors( uint32_t maxPushDescriptors_ )
10613 {
10614 maxPushDescriptors = maxPushDescriptors_;
10615 return *this;
10616 }
10617
10618 operator const VkPhysicalDevicePushDescriptorPropertiesKHR&() const
10619 {
10620 return *reinterpret_cast<const VkPhysicalDevicePushDescriptorPropertiesKHR*>(this);
10621 }
10622
10623 bool operator==( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
10624 {
10625 return ( sType == rhs.sType )
10626 && ( pNext == rhs.pNext )
10627 && ( maxPushDescriptors == rhs.maxPushDescriptors );
10628 }
10629
10630 bool operator!=( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
10631 {
10632 return !operator==( rhs );
10633 }
10634
10635 private:
10636 StructureType sType;
10637
10638 public:
10639 void* pNext;
10640 uint32_t maxPushDescriptors;
10641 };
10642 static_assert( sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) == sizeof( VkPhysicalDevicePushDescriptorPropertiesKHR ), "struct and wrapper have different size!" );
10643
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010644 struct PresentRegionsKHR
10645 {
10646 PresentRegionsKHR( uint32_t swapchainCount_ = 0, const PresentRegionKHR* pRegions_ = nullptr )
10647 : sType( StructureType::ePresentRegionsKHR )
10648 , pNext( nullptr )
10649 , swapchainCount( swapchainCount_ )
10650 , pRegions( pRegions_ )
10651 {
10652 }
10653
10654 PresentRegionsKHR( VkPresentRegionsKHR const & rhs )
10655 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010656 memcpy( this, &rhs, sizeof( PresentRegionsKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010657 }
10658
10659 PresentRegionsKHR& operator=( VkPresentRegionsKHR const & rhs )
10660 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010661 memcpy( this, &rhs, sizeof( PresentRegionsKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010662 return *this;
10663 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010664 PresentRegionsKHR& setPNext( const void* pNext_ )
10665 {
10666 pNext = pNext_;
10667 return *this;
10668 }
10669
10670 PresentRegionsKHR& setSwapchainCount( uint32_t swapchainCount_ )
10671 {
10672 swapchainCount = swapchainCount_;
10673 return *this;
10674 }
10675
10676 PresentRegionsKHR& setPRegions( const PresentRegionKHR* pRegions_ )
10677 {
10678 pRegions = pRegions_;
10679 return *this;
10680 }
10681
10682 operator const VkPresentRegionsKHR&() const
10683 {
10684 return *reinterpret_cast<const VkPresentRegionsKHR*>(this);
10685 }
10686
10687 bool operator==( PresentRegionsKHR const& rhs ) const
10688 {
10689 return ( sType == rhs.sType )
10690 && ( pNext == rhs.pNext )
10691 && ( swapchainCount == rhs.swapchainCount )
10692 && ( pRegions == rhs.pRegions );
10693 }
10694
10695 bool operator!=( PresentRegionsKHR const& rhs ) const
10696 {
10697 return !operator==( rhs );
10698 }
10699
10700 private:
10701 StructureType sType;
10702
10703 public:
10704 const void* pNext;
10705 uint32_t swapchainCount;
10706 const PresentRegionKHR* pRegions;
10707 };
10708 static_assert( sizeof( PresentRegionsKHR ) == sizeof( VkPresentRegionsKHR ), "struct and wrapper have different size!" );
10709
Mark Youngabc2d6e2017-07-07 07:59:56 -060010710 struct PhysicalDeviceVariablePointerFeaturesKHR
Mark Young0f183a82017-02-28 09:58:04 -070010711 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010712 PhysicalDeviceVariablePointerFeaturesKHR( Bool32 variablePointersStorageBuffer_ = 0, Bool32 variablePointers_ = 0 )
10713 : sType( StructureType::ePhysicalDeviceVariablePointerFeaturesKHR )
10714 , pNext( nullptr )
10715 , variablePointersStorageBuffer( variablePointersStorageBuffer_ )
10716 , variablePointers( variablePointers_ )
Mark Young0f183a82017-02-28 09:58:04 -070010717 {
Mark Young0f183a82017-02-28 09:58:04 -070010718 }
10719
Mark Youngabc2d6e2017-07-07 07:59:56 -060010720 PhysicalDeviceVariablePointerFeaturesKHR( VkPhysicalDeviceVariablePointerFeaturesKHR const & rhs )
10721 {
10722 memcpy( this, &rhs, sizeof( PhysicalDeviceVariablePointerFeaturesKHR ) );
10723 }
10724
10725 PhysicalDeviceVariablePointerFeaturesKHR& operator=( VkPhysicalDeviceVariablePointerFeaturesKHR const & rhs )
10726 {
10727 memcpy( this, &rhs, sizeof( PhysicalDeviceVariablePointerFeaturesKHR ) );
10728 return *this;
10729 }
10730 PhysicalDeviceVariablePointerFeaturesKHR& setPNext( void* pNext_ )
10731 {
10732 pNext = pNext_;
10733 return *this;
10734 }
10735
10736 PhysicalDeviceVariablePointerFeaturesKHR& setVariablePointersStorageBuffer( Bool32 variablePointersStorageBuffer_ )
10737 {
10738 variablePointersStorageBuffer = variablePointersStorageBuffer_;
10739 return *this;
10740 }
10741
10742 PhysicalDeviceVariablePointerFeaturesKHR& setVariablePointers( Bool32 variablePointers_ )
10743 {
10744 variablePointers = variablePointers_;
10745 return *this;
10746 }
10747
10748 operator const VkPhysicalDeviceVariablePointerFeaturesKHR&() const
10749 {
10750 return *reinterpret_cast<const VkPhysicalDeviceVariablePointerFeaturesKHR*>(this);
10751 }
10752
10753 bool operator==( PhysicalDeviceVariablePointerFeaturesKHR const& rhs ) const
10754 {
10755 return ( sType == rhs.sType )
10756 && ( pNext == rhs.pNext )
10757 && ( variablePointersStorageBuffer == rhs.variablePointersStorageBuffer )
10758 && ( variablePointers == rhs.variablePointers );
10759 }
10760
10761 bool operator!=( PhysicalDeviceVariablePointerFeaturesKHR const& rhs ) const
10762 {
10763 return !operator==( rhs );
10764 }
10765
10766 private:
10767 StructureType sType;
10768
10769 public:
10770 void* pNext;
10771 Bool32 variablePointersStorageBuffer;
10772 Bool32 variablePointers;
10773 };
10774 static_assert( sizeof( PhysicalDeviceVariablePointerFeaturesKHR ) == sizeof( VkPhysicalDeviceVariablePointerFeaturesKHR ), "struct and wrapper have different size!" );
10775
10776 struct PhysicalDeviceIDPropertiesKHR
10777 {
10778 operator const VkPhysicalDeviceIDPropertiesKHR&() const
10779 {
10780 return *reinterpret_cast<const VkPhysicalDeviceIDPropertiesKHR*>(this);
10781 }
10782
10783 bool operator==( PhysicalDeviceIDPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010784 {
10785 return ( sType == rhs.sType )
10786 && ( pNext == rhs.pNext )
10787 && ( memcmp( deviceUUID, rhs.deviceUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
10788 && ( memcmp( driverUUID, rhs.driverUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
Mark Youngabc2d6e2017-07-07 07:59:56 -060010789 && ( memcmp( deviceLUID, rhs.deviceLUID, VK_LUID_SIZE_KHR * sizeof( uint8_t ) ) == 0 )
10790 && ( deviceNodeMask == rhs.deviceNodeMask )
Mark Young0f183a82017-02-28 09:58:04 -070010791 && ( deviceLUIDValid == rhs.deviceLUIDValid );
10792 }
10793
Mark Youngabc2d6e2017-07-07 07:59:56 -060010794 bool operator!=( PhysicalDeviceIDPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010795 {
10796 return !operator==( rhs );
10797 }
10798
10799 private:
10800 StructureType sType;
10801
10802 public:
10803 void* pNext;
10804 uint8_t deviceUUID[VK_UUID_SIZE];
10805 uint8_t driverUUID[VK_UUID_SIZE];
Mark Youngabc2d6e2017-07-07 07:59:56 -060010806 uint8_t deviceLUID[VK_LUID_SIZE_KHR];
10807 uint32_t deviceNodeMask;
Mark Young0f183a82017-02-28 09:58:04 -070010808 Bool32 deviceLUIDValid;
10809 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060010810 static_assert( sizeof( PhysicalDeviceIDPropertiesKHR ) == sizeof( VkPhysicalDeviceIDPropertiesKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070010811
Mark Youngabc2d6e2017-07-07 07:59:56 -060010812#ifdef VK_USE_PLATFORM_WIN32_KHR
10813 struct ExportMemoryWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070010814 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010815 ExportMemoryWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
10816 : sType( StructureType::eExportMemoryWin32HandleInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070010817 , pNext( nullptr )
10818 , pAttributes( pAttributes_ )
10819 , dwAccess( dwAccess_ )
10820 , name( name_ )
10821 {
10822 }
10823
Mark Youngabc2d6e2017-07-07 07:59:56 -060010824 ExportMemoryWin32HandleInfoKHR( VkExportMemoryWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010825 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010826 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010827 }
10828
Mark Youngabc2d6e2017-07-07 07:59:56 -060010829 ExportMemoryWin32HandleInfoKHR& operator=( VkExportMemoryWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010830 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010831 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010832 return *this;
10833 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060010834 ExportMemoryWin32HandleInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070010835 {
10836 pNext = pNext_;
10837 return *this;
10838 }
10839
Mark Youngabc2d6e2017-07-07 07:59:56 -060010840 ExportMemoryWin32HandleInfoKHR& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
Mark Young0f183a82017-02-28 09:58:04 -070010841 {
10842 pAttributes = pAttributes_;
10843 return *this;
10844 }
10845
Mark Youngabc2d6e2017-07-07 07:59:56 -060010846 ExportMemoryWin32HandleInfoKHR& setDwAccess( DWORD dwAccess_ )
Mark Young0f183a82017-02-28 09:58:04 -070010847 {
10848 dwAccess = dwAccess_;
10849 return *this;
10850 }
10851
Mark Youngabc2d6e2017-07-07 07:59:56 -060010852 ExportMemoryWin32HandleInfoKHR& setName( LPCWSTR name_ )
Mark Young0f183a82017-02-28 09:58:04 -070010853 {
10854 name = name_;
10855 return *this;
10856 }
10857
Mark Youngabc2d6e2017-07-07 07:59:56 -060010858 operator const VkExportMemoryWin32HandleInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070010859 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010860 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070010861 }
10862
Mark Youngabc2d6e2017-07-07 07:59:56 -060010863 bool operator==( ExportMemoryWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010864 {
10865 return ( sType == rhs.sType )
10866 && ( pNext == rhs.pNext )
10867 && ( pAttributes == rhs.pAttributes )
10868 && ( dwAccess == rhs.dwAccess )
10869 && ( name == rhs.name );
10870 }
10871
Mark Youngabc2d6e2017-07-07 07:59:56 -060010872 bool operator!=( ExportMemoryWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010873 {
10874 return !operator==( rhs );
10875 }
10876
10877 private:
10878 StructureType sType;
10879
10880 public:
10881 const void* pNext;
10882 const SECURITY_ATTRIBUTES* pAttributes;
10883 DWORD dwAccess;
10884 LPCWSTR name;
10885 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060010886 static_assert( sizeof( ExportMemoryWin32HandleInfoKHR ) == sizeof( VkExportMemoryWin32HandleInfoKHR ), "struct and wrapper have different size!" );
10887#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070010888
10889#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Youngabc2d6e2017-07-07 07:59:56 -060010890 struct MemoryWin32HandlePropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070010891 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010892 operator const VkMemoryWin32HandlePropertiesKHR&() const
10893 {
10894 return *reinterpret_cast<const VkMemoryWin32HandlePropertiesKHR*>(this);
10895 }
10896
10897 bool operator==( MemoryWin32HandlePropertiesKHR const& rhs ) const
10898 {
10899 return ( sType == rhs.sType )
10900 && ( pNext == rhs.pNext )
10901 && ( memoryTypeBits == rhs.memoryTypeBits );
10902 }
10903
10904 bool operator!=( MemoryWin32HandlePropertiesKHR const& rhs ) const
10905 {
10906 return !operator==( rhs );
10907 }
10908
10909 private:
10910 StructureType sType;
10911
10912 public:
10913 void* pNext;
10914 uint32_t memoryTypeBits;
10915 };
10916 static_assert( sizeof( MemoryWin32HandlePropertiesKHR ) == sizeof( VkMemoryWin32HandlePropertiesKHR ), "struct and wrapper have different size!" );
10917#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10918
10919 struct MemoryFdPropertiesKHR
10920 {
10921 operator const VkMemoryFdPropertiesKHR&() const
10922 {
10923 return *reinterpret_cast<const VkMemoryFdPropertiesKHR*>(this);
10924 }
10925
10926 bool operator==( MemoryFdPropertiesKHR const& rhs ) const
10927 {
10928 return ( sType == rhs.sType )
10929 && ( pNext == rhs.pNext )
10930 && ( memoryTypeBits == rhs.memoryTypeBits );
10931 }
10932
10933 bool operator!=( MemoryFdPropertiesKHR const& rhs ) const
10934 {
10935 return !operator==( rhs );
10936 }
10937
10938 private:
10939 StructureType sType;
10940
10941 public:
10942 void* pNext;
10943 uint32_t memoryTypeBits;
10944 };
10945 static_assert( sizeof( MemoryFdPropertiesKHR ) == sizeof( VkMemoryFdPropertiesKHR ), "struct and wrapper have different size!" );
10946
10947#ifdef VK_USE_PLATFORM_WIN32_KHR
10948 struct Win32KeyedMutexAcquireReleaseInfoKHR
10949 {
10950 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 )
10951 : sType( StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070010952 , pNext( nullptr )
10953 , acquireCount( acquireCount_ )
10954 , pAcquireSyncs( pAcquireSyncs_ )
10955 , pAcquireKeys( pAcquireKeys_ )
10956 , pAcquireTimeouts( pAcquireTimeouts_ )
10957 , releaseCount( releaseCount_ )
10958 , pReleaseSyncs( pReleaseSyncs_ )
10959 , pReleaseKeys( pReleaseKeys_ )
10960 {
10961 }
10962
Mark Youngabc2d6e2017-07-07 07:59:56 -060010963 Win32KeyedMutexAcquireReleaseInfoKHR( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010964 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010965 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010966 }
10967
Mark Youngabc2d6e2017-07-07 07:59:56 -060010968 Win32KeyedMutexAcquireReleaseInfoKHR& operator=( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010969 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010970 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010971 return *this;
10972 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060010973 Win32KeyedMutexAcquireReleaseInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070010974 {
10975 pNext = pNext_;
10976 return *this;
10977 }
10978
Mark Youngabc2d6e2017-07-07 07:59:56 -060010979 Win32KeyedMutexAcquireReleaseInfoKHR& setAcquireCount( uint32_t acquireCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070010980 {
10981 acquireCount = acquireCount_;
10982 return *this;
10983 }
10984
Mark Youngabc2d6e2017-07-07 07:59:56 -060010985 Win32KeyedMutexAcquireReleaseInfoKHR& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
Mark Young0f183a82017-02-28 09:58:04 -070010986 {
10987 pAcquireSyncs = pAcquireSyncs_;
10988 return *this;
10989 }
10990
Mark Youngabc2d6e2017-07-07 07:59:56 -060010991 Win32KeyedMutexAcquireReleaseInfoKHR& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
Mark Young0f183a82017-02-28 09:58:04 -070010992 {
10993 pAcquireKeys = pAcquireKeys_;
10994 return *this;
10995 }
10996
Mark Youngabc2d6e2017-07-07 07:59:56 -060010997 Win32KeyedMutexAcquireReleaseInfoKHR& setPAcquireTimeouts( const uint32_t* pAcquireTimeouts_ )
Mark Young0f183a82017-02-28 09:58:04 -070010998 {
10999 pAcquireTimeouts = pAcquireTimeouts_;
11000 return *this;
11001 }
11002
Mark Youngabc2d6e2017-07-07 07:59:56 -060011003 Win32KeyedMutexAcquireReleaseInfoKHR& setReleaseCount( uint32_t releaseCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070011004 {
11005 releaseCount = releaseCount_;
11006 return *this;
11007 }
11008
Mark Youngabc2d6e2017-07-07 07:59:56 -060011009 Win32KeyedMutexAcquireReleaseInfoKHR& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
Mark Young0f183a82017-02-28 09:58:04 -070011010 {
11011 pReleaseSyncs = pReleaseSyncs_;
11012 return *this;
11013 }
11014
Mark Youngabc2d6e2017-07-07 07:59:56 -060011015 Win32KeyedMutexAcquireReleaseInfoKHR& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
Mark Young0f183a82017-02-28 09:58:04 -070011016 {
11017 pReleaseKeys = pReleaseKeys_;
11018 return *this;
11019 }
11020
Mark Youngabc2d6e2017-07-07 07:59:56 -060011021 operator const VkWin32KeyedMutexAcquireReleaseInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070011022 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011023 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070011024 }
11025
Mark Youngabc2d6e2017-07-07 07:59:56 -060011026 bool operator==( Win32KeyedMutexAcquireReleaseInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011027 {
11028 return ( sType == rhs.sType )
11029 && ( pNext == rhs.pNext )
11030 && ( acquireCount == rhs.acquireCount )
11031 && ( pAcquireSyncs == rhs.pAcquireSyncs )
11032 && ( pAcquireKeys == rhs.pAcquireKeys )
11033 && ( pAcquireTimeouts == rhs.pAcquireTimeouts )
11034 && ( releaseCount == rhs.releaseCount )
11035 && ( pReleaseSyncs == rhs.pReleaseSyncs )
11036 && ( pReleaseKeys == rhs.pReleaseKeys );
11037 }
11038
Mark Youngabc2d6e2017-07-07 07:59:56 -060011039 bool operator!=( Win32KeyedMutexAcquireReleaseInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011040 {
11041 return !operator==( rhs );
11042 }
11043
11044 private:
11045 StructureType sType;
11046
11047 public:
11048 const void* pNext;
11049 uint32_t acquireCount;
11050 const DeviceMemory* pAcquireSyncs;
11051 const uint64_t* pAcquireKeys;
11052 const uint32_t* pAcquireTimeouts;
11053 uint32_t releaseCount;
11054 const DeviceMemory* pReleaseSyncs;
11055 const uint64_t* pReleaseKeys;
11056 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060011057 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070011058#endif /*VK_USE_PLATFORM_WIN32_KHR*/
11059
Mark Youngabc2d6e2017-07-07 07:59:56 -060011060#ifdef VK_USE_PLATFORM_WIN32_KHR
11061 struct ExportSemaphoreWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070011062 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011063 ExportSemaphoreWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
11064 : sType( StructureType::eExportSemaphoreWin32HandleInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070011065 , pNext( nullptr )
11066 , pAttributes( pAttributes_ )
11067 , dwAccess( dwAccess_ )
11068 , name( name_ )
11069 {
11070 }
11071
Mark Youngabc2d6e2017-07-07 07:59:56 -060011072 ExportSemaphoreWin32HandleInfoKHR( VkExportSemaphoreWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011073 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011074 memcpy( this, &rhs, sizeof( ExportSemaphoreWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070011075 }
11076
Mark Youngabc2d6e2017-07-07 07:59:56 -060011077 ExportSemaphoreWin32HandleInfoKHR& operator=( VkExportSemaphoreWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011078 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011079 memcpy( this, &rhs, sizeof( ExportSemaphoreWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070011080 return *this;
11081 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060011082 ExportSemaphoreWin32HandleInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070011083 {
11084 pNext = pNext_;
11085 return *this;
11086 }
11087
Mark Youngabc2d6e2017-07-07 07:59:56 -060011088 ExportSemaphoreWin32HandleInfoKHR& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
Mark Young0f183a82017-02-28 09:58:04 -070011089 {
11090 pAttributes = pAttributes_;
11091 return *this;
11092 }
11093
Mark Youngabc2d6e2017-07-07 07:59:56 -060011094 ExportSemaphoreWin32HandleInfoKHR& setDwAccess( DWORD dwAccess_ )
Mark Young0f183a82017-02-28 09:58:04 -070011095 {
11096 dwAccess = dwAccess_;
11097 return *this;
11098 }
11099
Mark Youngabc2d6e2017-07-07 07:59:56 -060011100 ExportSemaphoreWin32HandleInfoKHR& setName( LPCWSTR name_ )
Mark Young0f183a82017-02-28 09:58:04 -070011101 {
11102 name = name_;
11103 return *this;
11104 }
11105
Mark Youngabc2d6e2017-07-07 07:59:56 -060011106 operator const VkExportSemaphoreWin32HandleInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070011107 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011108 return *reinterpret_cast<const VkExportSemaphoreWin32HandleInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070011109 }
11110
Mark Youngabc2d6e2017-07-07 07:59:56 -060011111 bool operator==( ExportSemaphoreWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011112 {
11113 return ( sType == rhs.sType )
11114 && ( pNext == rhs.pNext )
11115 && ( pAttributes == rhs.pAttributes )
11116 && ( dwAccess == rhs.dwAccess )
11117 && ( name == rhs.name );
11118 }
11119
Mark Youngabc2d6e2017-07-07 07:59:56 -060011120 bool operator!=( ExportSemaphoreWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011121 {
11122 return !operator==( rhs );
11123 }
11124
11125 private:
11126 StructureType sType;
11127
11128 public:
11129 const void* pNext;
11130 const SECURITY_ATTRIBUTES* pAttributes;
11131 DWORD dwAccess;
11132 LPCWSTR name;
11133 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060011134 static_assert( sizeof( ExportSemaphoreWin32HandleInfoKHR ) == sizeof( VkExportSemaphoreWin32HandleInfoKHR ), "struct and wrapper have different size!" );
11135#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070011136
Mark Youngabc2d6e2017-07-07 07:59:56 -060011137#ifdef VK_USE_PLATFORM_WIN32_KHR
11138 struct D3D12FenceSubmitInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070011139 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011140 D3D12FenceSubmitInfoKHR( uint32_t waitSemaphoreValuesCount_ = 0, const uint64_t* pWaitSemaphoreValues_ = nullptr, uint32_t signalSemaphoreValuesCount_ = 0, const uint64_t* pSignalSemaphoreValues_ = nullptr )
11141 : sType( StructureType::eD3D12FenceSubmitInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070011142 , pNext( nullptr )
11143 , waitSemaphoreValuesCount( waitSemaphoreValuesCount_ )
11144 , pWaitSemaphoreValues( pWaitSemaphoreValues_ )
11145 , signalSemaphoreValuesCount( signalSemaphoreValuesCount_ )
11146 , pSignalSemaphoreValues( pSignalSemaphoreValues_ )
11147 {
11148 }
11149
Mark Youngabc2d6e2017-07-07 07:59:56 -060011150 D3D12FenceSubmitInfoKHR( VkD3D12FenceSubmitInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011151 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011152 memcpy( this, &rhs, sizeof( D3D12FenceSubmitInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070011153 }
11154
Mark Youngabc2d6e2017-07-07 07:59:56 -060011155 D3D12FenceSubmitInfoKHR& operator=( VkD3D12FenceSubmitInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011156 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011157 memcpy( this, &rhs, sizeof( D3D12FenceSubmitInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070011158 return *this;
11159 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060011160 D3D12FenceSubmitInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070011161 {
11162 pNext = pNext_;
11163 return *this;
11164 }
11165
Mark Youngabc2d6e2017-07-07 07:59:56 -060011166 D3D12FenceSubmitInfoKHR& setWaitSemaphoreValuesCount( uint32_t waitSemaphoreValuesCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070011167 {
11168 waitSemaphoreValuesCount = waitSemaphoreValuesCount_;
11169 return *this;
11170 }
11171
Mark Youngabc2d6e2017-07-07 07:59:56 -060011172 D3D12FenceSubmitInfoKHR& setPWaitSemaphoreValues( const uint64_t* pWaitSemaphoreValues_ )
Mark Young0f183a82017-02-28 09:58:04 -070011173 {
11174 pWaitSemaphoreValues = pWaitSemaphoreValues_;
11175 return *this;
11176 }
11177
Mark Youngabc2d6e2017-07-07 07:59:56 -060011178 D3D12FenceSubmitInfoKHR& setSignalSemaphoreValuesCount( uint32_t signalSemaphoreValuesCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070011179 {
11180 signalSemaphoreValuesCount = signalSemaphoreValuesCount_;
11181 return *this;
11182 }
11183
Mark Youngabc2d6e2017-07-07 07:59:56 -060011184 D3D12FenceSubmitInfoKHR& setPSignalSemaphoreValues( const uint64_t* pSignalSemaphoreValues_ )
Mark Young0f183a82017-02-28 09:58:04 -070011185 {
11186 pSignalSemaphoreValues = pSignalSemaphoreValues_;
11187 return *this;
11188 }
11189
Mark Youngabc2d6e2017-07-07 07:59:56 -060011190 operator const VkD3D12FenceSubmitInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070011191 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011192 return *reinterpret_cast<const VkD3D12FenceSubmitInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070011193 }
11194
Mark Youngabc2d6e2017-07-07 07:59:56 -060011195 bool operator==( D3D12FenceSubmitInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011196 {
11197 return ( sType == rhs.sType )
11198 && ( pNext == rhs.pNext )
11199 && ( waitSemaphoreValuesCount == rhs.waitSemaphoreValuesCount )
11200 && ( pWaitSemaphoreValues == rhs.pWaitSemaphoreValues )
11201 && ( signalSemaphoreValuesCount == rhs.signalSemaphoreValuesCount )
11202 && ( pSignalSemaphoreValues == rhs.pSignalSemaphoreValues );
11203 }
11204
Mark Youngabc2d6e2017-07-07 07:59:56 -060011205 bool operator!=( D3D12FenceSubmitInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011206 {
11207 return !operator==( rhs );
11208 }
11209
11210 private:
11211 StructureType sType;
11212
11213 public:
11214 const void* pNext;
11215 uint32_t waitSemaphoreValuesCount;
11216 const uint64_t* pWaitSemaphoreValues;
11217 uint32_t signalSemaphoreValuesCount;
11218 const uint64_t* pSignalSemaphoreValues;
11219 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060011220 static_assert( sizeof( D3D12FenceSubmitInfoKHR ) == sizeof( VkD3D12FenceSubmitInfoKHR ), "struct and wrapper have different size!" );
11221#endif /*VK_USE_PLATFORM_WIN32_KHR*/
11222
11223#ifdef VK_USE_PLATFORM_WIN32_KHR
11224 struct ExportFenceWin32HandleInfoKHR
11225 {
11226 ExportFenceWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
11227 : sType( StructureType::eExportFenceWin32HandleInfoKHR )
11228 , pNext( nullptr )
11229 , pAttributes( pAttributes_ )
11230 , dwAccess( dwAccess_ )
11231 , name( name_ )
11232 {
11233 }
11234
11235 ExportFenceWin32HandleInfoKHR( VkExportFenceWin32HandleInfoKHR const & rhs )
11236 {
11237 memcpy( this, &rhs, sizeof( ExportFenceWin32HandleInfoKHR ) );
11238 }
11239
11240 ExportFenceWin32HandleInfoKHR& operator=( VkExportFenceWin32HandleInfoKHR const & rhs )
11241 {
11242 memcpy( this, &rhs, sizeof( ExportFenceWin32HandleInfoKHR ) );
11243 return *this;
11244 }
11245 ExportFenceWin32HandleInfoKHR& setPNext( const void* pNext_ )
11246 {
11247 pNext = pNext_;
11248 return *this;
11249 }
11250
11251 ExportFenceWin32HandleInfoKHR& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
11252 {
11253 pAttributes = pAttributes_;
11254 return *this;
11255 }
11256
11257 ExportFenceWin32HandleInfoKHR& setDwAccess( DWORD dwAccess_ )
11258 {
11259 dwAccess = dwAccess_;
11260 return *this;
11261 }
11262
11263 ExportFenceWin32HandleInfoKHR& setName( LPCWSTR name_ )
11264 {
11265 name = name_;
11266 return *this;
11267 }
11268
11269 operator const VkExportFenceWin32HandleInfoKHR&() const
11270 {
11271 return *reinterpret_cast<const VkExportFenceWin32HandleInfoKHR*>(this);
11272 }
11273
11274 bool operator==( ExportFenceWin32HandleInfoKHR const& rhs ) const
11275 {
11276 return ( sType == rhs.sType )
11277 && ( pNext == rhs.pNext )
11278 && ( pAttributes == rhs.pAttributes )
11279 && ( dwAccess == rhs.dwAccess )
11280 && ( name == rhs.name );
11281 }
11282
11283 bool operator!=( ExportFenceWin32HandleInfoKHR const& rhs ) const
11284 {
11285 return !operator==( rhs );
11286 }
11287
11288 private:
11289 StructureType sType;
11290
11291 public:
11292 const void* pNext;
11293 const SECURITY_ATTRIBUTES* pAttributes;
11294 DWORD dwAccess;
11295 LPCWSTR name;
11296 };
11297 static_assert( sizeof( ExportFenceWin32HandleInfoKHR ) == sizeof( VkExportFenceWin32HandleInfoKHR ), "struct and wrapper have different size!" );
11298#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070011299
11300 struct PhysicalDeviceMultiviewFeaturesKHX
11301 {
11302 PhysicalDeviceMultiviewFeaturesKHX( Bool32 multiview_ = 0, Bool32 multiviewGeometryShader_ = 0, Bool32 multiviewTessellationShader_ = 0 )
11303 : sType( StructureType::ePhysicalDeviceMultiviewFeaturesKHX )
11304 , pNext( nullptr )
11305 , multiview( multiview_ )
11306 , multiviewGeometryShader( multiviewGeometryShader_ )
11307 , multiviewTessellationShader( multiviewTessellationShader_ )
11308 {
11309 }
11310
11311 PhysicalDeviceMultiviewFeaturesKHX( VkPhysicalDeviceMultiviewFeaturesKHX const & rhs )
11312 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011313 memcpy( this, &rhs, sizeof( PhysicalDeviceMultiviewFeaturesKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011314 }
11315
11316 PhysicalDeviceMultiviewFeaturesKHX& operator=( VkPhysicalDeviceMultiviewFeaturesKHX const & rhs )
11317 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011318 memcpy( this, &rhs, sizeof( PhysicalDeviceMultiviewFeaturesKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011319 return *this;
11320 }
Mark Young0f183a82017-02-28 09:58:04 -070011321 PhysicalDeviceMultiviewFeaturesKHX& setPNext( void* pNext_ )
11322 {
11323 pNext = pNext_;
11324 return *this;
11325 }
11326
11327 PhysicalDeviceMultiviewFeaturesKHX& setMultiview( Bool32 multiview_ )
11328 {
11329 multiview = multiview_;
11330 return *this;
11331 }
11332
11333 PhysicalDeviceMultiviewFeaturesKHX& setMultiviewGeometryShader( Bool32 multiviewGeometryShader_ )
11334 {
11335 multiviewGeometryShader = multiviewGeometryShader_;
11336 return *this;
11337 }
11338
11339 PhysicalDeviceMultiviewFeaturesKHX& setMultiviewTessellationShader( Bool32 multiviewTessellationShader_ )
11340 {
11341 multiviewTessellationShader = multiviewTessellationShader_;
11342 return *this;
11343 }
11344
11345 operator const VkPhysicalDeviceMultiviewFeaturesKHX&() const
11346 {
11347 return *reinterpret_cast<const VkPhysicalDeviceMultiviewFeaturesKHX*>(this);
11348 }
11349
11350 bool operator==( PhysicalDeviceMultiviewFeaturesKHX const& rhs ) const
11351 {
11352 return ( sType == rhs.sType )
11353 && ( pNext == rhs.pNext )
11354 && ( multiview == rhs.multiview )
11355 && ( multiviewGeometryShader == rhs.multiviewGeometryShader )
11356 && ( multiviewTessellationShader == rhs.multiviewTessellationShader );
11357 }
11358
11359 bool operator!=( PhysicalDeviceMultiviewFeaturesKHX const& rhs ) const
11360 {
11361 return !operator==( rhs );
11362 }
11363
11364 private:
11365 StructureType sType;
11366
11367 public:
11368 void* pNext;
11369 Bool32 multiview;
11370 Bool32 multiviewGeometryShader;
11371 Bool32 multiviewTessellationShader;
11372 };
11373 static_assert( sizeof( PhysicalDeviceMultiviewFeaturesKHX ) == sizeof( VkPhysicalDeviceMultiviewFeaturesKHX ), "struct and wrapper have different size!" );
11374
11375 struct PhysicalDeviceMultiviewPropertiesKHX
11376 {
11377 operator const VkPhysicalDeviceMultiviewPropertiesKHX&() const
11378 {
11379 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPropertiesKHX*>(this);
11380 }
11381
11382 bool operator==( PhysicalDeviceMultiviewPropertiesKHX const& rhs ) const
11383 {
11384 return ( sType == rhs.sType )
11385 && ( pNext == rhs.pNext )
11386 && ( maxMultiviewViewCount == rhs.maxMultiviewViewCount )
11387 && ( maxMultiviewInstanceIndex == rhs.maxMultiviewInstanceIndex );
11388 }
11389
11390 bool operator!=( PhysicalDeviceMultiviewPropertiesKHX const& rhs ) const
11391 {
11392 return !operator==( rhs );
11393 }
11394
11395 private:
11396 StructureType sType;
11397
11398 public:
11399 void* pNext;
11400 uint32_t maxMultiviewViewCount;
11401 uint32_t maxMultiviewInstanceIndex;
11402 };
11403 static_assert( sizeof( PhysicalDeviceMultiviewPropertiesKHX ) == sizeof( VkPhysicalDeviceMultiviewPropertiesKHX ), "struct and wrapper have different size!" );
11404
11405 struct RenderPassMultiviewCreateInfoKHX
11406 {
11407 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 )
11408 : sType( StructureType::eRenderPassMultiviewCreateInfoKHX )
11409 , pNext( nullptr )
11410 , subpassCount( subpassCount_ )
11411 , pViewMasks( pViewMasks_ )
11412 , dependencyCount( dependencyCount_ )
11413 , pViewOffsets( pViewOffsets_ )
11414 , correlationMaskCount( correlationMaskCount_ )
11415 , pCorrelationMasks( pCorrelationMasks_ )
11416 {
11417 }
11418
11419 RenderPassMultiviewCreateInfoKHX( VkRenderPassMultiviewCreateInfoKHX const & rhs )
11420 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011421 memcpy( this, &rhs, sizeof( RenderPassMultiviewCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011422 }
11423
11424 RenderPassMultiviewCreateInfoKHX& operator=( VkRenderPassMultiviewCreateInfoKHX const & rhs )
11425 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011426 memcpy( this, &rhs, sizeof( RenderPassMultiviewCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011427 return *this;
11428 }
Mark Young0f183a82017-02-28 09:58:04 -070011429 RenderPassMultiviewCreateInfoKHX& setPNext( const void* pNext_ )
11430 {
11431 pNext = pNext_;
11432 return *this;
11433 }
11434
11435 RenderPassMultiviewCreateInfoKHX& setSubpassCount( uint32_t subpassCount_ )
11436 {
11437 subpassCount = subpassCount_;
11438 return *this;
11439 }
11440
11441 RenderPassMultiviewCreateInfoKHX& setPViewMasks( const uint32_t* pViewMasks_ )
11442 {
11443 pViewMasks = pViewMasks_;
11444 return *this;
11445 }
11446
11447 RenderPassMultiviewCreateInfoKHX& setDependencyCount( uint32_t dependencyCount_ )
11448 {
11449 dependencyCount = dependencyCount_;
11450 return *this;
11451 }
11452
11453 RenderPassMultiviewCreateInfoKHX& setPViewOffsets( const int32_t* pViewOffsets_ )
11454 {
11455 pViewOffsets = pViewOffsets_;
11456 return *this;
11457 }
11458
11459 RenderPassMultiviewCreateInfoKHX& setCorrelationMaskCount( uint32_t correlationMaskCount_ )
11460 {
11461 correlationMaskCount = correlationMaskCount_;
11462 return *this;
11463 }
11464
11465 RenderPassMultiviewCreateInfoKHX& setPCorrelationMasks( const uint32_t* pCorrelationMasks_ )
11466 {
11467 pCorrelationMasks = pCorrelationMasks_;
11468 return *this;
11469 }
11470
11471 operator const VkRenderPassMultiviewCreateInfoKHX&() const
11472 {
11473 return *reinterpret_cast<const VkRenderPassMultiviewCreateInfoKHX*>(this);
11474 }
11475
11476 bool operator==( RenderPassMultiviewCreateInfoKHX const& rhs ) const
11477 {
11478 return ( sType == rhs.sType )
11479 && ( pNext == rhs.pNext )
11480 && ( subpassCount == rhs.subpassCount )
11481 && ( pViewMasks == rhs.pViewMasks )
11482 && ( dependencyCount == rhs.dependencyCount )
11483 && ( pViewOffsets == rhs.pViewOffsets )
11484 && ( correlationMaskCount == rhs.correlationMaskCount )
11485 && ( pCorrelationMasks == rhs.pCorrelationMasks );
11486 }
11487
11488 bool operator!=( RenderPassMultiviewCreateInfoKHX const& rhs ) const
11489 {
11490 return !operator==( rhs );
11491 }
11492
11493 private:
11494 StructureType sType;
11495
11496 public:
11497 const void* pNext;
11498 uint32_t subpassCount;
11499 const uint32_t* pViewMasks;
11500 uint32_t dependencyCount;
11501 const int32_t* pViewOffsets;
11502 uint32_t correlationMaskCount;
11503 const uint32_t* pCorrelationMasks;
11504 };
11505 static_assert( sizeof( RenderPassMultiviewCreateInfoKHX ) == sizeof( VkRenderPassMultiviewCreateInfoKHX ), "struct and wrapper have different size!" );
11506
Lenny Komowb79f04a2017-09-18 17:07:00 -060011507 struct BindBufferMemoryInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070011508 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011509 BindBufferMemoryInfoKHR( Buffer buffer_ = Buffer(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0 )
11510 : sType( StructureType::eBindBufferMemoryInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070011511 , pNext( nullptr )
11512 , buffer( buffer_ )
11513 , memory( memory_ )
11514 , memoryOffset( memoryOffset_ )
Mark Young0f183a82017-02-28 09:58:04 -070011515 {
11516 }
11517
Lenny Komowb79f04a2017-09-18 17:07:00 -060011518 BindBufferMemoryInfoKHR( VkBindBufferMemoryInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011519 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011520 memcpy( this, &rhs, sizeof( BindBufferMemoryInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070011521 }
11522
Lenny Komowb79f04a2017-09-18 17:07:00 -060011523 BindBufferMemoryInfoKHR& operator=( VkBindBufferMemoryInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011524 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011525 memcpy( this, &rhs, sizeof( BindBufferMemoryInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070011526 return *this;
11527 }
Lenny Komowb79f04a2017-09-18 17:07:00 -060011528 BindBufferMemoryInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070011529 {
11530 pNext = pNext_;
11531 return *this;
11532 }
11533
Lenny Komowb79f04a2017-09-18 17:07:00 -060011534 BindBufferMemoryInfoKHR& setBuffer( Buffer buffer_ )
Mark Young0f183a82017-02-28 09:58:04 -070011535 {
11536 buffer = buffer_;
11537 return *this;
11538 }
11539
Lenny Komowb79f04a2017-09-18 17:07:00 -060011540 BindBufferMemoryInfoKHR& setMemory( DeviceMemory memory_ )
Mark Young0f183a82017-02-28 09:58:04 -070011541 {
11542 memory = memory_;
11543 return *this;
11544 }
11545
Lenny Komowb79f04a2017-09-18 17:07:00 -060011546 BindBufferMemoryInfoKHR& setMemoryOffset( DeviceSize memoryOffset_ )
Mark Young0f183a82017-02-28 09:58:04 -070011547 {
11548 memoryOffset = memoryOffset_;
11549 return *this;
11550 }
11551
Lenny Komowb79f04a2017-09-18 17:07:00 -060011552 operator const VkBindBufferMemoryInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070011553 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011554 return *reinterpret_cast<const VkBindBufferMemoryInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070011555 }
11556
Lenny Komowb79f04a2017-09-18 17:07:00 -060011557 bool operator==( BindBufferMemoryInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011558 {
11559 return ( sType == rhs.sType )
11560 && ( pNext == rhs.pNext )
11561 && ( buffer == rhs.buffer )
11562 && ( memory == rhs.memory )
Lenny Komowb79f04a2017-09-18 17:07:00 -060011563 && ( memoryOffset == rhs.memoryOffset );
Mark Young0f183a82017-02-28 09:58:04 -070011564 }
11565
Lenny Komowb79f04a2017-09-18 17:07:00 -060011566 bool operator!=( BindBufferMemoryInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011567 {
11568 return !operator==( rhs );
11569 }
11570
11571 private:
11572 StructureType sType;
11573
11574 public:
11575 const void* pNext;
11576 Buffer buffer;
11577 DeviceMemory memory;
11578 DeviceSize memoryOffset;
Mark Young0f183a82017-02-28 09:58:04 -070011579 };
Lenny Komowb79f04a2017-09-18 17:07:00 -060011580 static_assert( sizeof( BindBufferMemoryInfoKHR ) == sizeof( VkBindBufferMemoryInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070011581
Lenny Komowb79f04a2017-09-18 17:07:00 -060011582 struct BindBufferMemoryDeviceGroupInfoKHX
Mark Young0f183a82017-02-28 09:58:04 -070011583 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011584 BindBufferMemoryDeviceGroupInfoKHX( uint32_t deviceIndexCount_ = 0, const uint32_t* pDeviceIndices_ = nullptr )
11585 : sType( StructureType::eBindBufferMemoryDeviceGroupInfoKHX )
Mark Young0f183a82017-02-28 09:58:04 -070011586 , pNext( nullptr )
Mark Young0f183a82017-02-28 09:58:04 -070011587 , deviceIndexCount( deviceIndexCount_ )
11588 , pDeviceIndices( pDeviceIndices_ )
Mark Young0f183a82017-02-28 09:58:04 -070011589 {
11590 }
11591
Lenny Komowb79f04a2017-09-18 17:07:00 -060011592 BindBufferMemoryDeviceGroupInfoKHX( VkBindBufferMemoryDeviceGroupInfoKHX const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011593 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011594 memcpy( this, &rhs, sizeof( BindBufferMemoryDeviceGroupInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011595 }
11596
Lenny Komowb79f04a2017-09-18 17:07:00 -060011597 BindBufferMemoryDeviceGroupInfoKHX& operator=( VkBindBufferMemoryDeviceGroupInfoKHX const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011598 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011599 memcpy( this, &rhs, sizeof( BindBufferMemoryDeviceGroupInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011600 return *this;
11601 }
Lenny Komowb79f04a2017-09-18 17:07:00 -060011602 BindBufferMemoryDeviceGroupInfoKHX& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070011603 {
11604 pNext = pNext_;
11605 return *this;
11606 }
11607
Lenny Komowb79f04a2017-09-18 17:07:00 -060011608 BindBufferMemoryDeviceGroupInfoKHX& setDeviceIndexCount( uint32_t deviceIndexCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070011609 {
11610 deviceIndexCount = deviceIndexCount_;
11611 return *this;
11612 }
11613
Lenny Komowb79f04a2017-09-18 17:07:00 -060011614 BindBufferMemoryDeviceGroupInfoKHX& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
Mark Young0f183a82017-02-28 09:58:04 -070011615 {
11616 pDeviceIndices = pDeviceIndices_;
11617 return *this;
11618 }
11619
Lenny Komowb79f04a2017-09-18 17:07:00 -060011620 operator const VkBindBufferMemoryDeviceGroupInfoKHX&() const
Mark Young0f183a82017-02-28 09:58:04 -070011621 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011622 return *reinterpret_cast<const VkBindBufferMemoryDeviceGroupInfoKHX*>(this);
11623 }
11624
11625 bool operator==( BindBufferMemoryDeviceGroupInfoKHX const& rhs ) const
11626 {
11627 return ( sType == rhs.sType )
11628 && ( pNext == rhs.pNext )
11629 && ( deviceIndexCount == rhs.deviceIndexCount )
11630 && ( pDeviceIndices == rhs.pDeviceIndices );
11631 }
11632
11633 bool operator!=( BindBufferMemoryDeviceGroupInfoKHX const& rhs ) const
11634 {
11635 return !operator==( rhs );
11636 }
11637
11638 private:
11639 StructureType sType;
11640
11641 public:
11642 const void* pNext;
11643 uint32_t deviceIndexCount;
11644 const uint32_t* pDeviceIndices;
11645 };
11646 static_assert( sizeof( BindBufferMemoryDeviceGroupInfoKHX ) == sizeof( VkBindBufferMemoryDeviceGroupInfoKHX ), "struct and wrapper have different size!" );
11647
11648 struct BindImageMemoryInfoKHR
11649 {
11650 BindImageMemoryInfoKHR( Image image_ = Image(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0 )
11651 : sType( StructureType::eBindImageMemoryInfoKHR )
11652 , pNext( nullptr )
11653 , image( image_ )
11654 , memory( memory_ )
11655 , memoryOffset( memoryOffset_ )
11656 {
11657 }
11658
11659 BindImageMemoryInfoKHR( VkBindImageMemoryInfoKHR const & rhs )
11660 {
11661 memcpy( this, &rhs, sizeof( BindImageMemoryInfoKHR ) );
11662 }
11663
11664 BindImageMemoryInfoKHR& operator=( VkBindImageMemoryInfoKHR const & rhs )
11665 {
11666 memcpy( this, &rhs, sizeof( BindImageMemoryInfoKHR ) );
11667 return *this;
11668 }
11669 BindImageMemoryInfoKHR& setPNext( const void* pNext_ )
11670 {
11671 pNext = pNext_;
Mark Young0f183a82017-02-28 09:58:04 -070011672 return *this;
11673 }
11674
Lenny Komowb79f04a2017-09-18 17:07:00 -060011675 BindImageMemoryInfoKHR& setImage( Image image_ )
Mark Young0f183a82017-02-28 09:58:04 -070011676 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011677 image = image_;
Mark Young0f183a82017-02-28 09:58:04 -070011678 return *this;
11679 }
11680
Lenny Komowb79f04a2017-09-18 17:07:00 -060011681 BindImageMemoryInfoKHR& setMemory( DeviceMemory memory_ )
Mark Young0f183a82017-02-28 09:58:04 -070011682 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011683 memory = memory_;
11684 return *this;
Mark Young0f183a82017-02-28 09:58:04 -070011685 }
11686
Lenny Komowb79f04a2017-09-18 17:07:00 -060011687 BindImageMemoryInfoKHR& setMemoryOffset( DeviceSize memoryOffset_ )
11688 {
11689 memoryOffset = memoryOffset_;
11690 return *this;
11691 }
11692
11693 operator const VkBindImageMemoryInfoKHR&() const
11694 {
11695 return *reinterpret_cast<const VkBindImageMemoryInfoKHR*>(this);
11696 }
11697
11698 bool operator==( BindImageMemoryInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011699 {
11700 return ( sType == rhs.sType )
11701 && ( pNext == rhs.pNext )
11702 && ( image == rhs.image )
11703 && ( memory == rhs.memory )
Lenny Komowb79f04a2017-09-18 17:07:00 -060011704 && ( memoryOffset == rhs.memoryOffset );
Mark Young0f183a82017-02-28 09:58:04 -070011705 }
11706
Lenny Komowb79f04a2017-09-18 17:07:00 -060011707 bool operator!=( BindImageMemoryInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011708 {
11709 return !operator==( rhs );
11710 }
11711
11712 private:
11713 StructureType sType;
11714
11715 public:
11716 const void* pNext;
11717 Image image;
11718 DeviceMemory memory;
11719 DeviceSize memoryOffset;
Lenny Komowb79f04a2017-09-18 17:07:00 -060011720 };
11721 static_assert( sizeof( BindImageMemoryInfoKHR ) == sizeof( VkBindImageMemoryInfoKHR ), "struct and wrapper have different size!" );
11722
11723 struct BindImageMemoryDeviceGroupInfoKHX
11724 {
11725 BindImageMemoryDeviceGroupInfoKHX( uint32_t deviceIndexCount_ = 0, const uint32_t* pDeviceIndices_ = nullptr, uint32_t SFRRectCount_ = 0, const Rect2D* pSFRRects_ = nullptr )
11726 : sType( StructureType::eBindImageMemoryDeviceGroupInfoKHX )
11727 , pNext( nullptr )
11728 , deviceIndexCount( deviceIndexCount_ )
11729 , pDeviceIndices( pDeviceIndices_ )
11730 , SFRRectCount( SFRRectCount_ )
11731 , pSFRRects( pSFRRects_ )
11732 {
11733 }
11734
11735 BindImageMemoryDeviceGroupInfoKHX( VkBindImageMemoryDeviceGroupInfoKHX const & rhs )
11736 {
11737 memcpy( this, &rhs, sizeof( BindImageMemoryDeviceGroupInfoKHX ) );
11738 }
11739
11740 BindImageMemoryDeviceGroupInfoKHX& operator=( VkBindImageMemoryDeviceGroupInfoKHX const & rhs )
11741 {
11742 memcpy( this, &rhs, sizeof( BindImageMemoryDeviceGroupInfoKHX ) );
11743 return *this;
11744 }
11745 BindImageMemoryDeviceGroupInfoKHX& setPNext( const void* pNext_ )
11746 {
11747 pNext = pNext_;
11748 return *this;
11749 }
11750
11751 BindImageMemoryDeviceGroupInfoKHX& setDeviceIndexCount( uint32_t deviceIndexCount_ )
11752 {
11753 deviceIndexCount = deviceIndexCount_;
11754 return *this;
11755 }
11756
11757 BindImageMemoryDeviceGroupInfoKHX& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
11758 {
11759 pDeviceIndices = pDeviceIndices_;
11760 return *this;
11761 }
11762
11763 BindImageMemoryDeviceGroupInfoKHX& setSFRRectCount( uint32_t SFRRectCount_ )
11764 {
11765 SFRRectCount = SFRRectCount_;
11766 return *this;
11767 }
11768
11769 BindImageMemoryDeviceGroupInfoKHX& setPSFRRects( const Rect2D* pSFRRects_ )
11770 {
11771 pSFRRects = pSFRRects_;
11772 return *this;
11773 }
11774
11775 operator const VkBindImageMemoryDeviceGroupInfoKHX&() const
11776 {
11777 return *reinterpret_cast<const VkBindImageMemoryDeviceGroupInfoKHX*>(this);
11778 }
11779
11780 bool operator==( BindImageMemoryDeviceGroupInfoKHX const& rhs ) const
11781 {
11782 return ( sType == rhs.sType )
11783 && ( pNext == rhs.pNext )
11784 && ( deviceIndexCount == rhs.deviceIndexCount )
11785 && ( pDeviceIndices == rhs.pDeviceIndices )
11786 && ( SFRRectCount == rhs.SFRRectCount )
11787 && ( pSFRRects == rhs.pSFRRects );
11788 }
11789
11790 bool operator!=( BindImageMemoryDeviceGroupInfoKHX const& rhs ) const
11791 {
11792 return !operator==( rhs );
11793 }
11794
11795 private:
11796 StructureType sType;
11797
11798 public:
11799 const void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070011800 uint32_t deviceIndexCount;
11801 const uint32_t* pDeviceIndices;
11802 uint32_t SFRRectCount;
11803 const Rect2D* pSFRRects;
11804 };
Lenny Komowb79f04a2017-09-18 17:07:00 -060011805 static_assert( sizeof( BindImageMemoryDeviceGroupInfoKHX ) == sizeof( VkBindImageMemoryDeviceGroupInfoKHX ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070011806
11807 struct DeviceGroupRenderPassBeginInfoKHX
11808 {
11809 DeviceGroupRenderPassBeginInfoKHX( uint32_t deviceMask_ = 0, uint32_t deviceRenderAreaCount_ = 0, const Rect2D* pDeviceRenderAreas_ = nullptr )
11810 : sType( StructureType::eDeviceGroupRenderPassBeginInfoKHX )
11811 , pNext( nullptr )
11812 , deviceMask( deviceMask_ )
11813 , deviceRenderAreaCount( deviceRenderAreaCount_ )
11814 , pDeviceRenderAreas( pDeviceRenderAreas_ )
11815 {
11816 }
11817
11818 DeviceGroupRenderPassBeginInfoKHX( VkDeviceGroupRenderPassBeginInfoKHX const & rhs )
11819 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011820 memcpy( this, &rhs, sizeof( DeviceGroupRenderPassBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011821 }
11822
11823 DeviceGroupRenderPassBeginInfoKHX& operator=( VkDeviceGroupRenderPassBeginInfoKHX const & rhs )
11824 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011825 memcpy( this, &rhs, sizeof( DeviceGroupRenderPassBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011826 return *this;
11827 }
Mark Young0f183a82017-02-28 09:58:04 -070011828 DeviceGroupRenderPassBeginInfoKHX& setPNext( const void* pNext_ )
11829 {
11830 pNext = pNext_;
11831 return *this;
11832 }
11833
11834 DeviceGroupRenderPassBeginInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11835 {
11836 deviceMask = deviceMask_;
11837 return *this;
11838 }
11839
11840 DeviceGroupRenderPassBeginInfoKHX& setDeviceRenderAreaCount( uint32_t deviceRenderAreaCount_ )
11841 {
11842 deviceRenderAreaCount = deviceRenderAreaCount_;
11843 return *this;
11844 }
11845
11846 DeviceGroupRenderPassBeginInfoKHX& setPDeviceRenderAreas( const Rect2D* pDeviceRenderAreas_ )
11847 {
11848 pDeviceRenderAreas = pDeviceRenderAreas_;
11849 return *this;
11850 }
11851
11852 operator const VkDeviceGroupRenderPassBeginInfoKHX&() const
11853 {
11854 return *reinterpret_cast<const VkDeviceGroupRenderPassBeginInfoKHX*>(this);
11855 }
11856
11857 bool operator==( DeviceGroupRenderPassBeginInfoKHX const& rhs ) const
11858 {
11859 return ( sType == rhs.sType )
11860 && ( pNext == rhs.pNext )
11861 && ( deviceMask == rhs.deviceMask )
11862 && ( deviceRenderAreaCount == rhs.deviceRenderAreaCount )
11863 && ( pDeviceRenderAreas == rhs.pDeviceRenderAreas );
11864 }
11865
11866 bool operator!=( DeviceGroupRenderPassBeginInfoKHX const& rhs ) const
11867 {
11868 return !operator==( rhs );
11869 }
11870
11871 private:
11872 StructureType sType;
11873
11874 public:
11875 const void* pNext;
11876 uint32_t deviceMask;
11877 uint32_t deviceRenderAreaCount;
11878 const Rect2D* pDeviceRenderAreas;
11879 };
11880 static_assert( sizeof( DeviceGroupRenderPassBeginInfoKHX ) == sizeof( VkDeviceGroupRenderPassBeginInfoKHX ), "struct and wrapper have different size!" );
11881
11882 struct DeviceGroupCommandBufferBeginInfoKHX
11883 {
11884 DeviceGroupCommandBufferBeginInfoKHX( uint32_t deviceMask_ = 0 )
11885 : sType( StructureType::eDeviceGroupCommandBufferBeginInfoKHX )
11886 , pNext( nullptr )
11887 , deviceMask( deviceMask_ )
11888 {
11889 }
11890
11891 DeviceGroupCommandBufferBeginInfoKHX( VkDeviceGroupCommandBufferBeginInfoKHX const & rhs )
11892 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011893 memcpy( this, &rhs, sizeof( DeviceGroupCommandBufferBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011894 }
11895
11896 DeviceGroupCommandBufferBeginInfoKHX& operator=( VkDeviceGroupCommandBufferBeginInfoKHX const & rhs )
11897 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011898 memcpy( this, &rhs, sizeof( DeviceGroupCommandBufferBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011899 return *this;
11900 }
Mark Young0f183a82017-02-28 09:58:04 -070011901 DeviceGroupCommandBufferBeginInfoKHX& setPNext( const void* pNext_ )
11902 {
11903 pNext = pNext_;
11904 return *this;
11905 }
11906
11907 DeviceGroupCommandBufferBeginInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11908 {
11909 deviceMask = deviceMask_;
11910 return *this;
11911 }
11912
11913 operator const VkDeviceGroupCommandBufferBeginInfoKHX&() const
11914 {
11915 return *reinterpret_cast<const VkDeviceGroupCommandBufferBeginInfoKHX*>(this);
11916 }
11917
11918 bool operator==( DeviceGroupCommandBufferBeginInfoKHX const& rhs ) const
11919 {
11920 return ( sType == rhs.sType )
11921 && ( pNext == rhs.pNext )
11922 && ( deviceMask == rhs.deviceMask );
11923 }
11924
11925 bool operator!=( DeviceGroupCommandBufferBeginInfoKHX const& rhs ) const
11926 {
11927 return !operator==( rhs );
11928 }
11929
11930 private:
11931 StructureType sType;
11932
11933 public:
11934 const void* pNext;
11935 uint32_t deviceMask;
11936 };
11937 static_assert( sizeof( DeviceGroupCommandBufferBeginInfoKHX ) == sizeof( VkDeviceGroupCommandBufferBeginInfoKHX ), "struct and wrapper have different size!" );
11938
11939 struct DeviceGroupSubmitInfoKHX
11940 {
11941 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 )
11942 : sType( StructureType::eDeviceGroupSubmitInfoKHX )
11943 , pNext( nullptr )
11944 , waitSemaphoreCount( waitSemaphoreCount_ )
11945 , pWaitSemaphoreDeviceIndices( pWaitSemaphoreDeviceIndices_ )
11946 , commandBufferCount( commandBufferCount_ )
11947 , pCommandBufferDeviceMasks( pCommandBufferDeviceMasks_ )
11948 , signalSemaphoreCount( signalSemaphoreCount_ )
11949 , pSignalSemaphoreDeviceIndices( pSignalSemaphoreDeviceIndices_ )
11950 {
11951 }
11952
11953 DeviceGroupSubmitInfoKHX( VkDeviceGroupSubmitInfoKHX const & rhs )
11954 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011955 memcpy( this, &rhs, sizeof( DeviceGroupSubmitInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011956 }
11957
11958 DeviceGroupSubmitInfoKHX& operator=( VkDeviceGroupSubmitInfoKHX const & rhs )
11959 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011960 memcpy( this, &rhs, sizeof( DeviceGroupSubmitInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011961 return *this;
11962 }
Mark Young0f183a82017-02-28 09:58:04 -070011963 DeviceGroupSubmitInfoKHX& setPNext( const void* pNext_ )
11964 {
11965 pNext = pNext_;
11966 return *this;
11967 }
11968
11969 DeviceGroupSubmitInfoKHX& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
11970 {
11971 waitSemaphoreCount = waitSemaphoreCount_;
11972 return *this;
11973 }
11974
11975 DeviceGroupSubmitInfoKHX& setPWaitSemaphoreDeviceIndices( const uint32_t* pWaitSemaphoreDeviceIndices_ )
11976 {
11977 pWaitSemaphoreDeviceIndices = pWaitSemaphoreDeviceIndices_;
11978 return *this;
11979 }
11980
11981 DeviceGroupSubmitInfoKHX& setCommandBufferCount( uint32_t commandBufferCount_ )
11982 {
11983 commandBufferCount = commandBufferCount_;
11984 return *this;
11985 }
11986
11987 DeviceGroupSubmitInfoKHX& setPCommandBufferDeviceMasks( const uint32_t* pCommandBufferDeviceMasks_ )
11988 {
11989 pCommandBufferDeviceMasks = pCommandBufferDeviceMasks_;
11990 return *this;
11991 }
11992
11993 DeviceGroupSubmitInfoKHX& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
11994 {
11995 signalSemaphoreCount = signalSemaphoreCount_;
11996 return *this;
11997 }
11998
11999 DeviceGroupSubmitInfoKHX& setPSignalSemaphoreDeviceIndices( const uint32_t* pSignalSemaphoreDeviceIndices_ )
12000 {
12001 pSignalSemaphoreDeviceIndices = pSignalSemaphoreDeviceIndices_;
12002 return *this;
12003 }
12004
12005 operator const VkDeviceGroupSubmitInfoKHX&() const
12006 {
12007 return *reinterpret_cast<const VkDeviceGroupSubmitInfoKHX*>(this);
12008 }
12009
12010 bool operator==( DeviceGroupSubmitInfoKHX const& rhs ) const
12011 {
12012 return ( sType == rhs.sType )
12013 && ( pNext == rhs.pNext )
12014 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
12015 && ( pWaitSemaphoreDeviceIndices == rhs.pWaitSemaphoreDeviceIndices )
12016 && ( commandBufferCount == rhs.commandBufferCount )
12017 && ( pCommandBufferDeviceMasks == rhs.pCommandBufferDeviceMasks )
12018 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
12019 && ( pSignalSemaphoreDeviceIndices == rhs.pSignalSemaphoreDeviceIndices );
12020 }
12021
12022 bool operator!=( DeviceGroupSubmitInfoKHX const& rhs ) const
12023 {
12024 return !operator==( rhs );
12025 }
12026
12027 private:
12028 StructureType sType;
12029
12030 public:
12031 const void* pNext;
12032 uint32_t waitSemaphoreCount;
12033 const uint32_t* pWaitSemaphoreDeviceIndices;
12034 uint32_t commandBufferCount;
12035 const uint32_t* pCommandBufferDeviceMasks;
12036 uint32_t signalSemaphoreCount;
12037 const uint32_t* pSignalSemaphoreDeviceIndices;
12038 };
12039 static_assert( sizeof( DeviceGroupSubmitInfoKHX ) == sizeof( VkDeviceGroupSubmitInfoKHX ), "struct and wrapper have different size!" );
12040
12041 struct DeviceGroupBindSparseInfoKHX
12042 {
12043 DeviceGroupBindSparseInfoKHX( uint32_t resourceDeviceIndex_ = 0, uint32_t memoryDeviceIndex_ = 0 )
12044 : sType( StructureType::eDeviceGroupBindSparseInfoKHX )
12045 , pNext( nullptr )
12046 , resourceDeviceIndex( resourceDeviceIndex_ )
12047 , memoryDeviceIndex( memoryDeviceIndex_ )
12048 {
12049 }
12050
12051 DeviceGroupBindSparseInfoKHX( VkDeviceGroupBindSparseInfoKHX const & rhs )
12052 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012053 memcpy( this, &rhs, sizeof( DeviceGroupBindSparseInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012054 }
12055
12056 DeviceGroupBindSparseInfoKHX& operator=( VkDeviceGroupBindSparseInfoKHX const & rhs )
12057 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012058 memcpy( this, &rhs, sizeof( DeviceGroupBindSparseInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012059 return *this;
12060 }
Mark Young0f183a82017-02-28 09:58:04 -070012061 DeviceGroupBindSparseInfoKHX& setPNext( const void* pNext_ )
12062 {
12063 pNext = pNext_;
12064 return *this;
12065 }
12066
12067 DeviceGroupBindSparseInfoKHX& setResourceDeviceIndex( uint32_t resourceDeviceIndex_ )
12068 {
12069 resourceDeviceIndex = resourceDeviceIndex_;
12070 return *this;
12071 }
12072
12073 DeviceGroupBindSparseInfoKHX& setMemoryDeviceIndex( uint32_t memoryDeviceIndex_ )
12074 {
12075 memoryDeviceIndex = memoryDeviceIndex_;
12076 return *this;
12077 }
12078
12079 operator const VkDeviceGroupBindSparseInfoKHX&() const
12080 {
12081 return *reinterpret_cast<const VkDeviceGroupBindSparseInfoKHX*>(this);
12082 }
12083
12084 bool operator==( DeviceGroupBindSparseInfoKHX const& rhs ) const
12085 {
12086 return ( sType == rhs.sType )
12087 && ( pNext == rhs.pNext )
12088 && ( resourceDeviceIndex == rhs.resourceDeviceIndex )
12089 && ( memoryDeviceIndex == rhs.memoryDeviceIndex );
12090 }
12091
12092 bool operator!=( DeviceGroupBindSparseInfoKHX const& rhs ) const
12093 {
12094 return !operator==( rhs );
12095 }
12096
12097 private:
12098 StructureType sType;
12099
12100 public:
12101 const void* pNext;
12102 uint32_t resourceDeviceIndex;
12103 uint32_t memoryDeviceIndex;
12104 };
12105 static_assert( sizeof( DeviceGroupBindSparseInfoKHX ) == sizeof( VkDeviceGroupBindSparseInfoKHX ), "struct and wrapper have different size!" );
12106
12107 struct ImageSwapchainCreateInfoKHX
12108 {
12109 ImageSwapchainCreateInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR() )
12110 : sType( StructureType::eImageSwapchainCreateInfoKHX )
12111 , pNext( nullptr )
12112 , swapchain( swapchain_ )
12113 {
12114 }
12115
12116 ImageSwapchainCreateInfoKHX( VkImageSwapchainCreateInfoKHX const & rhs )
12117 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012118 memcpy( this, &rhs, sizeof( ImageSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012119 }
12120
12121 ImageSwapchainCreateInfoKHX& operator=( VkImageSwapchainCreateInfoKHX const & rhs )
12122 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012123 memcpy( this, &rhs, sizeof( ImageSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012124 return *this;
12125 }
Mark Young0f183a82017-02-28 09:58:04 -070012126 ImageSwapchainCreateInfoKHX& setPNext( const void* pNext_ )
12127 {
12128 pNext = pNext_;
12129 return *this;
12130 }
12131
12132 ImageSwapchainCreateInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
12133 {
12134 swapchain = swapchain_;
12135 return *this;
12136 }
12137
12138 operator const VkImageSwapchainCreateInfoKHX&() const
12139 {
12140 return *reinterpret_cast<const VkImageSwapchainCreateInfoKHX*>(this);
12141 }
12142
12143 bool operator==( ImageSwapchainCreateInfoKHX const& rhs ) const
12144 {
12145 return ( sType == rhs.sType )
12146 && ( pNext == rhs.pNext )
12147 && ( swapchain == rhs.swapchain );
12148 }
12149
12150 bool operator!=( ImageSwapchainCreateInfoKHX const& rhs ) const
12151 {
12152 return !operator==( rhs );
12153 }
12154
12155 private:
12156 StructureType sType;
12157
12158 public:
12159 const void* pNext;
12160 SwapchainKHR swapchain;
12161 };
12162 static_assert( sizeof( ImageSwapchainCreateInfoKHX ) == sizeof( VkImageSwapchainCreateInfoKHX ), "struct and wrapper have different size!" );
12163
12164 struct BindImageMemorySwapchainInfoKHX
12165 {
12166 BindImageMemorySwapchainInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR(), uint32_t imageIndex_ = 0 )
12167 : sType( StructureType::eBindImageMemorySwapchainInfoKHX )
12168 , pNext( nullptr )
12169 , swapchain( swapchain_ )
12170 , imageIndex( imageIndex_ )
12171 {
12172 }
12173
12174 BindImageMemorySwapchainInfoKHX( VkBindImageMemorySwapchainInfoKHX const & rhs )
12175 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012176 memcpy( this, &rhs, sizeof( BindImageMemorySwapchainInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012177 }
12178
12179 BindImageMemorySwapchainInfoKHX& operator=( VkBindImageMemorySwapchainInfoKHX const & rhs )
12180 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012181 memcpy( this, &rhs, sizeof( BindImageMemorySwapchainInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012182 return *this;
12183 }
Mark Young0f183a82017-02-28 09:58:04 -070012184 BindImageMemorySwapchainInfoKHX& setPNext( const void* pNext_ )
12185 {
12186 pNext = pNext_;
12187 return *this;
12188 }
12189
12190 BindImageMemorySwapchainInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
12191 {
12192 swapchain = swapchain_;
12193 return *this;
12194 }
12195
12196 BindImageMemorySwapchainInfoKHX& setImageIndex( uint32_t imageIndex_ )
12197 {
12198 imageIndex = imageIndex_;
12199 return *this;
12200 }
12201
12202 operator const VkBindImageMemorySwapchainInfoKHX&() const
12203 {
12204 return *reinterpret_cast<const VkBindImageMemorySwapchainInfoKHX*>(this);
12205 }
12206
12207 bool operator==( BindImageMemorySwapchainInfoKHX const& rhs ) const
12208 {
12209 return ( sType == rhs.sType )
12210 && ( pNext == rhs.pNext )
12211 && ( swapchain == rhs.swapchain )
12212 && ( imageIndex == rhs.imageIndex );
12213 }
12214
12215 bool operator!=( BindImageMemorySwapchainInfoKHX const& rhs ) const
12216 {
12217 return !operator==( rhs );
12218 }
12219
12220 private:
12221 StructureType sType;
12222
12223 public:
12224 const void* pNext;
12225 SwapchainKHR swapchain;
12226 uint32_t imageIndex;
12227 };
12228 static_assert( sizeof( BindImageMemorySwapchainInfoKHX ) == sizeof( VkBindImageMemorySwapchainInfoKHX ), "struct and wrapper have different size!" );
12229
12230 struct AcquireNextImageInfoKHX
12231 {
12232 AcquireNextImageInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR(), uint64_t timeout_ = 0, Semaphore semaphore_ = Semaphore(), Fence fence_ = Fence(), uint32_t deviceMask_ = 0 )
12233 : sType( StructureType::eAcquireNextImageInfoKHX )
12234 , pNext( nullptr )
12235 , swapchain( swapchain_ )
12236 , timeout( timeout_ )
12237 , semaphore( semaphore_ )
12238 , fence( fence_ )
12239 , deviceMask( deviceMask_ )
12240 {
12241 }
12242
12243 AcquireNextImageInfoKHX( VkAcquireNextImageInfoKHX const & rhs )
12244 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012245 memcpy( this, &rhs, sizeof( AcquireNextImageInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012246 }
12247
12248 AcquireNextImageInfoKHX& operator=( VkAcquireNextImageInfoKHX const & rhs )
12249 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012250 memcpy( this, &rhs, sizeof( AcquireNextImageInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012251 return *this;
12252 }
Mark Young0f183a82017-02-28 09:58:04 -070012253 AcquireNextImageInfoKHX& setPNext( const void* pNext_ )
12254 {
12255 pNext = pNext_;
12256 return *this;
12257 }
12258
12259 AcquireNextImageInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
12260 {
12261 swapchain = swapchain_;
12262 return *this;
12263 }
12264
12265 AcquireNextImageInfoKHX& setTimeout( uint64_t timeout_ )
12266 {
12267 timeout = timeout_;
12268 return *this;
12269 }
12270
12271 AcquireNextImageInfoKHX& setSemaphore( Semaphore semaphore_ )
12272 {
12273 semaphore = semaphore_;
12274 return *this;
12275 }
12276
12277 AcquireNextImageInfoKHX& setFence( Fence fence_ )
12278 {
12279 fence = fence_;
12280 return *this;
12281 }
12282
12283 AcquireNextImageInfoKHX& setDeviceMask( uint32_t deviceMask_ )
12284 {
12285 deviceMask = deviceMask_;
12286 return *this;
12287 }
12288
12289 operator const VkAcquireNextImageInfoKHX&() const
12290 {
12291 return *reinterpret_cast<const VkAcquireNextImageInfoKHX*>(this);
12292 }
12293
12294 bool operator==( AcquireNextImageInfoKHX const& rhs ) const
12295 {
12296 return ( sType == rhs.sType )
12297 && ( pNext == rhs.pNext )
12298 && ( swapchain == rhs.swapchain )
12299 && ( timeout == rhs.timeout )
12300 && ( semaphore == rhs.semaphore )
12301 && ( fence == rhs.fence )
12302 && ( deviceMask == rhs.deviceMask );
12303 }
12304
12305 bool operator!=( AcquireNextImageInfoKHX const& rhs ) const
12306 {
12307 return !operator==( rhs );
12308 }
12309
12310 private:
12311 StructureType sType;
12312
12313 public:
12314 const void* pNext;
12315 SwapchainKHR swapchain;
12316 uint64_t timeout;
12317 Semaphore semaphore;
12318 Fence fence;
12319 uint32_t deviceMask;
12320 };
12321 static_assert( sizeof( AcquireNextImageInfoKHX ) == sizeof( VkAcquireNextImageInfoKHX ), "struct and wrapper have different size!" );
12322
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012323 struct HdrMetadataEXT
12324 {
12325 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 )
12326 : sType( StructureType::eHdrMetadataEXT )
12327 , pNext( nullptr )
12328 , displayPrimaryRed( displayPrimaryRed_ )
12329 , displayPrimaryGreen( displayPrimaryGreen_ )
12330 , displayPrimaryBlue( displayPrimaryBlue_ )
12331 , whitePoint( whitePoint_ )
12332 , maxLuminance( maxLuminance_ )
12333 , minLuminance( minLuminance_ )
12334 , maxContentLightLevel( maxContentLightLevel_ )
12335 , maxFrameAverageLightLevel( maxFrameAverageLightLevel_ )
12336 {
12337 }
12338
12339 HdrMetadataEXT( VkHdrMetadataEXT const & rhs )
12340 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012341 memcpy( this, &rhs, sizeof( HdrMetadataEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012342 }
12343
12344 HdrMetadataEXT& operator=( VkHdrMetadataEXT const & rhs )
12345 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012346 memcpy( this, &rhs, sizeof( HdrMetadataEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012347 return *this;
12348 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012349 HdrMetadataEXT& setPNext( const void* pNext_ )
12350 {
12351 pNext = pNext_;
12352 return *this;
12353 }
12354
12355 HdrMetadataEXT& setDisplayPrimaryRed( XYColorEXT displayPrimaryRed_ )
12356 {
12357 displayPrimaryRed = displayPrimaryRed_;
12358 return *this;
12359 }
12360
12361 HdrMetadataEXT& setDisplayPrimaryGreen( XYColorEXT displayPrimaryGreen_ )
12362 {
12363 displayPrimaryGreen = displayPrimaryGreen_;
12364 return *this;
12365 }
12366
12367 HdrMetadataEXT& setDisplayPrimaryBlue( XYColorEXT displayPrimaryBlue_ )
12368 {
12369 displayPrimaryBlue = displayPrimaryBlue_;
12370 return *this;
12371 }
12372
12373 HdrMetadataEXT& setWhitePoint( XYColorEXT whitePoint_ )
12374 {
12375 whitePoint = whitePoint_;
12376 return *this;
12377 }
12378
12379 HdrMetadataEXT& setMaxLuminance( float maxLuminance_ )
12380 {
12381 maxLuminance = maxLuminance_;
12382 return *this;
12383 }
12384
12385 HdrMetadataEXT& setMinLuminance( float minLuminance_ )
12386 {
12387 minLuminance = minLuminance_;
12388 return *this;
12389 }
12390
12391 HdrMetadataEXT& setMaxContentLightLevel( float maxContentLightLevel_ )
12392 {
12393 maxContentLightLevel = maxContentLightLevel_;
12394 return *this;
12395 }
12396
12397 HdrMetadataEXT& setMaxFrameAverageLightLevel( float maxFrameAverageLightLevel_ )
12398 {
12399 maxFrameAverageLightLevel = maxFrameAverageLightLevel_;
12400 return *this;
12401 }
12402
12403 operator const VkHdrMetadataEXT&() const
12404 {
12405 return *reinterpret_cast<const VkHdrMetadataEXT*>(this);
12406 }
12407
12408 bool operator==( HdrMetadataEXT const& rhs ) const
12409 {
12410 return ( sType == rhs.sType )
12411 && ( pNext == rhs.pNext )
12412 && ( displayPrimaryRed == rhs.displayPrimaryRed )
12413 && ( displayPrimaryGreen == rhs.displayPrimaryGreen )
12414 && ( displayPrimaryBlue == rhs.displayPrimaryBlue )
12415 && ( whitePoint == rhs.whitePoint )
12416 && ( maxLuminance == rhs.maxLuminance )
12417 && ( minLuminance == rhs.minLuminance )
12418 && ( maxContentLightLevel == rhs.maxContentLightLevel )
12419 && ( maxFrameAverageLightLevel == rhs.maxFrameAverageLightLevel );
12420 }
12421
12422 bool operator!=( HdrMetadataEXT const& rhs ) const
12423 {
12424 return !operator==( rhs );
12425 }
12426
12427 private:
12428 StructureType sType;
12429
12430 public:
12431 const void* pNext;
12432 XYColorEXT displayPrimaryRed;
12433 XYColorEXT displayPrimaryGreen;
12434 XYColorEXT displayPrimaryBlue;
12435 XYColorEXT whitePoint;
12436 float maxLuminance;
12437 float minLuminance;
12438 float maxContentLightLevel;
12439 float maxFrameAverageLightLevel;
12440 };
12441 static_assert( sizeof( HdrMetadataEXT ) == sizeof( VkHdrMetadataEXT ), "struct and wrapper have different size!" );
12442
12443 struct PresentTimesInfoGOOGLE
12444 {
12445 PresentTimesInfoGOOGLE( uint32_t swapchainCount_ = 0, const PresentTimeGOOGLE* pTimes_ = nullptr )
12446 : sType( StructureType::ePresentTimesInfoGOOGLE )
12447 , pNext( nullptr )
12448 , swapchainCount( swapchainCount_ )
12449 , pTimes( pTimes_ )
12450 {
12451 }
12452
12453 PresentTimesInfoGOOGLE( VkPresentTimesInfoGOOGLE const & rhs )
12454 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012455 memcpy( this, &rhs, sizeof( PresentTimesInfoGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012456 }
12457
12458 PresentTimesInfoGOOGLE& operator=( VkPresentTimesInfoGOOGLE const & rhs )
12459 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012460 memcpy( this, &rhs, sizeof( PresentTimesInfoGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012461 return *this;
12462 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012463 PresentTimesInfoGOOGLE& setPNext( const void* pNext_ )
12464 {
12465 pNext = pNext_;
12466 return *this;
12467 }
12468
12469 PresentTimesInfoGOOGLE& setSwapchainCount( uint32_t swapchainCount_ )
12470 {
12471 swapchainCount = swapchainCount_;
12472 return *this;
12473 }
12474
12475 PresentTimesInfoGOOGLE& setPTimes( const PresentTimeGOOGLE* pTimes_ )
12476 {
12477 pTimes = pTimes_;
12478 return *this;
12479 }
12480
12481 operator const VkPresentTimesInfoGOOGLE&() const
12482 {
12483 return *reinterpret_cast<const VkPresentTimesInfoGOOGLE*>(this);
12484 }
12485
12486 bool operator==( PresentTimesInfoGOOGLE const& rhs ) const
12487 {
12488 return ( sType == rhs.sType )
12489 && ( pNext == rhs.pNext )
12490 && ( swapchainCount == rhs.swapchainCount )
12491 && ( pTimes == rhs.pTimes );
12492 }
12493
12494 bool operator!=( PresentTimesInfoGOOGLE const& rhs ) const
12495 {
12496 return !operator==( rhs );
12497 }
12498
12499 private:
12500 StructureType sType;
12501
12502 public:
12503 const void* pNext;
12504 uint32_t swapchainCount;
12505 const PresentTimeGOOGLE* pTimes;
12506 };
12507 static_assert( sizeof( PresentTimesInfoGOOGLE ) == sizeof( VkPresentTimesInfoGOOGLE ), "struct and wrapper have different size!" );
12508
Mark Young0f183a82017-02-28 09:58:04 -070012509#ifdef VK_USE_PLATFORM_IOS_MVK
12510 struct IOSSurfaceCreateInfoMVK
12511 {
12512 IOSSurfaceCreateInfoMVK( IOSSurfaceCreateFlagsMVK flags_ = IOSSurfaceCreateFlagsMVK(), const void* pView_ = nullptr )
12513 : sType( StructureType::eIOSSurfaceCreateInfoMVK )
12514 , pNext( nullptr )
12515 , flags( flags_ )
12516 , pView( pView_ )
12517 {
12518 }
12519
12520 IOSSurfaceCreateInfoMVK( VkIOSSurfaceCreateInfoMVK const & rhs )
12521 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012522 memcpy( this, &rhs, sizeof( IOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070012523 }
12524
12525 IOSSurfaceCreateInfoMVK& operator=( VkIOSSurfaceCreateInfoMVK const & rhs )
12526 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012527 memcpy( this, &rhs, sizeof( IOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070012528 return *this;
12529 }
Mark Young0f183a82017-02-28 09:58:04 -070012530 IOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
12531 {
12532 pNext = pNext_;
12533 return *this;
12534 }
12535
12536 IOSSurfaceCreateInfoMVK& setFlags( IOSSurfaceCreateFlagsMVK flags_ )
12537 {
12538 flags = flags_;
12539 return *this;
12540 }
12541
12542 IOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
12543 {
12544 pView = pView_;
12545 return *this;
12546 }
12547
12548 operator const VkIOSSurfaceCreateInfoMVK&() const
12549 {
12550 return *reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>(this);
12551 }
12552
12553 bool operator==( IOSSurfaceCreateInfoMVK const& rhs ) const
12554 {
12555 return ( sType == rhs.sType )
12556 && ( pNext == rhs.pNext )
12557 && ( flags == rhs.flags )
12558 && ( pView == rhs.pView );
12559 }
12560
12561 bool operator!=( IOSSurfaceCreateInfoMVK const& rhs ) const
12562 {
12563 return !operator==( rhs );
12564 }
12565
12566 private:
12567 StructureType sType;
12568
12569 public:
12570 const void* pNext;
12571 IOSSurfaceCreateFlagsMVK flags;
12572 const void* pView;
12573 };
12574 static_assert( sizeof( IOSSurfaceCreateInfoMVK ) == sizeof( VkIOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
12575#endif /*VK_USE_PLATFORM_IOS_MVK*/
12576
12577#ifdef VK_USE_PLATFORM_MACOS_MVK
12578 struct MacOSSurfaceCreateInfoMVK
12579 {
12580 MacOSSurfaceCreateInfoMVK( MacOSSurfaceCreateFlagsMVK flags_ = MacOSSurfaceCreateFlagsMVK(), const void* pView_ = nullptr )
12581 : sType( StructureType::eMacOSSurfaceCreateInfoMVK )
12582 , pNext( nullptr )
12583 , flags( flags_ )
12584 , pView( pView_ )
12585 {
12586 }
12587
12588 MacOSSurfaceCreateInfoMVK( VkMacOSSurfaceCreateInfoMVK const & rhs )
12589 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012590 memcpy( this, &rhs, sizeof( MacOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070012591 }
12592
12593 MacOSSurfaceCreateInfoMVK& operator=( VkMacOSSurfaceCreateInfoMVK const & rhs )
12594 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012595 memcpy( this, &rhs, sizeof( MacOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070012596 return *this;
12597 }
Mark Young0f183a82017-02-28 09:58:04 -070012598 MacOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
12599 {
12600 pNext = pNext_;
12601 return *this;
12602 }
12603
12604 MacOSSurfaceCreateInfoMVK& setFlags( MacOSSurfaceCreateFlagsMVK flags_ )
12605 {
12606 flags = flags_;
12607 return *this;
12608 }
12609
12610 MacOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
12611 {
12612 pView = pView_;
12613 return *this;
12614 }
12615
12616 operator const VkMacOSSurfaceCreateInfoMVK&() const
12617 {
12618 return *reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>(this);
12619 }
12620
12621 bool operator==( MacOSSurfaceCreateInfoMVK const& rhs ) const
12622 {
12623 return ( sType == rhs.sType )
12624 && ( pNext == rhs.pNext )
12625 && ( flags == rhs.flags )
12626 && ( pView == rhs.pView );
12627 }
12628
12629 bool operator!=( MacOSSurfaceCreateInfoMVK const& rhs ) const
12630 {
12631 return !operator==( rhs );
12632 }
12633
12634 private:
12635 StructureType sType;
12636
12637 public:
12638 const void* pNext;
12639 MacOSSurfaceCreateFlagsMVK flags;
12640 const void* pView;
12641 };
12642 static_assert( sizeof( MacOSSurfaceCreateInfoMVK ) == sizeof( VkMacOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
12643#endif /*VK_USE_PLATFORM_MACOS_MVK*/
12644
12645 struct PipelineViewportWScalingStateCreateInfoNV
12646 {
12647 PipelineViewportWScalingStateCreateInfoNV( Bool32 viewportWScalingEnable_ = 0, uint32_t viewportCount_ = 0, const ViewportWScalingNV* pViewportWScalings_ = nullptr )
12648 : sType( StructureType::ePipelineViewportWScalingStateCreateInfoNV )
12649 , pNext( nullptr )
12650 , viewportWScalingEnable( viewportWScalingEnable_ )
12651 , viewportCount( viewportCount_ )
12652 , pViewportWScalings( pViewportWScalings_ )
12653 {
12654 }
12655
12656 PipelineViewportWScalingStateCreateInfoNV( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
12657 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012658 memcpy( this, &rhs, sizeof( PipelineViewportWScalingStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070012659 }
12660
12661 PipelineViewportWScalingStateCreateInfoNV& operator=( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
12662 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012663 memcpy( this, &rhs, sizeof( PipelineViewportWScalingStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070012664 return *this;
12665 }
Mark Young0f183a82017-02-28 09:58:04 -070012666 PipelineViewportWScalingStateCreateInfoNV& setPNext( const void* pNext_ )
12667 {
12668 pNext = pNext_;
12669 return *this;
12670 }
12671
12672 PipelineViewportWScalingStateCreateInfoNV& setViewportWScalingEnable( Bool32 viewportWScalingEnable_ )
12673 {
12674 viewportWScalingEnable = viewportWScalingEnable_;
12675 return *this;
12676 }
12677
12678 PipelineViewportWScalingStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
12679 {
12680 viewportCount = viewportCount_;
12681 return *this;
12682 }
12683
12684 PipelineViewportWScalingStateCreateInfoNV& setPViewportWScalings( const ViewportWScalingNV* pViewportWScalings_ )
12685 {
12686 pViewportWScalings = pViewportWScalings_;
12687 return *this;
12688 }
12689
12690 operator const VkPipelineViewportWScalingStateCreateInfoNV&() const
12691 {
12692 return *reinterpret_cast<const VkPipelineViewportWScalingStateCreateInfoNV*>(this);
12693 }
12694
12695 bool operator==( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
12696 {
12697 return ( sType == rhs.sType )
12698 && ( pNext == rhs.pNext )
12699 && ( viewportWScalingEnable == rhs.viewportWScalingEnable )
12700 && ( viewportCount == rhs.viewportCount )
12701 && ( pViewportWScalings == rhs.pViewportWScalings );
12702 }
12703
12704 bool operator!=( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
12705 {
12706 return !operator==( rhs );
12707 }
12708
12709 private:
12710 StructureType sType;
12711
12712 public:
12713 const void* pNext;
12714 Bool32 viewportWScalingEnable;
12715 uint32_t viewportCount;
12716 const ViewportWScalingNV* pViewportWScalings;
12717 };
12718 static_assert( sizeof( PipelineViewportWScalingStateCreateInfoNV ) == sizeof( VkPipelineViewportWScalingStateCreateInfoNV ), "struct and wrapper have different size!" );
12719
12720 struct PhysicalDeviceDiscardRectanglePropertiesEXT
12721 {
12722 PhysicalDeviceDiscardRectanglePropertiesEXT( uint32_t maxDiscardRectangles_ = 0 )
12723 : sType( StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT )
12724 , pNext( nullptr )
12725 , maxDiscardRectangles( maxDiscardRectangles_ )
12726 {
12727 }
12728
12729 PhysicalDeviceDiscardRectanglePropertiesEXT( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
12730 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012731 memcpy( this, &rhs, sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070012732 }
12733
12734 PhysicalDeviceDiscardRectanglePropertiesEXT& operator=( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
12735 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012736 memcpy( this, &rhs, sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070012737 return *this;
12738 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -060012739 PhysicalDeviceDiscardRectanglePropertiesEXT& setPNext( void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070012740 {
12741 pNext = pNext_;
12742 return *this;
12743 }
12744
12745 PhysicalDeviceDiscardRectanglePropertiesEXT& setMaxDiscardRectangles( uint32_t maxDiscardRectangles_ )
12746 {
12747 maxDiscardRectangles = maxDiscardRectangles_;
12748 return *this;
12749 }
12750
12751 operator const VkPhysicalDeviceDiscardRectanglePropertiesEXT&() const
12752 {
12753 return *reinterpret_cast<const VkPhysicalDeviceDiscardRectanglePropertiesEXT*>(this);
12754 }
12755
12756 bool operator==( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
12757 {
12758 return ( sType == rhs.sType )
12759 && ( pNext == rhs.pNext )
12760 && ( maxDiscardRectangles == rhs.maxDiscardRectangles );
12761 }
12762
12763 bool operator!=( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
12764 {
12765 return !operator==( rhs );
12766 }
12767
12768 private:
12769 StructureType sType;
12770
12771 public:
Mark Lobodzinski3289d762017-04-03 08:22:04 -060012772 void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070012773 uint32_t maxDiscardRectangles;
12774 };
12775 static_assert( sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) == sizeof( VkPhysicalDeviceDiscardRectanglePropertiesEXT ), "struct and wrapper have different size!" );
12776
12777 struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
12778 {
12779 operator const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX&() const
12780 {
12781 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX*>(this);
12782 }
12783
12784 bool operator==( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
12785 {
12786 return ( sType == rhs.sType )
12787 && ( pNext == rhs.pNext )
12788 && ( perViewPositionAllComponents == rhs.perViewPositionAllComponents );
12789 }
12790
12791 bool operator!=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
12792 {
12793 return !operator==( rhs );
12794 }
12795
12796 private:
12797 StructureType sType;
12798
12799 public:
12800 void* pNext;
12801 Bool32 perViewPositionAllComponents;
12802 };
12803 static_assert( sizeof( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ) == sizeof( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ), "struct and wrapper have different size!" );
12804
Mark Lobodzinski54385432017-05-15 10:27:52 -060012805 struct PhysicalDeviceSurfaceInfo2KHR
12806 {
12807 PhysicalDeviceSurfaceInfo2KHR( SurfaceKHR surface_ = SurfaceKHR() )
12808 : sType( StructureType::ePhysicalDeviceSurfaceInfo2KHR )
12809 , pNext( nullptr )
12810 , surface( surface_ )
12811 {
12812 }
12813
12814 PhysicalDeviceSurfaceInfo2KHR( VkPhysicalDeviceSurfaceInfo2KHR const & rhs )
12815 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012816 memcpy( this, &rhs, sizeof( PhysicalDeviceSurfaceInfo2KHR ) );
Mark Lobodzinski54385432017-05-15 10:27:52 -060012817 }
12818
12819 PhysicalDeviceSurfaceInfo2KHR& operator=( VkPhysicalDeviceSurfaceInfo2KHR const & rhs )
12820 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012821 memcpy( this, &rhs, sizeof( PhysicalDeviceSurfaceInfo2KHR ) );
Mark Lobodzinski54385432017-05-15 10:27:52 -060012822 return *this;
12823 }
Mark Lobodzinski54385432017-05-15 10:27:52 -060012824 PhysicalDeviceSurfaceInfo2KHR& setPNext( const void* pNext_ )
12825 {
12826 pNext = pNext_;
12827 return *this;
12828 }
12829
12830 PhysicalDeviceSurfaceInfo2KHR& setSurface( SurfaceKHR surface_ )
12831 {
12832 surface = surface_;
12833 return *this;
12834 }
12835
12836 operator const VkPhysicalDeviceSurfaceInfo2KHR&() const
12837 {
12838 return *reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>(this);
12839 }
12840
12841 bool operator==( PhysicalDeviceSurfaceInfo2KHR const& rhs ) const
12842 {
12843 return ( sType == rhs.sType )
12844 && ( pNext == rhs.pNext )
12845 && ( surface == rhs.surface );
12846 }
12847
12848 bool operator!=( PhysicalDeviceSurfaceInfo2KHR const& rhs ) const
12849 {
12850 return !operator==( rhs );
12851 }
12852
12853 private:
12854 StructureType sType;
12855
12856 public:
12857 const void* pNext;
12858 SurfaceKHR surface;
12859 };
12860 static_assert( sizeof( PhysicalDeviceSurfaceInfo2KHR ) == sizeof( VkPhysicalDeviceSurfaceInfo2KHR ), "struct and wrapper have different size!" );
12861
Mark Youngabc2d6e2017-07-07 07:59:56 -060012862 struct PhysicalDevice16BitStorageFeaturesKHR
12863 {
12864 PhysicalDevice16BitStorageFeaturesKHR( Bool32 storageBuffer16BitAccess_ = 0, Bool32 uniformAndStorageBuffer16BitAccess_ = 0, Bool32 storagePushConstant16_ = 0, Bool32 storageInputOutput16_ = 0 )
12865 : sType( StructureType::ePhysicalDevice16BitStorageFeaturesKHR )
12866 , pNext( nullptr )
12867 , storageBuffer16BitAccess( storageBuffer16BitAccess_ )
12868 , uniformAndStorageBuffer16BitAccess( uniformAndStorageBuffer16BitAccess_ )
12869 , storagePushConstant16( storagePushConstant16_ )
12870 , storageInputOutput16( storageInputOutput16_ )
12871 {
12872 }
12873
12874 PhysicalDevice16BitStorageFeaturesKHR( VkPhysicalDevice16BitStorageFeaturesKHR const & rhs )
12875 {
12876 memcpy( this, &rhs, sizeof( PhysicalDevice16BitStorageFeaturesKHR ) );
12877 }
12878
12879 PhysicalDevice16BitStorageFeaturesKHR& operator=( VkPhysicalDevice16BitStorageFeaturesKHR const & rhs )
12880 {
12881 memcpy( this, &rhs, sizeof( PhysicalDevice16BitStorageFeaturesKHR ) );
12882 return *this;
12883 }
12884 PhysicalDevice16BitStorageFeaturesKHR& setPNext( void* pNext_ )
12885 {
12886 pNext = pNext_;
12887 return *this;
12888 }
12889
12890 PhysicalDevice16BitStorageFeaturesKHR& setStorageBuffer16BitAccess( Bool32 storageBuffer16BitAccess_ )
12891 {
12892 storageBuffer16BitAccess = storageBuffer16BitAccess_;
12893 return *this;
12894 }
12895
12896 PhysicalDevice16BitStorageFeaturesKHR& setUniformAndStorageBuffer16BitAccess( Bool32 uniformAndStorageBuffer16BitAccess_ )
12897 {
12898 uniformAndStorageBuffer16BitAccess = uniformAndStorageBuffer16BitAccess_;
12899 return *this;
12900 }
12901
12902 PhysicalDevice16BitStorageFeaturesKHR& setStoragePushConstant16( Bool32 storagePushConstant16_ )
12903 {
12904 storagePushConstant16 = storagePushConstant16_;
12905 return *this;
12906 }
12907
12908 PhysicalDevice16BitStorageFeaturesKHR& setStorageInputOutput16( Bool32 storageInputOutput16_ )
12909 {
12910 storageInputOutput16 = storageInputOutput16_;
12911 return *this;
12912 }
12913
12914 operator const VkPhysicalDevice16BitStorageFeaturesKHR&() const
12915 {
12916 return *reinterpret_cast<const VkPhysicalDevice16BitStorageFeaturesKHR*>(this);
12917 }
12918
12919 bool operator==( PhysicalDevice16BitStorageFeaturesKHR const& rhs ) const
12920 {
12921 return ( sType == rhs.sType )
12922 && ( pNext == rhs.pNext )
12923 && ( storageBuffer16BitAccess == rhs.storageBuffer16BitAccess )
12924 && ( uniformAndStorageBuffer16BitAccess == rhs.uniformAndStorageBuffer16BitAccess )
12925 && ( storagePushConstant16 == rhs.storagePushConstant16 )
12926 && ( storageInputOutput16 == rhs.storageInputOutput16 );
12927 }
12928
12929 bool operator!=( PhysicalDevice16BitStorageFeaturesKHR const& rhs ) const
12930 {
12931 return !operator==( rhs );
12932 }
12933
12934 private:
12935 StructureType sType;
12936
12937 public:
12938 void* pNext;
12939 Bool32 storageBuffer16BitAccess;
12940 Bool32 uniformAndStorageBuffer16BitAccess;
12941 Bool32 storagePushConstant16;
12942 Bool32 storageInputOutput16;
12943 };
12944 static_assert( sizeof( PhysicalDevice16BitStorageFeaturesKHR ) == sizeof( VkPhysicalDevice16BitStorageFeaturesKHR ), "struct and wrapper have different size!" );
12945
12946 struct BufferMemoryRequirementsInfo2KHR
12947 {
12948 BufferMemoryRequirementsInfo2KHR( Buffer buffer_ = Buffer() )
12949 : sType( StructureType::eBufferMemoryRequirementsInfo2KHR )
12950 , pNext( nullptr )
12951 , buffer( buffer_ )
12952 {
12953 }
12954
12955 BufferMemoryRequirementsInfo2KHR( VkBufferMemoryRequirementsInfo2KHR const & rhs )
12956 {
12957 memcpy( this, &rhs, sizeof( BufferMemoryRequirementsInfo2KHR ) );
12958 }
12959
12960 BufferMemoryRequirementsInfo2KHR& operator=( VkBufferMemoryRequirementsInfo2KHR const & rhs )
12961 {
12962 memcpy( this, &rhs, sizeof( BufferMemoryRequirementsInfo2KHR ) );
12963 return *this;
12964 }
12965 BufferMemoryRequirementsInfo2KHR& setPNext( const void* pNext_ )
12966 {
12967 pNext = pNext_;
12968 return *this;
12969 }
12970
12971 BufferMemoryRequirementsInfo2KHR& setBuffer( Buffer buffer_ )
12972 {
12973 buffer = buffer_;
12974 return *this;
12975 }
12976
12977 operator const VkBufferMemoryRequirementsInfo2KHR&() const
12978 {
12979 return *reinterpret_cast<const VkBufferMemoryRequirementsInfo2KHR*>(this);
12980 }
12981
12982 bool operator==( BufferMemoryRequirementsInfo2KHR const& rhs ) const
12983 {
12984 return ( sType == rhs.sType )
12985 && ( pNext == rhs.pNext )
12986 && ( buffer == rhs.buffer );
12987 }
12988
12989 bool operator!=( BufferMemoryRequirementsInfo2KHR const& rhs ) const
12990 {
12991 return !operator==( rhs );
12992 }
12993
12994 private:
12995 StructureType sType;
12996
12997 public:
12998 const void* pNext;
12999 Buffer buffer;
13000 };
13001 static_assert( sizeof( BufferMemoryRequirementsInfo2KHR ) == sizeof( VkBufferMemoryRequirementsInfo2KHR ), "struct and wrapper have different size!" );
13002
13003 struct ImageMemoryRequirementsInfo2KHR
13004 {
13005 ImageMemoryRequirementsInfo2KHR( Image image_ = Image() )
13006 : sType( StructureType::eImageMemoryRequirementsInfo2KHR )
13007 , pNext( nullptr )
13008 , image( image_ )
13009 {
13010 }
13011
13012 ImageMemoryRequirementsInfo2KHR( VkImageMemoryRequirementsInfo2KHR const & rhs )
13013 {
13014 memcpy( this, &rhs, sizeof( ImageMemoryRequirementsInfo2KHR ) );
13015 }
13016
13017 ImageMemoryRequirementsInfo2KHR& operator=( VkImageMemoryRequirementsInfo2KHR const & rhs )
13018 {
13019 memcpy( this, &rhs, sizeof( ImageMemoryRequirementsInfo2KHR ) );
13020 return *this;
13021 }
13022 ImageMemoryRequirementsInfo2KHR& setPNext( const void* pNext_ )
13023 {
13024 pNext = pNext_;
13025 return *this;
13026 }
13027
13028 ImageMemoryRequirementsInfo2KHR& setImage( Image image_ )
13029 {
13030 image = image_;
13031 return *this;
13032 }
13033
13034 operator const VkImageMemoryRequirementsInfo2KHR&() const
13035 {
13036 return *reinterpret_cast<const VkImageMemoryRequirementsInfo2KHR*>(this);
13037 }
13038
13039 bool operator==( ImageMemoryRequirementsInfo2KHR const& rhs ) const
13040 {
13041 return ( sType == rhs.sType )
13042 && ( pNext == rhs.pNext )
13043 && ( image == rhs.image );
13044 }
13045
13046 bool operator!=( ImageMemoryRequirementsInfo2KHR const& rhs ) const
13047 {
13048 return !operator==( rhs );
13049 }
13050
13051 private:
13052 StructureType sType;
13053
13054 public:
13055 const void* pNext;
13056 Image image;
13057 };
13058 static_assert( sizeof( ImageMemoryRequirementsInfo2KHR ) == sizeof( VkImageMemoryRequirementsInfo2KHR ), "struct and wrapper have different size!" );
13059
13060 struct ImageSparseMemoryRequirementsInfo2KHR
13061 {
13062 ImageSparseMemoryRequirementsInfo2KHR( Image image_ = Image() )
13063 : sType( StructureType::eImageSparseMemoryRequirementsInfo2KHR )
13064 , pNext( nullptr )
13065 , image( image_ )
13066 {
13067 }
13068
13069 ImageSparseMemoryRequirementsInfo2KHR( VkImageSparseMemoryRequirementsInfo2KHR const & rhs )
13070 {
13071 memcpy( this, &rhs, sizeof( ImageSparseMemoryRequirementsInfo2KHR ) );
13072 }
13073
13074 ImageSparseMemoryRequirementsInfo2KHR& operator=( VkImageSparseMemoryRequirementsInfo2KHR const & rhs )
13075 {
13076 memcpy( this, &rhs, sizeof( ImageSparseMemoryRequirementsInfo2KHR ) );
13077 return *this;
13078 }
13079 ImageSparseMemoryRequirementsInfo2KHR& setPNext( const void* pNext_ )
13080 {
13081 pNext = pNext_;
13082 return *this;
13083 }
13084
13085 ImageSparseMemoryRequirementsInfo2KHR& setImage( Image image_ )
13086 {
13087 image = image_;
13088 return *this;
13089 }
13090
13091 operator const VkImageSparseMemoryRequirementsInfo2KHR&() const
13092 {
13093 return *reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2KHR*>(this);
13094 }
13095
13096 bool operator==( ImageSparseMemoryRequirementsInfo2KHR const& rhs ) const
13097 {
13098 return ( sType == rhs.sType )
13099 && ( pNext == rhs.pNext )
13100 && ( image == rhs.image );
13101 }
13102
13103 bool operator!=( ImageSparseMemoryRequirementsInfo2KHR const& rhs ) const
13104 {
13105 return !operator==( rhs );
13106 }
13107
13108 private:
13109 StructureType sType;
13110
13111 public:
13112 const void* pNext;
13113 Image image;
13114 };
13115 static_assert( sizeof( ImageSparseMemoryRequirementsInfo2KHR ) == sizeof( VkImageSparseMemoryRequirementsInfo2KHR ), "struct and wrapper have different size!" );
13116
13117 struct MemoryRequirements2KHR
13118 {
13119 operator const VkMemoryRequirements2KHR&() const
13120 {
13121 return *reinterpret_cast<const VkMemoryRequirements2KHR*>(this);
13122 }
13123
13124 bool operator==( MemoryRequirements2KHR const& rhs ) const
13125 {
13126 return ( sType == rhs.sType )
13127 && ( pNext == rhs.pNext )
13128 && ( memoryRequirements == rhs.memoryRequirements );
13129 }
13130
13131 bool operator!=( MemoryRequirements2KHR const& rhs ) const
13132 {
13133 return !operator==( rhs );
13134 }
13135
13136 private:
13137 StructureType sType;
13138
13139 public:
13140 void* pNext;
13141 MemoryRequirements memoryRequirements;
13142 };
13143 static_assert( sizeof( MemoryRequirements2KHR ) == sizeof( VkMemoryRequirements2KHR ), "struct and wrapper have different size!" );
13144
13145 struct MemoryDedicatedRequirementsKHR
13146 {
13147 operator const VkMemoryDedicatedRequirementsKHR&() const
13148 {
13149 return *reinterpret_cast<const VkMemoryDedicatedRequirementsKHR*>(this);
13150 }
13151
13152 bool operator==( MemoryDedicatedRequirementsKHR const& rhs ) const
13153 {
13154 return ( sType == rhs.sType )
13155 && ( pNext == rhs.pNext )
13156 && ( prefersDedicatedAllocation == rhs.prefersDedicatedAllocation )
13157 && ( requiresDedicatedAllocation == rhs.requiresDedicatedAllocation );
13158 }
13159
13160 bool operator!=( MemoryDedicatedRequirementsKHR const& rhs ) const
13161 {
13162 return !operator==( rhs );
13163 }
13164
13165 private:
13166 StructureType sType;
13167
13168 public:
13169 void* pNext;
13170 Bool32 prefersDedicatedAllocation;
13171 Bool32 requiresDedicatedAllocation;
13172 };
13173 static_assert( sizeof( MemoryDedicatedRequirementsKHR ) == sizeof( VkMemoryDedicatedRequirementsKHR ), "struct and wrapper have different size!" );
13174
13175 struct MemoryDedicatedAllocateInfoKHR
13176 {
13177 MemoryDedicatedAllocateInfoKHR( Image image_ = Image(), Buffer buffer_ = Buffer() )
13178 : sType( StructureType::eMemoryDedicatedAllocateInfoKHR )
13179 , pNext( nullptr )
13180 , image( image_ )
13181 , buffer( buffer_ )
13182 {
13183 }
13184
13185 MemoryDedicatedAllocateInfoKHR( VkMemoryDedicatedAllocateInfoKHR const & rhs )
13186 {
13187 memcpy( this, &rhs, sizeof( MemoryDedicatedAllocateInfoKHR ) );
13188 }
13189
13190 MemoryDedicatedAllocateInfoKHR& operator=( VkMemoryDedicatedAllocateInfoKHR const & rhs )
13191 {
13192 memcpy( this, &rhs, sizeof( MemoryDedicatedAllocateInfoKHR ) );
13193 return *this;
13194 }
13195 MemoryDedicatedAllocateInfoKHR& setPNext( const void* pNext_ )
13196 {
13197 pNext = pNext_;
13198 return *this;
13199 }
13200
13201 MemoryDedicatedAllocateInfoKHR& setImage( Image image_ )
13202 {
13203 image = image_;
13204 return *this;
13205 }
13206
13207 MemoryDedicatedAllocateInfoKHR& setBuffer( Buffer buffer_ )
13208 {
13209 buffer = buffer_;
13210 return *this;
13211 }
13212
13213 operator const VkMemoryDedicatedAllocateInfoKHR&() const
13214 {
13215 return *reinterpret_cast<const VkMemoryDedicatedAllocateInfoKHR*>(this);
13216 }
13217
13218 bool operator==( MemoryDedicatedAllocateInfoKHR const& rhs ) const
13219 {
13220 return ( sType == rhs.sType )
13221 && ( pNext == rhs.pNext )
13222 && ( image == rhs.image )
13223 && ( buffer == rhs.buffer );
13224 }
13225
13226 bool operator!=( MemoryDedicatedAllocateInfoKHR const& rhs ) const
13227 {
13228 return !operator==( rhs );
13229 }
13230
13231 private:
13232 StructureType sType;
13233
13234 public:
13235 const void* pNext;
13236 Image image;
13237 Buffer buffer;
13238 };
13239 static_assert( sizeof( MemoryDedicatedAllocateInfoKHR ) == sizeof( VkMemoryDedicatedAllocateInfoKHR ), "struct and wrapper have different size!" );
13240
Lenny Komowb79f04a2017-09-18 17:07:00 -060013241 struct SamplerYcbcrConversionInfoKHR
13242 {
13243 SamplerYcbcrConversionInfoKHR( SamplerYcbcrConversionKHR conversion_ = SamplerYcbcrConversionKHR() )
13244 : sType( StructureType::eSamplerYcbcrConversionInfoKHR )
13245 , pNext( nullptr )
13246 , conversion( conversion_ )
13247 {
13248 }
13249
13250 SamplerYcbcrConversionInfoKHR( VkSamplerYcbcrConversionInfoKHR const & rhs )
13251 {
13252 memcpy( this, &rhs, sizeof( SamplerYcbcrConversionInfoKHR ) );
13253 }
13254
13255 SamplerYcbcrConversionInfoKHR& operator=( VkSamplerYcbcrConversionInfoKHR const & rhs )
13256 {
13257 memcpy( this, &rhs, sizeof( SamplerYcbcrConversionInfoKHR ) );
13258 return *this;
13259 }
13260 SamplerYcbcrConversionInfoKHR& setPNext( const void* pNext_ )
13261 {
13262 pNext = pNext_;
13263 return *this;
13264 }
13265
13266 SamplerYcbcrConversionInfoKHR& setConversion( SamplerYcbcrConversionKHR conversion_ )
13267 {
13268 conversion = conversion_;
13269 return *this;
13270 }
13271
13272 operator const VkSamplerYcbcrConversionInfoKHR&() const
13273 {
13274 return *reinterpret_cast<const VkSamplerYcbcrConversionInfoKHR*>(this);
13275 }
13276
13277 bool operator==( SamplerYcbcrConversionInfoKHR const& rhs ) const
13278 {
13279 return ( sType == rhs.sType )
13280 && ( pNext == rhs.pNext )
13281 && ( conversion == rhs.conversion );
13282 }
13283
13284 bool operator!=( SamplerYcbcrConversionInfoKHR const& rhs ) const
13285 {
13286 return !operator==( rhs );
13287 }
13288
13289 private:
13290 StructureType sType;
13291
13292 public:
13293 const void* pNext;
13294 SamplerYcbcrConversionKHR conversion;
13295 };
13296 static_assert( sizeof( SamplerYcbcrConversionInfoKHR ) == sizeof( VkSamplerYcbcrConversionInfoKHR ), "struct and wrapper have different size!" );
13297
13298 struct PhysicalDeviceSamplerYcbcrConversionFeaturesKHR
13299 {
13300 PhysicalDeviceSamplerYcbcrConversionFeaturesKHR( Bool32 samplerYcbcrConversion_ = 0 )
13301 : sType( StructureType::ePhysicalDeviceSamplerYcbcrConversionFeaturesKHR )
13302 , pNext( nullptr )
13303 , samplerYcbcrConversion( samplerYcbcrConversion_ )
13304 {
13305 }
13306
13307 PhysicalDeviceSamplerYcbcrConversionFeaturesKHR( VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR const & rhs )
13308 {
13309 memcpy( this, &rhs, sizeof( PhysicalDeviceSamplerYcbcrConversionFeaturesKHR ) );
13310 }
13311
13312 PhysicalDeviceSamplerYcbcrConversionFeaturesKHR& operator=( VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR const & rhs )
13313 {
13314 memcpy( this, &rhs, sizeof( PhysicalDeviceSamplerYcbcrConversionFeaturesKHR ) );
13315 return *this;
13316 }
13317 PhysicalDeviceSamplerYcbcrConversionFeaturesKHR& setPNext( void* pNext_ )
13318 {
13319 pNext = pNext_;
13320 return *this;
13321 }
13322
13323 PhysicalDeviceSamplerYcbcrConversionFeaturesKHR& setSamplerYcbcrConversion( Bool32 samplerYcbcrConversion_ )
13324 {
13325 samplerYcbcrConversion = samplerYcbcrConversion_;
13326 return *this;
13327 }
13328
13329 operator const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR&() const
13330 {
13331 return *reinterpret_cast<const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR*>(this);
13332 }
13333
13334 bool operator==( PhysicalDeviceSamplerYcbcrConversionFeaturesKHR const& rhs ) const
13335 {
13336 return ( sType == rhs.sType )
13337 && ( pNext == rhs.pNext )
13338 && ( samplerYcbcrConversion == rhs.samplerYcbcrConversion );
13339 }
13340
13341 bool operator!=( PhysicalDeviceSamplerYcbcrConversionFeaturesKHR const& rhs ) const
13342 {
13343 return !operator==( rhs );
13344 }
13345
13346 private:
13347 StructureType sType;
13348
13349 public:
13350 void* pNext;
13351 Bool32 samplerYcbcrConversion;
13352 };
13353 static_assert( sizeof( PhysicalDeviceSamplerYcbcrConversionFeaturesKHR ) == sizeof( VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR ), "struct and wrapper have different size!" );
13354
13355 struct SamplerYcbcrConversionImageFormatPropertiesKHR
13356 {
13357 operator const VkSamplerYcbcrConversionImageFormatPropertiesKHR&() const
13358 {
13359 return *reinterpret_cast<const VkSamplerYcbcrConversionImageFormatPropertiesKHR*>(this);
13360 }
13361
13362 bool operator==( SamplerYcbcrConversionImageFormatPropertiesKHR const& rhs ) const
13363 {
13364 return ( sType == rhs.sType )
13365 && ( pNext == rhs.pNext )
13366 && ( combinedImageSamplerDescriptorCount == rhs.combinedImageSamplerDescriptorCount );
13367 }
13368
13369 bool operator!=( SamplerYcbcrConversionImageFormatPropertiesKHR const& rhs ) const
13370 {
13371 return !operator==( rhs );
13372 }
13373
13374 private:
13375 StructureType sType;
13376
13377 public:
13378 void* pNext;
13379 uint32_t combinedImageSamplerDescriptorCount;
13380 };
13381 static_assert( sizeof( SamplerYcbcrConversionImageFormatPropertiesKHR ) == sizeof( VkSamplerYcbcrConversionImageFormatPropertiesKHR ), "struct and wrapper have different size!" );
13382
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013383 struct TextureLODGatherFormatPropertiesAMD
13384 {
13385 operator const VkTextureLODGatherFormatPropertiesAMD&() const
13386 {
13387 return *reinterpret_cast<const VkTextureLODGatherFormatPropertiesAMD*>(this);
13388 }
13389
13390 bool operator==( TextureLODGatherFormatPropertiesAMD const& rhs ) const
13391 {
13392 return ( sType == rhs.sType )
13393 && ( pNext == rhs.pNext )
13394 && ( supportsTextureGatherLODBiasAMD == rhs.supportsTextureGatherLODBiasAMD );
13395 }
13396
13397 bool operator!=( TextureLODGatherFormatPropertiesAMD const& rhs ) const
13398 {
13399 return !operator==( rhs );
13400 }
13401
13402 private:
13403 StructureType sType;
13404
13405 public:
13406 void* pNext;
13407 Bool32 supportsTextureGatherLODBiasAMD;
13408 };
13409 static_assert( sizeof( TextureLODGatherFormatPropertiesAMD ) == sizeof( VkTextureLODGatherFormatPropertiesAMD ), "struct and wrapper have different size!" );
13410
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060013411 struct PipelineCoverageToColorStateCreateInfoNV
13412 {
13413 PipelineCoverageToColorStateCreateInfoNV( PipelineCoverageToColorStateCreateFlagsNV flags_ = PipelineCoverageToColorStateCreateFlagsNV(), Bool32 coverageToColorEnable_ = 0, uint32_t coverageToColorLocation_ = 0 )
13414 : sType( StructureType::ePipelineCoverageToColorStateCreateInfoNV )
13415 , pNext( nullptr )
13416 , flags( flags_ )
13417 , coverageToColorEnable( coverageToColorEnable_ )
13418 , coverageToColorLocation( coverageToColorLocation_ )
13419 {
13420 }
13421
13422 PipelineCoverageToColorStateCreateInfoNV( VkPipelineCoverageToColorStateCreateInfoNV const & rhs )
13423 {
13424 memcpy( this, &rhs, sizeof( PipelineCoverageToColorStateCreateInfoNV ) );
13425 }
13426
13427 PipelineCoverageToColorStateCreateInfoNV& operator=( VkPipelineCoverageToColorStateCreateInfoNV const & rhs )
13428 {
13429 memcpy( this, &rhs, sizeof( PipelineCoverageToColorStateCreateInfoNV ) );
13430 return *this;
13431 }
13432 PipelineCoverageToColorStateCreateInfoNV& setPNext( const void* pNext_ )
13433 {
13434 pNext = pNext_;
13435 return *this;
13436 }
13437
13438 PipelineCoverageToColorStateCreateInfoNV& setFlags( PipelineCoverageToColorStateCreateFlagsNV flags_ )
13439 {
13440 flags = flags_;
13441 return *this;
13442 }
13443
13444 PipelineCoverageToColorStateCreateInfoNV& setCoverageToColorEnable( Bool32 coverageToColorEnable_ )
13445 {
13446 coverageToColorEnable = coverageToColorEnable_;
13447 return *this;
13448 }
13449
13450 PipelineCoverageToColorStateCreateInfoNV& setCoverageToColorLocation( uint32_t coverageToColorLocation_ )
13451 {
13452 coverageToColorLocation = coverageToColorLocation_;
13453 return *this;
13454 }
13455
13456 operator const VkPipelineCoverageToColorStateCreateInfoNV&() const
13457 {
13458 return *reinterpret_cast<const VkPipelineCoverageToColorStateCreateInfoNV*>(this);
13459 }
13460
13461 bool operator==( PipelineCoverageToColorStateCreateInfoNV const& rhs ) const
13462 {
13463 return ( sType == rhs.sType )
13464 && ( pNext == rhs.pNext )
13465 && ( flags == rhs.flags )
13466 && ( coverageToColorEnable == rhs.coverageToColorEnable )
13467 && ( coverageToColorLocation == rhs.coverageToColorLocation );
13468 }
13469
13470 bool operator!=( PipelineCoverageToColorStateCreateInfoNV const& rhs ) const
13471 {
13472 return !operator==( rhs );
13473 }
13474
13475 private:
13476 StructureType sType;
13477
13478 public:
13479 const void* pNext;
13480 PipelineCoverageToColorStateCreateFlagsNV flags;
13481 Bool32 coverageToColorEnable;
13482 uint32_t coverageToColorLocation;
13483 };
13484 static_assert( sizeof( PipelineCoverageToColorStateCreateInfoNV ) == sizeof( VkPipelineCoverageToColorStateCreateInfoNV ), "struct and wrapper have different size!" );
13485
13486 struct PhysicalDeviceSamplerFilterMinmaxPropertiesEXT
13487 {
13488 operator const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT&() const
13489 {
13490 return *reinterpret_cast<const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT*>(this);
13491 }
13492
13493 bool operator==( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT const& rhs ) const
13494 {
13495 return ( sType == rhs.sType )
13496 && ( pNext == rhs.pNext )
13497 && ( filterMinmaxSingleComponentFormats == rhs.filterMinmaxSingleComponentFormats )
13498 && ( filterMinmaxImageComponentMapping == rhs.filterMinmaxImageComponentMapping );
13499 }
13500
13501 bool operator!=( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT const& rhs ) const
13502 {
13503 return !operator==( rhs );
13504 }
13505
13506 private:
13507 StructureType sType;
13508
13509 public:
13510 void* pNext;
13511 Bool32 filterMinmaxSingleComponentFormats;
13512 Bool32 filterMinmaxImageComponentMapping;
13513 };
13514 static_assert( sizeof( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT ) == sizeof( VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT ), "struct and wrapper have different size!" );
13515
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060013516 struct MultisamplePropertiesEXT
13517 {
13518 operator const VkMultisamplePropertiesEXT&() const
13519 {
13520 return *reinterpret_cast<const VkMultisamplePropertiesEXT*>(this);
13521 }
13522
13523 bool operator==( MultisamplePropertiesEXT const& rhs ) const
13524 {
13525 return ( sType == rhs.sType )
13526 && ( pNext == rhs.pNext )
13527 && ( maxSampleLocationGridSize == rhs.maxSampleLocationGridSize );
13528 }
13529
13530 bool operator!=( MultisamplePropertiesEXT const& rhs ) const
13531 {
13532 return !operator==( rhs );
13533 }
13534
13535 private:
13536 StructureType sType;
13537
13538 public:
13539 void* pNext;
13540 Extent2D maxSampleLocationGridSize;
13541 };
13542 static_assert( sizeof( MultisamplePropertiesEXT ) == sizeof( VkMultisamplePropertiesEXT ), "struct and wrapper have different size!" );
13543
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060013544 struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT
13545 {
13546 PhysicalDeviceBlendOperationAdvancedFeaturesEXT( Bool32 advancedBlendCoherentOperations_ = 0 )
13547 : sType( StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT )
13548 , pNext( nullptr )
13549 , advancedBlendCoherentOperations( advancedBlendCoherentOperations_ )
13550 {
13551 }
13552
13553 PhysicalDeviceBlendOperationAdvancedFeaturesEXT( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs )
13554 {
13555 memcpy( this, &rhs, sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) );
13556 }
13557
13558 PhysicalDeviceBlendOperationAdvancedFeaturesEXT& operator=( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs )
13559 {
13560 memcpy( this, &rhs, sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) );
13561 return *this;
13562 }
13563 PhysicalDeviceBlendOperationAdvancedFeaturesEXT& setPNext( void* pNext_ )
13564 {
13565 pNext = pNext_;
13566 return *this;
13567 }
13568
13569 PhysicalDeviceBlendOperationAdvancedFeaturesEXT& setAdvancedBlendCoherentOperations( Bool32 advancedBlendCoherentOperations_ )
13570 {
13571 advancedBlendCoherentOperations = advancedBlendCoherentOperations_;
13572 return *this;
13573 }
13574
13575 operator const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT&() const
13576 {
13577 return *reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT*>(this);
13578 }
13579
13580 bool operator==( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const& rhs ) const
13581 {
13582 return ( sType == rhs.sType )
13583 && ( pNext == rhs.pNext )
13584 && ( advancedBlendCoherentOperations == rhs.advancedBlendCoherentOperations );
13585 }
13586
13587 bool operator!=( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const& rhs ) const
13588 {
13589 return !operator==( rhs );
13590 }
13591
13592 private:
13593 StructureType sType;
13594
13595 public:
13596 void* pNext;
13597 Bool32 advancedBlendCoherentOperations;
13598 };
13599 static_assert( sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) == sizeof( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT ), "struct and wrapper have different size!" );
13600
13601 struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT
13602 {
13603 operator const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT&() const
13604 {
13605 return *reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT*>(this);
13606 }
13607
13608 bool operator==( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const& rhs ) const
13609 {
13610 return ( sType == rhs.sType )
13611 && ( pNext == rhs.pNext )
13612 && ( advancedBlendMaxColorAttachments == rhs.advancedBlendMaxColorAttachments )
13613 && ( advancedBlendIndependentBlend == rhs.advancedBlendIndependentBlend )
13614 && ( advancedBlendNonPremultipliedSrcColor == rhs.advancedBlendNonPremultipliedSrcColor )
13615 && ( advancedBlendNonPremultipliedDstColor == rhs.advancedBlendNonPremultipliedDstColor )
13616 && ( advancedBlendCorrelatedOverlap == rhs.advancedBlendCorrelatedOverlap )
13617 && ( advancedBlendAllOperations == rhs.advancedBlendAllOperations );
13618 }
13619
13620 bool operator!=( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const& rhs ) const
13621 {
13622 return !operator==( rhs );
13623 }
13624
13625 private:
13626 StructureType sType;
13627
13628 public:
13629 void* pNext;
13630 uint32_t advancedBlendMaxColorAttachments;
13631 Bool32 advancedBlendIndependentBlend;
13632 Bool32 advancedBlendNonPremultipliedSrcColor;
13633 Bool32 advancedBlendNonPremultipliedDstColor;
13634 Bool32 advancedBlendCorrelatedOverlap;
13635 Bool32 advancedBlendAllOperations;
13636 };
13637 static_assert( sizeof( PhysicalDeviceBlendOperationAdvancedPropertiesEXT ) == sizeof( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT ), "struct and wrapper have different size!" );
13638
Lenny Komowb79f04a2017-09-18 17:07:00 -060013639 struct ImageFormatListCreateInfoKHR
13640 {
13641 ImageFormatListCreateInfoKHR( uint32_t viewFormatCount_ = 0, const Format* pViewFormats_ = nullptr )
13642 : sType( StructureType::eImageFormatListCreateInfoKHR )
13643 , pNext( nullptr )
13644 , viewFormatCount( viewFormatCount_ )
13645 , pViewFormats( pViewFormats_ )
13646 {
13647 }
13648
13649 ImageFormatListCreateInfoKHR( VkImageFormatListCreateInfoKHR const & rhs )
13650 {
13651 memcpy( this, &rhs, sizeof( ImageFormatListCreateInfoKHR ) );
13652 }
13653
13654 ImageFormatListCreateInfoKHR& operator=( VkImageFormatListCreateInfoKHR const & rhs )
13655 {
13656 memcpy( this, &rhs, sizeof( ImageFormatListCreateInfoKHR ) );
13657 return *this;
13658 }
13659 ImageFormatListCreateInfoKHR& setPNext( const void* pNext_ )
13660 {
13661 pNext = pNext_;
13662 return *this;
13663 }
13664
13665 ImageFormatListCreateInfoKHR& setViewFormatCount( uint32_t viewFormatCount_ )
13666 {
13667 viewFormatCount = viewFormatCount_;
13668 return *this;
13669 }
13670
13671 ImageFormatListCreateInfoKHR& setPViewFormats( const Format* pViewFormats_ )
13672 {
13673 pViewFormats = pViewFormats_;
13674 return *this;
13675 }
13676
13677 operator const VkImageFormatListCreateInfoKHR&() const
13678 {
13679 return *reinterpret_cast<const VkImageFormatListCreateInfoKHR*>(this);
13680 }
13681
13682 bool operator==( ImageFormatListCreateInfoKHR const& rhs ) const
13683 {
13684 return ( sType == rhs.sType )
13685 && ( pNext == rhs.pNext )
13686 && ( viewFormatCount == rhs.viewFormatCount )
13687 && ( pViewFormats == rhs.pViewFormats );
13688 }
13689
13690 bool operator!=( ImageFormatListCreateInfoKHR const& rhs ) const
13691 {
13692 return !operator==( rhs );
13693 }
13694
13695 private:
13696 StructureType sType;
13697
13698 public:
13699 const void* pNext;
13700 uint32_t viewFormatCount;
13701 const Format* pViewFormats;
13702 };
13703 static_assert( sizeof( ImageFormatListCreateInfoKHR ) == sizeof( VkImageFormatListCreateInfoKHR ), "struct and wrapper have different size!" );
13704
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060013705 struct ValidationCacheCreateInfoEXT
13706 {
13707 ValidationCacheCreateInfoEXT( ValidationCacheCreateFlagsEXT flags_ = ValidationCacheCreateFlagsEXT(), size_t initialDataSize_ = 0, const void* pInitialData_ = nullptr )
13708 : sType( StructureType::eValidationCacheCreateInfoEXT )
13709 , pNext( nullptr )
13710 , flags( flags_ )
13711 , initialDataSize( initialDataSize_ )
13712 , pInitialData( pInitialData_ )
13713 {
13714 }
13715
13716 ValidationCacheCreateInfoEXT( VkValidationCacheCreateInfoEXT const & rhs )
13717 {
13718 memcpy( this, &rhs, sizeof( ValidationCacheCreateInfoEXT ) );
13719 }
13720
13721 ValidationCacheCreateInfoEXT& operator=( VkValidationCacheCreateInfoEXT const & rhs )
13722 {
13723 memcpy( this, &rhs, sizeof( ValidationCacheCreateInfoEXT ) );
13724 return *this;
13725 }
13726 ValidationCacheCreateInfoEXT& setPNext( const void* pNext_ )
13727 {
13728 pNext = pNext_;
13729 return *this;
13730 }
13731
13732 ValidationCacheCreateInfoEXT& setFlags( ValidationCacheCreateFlagsEXT flags_ )
13733 {
13734 flags = flags_;
13735 return *this;
13736 }
13737
13738 ValidationCacheCreateInfoEXT& setInitialDataSize( size_t initialDataSize_ )
13739 {
13740 initialDataSize = initialDataSize_;
13741 return *this;
13742 }
13743
13744 ValidationCacheCreateInfoEXT& setPInitialData( const void* pInitialData_ )
13745 {
13746 pInitialData = pInitialData_;
13747 return *this;
13748 }
13749
13750 operator const VkValidationCacheCreateInfoEXT&() const
13751 {
13752 return *reinterpret_cast<const VkValidationCacheCreateInfoEXT*>(this);
13753 }
13754
13755 bool operator==( ValidationCacheCreateInfoEXT const& rhs ) const
13756 {
13757 return ( sType == rhs.sType )
13758 && ( pNext == rhs.pNext )
13759 && ( flags == rhs.flags )
13760 && ( initialDataSize == rhs.initialDataSize )
13761 && ( pInitialData == rhs.pInitialData );
13762 }
13763
13764 bool operator!=( ValidationCacheCreateInfoEXT const& rhs ) const
13765 {
13766 return !operator==( rhs );
13767 }
13768
13769 private:
13770 StructureType sType;
13771
13772 public:
13773 const void* pNext;
13774 ValidationCacheCreateFlagsEXT flags;
13775 size_t initialDataSize;
13776 const void* pInitialData;
13777 };
13778 static_assert( sizeof( ValidationCacheCreateInfoEXT ) == sizeof( VkValidationCacheCreateInfoEXT ), "struct and wrapper have different size!" );
13779
13780 struct ShaderModuleValidationCacheCreateInfoEXT
13781 {
13782 ShaderModuleValidationCacheCreateInfoEXT( ValidationCacheEXT validationCache_ = ValidationCacheEXT() )
13783 : sType( StructureType::eShaderModuleValidationCacheCreateInfoEXT )
13784 , pNext( nullptr )
13785 , validationCache( validationCache_ )
13786 {
13787 }
13788
13789 ShaderModuleValidationCacheCreateInfoEXT( VkShaderModuleValidationCacheCreateInfoEXT const & rhs )
13790 {
13791 memcpy( this, &rhs, sizeof( ShaderModuleValidationCacheCreateInfoEXT ) );
13792 }
13793
13794 ShaderModuleValidationCacheCreateInfoEXT& operator=( VkShaderModuleValidationCacheCreateInfoEXT const & rhs )
13795 {
13796 memcpy( this, &rhs, sizeof( ShaderModuleValidationCacheCreateInfoEXT ) );
13797 return *this;
13798 }
13799 ShaderModuleValidationCacheCreateInfoEXT& setPNext( const void* pNext_ )
13800 {
13801 pNext = pNext_;
13802 return *this;
13803 }
13804
13805 ShaderModuleValidationCacheCreateInfoEXT& setValidationCache( ValidationCacheEXT validationCache_ )
13806 {
13807 validationCache = validationCache_;
13808 return *this;
13809 }
13810
13811 operator const VkShaderModuleValidationCacheCreateInfoEXT&() const
13812 {
13813 return *reinterpret_cast<const VkShaderModuleValidationCacheCreateInfoEXT*>(this);
13814 }
13815
13816 bool operator==( ShaderModuleValidationCacheCreateInfoEXT const& rhs ) const
13817 {
13818 return ( sType == rhs.sType )
13819 && ( pNext == rhs.pNext )
13820 && ( validationCache == rhs.validationCache );
13821 }
13822
13823 bool operator!=( ShaderModuleValidationCacheCreateInfoEXT const& rhs ) const
13824 {
13825 return !operator==( rhs );
13826 }
13827
13828 private:
13829 StructureType sType;
13830
13831 public:
13832 const void* pNext;
13833 ValidationCacheEXT validationCache;
13834 };
13835 static_assert( sizeof( ShaderModuleValidationCacheCreateInfoEXT ) == sizeof( VkShaderModuleValidationCacheCreateInfoEXT ), "struct and wrapper have different size!" );
13836
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013837 enum class SubpassContents
13838 {
13839 eInline = VK_SUBPASS_CONTENTS_INLINE,
13840 eSecondaryCommandBuffers = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS
13841 };
13842
13843 struct PresentInfoKHR
13844 {
13845 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 )
13846 : sType( StructureType::ePresentInfoKHR )
13847 , pNext( nullptr )
13848 , waitSemaphoreCount( waitSemaphoreCount_ )
13849 , pWaitSemaphores( pWaitSemaphores_ )
13850 , swapchainCount( swapchainCount_ )
13851 , pSwapchains( pSwapchains_ )
13852 , pImageIndices( pImageIndices_ )
13853 , pResults( pResults_ )
13854 {
13855 }
13856
13857 PresentInfoKHR( VkPresentInfoKHR const & rhs )
13858 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013859 memcpy( this, &rhs, sizeof( PresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013860 }
13861
13862 PresentInfoKHR& operator=( VkPresentInfoKHR const & rhs )
13863 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013864 memcpy( this, &rhs, sizeof( PresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013865 return *this;
13866 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013867 PresentInfoKHR& setPNext( const void* pNext_ )
13868 {
13869 pNext = pNext_;
13870 return *this;
13871 }
13872
13873 PresentInfoKHR& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
13874 {
13875 waitSemaphoreCount = waitSemaphoreCount_;
13876 return *this;
13877 }
13878
13879 PresentInfoKHR& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
13880 {
13881 pWaitSemaphores = pWaitSemaphores_;
13882 return *this;
13883 }
13884
13885 PresentInfoKHR& setSwapchainCount( uint32_t swapchainCount_ )
13886 {
13887 swapchainCount = swapchainCount_;
13888 return *this;
13889 }
13890
13891 PresentInfoKHR& setPSwapchains( const SwapchainKHR* pSwapchains_ )
13892 {
13893 pSwapchains = pSwapchains_;
13894 return *this;
13895 }
13896
13897 PresentInfoKHR& setPImageIndices( const uint32_t* pImageIndices_ )
13898 {
13899 pImageIndices = pImageIndices_;
13900 return *this;
13901 }
13902
13903 PresentInfoKHR& setPResults( Result* pResults_ )
13904 {
13905 pResults = pResults_;
13906 return *this;
13907 }
13908
13909 operator const VkPresentInfoKHR&() const
13910 {
13911 return *reinterpret_cast<const VkPresentInfoKHR*>(this);
13912 }
13913
13914 bool operator==( PresentInfoKHR const& rhs ) const
13915 {
13916 return ( sType == rhs.sType )
13917 && ( pNext == rhs.pNext )
13918 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
13919 && ( pWaitSemaphores == rhs.pWaitSemaphores )
13920 && ( swapchainCount == rhs.swapchainCount )
13921 && ( pSwapchains == rhs.pSwapchains )
13922 && ( pImageIndices == rhs.pImageIndices )
13923 && ( pResults == rhs.pResults );
13924 }
13925
13926 bool operator!=( PresentInfoKHR const& rhs ) const
13927 {
13928 return !operator==( rhs );
13929 }
13930
13931 private:
13932 StructureType sType;
13933
13934 public:
13935 const void* pNext;
13936 uint32_t waitSemaphoreCount;
13937 const Semaphore* pWaitSemaphores;
13938 uint32_t swapchainCount;
13939 const SwapchainKHR* pSwapchains;
13940 const uint32_t* pImageIndices;
13941 Result* pResults;
13942 };
13943 static_assert( sizeof( PresentInfoKHR ) == sizeof( VkPresentInfoKHR ), "struct and wrapper have different size!" );
13944
13945 enum class DynamicState
13946 {
13947 eViewport = VK_DYNAMIC_STATE_VIEWPORT,
13948 eScissor = VK_DYNAMIC_STATE_SCISSOR,
13949 eLineWidth = VK_DYNAMIC_STATE_LINE_WIDTH,
13950 eDepthBias = VK_DYNAMIC_STATE_DEPTH_BIAS,
13951 eBlendConstants = VK_DYNAMIC_STATE_BLEND_CONSTANTS,
13952 eDepthBounds = VK_DYNAMIC_STATE_DEPTH_BOUNDS,
13953 eStencilCompareMask = VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK,
13954 eStencilWriteMask = VK_DYNAMIC_STATE_STENCIL_WRITE_MASK,
Mark Young0f183a82017-02-28 09:58:04 -070013955 eStencilReference = VK_DYNAMIC_STATE_STENCIL_REFERENCE,
13956 eViewportWScalingNV = VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060013957 eDiscardRectangleEXT = VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT,
13958 eSampleLocationsEXT = VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013959 };
13960
13961 struct PipelineDynamicStateCreateInfo
13962 {
13963 PipelineDynamicStateCreateInfo( PipelineDynamicStateCreateFlags flags_ = PipelineDynamicStateCreateFlags(), uint32_t dynamicStateCount_ = 0, const DynamicState* pDynamicStates_ = nullptr )
13964 : sType( StructureType::ePipelineDynamicStateCreateInfo )
13965 , pNext( nullptr )
13966 , flags( flags_ )
13967 , dynamicStateCount( dynamicStateCount_ )
13968 , pDynamicStates( pDynamicStates_ )
13969 {
13970 }
13971
13972 PipelineDynamicStateCreateInfo( VkPipelineDynamicStateCreateInfo const & rhs )
13973 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013974 memcpy( this, &rhs, sizeof( PipelineDynamicStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013975 }
13976
13977 PipelineDynamicStateCreateInfo& operator=( VkPipelineDynamicStateCreateInfo const & rhs )
13978 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013979 memcpy( this, &rhs, sizeof( PipelineDynamicStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013980 return *this;
13981 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013982 PipelineDynamicStateCreateInfo& setPNext( const void* pNext_ )
13983 {
13984 pNext = pNext_;
13985 return *this;
13986 }
13987
13988 PipelineDynamicStateCreateInfo& setFlags( PipelineDynamicStateCreateFlags flags_ )
13989 {
13990 flags = flags_;
13991 return *this;
13992 }
13993
13994 PipelineDynamicStateCreateInfo& setDynamicStateCount( uint32_t dynamicStateCount_ )
13995 {
13996 dynamicStateCount = dynamicStateCount_;
13997 return *this;
13998 }
13999
14000 PipelineDynamicStateCreateInfo& setPDynamicStates( const DynamicState* pDynamicStates_ )
14001 {
14002 pDynamicStates = pDynamicStates_;
14003 return *this;
14004 }
14005
14006 operator const VkPipelineDynamicStateCreateInfo&() const
14007 {
14008 return *reinterpret_cast<const VkPipelineDynamicStateCreateInfo*>(this);
14009 }
14010
14011 bool operator==( PipelineDynamicStateCreateInfo const& rhs ) const
14012 {
14013 return ( sType == rhs.sType )
14014 && ( pNext == rhs.pNext )
14015 && ( flags == rhs.flags )
14016 && ( dynamicStateCount == rhs.dynamicStateCount )
14017 && ( pDynamicStates == rhs.pDynamicStates );
14018 }
14019
14020 bool operator!=( PipelineDynamicStateCreateInfo const& rhs ) const
14021 {
14022 return !operator==( rhs );
14023 }
14024
14025 private:
14026 StructureType sType;
14027
14028 public:
14029 const void* pNext;
14030 PipelineDynamicStateCreateFlags flags;
14031 uint32_t dynamicStateCount;
14032 const DynamicState* pDynamicStates;
14033 };
14034 static_assert( sizeof( PipelineDynamicStateCreateInfo ) == sizeof( VkPipelineDynamicStateCreateInfo ), "struct and wrapper have different size!" );
14035
Mark Young0f183a82017-02-28 09:58:04 -070014036 enum class DescriptorUpdateTemplateTypeKHR
14037 {
14038 eDescriptorSet = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR,
14039 ePushDescriptors = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR
14040 };
14041
14042 struct DescriptorUpdateTemplateCreateInfoKHR
14043 {
14044 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 )
14045 : sType( StructureType::eDescriptorUpdateTemplateCreateInfoKHR )
14046 , pNext( nullptr )
14047 , flags( flags_ )
14048 , descriptorUpdateEntryCount( descriptorUpdateEntryCount_ )
14049 , pDescriptorUpdateEntries( pDescriptorUpdateEntries_ )
14050 , templateType( templateType_ )
14051 , descriptorSetLayout( descriptorSetLayout_ )
14052 , pipelineBindPoint( pipelineBindPoint_ )
14053 , pipelineLayout( pipelineLayout_ )
14054 , set( set_ )
14055 {
14056 }
14057
14058 DescriptorUpdateTemplateCreateInfoKHR( VkDescriptorUpdateTemplateCreateInfoKHR const & rhs )
14059 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014060 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070014061 }
14062
14063 DescriptorUpdateTemplateCreateInfoKHR& operator=( VkDescriptorUpdateTemplateCreateInfoKHR const & rhs )
14064 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014065 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070014066 return *this;
14067 }
Mark Young0f183a82017-02-28 09:58:04 -070014068 DescriptorUpdateTemplateCreateInfoKHR& setPNext( void* pNext_ )
14069 {
14070 pNext = pNext_;
14071 return *this;
14072 }
14073
14074 DescriptorUpdateTemplateCreateInfoKHR& setFlags( DescriptorUpdateTemplateCreateFlagsKHR flags_ )
14075 {
14076 flags = flags_;
14077 return *this;
14078 }
14079
14080 DescriptorUpdateTemplateCreateInfoKHR& setDescriptorUpdateEntryCount( uint32_t descriptorUpdateEntryCount_ )
14081 {
14082 descriptorUpdateEntryCount = descriptorUpdateEntryCount_;
14083 return *this;
14084 }
14085
14086 DescriptorUpdateTemplateCreateInfoKHR& setPDescriptorUpdateEntries( const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries_ )
14087 {
14088 pDescriptorUpdateEntries = pDescriptorUpdateEntries_;
14089 return *this;
14090 }
14091
14092 DescriptorUpdateTemplateCreateInfoKHR& setTemplateType( DescriptorUpdateTemplateTypeKHR templateType_ )
14093 {
14094 templateType = templateType_;
14095 return *this;
14096 }
14097
14098 DescriptorUpdateTemplateCreateInfoKHR& setDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout_ )
14099 {
14100 descriptorSetLayout = descriptorSetLayout_;
14101 return *this;
14102 }
14103
14104 DescriptorUpdateTemplateCreateInfoKHR& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
14105 {
14106 pipelineBindPoint = pipelineBindPoint_;
14107 return *this;
14108 }
14109
14110 DescriptorUpdateTemplateCreateInfoKHR& setPipelineLayout( PipelineLayout pipelineLayout_ )
14111 {
14112 pipelineLayout = pipelineLayout_;
14113 return *this;
14114 }
14115
14116 DescriptorUpdateTemplateCreateInfoKHR& setSet( uint32_t set_ )
14117 {
14118 set = set_;
14119 return *this;
14120 }
14121
14122 operator const VkDescriptorUpdateTemplateCreateInfoKHR&() const
14123 {
14124 return *reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>(this);
14125 }
14126
14127 bool operator==( DescriptorUpdateTemplateCreateInfoKHR const& rhs ) const
14128 {
14129 return ( sType == rhs.sType )
14130 && ( pNext == rhs.pNext )
14131 && ( flags == rhs.flags )
14132 && ( descriptorUpdateEntryCount == rhs.descriptorUpdateEntryCount )
14133 && ( pDescriptorUpdateEntries == rhs.pDescriptorUpdateEntries )
14134 && ( templateType == rhs.templateType )
14135 && ( descriptorSetLayout == rhs.descriptorSetLayout )
14136 && ( pipelineBindPoint == rhs.pipelineBindPoint )
14137 && ( pipelineLayout == rhs.pipelineLayout )
14138 && ( set == rhs.set );
14139 }
14140
14141 bool operator!=( DescriptorUpdateTemplateCreateInfoKHR const& rhs ) const
14142 {
14143 return !operator==( rhs );
14144 }
14145
14146 private:
14147 StructureType sType;
14148
14149 public:
14150 void* pNext;
14151 DescriptorUpdateTemplateCreateFlagsKHR flags;
14152 uint32_t descriptorUpdateEntryCount;
14153 const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries;
14154 DescriptorUpdateTemplateTypeKHR templateType;
14155 DescriptorSetLayout descriptorSetLayout;
14156 PipelineBindPoint pipelineBindPoint;
14157 PipelineLayout pipelineLayout;
14158 uint32_t set;
14159 };
14160 static_assert( sizeof( DescriptorUpdateTemplateCreateInfoKHR ) == sizeof( VkDescriptorUpdateTemplateCreateInfoKHR ), "struct and wrapper have different size!" );
14161
Mark Lobodzinski54385432017-05-15 10:27:52 -060014162 enum class ObjectType
14163 {
14164 eUnknown = VK_OBJECT_TYPE_UNKNOWN,
14165 eInstance = VK_OBJECT_TYPE_INSTANCE,
14166 ePhysicalDevice = VK_OBJECT_TYPE_PHYSICAL_DEVICE,
14167 eDevice = VK_OBJECT_TYPE_DEVICE,
14168 eQueue = VK_OBJECT_TYPE_QUEUE,
14169 eSemaphore = VK_OBJECT_TYPE_SEMAPHORE,
14170 eCommandBuffer = VK_OBJECT_TYPE_COMMAND_BUFFER,
14171 eFence = VK_OBJECT_TYPE_FENCE,
14172 eDeviceMemory = VK_OBJECT_TYPE_DEVICE_MEMORY,
14173 eBuffer = VK_OBJECT_TYPE_BUFFER,
14174 eImage = VK_OBJECT_TYPE_IMAGE,
14175 eEvent = VK_OBJECT_TYPE_EVENT,
14176 eQueryPool = VK_OBJECT_TYPE_QUERY_POOL,
14177 eBufferView = VK_OBJECT_TYPE_BUFFER_VIEW,
14178 eImageView = VK_OBJECT_TYPE_IMAGE_VIEW,
14179 eShaderModule = VK_OBJECT_TYPE_SHADER_MODULE,
14180 ePipelineCache = VK_OBJECT_TYPE_PIPELINE_CACHE,
14181 ePipelineLayout = VK_OBJECT_TYPE_PIPELINE_LAYOUT,
14182 eRenderPass = VK_OBJECT_TYPE_RENDER_PASS,
14183 ePipeline = VK_OBJECT_TYPE_PIPELINE,
14184 eDescriptorSetLayout = VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT,
14185 eSampler = VK_OBJECT_TYPE_SAMPLER,
14186 eDescriptorPool = VK_OBJECT_TYPE_DESCRIPTOR_POOL,
14187 eDescriptorSet = VK_OBJECT_TYPE_DESCRIPTOR_SET,
14188 eFramebuffer = VK_OBJECT_TYPE_FRAMEBUFFER,
14189 eCommandPool = VK_OBJECT_TYPE_COMMAND_POOL,
14190 eSurfaceKHR = VK_OBJECT_TYPE_SURFACE_KHR,
14191 eSwapchainKHR = VK_OBJECT_TYPE_SWAPCHAIN_KHR,
14192 eDisplayKHR = VK_OBJECT_TYPE_DISPLAY_KHR,
14193 eDisplayModeKHR = VK_OBJECT_TYPE_DISPLAY_MODE_KHR,
14194 eDebugReportCallbackEXT = VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT,
14195 eDescriptorUpdateTemplateKHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR,
14196 eObjectTableNVX = VK_OBJECT_TYPE_OBJECT_TABLE_NVX,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060014197 eIndirectCommandsLayoutNVX = VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX,
Lenny Komowb79f04a2017-09-18 17:07:00 -060014198 eSamplerYcbcrConversionKHR = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060014199 eValidationCacheEXT = VK_OBJECT_TYPE_VALIDATION_CACHE_EXT
Mark Lobodzinski54385432017-05-15 10:27:52 -060014200 };
14201
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014202 enum class QueueFlagBits
14203 {
14204 eGraphics = VK_QUEUE_GRAPHICS_BIT,
14205 eCompute = VK_QUEUE_COMPUTE_BIT,
14206 eTransfer = VK_QUEUE_TRANSFER_BIT,
14207 eSparseBinding = VK_QUEUE_SPARSE_BINDING_BIT
14208 };
14209
14210 using QueueFlags = Flags<QueueFlagBits, VkQueueFlags>;
14211
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014212 VULKAN_HPP_INLINE QueueFlags operator|( QueueFlagBits bit0, QueueFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014213 {
14214 return QueueFlags( bit0 ) | bit1;
14215 }
14216
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014217 VULKAN_HPP_INLINE QueueFlags operator~( QueueFlagBits bits )
14218 {
14219 return ~( QueueFlags( bits ) );
14220 }
14221
14222 template <> struct FlagTraits<QueueFlagBits>
14223 {
14224 enum
14225 {
14226 allFlags = VkFlags(QueueFlagBits::eGraphics) | VkFlags(QueueFlagBits::eCompute) | VkFlags(QueueFlagBits::eTransfer) | VkFlags(QueueFlagBits::eSparseBinding)
14227 };
14228 };
14229
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014230 struct QueueFamilyProperties
14231 {
14232 operator const VkQueueFamilyProperties&() const
14233 {
14234 return *reinterpret_cast<const VkQueueFamilyProperties*>(this);
14235 }
14236
14237 bool operator==( QueueFamilyProperties const& rhs ) const
14238 {
14239 return ( queueFlags == rhs.queueFlags )
14240 && ( queueCount == rhs.queueCount )
14241 && ( timestampValidBits == rhs.timestampValidBits )
14242 && ( minImageTransferGranularity == rhs.minImageTransferGranularity );
14243 }
14244
14245 bool operator!=( QueueFamilyProperties const& rhs ) const
14246 {
14247 return !operator==( rhs );
14248 }
14249
14250 QueueFlags queueFlags;
14251 uint32_t queueCount;
14252 uint32_t timestampValidBits;
14253 Extent3D minImageTransferGranularity;
14254 };
14255 static_assert( sizeof( QueueFamilyProperties ) == sizeof( VkQueueFamilyProperties ), "struct and wrapper have different size!" );
14256
Mark Young39389872017-01-19 21:10:49 -070014257 struct QueueFamilyProperties2KHR
14258 {
14259 operator const VkQueueFamilyProperties2KHR&() const
14260 {
14261 return *reinterpret_cast<const VkQueueFamilyProperties2KHR*>(this);
14262 }
14263
14264 bool operator==( QueueFamilyProperties2KHR const& rhs ) const
14265 {
14266 return ( sType == rhs.sType )
14267 && ( pNext == rhs.pNext )
14268 && ( queueFamilyProperties == rhs.queueFamilyProperties );
14269 }
14270
14271 bool operator!=( QueueFamilyProperties2KHR const& rhs ) const
14272 {
14273 return !operator==( rhs );
14274 }
14275
14276 private:
14277 StructureType sType;
14278
14279 public:
14280 void* pNext;
14281 QueueFamilyProperties queueFamilyProperties;
14282 };
14283 static_assert( sizeof( QueueFamilyProperties2KHR ) == sizeof( VkQueueFamilyProperties2KHR ), "struct and wrapper have different size!" );
14284
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014285 enum class MemoryPropertyFlagBits
14286 {
14287 eDeviceLocal = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
14288 eHostVisible = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
14289 eHostCoherent = VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
14290 eHostCached = VK_MEMORY_PROPERTY_HOST_CACHED_BIT,
14291 eLazilyAllocated = VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT
14292 };
14293
14294 using MemoryPropertyFlags = Flags<MemoryPropertyFlagBits, VkMemoryPropertyFlags>;
14295
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014296 VULKAN_HPP_INLINE MemoryPropertyFlags operator|( MemoryPropertyFlagBits bit0, MemoryPropertyFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014297 {
14298 return MemoryPropertyFlags( bit0 ) | bit1;
14299 }
14300
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014301 VULKAN_HPP_INLINE MemoryPropertyFlags operator~( MemoryPropertyFlagBits bits )
14302 {
14303 return ~( MemoryPropertyFlags( bits ) );
14304 }
14305
14306 template <> struct FlagTraits<MemoryPropertyFlagBits>
14307 {
14308 enum
14309 {
14310 allFlags = VkFlags(MemoryPropertyFlagBits::eDeviceLocal) | VkFlags(MemoryPropertyFlagBits::eHostVisible) | VkFlags(MemoryPropertyFlagBits::eHostCoherent) | VkFlags(MemoryPropertyFlagBits::eHostCached) | VkFlags(MemoryPropertyFlagBits::eLazilyAllocated)
14311 };
14312 };
14313
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014314 struct MemoryType
14315 {
14316 operator const VkMemoryType&() const
14317 {
14318 return *reinterpret_cast<const VkMemoryType*>(this);
14319 }
14320
14321 bool operator==( MemoryType const& rhs ) const
14322 {
14323 return ( propertyFlags == rhs.propertyFlags )
14324 && ( heapIndex == rhs.heapIndex );
14325 }
14326
14327 bool operator!=( MemoryType const& rhs ) const
14328 {
14329 return !operator==( rhs );
14330 }
14331
14332 MemoryPropertyFlags propertyFlags;
14333 uint32_t heapIndex;
14334 };
14335 static_assert( sizeof( MemoryType ) == sizeof( VkMemoryType ), "struct and wrapper have different size!" );
14336
14337 enum class MemoryHeapFlagBits
14338 {
Mark Young0f183a82017-02-28 09:58:04 -070014339 eDeviceLocal = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,
14340 eMultiInstanceKHX = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014341 };
14342
14343 using MemoryHeapFlags = Flags<MemoryHeapFlagBits, VkMemoryHeapFlags>;
14344
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014345 VULKAN_HPP_INLINE MemoryHeapFlags operator|( MemoryHeapFlagBits bit0, MemoryHeapFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014346 {
14347 return MemoryHeapFlags( bit0 ) | bit1;
14348 }
14349
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014350 VULKAN_HPP_INLINE MemoryHeapFlags operator~( MemoryHeapFlagBits bits )
14351 {
14352 return ~( MemoryHeapFlags( bits ) );
14353 }
14354
14355 template <> struct FlagTraits<MemoryHeapFlagBits>
14356 {
14357 enum
14358 {
Mark Young0f183a82017-02-28 09:58:04 -070014359 allFlags = VkFlags(MemoryHeapFlagBits::eDeviceLocal) | VkFlags(MemoryHeapFlagBits::eMultiInstanceKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014360 };
14361 };
14362
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014363 struct MemoryHeap
14364 {
14365 operator const VkMemoryHeap&() const
14366 {
14367 return *reinterpret_cast<const VkMemoryHeap*>(this);
14368 }
14369
14370 bool operator==( MemoryHeap const& rhs ) const
14371 {
14372 return ( size == rhs.size )
14373 && ( flags == rhs.flags );
14374 }
14375
14376 bool operator!=( MemoryHeap const& rhs ) const
14377 {
14378 return !operator==( rhs );
14379 }
14380
14381 DeviceSize size;
14382 MemoryHeapFlags flags;
14383 };
14384 static_assert( sizeof( MemoryHeap ) == sizeof( VkMemoryHeap ), "struct and wrapper have different size!" );
14385
14386 struct PhysicalDeviceMemoryProperties
14387 {
14388 operator const VkPhysicalDeviceMemoryProperties&() const
14389 {
14390 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties*>(this);
14391 }
14392
14393 bool operator==( PhysicalDeviceMemoryProperties const& rhs ) const
14394 {
14395 return ( memoryTypeCount == rhs.memoryTypeCount )
14396 && ( memcmp( memoryTypes, rhs.memoryTypes, VK_MAX_MEMORY_TYPES * sizeof( MemoryType ) ) == 0 )
14397 && ( memoryHeapCount == rhs.memoryHeapCount )
14398 && ( memcmp( memoryHeaps, rhs.memoryHeaps, VK_MAX_MEMORY_HEAPS * sizeof( MemoryHeap ) ) == 0 );
14399 }
14400
14401 bool operator!=( PhysicalDeviceMemoryProperties const& rhs ) const
14402 {
14403 return !operator==( rhs );
14404 }
14405
14406 uint32_t memoryTypeCount;
14407 MemoryType memoryTypes[VK_MAX_MEMORY_TYPES];
14408 uint32_t memoryHeapCount;
14409 MemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS];
14410 };
14411 static_assert( sizeof( PhysicalDeviceMemoryProperties ) == sizeof( VkPhysicalDeviceMemoryProperties ), "struct and wrapper have different size!" );
14412
Mark Young39389872017-01-19 21:10:49 -070014413 struct PhysicalDeviceMemoryProperties2KHR
14414 {
14415 operator const VkPhysicalDeviceMemoryProperties2KHR&() const
14416 {
14417 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties2KHR*>(this);
14418 }
14419
14420 bool operator==( PhysicalDeviceMemoryProperties2KHR const& rhs ) const
14421 {
14422 return ( sType == rhs.sType )
14423 && ( pNext == rhs.pNext )
14424 && ( memoryProperties == rhs.memoryProperties );
14425 }
14426
14427 bool operator!=( PhysicalDeviceMemoryProperties2KHR const& rhs ) const
14428 {
14429 return !operator==( rhs );
14430 }
14431
14432 private:
14433 StructureType sType;
14434
14435 public:
14436 void* pNext;
14437 PhysicalDeviceMemoryProperties memoryProperties;
14438 };
14439 static_assert( sizeof( PhysicalDeviceMemoryProperties2KHR ) == sizeof( VkPhysicalDeviceMemoryProperties2KHR ), "struct and wrapper have different size!" );
14440
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014441 enum class AccessFlagBits
14442 {
14443 eIndirectCommandRead = VK_ACCESS_INDIRECT_COMMAND_READ_BIT,
14444 eIndexRead = VK_ACCESS_INDEX_READ_BIT,
14445 eVertexAttributeRead = VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,
14446 eUniformRead = VK_ACCESS_UNIFORM_READ_BIT,
14447 eInputAttachmentRead = VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,
14448 eShaderRead = VK_ACCESS_SHADER_READ_BIT,
14449 eShaderWrite = VK_ACCESS_SHADER_WRITE_BIT,
14450 eColorAttachmentRead = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT,
14451 eColorAttachmentWrite = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
14452 eDepthStencilAttachmentRead = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT,
14453 eDepthStencilAttachmentWrite = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
14454 eTransferRead = VK_ACCESS_TRANSFER_READ_BIT,
14455 eTransferWrite = VK_ACCESS_TRANSFER_WRITE_BIT,
14456 eHostRead = VK_ACCESS_HOST_READ_BIT,
14457 eHostWrite = VK_ACCESS_HOST_WRITE_BIT,
14458 eMemoryRead = VK_ACCESS_MEMORY_READ_BIT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014459 eMemoryWrite = VK_ACCESS_MEMORY_WRITE_BIT,
14460 eCommandProcessReadNVX = VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060014461 eCommandProcessWriteNVX = VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX,
14462 eColorAttachmentReadNoncoherentEXT = VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014463 };
14464
14465 using AccessFlags = Flags<AccessFlagBits, VkAccessFlags>;
14466
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014467 VULKAN_HPP_INLINE AccessFlags operator|( AccessFlagBits bit0, AccessFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014468 {
14469 return AccessFlags( bit0 ) | bit1;
14470 }
14471
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014472 VULKAN_HPP_INLINE AccessFlags operator~( AccessFlagBits bits )
14473 {
14474 return ~( AccessFlags( bits ) );
14475 }
14476
14477 template <> struct FlagTraits<AccessFlagBits>
14478 {
14479 enum
14480 {
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060014481 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 -070014482 };
14483 };
14484
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014485 struct MemoryBarrier
14486 {
14487 MemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags() )
14488 : sType( StructureType::eMemoryBarrier )
14489 , pNext( nullptr )
14490 , srcAccessMask( srcAccessMask_ )
14491 , dstAccessMask( dstAccessMask_ )
14492 {
14493 }
14494
14495 MemoryBarrier( VkMemoryBarrier const & rhs )
14496 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014497 memcpy( this, &rhs, sizeof( MemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014498 }
14499
14500 MemoryBarrier& operator=( VkMemoryBarrier const & rhs )
14501 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014502 memcpy( this, &rhs, sizeof( MemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014503 return *this;
14504 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014505 MemoryBarrier& setPNext( const void* pNext_ )
14506 {
14507 pNext = pNext_;
14508 return *this;
14509 }
14510
14511 MemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
14512 {
14513 srcAccessMask = srcAccessMask_;
14514 return *this;
14515 }
14516
14517 MemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
14518 {
14519 dstAccessMask = dstAccessMask_;
14520 return *this;
14521 }
14522
14523 operator const VkMemoryBarrier&() const
14524 {
14525 return *reinterpret_cast<const VkMemoryBarrier*>(this);
14526 }
14527
14528 bool operator==( MemoryBarrier const& rhs ) const
14529 {
14530 return ( sType == rhs.sType )
14531 && ( pNext == rhs.pNext )
14532 && ( srcAccessMask == rhs.srcAccessMask )
14533 && ( dstAccessMask == rhs.dstAccessMask );
14534 }
14535
14536 bool operator!=( MemoryBarrier const& rhs ) const
14537 {
14538 return !operator==( rhs );
14539 }
14540
14541 private:
14542 StructureType sType;
14543
14544 public:
14545 const void* pNext;
14546 AccessFlags srcAccessMask;
14547 AccessFlags dstAccessMask;
14548 };
14549 static_assert( sizeof( MemoryBarrier ) == sizeof( VkMemoryBarrier ), "struct and wrapper have different size!" );
14550
14551 struct BufferMemoryBarrier
14552 {
14553 BufferMemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), uint32_t srcQueueFamilyIndex_ = 0, uint32_t dstQueueFamilyIndex_ = 0, Buffer buffer_ = Buffer(), DeviceSize offset_ = 0, DeviceSize size_ = 0 )
14554 : sType( StructureType::eBufferMemoryBarrier )
14555 , pNext( nullptr )
14556 , srcAccessMask( srcAccessMask_ )
14557 , dstAccessMask( dstAccessMask_ )
14558 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
14559 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
14560 , buffer( buffer_ )
14561 , offset( offset_ )
14562 , size( size_ )
14563 {
14564 }
14565
14566 BufferMemoryBarrier( VkBufferMemoryBarrier const & rhs )
14567 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014568 memcpy( this, &rhs, sizeof( BufferMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014569 }
14570
14571 BufferMemoryBarrier& operator=( VkBufferMemoryBarrier const & rhs )
14572 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014573 memcpy( this, &rhs, sizeof( BufferMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014574 return *this;
14575 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014576 BufferMemoryBarrier& setPNext( const void* pNext_ )
14577 {
14578 pNext = pNext_;
14579 return *this;
14580 }
14581
14582 BufferMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
14583 {
14584 srcAccessMask = srcAccessMask_;
14585 return *this;
14586 }
14587
14588 BufferMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
14589 {
14590 dstAccessMask = dstAccessMask_;
14591 return *this;
14592 }
14593
14594 BufferMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
14595 {
14596 srcQueueFamilyIndex = srcQueueFamilyIndex_;
14597 return *this;
14598 }
14599
14600 BufferMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
14601 {
14602 dstQueueFamilyIndex = dstQueueFamilyIndex_;
14603 return *this;
14604 }
14605
14606 BufferMemoryBarrier& setBuffer( Buffer buffer_ )
14607 {
14608 buffer = buffer_;
14609 return *this;
14610 }
14611
14612 BufferMemoryBarrier& setOffset( DeviceSize offset_ )
14613 {
14614 offset = offset_;
14615 return *this;
14616 }
14617
14618 BufferMemoryBarrier& setSize( DeviceSize size_ )
14619 {
14620 size = size_;
14621 return *this;
14622 }
14623
14624 operator const VkBufferMemoryBarrier&() const
14625 {
14626 return *reinterpret_cast<const VkBufferMemoryBarrier*>(this);
14627 }
14628
14629 bool operator==( BufferMemoryBarrier const& rhs ) const
14630 {
14631 return ( sType == rhs.sType )
14632 && ( pNext == rhs.pNext )
14633 && ( srcAccessMask == rhs.srcAccessMask )
14634 && ( dstAccessMask == rhs.dstAccessMask )
14635 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
14636 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
14637 && ( buffer == rhs.buffer )
14638 && ( offset == rhs.offset )
14639 && ( size == rhs.size );
14640 }
14641
14642 bool operator!=( BufferMemoryBarrier const& rhs ) const
14643 {
14644 return !operator==( rhs );
14645 }
14646
14647 private:
14648 StructureType sType;
14649
14650 public:
14651 const void* pNext;
14652 AccessFlags srcAccessMask;
14653 AccessFlags dstAccessMask;
14654 uint32_t srcQueueFamilyIndex;
14655 uint32_t dstQueueFamilyIndex;
14656 Buffer buffer;
14657 DeviceSize offset;
14658 DeviceSize size;
14659 };
14660 static_assert( sizeof( BufferMemoryBarrier ) == sizeof( VkBufferMemoryBarrier ), "struct and wrapper have different size!" );
14661
14662 enum class BufferUsageFlagBits
14663 {
14664 eTransferSrc = VK_BUFFER_USAGE_TRANSFER_SRC_BIT,
14665 eTransferDst = VK_BUFFER_USAGE_TRANSFER_DST_BIT,
14666 eUniformTexelBuffer = VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT,
14667 eStorageTexelBuffer = VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT,
14668 eUniformBuffer = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
14669 eStorageBuffer = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
14670 eIndexBuffer = VK_BUFFER_USAGE_INDEX_BUFFER_BIT,
14671 eVertexBuffer = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,
14672 eIndirectBuffer = VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
14673 };
14674
14675 using BufferUsageFlags = Flags<BufferUsageFlagBits, VkBufferUsageFlags>;
14676
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014677 VULKAN_HPP_INLINE BufferUsageFlags operator|( BufferUsageFlagBits bit0, BufferUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014678 {
14679 return BufferUsageFlags( bit0 ) | bit1;
14680 }
14681
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014682 VULKAN_HPP_INLINE BufferUsageFlags operator~( BufferUsageFlagBits bits )
14683 {
14684 return ~( BufferUsageFlags( bits ) );
14685 }
14686
14687 template <> struct FlagTraits<BufferUsageFlagBits>
14688 {
14689 enum
14690 {
14691 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)
14692 };
14693 };
14694
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014695 enum class BufferCreateFlagBits
14696 {
14697 eSparseBinding = VK_BUFFER_CREATE_SPARSE_BINDING_BIT,
14698 eSparseResidency = VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT,
14699 eSparseAliased = VK_BUFFER_CREATE_SPARSE_ALIASED_BIT
14700 };
14701
14702 using BufferCreateFlags = Flags<BufferCreateFlagBits, VkBufferCreateFlags>;
14703
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014704 VULKAN_HPP_INLINE BufferCreateFlags operator|( BufferCreateFlagBits bit0, BufferCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014705 {
14706 return BufferCreateFlags( bit0 ) | bit1;
14707 }
14708
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014709 VULKAN_HPP_INLINE BufferCreateFlags operator~( BufferCreateFlagBits bits )
14710 {
14711 return ~( BufferCreateFlags( bits ) );
14712 }
14713
14714 template <> struct FlagTraits<BufferCreateFlagBits>
14715 {
14716 enum
14717 {
14718 allFlags = VkFlags(BufferCreateFlagBits::eSparseBinding) | VkFlags(BufferCreateFlagBits::eSparseResidency) | VkFlags(BufferCreateFlagBits::eSparseAliased)
14719 };
14720 };
14721
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014722 struct BufferCreateInfo
14723 {
14724 BufferCreateInfo( BufferCreateFlags flags_ = BufferCreateFlags(), DeviceSize size_ = 0, BufferUsageFlags usage_ = BufferUsageFlags(), SharingMode sharingMode_ = SharingMode::eExclusive, uint32_t queueFamilyIndexCount_ = 0, const uint32_t* pQueueFamilyIndices_ = nullptr )
14725 : sType( StructureType::eBufferCreateInfo )
14726 , pNext( nullptr )
14727 , flags( flags_ )
14728 , size( size_ )
14729 , usage( usage_ )
14730 , sharingMode( sharingMode_ )
14731 , queueFamilyIndexCount( queueFamilyIndexCount_ )
14732 , pQueueFamilyIndices( pQueueFamilyIndices_ )
14733 {
14734 }
14735
14736 BufferCreateInfo( VkBufferCreateInfo const & rhs )
14737 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014738 memcpy( this, &rhs, sizeof( BufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014739 }
14740
14741 BufferCreateInfo& operator=( VkBufferCreateInfo const & rhs )
14742 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014743 memcpy( this, &rhs, sizeof( BufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014744 return *this;
14745 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014746 BufferCreateInfo& setPNext( const void* pNext_ )
14747 {
14748 pNext = pNext_;
14749 return *this;
14750 }
14751
14752 BufferCreateInfo& setFlags( BufferCreateFlags flags_ )
14753 {
14754 flags = flags_;
14755 return *this;
14756 }
14757
14758 BufferCreateInfo& setSize( DeviceSize size_ )
14759 {
14760 size = size_;
14761 return *this;
14762 }
14763
14764 BufferCreateInfo& setUsage( BufferUsageFlags usage_ )
14765 {
14766 usage = usage_;
14767 return *this;
14768 }
14769
14770 BufferCreateInfo& setSharingMode( SharingMode sharingMode_ )
14771 {
14772 sharingMode = sharingMode_;
14773 return *this;
14774 }
14775
14776 BufferCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
14777 {
14778 queueFamilyIndexCount = queueFamilyIndexCount_;
14779 return *this;
14780 }
14781
14782 BufferCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
14783 {
14784 pQueueFamilyIndices = pQueueFamilyIndices_;
14785 return *this;
14786 }
14787
14788 operator const VkBufferCreateInfo&() const
14789 {
14790 return *reinterpret_cast<const VkBufferCreateInfo*>(this);
14791 }
14792
14793 bool operator==( BufferCreateInfo const& rhs ) const
14794 {
14795 return ( sType == rhs.sType )
14796 && ( pNext == rhs.pNext )
14797 && ( flags == rhs.flags )
14798 && ( size == rhs.size )
14799 && ( usage == rhs.usage )
14800 && ( sharingMode == rhs.sharingMode )
14801 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
14802 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices );
14803 }
14804
14805 bool operator!=( BufferCreateInfo const& rhs ) const
14806 {
14807 return !operator==( rhs );
14808 }
14809
14810 private:
14811 StructureType sType;
14812
14813 public:
14814 const void* pNext;
14815 BufferCreateFlags flags;
14816 DeviceSize size;
14817 BufferUsageFlags usage;
14818 SharingMode sharingMode;
14819 uint32_t queueFamilyIndexCount;
14820 const uint32_t* pQueueFamilyIndices;
14821 };
14822 static_assert( sizeof( BufferCreateInfo ) == sizeof( VkBufferCreateInfo ), "struct and wrapper have different size!" );
14823
14824 enum class ShaderStageFlagBits
14825 {
14826 eVertex = VK_SHADER_STAGE_VERTEX_BIT,
14827 eTessellationControl = VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,
14828 eTessellationEvaluation = VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,
14829 eGeometry = VK_SHADER_STAGE_GEOMETRY_BIT,
14830 eFragment = VK_SHADER_STAGE_FRAGMENT_BIT,
14831 eCompute = VK_SHADER_STAGE_COMPUTE_BIT,
14832 eAllGraphics = VK_SHADER_STAGE_ALL_GRAPHICS,
14833 eAll = VK_SHADER_STAGE_ALL
14834 };
14835
14836 using ShaderStageFlags = Flags<ShaderStageFlagBits, VkShaderStageFlags>;
14837
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014838 VULKAN_HPP_INLINE ShaderStageFlags operator|( ShaderStageFlagBits bit0, ShaderStageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014839 {
14840 return ShaderStageFlags( bit0 ) | bit1;
14841 }
14842
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014843 VULKAN_HPP_INLINE ShaderStageFlags operator~( ShaderStageFlagBits bits )
14844 {
14845 return ~( ShaderStageFlags( bits ) );
14846 }
14847
14848 template <> struct FlagTraits<ShaderStageFlagBits>
14849 {
14850 enum
14851 {
14852 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)
14853 };
14854 };
14855
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014856 struct DescriptorSetLayoutBinding
14857 {
14858 DescriptorSetLayoutBinding( uint32_t binding_ = 0, DescriptorType descriptorType_ = DescriptorType::eSampler, uint32_t descriptorCount_ = 0, ShaderStageFlags stageFlags_ = ShaderStageFlags(), const Sampler* pImmutableSamplers_ = nullptr )
14859 : binding( binding_ )
14860 , descriptorType( descriptorType_ )
14861 , descriptorCount( descriptorCount_ )
14862 , stageFlags( stageFlags_ )
14863 , pImmutableSamplers( pImmutableSamplers_ )
14864 {
14865 }
14866
14867 DescriptorSetLayoutBinding( VkDescriptorSetLayoutBinding const & rhs )
14868 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014869 memcpy( this, &rhs, sizeof( DescriptorSetLayoutBinding ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014870 }
14871
14872 DescriptorSetLayoutBinding& operator=( VkDescriptorSetLayoutBinding const & rhs )
14873 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014874 memcpy( this, &rhs, sizeof( DescriptorSetLayoutBinding ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014875 return *this;
14876 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014877 DescriptorSetLayoutBinding& setBinding( uint32_t binding_ )
14878 {
14879 binding = binding_;
14880 return *this;
14881 }
14882
14883 DescriptorSetLayoutBinding& setDescriptorType( DescriptorType descriptorType_ )
14884 {
14885 descriptorType = descriptorType_;
14886 return *this;
14887 }
14888
14889 DescriptorSetLayoutBinding& setDescriptorCount( uint32_t descriptorCount_ )
14890 {
14891 descriptorCount = descriptorCount_;
14892 return *this;
14893 }
14894
14895 DescriptorSetLayoutBinding& setStageFlags( ShaderStageFlags stageFlags_ )
14896 {
14897 stageFlags = stageFlags_;
14898 return *this;
14899 }
14900
14901 DescriptorSetLayoutBinding& setPImmutableSamplers( const Sampler* pImmutableSamplers_ )
14902 {
14903 pImmutableSamplers = pImmutableSamplers_;
14904 return *this;
14905 }
14906
14907 operator const VkDescriptorSetLayoutBinding&() const
14908 {
14909 return *reinterpret_cast<const VkDescriptorSetLayoutBinding*>(this);
14910 }
14911
14912 bool operator==( DescriptorSetLayoutBinding const& rhs ) const
14913 {
14914 return ( binding == rhs.binding )
14915 && ( descriptorType == rhs.descriptorType )
14916 && ( descriptorCount == rhs.descriptorCount )
14917 && ( stageFlags == rhs.stageFlags )
14918 && ( pImmutableSamplers == rhs.pImmutableSamplers );
14919 }
14920
14921 bool operator!=( DescriptorSetLayoutBinding const& rhs ) const
14922 {
14923 return !operator==( rhs );
14924 }
14925
14926 uint32_t binding;
14927 DescriptorType descriptorType;
14928 uint32_t descriptorCount;
14929 ShaderStageFlags stageFlags;
14930 const Sampler* pImmutableSamplers;
14931 };
14932 static_assert( sizeof( DescriptorSetLayoutBinding ) == sizeof( VkDescriptorSetLayoutBinding ), "struct and wrapper have different size!" );
14933
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014934 struct PipelineShaderStageCreateInfo
14935 {
14936 PipelineShaderStageCreateInfo( PipelineShaderStageCreateFlags flags_ = PipelineShaderStageCreateFlags(), ShaderStageFlagBits stage_ = ShaderStageFlagBits::eVertex, ShaderModule module_ = ShaderModule(), const char* pName_ = nullptr, const SpecializationInfo* pSpecializationInfo_ = nullptr )
14937 : sType( StructureType::ePipelineShaderStageCreateInfo )
14938 , pNext( nullptr )
14939 , flags( flags_ )
14940 , stage( stage_ )
14941 , module( module_ )
14942 , pName( pName_ )
14943 , pSpecializationInfo( pSpecializationInfo_ )
14944 {
14945 }
14946
14947 PipelineShaderStageCreateInfo( VkPipelineShaderStageCreateInfo const & rhs )
14948 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014949 memcpy( this, &rhs, sizeof( PipelineShaderStageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014950 }
14951
14952 PipelineShaderStageCreateInfo& operator=( VkPipelineShaderStageCreateInfo const & rhs )
14953 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014954 memcpy( this, &rhs, sizeof( PipelineShaderStageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014955 return *this;
14956 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014957 PipelineShaderStageCreateInfo& setPNext( const void* pNext_ )
14958 {
14959 pNext = pNext_;
14960 return *this;
14961 }
14962
14963 PipelineShaderStageCreateInfo& setFlags( PipelineShaderStageCreateFlags flags_ )
14964 {
14965 flags = flags_;
14966 return *this;
14967 }
14968
14969 PipelineShaderStageCreateInfo& setStage( ShaderStageFlagBits stage_ )
14970 {
14971 stage = stage_;
14972 return *this;
14973 }
14974
14975 PipelineShaderStageCreateInfo& setModule( ShaderModule module_ )
14976 {
14977 module = module_;
14978 return *this;
14979 }
14980
14981 PipelineShaderStageCreateInfo& setPName( const char* pName_ )
14982 {
14983 pName = pName_;
14984 return *this;
14985 }
14986
14987 PipelineShaderStageCreateInfo& setPSpecializationInfo( const SpecializationInfo* pSpecializationInfo_ )
14988 {
14989 pSpecializationInfo = pSpecializationInfo_;
14990 return *this;
14991 }
14992
14993 operator const VkPipelineShaderStageCreateInfo&() const
14994 {
14995 return *reinterpret_cast<const VkPipelineShaderStageCreateInfo*>(this);
14996 }
14997
14998 bool operator==( PipelineShaderStageCreateInfo const& rhs ) const
14999 {
15000 return ( sType == rhs.sType )
15001 && ( pNext == rhs.pNext )
15002 && ( flags == rhs.flags )
15003 && ( stage == rhs.stage )
15004 && ( module == rhs.module )
15005 && ( pName == rhs.pName )
15006 && ( pSpecializationInfo == rhs.pSpecializationInfo );
15007 }
15008
15009 bool operator!=( PipelineShaderStageCreateInfo const& rhs ) const
15010 {
15011 return !operator==( rhs );
15012 }
15013
15014 private:
15015 StructureType sType;
15016
15017 public:
15018 const void* pNext;
15019 PipelineShaderStageCreateFlags flags;
15020 ShaderStageFlagBits stage;
15021 ShaderModule module;
15022 const char* pName;
15023 const SpecializationInfo* pSpecializationInfo;
15024 };
15025 static_assert( sizeof( PipelineShaderStageCreateInfo ) == sizeof( VkPipelineShaderStageCreateInfo ), "struct and wrapper have different size!" );
15026
15027 struct PushConstantRange
15028 {
15029 PushConstantRange( ShaderStageFlags stageFlags_ = ShaderStageFlags(), uint32_t offset_ = 0, uint32_t size_ = 0 )
15030 : stageFlags( stageFlags_ )
15031 , offset( offset_ )
15032 , size( size_ )
15033 {
15034 }
15035
15036 PushConstantRange( VkPushConstantRange const & rhs )
15037 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015038 memcpy( this, &rhs, sizeof( PushConstantRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015039 }
15040
15041 PushConstantRange& operator=( VkPushConstantRange const & rhs )
15042 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015043 memcpy( this, &rhs, sizeof( PushConstantRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015044 return *this;
15045 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015046 PushConstantRange& setStageFlags( ShaderStageFlags stageFlags_ )
15047 {
15048 stageFlags = stageFlags_;
15049 return *this;
15050 }
15051
15052 PushConstantRange& setOffset( uint32_t offset_ )
15053 {
15054 offset = offset_;
15055 return *this;
15056 }
15057
15058 PushConstantRange& setSize( uint32_t size_ )
15059 {
15060 size = size_;
15061 return *this;
15062 }
15063
15064 operator const VkPushConstantRange&() const
15065 {
15066 return *reinterpret_cast<const VkPushConstantRange*>(this);
15067 }
15068
15069 bool operator==( PushConstantRange const& rhs ) const
15070 {
15071 return ( stageFlags == rhs.stageFlags )
15072 && ( offset == rhs.offset )
15073 && ( size == rhs.size );
15074 }
15075
15076 bool operator!=( PushConstantRange const& rhs ) const
15077 {
15078 return !operator==( rhs );
15079 }
15080
15081 ShaderStageFlags stageFlags;
15082 uint32_t offset;
15083 uint32_t size;
15084 };
15085 static_assert( sizeof( PushConstantRange ) == sizeof( VkPushConstantRange ), "struct and wrapper have different size!" );
15086
15087 struct PipelineLayoutCreateInfo
15088 {
15089 PipelineLayoutCreateInfo( PipelineLayoutCreateFlags flags_ = PipelineLayoutCreateFlags(), uint32_t setLayoutCount_ = 0, const DescriptorSetLayout* pSetLayouts_ = nullptr, uint32_t pushConstantRangeCount_ = 0, const PushConstantRange* pPushConstantRanges_ = nullptr )
15090 : sType( StructureType::ePipelineLayoutCreateInfo )
15091 , pNext( nullptr )
15092 , flags( flags_ )
15093 , setLayoutCount( setLayoutCount_ )
15094 , pSetLayouts( pSetLayouts_ )
15095 , pushConstantRangeCount( pushConstantRangeCount_ )
15096 , pPushConstantRanges( pPushConstantRanges_ )
15097 {
15098 }
15099
15100 PipelineLayoutCreateInfo( VkPipelineLayoutCreateInfo const & rhs )
15101 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015102 memcpy( this, &rhs, sizeof( PipelineLayoutCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015103 }
15104
15105 PipelineLayoutCreateInfo& operator=( VkPipelineLayoutCreateInfo const & rhs )
15106 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015107 memcpy( this, &rhs, sizeof( PipelineLayoutCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015108 return *this;
15109 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015110 PipelineLayoutCreateInfo& setPNext( const void* pNext_ )
15111 {
15112 pNext = pNext_;
15113 return *this;
15114 }
15115
15116 PipelineLayoutCreateInfo& setFlags( PipelineLayoutCreateFlags flags_ )
15117 {
15118 flags = flags_;
15119 return *this;
15120 }
15121
15122 PipelineLayoutCreateInfo& setSetLayoutCount( uint32_t setLayoutCount_ )
15123 {
15124 setLayoutCount = setLayoutCount_;
15125 return *this;
15126 }
15127
15128 PipelineLayoutCreateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
15129 {
15130 pSetLayouts = pSetLayouts_;
15131 return *this;
15132 }
15133
15134 PipelineLayoutCreateInfo& setPushConstantRangeCount( uint32_t pushConstantRangeCount_ )
15135 {
15136 pushConstantRangeCount = pushConstantRangeCount_;
15137 return *this;
15138 }
15139
15140 PipelineLayoutCreateInfo& setPPushConstantRanges( const PushConstantRange* pPushConstantRanges_ )
15141 {
15142 pPushConstantRanges = pPushConstantRanges_;
15143 return *this;
15144 }
15145
15146 operator const VkPipelineLayoutCreateInfo&() const
15147 {
15148 return *reinterpret_cast<const VkPipelineLayoutCreateInfo*>(this);
15149 }
15150
15151 bool operator==( PipelineLayoutCreateInfo const& rhs ) const
15152 {
15153 return ( sType == rhs.sType )
15154 && ( pNext == rhs.pNext )
15155 && ( flags == rhs.flags )
15156 && ( setLayoutCount == rhs.setLayoutCount )
15157 && ( pSetLayouts == rhs.pSetLayouts )
15158 && ( pushConstantRangeCount == rhs.pushConstantRangeCount )
15159 && ( pPushConstantRanges == rhs.pPushConstantRanges );
15160 }
15161
15162 bool operator!=( PipelineLayoutCreateInfo const& rhs ) const
15163 {
15164 return !operator==( rhs );
15165 }
15166
15167 private:
15168 StructureType sType;
15169
15170 public:
15171 const void* pNext;
15172 PipelineLayoutCreateFlags flags;
15173 uint32_t setLayoutCount;
15174 const DescriptorSetLayout* pSetLayouts;
15175 uint32_t pushConstantRangeCount;
15176 const PushConstantRange* pPushConstantRanges;
15177 };
15178 static_assert( sizeof( PipelineLayoutCreateInfo ) == sizeof( VkPipelineLayoutCreateInfo ), "struct and wrapper have different size!" );
15179
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060015180 struct ShaderStatisticsInfoAMD
15181 {
15182 operator const VkShaderStatisticsInfoAMD&() const
15183 {
15184 return *reinterpret_cast<const VkShaderStatisticsInfoAMD*>(this);
15185 }
15186
15187 bool operator==( ShaderStatisticsInfoAMD const& rhs ) const
15188 {
15189 return ( shaderStageMask == rhs.shaderStageMask )
15190 && ( resourceUsage == rhs.resourceUsage )
15191 && ( numPhysicalVgprs == rhs.numPhysicalVgprs )
15192 && ( numPhysicalSgprs == rhs.numPhysicalSgprs )
15193 && ( numAvailableVgprs == rhs.numAvailableVgprs )
15194 && ( numAvailableSgprs == rhs.numAvailableSgprs )
15195 && ( memcmp( computeWorkGroupSize, rhs.computeWorkGroupSize, 3 * sizeof( uint32_t ) ) == 0 );
15196 }
15197
15198 bool operator!=( ShaderStatisticsInfoAMD const& rhs ) const
15199 {
15200 return !operator==( rhs );
15201 }
15202
15203 ShaderStageFlags shaderStageMask;
15204 ShaderResourceUsageAMD resourceUsage;
15205 uint32_t numPhysicalVgprs;
15206 uint32_t numPhysicalSgprs;
15207 uint32_t numAvailableVgprs;
15208 uint32_t numAvailableSgprs;
15209 uint32_t computeWorkGroupSize[3];
15210 };
15211 static_assert( sizeof( ShaderStatisticsInfoAMD ) == sizeof( VkShaderStatisticsInfoAMD ), "struct and wrapper have different size!" );
15212
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015213 enum class ImageUsageFlagBits
15214 {
15215 eTransferSrc = VK_IMAGE_USAGE_TRANSFER_SRC_BIT,
15216 eTransferDst = VK_IMAGE_USAGE_TRANSFER_DST_BIT,
15217 eSampled = VK_IMAGE_USAGE_SAMPLED_BIT,
15218 eStorage = VK_IMAGE_USAGE_STORAGE_BIT,
15219 eColorAttachment = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
15220 eDepthStencilAttachment = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,
15221 eTransientAttachment = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,
15222 eInputAttachment = VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
15223 };
15224
15225 using ImageUsageFlags = Flags<ImageUsageFlagBits, VkImageUsageFlags>;
15226
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015227 VULKAN_HPP_INLINE ImageUsageFlags operator|( ImageUsageFlagBits bit0, ImageUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015228 {
15229 return ImageUsageFlags( bit0 ) | bit1;
15230 }
15231
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015232 VULKAN_HPP_INLINE ImageUsageFlags operator~( ImageUsageFlagBits bits )
15233 {
15234 return ~( ImageUsageFlags( bits ) );
15235 }
15236
15237 template <> struct FlagTraits<ImageUsageFlagBits>
15238 {
15239 enum
15240 {
15241 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)
15242 };
15243 };
15244
Mark Lobodzinski54385432017-05-15 10:27:52 -060015245 struct SharedPresentSurfaceCapabilitiesKHR
15246 {
15247 operator const VkSharedPresentSurfaceCapabilitiesKHR&() const
15248 {
15249 return *reinterpret_cast<const VkSharedPresentSurfaceCapabilitiesKHR*>(this);
15250 }
15251
15252 bool operator==( SharedPresentSurfaceCapabilitiesKHR const& rhs ) const
15253 {
15254 return ( sType == rhs.sType )
15255 && ( pNext == rhs.pNext )
15256 && ( sharedPresentSupportedUsageFlags == rhs.sharedPresentSupportedUsageFlags );
15257 }
15258
15259 bool operator!=( SharedPresentSurfaceCapabilitiesKHR const& rhs ) const
15260 {
15261 return !operator==( rhs );
15262 }
15263
15264 private:
15265 StructureType sType;
15266
15267 public:
15268 void* pNext;
15269 ImageUsageFlags sharedPresentSupportedUsageFlags;
15270 };
15271 static_assert( sizeof( SharedPresentSurfaceCapabilitiesKHR ) == sizeof( VkSharedPresentSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" );
15272
Lenny Komowb79f04a2017-09-18 17:07:00 -060015273 struct ImageViewUsageCreateInfoKHR
15274 {
15275 ImageViewUsageCreateInfoKHR( ImageUsageFlags usage_ = ImageUsageFlags() )
15276 : sType( StructureType::eImageViewUsageCreateInfoKHR )
15277 , pNext( nullptr )
15278 , usage( usage_ )
15279 {
15280 }
15281
15282 ImageViewUsageCreateInfoKHR( VkImageViewUsageCreateInfoKHR const & rhs )
15283 {
15284 memcpy( this, &rhs, sizeof( ImageViewUsageCreateInfoKHR ) );
15285 }
15286
15287 ImageViewUsageCreateInfoKHR& operator=( VkImageViewUsageCreateInfoKHR const & rhs )
15288 {
15289 memcpy( this, &rhs, sizeof( ImageViewUsageCreateInfoKHR ) );
15290 return *this;
15291 }
15292 ImageViewUsageCreateInfoKHR& setPNext( const void* pNext_ )
15293 {
15294 pNext = pNext_;
15295 return *this;
15296 }
15297
15298 ImageViewUsageCreateInfoKHR& setUsage( ImageUsageFlags usage_ )
15299 {
15300 usage = usage_;
15301 return *this;
15302 }
15303
15304 operator const VkImageViewUsageCreateInfoKHR&() const
15305 {
15306 return *reinterpret_cast<const VkImageViewUsageCreateInfoKHR*>(this);
15307 }
15308
15309 bool operator==( ImageViewUsageCreateInfoKHR const& rhs ) const
15310 {
15311 return ( sType == rhs.sType )
15312 && ( pNext == rhs.pNext )
15313 && ( usage == rhs.usage );
15314 }
15315
15316 bool operator!=( ImageViewUsageCreateInfoKHR const& rhs ) const
15317 {
15318 return !operator==( rhs );
15319 }
15320
15321 private:
15322 StructureType sType;
15323
15324 public:
15325 const void* pNext;
15326 ImageUsageFlags usage;
15327 };
15328 static_assert( sizeof( ImageViewUsageCreateInfoKHR ) == sizeof( VkImageViewUsageCreateInfoKHR ), "struct and wrapper have different size!" );
15329
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015330 enum class ImageCreateFlagBits
15331 {
15332 eSparseBinding = VK_IMAGE_CREATE_SPARSE_BINDING_BIT,
15333 eSparseResidency = VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT,
15334 eSparseAliased = VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,
15335 eMutableFormat = VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,
Mark Young39389872017-01-19 21:10:49 -070015336 eCubeCompatible = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,
Mark Young0f183a82017-02-28 09:58:04 -070015337 eBindSfrKHX = VK_IMAGE_CREATE_BIND_SFR_BIT_KHX,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060015338 e2DArrayCompatibleKHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR,
Lenny Komowb79f04a2017-09-18 17:07:00 -060015339 eBlockTexelViewCompatibleKHR = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR,
15340 eExtendedUsageKHR = VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR,
15341 eSampleLocationsCompatibleDepthEXT = VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT,
15342 eDisjointKHR = VK_IMAGE_CREATE_DISJOINT_BIT_KHR,
15343 eAliasKHR = VK_IMAGE_CREATE_ALIAS_BIT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015344 };
15345
15346 using ImageCreateFlags = Flags<ImageCreateFlagBits, VkImageCreateFlags>;
15347
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015348 VULKAN_HPP_INLINE ImageCreateFlags operator|( ImageCreateFlagBits bit0, ImageCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015349 {
15350 return ImageCreateFlags( bit0 ) | bit1;
15351 }
15352
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015353 VULKAN_HPP_INLINE ImageCreateFlags operator~( ImageCreateFlagBits bits )
15354 {
15355 return ~( ImageCreateFlags( bits ) );
15356 }
15357
15358 template <> struct FlagTraits<ImageCreateFlagBits>
15359 {
15360 enum
15361 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060015362 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 -070015363 };
15364 };
15365
Mark Young39389872017-01-19 21:10:49 -070015366 struct PhysicalDeviceImageFormatInfo2KHR
15367 {
15368 PhysicalDeviceImageFormatInfo2KHR( Format format_ = Format::eUndefined, ImageType type_ = ImageType::e1D, ImageTiling tiling_ = ImageTiling::eOptimal, ImageUsageFlags usage_ = ImageUsageFlags(), ImageCreateFlags flags_ = ImageCreateFlags() )
15369 : sType( StructureType::ePhysicalDeviceImageFormatInfo2KHR )
15370 , pNext( nullptr )
15371 , format( format_ )
15372 , type( type_ )
15373 , tiling( tiling_ )
15374 , usage( usage_ )
15375 , flags( flags_ )
15376 {
15377 }
15378
15379 PhysicalDeviceImageFormatInfo2KHR( VkPhysicalDeviceImageFormatInfo2KHR const & rhs )
15380 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015381 memcpy( this, &rhs, sizeof( PhysicalDeviceImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070015382 }
15383
15384 PhysicalDeviceImageFormatInfo2KHR& operator=( VkPhysicalDeviceImageFormatInfo2KHR const & rhs )
15385 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015386 memcpy( this, &rhs, sizeof( PhysicalDeviceImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070015387 return *this;
15388 }
Mark Young39389872017-01-19 21:10:49 -070015389 PhysicalDeviceImageFormatInfo2KHR& setPNext( const void* pNext_ )
15390 {
15391 pNext = pNext_;
15392 return *this;
15393 }
15394
15395 PhysicalDeviceImageFormatInfo2KHR& setFormat( Format format_ )
15396 {
15397 format = format_;
15398 return *this;
15399 }
15400
15401 PhysicalDeviceImageFormatInfo2KHR& setType( ImageType type_ )
15402 {
15403 type = type_;
15404 return *this;
15405 }
15406
15407 PhysicalDeviceImageFormatInfo2KHR& setTiling( ImageTiling tiling_ )
15408 {
15409 tiling = tiling_;
15410 return *this;
15411 }
15412
15413 PhysicalDeviceImageFormatInfo2KHR& setUsage( ImageUsageFlags usage_ )
15414 {
15415 usage = usage_;
15416 return *this;
15417 }
15418
15419 PhysicalDeviceImageFormatInfo2KHR& setFlags( ImageCreateFlags flags_ )
15420 {
15421 flags = flags_;
15422 return *this;
15423 }
15424
15425 operator const VkPhysicalDeviceImageFormatInfo2KHR&() const
15426 {
15427 return *reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>(this);
15428 }
15429
15430 bool operator==( PhysicalDeviceImageFormatInfo2KHR const& rhs ) const
15431 {
15432 return ( sType == rhs.sType )
15433 && ( pNext == rhs.pNext )
15434 && ( format == rhs.format )
15435 && ( type == rhs.type )
15436 && ( tiling == rhs.tiling )
15437 && ( usage == rhs.usage )
15438 && ( flags == rhs.flags );
15439 }
15440
15441 bool operator!=( PhysicalDeviceImageFormatInfo2KHR const& rhs ) const
15442 {
15443 return !operator==( rhs );
15444 }
15445
15446 private:
15447 StructureType sType;
15448
15449 public:
15450 const void* pNext;
15451 Format format;
15452 ImageType type;
15453 ImageTiling tiling;
15454 ImageUsageFlags usage;
15455 ImageCreateFlags flags;
15456 };
15457 static_assert( sizeof( PhysicalDeviceImageFormatInfo2KHR ) == sizeof( VkPhysicalDeviceImageFormatInfo2KHR ), "struct and wrapper have different size!" );
15458
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015459 enum class PipelineCreateFlagBits
15460 {
15461 eDisableOptimization = VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT,
15462 eAllowDerivatives = VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT,
Mark Young0f183a82017-02-28 09:58:04 -070015463 eDerivative = VK_PIPELINE_CREATE_DERIVATIVE_BIT,
15464 eViewIndexFromDeviceIndexKHX = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX,
15465 eDispatchBaseKHX = VK_PIPELINE_CREATE_DISPATCH_BASE_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015466 };
15467
15468 using PipelineCreateFlags = Flags<PipelineCreateFlagBits, VkPipelineCreateFlags>;
15469
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015470 VULKAN_HPP_INLINE PipelineCreateFlags operator|( PipelineCreateFlagBits bit0, PipelineCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015471 {
15472 return PipelineCreateFlags( bit0 ) | bit1;
15473 }
15474
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015475 VULKAN_HPP_INLINE PipelineCreateFlags operator~( PipelineCreateFlagBits bits )
15476 {
15477 return ~( PipelineCreateFlags( bits ) );
15478 }
15479
15480 template <> struct FlagTraits<PipelineCreateFlagBits>
15481 {
15482 enum
15483 {
Mark Young0f183a82017-02-28 09:58:04 -070015484 allFlags = VkFlags(PipelineCreateFlagBits::eDisableOptimization) | VkFlags(PipelineCreateFlagBits::eAllowDerivatives) | VkFlags(PipelineCreateFlagBits::eDerivative) | VkFlags(PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX) | VkFlags(PipelineCreateFlagBits::eDispatchBaseKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015485 };
15486 };
15487
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015488 struct ComputePipelineCreateInfo
15489 {
15490 ComputePipelineCreateInfo( PipelineCreateFlags flags_ = PipelineCreateFlags(), PipelineShaderStageCreateInfo stage_ = PipelineShaderStageCreateInfo(), PipelineLayout layout_ = PipelineLayout(), Pipeline basePipelineHandle_ = Pipeline(), int32_t basePipelineIndex_ = 0 )
15491 : sType( StructureType::eComputePipelineCreateInfo )
15492 , pNext( nullptr )
15493 , flags( flags_ )
15494 , stage( stage_ )
15495 , layout( layout_ )
15496 , basePipelineHandle( basePipelineHandle_ )
15497 , basePipelineIndex( basePipelineIndex_ )
15498 {
15499 }
15500
15501 ComputePipelineCreateInfo( VkComputePipelineCreateInfo const & rhs )
15502 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015503 memcpy( this, &rhs, sizeof( ComputePipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015504 }
15505
15506 ComputePipelineCreateInfo& operator=( VkComputePipelineCreateInfo const & rhs )
15507 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015508 memcpy( this, &rhs, sizeof( ComputePipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015509 return *this;
15510 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015511 ComputePipelineCreateInfo& setPNext( const void* pNext_ )
15512 {
15513 pNext = pNext_;
15514 return *this;
15515 }
15516
15517 ComputePipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
15518 {
15519 flags = flags_;
15520 return *this;
15521 }
15522
15523 ComputePipelineCreateInfo& setStage( PipelineShaderStageCreateInfo stage_ )
15524 {
15525 stage = stage_;
15526 return *this;
15527 }
15528
15529 ComputePipelineCreateInfo& setLayout( PipelineLayout layout_ )
15530 {
15531 layout = layout_;
15532 return *this;
15533 }
15534
15535 ComputePipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
15536 {
15537 basePipelineHandle = basePipelineHandle_;
15538 return *this;
15539 }
15540
15541 ComputePipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
15542 {
15543 basePipelineIndex = basePipelineIndex_;
15544 return *this;
15545 }
15546
15547 operator const VkComputePipelineCreateInfo&() const
15548 {
15549 return *reinterpret_cast<const VkComputePipelineCreateInfo*>(this);
15550 }
15551
15552 bool operator==( ComputePipelineCreateInfo const& rhs ) const
15553 {
15554 return ( sType == rhs.sType )
15555 && ( pNext == rhs.pNext )
15556 && ( flags == rhs.flags )
15557 && ( stage == rhs.stage )
15558 && ( layout == rhs.layout )
15559 && ( basePipelineHandle == rhs.basePipelineHandle )
15560 && ( basePipelineIndex == rhs.basePipelineIndex );
15561 }
15562
15563 bool operator!=( ComputePipelineCreateInfo const& rhs ) const
15564 {
15565 return !operator==( rhs );
15566 }
15567
15568 private:
15569 StructureType sType;
15570
15571 public:
15572 const void* pNext;
15573 PipelineCreateFlags flags;
15574 PipelineShaderStageCreateInfo stage;
15575 PipelineLayout layout;
15576 Pipeline basePipelineHandle;
15577 int32_t basePipelineIndex;
15578 };
15579 static_assert( sizeof( ComputePipelineCreateInfo ) == sizeof( VkComputePipelineCreateInfo ), "struct and wrapper have different size!" );
15580
15581 enum class ColorComponentFlagBits
15582 {
15583 eR = VK_COLOR_COMPONENT_R_BIT,
15584 eG = VK_COLOR_COMPONENT_G_BIT,
15585 eB = VK_COLOR_COMPONENT_B_BIT,
15586 eA = VK_COLOR_COMPONENT_A_BIT
15587 };
15588
15589 using ColorComponentFlags = Flags<ColorComponentFlagBits, VkColorComponentFlags>;
15590
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015591 VULKAN_HPP_INLINE ColorComponentFlags operator|( ColorComponentFlagBits bit0, ColorComponentFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015592 {
15593 return ColorComponentFlags( bit0 ) | bit1;
15594 }
15595
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015596 VULKAN_HPP_INLINE ColorComponentFlags operator~( ColorComponentFlagBits bits )
15597 {
15598 return ~( ColorComponentFlags( bits ) );
15599 }
15600
15601 template <> struct FlagTraits<ColorComponentFlagBits>
15602 {
15603 enum
15604 {
15605 allFlags = VkFlags(ColorComponentFlagBits::eR) | VkFlags(ColorComponentFlagBits::eG) | VkFlags(ColorComponentFlagBits::eB) | VkFlags(ColorComponentFlagBits::eA)
15606 };
15607 };
15608
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015609 struct PipelineColorBlendAttachmentState
15610 {
15611 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() )
15612 : blendEnable( blendEnable_ )
15613 , srcColorBlendFactor( srcColorBlendFactor_ )
15614 , dstColorBlendFactor( dstColorBlendFactor_ )
15615 , colorBlendOp( colorBlendOp_ )
15616 , srcAlphaBlendFactor( srcAlphaBlendFactor_ )
15617 , dstAlphaBlendFactor( dstAlphaBlendFactor_ )
15618 , alphaBlendOp( alphaBlendOp_ )
15619 , colorWriteMask( colorWriteMask_ )
15620 {
15621 }
15622
15623 PipelineColorBlendAttachmentState( VkPipelineColorBlendAttachmentState const & rhs )
15624 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015625 memcpy( this, &rhs, sizeof( PipelineColorBlendAttachmentState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015626 }
15627
15628 PipelineColorBlendAttachmentState& operator=( VkPipelineColorBlendAttachmentState const & rhs )
15629 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015630 memcpy( this, &rhs, sizeof( PipelineColorBlendAttachmentState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015631 return *this;
15632 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015633 PipelineColorBlendAttachmentState& setBlendEnable( Bool32 blendEnable_ )
15634 {
15635 blendEnable = blendEnable_;
15636 return *this;
15637 }
15638
15639 PipelineColorBlendAttachmentState& setSrcColorBlendFactor( BlendFactor srcColorBlendFactor_ )
15640 {
15641 srcColorBlendFactor = srcColorBlendFactor_;
15642 return *this;
15643 }
15644
15645 PipelineColorBlendAttachmentState& setDstColorBlendFactor( BlendFactor dstColorBlendFactor_ )
15646 {
15647 dstColorBlendFactor = dstColorBlendFactor_;
15648 return *this;
15649 }
15650
15651 PipelineColorBlendAttachmentState& setColorBlendOp( BlendOp colorBlendOp_ )
15652 {
15653 colorBlendOp = colorBlendOp_;
15654 return *this;
15655 }
15656
15657 PipelineColorBlendAttachmentState& setSrcAlphaBlendFactor( BlendFactor srcAlphaBlendFactor_ )
15658 {
15659 srcAlphaBlendFactor = srcAlphaBlendFactor_;
15660 return *this;
15661 }
15662
15663 PipelineColorBlendAttachmentState& setDstAlphaBlendFactor( BlendFactor dstAlphaBlendFactor_ )
15664 {
15665 dstAlphaBlendFactor = dstAlphaBlendFactor_;
15666 return *this;
15667 }
15668
15669 PipelineColorBlendAttachmentState& setAlphaBlendOp( BlendOp alphaBlendOp_ )
15670 {
15671 alphaBlendOp = alphaBlendOp_;
15672 return *this;
15673 }
15674
15675 PipelineColorBlendAttachmentState& setColorWriteMask( ColorComponentFlags colorWriteMask_ )
15676 {
15677 colorWriteMask = colorWriteMask_;
15678 return *this;
15679 }
15680
15681 operator const VkPipelineColorBlendAttachmentState&() const
15682 {
15683 return *reinterpret_cast<const VkPipelineColorBlendAttachmentState*>(this);
15684 }
15685
15686 bool operator==( PipelineColorBlendAttachmentState const& rhs ) const
15687 {
15688 return ( blendEnable == rhs.blendEnable )
15689 && ( srcColorBlendFactor == rhs.srcColorBlendFactor )
15690 && ( dstColorBlendFactor == rhs.dstColorBlendFactor )
15691 && ( colorBlendOp == rhs.colorBlendOp )
15692 && ( srcAlphaBlendFactor == rhs.srcAlphaBlendFactor )
15693 && ( dstAlphaBlendFactor == rhs.dstAlphaBlendFactor )
15694 && ( alphaBlendOp == rhs.alphaBlendOp )
15695 && ( colorWriteMask == rhs.colorWriteMask );
15696 }
15697
15698 bool operator!=( PipelineColorBlendAttachmentState const& rhs ) const
15699 {
15700 return !operator==( rhs );
15701 }
15702
15703 Bool32 blendEnable;
15704 BlendFactor srcColorBlendFactor;
15705 BlendFactor dstColorBlendFactor;
15706 BlendOp colorBlendOp;
15707 BlendFactor srcAlphaBlendFactor;
15708 BlendFactor dstAlphaBlendFactor;
15709 BlendOp alphaBlendOp;
15710 ColorComponentFlags colorWriteMask;
15711 };
15712 static_assert( sizeof( PipelineColorBlendAttachmentState ) == sizeof( VkPipelineColorBlendAttachmentState ), "struct and wrapper have different size!" );
15713
15714 struct PipelineColorBlendStateCreateInfo
15715 {
15716 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 } } )
15717 : sType( StructureType::ePipelineColorBlendStateCreateInfo )
15718 , pNext( nullptr )
15719 , flags( flags_ )
15720 , logicOpEnable( logicOpEnable_ )
15721 , logicOp( logicOp_ )
15722 , attachmentCount( attachmentCount_ )
15723 , pAttachments( pAttachments_ )
15724 {
15725 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
15726 }
15727
15728 PipelineColorBlendStateCreateInfo( VkPipelineColorBlendStateCreateInfo const & rhs )
15729 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015730 memcpy( this, &rhs, sizeof( PipelineColorBlendStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015731 }
15732
15733 PipelineColorBlendStateCreateInfo& operator=( VkPipelineColorBlendStateCreateInfo const & rhs )
15734 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015735 memcpy( this, &rhs, sizeof( PipelineColorBlendStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015736 return *this;
15737 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015738 PipelineColorBlendStateCreateInfo& setPNext( const void* pNext_ )
15739 {
15740 pNext = pNext_;
15741 return *this;
15742 }
15743
15744 PipelineColorBlendStateCreateInfo& setFlags( PipelineColorBlendStateCreateFlags flags_ )
15745 {
15746 flags = flags_;
15747 return *this;
15748 }
15749
15750 PipelineColorBlendStateCreateInfo& setLogicOpEnable( Bool32 logicOpEnable_ )
15751 {
15752 logicOpEnable = logicOpEnable_;
15753 return *this;
15754 }
15755
15756 PipelineColorBlendStateCreateInfo& setLogicOp( LogicOp logicOp_ )
15757 {
15758 logicOp = logicOp_;
15759 return *this;
15760 }
15761
15762 PipelineColorBlendStateCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
15763 {
15764 attachmentCount = attachmentCount_;
15765 return *this;
15766 }
15767
15768 PipelineColorBlendStateCreateInfo& setPAttachments( const PipelineColorBlendAttachmentState* pAttachments_ )
15769 {
15770 pAttachments = pAttachments_;
15771 return *this;
15772 }
15773
15774 PipelineColorBlendStateCreateInfo& setBlendConstants( std::array<float,4> blendConstants_ )
15775 {
15776 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
15777 return *this;
15778 }
15779
15780 operator const VkPipelineColorBlendStateCreateInfo&() const
15781 {
15782 return *reinterpret_cast<const VkPipelineColorBlendStateCreateInfo*>(this);
15783 }
15784
15785 bool operator==( PipelineColorBlendStateCreateInfo const& rhs ) const
15786 {
15787 return ( sType == rhs.sType )
15788 && ( pNext == rhs.pNext )
15789 && ( flags == rhs.flags )
15790 && ( logicOpEnable == rhs.logicOpEnable )
15791 && ( logicOp == rhs.logicOp )
15792 && ( attachmentCount == rhs.attachmentCount )
15793 && ( pAttachments == rhs.pAttachments )
15794 && ( memcmp( blendConstants, rhs.blendConstants, 4 * sizeof( float ) ) == 0 );
15795 }
15796
15797 bool operator!=( PipelineColorBlendStateCreateInfo const& rhs ) const
15798 {
15799 return !operator==( rhs );
15800 }
15801
15802 private:
15803 StructureType sType;
15804
15805 public:
15806 const void* pNext;
15807 PipelineColorBlendStateCreateFlags flags;
15808 Bool32 logicOpEnable;
15809 LogicOp logicOp;
15810 uint32_t attachmentCount;
15811 const PipelineColorBlendAttachmentState* pAttachments;
15812 float blendConstants[4];
15813 };
15814 static_assert( sizeof( PipelineColorBlendStateCreateInfo ) == sizeof( VkPipelineColorBlendStateCreateInfo ), "struct and wrapper have different size!" );
15815
15816 enum class FenceCreateFlagBits
15817 {
15818 eSignaled = VK_FENCE_CREATE_SIGNALED_BIT
15819 };
15820
15821 using FenceCreateFlags = Flags<FenceCreateFlagBits, VkFenceCreateFlags>;
15822
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015823 VULKAN_HPP_INLINE FenceCreateFlags operator|( FenceCreateFlagBits bit0, FenceCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015824 {
15825 return FenceCreateFlags( bit0 ) | bit1;
15826 }
15827
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015828 VULKAN_HPP_INLINE FenceCreateFlags operator~( FenceCreateFlagBits bits )
15829 {
15830 return ~( FenceCreateFlags( bits ) );
15831 }
15832
15833 template <> struct FlagTraits<FenceCreateFlagBits>
15834 {
15835 enum
15836 {
15837 allFlags = VkFlags(FenceCreateFlagBits::eSignaled)
15838 };
15839 };
15840
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015841 struct FenceCreateInfo
15842 {
15843 FenceCreateInfo( FenceCreateFlags flags_ = FenceCreateFlags() )
15844 : sType( StructureType::eFenceCreateInfo )
15845 , pNext( nullptr )
15846 , flags( flags_ )
15847 {
15848 }
15849
15850 FenceCreateInfo( VkFenceCreateInfo const & rhs )
15851 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015852 memcpy( this, &rhs, sizeof( FenceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015853 }
15854
15855 FenceCreateInfo& operator=( VkFenceCreateInfo const & rhs )
15856 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015857 memcpy( this, &rhs, sizeof( FenceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015858 return *this;
15859 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015860 FenceCreateInfo& setPNext( const void* pNext_ )
15861 {
15862 pNext = pNext_;
15863 return *this;
15864 }
15865
15866 FenceCreateInfo& setFlags( FenceCreateFlags flags_ )
15867 {
15868 flags = flags_;
15869 return *this;
15870 }
15871
15872 operator const VkFenceCreateInfo&() const
15873 {
15874 return *reinterpret_cast<const VkFenceCreateInfo*>(this);
15875 }
15876
15877 bool operator==( FenceCreateInfo const& rhs ) const
15878 {
15879 return ( sType == rhs.sType )
15880 && ( pNext == rhs.pNext )
15881 && ( flags == rhs.flags );
15882 }
15883
15884 bool operator!=( FenceCreateInfo const& rhs ) const
15885 {
15886 return !operator==( rhs );
15887 }
15888
15889 private:
15890 StructureType sType;
15891
15892 public:
15893 const void* pNext;
15894 FenceCreateFlags flags;
15895 };
15896 static_assert( sizeof( FenceCreateInfo ) == sizeof( VkFenceCreateInfo ), "struct and wrapper have different size!" );
15897
15898 enum class FormatFeatureFlagBits
15899 {
15900 eSampledImage = VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
15901 eStorageImage = VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,
15902 eStorageImageAtomic = VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT,
15903 eUniformTexelBuffer = VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT,
15904 eStorageTexelBuffer = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,
15905 eStorageTexelBufferAtomic = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT,
15906 eVertexBuffer = VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,
15907 eColorAttachment = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,
15908 eColorAttachmentBlend = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
15909 eDepthStencilAttachment = VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,
15910 eBlitSrc = VK_FORMAT_FEATURE_BLIT_SRC_BIT,
15911 eBlitDst = VK_FORMAT_FEATURE_BLIT_DST_BIT,
15912 eSampledImageFilterLinear = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,
Mark Young39389872017-01-19 21:10:49 -070015913 eSampledImageFilterCubicIMG = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG,
15914 eTransferSrcKHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060015915 eTransferDstKHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR,
Lenny Komowb79f04a2017-09-18 17:07:00 -060015916 eSampledImageFilterMinmaxEXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT,
15917 eMidpointChromaSamplesKHR = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR,
15918 eSampledImageYcbcrConversionLinearFilterKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR,
15919 eSampledImageYcbcrConversionSeparateReconstructionFilterKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR,
15920 eSampledImageYcbcrConversionChromaReconstructionExplicitKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR,
15921 eSampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR,
15922 eDisjointKHR = VK_FORMAT_FEATURE_DISJOINT_BIT_KHR,
15923 eCositedChromaSamplesKHR = VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015924 };
15925
15926 using FormatFeatureFlags = Flags<FormatFeatureFlagBits, VkFormatFeatureFlags>;
15927
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015928 VULKAN_HPP_INLINE FormatFeatureFlags operator|( FormatFeatureFlagBits bit0, FormatFeatureFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015929 {
15930 return FormatFeatureFlags( bit0 ) | bit1;
15931 }
15932
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015933 VULKAN_HPP_INLINE FormatFeatureFlags operator~( FormatFeatureFlagBits bits )
15934 {
15935 return ~( FormatFeatureFlags( bits ) );
15936 }
15937
15938 template <> struct FlagTraits<FormatFeatureFlagBits>
15939 {
15940 enum
15941 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060015942 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 -070015943 };
15944 };
15945
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015946 struct FormatProperties
15947 {
15948 operator const VkFormatProperties&() const
15949 {
15950 return *reinterpret_cast<const VkFormatProperties*>(this);
15951 }
15952
15953 bool operator==( FormatProperties const& rhs ) const
15954 {
15955 return ( linearTilingFeatures == rhs.linearTilingFeatures )
15956 && ( optimalTilingFeatures == rhs.optimalTilingFeatures )
15957 && ( bufferFeatures == rhs.bufferFeatures );
15958 }
15959
15960 bool operator!=( FormatProperties const& rhs ) const
15961 {
15962 return !operator==( rhs );
15963 }
15964
15965 FormatFeatureFlags linearTilingFeatures;
15966 FormatFeatureFlags optimalTilingFeatures;
15967 FormatFeatureFlags bufferFeatures;
15968 };
15969 static_assert( sizeof( FormatProperties ) == sizeof( VkFormatProperties ), "struct and wrapper have different size!" );
15970
Mark Young39389872017-01-19 21:10:49 -070015971 struct FormatProperties2KHR
15972 {
15973 operator const VkFormatProperties2KHR&() const
15974 {
15975 return *reinterpret_cast<const VkFormatProperties2KHR*>(this);
15976 }
15977
15978 bool operator==( FormatProperties2KHR const& rhs ) const
15979 {
15980 return ( sType == rhs.sType )
15981 && ( pNext == rhs.pNext )
15982 && ( formatProperties == rhs.formatProperties );
15983 }
15984
15985 bool operator!=( FormatProperties2KHR const& rhs ) const
15986 {
15987 return !operator==( rhs );
15988 }
15989
15990 private:
15991 StructureType sType;
15992
15993 public:
15994 void* pNext;
15995 FormatProperties formatProperties;
15996 };
15997 static_assert( sizeof( FormatProperties2KHR ) == sizeof( VkFormatProperties2KHR ), "struct and wrapper have different size!" );
15998
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015999 enum class QueryControlFlagBits
16000 {
16001 ePrecise = VK_QUERY_CONTROL_PRECISE_BIT
16002 };
16003
16004 using QueryControlFlags = Flags<QueryControlFlagBits, VkQueryControlFlags>;
16005
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016006 VULKAN_HPP_INLINE QueryControlFlags operator|( QueryControlFlagBits bit0, QueryControlFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016007 {
16008 return QueryControlFlags( bit0 ) | bit1;
16009 }
16010
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016011 VULKAN_HPP_INLINE QueryControlFlags operator~( QueryControlFlagBits bits )
16012 {
16013 return ~( QueryControlFlags( bits ) );
16014 }
16015
16016 template <> struct FlagTraits<QueryControlFlagBits>
16017 {
16018 enum
16019 {
16020 allFlags = VkFlags(QueryControlFlagBits::ePrecise)
16021 };
16022 };
16023
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016024 enum class QueryResultFlagBits
16025 {
16026 e64 = VK_QUERY_RESULT_64_BIT,
16027 eWait = VK_QUERY_RESULT_WAIT_BIT,
16028 eWithAvailability = VK_QUERY_RESULT_WITH_AVAILABILITY_BIT,
16029 ePartial = VK_QUERY_RESULT_PARTIAL_BIT
16030 };
16031
16032 using QueryResultFlags = Flags<QueryResultFlagBits, VkQueryResultFlags>;
16033
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016034 VULKAN_HPP_INLINE QueryResultFlags operator|( QueryResultFlagBits bit0, QueryResultFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016035 {
16036 return QueryResultFlags( bit0 ) | bit1;
16037 }
16038
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016039 VULKAN_HPP_INLINE QueryResultFlags operator~( QueryResultFlagBits bits )
16040 {
16041 return ~( QueryResultFlags( bits ) );
16042 }
16043
16044 template <> struct FlagTraits<QueryResultFlagBits>
16045 {
16046 enum
16047 {
16048 allFlags = VkFlags(QueryResultFlagBits::e64) | VkFlags(QueryResultFlagBits::eWait) | VkFlags(QueryResultFlagBits::eWithAvailability) | VkFlags(QueryResultFlagBits::ePartial)
16049 };
16050 };
16051
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016052 enum class CommandBufferUsageFlagBits
16053 {
16054 eOneTimeSubmit = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,
16055 eRenderPassContinue = VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT,
16056 eSimultaneousUse = VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
16057 };
16058
16059 using CommandBufferUsageFlags = Flags<CommandBufferUsageFlagBits, VkCommandBufferUsageFlags>;
16060
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016061 VULKAN_HPP_INLINE CommandBufferUsageFlags operator|( CommandBufferUsageFlagBits bit0, CommandBufferUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016062 {
16063 return CommandBufferUsageFlags( bit0 ) | bit1;
16064 }
16065
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016066 VULKAN_HPP_INLINE CommandBufferUsageFlags operator~( CommandBufferUsageFlagBits bits )
16067 {
16068 return ~( CommandBufferUsageFlags( bits ) );
16069 }
16070
16071 template <> struct FlagTraits<CommandBufferUsageFlagBits>
16072 {
16073 enum
16074 {
16075 allFlags = VkFlags(CommandBufferUsageFlagBits::eOneTimeSubmit) | VkFlags(CommandBufferUsageFlagBits::eRenderPassContinue) | VkFlags(CommandBufferUsageFlagBits::eSimultaneousUse)
16076 };
16077 };
16078
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016079 enum class QueryPipelineStatisticFlagBits
16080 {
16081 eInputAssemblyVertices = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT,
16082 eInputAssemblyPrimitives = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT,
16083 eVertexShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT,
16084 eGeometryShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT,
16085 eGeometryShaderPrimitives = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT,
16086 eClippingInvocations = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT,
16087 eClippingPrimitives = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT,
16088 eFragmentShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT,
16089 eTessellationControlShaderPatches = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT,
16090 eTessellationEvaluationShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT,
16091 eComputeShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT
16092 };
16093
16094 using QueryPipelineStatisticFlags = Flags<QueryPipelineStatisticFlagBits, VkQueryPipelineStatisticFlags>;
16095
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016096 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator|( QueryPipelineStatisticFlagBits bit0, QueryPipelineStatisticFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016097 {
16098 return QueryPipelineStatisticFlags( bit0 ) | bit1;
16099 }
16100
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016101 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator~( QueryPipelineStatisticFlagBits bits )
16102 {
16103 return ~( QueryPipelineStatisticFlags( bits ) );
16104 }
16105
16106 template <> struct FlagTraits<QueryPipelineStatisticFlagBits>
16107 {
16108 enum
16109 {
16110 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)
16111 };
16112 };
16113
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016114 struct CommandBufferInheritanceInfo
16115 {
16116 CommandBufferInheritanceInfo( RenderPass renderPass_ = RenderPass(), uint32_t subpass_ = 0, Framebuffer framebuffer_ = Framebuffer(), Bool32 occlusionQueryEnable_ = 0, QueryControlFlags queryFlags_ = QueryControlFlags(), QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
16117 : sType( StructureType::eCommandBufferInheritanceInfo )
16118 , pNext( nullptr )
16119 , renderPass( renderPass_ )
16120 , subpass( subpass_ )
16121 , framebuffer( framebuffer_ )
16122 , occlusionQueryEnable( occlusionQueryEnable_ )
16123 , queryFlags( queryFlags_ )
16124 , pipelineStatistics( pipelineStatistics_ )
16125 {
16126 }
16127
16128 CommandBufferInheritanceInfo( VkCommandBufferInheritanceInfo const & rhs )
16129 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016130 memcpy( this, &rhs, sizeof( CommandBufferInheritanceInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016131 }
16132
16133 CommandBufferInheritanceInfo& operator=( VkCommandBufferInheritanceInfo const & rhs )
16134 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016135 memcpy( this, &rhs, sizeof( CommandBufferInheritanceInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016136 return *this;
16137 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016138 CommandBufferInheritanceInfo& setPNext( const void* pNext_ )
16139 {
16140 pNext = pNext_;
16141 return *this;
16142 }
16143
16144 CommandBufferInheritanceInfo& setRenderPass( RenderPass renderPass_ )
16145 {
16146 renderPass = renderPass_;
16147 return *this;
16148 }
16149
16150 CommandBufferInheritanceInfo& setSubpass( uint32_t subpass_ )
16151 {
16152 subpass = subpass_;
16153 return *this;
16154 }
16155
16156 CommandBufferInheritanceInfo& setFramebuffer( Framebuffer framebuffer_ )
16157 {
16158 framebuffer = framebuffer_;
16159 return *this;
16160 }
16161
16162 CommandBufferInheritanceInfo& setOcclusionQueryEnable( Bool32 occlusionQueryEnable_ )
16163 {
16164 occlusionQueryEnable = occlusionQueryEnable_;
16165 return *this;
16166 }
16167
16168 CommandBufferInheritanceInfo& setQueryFlags( QueryControlFlags queryFlags_ )
16169 {
16170 queryFlags = queryFlags_;
16171 return *this;
16172 }
16173
16174 CommandBufferInheritanceInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
16175 {
16176 pipelineStatistics = pipelineStatistics_;
16177 return *this;
16178 }
16179
16180 operator const VkCommandBufferInheritanceInfo&() const
16181 {
16182 return *reinterpret_cast<const VkCommandBufferInheritanceInfo*>(this);
16183 }
16184
16185 bool operator==( CommandBufferInheritanceInfo const& rhs ) const
16186 {
16187 return ( sType == rhs.sType )
16188 && ( pNext == rhs.pNext )
16189 && ( renderPass == rhs.renderPass )
16190 && ( subpass == rhs.subpass )
16191 && ( framebuffer == rhs.framebuffer )
16192 && ( occlusionQueryEnable == rhs.occlusionQueryEnable )
16193 && ( queryFlags == rhs.queryFlags )
16194 && ( pipelineStatistics == rhs.pipelineStatistics );
16195 }
16196
16197 bool operator!=( CommandBufferInheritanceInfo const& rhs ) const
16198 {
16199 return !operator==( rhs );
16200 }
16201
16202 private:
16203 StructureType sType;
16204
16205 public:
16206 const void* pNext;
16207 RenderPass renderPass;
16208 uint32_t subpass;
16209 Framebuffer framebuffer;
16210 Bool32 occlusionQueryEnable;
16211 QueryControlFlags queryFlags;
16212 QueryPipelineStatisticFlags pipelineStatistics;
16213 };
16214 static_assert( sizeof( CommandBufferInheritanceInfo ) == sizeof( VkCommandBufferInheritanceInfo ), "struct and wrapper have different size!" );
16215
16216 struct CommandBufferBeginInfo
16217 {
16218 CommandBufferBeginInfo( CommandBufferUsageFlags flags_ = CommandBufferUsageFlags(), const CommandBufferInheritanceInfo* pInheritanceInfo_ = nullptr )
16219 : sType( StructureType::eCommandBufferBeginInfo )
16220 , pNext( nullptr )
16221 , flags( flags_ )
16222 , pInheritanceInfo( pInheritanceInfo_ )
16223 {
16224 }
16225
16226 CommandBufferBeginInfo( VkCommandBufferBeginInfo const & rhs )
16227 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016228 memcpy( this, &rhs, sizeof( CommandBufferBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016229 }
16230
16231 CommandBufferBeginInfo& operator=( VkCommandBufferBeginInfo const & rhs )
16232 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016233 memcpy( this, &rhs, sizeof( CommandBufferBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016234 return *this;
16235 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016236 CommandBufferBeginInfo& setPNext( const void* pNext_ )
16237 {
16238 pNext = pNext_;
16239 return *this;
16240 }
16241
16242 CommandBufferBeginInfo& setFlags( CommandBufferUsageFlags flags_ )
16243 {
16244 flags = flags_;
16245 return *this;
16246 }
16247
16248 CommandBufferBeginInfo& setPInheritanceInfo( const CommandBufferInheritanceInfo* pInheritanceInfo_ )
16249 {
16250 pInheritanceInfo = pInheritanceInfo_;
16251 return *this;
16252 }
16253
16254 operator const VkCommandBufferBeginInfo&() const
16255 {
16256 return *reinterpret_cast<const VkCommandBufferBeginInfo*>(this);
16257 }
16258
16259 bool operator==( CommandBufferBeginInfo const& rhs ) const
16260 {
16261 return ( sType == rhs.sType )
16262 && ( pNext == rhs.pNext )
16263 && ( flags == rhs.flags )
16264 && ( pInheritanceInfo == rhs.pInheritanceInfo );
16265 }
16266
16267 bool operator!=( CommandBufferBeginInfo const& rhs ) const
16268 {
16269 return !operator==( rhs );
16270 }
16271
16272 private:
16273 StructureType sType;
16274
16275 public:
16276 const void* pNext;
16277 CommandBufferUsageFlags flags;
16278 const CommandBufferInheritanceInfo* pInheritanceInfo;
16279 };
16280 static_assert( sizeof( CommandBufferBeginInfo ) == sizeof( VkCommandBufferBeginInfo ), "struct and wrapper have different size!" );
16281
16282 struct QueryPoolCreateInfo
16283 {
16284 QueryPoolCreateInfo( QueryPoolCreateFlags flags_ = QueryPoolCreateFlags(), QueryType queryType_ = QueryType::eOcclusion, uint32_t queryCount_ = 0, QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
16285 : sType( StructureType::eQueryPoolCreateInfo )
16286 , pNext( nullptr )
16287 , flags( flags_ )
16288 , queryType( queryType_ )
16289 , queryCount( queryCount_ )
16290 , pipelineStatistics( pipelineStatistics_ )
16291 {
16292 }
16293
16294 QueryPoolCreateInfo( VkQueryPoolCreateInfo const & rhs )
16295 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016296 memcpy( this, &rhs, sizeof( QueryPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016297 }
16298
16299 QueryPoolCreateInfo& operator=( VkQueryPoolCreateInfo const & rhs )
16300 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016301 memcpy( this, &rhs, sizeof( QueryPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016302 return *this;
16303 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016304 QueryPoolCreateInfo& setPNext( const void* pNext_ )
16305 {
16306 pNext = pNext_;
16307 return *this;
16308 }
16309
16310 QueryPoolCreateInfo& setFlags( QueryPoolCreateFlags flags_ )
16311 {
16312 flags = flags_;
16313 return *this;
16314 }
16315
16316 QueryPoolCreateInfo& setQueryType( QueryType queryType_ )
16317 {
16318 queryType = queryType_;
16319 return *this;
16320 }
16321
16322 QueryPoolCreateInfo& setQueryCount( uint32_t queryCount_ )
16323 {
16324 queryCount = queryCount_;
16325 return *this;
16326 }
16327
16328 QueryPoolCreateInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
16329 {
16330 pipelineStatistics = pipelineStatistics_;
16331 return *this;
16332 }
16333
16334 operator const VkQueryPoolCreateInfo&() const
16335 {
16336 return *reinterpret_cast<const VkQueryPoolCreateInfo*>(this);
16337 }
16338
16339 bool operator==( QueryPoolCreateInfo const& rhs ) const
16340 {
16341 return ( sType == rhs.sType )
16342 && ( pNext == rhs.pNext )
16343 && ( flags == rhs.flags )
16344 && ( queryType == rhs.queryType )
16345 && ( queryCount == rhs.queryCount )
16346 && ( pipelineStatistics == rhs.pipelineStatistics );
16347 }
16348
16349 bool operator!=( QueryPoolCreateInfo const& rhs ) const
16350 {
16351 return !operator==( rhs );
16352 }
16353
16354 private:
16355 StructureType sType;
16356
16357 public:
16358 const void* pNext;
16359 QueryPoolCreateFlags flags;
16360 QueryType queryType;
16361 uint32_t queryCount;
16362 QueryPipelineStatisticFlags pipelineStatistics;
16363 };
16364 static_assert( sizeof( QueryPoolCreateInfo ) == sizeof( VkQueryPoolCreateInfo ), "struct and wrapper have different size!" );
16365
16366 enum class ImageAspectFlagBits
16367 {
16368 eColor = VK_IMAGE_ASPECT_COLOR_BIT,
16369 eDepth = VK_IMAGE_ASPECT_DEPTH_BIT,
16370 eStencil = VK_IMAGE_ASPECT_STENCIL_BIT,
Lenny Komowb79f04a2017-09-18 17:07:00 -060016371 eMetadata = VK_IMAGE_ASPECT_METADATA_BIT,
16372 ePlane0KHR = VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
16373 ePlane1KHR = VK_IMAGE_ASPECT_PLANE_1_BIT_KHR,
16374 ePlane2KHR = VK_IMAGE_ASPECT_PLANE_2_BIT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016375 };
16376
16377 using ImageAspectFlags = Flags<ImageAspectFlagBits, VkImageAspectFlags>;
16378
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016379 VULKAN_HPP_INLINE ImageAspectFlags operator|( ImageAspectFlagBits bit0, ImageAspectFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016380 {
16381 return ImageAspectFlags( bit0 ) | bit1;
16382 }
16383
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016384 VULKAN_HPP_INLINE ImageAspectFlags operator~( ImageAspectFlagBits bits )
16385 {
16386 return ~( ImageAspectFlags( bits ) );
16387 }
16388
16389 template <> struct FlagTraits<ImageAspectFlagBits>
16390 {
16391 enum
16392 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060016393 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 -070016394 };
16395 };
16396
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016397 struct ImageSubresource
16398 {
16399 ImageSubresource( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t mipLevel_ = 0, uint32_t arrayLayer_ = 0 )
16400 : aspectMask( aspectMask_ )
16401 , mipLevel( mipLevel_ )
16402 , arrayLayer( arrayLayer_ )
16403 {
16404 }
16405
16406 ImageSubresource( VkImageSubresource const & rhs )
16407 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016408 memcpy( this, &rhs, sizeof( ImageSubresource ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016409 }
16410
16411 ImageSubresource& operator=( VkImageSubresource const & rhs )
16412 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016413 memcpy( this, &rhs, sizeof( ImageSubresource ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016414 return *this;
16415 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016416 ImageSubresource& setAspectMask( ImageAspectFlags aspectMask_ )
16417 {
16418 aspectMask = aspectMask_;
16419 return *this;
16420 }
16421
16422 ImageSubresource& setMipLevel( uint32_t mipLevel_ )
16423 {
16424 mipLevel = mipLevel_;
16425 return *this;
16426 }
16427
16428 ImageSubresource& setArrayLayer( uint32_t arrayLayer_ )
16429 {
16430 arrayLayer = arrayLayer_;
16431 return *this;
16432 }
16433
16434 operator const VkImageSubresource&() const
16435 {
16436 return *reinterpret_cast<const VkImageSubresource*>(this);
16437 }
16438
16439 bool operator==( ImageSubresource const& rhs ) const
16440 {
16441 return ( aspectMask == rhs.aspectMask )
16442 && ( mipLevel == rhs.mipLevel )
16443 && ( arrayLayer == rhs.arrayLayer );
16444 }
16445
16446 bool operator!=( ImageSubresource const& rhs ) const
16447 {
16448 return !operator==( rhs );
16449 }
16450
16451 ImageAspectFlags aspectMask;
16452 uint32_t mipLevel;
16453 uint32_t arrayLayer;
16454 };
16455 static_assert( sizeof( ImageSubresource ) == sizeof( VkImageSubresource ), "struct and wrapper have different size!" );
16456
16457 struct ImageSubresourceLayers
16458 {
16459 ImageSubresourceLayers( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t mipLevel_ = 0, uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
16460 : aspectMask( aspectMask_ )
16461 , mipLevel( mipLevel_ )
16462 , baseArrayLayer( baseArrayLayer_ )
16463 , layerCount( layerCount_ )
16464 {
16465 }
16466
16467 ImageSubresourceLayers( VkImageSubresourceLayers const & rhs )
16468 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016469 memcpy( this, &rhs, sizeof( ImageSubresourceLayers ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016470 }
16471
16472 ImageSubresourceLayers& operator=( VkImageSubresourceLayers const & rhs )
16473 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016474 memcpy( this, &rhs, sizeof( ImageSubresourceLayers ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016475 return *this;
16476 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016477 ImageSubresourceLayers& setAspectMask( ImageAspectFlags aspectMask_ )
16478 {
16479 aspectMask = aspectMask_;
16480 return *this;
16481 }
16482
16483 ImageSubresourceLayers& setMipLevel( uint32_t mipLevel_ )
16484 {
16485 mipLevel = mipLevel_;
16486 return *this;
16487 }
16488
16489 ImageSubresourceLayers& setBaseArrayLayer( uint32_t baseArrayLayer_ )
16490 {
16491 baseArrayLayer = baseArrayLayer_;
16492 return *this;
16493 }
16494
16495 ImageSubresourceLayers& setLayerCount( uint32_t layerCount_ )
16496 {
16497 layerCount = layerCount_;
16498 return *this;
16499 }
16500
16501 operator const VkImageSubresourceLayers&() const
16502 {
16503 return *reinterpret_cast<const VkImageSubresourceLayers*>(this);
16504 }
16505
16506 bool operator==( ImageSubresourceLayers const& rhs ) const
16507 {
16508 return ( aspectMask == rhs.aspectMask )
16509 && ( mipLevel == rhs.mipLevel )
16510 && ( baseArrayLayer == rhs.baseArrayLayer )
16511 && ( layerCount == rhs.layerCount );
16512 }
16513
16514 bool operator!=( ImageSubresourceLayers const& rhs ) const
16515 {
16516 return !operator==( rhs );
16517 }
16518
16519 ImageAspectFlags aspectMask;
16520 uint32_t mipLevel;
16521 uint32_t baseArrayLayer;
16522 uint32_t layerCount;
16523 };
16524 static_assert( sizeof( ImageSubresourceLayers ) == sizeof( VkImageSubresourceLayers ), "struct and wrapper have different size!" );
16525
16526 struct ImageSubresourceRange
16527 {
16528 ImageSubresourceRange( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t baseMipLevel_ = 0, uint32_t levelCount_ = 0, uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
16529 : aspectMask( aspectMask_ )
16530 , baseMipLevel( baseMipLevel_ )
16531 , levelCount( levelCount_ )
16532 , baseArrayLayer( baseArrayLayer_ )
16533 , layerCount( layerCount_ )
16534 {
16535 }
16536
16537 ImageSubresourceRange( VkImageSubresourceRange const & rhs )
16538 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016539 memcpy( this, &rhs, sizeof( ImageSubresourceRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016540 }
16541
16542 ImageSubresourceRange& operator=( VkImageSubresourceRange const & rhs )
16543 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016544 memcpy( this, &rhs, sizeof( ImageSubresourceRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016545 return *this;
16546 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016547 ImageSubresourceRange& setAspectMask( ImageAspectFlags aspectMask_ )
16548 {
16549 aspectMask = aspectMask_;
16550 return *this;
16551 }
16552
16553 ImageSubresourceRange& setBaseMipLevel( uint32_t baseMipLevel_ )
16554 {
16555 baseMipLevel = baseMipLevel_;
16556 return *this;
16557 }
16558
16559 ImageSubresourceRange& setLevelCount( uint32_t levelCount_ )
16560 {
16561 levelCount = levelCount_;
16562 return *this;
16563 }
16564
16565 ImageSubresourceRange& setBaseArrayLayer( uint32_t baseArrayLayer_ )
16566 {
16567 baseArrayLayer = baseArrayLayer_;
16568 return *this;
16569 }
16570
16571 ImageSubresourceRange& setLayerCount( uint32_t layerCount_ )
16572 {
16573 layerCount = layerCount_;
16574 return *this;
16575 }
16576
16577 operator const VkImageSubresourceRange&() const
16578 {
16579 return *reinterpret_cast<const VkImageSubresourceRange*>(this);
16580 }
16581
16582 bool operator==( ImageSubresourceRange const& rhs ) const
16583 {
16584 return ( aspectMask == rhs.aspectMask )
16585 && ( baseMipLevel == rhs.baseMipLevel )
16586 && ( levelCount == rhs.levelCount )
16587 && ( baseArrayLayer == rhs.baseArrayLayer )
16588 && ( layerCount == rhs.layerCount );
16589 }
16590
16591 bool operator!=( ImageSubresourceRange const& rhs ) const
16592 {
16593 return !operator==( rhs );
16594 }
16595
16596 ImageAspectFlags aspectMask;
16597 uint32_t baseMipLevel;
16598 uint32_t levelCount;
16599 uint32_t baseArrayLayer;
16600 uint32_t layerCount;
16601 };
16602 static_assert( sizeof( ImageSubresourceRange ) == sizeof( VkImageSubresourceRange ), "struct and wrapper have different size!" );
16603
16604 struct ImageMemoryBarrier
16605 {
16606 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() )
16607 : sType( StructureType::eImageMemoryBarrier )
16608 , pNext( nullptr )
16609 , srcAccessMask( srcAccessMask_ )
16610 , dstAccessMask( dstAccessMask_ )
16611 , oldLayout( oldLayout_ )
16612 , newLayout( newLayout_ )
16613 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
16614 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
16615 , image( image_ )
16616 , subresourceRange( subresourceRange_ )
16617 {
16618 }
16619
16620 ImageMemoryBarrier( VkImageMemoryBarrier const & rhs )
16621 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016622 memcpy( this, &rhs, sizeof( ImageMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016623 }
16624
16625 ImageMemoryBarrier& operator=( VkImageMemoryBarrier const & rhs )
16626 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016627 memcpy( this, &rhs, sizeof( ImageMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016628 return *this;
16629 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016630 ImageMemoryBarrier& setPNext( const void* pNext_ )
16631 {
16632 pNext = pNext_;
16633 return *this;
16634 }
16635
16636 ImageMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
16637 {
16638 srcAccessMask = srcAccessMask_;
16639 return *this;
16640 }
16641
16642 ImageMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
16643 {
16644 dstAccessMask = dstAccessMask_;
16645 return *this;
16646 }
16647
16648 ImageMemoryBarrier& setOldLayout( ImageLayout oldLayout_ )
16649 {
16650 oldLayout = oldLayout_;
16651 return *this;
16652 }
16653
16654 ImageMemoryBarrier& setNewLayout( ImageLayout newLayout_ )
16655 {
16656 newLayout = newLayout_;
16657 return *this;
16658 }
16659
16660 ImageMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
16661 {
16662 srcQueueFamilyIndex = srcQueueFamilyIndex_;
16663 return *this;
16664 }
16665
16666 ImageMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
16667 {
16668 dstQueueFamilyIndex = dstQueueFamilyIndex_;
16669 return *this;
16670 }
16671
16672 ImageMemoryBarrier& setImage( Image image_ )
16673 {
16674 image = image_;
16675 return *this;
16676 }
16677
16678 ImageMemoryBarrier& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
16679 {
16680 subresourceRange = subresourceRange_;
16681 return *this;
16682 }
16683
16684 operator const VkImageMemoryBarrier&() const
16685 {
16686 return *reinterpret_cast<const VkImageMemoryBarrier*>(this);
16687 }
16688
16689 bool operator==( ImageMemoryBarrier const& rhs ) const
16690 {
16691 return ( sType == rhs.sType )
16692 && ( pNext == rhs.pNext )
16693 && ( srcAccessMask == rhs.srcAccessMask )
16694 && ( dstAccessMask == rhs.dstAccessMask )
16695 && ( oldLayout == rhs.oldLayout )
16696 && ( newLayout == rhs.newLayout )
16697 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
16698 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
16699 && ( image == rhs.image )
16700 && ( subresourceRange == rhs.subresourceRange );
16701 }
16702
16703 bool operator!=( ImageMemoryBarrier const& rhs ) const
16704 {
16705 return !operator==( rhs );
16706 }
16707
16708 private:
16709 StructureType sType;
16710
16711 public:
16712 const void* pNext;
16713 AccessFlags srcAccessMask;
16714 AccessFlags dstAccessMask;
16715 ImageLayout oldLayout;
16716 ImageLayout newLayout;
16717 uint32_t srcQueueFamilyIndex;
16718 uint32_t dstQueueFamilyIndex;
16719 Image image;
16720 ImageSubresourceRange subresourceRange;
16721 };
16722 static_assert( sizeof( ImageMemoryBarrier ) == sizeof( VkImageMemoryBarrier ), "struct and wrapper have different size!" );
16723
16724 struct ImageViewCreateInfo
16725 {
16726 ImageViewCreateInfo( ImageViewCreateFlags flags_ = ImageViewCreateFlags(), Image image_ = Image(), ImageViewType viewType_ = ImageViewType::e1D, Format format_ = Format::eUndefined, ComponentMapping components_ = ComponentMapping(), ImageSubresourceRange subresourceRange_ = ImageSubresourceRange() )
16727 : sType( StructureType::eImageViewCreateInfo )
16728 , pNext( nullptr )
16729 , flags( flags_ )
16730 , image( image_ )
16731 , viewType( viewType_ )
16732 , format( format_ )
16733 , components( components_ )
16734 , subresourceRange( subresourceRange_ )
16735 {
16736 }
16737
16738 ImageViewCreateInfo( VkImageViewCreateInfo const & rhs )
16739 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016740 memcpy( this, &rhs, sizeof( ImageViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016741 }
16742
16743 ImageViewCreateInfo& operator=( VkImageViewCreateInfo const & rhs )
16744 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016745 memcpy( this, &rhs, sizeof( ImageViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016746 return *this;
16747 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016748 ImageViewCreateInfo& setPNext( const void* pNext_ )
16749 {
16750 pNext = pNext_;
16751 return *this;
16752 }
16753
16754 ImageViewCreateInfo& setFlags( ImageViewCreateFlags flags_ )
16755 {
16756 flags = flags_;
16757 return *this;
16758 }
16759
16760 ImageViewCreateInfo& setImage( Image image_ )
16761 {
16762 image = image_;
16763 return *this;
16764 }
16765
16766 ImageViewCreateInfo& setViewType( ImageViewType viewType_ )
16767 {
16768 viewType = viewType_;
16769 return *this;
16770 }
16771
16772 ImageViewCreateInfo& setFormat( Format format_ )
16773 {
16774 format = format_;
16775 return *this;
16776 }
16777
16778 ImageViewCreateInfo& setComponents( ComponentMapping components_ )
16779 {
16780 components = components_;
16781 return *this;
16782 }
16783
16784 ImageViewCreateInfo& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
16785 {
16786 subresourceRange = subresourceRange_;
16787 return *this;
16788 }
16789
16790 operator const VkImageViewCreateInfo&() const
16791 {
16792 return *reinterpret_cast<const VkImageViewCreateInfo*>(this);
16793 }
16794
16795 bool operator==( ImageViewCreateInfo const& rhs ) const
16796 {
16797 return ( sType == rhs.sType )
16798 && ( pNext == rhs.pNext )
16799 && ( flags == rhs.flags )
16800 && ( image == rhs.image )
16801 && ( viewType == rhs.viewType )
16802 && ( format == rhs.format )
16803 && ( components == rhs.components )
16804 && ( subresourceRange == rhs.subresourceRange );
16805 }
16806
16807 bool operator!=( ImageViewCreateInfo const& rhs ) const
16808 {
16809 return !operator==( rhs );
16810 }
16811
16812 private:
16813 StructureType sType;
16814
16815 public:
16816 const void* pNext;
16817 ImageViewCreateFlags flags;
16818 Image image;
16819 ImageViewType viewType;
16820 Format format;
16821 ComponentMapping components;
16822 ImageSubresourceRange subresourceRange;
16823 };
16824 static_assert( sizeof( ImageViewCreateInfo ) == sizeof( VkImageViewCreateInfo ), "struct and wrapper have different size!" );
16825
16826 struct ImageCopy
16827 {
16828 ImageCopy( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), Offset3D srcOffset_ = Offset3D(), ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), Offset3D dstOffset_ = Offset3D(), Extent3D extent_ = Extent3D() )
16829 : srcSubresource( srcSubresource_ )
16830 , srcOffset( srcOffset_ )
16831 , dstSubresource( dstSubresource_ )
16832 , dstOffset( dstOffset_ )
16833 , extent( extent_ )
16834 {
16835 }
16836
16837 ImageCopy( VkImageCopy const & rhs )
16838 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016839 memcpy( this, &rhs, sizeof( ImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016840 }
16841
16842 ImageCopy& operator=( VkImageCopy const & rhs )
16843 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016844 memcpy( this, &rhs, sizeof( ImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016845 return *this;
16846 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016847 ImageCopy& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
16848 {
16849 srcSubresource = srcSubresource_;
16850 return *this;
16851 }
16852
16853 ImageCopy& setSrcOffset( Offset3D srcOffset_ )
16854 {
16855 srcOffset = srcOffset_;
16856 return *this;
16857 }
16858
16859 ImageCopy& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
16860 {
16861 dstSubresource = dstSubresource_;
16862 return *this;
16863 }
16864
16865 ImageCopy& setDstOffset( Offset3D dstOffset_ )
16866 {
16867 dstOffset = dstOffset_;
16868 return *this;
16869 }
16870
16871 ImageCopy& setExtent( Extent3D extent_ )
16872 {
16873 extent = extent_;
16874 return *this;
16875 }
16876
16877 operator const VkImageCopy&() const
16878 {
16879 return *reinterpret_cast<const VkImageCopy*>(this);
16880 }
16881
16882 bool operator==( ImageCopy const& rhs ) const
16883 {
16884 return ( srcSubresource == rhs.srcSubresource )
16885 && ( srcOffset == rhs.srcOffset )
16886 && ( dstSubresource == rhs.dstSubresource )
16887 && ( dstOffset == rhs.dstOffset )
16888 && ( extent == rhs.extent );
16889 }
16890
16891 bool operator!=( ImageCopy const& rhs ) const
16892 {
16893 return !operator==( rhs );
16894 }
16895
16896 ImageSubresourceLayers srcSubresource;
16897 Offset3D srcOffset;
16898 ImageSubresourceLayers dstSubresource;
16899 Offset3D dstOffset;
16900 Extent3D extent;
16901 };
16902 static_assert( sizeof( ImageCopy ) == sizeof( VkImageCopy ), "struct and wrapper have different size!" );
16903
16904 struct ImageBlit
16905 {
16906 ImageBlit( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), std::array<Offset3D,2> const& srcOffsets_ = { { Offset3D(), Offset3D() } }, ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), std::array<Offset3D,2> const& dstOffsets_ = { { Offset3D(), Offset3D() } } )
16907 : srcSubresource( srcSubresource_ )
16908 , dstSubresource( dstSubresource_ )
16909 {
16910 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
16911 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
16912 }
16913
16914 ImageBlit( VkImageBlit const & rhs )
16915 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016916 memcpy( this, &rhs, sizeof( ImageBlit ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016917 }
16918
16919 ImageBlit& operator=( VkImageBlit const & rhs )
16920 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016921 memcpy( this, &rhs, sizeof( ImageBlit ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016922 return *this;
16923 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016924 ImageBlit& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
16925 {
16926 srcSubresource = srcSubresource_;
16927 return *this;
16928 }
16929
16930 ImageBlit& setSrcOffsets( std::array<Offset3D,2> srcOffsets_ )
16931 {
16932 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
16933 return *this;
16934 }
16935
16936 ImageBlit& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
16937 {
16938 dstSubresource = dstSubresource_;
16939 return *this;
16940 }
16941
16942 ImageBlit& setDstOffsets( std::array<Offset3D,2> dstOffsets_ )
16943 {
16944 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
16945 return *this;
16946 }
16947
16948 operator const VkImageBlit&() const
16949 {
16950 return *reinterpret_cast<const VkImageBlit*>(this);
16951 }
16952
16953 bool operator==( ImageBlit const& rhs ) const
16954 {
16955 return ( srcSubresource == rhs.srcSubresource )
16956 && ( memcmp( srcOffsets, rhs.srcOffsets, 2 * sizeof( Offset3D ) ) == 0 )
16957 && ( dstSubresource == rhs.dstSubresource )
16958 && ( memcmp( dstOffsets, rhs.dstOffsets, 2 * sizeof( Offset3D ) ) == 0 );
16959 }
16960
16961 bool operator!=( ImageBlit const& rhs ) const
16962 {
16963 return !operator==( rhs );
16964 }
16965
16966 ImageSubresourceLayers srcSubresource;
16967 Offset3D srcOffsets[2];
16968 ImageSubresourceLayers dstSubresource;
16969 Offset3D dstOffsets[2];
16970 };
16971 static_assert( sizeof( ImageBlit ) == sizeof( VkImageBlit ), "struct and wrapper have different size!" );
16972
16973 struct BufferImageCopy
16974 {
16975 BufferImageCopy( DeviceSize bufferOffset_ = 0, uint32_t bufferRowLength_ = 0, uint32_t bufferImageHeight_ = 0, ImageSubresourceLayers imageSubresource_ = ImageSubresourceLayers(), Offset3D imageOffset_ = Offset3D(), Extent3D imageExtent_ = Extent3D() )
16976 : bufferOffset( bufferOffset_ )
16977 , bufferRowLength( bufferRowLength_ )
16978 , bufferImageHeight( bufferImageHeight_ )
16979 , imageSubresource( imageSubresource_ )
16980 , imageOffset( imageOffset_ )
16981 , imageExtent( imageExtent_ )
16982 {
16983 }
16984
16985 BufferImageCopy( VkBufferImageCopy const & rhs )
16986 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016987 memcpy( this, &rhs, sizeof( BufferImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016988 }
16989
16990 BufferImageCopy& operator=( VkBufferImageCopy const & rhs )
16991 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016992 memcpy( this, &rhs, sizeof( BufferImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016993 return *this;
16994 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016995 BufferImageCopy& setBufferOffset( DeviceSize bufferOffset_ )
16996 {
16997 bufferOffset = bufferOffset_;
16998 return *this;
16999 }
17000
17001 BufferImageCopy& setBufferRowLength( uint32_t bufferRowLength_ )
17002 {
17003 bufferRowLength = bufferRowLength_;
17004 return *this;
17005 }
17006
17007 BufferImageCopy& setBufferImageHeight( uint32_t bufferImageHeight_ )
17008 {
17009 bufferImageHeight = bufferImageHeight_;
17010 return *this;
17011 }
17012
17013 BufferImageCopy& setImageSubresource( ImageSubresourceLayers imageSubresource_ )
17014 {
17015 imageSubresource = imageSubresource_;
17016 return *this;
17017 }
17018
17019 BufferImageCopy& setImageOffset( Offset3D imageOffset_ )
17020 {
17021 imageOffset = imageOffset_;
17022 return *this;
17023 }
17024
17025 BufferImageCopy& setImageExtent( Extent3D imageExtent_ )
17026 {
17027 imageExtent = imageExtent_;
17028 return *this;
17029 }
17030
17031 operator const VkBufferImageCopy&() const
17032 {
17033 return *reinterpret_cast<const VkBufferImageCopy*>(this);
17034 }
17035
17036 bool operator==( BufferImageCopy const& rhs ) const
17037 {
17038 return ( bufferOffset == rhs.bufferOffset )
17039 && ( bufferRowLength == rhs.bufferRowLength )
17040 && ( bufferImageHeight == rhs.bufferImageHeight )
17041 && ( imageSubresource == rhs.imageSubresource )
17042 && ( imageOffset == rhs.imageOffset )
17043 && ( imageExtent == rhs.imageExtent );
17044 }
17045
17046 bool operator!=( BufferImageCopy const& rhs ) const
17047 {
17048 return !operator==( rhs );
17049 }
17050
17051 DeviceSize bufferOffset;
17052 uint32_t bufferRowLength;
17053 uint32_t bufferImageHeight;
17054 ImageSubresourceLayers imageSubresource;
17055 Offset3D imageOffset;
17056 Extent3D imageExtent;
17057 };
17058 static_assert( sizeof( BufferImageCopy ) == sizeof( VkBufferImageCopy ), "struct and wrapper have different size!" );
17059
17060 struct ImageResolve
17061 {
17062 ImageResolve( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), Offset3D srcOffset_ = Offset3D(), ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), Offset3D dstOffset_ = Offset3D(), Extent3D extent_ = Extent3D() )
17063 : srcSubresource( srcSubresource_ )
17064 , srcOffset( srcOffset_ )
17065 , dstSubresource( dstSubresource_ )
17066 , dstOffset( dstOffset_ )
17067 , extent( extent_ )
17068 {
17069 }
17070
17071 ImageResolve( VkImageResolve const & rhs )
17072 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017073 memcpy( this, &rhs, sizeof( ImageResolve ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017074 }
17075
17076 ImageResolve& operator=( VkImageResolve const & rhs )
17077 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017078 memcpy( this, &rhs, sizeof( ImageResolve ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017079 return *this;
17080 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017081 ImageResolve& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
17082 {
17083 srcSubresource = srcSubresource_;
17084 return *this;
17085 }
17086
17087 ImageResolve& setSrcOffset( Offset3D srcOffset_ )
17088 {
17089 srcOffset = srcOffset_;
17090 return *this;
17091 }
17092
17093 ImageResolve& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
17094 {
17095 dstSubresource = dstSubresource_;
17096 return *this;
17097 }
17098
17099 ImageResolve& setDstOffset( Offset3D dstOffset_ )
17100 {
17101 dstOffset = dstOffset_;
17102 return *this;
17103 }
17104
17105 ImageResolve& setExtent( Extent3D extent_ )
17106 {
17107 extent = extent_;
17108 return *this;
17109 }
17110
17111 operator const VkImageResolve&() const
17112 {
17113 return *reinterpret_cast<const VkImageResolve*>(this);
17114 }
17115
17116 bool operator==( ImageResolve const& rhs ) const
17117 {
17118 return ( srcSubresource == rhs.srcSubresource )
17119 && ( srcOffset == rhs.srcOffset )
17120 && ( dstSubresource == rhs.dstSubresource )
17121 && ( dstOffset == rhs.dstOffset )
17122 && ( extent == rhs.extent );
17123 }
17124
17125 bool operator!=( ImageResolve const& rhs ) const
17126 {
17127 return !operator==( rhs );
17128 }
17129
17130 ImageSubresourceLayers srcSubresource;
17131 Offset3D srcOffset;
17132 ImageSubresourceLayers dstSubresource;
17133 Offset3D dstOffset;
17134 Extent3D extent;
17135 };
17136 static_assert( sizeof( ImageResolve ) == sizeof( VkImageResolve ), "struct and wrapper have different size!" );
17137
17138 struct ClearAttachment
17139 {
17140 ClearAttachment( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t colorAttachment_ = 0, ClearValue clearValue_ = ClearValue() )
17141 : aspectMask( aspectMask_ )
17142 , colorAttachment( colorAttachment_ )
17143 , clearValue( clearValue_ )
17144 {
17145 }
17146
17147 ClearAttachment( VkClearAttachment const & rhs )
17148 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017149 memcpy( this, &rhs, sizeof( ClearAttachment ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017150 }
17151
17152 ClearAttachment& operator=( VkClearAttachment const & rhs )
17153 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017154 memcpy( this, &rhs, sizeof( ClearAttachment ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017155 return *this;
17156 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017157 ClearAttachment& setAspectMask( ImageAspectFlags aspectMask_ )
17158 {
17159 aspectMask = aspectMask_;
17160 return *this;
17161 }
17162
17163 ClearAttachment& setColorAttachment( uint32_t colorAttachment_ )
17164 {
17165 colorAttachment = colorAttachment_;
17166 return *this;
17167 }
17168
17169 ClearAttachment& setClearValue( ClearValue clearValue_ )
17170 {
17171 clearValue = clearValue_;
17172 return *this;
17173 }
17174
17175 operator const VkClearAttachment&() const
17176 {
17177 return *reinterpret_cast<const VkClearAttachment*>(this);
17178 }
17179
17180 ImageAspectFlags aspectMask;
17181 uint32_t colorAttachment;
17182 ClearValue clearValue;
17183 };
17184 static_assert( sizeof( ClearAttachment ) == sizeof( VkClearAttachment ), "struct and wrapper have different size!" );
17185
Lenny Komowb79f04a2017-09-18 17:07:00 -060017186 struct InputAttachmentAspectReferenceKHR
17187 {
17188 InputAttachmentAspectReferenceKHR( uint32_t subpass_ = 0, uint32_t inputAttachmentIndex_ = 0, ImageAspectFlags aspectMask_ = ImageAspectFlags() )
17189 : subpass( subpass_ )
17190 , inputAttachmentIndex( inputAttachmentIndex_ )
17191 , aspectMask( aspectMask_ )
17192 {
17193 }
17194
17195 InputAttachmentAspectReferenceKHR( VkInputAttachmentAspectReferenceKHR const & rhs )
17196 {
17197 memcpy( this, &rhs, sizeof( InputAttachmentAspectReferenceKHR ) );
17198 }
17199
17200 InputAttachmentAspectReferenceKHR& operator=( VkInputAttachmentAspectReferenceKHR const & rhs )
17201 {
17202 memcpy( this, &rhs, sizeof( InputAttachmentAspectReferenceKHR ) );
17203 return *this;
17204 }
17205 InputAttachmentAspectReferenceKHR& setSubpass( uint32_t subpass_ )
17206 {
17207 subpass = subpass_;
17208 return *this;
17209 }
17210
17211 InputAttachmentAspectReferenceKHR& setInputAttachmentIndex( uint32_t inputAttachmentIndex_ )
17212 {
17213 inputAttachmentIndex = inputAttachmentIndex_;
17214 return *this;
17215 }
17216
17217 InputAttachmentAspectReferenceKHR& setAspectMask( ImageAspectFlags aspectMask_ )
17218 {
17219 aspectMask = aspectMask_;
17220 return *this;
17221 }
17222
17223 operator const VkInputAttachmentAspectReferenceKHR&() const
17224 {
17225 return *reinterpret_cast<const VkInputAttachmentAspectReferenceKHR*>(this);
17226 }
17227
17228 bool operator==( InputAttachmentAspectReferenceKHR const& rhs ) const
17229 {
17230 return ( subpass == rhs.subpass )
17231 && ( inputAttachmentIndex == rhs.inputAttachmentIndex )
17232 && ( aspectMask == rhs.aspectMask );
17233 }
17234
17235 bool operator!=( InputAttachmentAspectReferenceKHR const& rhs ) const
17236 {
17237 return !operator==( rhs );
17238 }
17239
17240 uint32_t subpass;
17241 uint32_t inputAttachmentIndex;
17242 ImageAspectFlags aspectMask;
17243 };
17244 static_assert( sizeof( InputAttachmentAspectReferenceKHR ) == sizeof( VkInputAttachmentAspectReferenceKHR ), "struct and wrapper have different size!" );
17245
17246 struct RenderPassInputAttachmentAspectCreateInfoKHR
17247 {
17248 RenderPassInputAttachmentAspectCreateInfoKHR( uint32_t aspectReferenceCount_ = 0, const InputAttachmentAspectReferenceKHR* pAspectReferences_ = nullptr )
17249 : sType( StructureType::eRenderPassInputAttachmentAspectCreateInfoKHR )
17250 , pNext( nullptr )
17251 , aspectReferenceCount( aspectReferenceCount_ )
17252 , pAspectReferences( pAspectReferences_ )
17253 {
17254 }
17255
17256 RenderPassInputAttachmentAspectCreateInfoKHR( VkRenderPassInputAttachmentAspectCreateInfoKHR const & rhs )
17257 {
17258 memcpy( this, &rhs, sizeof( RenderPassInputAttachmentAspectCreateInfoKHR ) );
17259 }
17260
17261 RenderPassInputAttachmentAspectCreateInfoKHR& operator=( VkRenderPassInputAttachmentAspectCreateInfoKHR const & rhs )
17262 {
17263 memcpy( this, &rhs, sizeof( RenderPassInputAttachmentAspectCreateInfoKHR ) );
17264 return *this;
17265 }
17266 RenderPassInputAttachmentAspectCreateInfoKHR& setPNext( const void* pNext_ )
17267 {
17268 pNext = pNext_;
17269 return *this;
17270 }
17271
17272 RenderPassInputAttachmentAspectCreateInfoKHR& setAspectReferenceCount( uint32_t aspectReferenceCount_ )
17273 {
17274 aspectReferenceCount = aspectReferenceCount_;
17275 return *this;
17276 }
17277
17278 RenderPassInputAttachmentAspectCreateInfoKHR& setPAspectReferences( const InputAttachmentAspectReferenceKHR* pAspectReferences_ )
17279 {
17280 pAspectReferences = pAspectReferences_;
17281 return *this;
17282 }
17283
17284 operator const VkRenderPassInputAttachmentAspectCreateInfoKHR&() const
17285 {
17286 return *reinterpret_cast<const VkRenderPassInputAttachmentAspectCreateInfoKHR*>(this);
17287 }
17288
17289 bool operator==( RenderPassInputAttachmentAspectCreateInfoKHR const& rhs ) const
17290 {
17291 return ( sType == rhs.sType )
17292 && ( pNext == rhs.pNext )
17293 && ( aspectReferenceCount == rhs.aspectReferenceCount )
17294 && ( pAspectReferences == rhs.pAspectReferences );
17295 }
17296
17297 bool operator!=( RenderPassInputAttachmentAspectCreateInfoKHR const& rhs ) const
17298 {
17299 return !operator==( rhs );
17300 }
17301
17302 private:
17303 StructureType sType;
17304
17305 public:
17306 const void* pNext;
17307 uint32_t aspectReferenceCount;
17308 const InputAttachmentAspectReferenceKHR* pAspectReferences;
17309 };
17310 static_assert( sizeof( RenderPassInputAttachmentAspectCreateInfoKHR ) == sizeof( VkRenderPassInputAttachmentAspectCreateInfoKHR ), "struct and wrapper have different size!" );
17311
17312 struct BindImagePlaneMemoryInfoKHR
17313 {
17314 BindImagePlaneMemoryInfoKHR( ImageAspectFlagBits planeAspect_ = ImageAspectFlagBits::eColor )
17315 : sType( StructureType::eBindImagePlaneMemoryInfoKHR )
17316 , pNext( nullptr )
17317 , planeAspect( planeAspect_ )
17318 {
17319 }
17320
17321 BindImagePlaneMemoryInfoKHR( VkBindImagePlaneMemoryInfoKHR const & rhs )
17322 {
17323 memcpy( this, &rhs, sizeof( BindImagePlaneMemoryInfoKHR ) );
17324 }
17325
17326 BindImagePlaneMemoryInfoKHR& operator=( VkBindImagePlaneMemoryInfoKHR const & rhs )
17327 {
17328 memcpy( this, &rhs, sizeof( BindImagePlaneMemoryInfoKHR ) );
17329 return *this;
17330 }
17331 BindImagePlaneMemoryInfoKHR& setPNext( const void* pNext_ )
17332 {
17333 pNext = pNext_;
17334 return *this;
17335 }
17336
17337 BindImagePlaneMemoryInfoKHR& setPlaneAspect( ImageAspectFlagBits planeAspect_ )
17338 {
17339 planeAspect = planeAspect_;
17340 return *this;
17341 }
17342
17343 operator const VkBindImagePlaneMemoryInfoKHR&() const
17344 {
17345 return *reinterpret_cast<const VkBindImagePlaneMemoryInfoKHR*>(this);
17346 }
17347
17348 bool operator==( BindImagePlaneMemoryInfoKHR const& rhs ) const
17349 {
17350 return ( sType == rhs.sType )
17351 && ( pNext == rhs.pNext )
17352 && ( planeAspect == rhs.planeAspect );
17353 }
17354
17355 bool operator!=( BindImagePlaneMemoryInfoKHR const& rhs ) const
17356 {
17357 return !operator==( rhs );
17358 }
17359
17360 private:
17361 StructureType sType;
17362
17363 public:
17364 const void* pNext;
17365 ImageAspectFlagBits planeAspect;
17366 };
17367 static_assert( sizeof( BindImagePlaneMemoryInfoKHR ) == sizeof( VkBindImagePlaneMemoryInfoKHR ), "struct and wrapper have different size!" );
17368
17369 struct ImagePlaneMemoryRequirementsInfoKHR
17370 {
17371 ImagePlaneMemoryRequirementsInfoKHR( ImageAspectFlagBits planeAspect_ = ImageAspectFlagBits::eColor )
17372 : sType( StructureType::eImagePlaneMemoryRequirementsInfoKHR )
17373 , pNext( nullptr )
17374 , planeAspect( planeAspect_ )
17375 {
17376 }
17377
17378 ImagePlaneMemoryRequirementsInfoKHR( VkImagePlaneMemoryRequirementsInfoKHR const & rhs )
17379 {
17380 memcpy( this, &rhs, sizeof( ImagePlaneMemoryRequirementsInfoKHR ) );
17381 }
17382
17383 ImagePlaneMemoryRequirementsInfoKHR& operator=( VkImagePlaneMemoryRequirementsInfoKHR const & rhs )
17384 {
17385 memcpy( this, &rhs, sizeof( ImagePlaneMemoryRequirementsInfoKHR ) );
17386 return *this;
17387 }
17388 ImagePlaneMemoryRequirementsInfoKHR& setPNext( const void* pNext_ )
17389 {
17390 pNext = pNext_;
17391 return *this;
17392 }
17393
17394 ImagePlaneMemoryRequirementsInfoKHR& setPlaneAspect( ImageAspectFlagBits planeAspect_ )
17395 {
17396 planeAspect = planeAspect_;
17397 return *this;
17398 }
17399
17400 operator const VkImagePlaneMemoryRequirementsInfoKHR&() const
17401 {
17402 return *reinterpret_cast<const VkImagePlaneMemoryRequirementsInfoKHR*>(this);
17403 }
17404
17405 bool operator==( ImagePlaneMemoryRequirementsInfoKHR const& rhs ) const
17406 {
17407 return ( sType == rhs.sType )
17408 && ( pNext == rhs.pNext )
17409 && ( planeAspect == rhs.planeAspect );
17410 }
17411
17412 bool operator!=( ImagePlaneMemoryRequirementsInfoKHR const& rhs ) const
17413 {
17414 return !operator==( rhs );
17415 }
17416
17417 private:
17418 StructureType sType;
17419
17420 public:
17421 const void* pNext;
17422 ImageAspectFlagBits planeAspect;
17423 };
17424 static_assert( sizeof( ImagePlaneMemoryRequirementsInfoKHR ) == sizeof( VkImagePlaneMemoryRequirementsInfoKHR ), "struct and wrapper have different size!" );
17425
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017426 enum class SparseImageFormatFlagBits
17427 {
17428 eSingleMiptail = VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT,
17429 eAlignedMipSize = VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT,
17430 eNonstandardBlockSize = VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT
17431 };
17432
17433 using SparseImageFormatFlags = Flags<SparseImageFormatFlagBits, VkSparseImageFormatFlags>;
17434
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017435 VULKAN_HPP_INLINE SparseImageFormatFlags operator|( SparseImageFormatFlagBits bit0, SparseImageFormatFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017436 {
17437 return SparseImageFormatFlags( bit0 ) | bit1;
17438 }
17439
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017440 VULKAN_HPP_INLINE SparseImageFormatFlags operator~( SparseImageFormatFlagBits bits )
17441 {
17442 return ~( SparseImageFormatFlags( bits ) );
17443 }
17444
17445 template <> struct FlagTraits<SparseImageFormatFlagBits>
17446 {
17447 enum
17448 {
17449 allFlags = VkFlags(SparseImageFormatFlagBits::eSingleMiptail) | VkFlags(SparseImageFormatFlagBits::eAlignedMipSize) | VkFlags(SparseImageFormatFlagBits::eNonstandardBlockSize)
17450 };
17451 };
17452
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017453 struct SparseImageFormatProperties
17454 {
17455 operator const VkSparseImageFormatProperties&() const
17456 {
17457 return *reinterpret_cast<const VkSparseImageFormatProperties*>(this);
17458 }
17459
17460 bool operator==( SparseImageFormatProperties const& rhs ) const
17461 {
17462 return ( aspectMask == rhs.aspectMask )
17463 && ( imageGranularity == rhs.imageGranularity )
17464 && ( flags == rhs.flags );
17465 }
17466
17467 bool operator!=( SparseImageFormatProperties const& rhs ) const
17468 {
17469 return !operator==( rhs );
17470 }
17471
17472 ImageAspectFlags aspectMask;
17473 Extent3D imageGranularity;
17474 SparseImageFormatFlags flags;
17475 };
17476 static_assert( sizeof( SparseImageFormatProperties ) == sizeof( VkSparseImageFormatProperties ), "struct and wrapper have different size!" );
17477
17478 struct SparseImageMemoryRequirements
17479 {
17480 operator const VkSparseImageMemoryRequirements&() const
17481 {
17482 return *reinterpret_cast<const VkSparseImageMemoryRequirements*>(this);
17483 }
17484
17485 bool operator==( SparseImageMemoryRequirements const& rhs ) const
17486 {
17487 return ( formatProperties == rhs.formatProperties )
17488 && ( imageMipTailFirstLod == rhs.imageMipTailFirstLod )
17489 && ( imageMipTailSize == rhs.imageMipTailSize )
17490 && ( imageMipTailOffset == rhs.imageMipTailOffset )
17491 && ( imageMipTailStride == rhs.imageMipTailStride );
17492 }
17493
17494 bool operator!=( SparseImageMemoryRequirements const& rhs ) const
17495 {
17496 return !operator==( rhs );
17497 }
17498
17499 SparseImageFormatProperties formatProperties;
17500 uint32_t imageMipTailFirstLod;
17501 DeviceSize imageMipTailSize;
17502 DeviceSize imageMipTailOffset;
17503 DeviceSize imageMipTailStride;
17504 };
17505 static_assert( sizeof( SparseImageMemoryRequirements ) == sizeof( VkSparseImageMemoryRequirements ), "struct and wrapper have different size!" );
17506
Mark Young39389872017-01-19 21:10:49 -070017507 struct SparseImageFormatProperties2KHR
17508 {
17509 operator const VkSparseImageFormatProperties2KHR&() const
17510 {
17511 return *reinterpret_cast<const VkSparseImageFormatProperties2KHR*>(this);
17512 }
17513
17514 bool operator==( SparseImageFormatProperties2KHR const& rhs ) const
17515 {
17516 return ( sType == rhs.sType )
17517 && ( pNext == rhs.pNext )
17518 && ( properties == rhs.properties );
17519 }
17520
17521 bool operator!=( SparseImageFormatProperties2KHR const& rhs ) const
17522 {
17523 return !operator==( rhs );
17524 }
17525
17526 private:
17527 StructureType sType;
17528
17529 public:
17530 void* pNext;
17531 SparseImageFormatProperties properties;
17532 };
17533 static_assert( sizeof( SparseImageFormatProperties2KHR ) == sizeof( VkSparseImageFormatProperties2KHR ), "struct and wrapper have different size!" );
17534
Mark Youngabc2d6e2017-07-07 07:59:56 -060017535 struct SparseImageMemoryRequirements2KHR
17536 {
17537 operator const VkSparseImageMemoryRequirements2KHR&() const
17538 {
17539 return *reinterpret_cast<const VkSparseImageMemoryRequirements2KHR*>(this);
17540 }
17541
17542 bool operator==( SparseImageMemoryRequirements2KHR const& rhs ) const
17543 {
17544 return ( sType == rhs.sType )
17545 && ( pNext == rhs.pNext )
17546 && ( memoryRequirements == rhs.memoryRequirements );
17547 }
17548
17549 bool operator!=( SparseImageMemoryRequirements2KHR const& rhs ) const
17550 {
17551 return !operator==( rhs );
17552 }
17553
17554 private:
17555 StructureType sType;
17556
17557 public:
17558 void* pNext;
17559 SparseImageMemoryRequirements memoryRequirements;
17560 };
17561 static_assert( sizeof( SparseImageMemoryRequirements2KHR ) == sizeof( VkSparseImageMemoryRequirements2KHR ), "struct and wrapper have different size!" );
17562
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017563 enum class SparseMemoryBindFlagBits
17564 {
17565 eMetadata = VK_SPARSE_MEMORY_BIND_METADATA_BIT
17566 };
17567
17568 using SparseMemoryBindFlags = Flags<SparseMemoryBindFlagBits, VkSparseMemoryBindFlags>;
17569
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017570 VULKAN_HPP_INLINE SparseMemoryBindFlags operator|( SparseMemoryBindFlagBits bit0, SparseMemoryBindFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017571 {
17572 return SparseMemoryBindFlags( bit0 ) | bit1;
17573 }
17574
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017575 VULKAN_HPP_INLINE SparseMemoryBindFlags operator~( SparseMemoryBindFlagBits bits )
17576 {
17577 return ~( SparseMemoryBindFlags( bits ) );
17578 }
17579
17580 template <> struct FlagTraits<SparseMemoryBindFlagBits>
17581 {
17582 enum
17583 {
17584 allFlags = VkFlags(SparseMemoryBindFlagBits::eMetadata)
17585 };
17586 };
17587
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017588 struct SparseMemoryBind
17589 {
17590 SparseMemoryBind( DeviceSize resourceOffset_ = 0, DeviceSize size_ = 0, DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
17591 : resourceOffset( resourceOffset_ )
17592 , size( size_ )
17593 , memory( memory_ )
17594 , memoryOffset( memoryOffset_ )
17595 , flags( flags_ )
17596 {
17597 }
17598
17599 SparseMemoryBind( VkSparseMemoryBind const & rhs )
17600 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017601 memcpy( this, &rhs, sizeof( SparseMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017602 }
17603
17604 SparseMemoryBind& operator=( VkSparseMemoryBind const & rhs )
17605 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017606 memcpy( this, &rhs, sizeof( SparseMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017607 return *this;
17608 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017609 SparseMemoryBind& setResourceOffset( DeviceSize resourceOffset_ )
17610 {
17611 resourceOffset = resourceOffset_;
17612 return *this;
17613 }
17614
17615 SparseMemoryBind& setSize( DeviceSize size_ )
17616 {
17617 size = size_;
17618 return *this;
17619 }
17620
17621 SparseMemoryBind& setMemory( DeviceMemory memory_ )
17622 {
17623 memory = memory_;
17624 return *this;
17625 }
17626
17627 SparseMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
17628 {
17629 memoryOffset = memoryOffset_;
17630 return *this;
17631 }
17632
17633 SparseMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
17634 {
17635 flags = flags_;
17636 return *this;
17637 }
17638
17639 operator const VkSparseMemoryBind&() const
17640 {
17641 return *reinterpret_cast<const VkSparseMemoryBind*>(this);
17642 }
17643
17644 bool operator==( SparseMemoryBind const& rhs ) const
17645 {
17646 return ( resourceOffset == rhs.resourceOffset )
17647 && ( size == rhs.size )
17648 && ( memory == rhs.memory )
17649 && ( memoryOffset == rhs.memoryOffset )
17650 && ( flags == rhs.flags );
17651 }
17652
17653 bool operator!=( SparseMemoryBind const& rhs ) const
17654 {
17655 return !operator==( rhs );
17656 }
17657
17658 DeviceSize resourceOffset;
17659 DeviceSize size;
17660 DeviceMemory memory;
17661 DeviceSize memoryOffset;
17662 SparseMemoryBindFlags flags;
17663 };
17664 static_assert( sizeof( SparseMemoryBind ) == sizeof( VkSparseMemoryBind ), "struct and wrapper have different size!" );
17665
17666 struct SparseImageMemoryBind
17667 {
17668 SparseImageMemoryBind( ImageSubresource subresource_ = ImageSubresource(), Offset3D offset_ = Offset3D(), Extent3D extent_ = Extent3D(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
17669 : subresource( subresource_ )
17670 , offset( offset_ )
17671 , extent( extent_ )
17672 , memory( memory_ )
17673 , memoryOffset( memoryOffset_ )
17674 , flags( flags_ )
17675 {
17676 }
17677
17678 SparseImageMemoryBind( VkSparseImageMemoryBind const & rhs )
17679 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017680 memcpy( this, &rhs, sizeof( SparseImageMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017681 }
17682
17683 SparseImageMemoryBind& operator=( VkSparseImageMemoryBind const & rhs )
17684 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017685 memcpy( this, &rhs, sizeof( SparseImageMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017686 return *this;
17687 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017688 SparseImageMemoryBind& setSubresource( ImageSubresource subresource_ )
17689 {
17690 subresource = subresource_;
17691 return *this;
17692 }
17693
17694 SparseImageMemoryBind& setOffset( Offset3D offset_ )
17695 {
17696 offset = offset_;
17697 return *this;
17698 }
17699
17700 SparseImageMemoryBind& setExtent( Extent3D extent_ )
17701 {
17702 extent = extent_;
17703 return *this;
17704 }
17705
17706 SparseImageMemoryBind& setMemory( DeviceMemory memory_ )
17707 {
17708 memory = memory_;
17709 return *this;
17710 }
17711
17712 SparseImageMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
17713 {
17714 memoryOffset = memoryOffset_;
17715 return *this;
17716 }
17717
17718 SparseImageMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
17719 {
17720 flags = flags_;
17721 return *this;
17722 }
17723
17724 operator const VkSparseImageMemoryBind&() const
17725 {
17726 return *reinterpret_cast<const VkSparseImageMemoryBind*>(this);
17727 }
17728
17729 bool operator==( SparseImageMemoryBind const& rhs ) const
17730 {
17731 return ( subresource == rhs.subresource )
17732 && ( offset == rhs.offset )
17733 && ( extent == rhs.extent )
17734 && ( memory == rhs.memory )
17735 && ( memoryOffset == rhs.memoryOffset )
17736 && ( flags == rhs.flags );
17737 }
17738
17739 bool operator!=( SparseImageMemoryBind const& rhs ) const
17740 {
17741 return !operator==( rhs );
17742 }
17743
17744 ImageSubresource subresource;
17745 Offset3D offset;
17746 Extent3D extent;
17747 DeviceMemory memory;
17748 DeviceSize memoryOffset;
17749 SparseMemoryBindFlags flags;
17750 };
17751 static_assert( sizeof( SparseImageMemoryBind ) == sizeof( VkSparseImageMemoryBind ), "struct and wrapper have different size!" );
17752
17753 struct SparseBufferMemoryBindInfo
17754 {
17755 SparseBufferMemoryBindInfo( Buffer buffer_ = Buffer(), uint32_t bindCount_ = 0, const SparseMemoryBind* pBinds_ = nullptr )
17756 : buffer( buffer_ )
17757 , bindCount( bindCount_ )
17758 , pBinds( pBinds_ )
17759 {
17760 }
17761
17762 SparseBufferMemoryBindInfo( VkSparseBufferMemoryBindInfo const & rhs )
17763 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017764 memcpy( this, &rhs, sizeof( SparseBufferMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017765 }
17766
17767 SparseBufferMemoryBindInfo& operator=( VkSparseBufferMemoryBindInfo const & rhs )
17768 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017769 memcpy( this, &rhs, sizeof( SparseBufferMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017770 return *this;
17771 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017772 SparseBufferMemoryBindInfo& setBuffer( Buffer buffer_ )
17773 {
17774 buffer = buffer_;
17775 return *this;
17776 }
17777
17778 SparseBufferMemoryBindInfo& setBindCount( uint32_t bindCount_ )
17779 {
17780 bindCount = bindCount_;
17781 return *this;
17782 }
17783
17784 SparseBufferMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
17785 {
17786 pBinds = pBinds_;
17787 return *this;
17788 }
17789
17790 operator const VkSparseBufferMemoryBindInfo&() const
17791 {
17792 return *reinterpret_cast<const VkSparseBufferMemoryBindInfo*>(this);
17793 }
17794
17795 bool operator==( SparseBufferMemoryBindInfo const& rhs ) const
17796 {
17797 return ( buffer == rhs.buffer )
17798 && ( bindCount == rhs.bindCount )
17799 && ( pBinds == rhs.pBinds );
17800 }
17801
17802 bool operator!=( SparseBufferMemoryBindInfo const& rhs ) const
17803 {
17804 return !operator==( rhs );
17805 }
17806
17807 Buffer buffer;
17808 uint32_t bindCount;
17809 const SparseMemoryBind* pBinds;
17810 };
17811 static_assert( sizeof( SparseBufferMemoryBindInfo ) == sizeof( VkSparseBufferMemoryBindInfo ), "struct and wrapper have different size!" );
17812
17813 struct SparseImageOpaqueMemoryBindInfo
17814 {
17815 SparseImageOpaqueMemoryBindInfo( Image image_ = Image(), uint32_t bindCount_ = 0, const SparseMemoryBind* pBinds_ = nullptr )
17816 : image( image_ )
17817 , bindCount( bindCount_ )
17818 , pBinds( pBinds_ )
17819 {
17820 }
17821
17822 SparseImageOpaqueMemoryBindInfo( VkSparseImageOpaqueMemoryBindInfo const & rhs )
17823 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017824 memcpy( this, &rhs, sizeof( SparseImageOpaqueMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017825 }
17826
17827 SparseImageOpaqueMemoryBindInfo& operator=( VkSparseImageOpaqueMemoryBindInfo const & rhs )
17828 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017829 memcpy( this, &rhs, sizeof( SparseImageOpaqueMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017830 return *this;
17831 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017832 SparseImageOpaqueMemoryBindInfo& setImage( Image image_ )
17833 {
17834 image = image_;
17835 return *this;
17836 }
17837
17838 SparseImageOpaqueMemoryBindInfo& setBindCount( uint32_t bindCount_ )
17839 {
17840 bindCount = bindCount_;
17841 return *this;
17842 }
17843
17844 SparseImageOpaqueMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
17845 {
17846 pBinds = pBinds_;
17847 return *this;
17848 }
17849
17850 operator const VkSparseImageOpaqueMemoryBindInfo&() const
17851 {
17852 return *reinterpret_cast<const VkSparseImageOpaqueMemoryBindInfo*>(this);
17853 }
17854
17855 bool operator==( SparseImageOpaqueMemoryBindInfo const& rhs ) const
17856 {
17857 return ( image == rhs.image )
17858 && ( bindCount == rhs.bindCount )
17859 && ( pBinds == rhs.pBinds );
17860 }
17861
17862 bool operator!=( SparseImageOpaqueMemoryBindInfo const& rhs ) const
17863 {
17864 return !operator==( rhs );
17865 }
17866
17867 Image image;
17868 uint32_t bindCount;
17869 const SparseMemoryBind* pBinds;
17870 };
17871 static_assert( sizeof( SparseImageOpaqueMemoryBindInfo ) == sizeof( VkSparseImageOpaqueMemoryBindInfo ), "struct and wrapper have different size!" );
17872
17873 struct SparseImageMemoryBindInfo
17874 {
17875 SparseImageMemoryBindInfo( Image image_ = Image(), uint32_t bindCount_ = 0, const SparseImageMemoryBind* pBinds_ = nullptr )
17876 : image( image_ )
17877 , bindCount( bindCount_ )
17878 , pBinds( pBinds_ )
17879 {
17880 }
17881
17882 SparseImageMemoryBindInfo( VkSparseImageMemoryBindInfo const & rhs )
17883 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017884 memcpy( this, &rhs, sizeof( SparseImageMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017885 }
17886
17887 SparseImageMemoryBindInfo& operator=( VkSparseImageMemoryBindInfo const & rhs )
17888 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017889 memcpy( this, &rhs, sizeof( SparseImageMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017890 return *this;
17891 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017892 SparseImageMemoryBindInfo& setImage( Image image_ )
17893 {
17894 image = image_;
17895 return *this;
17896 }
17897
17898 SparseImageMemoryBindInfo& setBindCount( uint32_t bindCount_ )
17899 {
17900 bindCount = bindCount_;
17901 return *this;
17902 }
17903
17904 SparseImageMemoryBindInfo& setPBinds( const SparseImageMemoryBind* pBinds_ )
17905 {
17906 pBinds = pBinds_;
17907 return *this;
17908 }
17909
17910 operator const VkSparseImageMemoryBindInfo&() const
17911 {
17912 return *reinterpret_cast<const VkSparseImageMemoryBindInfo*>(this);
17913 }
17914
17915 bool operator==( SparseImageMemoryBindInfo const& rhs ) const
17916 {
17917 return ( image == rhs.image )
17918 && ( bindCount == rhs.bindCount )
17919 && ( pBinds == rhs.pBinds );
17920 }
17921
17922 bool operator!=( SparseImageMemoryBindInfo const& rhs ) const
17923 {
17924 return !operator==( rhs );
17925 }
17926
17927 Image image;
17928 uint32_t bindCount;
17929 const SparseImageMemoryBind* pBinds;
17930 };
17931 static_assert( sizeof( SparseImageMemoryBindInfo ) == sizeof( VkSparseImageMemoryBindInfo ), "struct and wrapper have different size!" );
17932
17933 struct BindSparseInfo
17934 {
17935 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 )
17936 : sType( StructureType::eBindSparseInfo )
17937 , pNext( nullptr )
17938 , waitSemaphoreCount( waitSemaphoreCount_ )
17939 , pWaitSemaphores( pWaitSemaphores_ )
17940 , bufferBindCount( bufferBindCount_ )
17941 , pBufferBinds( pBufferBinds_ )
17942 , imageOpaqueBindCount( imageOpaqueBindCount_ )
17943 , pImageOpaqueBinds( pImageOpaqueBinds_ )
17944 , imageBindCount( imageBindCount_ )
17945 , pImageBinds( pImageBinds_ )
17946 , signalSemaphoreCount( signalSemaphoreCount_ )
17947 , pSignalSemaphores( pSignalSemaphores_ )
17948 {
17949 }
17950
17951 BindSparseInfo( VkBindSparseInfo const & rhs )
17952 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017953 memcpy( this, &rhs, sizeof( BindSparseInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017954 }
17955
17956 BindSparseInfo& operator=( VkBindSparseInfo const & rhs )
17957 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017958 memcpy( this, &rhs, sizeof( BindSparseInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017959 return *this;
17960 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017961 BindSparseInfo& setPNext( const void* pNext_ )
17962 {
17963 pNext = pNext_;
17964 return *this;
17965 }
17966
17967 BindSparseInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
17968 {
17969 waitSemaphoreCount = waitSemaphoreCount_;
17970 return *this;
17971 }
17972
17973 BindSparseInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
17974 {
17975 pWaitSemaphores = pWaitSemaphores_;
17976 return *this;
17977 }
17978
17979 BindSparseInfo& setBufferBindCount( uint32_t bufferBindCount_ )
17980 {
17981 bufferBindCount = bufferBindCount_;
17982 return *this;
17983 }
17984
17985 BindSparseInfo& setPBufferBinds( const SparseBufferMemoryBindInfo* pBufferBinds_ )
17986 {
17987 pBufferBinds = pBufferBinds_;
17988 return *this;
17989 }
17990
17991 BindSparseInfo& setImageOpaqueBindCount( uint32_t imageOpaqueBindCount_ )
17992 {
17993 imageOpaqueBindCount = imageOpaqueBindCount_;
17994 return *this;
17995 }
17996
17997 BindSparseInfo& setPImageOpaqueBinds( const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds_ )
17998 {
17999 pImageOpaqueBinds = pImageOpaqueBinds_;
18000 return *this;
18001 }
18002
18003 BindSparseInfo& setImageBindCount( uint32_t imageBindCount_ )
18004 {
18005 imageBindCount = imageBindCount_;
18006 return *this;
18007 }
18008
18009 BindSparseInfo& setPImageBinds( const SparseImageMemoryBindInfo* pImageBinds_ )
18010 {
18011 pImageBinds = pImageBinds_;
18012 return *this;
18013 }
18014
18015 BindSparseInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
18016 {
18017 signalSemaphoreCount = signalSemaphoreCount_;
18018 return *this;
18019 }
18020
18021 BindSparseInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
18022 {
18023 pSignalSemaphores = pSignalSemaphores_;
18024 return *this;
18025 }
18026
18027 operator const VkBindSparseInfo&() const
18028 {
18029 return *reinterpret_cast<const VkBindSparseInfo*>(this);
18030 }
18031
18032 bool operator==( BindSparseInfo const& rhs ) const
18033 {
18034 return ( sType == rhs.sType )
18035 && ( pNext == rhs.pNext )
18036 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
18037 && ( pWaitSemaphores == rhs.pWaitSemaphores )
18038 && ( bufferBindCount == rhs.bufferBindCount )
18039 && ( pBufferBinds == rhs.pBufferBinds )
18040 && ( imageOpaqueBindCount == rhs.imageOpaqueBindCount )
18041 && ( pImageOpaqueBinds == rhs.pImageOpaqueBinds )
18042 && ( imageBindCount == rhs.imageBindCount )
18043 && ( pImageBinds == rhs.pImageBinds )
18044 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
18045 && ( pSignalSemaphores == rhs.pSignalSemaphores );
18046 }
18047
18048 bool operator!=( BindSparseInfo const& rhs ) const
18049 {
18050 return !operator==( rhs );
18051 }
18052
18053 private:
18054 StructureType sType;
18055
18056 public:
18057 const void* pNext;
18058 uint32_t waitSemaphoreCount;
18059 const Semaphore* pWaitSemaphores;
18060 uint32_t bufferBindCount;
18061 const SparseBufferMemoryBindInfo* pBufferBinds;
18062 uint32_t imageOpaqueBindCount;
18063 const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds;
18064 uint32_t imageBindCount;
18065 const SparseImageMemoryBindInfo* pImageBinds;
18066 uint32_t signalSemaphoreCount;
18067 const Semaphore* pSignalSemaphores;
18068 };
18069 static_assert( sizeof( BindSparseInfo ) == sizeof( VkBindSparseInfo ), "struct and wrapper have different size!" );
18070
18071 enum class PipelineStageFlagBits
18072 {
18073 eTopOfPipe = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
18074 eDrawIndirect = VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,
18075 eVertexInput = VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,
18076 eVertexShader = VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,
18077 eTessellationControlShader = VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,
18078 eTessellationEvaluationShader = VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT,
18079 eGeometryShader = VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT,
18080 eFragmentShader = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
18081 eEarlyFragmentTests = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,
18082 eLateFragmentTests = VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
18083 eColorAttachmentOutput = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
18084 eComputeShader = VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
18085 eTransfer = VK_PIPELINE_STAGE_TRANSFER_BIT,
18086 eBottomOfPipe = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
18087 eHost = VK_PIPELINE_STAGE_HOST_BIT,
18088 eAllGraphics = VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018089 eAllCommands = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,
18090 eCommandProcessNVX = VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018091 };
18092
18093 using PipelineStageFlags = Flags<PipelineStageFlagBits, VkPipelineStageFlags>;
18094
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018095 VULKAN_HPP_INLINE PipelineStageFlags operator|( PipelineStageFlagBits bit0, PipelineStageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018096 {
18097 return PipelineStageFlags( bit0 ) | bit1;
18098 }
18099
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018100 VULKAN_HPP_INLINE PipelineStageFlags operator~( PipelineStageFlagBits bits )
18101 {
18102 return ~( PipelineStageFlags( bits ) );
18103 }
18104
18105 template <> struct FlagTraits<PipelineStageFlagBits>
18106 {
18107 enum
18108 {
18109 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)
18110 };
18111 };
18112
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018113 enum class CommandPoolCreateFlagBits
18114 {
18115 eTransient = VK_COMMAND_POOL_CREATE_TRANSIENT_BIT,
18116 eResetCommandBuffer = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT
18117 };
18118
18119 using CommandPoolCreateFlags = Flags<CommandPoolCreateFlagBits, VkCommandPoolCreateFlags>;
18120
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018121 VULKAN_HPP_INLINE CommandPoolCreateFlags operator|( CommandPoolCreateFlagBits bit0, CommandPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018122 {
18123 return CommandPoolCreateFlags( bit0 ) | bit1;
18124 }
18125
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018126 VULKAN_HPP_INLINE CommandPoolCreateFlags operator~( CommandPoolCreateFlagBits bits )
18127 {
18128 return ~( CommandPoolCreateFlags( bits ) );
18129 }
18130
18131 template <> struct FlagTraits<CommandPoolCreateFlagBits>
18132 {
18133 enum
18134 {
18135 allFlags = VkFlags(CommandPoolCreateFlagBits::eTransient) | VkFlags(CommandPoolCreateFlagBits::eResetCommandBuffer)
18136 };
18137 };
18138
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018139 struct CommandPoolCreateInfo
18140 {
18141 CommandPoolCreateInfo( CommandPoolCreateFlags flags_ = CommandPoolCreateFlags(), uint32_t queueFamilyIndex_ = 0 )
18142 : sType( StructureType::eCommandPoolCreateInfo )
18143 , pNext( nullptr )
18144 , flags( flags_ )
18145 , queueFamilyIndex( queueFamilyIndex_ )
18146 {
18147 }
18148
18149 CommandPoolCreateInfo( VkCommandPoolCreateInfo const & rhs )
18150 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018151 memcpy( this, &rhs, sizeof( CommandPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018152 }
18153
18154 CommandPoolCreateInfo& operator=( VkCommandPoolCreateInfo const & rhs )
18155 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018156 memcpy( this, &rhs, sizeof( CommandPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018157 return *this;
18158 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018159 CommandPoolCreateInfo& setPNext( const void* pNext_ )
18160 {
18161 pNext = pNext_;
18162 return *this;
18163 }
18164
18165 CommandPoolCreateInfo& setFlags( CommandPoolCreateFlags flags_ )
18166 {
18167 flags = flags_;
18168 return *this;
18169 }
18170
18171 CommandPoolCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
18172 {
18173 queueFamilyIndex = queueFamilyIndex_;
18174 return *this;
18175 }
18176
18177 operator const VkCommandPoolCreateInfo&() const
18178 {
18179 return *reinterpret_cast<const VkCommandPoolCreateInfo*>(this);
18180 }
18181
18182 bool operator==( CommandPoolCreateInfo const& rhs ) const
18183 {
18184 return ( sType == rhs.sType )
18185 && ( pNext == rhs.pNext )
18186 && ( flags == rhs.flags )
18187 && ( queueFamilyIndex == rhs.queueFamilyIndex );
18188 }
18189
18190 bool operator!=( CommandPoolCreateInfo const& rhs ) const
18191 {
18192 return !operator==( rhs );
18193 }
18194
18195 private:
18196 StructureType sType;
18197
18198 public:
18199 const void* pNext;
18200 CommandPoolCreateFlags flags;
18201 uint32_t queueFamilyIndex;
18202 };
18203 static_assert( sizeof( CommandPoolCreateInfo ) == sizeof( VkCommandPoolCreateInfo ), "struct and wrapper have different size!" );
18204
18205 enum class CommandPoolResetFlagBits
18206 {
18207 eReleaseResources = VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT
18208 };
18209
18210 using CommandPoolResetFlags = Flags<CommandPoolResetFlagBits, VkCommandPoolResetFlags>;
18211
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018212 VULKAN_HPP_INLINE CommandPoolResetFlags operator|( CommandPoolResetFlagBits bit0, CommandPoolResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018213 {
18214 return CommandPoolResetFlags( bit0 ) | bit1;
18215 }
18216
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018217 VULKAN_HPP_INLINE CommandPoolResetFlags operator~( CommandPoolResetFlagBits bits )
18218 {
18219 return ~( CommandPoolResetFlags( bits ) );
18220 }
18221
18222 template <> struct FlagTraits<CommandPoolResetFlagBits>
18223 {
18224 enum
18225 {
18226 allFlags = VkFlags(CommandPoolResetFlagBits::eReleaseResources)
18227 };
18228 };
18229
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018230 enum class CommandBufferResetFlagBits
18231 {
18232 eReleaseResources = VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT
18233 };
18234
18235 using CommandBufferResetFlags = Flags<CommandBufferResetFlagBits, VkCommandBufferResetFlags>;
18236
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018237 VULKAN_HPP_INLINE CommandBufferResetFlags operator|( CommandBufferResetFlagBits bit0, CommandBufferResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018238 {
18239 return CommandBufferResetFlags( bit0 ) | bit1;
18240 }
18241
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018242 VULKAN_HPP_INLINE CommandBufferResetFlags operator~( CommandBufferResetFlagBits bits )
18243 {
18244 return ~( CommandBufferResetFlags( bits ) );
18245 }
18246
18247 template <> struct FlagTraits<CommandBufferResetFlagBits>
18248 {
18249 enum
18250 {
18251 allFlags = VkFlags(CommandBufferResetFlagBits::eReleaseResources)
18252 };
18253 };
18254
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018255 enum class SampleCountFlagBits
18256 {
18257 e1 = VK_SAMPLE_COUNT_1_BIT,
18258 e2 = VK_SAMPLE_COUNT_2_BIT,
18259 e4 = VK_SAMPLE_COUNT_4_BIT,
18260 e8 = VK_SAMPLE_COUNT_8_BIT,
18261 e16 = VK_SAMPLE_COUNT_16_BIT,
18262 e32 = VK_SAMPLE_COUNT_32_BIT,
18263 e64 = VK_SAMPLE_COUNT_64_BIT
18264 };
18265
18266 using SampleCountFlags = Flags<SampleCountFlagBits, VkSampleCountFlags>;
18267
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018268 VULKAN_HPP_INLINE SampleCountFlags operator|( SampleCountFlagBits bit0, SampleCountFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018269 {
18270 return SampleCountFlags( bit0 ) | bit1;
18271 }
18272
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018273 VULKAN_HPP_INLINE SampleCountFlags operator~( SampleCountFlagBits bits )
18274 {
18275 return ~( SampleCountFlags( bits ) );
18276 }
18277
18278 template <> struct FlagTraits<SampleCountFlagBits>
18279 {
18280 enum
18281 {
18282 allFlags = VkFlags(SampleCountFlagBits::e1) | VkFlags(SampleCountFlagBits::e2) | VkFlags(SampleCountFlagBits::e4) | VkFlags(SampleCountFlagBits::e8) | VkFlags(SampleCountFlagBits::e16) | VkFlags(SampleCountFlagBits::e32) | VkFlags(SampleCountFlagBits::e64)
18283 };
18284 };
18285
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018286 struct ImageFormatProperties
18287 {
18288 operator const VkImageFormatProperties&() const
18289 {
18290 return *reinterpret_cast<const VkImageFormatProperties*>(this);
18291 }
18292
18293 bool operator==( ImageFormatProperties const& rhs ) const
18294 {
18295 return ( maxExtent == rhs.maxExtent )
18296 && ( maxMipLevels == rhs.maxMipLevels )
18297 && ( maxArrayLayers == rhs.maxArrayLayers )
18298 && ( sampleCounts == rhs.sampleCounts )
18299 && ( maxResourceSize == rhs.maxResourceSize );
18300 }
18301
18302 bool operator!=( ImageFormatProperties const& rhs ) const
18303 {
18304 return !operator==( rhs );
18305 }
18306
18307 Extent3D maxExtent;
18308 uint32_t maxMipLevels;
18309 uint32_t maxArrayLayers;
18310 SampleCountFlags sampleCounts;
18311 DeviceSize maxResourceSize;
18312 };
18313 static_assert( sizeof( ImageFormatProperties ) == sizeof( VkImageFormatProperties ), "struct and wrapper have different size!" );
18314
18315 struct ImageCreateInfo
18316 {
18317 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 )
18318 : sType( StructureType::eImageCreateInfo )
18319 , pNext( nullptr )
18320 , flags( flags_ )
18321 , imageType( imageType_ )
18322 , format( format_ )
18323 , extent( extent_ )
18324 , mipLevels( mipLevels_ )
18325 , arrayLayers( arrayLayers_ )
18326 , samples( samples_ )
18327 , tiling( tiling_ )
18328 , usage( usage_ )
18329 , sharingMode( sharingMode_ )
18330 , queueFamilyIndexCount( queueFamilyIndexCount_ )
18331 , pQueueFamilyIndices( pQueueFamilyIndices_ )
18332 , initialLayout( initialLayout_ )
18333 {
18334 }
18335
18336 ImageCreateInfo( VkImageCreateInfo const & rhs )
18337 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018338 memcpy( this, &rhs, sizeof( ImageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018339 }
18340
18341 ImageCreateInfo& operator=( VkImageCreateInfo const & rhs )
18342 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018343 memcpy( this, &rhs, sizeof( ImageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018344 return *this;
18345 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018346 ImageCreateInfo& setPNext( const void* pNext_ )
18347 {
18348 pNext = pNext_;
18349 return *this;
18350 }
18351
18352 ImageCreateInfo& setFlags( ImageCreateFlags flags_ )
18353 {
18354 flags = flags_;
18355 return *this;
18356 }
18357
18358 ImageCreateInfo& setImageType( ImageType imageType_ )
18359 {
18360 imageType = imageType_;
18361 return *this;
18362 }
18363
18364 ImageCreateInfo& setFormat( Format format_ )
18365 {
18366 format = format_;
18367 return *this;
18368 }
18369
18370 ImageCreateInfo& setExtent( Extent3D extent_ )
18371 {
18372 extent = extent_;
18373 return *this;
18374 }
18375
18376 ImageCreateInfo& setMipLevels( uint32_t mipLevels_ )
18377 {
18378 mipLevels = mipLevels_;
18379 return *this;
18380 }
18381
18382 ImageCreateInfo& setArrayLayers( uint32_t arrayLayers_ )
18383 {
18384 arrayLayers = arrayLayers_;
18385 return *this;
18386 }
18387
18388 ImageCreateInfo& setSamples( SampleCountFlagBits samples_ )
18389 {
18390 samples = samples_;
18391 return *this;
18392 }
18393
18394 ImageCreateInfo& setTiling( ImageTiling tiling_ )
18395 {
18396 tiling = tiling_;
18397 return *this;
18398 }
18399
18400 ImageCreateInfo& setUsage( ImageUsageFlags usage_ )
18401 {
18402 usage = usage_;
18403 return *this;
18404 }
18405
18406 ImageCreateInfo& setSharingMode( SharingMode sharingMode_ )
18407 {
18408 sharingMode = sharingMode_;
18409 return *this;
18410 }
18411
18412 ImageCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
18413 {
18414 queueFamilyIndexCount = queueFamilyIndexCount_;
18415 return *this;
18416 }
18417
18418 ImageCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
18419 {
18420 pQueueFamilyIndices = pQueueFamilyIndices_;
18421 return *this;
18422 }
18423
18424 ImageCreateInfo& setInitialLayout( ImageLayout initialLayout_ )
18425 {
18426 initialLayout = initialLayout_;
18427 return *this;
18428 }
18429
18430 operator const VkImageCreateInfo&() const
18431 {
18432 return *reinterpret_cast<const VkImageCreateInfo*>(this);
18433 }
18434
18435 bool operator==( ImageCreateInfo const& rhs ) const
18436 {
18437 return ( sType == rhs.sType )
18438 && ( pNext == rhs.pNext )
18439 && ( flags == rhs.flags )
18440 && ( imageType == rhs.imageType )
18441 && ( format == rhs.format )
18442 && ( extent == rhs.extent )
18443 && ( mipLevels == rhs.mipLevels )
18444 && ( arrayLayers == rhs.arrayLayers )
18445 && ( samples == rhs.samples )
18446 && ( tiling == rhs.tiling )
18447 && ( usage == rhs.usage )
18448 && ( sharingMode == rhs.sharingMode )
18449 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
18450 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
18451 && ( initialLayout == rhs.initialLayout );
18452 }
18453
18454 bool operator!=( ImageCreateInfo const& rhs ) const
18455 {
18456 return !operator==( rhs );
18457 }
18458
18459 private:
18460 StructureType sType;
18461
18462 public:
18463 const void* pNext;
18464 ImageCreateFlags flags;
18465 ImageType imageType;
18466 Format format;
18467 Extent3D extent;
18468 uint32_t mipLevels;
18469 uint32_t arrayLayers;
18470 SampleCountFlagBits samples;
18471 ImageTiling tiling;
18472 ImageUsageFlags usage;
18473 SharingMode sharingMode;
18474 uint32_t queueFamilyIndexCount;
18475 const uint32_t* pQueueFamilyIndices;
18476 ImageLayout initialLayout;
18477 };
18478 static_assert( sizeof( ImageCreateInfo ) == sizeof( VkImageCreateInfo ), "struct and wrapper have different size!" );
18479
18480 struct PipelineMultisampleStateCreateInfo
18481 {
18482 PipelineMultisampleStateCreateInfo( PipelineMultisampleStateCreateFlags flags_ = PipelineMultisampleStateCreateFlags(), SampleCountFlagBits rasterizationSamples_ = SampleCountFlagBits::e1, Bool32 sampleShadingEnable_ = 0, float minSampleShading_ = 0, const SampleMask* pSampleMask_ = nullptr, Bool32 alphaToCoverageEnable_ = 0, Bool32 alphaToOneEnable_ = 0 )
18483 : sType( StructureType::ePipelineMultisampleStateCreateInfo )
18484 , pNext( nullptr )
18485 , flags( flags_ )
18486 , rasterizationSamples( rasterizationSamples_ )
18487 , sampleShadingEnable( sampleShadingEnable_ )
18488 , minSampleShading( minSampleShading_ )
18489 , pSampleMask( pSampleMask_ )
18490 , alphaToCoverageEnable( alphaToCoverageEnable_ )
18491 , alphaToOneEnable( alphaToOneEnable_ )
18492 {
18493 }
18494
18495 PipelineMultisampleStateCreateInfo( VkPipelineMultisampleStateCreateInfo const & rhs )
18496 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018497 memcpy( this, &rhs, sizeof( PipelineMultisampleStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018498 }
18499
18500 PipelineMultisampleStateCreateInfo& operator=( VkPipelineMultisampleStateCreateInfo const & rhs )
18501 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018502 memcpy( this, &rhs, sizeof( PipelineMultisampleStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018503 return *this;
18504 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018505 PipelineMultisampleStateCreateInfo& setPNext( const void* pNext_ )
18506 {
18507 pNext = pNext_;
18508 return *this;
18509 }
18510
18511 PipelineMultisampleStateCreateInfo& setFlags( PipelineMultisampleStateCreateFlags flags_ )
18512 {
18513 flags = flags_;
18514 return *this;
18515 }
18516
18517 PipelineMultisampleStateCreateInfo& setRasterizationSamples( SampleCountFlagBits rasterizationSamples_ )
18518 {
18519 rasterizationSamples = rasterizationSamples_;
18520 return *this;
18521 }
18522
18523 PipelineMultisampleStateCreateInfo& setSampleShadingEnable( Bool32 sampleShadingEnable_ )
18524 {
18525 sampleShadingEnable = sampleShadingEnable_;
18526 return *this;
18527 }
18528
18529 PipelineMultisampleStateCreateInfo& setMinSampleShading( float minSampleShading_ )
18530 {
18531 minSampleShading = minSampleShading_;
18532 return *this;
18533 }
18534
18535 PipelineMultisampleStateCreateInfo& setPSampleMask( const SampleMask* pSampleMask_ )
18536 {
18537 pSampleMask = pSampleMask_;
18538 return *this;
18539 }
18540
18541 PipelineMultisampleStateCreateInfo& setAlphaToCoverageEnable( Bool32 alphaToCoverageEnable_ )
18542 {
18543 alphaToCoverageEnable = alphaToCoverageEnable_;
18544 return *this;
18545 }
18546
18547 PipelineMultisampleStateCreateInfo& setAlphaToOneEnable( Bool32 alphaToOneEnable_ )
18548 {
18549 alphaToOneEnable = alphaToOneEnable_;
18550 return *this;
18551 }
18552
18553 operator const VkPipelineMultisampleStateCreateInfo&() const
18554 {
18555 return *reinterpret_cast<const VkPipelineMultisampleStateCreateInfo*>(this);
18556 }
18557
18558 bool operator==( PipelineMultisampleStateCreateInfo const& rhs ) const
18559 {
18560 return ( sType == rhs.sType )
18561 && ( pNext == rhs.pNext )
18562 && ( flags == rhs.flags )
18563 && ( rasterizationSamples == rhs.rasterizationSamples )
18564 && ( sampleShadingEnable == rhs.sampleShadingEnable )
18565 && ( minSampleShading == rhs.minSampleShading )
18566 && ( pSampleMask == rhs.pSampleMask )
18567 && ( alphaToCoverageEnable == rhs.alphaToCoverageEnable )
18568 && ( alphaToOneEnable == rhs.alphaToOneEnable );
18569 }
18570
18571 bool operator!=( PipelineMultisampleStateCreateInfo const& rhs ) const
18572 {
18573 return !operator==( rhs );
18574 }
18575
18576 private:
18577 StructureType sType;
18578
18579 public:
18580 const void* pNext;
18581 PipelineMultisampleStateCreateFlags flags;
18582 SampleCountFlagBits rasterizationSamples;
18583 Bool32 sampleShadingEnable;
18584 float minSampleShading;
18585 const SampleMask* pSampleMask;
18586 Bool32 alphaToCoverageEnable;
18587 Bool32 alphaToOneEnable;
18588 };
18589 static_assert( sizeof( PipelineMultisampleStateCreateInfo ) == sizeof( VkPipelineMultisampleStateCreateInfo ), "struct and wrapper have different size!" );
18590
18591 struct GraphicsPipelineCreateInfo
18592 {
18593 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 )
18594 : sType( StructureType::eGraphicsPipelineCreateInfo )
18595 , pNext( nullptr )
18596 , flags( flags_ )
18597 , stageCount( stageCount_ )
18598 , pStages( pStages_ )
18599 , pVertexInputState( pVertexInputState_ )
18600 , pInputAssemblyState( pInputAssemblyState_ )
18601 , pTessellationState( pTessellationState_ )
18602 , pViewportState( pViewportState_ )
18603 , pRasterizationState( pRasterizationState_ )
18604 , pMultisampleState( pMultisampleState_ )
18605 , pDepthStencilState( pDepthStencilState_ )
18606 , pColorBlendState( pColorBlendState_ )
18607 , pDynamicState( pDynamicState_ )
18608 , layout( layout_ )
18609 , renderPass( renderPass_ )
18610 , subpass( subpass_ )
18611 , basePipelineHandle( basePipelineHandle_ )
18612 , basePipelineIndex( basePipelineIndex_ )
18613 {
18614 }
18615
18616 GraphicsPipelineCreateInfo( VkGraphicsPipelineCreateInfo const & rhs )
18617 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018618 memcpy( this, &rhs, sizeof( GraphicsPipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018619 }
18620
18621 GraphicsPipelineCreateInfo& operator=( VkGraphicsPipelineCreateInfo const & rhs )
18622 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018623 memcpy( this, &rhs, sizeof( GraphicsPipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018624 return *this;
18625 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018626 GraphicsPipelineCreateInfo& setPNext( const void* pNext_ )
18627 {
18628 pNext = pNext_;
18629 return *this;
18630 }
18631
18632 GraphicsPipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
18633 {
18634 flags = flags_;
18635 return *this;
18636 }
18637
18638 GraphicsPipelineCreateInfo& setStageCount( uint32_t stageCount_ )
18639 {
18640 stageCount = stageCount_;
18641 return *this;
18642 }
18643
18644 GraphicsPipelineCreateInfo& setPStages( const PipelineShaderStageCreateInfo* pStages_ )
18645 {
18646 pStages = pStages_;
18647 return *this;
18648 }
18649
18650 GraphicsPipelineCreateInfo& setPVertexInputState( const PipelineVertexInputStateCreateInfo* pVertexInputState_ )
18651 {
18652 pVertexInputState = pVertexInputState_;
18653 return *this;
18654 }
18655
18656 GraphicsPipelineCreateInfo& setPInputAssemblyState( const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState_ )
18657 {
18658 pInputAssemblyState = pInputAssemblyState_;
18659 return *this;
18660 }
18661
18662 GraphicsPipelineCreateInfo& setPTessellationState( const PipelineTessellationStateCreateInfo* pTessellationState_ )
18663 {
18664 pTessellationState = pTessellationState_;
18665 return *this;
18666 }
18667
18668 GraphicsPipelineCreateInfo& setPViewportState( const PipelineViewportStateCreateInfo* pViewportState_ )
18669 {
18670 pViewportState = pViewportState_;
18671 return *this;
18672 }
18673
18674 GraphicsPipelineCreateInfo& setPRasterizationState( const PipelineRasterizationStateCreateInfo* pRasterizationState_ )
18675 {
18676 pRasterizationState = pRasterizationState_;
18677 return *this;
18678 }
18679
18680 GraphicsPipelineCreateInfo& setPMultisampleState( const PipelineMultisampleStateCreateInfo* pMultisampleState_ )
18681 {
18682 pMultisampleState = pMultisampleState_;
18683 return *this;
18684 }
18685
18686 GraphicsPipelineCreateInfo& setPDepthStencilState( const PipelineDepthStencilStateCreateInfo* pDepthStencilState_ )
18687 {
18688 pDepthStencilState = pDepthStencilState_;
18689 return *this;
18690 }
18691
18692 GraphicsPipelineCreateInfo& setPColorBlendState( const PipelineColorBlendStateCreateInfo* pColorBlendState_ )
18693 {
18694 pColorBlendState = pColorBlendState_;
18695 return *this;
18696 }
18697
18698 GraphicsPipelineCreateInfo& setPDynamicState( const PipelineDynamicStateCreateInfo* pDynamicState_ )
18699 {
18700 pDynamicState = pDynamicState_;
18701 return *this;
18702 }
18703
18704 GraphicsPipelineCreateInfo& setLayout( PipelineLayout layout_ )
18705 {
18706 layout = layout_;
18707 return *this;
18708 }
18709
18710 GraphicsPipelineCreateInfo& setRenderPass( RenderPass renderPass_ )
18711 {
18712 renderPass = renderPass_;
18713 return *this;
18714 }
18715
18716 GraphicsPipelineCreateInfo& setSubpass( uint32_t subpass_ )
18717 {
18718 subpass = subpass_;
18719 return *this;
18720 }
18721
18722 GraphicsPipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
18723 {
18724 basePipelineHandle = basePipelineHandle_;
18725 return *this;
18726 }
18727
18728 GraphicsPipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
18729 {
18730 basePipelineIndex = basePipelineIndex_;
18731 return *this;
18732 }
18733
18734 operator const VkGraphicsPipelineCreateInfo&() const
18735 {
18736 return *reinterpret_cast<const VkGraphicsPipelineCreateInfo*>(this);
18737 }
18738
18739 bool operator==( GraphicsPipelineCreateInfo const& rhs ) const
18740 {
18741 return ( sType == rhs.sType )
18742 && ( pNext == rhs.pNext )
18743 && ( flags == rhs.flags )
18744 && ( stageCount == rhs.stageCount )
18745 && ( pStages == rhs.pStages )
18746 && ( pVertexInputState == rhs.pVertexInputState )
18747 && ( pInputAssemblyState == rhs.pInputAssemblyState )
18748 && ( pTessellationState == rhs.pTessellationState )
18749 && ( pViewportState == rhs.pViewportState )
18750 && ( pRasterizationState == rhs.pRasterizationState )
18751 && ( pMultisampleState == rhs.pMultisampleState )
18752 && ( pDepthStencilState == rhs.pDepthStencilState )
18753 && ( pColorBlendState == rhs.pColorBlendState )
18754 && ( pDynamicState == rhs.pDynamicState )
18755 && ( layout == rhs.layout )
18756 && ( renderPass == rhs.renderPass )
18757 && ( subpass == rhs.subpass )
18758 && ( basePipelineHandle == rhs.basePipelineHandle )
18759 && ( basePipelineIndex == rhs.basePipelineIndex );
18760 }
18761
18762 bool operator!=( GraphicsPipelineCreateInfo const& rhs ) const
18763 {
18764 return !operator==( rhs );
18765 }
18766
18767 private:
18768 StructureType sType;
18769
18770 public:
18771 const void* pNext;
18772 PipelineCreateFlags flags;
18773 uint32_t stageCount;
18774 const PipelineShaderStageCreateInfo* pStages;
18775 const PipelineVertexInputStateCreateInfo* pVertexInputState;
18776 const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState;
18777 const PipelineTessellationStateCreateInfo* pTessellationState;
18778 const PipelineViewportStateCreateInfo* pViewportState;
18779 const PipelineRasterizationStateCreateInfo* pRasterizationState;
18780 const PipelineMultisampleStateCreateInfo* pMultisampleState;
18781 const PipelineDepthStencilStateCreateInfo* pDepthStencilState;
18782 const PipelineColorBlendStateCreateInfo* pColorBlendState;
18783 const PipelineDynamicStateCreateInfo* pDynamicState;
18784 PipelineLayout layout;
18785 RenderPass renderPass;
18786 uint32_t subpass;
18787 Pipeline basePipelineHandle;
18788 int32_t basePipelineIndex;
18789 };
18790 static_assert( sizeof( GraphicsPipelineCreateInfo ) == sizeof( VkGraphicsPipelineCreateInfo ), "struct and wrapper have different size!" );
18791
18792 struct PhysicalDeviceLimits
18793 {
18794 operator const VkPhysicalDeviceLimits&() const
18795 {
18796 return *reinterpret_cast<const VkPhysicalDeviceLimits*>(this);
18797 }
18798
18799 bool operator==( PhysicalDeviceLimits const& rhs ) const
18800 {
18801 return ( maxImageDimension1D == rhs.maxImageDimension1D )
18802 && ( maxImageDimension2D == rhs.maxImageDimension2D )
18803 && ( maxImageDimension3D == rhs.maxImageDimension3D )
18804 && ( maxImageDimensionCube == rhs.maxImageDimensionCube )
18805 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
18806 && ( maxTexelBufferElements == rhs.maxTexelBufferElements )
18807 && ( maxUniformBufferRange == rhs.maxUniformBufferRange )
18808 && ( maxStorageBufferRange == rhs.maxStorageBufferRange )
18809 && ( maxPushConstantsSize == rhs.maxPushConstantsSize )
18810 && ( maxMemoryAllocationCount == rhs.maxMemoryAllocationCount )
18811 && ( maxSamplerAllocationCount == rhs.maxSamplerAllocationCount )
18812 && ( bufferImageGranularity == rhs.bufferImageGranularity )
18813 && ( sparseAddressSpaceSize == rhs.sparseAddressSpaceSize )
18814 && ( maxBoundDescriptorSets == rhs.maxBoundDescriptorSets )
18815 && ( maxPerStageDescriptorSamplers == rhs.maxPerStageDescriptorSamplers )
18816 && ( maxPerStageDescriptorUniformBuffers == rhs.maxPerStageDescriptorUniformBuffers )
18817 && ( maxPerStageDescriptorStorageBuffers == rhs.maxPerStageDescriptorStorageBuffers )
18818 && ( maxPerStageDescriptorSampledImages == rhs.maxPerStageDescriptorSampledImages )
18819 && ( maxPerStageDescriptorStorageImages == rhs.maxPerStageDescriptorStorageImages )
18820 && ( maxPerStageDescriptorInputAttachments == rhs.maxPerStageDescriptorInputAttachments )
18821 && ( maxPerStageResources == rhs.maxPerStageResources )
18822 && ( maxDescriptorSetSamplers == rhs.maxDescriptorSetSamplers )
18823 && ( maxDescriptorSetUniformBuffers == rhs.maxDescriptorSetUniformBuffers )
18824 && ( maxDescriptorSetUniformBuffersDynamic == rhs.maxDescriptorSetUniformBuffersDynamic )
18825 && ( maxDescriptorSetStorageBuffers == rhs.maxDescriptorSetStorageBuffers )
18826 && ( maxDescriptorSetStorageBuffersDynamic == rhs.maxDescriptorSetStorageBuffersDynamic )
18827 && ( maxDescriptorSetSampledImages == rhs.maxDescriptorSetSampledImages )
18828 && ( maxDescriptorSetStorageImages == rhs.maxDescriptorSetStorageImages )
18829 && ( maxDescriptorSetInputAttachments == rhs.maxDescriptorSetInputAttachments )
18830 && ( maxVertexInputAttributes == rhs.maxVertexInputAttributes )
18831 && ( maxVertexInputBindings == rhs.maxVertexInputBindings )
18832 && ( maxVertexInputAttributeOffset == rhs.maxVertexInputAttributeOffset )
18833 && ( maxVertexInputBindingStride == rhs.maxVertexInputBindingStride )
18834 && ( maxVertexOutputComponents == rhs.maxVertexOutputComponents )
18835 && ( maxTessellationGenerationLevel == rhs.maxTessellationGenerationLevel )
18836 && ( maxTessellationPatchSize == rhs.maxTessellationPatchSize )
18837 && ( maxTessellationControlPerVertexInputComponents == rhs.maxTessellationControlPerVertexInputComponents )
18838 && ( maxTessellationControlPerVertexOutputComponents == rhs.maxTessellationControlPerVertexOutputComponents )
18839 && ( maxTessellationControlPerPatchOutputComponents == rhs.maxTessellationControlPerPatchOutputComponents )
18840 && ( maxTessellationControlTotalOutputComponents == rhs.maxTessellationControlTotalOutputComponents )
18841 && ( maxTessellationEvaluationInputComponents == rhs.maxTessellationEvaluationInputComponents )
18842 && ( maxTessellationEvaluationOutputComponents == rhs.maxTessellationEvaluationOutputComponents )
18843 && ( maxGeometryShaderInvocations == rhs.maxGeometryShaderInvocations )
18844 && ( maxGeometryInputComponents == rhs.maxGeometryInputComponents )
18845 && ( maxGeometryOutputComponents == rhs.maxGeometryOutputComponents )
18846 && ( maxGeometryOutputVertices == rhs.maxGeometryOutputVertices )
18847 && ( maxGeometryTotalOutputComponents == rhs.maxGeometryTotalOutputComponents )
18848 && ( maxFragmentInputComponents == rhs.maxFragmentInputComponents )
18849 && ( maxFragmentOutputAttachments == rhs.maxFragmentOutputAttachments )
18850 && ( maxFragmentDualSrcAttachments == rhs.maxFragmentDualSrcAttachments )
18851 && ( maxFragmentCombinedOutputResources == rhs.maxFragmentCombinedOutputResources )
18852 && ( maxComputeSharedMemorySize == rhs.maxComputeSharedMemorySize )
18853 && ( memcmp( maxComputeWorkGroupCount, rhs.maxComputeWorkGroupCount, 3 * sizeof( uint32_t ) ) == 0 )
18854 && ( maxComputeWorkGroupInvocations == rhs.maxComputeWorkGroupInvocations )
18855 && ( memcmp( maxComputeWorkGroupSize, rhs.maxComputeWorkGroupSize, 3 * sizeof( uint32_t ) ) == 0 )
18856 && ( subPixelPrecisionBits == rhs.subPixelPrecisionBits )
18857 && ( subTexelPrecisionBits == rhs.subTexelPrecisionBits )
18858 && ( mipmapPrecisionBits == rhs.mipmapPrecisionBits )
18859 && ( maxDrawIndexedIndexValue == rhs.maxDrawIndexedIndexValue )
18860 && ( maxDrawIndirectCount == rhs.maxDrawIndirectCount )
18861 && ( maxSamplerLodBias == rhs.maxSamplerLodBias )
18862 && ( maxSamplerAnisotropy == rhs.maxSamplerAnisotropy )
18863 && ( maxViewports == rhs.maxViewports )
18864 && ( memcmp( maxViewportDimensions, rhs.maxViewportDimensions, 2 * sizeof( uint32_t ) ) == 0 )
18865 && ( memcmp( viewportBoundsRange, rhs.viewportBoundsRange, 2 * sizeof( float ) ) == 0 )
18866 && ( viewportSubPixelBits == rhs.viewportSubPixelBits )
18867 && ( minMemoryMapAlignment == rhs.minMemoryMapAlignment )
18868 && ( minTexelBufferOffsetAlignment == rhs.minTexelBufferOffsetAlignment )
18869 && ( minUniformBufferOffsetAlignment == rhs.minUniformBufferOffsetAlignment )
18870 && ( minStorageBufferOffsetAlignment == rhs.minStorageBufferOffsetAlignment )
18871 && ( minTexelOffset == rhs.minTexelOffset )
18872 && ( maxTexelOffset == rhs.maxTexelOffset )
18873 && ( minTexelGatherOffset == rhs.minTexelGatherOffset )
18874 && ( maxTexelGatherOffset == rhs.maxTexelGatherOffset )
18875 && ( minInterpolationOffset == rhs.minInterpolationOffset )
18876 && ( maxInterpolationOffset == rhs.maxInterpolationOffset )
18877 && ( subPixelInterpolationOffsetBits == rhs.subPixelInterpolationOffsetBits )
18878 && ( maxFramebufferWidth == rhs.maxFramebufferWidth )
18879 && ( maxFramebufferHeight == rhs.maxFramebufferHeight )
18880 && ( maxFramebufferLayers == rhs.maxFramebufferLayers )
18881 && ( framebufferColorSampleCounts == rhs.framebufferColorSampleCounts )
18882 && ( framebufferDepthSampleCounts == rhs.framebufferDepthSampleCounts )
18883 && ( framebufferStencilSampleCounts == rhs.framebufferStencilSampleCounts )
18884 && ( framebufferNoAttachmentsSampleCounts == rhs.framebufferNoAttachmentsSampleCounts )
18885 && ( maxColorAttachments == rhs.maxColorAttachments )
18886 && ( sampledImageColorSampleCounts == rhs.sampledImageColorSampleCounts )
18887 && ( sampledImageIntegerSampleCounts == rhs.sampledImageIntegerSampleCounts )
18888 && ( sampledImageDepthSampleCounts == rhs.sampledImageDepthSampleCounts )
18889 && ( sampledImageStencilSampleCounts == rhs.sampledImageStencilSampleCounts )
18890 && ( storageImageSampleCounts == rhs.storageImageSampleCounts )
18891 && ( maxSampleMaskWords == rhs.maxSampleMaskWords )
18892 && ( timestampComputeAndGraphics == rhs.timestampComputeAndGraphics )
18893 && ( timestampPeriod == rhs.timestampPeriod )
18894 && ( maxClipDistances == rhs.maxClipDistances )
18895 && ( maxCullDistances == rhs.maxCullDistances )
18896 && ( maxCombinedClipAndCullDistances == rhs.maxCombinedClipAndCullDistances )
18897 && ( discreteQueuePriorities == rhs.discreteQueuePriorities )
18898 && ( memcmp( pointSizeRange, rhs.pointSizeRange, 2 * sizeof( float ) ) == 0 )
18899 && ( memcmp( lineWidthRange, rhs.lineWidthRange, 2 * sizeof( float ) ) == 0 )
18900 && ( pointSizeGranularity == rhs.pointSizeGranularity )
18901 && ( lineWidthGranularity == rhs.lineWidthGranularity )
18902 && ( strictLines == rhs.strictLines )
18903 && ( standardSampleLocations == rhs.standardSampleLocations )
18904 && ( optimalBufferCopyOffsetAlignment == rhs.optimalBufferCopyOffsetAlignment )
18905 && ( optimalBufferCopyRowPitchAlignment == rhs.optimalBufferCopyRowPitchAlignment )
18906 && ( nonCoherentAtomSize == rhs.nonCoherentAtomSize );
18907 }
18908
18909 bool operator!=( PhysicalDeviceLimits const& rhs ) const
18910 {
18911 return !operator==( rhs );
18912 }
18913
18914 uint32_t maxImageDimension1D;
18915 uint32_t maxImageDimension2D;
18916 uint32_t maxImageDimension3D;
18917 uint32_t maxImageDimensionCube;
18918 uint32_t maxImageArrayLayers;
18919 uint32_t maxTexelBufferElements;
18920 uint32_t maxUniformBufferRange;
18921 uint32_t maxStorageBufferRange;
18922 uint32_t maxPushConstantsSize;
18923 uint32_t maxMemoryAllocationCount;
18924 uint32_t maxSamplerAllocationCount;
18925 DeviceSize bufferImageGranularity;
18926 DeviceSize sparseAddressSpaceSize;
18927 uint32_t maxBoundDescriptorSets;
18928 uint32_t maxPerStageDescriptorSamplers;
18929 uint32_t maxPerStageDescriptorUniformBuffers;
18930 uint32_t maxPerStageDescriptorStorageBuffers;
18931 uint32_t maxPerStageDescriptorSampledImages;
18932 uint32_t maxPerStageDescriptorStorageImages;
18933 uint32_t maxPerStageDescriptorInputAttachments;
18934 uint32_t maxPerStageResources;
18935 uint32_t maxDescriptorSetSamplers;
18936 uint32_t maxDescriptorSetUniformBuffers;
18937 uint32_t maxDescriptorSetUniformBuffersDynamic;
18938 uint32_t maxDescriptorSetStorageBuffers;
18939 uint32_t maxDescriptorSetStorageBuffersDynamic;
18940 uint32_t maxDescriptorSetSampledImages;
18941 uint32_t maxDescriptorSetStorageImages;
18942 uint32_t maxDescriptorSetInputAttachments;
18943 uint32_t maxVertexInputAttributes;
18944 uint32_t maxVertexInputBindings;
18945 uint32_t maxVertexInputAttributeOffset;
18946 uint32_t maxVertexInputBindingStride;
18947 uint32_t maxVertexOutputComponents;
18948 uint32_t maxTessellationGenerationLevel;
18949 uint32_t maxTessellationPatchSize;
18950 uint32_t maxTessellationControlPerVertexInputComponents;
18951 uint32_t maxTessellationControlPerVertexOutputComponents;
18952 uint32_t maxTessellationControlPerPatchOutputComponents;
18953 uint32_t maxTessellationControlTotalOutputComponents;
18954 uint32_t maxTessellationEvaluationInputComponents;
18955 uint32_t maxTessellationEvaluationOutputComponents;
18956 uint32_t maxGeometryShaderInvocations;
18957 uint32_t maxGeometryInputComponents;
18958 uint32_t maxGeometryOutputComponents;
18959 uint32_t maxGeometryOutputVertices;
18960 uint32_t maxGeometryTotalOutputComponents;
18961 uint32_t maxFragmentInputComponents;
18962 uint32_t maxFragmentOutputAttachments;
18963 uint32_t maxFragmentDualSrcAttachments;
18964 uint32_t maxFragmentCombinedOutputResources;
18965 uint32_t maxComputeSharedMemorySize;
18966 uint32_t maxComputeWorkGroupCount[3];
18967 uint32_t maxComputeWorkGroupInvocations;
18968 uint32_t maxComputeWorkGroupSize[3];
18969 uint32_t subPixelPrecisionBits;
18970 uint32_t subTexelPrecisionBits;
18971 uint32_t mipmapPrecisionBits;
18972 uint32_t maxDrawIndexedIndexValue;
18973 uint32_t maxDrawIndirectCount;
18974 float maxSamplerLodBias;
18975 float maxSamplerAnisotropy;
18976 uint32_t maxViewports;
18977 uint32_t maxViewportDimensions[2];
18978 float viewportBoundsRange[2];
18979 uint32_t viewportSubPixelBits;
18980 size_t minMemoryMapAlignment;
18981 DeviceSize minTexelBufferOffsetAlignment;
18982 DeviceSize minUniformBufferOffsetAlignment;
18983 DeviceSize minStorageBufferOffsetAlignment;
18984 int32_t minTexelOffset;
18985 uint32_t maxTexelOffset;
18986 int32_t minTexelGatherOffset;
18987 uint32_t maxTexelGatherOffset;
18988 float minInterpolationOffset;
18989 float maxInterpolationOffset;
18990 uint32_t subPixelInterpolationOffsetBits;
18991 uint32_t maxFramebufferWidth;
18992 uint32_t maxFramebufferHeight;
18993 uint32_t maxFramebufferLayers;
18994 SampleCountFlags framebufferColorSampleCounts;
18995 SampleCountFlags framebufferDepthSampleCounts;
18996 SampleCountFlags framebufferStencilSampleCounts;
18997 SampleCountFlags framebufferNoAttachmentsSampleCounts;
18998 uint32_t maxColorAttachments;
18999 SampleCountFlags sampledImageColorSampleCounts;
19000 SampleCountFlags sampledImageIntegerSampleCounts;
19001 SampleCountFlags sampledImageDepthSampleCounts;
19002 SampleCountFlags sampledImageStencilSampleCounts;
19003 SampleCountFlags storageImageSampleCounts;
19004 uint32_t maxSampleMaskWords;
19005 Bool32 timestampComputeAndGraphics;
19006 float timestampPeriod;
19007 uint32_t maxClipDistances;
19008 uint32_t maxCullDistances;
19009 uint32_t maxCombinedClipAndCullDistances;
19010 uint32_t discreteQueuePriorities;
19011 float pointSizeRange[2];
19012 float lineWidthRange[2];
19013 float pointSizeGranularity;
19014 float lineWidthGranularity;
19015 Bool32 strictLines;
19016 Bool32 standardSampleLocations;
19017 DeviceSize optimalBufferCopyOffsetAlignment;
19018 DeviceSize optimalBufferCopyRowPitchAlignment;
19019 DeviceSize nonCoherentAtomSize;
19020 };
19021 static_assert( sizeof( PhysicalDeviceLimits ) == sizeof( VkPhysicalDeviceLimits ), "struct and wrapper have different size!" );
19022
19023 struct PhysicalDeviceProperties
19024 {
19025 operator const VkPhysicalDeviceProperties&() const
19026 {
19027 return *reinterpret_cast<const VkPhysicalDeviceProperties*>(this);
19028 }
19029
19030 bool operator==( PhysicalDeviceProperties const& rhs ) const
19031 {
19032 return ( apiVersion == rhs.apiVersion )
19033 && ( driverVersion == rhs.driverVersion )
19034 && ( vendorID == rhs.vendorID )
19035 && ( deviceID == rhs.deviceID )
19036 && ( deviceType == rhs.deviceType )
19037 && ( memcmp( deviceName, rhs.deviceName, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE * sizeof( char ) ) == 0 )
19038 && ( memcmp( pipelineCacheUUID, rhs.pipelineCacheUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
19039 && ( limits == rhs.limits )
19040 && ( sparseProperties == rhs.sparseProperties );
19041 }
19042
19043 bool operator!=( PhysicalDeviceProperties const& rhs ) const
19044 {
19045 return !operator==( rhs );
19046 }
19047
19048 uint32_t apiVersion;
19049 uint32_t driverVersion;
19050 uint32_t vendorID;
19051 uint32_t deviceID;
19052 PhysicalDeviceType deviceType;
19053 char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
19054 uint8_t pipelineCacheUUID[VK_UUID_SIZE];
19055 PhysicalDeviceLimits limits;
19056 PhysicalDeviceSparseProperties sparseProperties;
19057 };
19058 static_assert( sizeof( PhysicalDeviceProperties ) == sizeof( VkPhysicalDeviceProperties ), "struct and wrapper have different size!" );
19059
Mark Young39389872017-01-19 21:10:49 -070019060 struct PhysicalDeviceProperties2KHR
19061 {
19062 operator const VkPhysicalDeviceProperties2KHR&() const
19063 {
19064 return *reinterpret_cast<const VkPhysicalDeviceProperties2KHR*>(this);
19065 }
19066
19067 bool operator==( PhysicalDeviceProperties2KHR const& rhs ) const
19068 {
19069 return ( sType == rhs.sType )
19070 && ( pNext == rhs.pNext )
19071 && ( properties == rhs.properties );
19072 }
19073
19074 bool operator!=( PhysicalDeviceProperties2KHR const& rhs ) const
19075 {
19076 return !operator==( rhs );
19077 }
19078
19079 private:
19080 StructureType sType;
19081
19082 public:
19083 void* pNext;
19084 PhysicalDeviceProperties properties;
19085 };
19086 static_assert( sizeof( PhysicalDeviceProperties2KHR ) == sizeof( VkPhysicalDeviceProperties2KHR ), "struct and wrapper have different size!" );
19087
19088 struct ImageFormatProperties2KHR
19089 {
19090 operator const VkImageFormatProperties2KHR&() const
19091 {
19092 return *reinterpret_cast<const VkImageFormatProperties2KHR*>(this);
19093 }
19094
19095 bool operator==( ImageFormatProperties2KHR const& rhs ) const
19096 {
19097 return ( sType == rhs.sType )
19098 && ( pNext == rhs.pNext )
19099 && ( imageFormatProperties == rhs.imageFormatProperties );
19100 }
19101
19102 bool operator!=( ImageFormatProperties2KHR const& rhs ) const
19103 {
19104 return !operator==( rhs );
19105 }
19106
19107 private:
19108 StructureType sType;
19109
19110 public:
19111 void* pNext;
19112 ImageFormatProperties imageFormatProperties;
19113 };
19114 static_assert( sizeof( ImageFormatProperties2KHR ) == sizeof( VkImageFormatProperties2KHR ), "struct and wrapper have different size!" );
19115
19116 struct PhysicalDeviceSparseImageFormatInfo2KHR
19117 {
19118 PhysicalDeviceSparseImageFormatInfo2KHR( Format format_ = Format::eUndefined, ImageType type_ = ImageType::e1D, SampleCountFlagBits samples_ = SampleCountFlagBits::e1, ImageUsageFlags usage_ = ImageUsageFlags(), ImageTiling tiling_ = ImageTiling::eOptimal )
19119 : sType( StructureType::ePhysicalDeviceSparseImageFormatInfo2KHR )
19120 , pNext( nullptr )
19121 , format( format_ )
19122 , type( type_ )
19123 , samples( samples_ )
19124 , usage( usage_ )
19125 , tiling( tiling_ )
19126 {
19127 }
19128
19129 PhysicalDeviceSparseImageFormatInfo2KHR( VkPhysicalDeviceSparseImageFormatInfo2KHR const & rhs )
19130 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019131 memcpy( this, &rhs, sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070019132 }
19133
19134 PhysicalDeviceSparseImageFormatInfo2KHR& operator=( VkPhysicalDeviceSparseImageFormatInfo2KHR const & rhs )
19135 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019136 memcpy( this, &rhs, sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070019137 return *this;
19138 }
Mark Young39389872017-01-19 21:10:49 -070019139 PhysicalDeviceSparseImageFormatInfo2KHR& setPNext( const void* pNext_ )
19140 {
19141 pNext = pNext_;
19142 return *this;
19143 }
19144
19145 PhysicalDeviceSparseImageFormatInfo2KHR& setFormat( Format format_ )
19146 {
19147 format = format_;
19148 return *this;
19149 }
19150
19151 PhysicalDeviceSparseImageFormatInfo2KHR& setType( ImageType type_ )
19152 {
19153 type = type_;
19154 return *this;
19155 }
19156
19157 PhysicalDeviceSparseImageFormatInfo2KHR& setSamples( SampleCountFlagBits samples_ )
19158 {
19159 samples = samples_;
19160 return *this;
19161 }
19162
19163 PhysicalDeviceSparseImageFormatInfo2KHR& setUsage( ImageUsageFlags usage_ )
19164 {
19165 usage = usage_;
19166 return *this;
19167 }
19168
19169 PhysicalDeviceSparseImageFormatInfo2KHR& setTiling( ImageTiling tiling_ )
19170 {
19171 tiling = tiling_;
19172 return *this;
19173 }
19174
19175 operator const VkPhysicalDeviceSparseImageFormatInfo2KHR&() const
19176 {
19177 return *reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>(this);
19178 }
19179
19180 bool operator==( PhysicalDeviceSparseImageFormatInfo2KHR const& rhs ) const
19181 {
19182 return ( sType == rhs.sType )
19183 && ( pNext == rhs.pNext )
19184 && ( format == rhs.format )
19185 && ( type == rhs.type )
19186 && ( samples == rhs.samples )
19187 && ( usage == rhs.usage )
19188 && ( tiling == rhs.tiling );
19189 }
19190
19191 bool operator!=( PhysicalDeviceSparseImageFormatInfo2KHR const& rhs ) const
19192 {
19193 return !operator==( rhs );
19194 }
19195
19196 private:
19197 StructureType sType;
19198
19199 public:
19200 const void* pNext;
19201 Format format;
19202 ImageType type;
19203 SampleCountFlagBits samples;
19204 ImageUsageFlags usage;
19205 ImageTiling tiling;
19206 };
19207 static_assert( sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) == sizeof( VkPhysicalDeviceSparseImageFormatInfo2KHR ), "struct and wrapper have different size!" );
19208
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019209 struct SampleLocationsInfoEXT
19210 {
19211 SampleLocationsInfoEXT( SampleCountFlagBits sampleLocationsPerPixel_ = SampleCountFlagBits::e1, Extent2D sampleLocationGridSize_ = Extent2D(), uint32_t sampleLocationsCount_ = 0, const SampleLocationEXT* pSampleLocations_ = nullptr )
19212 : sType( StructureType::eSampleLocationsInfoEXT )
19213 , pNext( nullptr )
19214 , sampleLocationsPerPixel( sampleLocationsPerPixel_ )
19215 , sampleLocationGridSize( sampleLocationGridSize_ )
19216 , sampleLocationsCount( sampleLocationsCount_ )
19217 , pSampleLocations( pSampleLocations_ )
19218 {
19219 }
19220
19221 SampleLocationsInfoEXT( VkSampleLocationsInfoEXT const & rhs )
19222 {
19223 memcpy( this, &rhs, sizeof( SampleLocationsInfoEXT ) );
19224 }
19225
19226 SampleLocationsInfoEXT& operator=( VkSampleLocationsInfoEXT const & rhs )
19227 {
19228 memcpy( this, &rhs, sizeof( SampleLocationsInfoEXT ) );
19229 return *this;
19230 }
19231 SampleLocationsInfoEXT& setPNext( const void* pNext_ )
19232 {
19233 pNext = pNext_;
19234 return *this;
19235 }
19236
19237 SampleLocationsInfoEXT& setSampleLocationsPerPixel( SampleCountFlagBits sampleLocationsPerPixel_ )
19238 {
19239 sampleLocationsPerPixel = sampleLocationsPerPixel_;
19240 return *this;
19241 }
19242
19243 SampleLocationsInfoEXT& setSampleLocationGridSize( Extent2D sampleLocationGridSize_ )
19244 {
19245 sampleLocationGridSize = sampleLocationGridSize_;
19246 return *this;
19247 }
19248
19249 SampleLocationsInfoEXT& setSampleLocationsCount( uint32_t sampleLocationsCount_ )
19250 {
19251 sampleLocationsCount = sampleLocationsCount_;
19252 return *this;
19253 }
19254
19255 SampleLocationsInfoEXT& setPSampleLocations( const SampleLocationEXT* pSampleLocations_ )
19256 {
19257 pSampleLocations = pSampleLocations_;
19258 return *this;
19259 }
19260
19261 operator const VkSampleLocationsInfoEXT&() const
19262 {
19263 return *reinterpret_cast<const VkSampleLocationsInfoEXT*>(this);
19264 }
19265
19266 bool operator==( SampleLocationsInfoEXT const& rhs ) const
19267 {
19268 return ( sType == rhs.sType )
19269 && ( pNext == rhs.pNext )
19270 && ( sampleLocationsPerPixel == rhs.sampleLocationsPerPixel )
19271 && ( sampleLocationGridSize == rhs.sampleLocationGridSize )
19272 && ( sampleLocationsCount == rhs.sampleLocationsCount )
19273 && ( pSampleLocations == rhs.pSampleLocations );
19274 }
19275
19276 bool operator!=( SampleLocationsInfoEXT const& rhs ) const
19277 {
19278 return !operator==( rhs );
19279 }
19280
19281 private:
19282 StructureType sType;
19283
19284 public:
19285 const void* pNext;
19286 SampleCountFlagBits sampleLocationsPerPixel;
19287 Extent2D sampleLocationGridSize;
19288 uint32_t sampleLocationsCount;
19289 const SampleLocationEXT* pSampleLocations;
19290 };
19291 static_assert( sizeof( SampleLocationsInfoEXT ) == sizeof( VkSampleLocationsInfoEXT ), "struct and wrapper have different size!" );
19292
19293 struct AttachmentSampleLocationsEXT
19294 {
19295 AttachmentSampleLocationsEXT( uint32_t attachmentIndex_ = 0, SampleLocationsInfoEXT sampleLocationsInfo_ = SampleLocationsInfoEXT() )
19296 : attachmentIndex( attachmentIndex_ )
19297 , sampleLocationsInfo( sampleLocationsInfo_ )
19298 {
19299 }
19300
19301 AttachmentSampleLocationsEXT( VkAttachmentSampleLocationsEXT const & rhs )
19302 {
19303 memcpy( this, &rhs, sizeof( AttachmentSampleLocationsEXT ) );
19304 }
19305
19306 AttachmentSampleLocationsEXT& operator=( VkAttachmentSampleLocationsEXT const & rhs )
19307 {
19308 memcpy( this, &rhs, sizeof( AttachmentSampleLocationsEXT ) );
19309 return *this;
19310 }
19311 AttachmentSampleLocationsEXT& setAttachmentIndex( uint32_t attachmentIndex_ )
19312 {
19313 attachmentIndex = attachmentIndex_;
19314 return *this;
19315 }
19316
19317 AttachmentSampleLocationsEXT& setSampleLocationsInfo( SampleLocationsInfoEXT sampleLocationsInfo_ )
19318 {
19319 sampleLocationsInfo = sampleLocationsInfo_;
19320 return *this;
19321 }
19322
19323 operator const VkAttachmentSampleLocationsEXT&() const
19324 {
19325 return *reinterpret_cast<const VkAttachmentSampleLocationsEXT*>(this);
19326 }
19327
19328 bool operator==( AttachmentSampleLocationsEXT const& rhs ) const
19329 {
19330 return ( attachmentIndex == rhs.attachmentIndex )
19331 && ( sampleLocationsInfo == rhs.sampleLocationsInfo );
19332 }
19333
19334 bool operator!=( AttachmentSampleLocationsEXT const& rhs ) const
19335 {
19336 return !operator==( rhs );
19337 }
19338
19339 uint32_t attachmentIndex;
19340 SampleLocationsInfoEXT sampleLocationsInfo;
19341 };
19342 static_assert( sizeof( AttachmentSampleLocationsEXT ) == sizeof( VkAttachmentSampleLocationsEXT ), "struct and wrapper have different size!" );
19343
19344 struct SubpassSampleLocationsEXT
19345 {
19346 SubpassSampleLocationsEXT( uint32_t subpassIndex_ = 0, SampleLocationsInfoEXT sampleLocationsInfo_ = SampleLocationsInfoEXT() )
19347 : subpassIndex( subpassIndex_ )
19348 , sampleLocationsInfo( sampleLocationsInfo_ )
19349 {
19350 }
19351
19352 SubpassSampleLocationsEXT( VkSubpassSampleLocationsEXT const & rhs )
19353 {
19354 memcpy( this, &rhs, sizeof( SubpassSampleLocationsEXT ) );
19355 }
19356
19357 SubpassSampleLocationsEXT& operator=( VkSubpassSampleLocationsEXT const & rhs )
19358 {
19359 memcpy( this, &rhs, sizeof( SubpassSampleLocationsEXT ) );
19360 return *this;
19361 }
19362 SubpassSampleLocationsEXT& setSubpassIndex( uint32_t subpassIndex_ )
19363 {
19364 subpassIndex = subpassIndex_;
19365 return *this;
19366 }
19367
19368 SubpassSampleLocationsEXT& setSampleLocationsInfo( SampleLocationsInfoEXT sampleLocationsInfo_ )
19369 {
19370 sampleLocationsInfo = sampleLocationsInfo_;
19371 return *this;
19372 }
19373
19374 operator const VkSubpassSampleLocationsEXT&() const
19375 {
19376 return *reinterpret_cast<const VkSubpassSampleLocationsEXT*>(this);
19377 }
19378
19379 bool operator==( SubpassSampleLocationsEXT const& rhs ) const
19380 {
19381 return ( subpassIndex == rhs.subpassIndex )
19382 && ( sampleLocationsInfo == rhs.sampleLocationsInfo );
19383 }
19384
19385 bool operator!=( SubpassSampleLocationsEXT const& rhs ) const
19386 {
19387 return !operator==( rhs );
19388 }
19389
19390 uint32_t subpassIndex;
19391 SampleLocationsInfoEXT sampleLocationsInfo;
19392 };
19393 static_assert( sizeof( SubpassSampleLocationsEXT ) == sizeof( VkSubpassSampleLocationsEXT ), "struct and wrapper have different size!" );
19394
19395 struct RenderPassSampleLocationsBeginInfoEXT
19396 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060019397 RenderPassSampleLocationsBeginInfoEXT( uint32_t attachmentInitialSampleLocationsCount_ = 0, const AttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations_ = nullptr, uint32_t postSubpassSampleLocationsCount_ = 0, const SubpassSampleLocationsEXT* pPostSubpassSampleLocations_ = nullptr )
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019398 : sType( StructureType::eRenderPassSampleLocationsBeginInfoEXT )
19399 , pNext( nullptr )
19400 , attachmentInitialSampleLocationsCount( attachmentInitialSampleLocationsCount_ )
19401 , pAttachmentInitialSampleLocations( pAttachmentInitialSampleLocations_ )
19402 , postSubpassSampleLocationsCount( postSubpassSampleLocationsCount_ )
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060019403 , pPostSubpassSampleLocations( pPostSubpassSampleLocations_ )
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019404 {
19405 }
19406
19407 RenderPassSampleLocationsBeginInfoEXT( VkRenderPassSampleLocationsBeginInfoEXT const & rhs )
19408 {
19409 memcpy( this, &rhs, sizeof( RenderPassSampleLocationsBeginInfoEXT ) );
19410 }
19411
19412 RenderPassSampleLocationsBeginInfoEXT& operator=( VkRenderPassSampleLocationsBeginInfoEXT const & rhs )
19413 {
19414 memcpy( this, &rhs, sizeof( RenderPassSampleLocationsBeginInfoEXT ) );
19415 return *this;
19416 }
19417 RenderPassSampleLocationsBeginInfoEXT& setPNext( const void* pNext_ )
19418 {
19419 pNext = pNext_;
19420 return *this;
19421 }
19422
19423 RenderPassSampleLocationsBeginInfoEXT& setAttachmentInitialSampleLocationsCount( uint32_t attachmentInitialSampleLocationsCount_ )
19424 {
19425 attachmentInitialSampleLocationsCount = attachmentInitialSampleLocationsCount_;
19426 return *this;
19427 }
19428
19429 RenderPassSampleLocationsBeginInfoEXT& setPAttachmentInitialSampleLocations( const AttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations_ )
19430 {
19431 pAttachmentInitialSampleLocations = pAttachmentInitialSampleLocations_;
19432 return *this;
19433 }
19434
19435 RenderPassSampleLocationsBeginInfoEXT& setPostSubpassSampleLocationsCount( uint32_t postSubpassSampleLocationsCount_ )
19436 {
19437 postSubpassSampleLocationsCount = postSubpassSampleLocationsCount_;
19438 return *this;
19439 }
19440
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060019441 RenderPassSampleLocationsBeginInfoEXT& setPPostSubpassSampleLocations( const SubpassSampleLocationsEXT* pPostSubpassSampleLocations_ )
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019442 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060019443 pPostSubpassSampleLocations = pPostSubpassSampleLocations_;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019444 return *this;
19445 }
19446
19447 operator const VkRenderPassSampleLocationsBeginInfoEXT&() const
19448 {
19449 return *reinterpret_cast<const VkRenderPassSampleLocationsBeginInfoEXT*>(this);
19450 }
19451
19452 bool operator==( RenderPassSampleLocationsBeginInfoEXT const& rhs ) const
19453 {
19454 return ( sType == rhs.sType )
19455 && ( pNext == rhs.pNext )
19456 && ( attachmentInitialSampleLocationsCount == rhs.attachmentInitialSampleLocationsCount )
19457 && ( pAttachmentInitialSampleLocations == rhs.pAttachmentInitialSampleLocations )
19458 && ( postSubpassSampleLocationsCount == rhs.postSubpassSampleLocationsCount )
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060019459 && ( pPostSubpassSampleLocations == rhs.pPostSubpassSampleLocations );
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019460 }
19461
19462 bool operator!=( RenderPassSampleLocationsBeginInfoEXT const& rhs ) const
19463 {
19464 return !operator==( rhs );
19465 }
19466
19467 private:
19468 StructureType sType;
19469
19470 public:
19471 const void* pNext;
19472 uint32_t attachmentInitialSampleLocationsCount;
19473 const AttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations;
19474 uint32_t postSubpassSampleLocationsCount;
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060019475 const SubpassSampleLocationsEXT* pPostSubpassSampleLocations;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019476 };
19477 static_assert( sizeof( RenderPassSampleLocationsBeginInfoEXT ) == sizeof( VkRenderPassSampleLocationsBeginInfoEXT ), "struct and wrapper have different size!" );
19478
19479 struct PipelineSampleLocationsStateCreateInfoEXT
19480 {
19481 PipelineSampleLocationsStateCreateInfoEXT( Bool32 sampleLocationsEnable_ = 0, SampleLocationsInfoEXT sampleLocationsInfo_ = SampleLocationsInfoEXT() )
19482 : sType( StructureType::ePipelineSampleLocationsStateCreateInfoEXT )
19483 , pNext( nullptr )
19484 , sampleLocationsEnable( sampleLocationsEnable_ )
19485 , sampleLocationsInfo( sampleLocationsInfo_ )
19486 {
19487 }
19488
19489 PipelineSampleLocationsStateCreateInfoEXT( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs )
19490 {
19491 memcpy( this, &rhs, sizeof( PipelineSampleLocationsStateCreateInfoEXT ) );
19492 }
19493
19494 PipelineSampleLocationsStateCreateInfoEXT& operator=( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs )
19495 {
19496 memcpy( this, &rhs, sizeof( PipelineSampleLocationsStateCreateInfoEXT ) );
19497 return *this;
19498 }
19499 PipelineSampleLocationsStateCreateInfoEXT& setPNext( const void* pNext_ )
19500 {
19501 pNext = pNext_;
19502 return *this;
19503 }
19504
19505 PipelineSampleLocationsStateCreateInfoEXT& setSampleLocationsEnable( Bool32 sampleLocationsEnable_ )
19506 {
19507 sampleLocationsEnable = sampleLocationsEnable_;
19508 return *this;
19509 }
19510
19511 PipelineSampleLocationsStateCreateInfoEXT& setSampleLocationsInfo( SampleLocationsInfoEXT sampleLocationsInfo_ )
19512 {
19513 sampleLocationsInfo = sampleLocationsInfo_;
19514 return *this;
19515 }
19516
19517 operator const VkPipelineSampleLocationsStateCreateInfoEXT&() const
19518 {
19519 return *reinterpret_cast<const VkPipelineSampleLocationsStateCreateInfoEXT*>(this);
19520 }
19521
19522 bool operator==( PipelineSampleLocationsStateCreateInfoEXT const& rhs ) const
19523 {
19524 return ( sType == rhs.sType )
19525 && ( pNext == rhs.pNext )
19526 && ( sampleLocationsEnable == rhs.sampleLocationsEnable )
19527 && ( sampleLocationsInfo == rhs.sampleLocationsInfo );
19528 }
19529
19530 bool operator!=( PipelineSampleLocationsStateCreateInfoEXT const& rhs ) const
19531 {
19532 return !operator==( rhs );
19533 }
19534
19535 private:
19536 StructureType sType;
19537
19538 public:
19539 const void* pNext;
19540 Bool32 sampleLocationsEnable;
19541 SampleLocationsInfoEXT sampleLocationsInfo;
19542 };
19543 static_assert( sizeof( PipelineSampleLocationsStateCreateInfoEXT ) == sizeof( VkPipelineSampleLocationsStateCreateInfoEXT ), "struct and wrapper have different size!" );
19544
19545 struct PhysicalDeviceSampleLocationsPropertiesEXT
19546 {
19547 operator const VkPhysicalDeviceSampleLocationsPropertiesEXT&() const
19548 {
19549 return *reinterpret_cast<const VkPhysicalDeviceSampleLocationsPropertiesEXT*>(this);
19550 }
19551
19552 bool operator==( PhysicalDeviceSampleLocationsPropertiesEXT const& rhs ) const
19553 {
19554 return ( sType == rhs.sType )
19555 && ( pNext == rhs.pNext )
19556 && ( sampleLocationSampleCounts == rhs.sampleLocationSampleCounts )
19557 && ( maxSampleLocationGridSize == rhs.maxSampleLocationGridSize )
19558 && ( memcmp( sampleLocationCoordinateRange, rhs.sampleLocationCoordinateRange, 2 * sizeof( float ) ) == 0 )
19559 && ( sampleLocationSubPixelBits == rhs.sampleLocationSubPixelBits )
19560 && ( variableSampleLocations == rhs.variableSampleLocations );
19561 }
19562
19563 bool operator!=( PhysicalDeviceSampleLocationsPropertiesEXT const& rhs ) const
19564 {
19565 return !operator==( rhs );
19566 }
19567
19568 private:
19569 StructureType sType;
19570
19571 public:
19572 void* pNext;
19573 SampleCountFlags sampleLocationSampleCounts;
19574 Extent2D maxSampleLocationGridSize;
19575 float sampleLocationCoordinateRange[2];
19576 uint32_t sampleLocationSubPixelBits;
19577 Bool32 variableSampleLocations;
19578 };
19579 static_assert( sizeof( PhysicalDeviceSampleLocationsPropertiesEXT ) == sizeof( VkPhysicalDeviceSampleLocationsPropertiesEXT ), "struct and wrapper have different size!" );
19580
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019581 enum class AttachmentDescriptionFlagBits
19582 {
19583 eMayAlias = VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT
19584 };
19585
19586 using AttachmentDescriptionFlags = Flags<AttachmentDescriptionFlagBits, VkAttachmentDescriptionFlags>;
19587
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019588 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator|( AttachmentDescriptionFlagBits bit0, AttachmentDescriptionFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019589 {
19590 return AttachmentDescriptionFlags( bit0 ) | bit1;
19591 }
19592
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019593 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator~( AttachmentDescriptionFlagBits bits )
19594 {
19595 return ~( AttachmentDescriptionFlags( bits ) );
19596 }
19597
19598 template <> struct FlagTraits<AttachmentDescriptionFlagBits>
19599 {
19600 enum
19601 {
19602 allFlags = VkFlags(AttachmentDescriptionFlagBits::eMayAlias)
19603 };
19604 };
19605
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019606 struct AttachmentDescription
19607 {
19608 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 )
19609 : flags( flags_ )
19610 , format( format_ )
19611 , samples( samples_ )
19612 , loadOp( loadOp_ )
19613 , storeOp( storeOp_ )
19614 , stencilLoadOp( stencilLoadOp_ )
19615 , stencilStoreOp( stencilStoreOp_ )
19616 , initialLayout( initialLayout_ )
19617 , finalLayout( finalLayout_ )
19618 {
19619 }
19620
19621 AttachmentDescription( VkAttachmentDescription const & rhs )
19622 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019623 memcpy( this, &rhs, sizeof( AttachmentDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019624 }
19625
19626 AttachmentDescription& operator=( VkAttachmentDescription const & rhs )
19627 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019628 memcpy( this, &rhs, sizeof( AttachmentDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019629 return *this;
19630 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019631 AttachmentDescription& setFlags( AttachmentDescriptionFlags flags_ )
19632 {
19633 flags = flags_;
19634 return *this;
19635 }
19636
19637 AttachmentDescription& setFormat( Format format_ )
19638 {
19639 format = format_;
19640 return *this;
19641 }
19642
19643 AttachmentDescription& setSamples( SampleCountFlagBits samples_ )
19644 {
19645 samples = samples_;
19646 return *this;
19647 }
19648
19649 AttachmentDescription& setLoadOp( AttachmentLoadOp loadOp_ )
19650 {
19651 loadOp = loadOp_;
19652 return *this;
19653 }
19654
19655 AttachmentDescription& setStoreOp( AttachmentStoreOp storeOp_ )
19656 {
19657 storeOp = storeOp_;
19658 return *this;
19659 }
19660
19661 AttachmentDescription& setStencilLoadOp( AttachmentLoadOp stencilLoadOp_ )
19662 {
19663 stencilLoadOp = stencilLoadOp_;
19664 return *this;
19665 }
19666
19667 AttachmentDescription& setStencilStoreOp( AttachmentStoreOp stencilStoreOp_ )
19668 {
19669 stencilStoreOp = stencilStoreOp_;
19670 return *this;
19671 }
19672
19673 AttachmentDescription& setInitialLayout( ImageLayout initialLayout_ )
19674 {
19675 initialLayout = initialLayout_;
19676 return *this;
19677 }
19678
19679 AttachmentDescription& setFinalLayout( ImageLayout finalLayout_ )
19680 {
19681 finalLayout = finalLayout_;
19682 return *this;
19683 }
19684
19685 operator const VkAttachmentDescription&() const
19686 {
19687 return *reinterpret_cast<const VkAttachmentDescription*>(this);
19688 }
19689
19690 bool operator==( AttachmentDescription const& rhs ) const
19691 {
19692 return ( flags == rhs.flags )
19693 && ( format == rhs.format )
19694 && ( samples == rhs.samples )
19695 && ( loadOp == rhs.loadOp )
19696 && ( storeOp == rhs.storeOp )
19697 && ( stencilLoadOp == rhs.stencilLoadOp )
19698 && ( stencilStoreOp == rhs.stencilStoreOp )
19699 && ( initialLayout == rhs.initialLayout )
19700 && ( finalLayout == rhs.finalLayout );
19701 }
19702
19703 bool operator!=( AttachmentDescription const& rhs ) const
19704 {
19705 return !operator==( rhs );
19706 }
19707
19708 AttachmentDescriptionFlags flags;
19709 Format format;
19710 SampleCountFlagBits samples;
19711 AttachmentLoadOp loadOp;
19712 AttachmentStoreOp storeOp;
19713 AttachmentLoadOp stencilLoadOp;
19714 AttachmentStoreOp stencilStoreOp;
19715 ImageLayout initialLayout;
19716 ImageLayout finalLayout;
19717 };
19718 static_assert( sizeof( AttachmentDescription ) == sizeof( VkAttachmentDescription ), "struct and wrapper have different size!" );
19719
19720 enum class StencilFaceFlagBits
19721 {
19722 eFront = VK_STENCIL_FACE_FRONT_BIT,
19723 eBack = VK_STENCIL_FACE_BACK_BIT,
19724 eVkStencilFrontAndBack = VK_STENCIL_FRONT_AND_BACK
19725 };
19726
19727 using StencilFaceFlags = Flags<StencilFaceFlagBits, VkStencilFaceFlags>;
19728
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019729 VULKAN_HPP_INLINE StencilFaceFlags operator|( StencilFaceFlagBits bit0, StencilFaceFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019730 {
19731 return StencilFaceFlags( bit0 ) | bit1;
19732 }
19733
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019734 VULKAN_HPP_INLINE StencilFaceFlags operator~( StencilFaceFlagBits bits )
19735 {
19736 return ~( StencilFaceFlags( bits ) );
19737 }
19738
19739 template <> struct FlagTraits<StencilFaceFlagBits>
19740 {
19741 enum
19742 {
19743 allFlags = VkFlags(StencilFaceFlagBits::eFront) | VkFlags(StencilFaceFlagBits::eBack) | VkFlags(StencilFaceFlagBits::eVkStencilFrontAndBack)
19744 };
19745 };
19746
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019747 enum class DescriptorPoolCreateFlagBits
19748 {
19749 eFreeDescriptorSet = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT
19750 };
19751
19752 using DescriptorPoolCreateFlags = Flags<DescriptorPoolCreateFlagBits, VkDescriptorPoolCreateFlags>;
19753
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019754 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator|( DescriptorPoolCreateFlagBits bit0, DescriptorPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019755 {
19756 return DescriptorPoolCreateFlags( bit0 ) | bit1;
19757 }
19758
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019759 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator~( DescriptorPoolCreateFlagBits bits )
19760 {
19761 return ~( DescriptorPoolCreateFlags( bits ) );
19762 }
19763
19764 template <> struct FlagTraits<DescriptorPoolCreateFlagBits>
19765 {
19766 enum
19767 {
19768 allFlags = VkFlags(DescriptorPoolCreateFlagBits::eFreeDescriptorSet)
19769 };
19770 };
19771
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019772 struct DescriptorPoolCreateInfo
19773 {
19774 DescriptorPoolCreateInfo( DescriptorPoolCreateFlags flags_ = DescriptorPoolCreateFlags(), uint32_t maxSets_ = 0, uint32_t poolSizeCount_ = 0, const DescriptorPoolSize* pPoolSizes_ = nullptr )
19775 : sType( StructureType::eDescriptorPoolCreateInfo )
19776 , pNext( nullptr )
19777 , flags( flags_ )
19778 , maxSets( maxSets_ )
19779 , poolSizeCount( poolSizeCount_ )
19780 , pPoolSizes( pPoolSizes_ )
19781 {
19782 }
19783
19784 DescriptorPoolCreateInfo( VkDescriptorPoolCreateInfo const & rhs )
19785 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019786 memcpy( this, &rhs, sizeof( DescriptorPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019787 }
19788
19789 DescriptorPoolCreateInfo& operator=( VkDescriptorPoolCreateInfo const & rhs )
19790 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019791 memcpy( this, &rhs, sizeof( DescriptorPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019792 return *this;
19793 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019794 DescriptorPoolCreateInfo& setPNext( const void* pNext_ )
19795 {
19796 pNext = pNext_;
19797 return *this;
19798 }
19799
19800 DescriptorPoolCreateInfo& setFlags( DescriptorPoolCreateFlags flags_ )
19801 {
19802 flags = flags_;
19803 return *this;
19804 }
19805
19806 DescriptorPoolCreateInfo& setMaxSets( uint32_t maxSets_ )
19807 {
19808 maxSets = maxSets_;
19809 return *this;
19810 }
19811
19812 DescriptorPoolCreateInfo& setPoolSizeCount( uint32_t poolSizeCount_ )
19813 {
19814 poolSizeCount = poolSizeCount_;
19815 return *this;
19816 }
19817
19818 DescriptorPoolCreateInfo& setPPoolSizes( const DescriptorPoolSize* pPoolSizes_ )
19819 {
19820 pPoolSizes = pPoolSizes_;
19821 return *this;
19822 }
19823
19824 operator const VkDescriptorPoolCreateInfo&() const
19825 {
19826 return *reinterpret_cast<const VkDescriptorPoolCreateInfo*>(this);
19827 }
19828
19829 bool operator==( DescriptorPoolCreateInfo const& rhs ) const
19830 {
19831 return ( sType == rhs.sType )
19832 && ( pNext == rhs.pNext )
19833 && ( flags == rhs.flags )
19834 && ( maxSets == rhs.maxSets )
19835 && ( poolSizeCount == rhs.poolSizeCount )
19836 && ( pPoolSizes == rhs.pPoolSizes );
19837 }
19838
19839 bool operator!=( DescriptorPoolCreateInfo const& rhs ) const
19840 {
19841 return !operator==( rhs );
19842 }
19843
19844 private:
19845 StructureType sType;
19846
19847 public:
19848 const void* pNext;
19849 DescriptorPoolCreateFlags flags;
19850 uint32_t maxSets;
19851 uint32_t poolSizeCount;
19852 const DescriptorPoolSize* pPoolSizes;
19853 };
19854 static_assert( sizeof( DescriptorPoolCreateInfo ) == sizeof( VkDescriptorPoolCreateInfo ), "struct and wrapper have different size!" );
19855
19856 enum class DependencyFlagBits
19857 {
Mark Young0f183a82017-02-28 09:58:04 -070019858 eByRegion = VK_DEPENDENCY_BY_REGION_BIT,
19859 eViewLocalKHX = VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX,
19860 eDeviceGroupKHX = VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019861 };
19862
19863 using DependencyFlags = Flags<DependencyFlagBits, VkDependencyFlags>;
19864
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019865 VULKAN_HPP_INLINE DependencyFlags operator|( DependencyFlagBits bit0, DependencyFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019866 {
19867 return DependencyFlags( bit0 ) | bit1;
19868 }
19869
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019870 VULKAN_HPP_INLINE DependencyFlags operator~( DependencyFlagBits bits )
19871 {
19872 return ~( DependencyFlags( bits ) );
19873 }
19874
19875 template <> struct FlagTraits<DependencyFlagBits>
19876 {
19877 enum
19878 {
Mark Young0f183a82017-02-28 09:58:04 -070019879 allFlags = VkFlags(DependencyFlagBits::eByRegion) | VkFlags(DependencyFlagBits::eViewLocalKHX) | VkFlags(DependencyFlagBits::eDeviceGroupKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019880 };
19881 };
19882
19883 struct SubpassDependency
19884 {
19885 SubpassDependency( uint32_t srcSubpass_ = 0, uint32_t dstSubpass_ = 0, PipelineStageFlags srcStageMask_ = PipelineStageFlags(), PipelineStageFlags dstStageMask_ = PipelineStageFlags(), AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), DependencyFlags dependencyFlags_ = DependencyFlags() )
19886 : srcSubpass( srcSubpass_ )
19887 , dstSubpass( dstSubpass_ )
19888 , srcStageMask( srcStageMask_ )
19889 , dstStageMask( dstStageMask_ )
19890 , srcAccessMask( srcAccessMask_ )
19891 , dstAccessMask( dstAccessMask_ )
19892 , dependencyFlags( dependencyFlags_ )
19893 {
19894 }
19895
19896 SubpassDependency( VkSubpassDependency const & rhs )
19897 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019898 memcpy( this, &rhs, sizeof( SubpassDependency ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019899 }
19900
19901 SubpassDependency& operator=( VkSubpassDependency const & rhs )
19902 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019903 memcpy( this, &rhs, sizeof( SubpassDependency ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019904 return *this;
19905 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019906 SubpassDependency& setSrcSubpass( uint32_t srcSubpass_ )
19907 {
19908 srcSubpass = srcSubpass_;
19909 return *this;
19910 }
19911
19912 SubpassDependency& setDstSubpass( uint32_t dstSubpass_ )
19913 {
19914 dstSubpass = dstSubpass_;
19915 return *this;
19916 }
19917
19918 SubpassDependency& setSrcStageMask( PipelineStageFlags srcStageMask_ )
19919 {
19920 srcStageMask = srcStageMask_;
19921 return *this;
19922 }
19923
19924 SubpassDependency& setDstStageMask( PipelineStageFlags dstStageMask_ )
19925 {
19926 dstStageMask = dstStageMask_;
19927 return *this;
19928 }
19929
19930 SubpassDependency& setSrcAccessMask( AccessFlags srcAccessMask_ )
19931 {
19932 srcAccessMask = srcAccessMask_;
19933 return *this;
19934 }
19935
19936 SubpassDependency& setDstAccessMask( AccessFlags dstAccessMask_ )
19937 {
19938 dstAccessMask = dstAccessMask_;
19939 return *this;
19940 }
19941
19942 SubpassDependency& setDependencyFlags( DependencyFlags dependencyFlags_ )
19943 {
19944 dependencyFlags = dependencyFlags_;
19945 return *this;
19946 }
19947
19948 operator const VkSubpassDependency&() const
19949 {
19950 return *reinterpret_cast<const VkSubpassDependency*>(this);
19951 }
19952
19953 bool operator==( SubpassDependency const& rhs ) const
19954 {
19955 return ( srcSubpass == rhs.srcSubpass )
19956 && ( dstSubpass == rhs.dstSubpass )
19957 && ( srcStageMask == rhs.srcStageMask )
19958 && ( dstStageMask == rhs.dstStageMask )
19959 && ( srcAccessMask == rhs.srcAccessMask )
19960 && ( dstAccessMask == rhs.dstAccessMask )
19961 && ( dependencyFlags == rhs.dependencyFlags );
19962 }
19963
19964 bool operator!=( SubpassDependency const& rhs ) const
19965 {
19966 return !operator==( rhs );
19967 }
19968
19969 uint32_t srcSubpass;
19970 uint32_t dstSubpass;
19971 PipelineStageFlags srcStageMask;
19972 PipelineStageFlags dstStageMask;
19973 AccessFlags srcAccessMask;
19974 AccessFlags dstAccessMask;
19975 DependencyFlags dependencyFlags;
19976 };
19977 static_assert( sizeof( SubpassDependency ) == sizeof( VkSubpassDependency ), "struct and wrapper have different size!" );
19978
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019979 enum class PresentModeKHR
19980 {
19981 eImmediate = VK_PRESENT_MODE_IMMEDIATE_KHR,
19982 eMailbox = VK_PRESENT_MODE_MAILBOX_KHR,
19983 eFifo = VK_PRESENT_MODE_FIFO_KHR,
Mark Lobodzinski54385432017-05-15 10:27:52 -060019984 eFifoRelaxed = VK_PRESENT_MODE_FIFO_RELAXED_KHR,
19985 eSharedDemandRefresh = VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR,
19986 eSharedContinuousRefresh = VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019987 };
19988
19989 enum class ColorSpaceKHR
19990 {
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060019991 eSrgbNonlinear = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
19992 eDisplayP3NonlinearEXT = VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT,
19993 eExtendedSrgbLinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT,
19994 eDciP3LinearEXT = VK_COLOR_SPACE_DCI_P3_LINEAR_EXT,
19995 eDciP3NonlinearEXT = VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT,
19996 eBt709LinearEXT = VK_COLOR_SPACE_BT709_LINEAR_EXT,
19997 eBt709NonlinearEXT = VK_COLOR_SPACE_BT709_NONLINEAR_EXT,
19998 eBt2020LinearEXT = VK_COLOR_SPACE_BT2020_LINEAR_EXT,
19999 eHdr10St2084EXT = VK_COLOR_SPACE_HDR10_ST2084_EXT,
20000 eDolbyvisionEXT = VK_COLOR_SPACE_DOLBYVISION_EXT,
20001 eHdr10HlgEXT = VK_COLOR_SPACE_HDR10_HLG_EXT,
20002 eAdobergbLinearEXT = VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT,
20003 eAdobergbNonlinearEXT = VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT,
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060020004 ePassThroughEXT = VK_COLOR_SPACE_PASS_THROUGH_EXT,
20005 eExtendedSrgbNonlinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020006 };
20007
20008 struct SurfaceFormatKHR
20009 {
20010 operator const VkSurfaceFormatKHR&() const
20011 {
20012 return *reinterpret_cast<const VkSurfaceFormatKHR*>(this);
20013 }
20014
20015 bool operator==( SurfaceFormatKHR const& rhs ) const
20016 {
20017 return ( format == rhs.format )
20018 && ( colorSpace == rhs.colorSpace );
20019 }
20020
20021 bool operator!=( SurfaceFormatKHR const& rhs ) const
20022 {
20023 return !operator==( rhs );
20024 }
20025
20026 Format format;
20027 ColorSpaceKHR colorSpace;
20028 };
20029 static_assert( sizeof( SurfaceFormatKHR ) == sizeof( VkSurfaceFormatKHR ), "struct and wrapper have different size!" );
20030
Mark Lobodzinski54385432017-05-15 10:27:52 -060020031 struct SurfaceFormat2KHR
20032 {
20033 operator const VkSurfaceFormat2KHR&() const
20034 {
20035 return *reinterpret_cast<const VkSurfaceFormat2KHR*>(this);
20036 }
20037
20038 bool operator==( SurfaceFormat2KHR const& rhs ) const
20039 {
20040 return ( sType == rhs.sType )
20041 && ( pNext == rhs.pNext )
20042 && ( surfaceFormat == rhs.surfaceFormat );
20043 }
20044
20045 bool operator!=( SurfaceFormat2KHR const& rhs ) const
20046 {
20047 return !operator==( rhs );
20048 }
20049
20050 private:
20051 StructureType sType;
20052
20053 public:
20054 void* pNext;
20055 SurfaceFormatKHR surfaceFormat;
20056 };
20057 static_assert( sizeof( SurfaceFormat2KHR ) == sizeof( VkSurfaceFormat2KHR ), "struct and wrapper have different size!" );
20058
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020059 enum class DisplayPlaneAlphaFlagBitsKHR
20060 {
20061 eOpaque = VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR,
20062 eGlobal = VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR,
20063 ePerPixel = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR,
20064 ePerPixelPremultiplied = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR
20065 };
20066
20067 using DisplayPlaneAlphaFlagsKHR = Flags<DisplayPlaneAlphaFlagBitsKHR, VkDisplayPlaneAlphaFlagsKHR>;
20068
20069 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator|( DisplayPlaneAlphaFlagBitsKHR bit0, DisplayPlaneAlphaFlagBitsKHR bit1 )
20070 {
20071 return DisplayPlaneAlphaFlagsKHR( bit0 ) | bit1;
20072 }
20073
20074 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator~( DisplayPlaneAlphaFlagBitsKHR bits )
20075 {
20076 return ~( DisplayPlaneAlphaFlagsKHR( bits ) );
20077 }
20078
20079 template <> struct FlagTraits<DisplayPlaneAlphaFlagBitsKHR>
20080 {
20081 enum
20082 {
20083 allFlags = VkFlags(DisplayPlaneAlphaFlagBitsKHR::eOpaque) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::eGlobal) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixel) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied)
20084 };
20085 };
20086
20087 struct DisplayPlaneCapabilitiesKHR
20088 {
20089 operator const VkDisplayPlaneCapabilitiesKHR&() const
20090 {
20091 return *reinterpret_cast<const VkDisplayPlaneCapabilitiesKHR*>(this);
20092 }
20093
20094 bool operator==( DisplayPlaneCapabilitiesKHR const& rhs ) const
20095 {
20096 return ( supportedAlpha == rhs.supportedAlpha )
20097 && ( minSrcPosition == rhs.minSrcPosition )
20098 && ( maxSrcPosition == rhs.maxSrcPosition )
20099 && ( minSrcExtent == rhs.minSrcExtent )
20100 && ( maxSrcExtent == rhs.maxSrcExtent )
20101 && ( minDstPosition == rhs.minDstPosition )
20102 && ( maxDstPosition == rhs.maxDstPosition )
20103 && ( minDstExtent == rhs.minDstExtent )
20104 && ( maxDstExtent == rhs.maxDstExtent );
20105 }
20106
20107 bool operator!=( DisplayPlaneCapabilitiesKHR const& rhs ) const
20108 {
20109 return !operator==( rhs );
20110 }
20111
20112 DisplayPlaneAlphaFlagsKHR supportedAlpha;
20113 Offset2D minSrcPosition;
20114 Offset2D maxSrcPosition;
20115 Extent2D minSrcExtent;
20116 Extent2D maxSrcExtent;
20117 Offset2D minDstPosition;
20118 Offset2D maxDstPosition;
20119 Extent2D minDstExtent;
20120 Extent2D maxDstExtent;
20121 };
20122 static_assert( sizeof( DisplayPlaneCapabilitiesKHR ) == sizeof( VkDisplayPlaneCapabilitiesKHR ), "struct and wrapper have different size!" );
20123
20124 enum class CompositeAlphaFlagBitsKHR
20125 {
20126 eOpaque = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,
20127 ePreMultiplied = VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR,
20128 ePostMultiplied = VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR,
20129 eInherit = VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR
20130 };
20131
20132 using CompositeAlphaFlagsKHR = Flags<CompositeAlphaFlagBitsKHR, VkCompositeAlphaFlagsKHR>;
20133
20134 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator|( CompositeAlphaFlagBitsKHR bit0, CompositeAlphaFlagBitsKHR bit1 )
20135 {
20136 return CompositeAlphaFlagsKHR( bit0 ) | bit1;
20137 }
20138
20139 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator~( CompositeAlphaFlagBitsKHR bits )
20140 {
20141 return ~( CompositeAlphaFlagsKHR( bits ) );
20142 }
20143
20144 template <> struct FlagTraits<CompositeAlphaFlagBitsKHR>
20145 {
20146 enum
20147 {
20148 allFlags = VkFlags(CompositeAlphaFlagBitsKHR::eOpaque) | VkFlags(CompositeAlphaFlagBitsKHR::ePreMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::ePostMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::eInherit)
20149 };
20150 };
20151
20152 enum class SurfaceTransformFlagBitsKHR
20153 {
20154 eIdentity = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,
20155 eRotate90 = VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,
20156 eRotate180 = VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,
20157 eRotate270 = VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,
20158 eHorizontalMirror = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR,
20159 eHorizontalMirrorRotate90 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR,
20160 eHorizontalMirrorRotate180 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR,
20161 eHorizontalMirrorRotate270 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR,
20162 eInherit = VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR
20163 };
20164
20165 using SurfaceTransformFlagsKHR = Flags<SurfaceTransformFlagBitsKHR, VkSurfaceTransformFlagsKHR>;
20166
20167 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator|( SurfaceTransformFlagBitsKHR bit0, SurfaceTransformFlagBitsKHR bit1 )
20168 {
20169 return SurfaceTransformFlagsKHR( bit0 ) | bit1;
20170 }
20171
20172 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator~( SurfaceTransformFlagBitsKHR bits )
20173 {
20174 return ~( SurfaceTransformFlagsKHR( bits ) );
20175 }
20176
20177 template <> struct FlagTraits<SurfaceTransformFlagBitsKHR>
20178 {
20179 enum
20180 {
20181 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)
20182 };
20183 };
20184
20185 struct DisplayPropertiesKHR
20186 {
20187 operator const VkDisplayPropertiesKHR&() const
20188 {
20189 return *reinterpret_cast<const VkDisplayPropertiesKHR*>(this);
20190 }
20191
20192 bool operator==( DisplayPropertiesKHR const& rhs ) const
20193 {
20194 return ( display == rhs.display )
20195 && ( displayName == rhs.displayName )
20196 && ( physicalDimensions == rhs.physicalDimensions )
20197 && ( physicalResolution == rhs.physicalResolution )
20198 && ( supportedTransforms == rhs.supportedTransforms )
20199 && ( planeReorderPossible == rhs.planeReorderPossible )
20200 && ( persistentContent == rhs.persistentContent );
20201 }
20202
20203 bool operator!=( DisplayPropertiesKHR const& rhs ) const
20204 {
20205 return !operator==( rhs );
20206 }
20207
20208 DisplayKHR display;
20209 const char* displayName;
20210 Extent2D physicalDimensions;
20211 Extent2D physicalResolution;
20212 SurfaceTransformFlagsKHR supportedTransforms;
20213 Bool32 planeReorderPossible;
20214 Bool32 persistentContent;
20215 };
20216 static_assert( sizeof( DisplayPropertiesKHR ) == sizeof( VkDisplayPropertiesKHR ), "struct and wrapper have different size!" );
20217
20218 struct DisplaySurfaceCreateInfoKHR
20219 {
20220 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() )
20221 : sType( StructureType::eDisplaySurfaceCreateInfoKHR )
20222 , pNext( nullptr )
20223 , flags( flags_ )
20224 , displayMode( displayMode_ )
20225 , planeIndex( planeIndex_ )
20226 , planeStackIndex( planeStackIndex_ )
20227 , transform( transform_ )
20228 , globalAlpha( globalAlpha_ )
20229 , alphaMode( alphaMode_ )
20230 , imageExtent( imageExtent_ )
20231 {
20232 }
20233
20234 DisplaySurfaceCreateInfoKHR( VkDisplaySurfaceCreateInfoKHR const & rhs )
20235 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020236 memcpy( this, &rhs, sizeof( DisplaySurfaceCreateInfoKHR ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020237 }
20238
20239 DisplaySurfaceCreateInfoKHR& operator=( VkDisplaySurfaceCreateInfoKHR const & rhs )
20240 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020241 memcpy( this, &rhs, sizeof( DisplaySurfaceCreateInfoKHR ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020242 return *this;
20243 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020244 DisplaySurfaceCreateInfoKHR& setPNext( const void* pNext_ )
20245 {
20246 pNext = pNext_;
20247 return *this;
20248 }
20249
20250 DisplaySurfaceCreateInfoKHR& setFlags( DisplaySurfaceCreateFlagsKHR flags_ )
20251 {
20252 flags = flags_;
20253 return *this;
20254 }
20255
20256 DisplaySurfaceCreateInfoKHR& setDisplayMode( DisplayModeKHR displayMode_ )
20257 {
20258 displayMode = displayMode_;
20259 return *this;
20260 }
20261
20262 DisplaySurfaceCreateInfoKHR& setPlaneIndex( uint32_t planeIndex_ )
20263 {
20264 planeIndex = planeIndex_;
20265 return *this;
20266 }
20267
20268 DisplaySurfaceCreateInfoKHR& setPlaneStackIndex( uint32_t planeStackIndex_ )
20269 {
20270 planeStackIndex = planeStackIndex_;
20271 return *this;
20272 }
20273
20274 DisplaySurfaceCreateInfoKHR& setTransform( SurfaceTransformFlagBitsKHR transform_ )
20275 {
20276 transform = transform_;
20277 return *this;
20278 }
20279
20280 DisplaySurfaceCreateInfoKHR& setGlobalAlpha( float globalAlpha_ )
20281 {
20282 globalAlpha = globalAlpha_;
20283 return *this;
20284 }
20285
20286 DisplaySurfaceCreateInfoKHR& setAlphaMode( DisplayPlaneAlphaFlagBitsKHR alphaMode_ )
20287 {
20288 alphaMode = alphaMode_;
20289 return *this;
20290 }
20291
20292 DisplaySurfaceCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
20293 {
20294 imageExtent = imageExtent_;
20295 return *this;
20296 }
20297
20298 operator const VkDisplaySurfaceCreateInfoKHR&() const
20299 {
20300 return *reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>(this);
20301 }
20302
20303 bool operator==( DisplaySurfaceCreateInfoKHR const& rhs ) const
20304 {
20305 return ( sType == rhs.sType )
20306 && ( pNext == rhs.pNext )
20307 && ( flags == rhs.flags )
20308 && ( displayMode == rhs.displayMode )
20309 && ( planeIndex == rhs.planeIndex )
20310 && ( planeStackIndex == rhs.planeStackIndex )
20311 && ( transform == rhs.transform )
20312 && ( globalAlpha == rhs.globalAlpha )
20313 && ( alphaMode == rhs.alphaMode )
20314 && ( imageExtent == rhs.imageExtent );
20315 }
20316
20317 bool operator!=( DisplaySurfaceCreateInfoKHR const& rhs ) const
20318 {
20319 return !operator==( rhs );
20320 }
20321
20322 private:
20323 StructureType sType;
20324
20325 public:
20326 const void* pNext;
20327 DisplaySurfaceCreateFlagsKHR flags;
20328 DisplayModeKHR displayMode;
20329 uint32_t planeIndex;
20330 uint32_t planeStackIndex;
20331 SurfaceTransformFlagBitsKHR transform;
20332 float globalAlpha;
20333 DisplayPlaneAlphaFlagBitsKHR alphaMode;
20334 Extent2D imageExtent;
20335 };
20336 static_assert( sizeof( DisplaySurfaceCreateInfoKHR ) == sizeof( VkDisplaySurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
20337
20338 struct SurfaceCapabilitiesKHR
20339 {
20340 operator const VkSurfaceCapabilitiesKHR&() const
20341 {
20342 return *reinterpret_cast<const VkSurfaceCapabilitiesKHR*>(this);
20343 }
20344
20345 bool operator==( SurfaceCapabilitiesKHR const& rhs ) const
20346 {
20347 return ( minImageCount == rhs.minImageCount )
20348 && ( maxImageCount == rhs.maxImageCount )
20349 && ( currentExtent == rhs.currentExtent )
20350 && ( minImageExtent == rhs.minImageExtent )
20351 && ( maxImageExtent == rhs.maxImageExtent )
20352 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
20353 && ( supportedTransforms == rhs.supportedTransforms )
20354 && ( currentTransform == rhs.currentTransform )
20355 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
20356 && ( supportedUsageFlags == rhs.supportedUsageFlags );
20357 }
20358
20359 bool operator!=( SurfaceCapabilitiesKHR const& rhs ) const
20360 {
20361 return !operator==( rhs );
20362 }
20363
20364 uint32_t minImageCount;
20365 uint32_t maxImageCount;
20366 Extent2D currentExtent;
20367 Extent2D minImageExtent;
20368 Extent2D maxImageExtent;
20369 uint32_t maxImageArrayLayers;
20370 SurfaceTransformFlagsKHR supportedTransforms;
20371 SurfaceTransformFlagBitsKHR currentTransform;
20372 CompositeAlphaFlagsKHR supportedCompositeAlpha;
20373 ImageUsageFlags supportedUsageFlags;
20374 };
20375 static_assert( sizeof( SurfaceCapabilitiesKHR ) == sizeof( VkSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" );
20376
Mark Lobodzinski54385432017-05-15 10:27:52 -060020377 struct SurfaceCapabilities2KHR
20378 {
20379 operator const VkSurfaceCapabilities2KHR&() const
20380 {
20381 return *reinterpret_cast<const VkSurfaceCapabilities2KHR*>(this);
20382 }
20383
20384 bool operator==( SurfaceCapabilities2KHR const& rhs ) const
20385 {
20386 return ( sType == rhs.sType )
20387 && ( pNext == rhs.pNext )
20388 && ( surfaceCapabilities == rhs.surfaceCapabilities );
20389 }
20390
20391 bool operator!=( SurfaceCapabilities2KHR const& rhs ) const
20392 {
20393 return !operator==( rhs );
20394 }
20395
20396 private:
20397 StructureType sType;
20398
20399 public:
20400 void* pNext;
20401 SurfaceCapabilitiesKHR surfaceCapabilities;
20402 };
20403 static_assert( sizeof( SurfaceCapabilities2KHR ) == sizeof( VkSurfaceCapabilities2KHR ), "struct and wrapper have different size!" );
20404
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020405 enum class DebugReportFlagBitsEXT
20406 {
20407 eInformation = VK_DEBUG_REPORT_INFORMATION_BIT_EXT,
20408 eWarning = VK_DEBUG_REPORT_WARNING_BIT_EXT,
20409 ePerformanceWarning = VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT,
20410 eError = VK_DEBUG_REPORT_ERROR_BIT_EXT,
20411 eDebug = VK_DEBUG_REPORT_DEBUG_BIT_EXT
20412 };
20413
20414 using DebugReportFlagsEXT = Flags<DebugReportFlagBitsEXT, VkDebugReportFlagsEXT>;
20415
20416 VULKAN_HPP_INLINE DebugReportFlagsEXT operator|( DebugReportFlagBitsEXT bit0, DebugReportFlagBitsEXT bit1 )
20417 {
20418 return DebugReportFlagsEXT( bit0 ) | bit1;
20419 }
20420
20421 VULKAN_HPP_INLINE DebugReportFlagsEXT operator~( DebugReportFlagBitsEXT bits )
20422 {
20423 return ~( DebugReportFlagsEXT( bits ) );
20424 }
20425
20426 template <> struct FlagTraits<DebugReportFlagBitsEXT>
20427 {
20428 enum
20429 {
20430 allFlags = VkFlags(DebugReportFlagBitsEXT::eInformation) | VkFlags(DebugReportFlagBitsEXT::eWarning) | VkFlags(DebugReportFlagBitsEXT::ePerformanceWarning) | VkFlags(DebugReportFlagBitsEXT::eError) | VkFlags(DebugReportFlagBitsEXT::eDebug)
20431 };
20432 };
20433
20434 struct DebugReportCallbackCreateInfoEXT
20435 {
20436 DebugReportCallbackCreateInfoEXT( DebugReportFlagsEXT flags_ = DebugReportFlagsEXT(), PFN_vkDebugReportCallbackEXT pfnCallback_ = nullptr, void* pUserData_ = nullptr )
20437 : sType( StructureType::eDebugReportCallbackCreateInfoEXT )
20438 , pNext( nullptr )
20439 , flags( flags_ )
20440 , pfnCallback( pfnCallback_ )
20441 , pUserData( pUserData_ )
20442 {
20443 }
20444
20445 DebugReportCallbackCreateInfoEXT( VkDebugReportCallbackCreateInfoEXT const & rhs )
20446 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020447 memcpy( this, &rhs, sizeof( DebugReportCallbackCreateInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020448 }
20449
20450 DebugReportCallbackCreateInfoEXT& operator=( VkDebugReportCallbackCreateInfoEXT const & rhs )
20451 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020452 memcpy( this, &rhs, sizeof( DebugReportCallbackCreateInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020453 return *this;
20454 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020455 DebugReportCallbackCreateInfoEXT& setPNext( const void* pNext_ )
20456 {
20457 pNext = pNext_;
20458 return *this;
20459 }
20460
20461 DebugReportCallbackCreateInfoEXT& setFlags( DebugReportFlagsEXT flags_ )
20462 {
20463 flags = flags_;
20464 return *this;
20465 }
20466
20467 DebugReportCallbackCreateInfoEXT& setPfnCallback( PFN_vkDebugReportCallbackEXT pfnCallback_ )
20468 {
20469 pfnCallback = pfnCallback_;
20470 return *this;
20471 }
20472
20473 DebugReportCallbackCreateInfoEXT& setPUserData( void* pUserData_ )
20474 {
20475 pUserData = pUserData_;
20476 return *this;
20477 }
20478
20479 operator const VkDebugReportCallbackCreateInfoEXT&() const
20480 {
20481 return *reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>(this);
20482 }
20483
20484 bool operator==( DebugReportCallbackCreateInfoEXT const& rhs ) const
20485 {
20486 return ( sType == rhs.sType )
20487 && ( pNext == rhs.pNext )
20488 && ( flags == rhs.flags )
20489 && ( pfnCallback == rhs.pfnCallback )
20490 && ( pUserData == rhs.pUserData );
20491 }
20492
20493 bool operator!=( DebugReportCallbackCreateInfoEXT const& rhs ) const
20494 {
20495 return !operator==( rhs );
20496 }
20497
20498 private:
20499 StructureType sType;
20500
20501 public:
20502 const void* pNext;
20503 DebugReportFlagsEXT flags;
20504 PFN_vkDebugReportCallbackEXT pfnCallback;
20505 void* pUserData;
20506 };
20507 static_assert( sizeof( DebugReportCallbackCreateInfoEXT ) == sizeof( VkDebugReportCallbackCreateInfoEXT ), "struct and wrapper have different size!" );
20508
20509 enum class DebugReportObjectTypeEXT
20510 {
20511 eUnknown = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT,
20512 eInstance = VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT,
20513 ePhysicalDevice = VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT,
20514 eDevice = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
20515 eQueue = VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT,
20516 eSemaphore = VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT,
20517 eCommandBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT,
20518 eFence = VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT,
20519 eDeviceMemory = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT,
20520 eBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT,
20521 eImage = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT,
20522 eEvent = VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT,
20523 eQueryPool = VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT,
20524 eBufferView = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT,
20525 eImageView = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT,
20526 eShaderModule = VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT,
20527 ePipelineCache = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT,
20528 ePipelineLayout = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT,
20529 eRenderPass = VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT,
20530 ePipeline = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT,
20531 eDescriptorSetLayout = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT,
20532 eSampler = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT,
20533 eDescriptorPool = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT,
20534 eDescriptorSet = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT,
20535 eFramebuffer = VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT,
20536 eCommandPool = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT,
20537 eSurfaceKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT,
20538 eSwapchainKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT,
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020539 eDebugReportCallbackExt = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020540 eDisplayKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT,
20541 eDisplayModeKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT,
20542 eObjectTableNvx = VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT,
Mark Lobodzinski3289d762017-04-03 08:22:04 -060020543 eIndirectCommandsLayoutNvx = VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060020544 eValidationCache = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT,
Lenny Komowb79f04a2017-09-18 17:07:00 -060020545 eDescriptorUpdateTemplateKHR = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT,
20546 eSamplerYcbcrConversionKHR = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020547 };
20548
20549 struct DebugMarkerObjectNameInfoEXT
20550 {
20551 DebugMarkerObjectNameInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = 0, const char* pObjectName_ = nullptr )
20552 : sType( StructureType::eDebugMarkerObjectNameInfoEXT )
20553 , pNext( nullptr )
20554 , objectType( objectType_ )
20555 , object( object_ )
20556 , pObjectName( pObjectName_ )
20557 {
20558 }
20559
20560 DebugMarkerObjectNameInfoEXT( VkDebugMarkerObjectNameInfoEXT const & rhs )
20561 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020562 memcpy( this, &rhs, sizeof( DebugMarkerObjectNameInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020563 }
20564
20565 DebugMarkerObjectNameInfoEXT& operator=( VkDebugMarkerObjectNameInfoEXT const & rhs )
20566 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020567 memcpy( this, &rhs, sizeof( DebugMarkerObjectNameInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020568 return *this;
20569 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020570 DebugMarkerObjectNameInfoEXT& setPNext( const void* pNext_ )
20571 {
20572 pNext = pNext_;
20573 return *this;
20574 }
20575
20576 DebugMarkerObjectNameInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
20577 {
20578 objectType = objectType_;
20579 return *this;
20580 }
20581
20582 DebugMarkerObjectNameInfoEXT& setObject( uint64_t object_ )
20583 {
20584 object = object_;
20585 return *this;
20586 }
20587
20588 DebugMarkerObjectNameInfoEXT& setPObjectName( const char* pObjectName_ )
20589 {
20590 pObjectName = pObjectName_;
20591 return *this;
20592 }
20593
20594 operator const VkDebugMarkerObjectNameInfoEXT&() const
20595 {
20596 return *reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>(this);
20597 }
20598
20599 bool operator==( DebugMarkerObjectNameInfoEXT const& rhs ) const
20600 {
20601 return ( sType == rhs.sType )
20602 && ( pNext == rhs.pNext )
20603 && ( objectType == rhs.objectType )
20604 && ( object == rhs.object )
20605 && ( pObjectName == rhs.pObjectName );
20606 }
20607
20608 bool operator!=( DebugMarkerObjectNameInfoEXT const& rhs ) const
20609 {
20610 return !operator==( rhs );
20611 }
20612
20613 private:
20614 StructureType sType;
20615
20616 public:
20617 const void* pNext;
20618 DebugReportObjectTypeEXT objectType;
20619 uint64_t object;
20620 const char* pObjectName;
20621 };
20622 static_assert( sizeof( DebugMarkerObjectNameInfoEXT ) == sizeof( VkDebugMarkerObjectNameInfoEXT ), "struct and wrapper have different size!" );
20623
20624 struct DebugMarkerObjectTagInfoEXT
20625 {
20626 DebugMarkerObjectTagInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = 0, uint64_t tagName_ = 0, size_t tagSize_ = 0, const void* pTag_ = nullptr )
20627 : sType( StructureType::eDebugMarkerObjectTagInfoEXT )
20628 , pNext( nullptr )
20629 , objectType( objectType_ )
20630 , object( object_ )
20631 , tagName( tagName_ )
20632 , tagSize( tagSize_ )
20633 , pTag( pTag_ )
20634 {
20635 }
20636
20637 DebugMarkerObjectTagInfoEXT( VkDebugMarkerObjectTagInfoEXT const & rhs )
20638 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020639 memcpy( this, &rhs, sizeof( DebugMarkerObjectTagInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020640 }
20641
20642 DebugMarkerObjectTagInfoEXT& operator=( VkDebugMarkerObjectTagInfoEXT const & rhs )
20643 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020644 memcpy( this, &rhs, sizeof( DebugMarkerObjectTagInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020645 return *this;
20646 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020647 DebugMarkerObjectTagInfoEXT& setPNext( const void* pNext_ )
20648 {
20649 pNext = pNext_;
20650 return *this;
20651 }
20652
20653 DebugMarkerObjectTagInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
20654 {
20655 objectType = objectType_;
20656 return *this;
20657 }
20658
20659 DebugMarkerObjectTagInfoEXT& setObject( uint64_t object_ )
20660 {
20661 object = object_;
20662 return *this;
20663 }
20664
20665 DebugMarkerObjectTagInfoEXT& setTagName( uint64_t tagName_ )
20666 {
20667 tagName = tagName_;
20668 return *this;
20669 }
20670
20671 DebugMarkerObjectTagInfoEXT& setTagSize( size_t tagSize_ )
20672 {
20673 tagSize = tagSize_;
20674 return *this;
20675 }
20676
20677 DebugMarkerObjectTagInfoEXT& setPTag( const void* pTag_ )
20678 {
20679 pTag = pTag_;
20680 return *this;
20681 }
20682
20683 operator const VkDebugMarkerObjectTagInfoEXT&() const
20684 {
20685 return *reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>(this);
20686 }
20687
20688 bool operator==( DebugMarkerObjectTagInfoEXT const& rhs ) const
20689 {
20690 return ( sType == rhs.sType )
20691 && ( pNext == rhs.pNext )
20692 && ( objectType == rhs.objectType )
20693 && ( object == rhs.object )
20694 && ( tagName == rhs.tagName )
20695 && ( tagSize == rhs.tagSize )
20696 && ( pTag == rhs.pTag );
20697 }
20698
20699 bool operator!=( DebugMarkerObjectTagInfoEXT const& rhs ) const
20700 {
20701 return !operator==( rhs );
20702 }
20703
20704 private:
20705 StructureType sType;
20706
20707 public:
20708 const void* pNext;
20709 DebugReportObjectTypeEXT objectType;
20710 uint64_t object;
20711 uint64_t tagName;
20712 size_t tagSize;
20713 const void* pTag;
20714 };
20715 static_assert( sizeof( DebugMarkerObjectTagInfoEXT ) == sizeof( VkDebugMarkerObjectTagInfoEXT ), "struct and wrapper have different size!" );
20716
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020717 enum class RasterizationOrderAMD
20718 {
20719 eStrict = VK_RASTERIZATION_ORDER_STRICT_AMD,
20720 eRelaxed = VK_RASTERIZATION_ORDER_RELAXED_AMD
20721 };
20722
20723 struct PipelineRasterizationStateRasterizationOrderAMD
20724 {
20725 PipelineRasterizationStateRasterizationOrderAMD( RasterizationOrderAMD rasterizationOrder_ = RasterizationOrderAMD::eStrict )
20726 : sType( StructureType::ePipelineRasterizationStateRasterizationOrderAMD )
20727 , pNext( nullptr )
20728 , rasterizationOrder( rasterizationOrder_ )
20729 {
20730 }
20731
20732 PipelineRasterizationStateRasterizationOrderAMD( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
20733 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020734 memcpy( this, &rhs, sizeof( PipelineRasterizationStateRasterizationOrderAMD ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020735 }
20736
20737 PipelineRasterizationStateRasterizationOrderAMD& operator=( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
20738 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020739 memcpy( this, &rhs, sizeof( PipelineRasterizationStateRasterizationOrderAMD ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020740 return *this;
20741 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020742 PipelineRasterizationStateRasterizationOrderAMD& setPNext( const void* pNext_ )
20743 {
20744 pNext = pNext_;
20745 return *this;
20746 }
20747
20748 PipelineRasterizationStateRasterizationOrderAMD& setRasterizationOrder( RasterizationOrderAMD rasterizationOrder_ )
20749 {
20750 rasterizationOrder = rasterizationOrder_;
20751 return *this;
20752 }
20753
20754 operator const VkPipelineRasterizationStateRasterizationOrderAMD&() const
20755 {
20756 return *reinterpret_cast<const VkPipelineRasterizationStateRasterizationOrderAMD*>(this);
20757 }
20758
20759 bool operator==( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
20760 {
20761 return ( sType == rhs.sType )
20762 && ( pNext == rhs.pNext )
20763 && ( rasterizationOrder == rhs.rasterizationOrder );
20764 }
20765
20766 bool operator!=( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
20767 {
20768 return !operator==( rhs );
20769 }
20770
20771 private:
20772 StructureType sType;
20773
20774 public:
20775 const void* pNext;
20776 RasterizationOrderAMD rasterizationOrder;
20777 };
20778 static_assert( sizeof( PipelineRasterizationStateRasterizationOrderAMD ) == sizeof( VkPipelineRasterizationStateRasterizationOrderAMD ), "struct and wrapper have different size!" );
20779
20780 enum class ExternalMemoryHandleTypeFlagBitsNV
20781 {
20782 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV,
20783 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV,
20784 eD3D11Image = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV,
20785 eD3D11ImageKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV
20786 };
20787
20788 using ExternalMemoryHandleTypeFlagsNV = Flags<ExternalMemoryHandleTypeFlagBitsNV, VkExternalMemoryHandleTypeFlagsNV>;
20789
20790 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator|( ExternalMemoryHandleTypeFlagBitsNV bit0, ExternalMemoryHandleTypeFlagBitsNV bit1 )
20791 {
20792 return ExternalMemoryHandleTypeFlagsNV( bit0 ) | bit1;
20793 }
20794
20795 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator~( ExternalMemoryHandleTypeFlagBitsNV bits )
20796 {
20797 return ~( ExternalMemoryHandleTypeFlagsNV( bits ) );
20798 }
20799
20800 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsNV>
20801 {
20802 enum
20803 {
20804 allFlags = VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt)
20805 };
20806 };
20807
20808 struct ExternalMemoryImageCreateInfoNV
20809 {
20810 ExternalMemoryImageCreateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
20811 : sType( StructureType::eExternalMemoryImageCreateInfoNV )
20812 , pNext( nullptr )
20813 , handleTypes( handleTypes_ )
20814 {
20815 }
20816
20817 ExternalMemoryImageCreateInfoNV( VkExternalMemoryImageCreateInfoNV const & rhs )
20818 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020819 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020820 }
20821
20822 ExternalMemoryImageCreateInfoNV& operator=( VkExternalMemoryImageCreateInfoNV const & rhs )
20823 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020824 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020825 return *this;
20826 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020827 ExternalMemoryImageCreateInfoNV& setPNext( const void* pNext_ )
20828 {
20829 pNext = pNext_;
20830 return *this;
20831 }
20832
20833 ExternalMemoryImageCreateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
20834 {
20835 handleTypes = handleTypes_;
20836 return *this;
20837 }
20838
20839 operator const VkExternalMemoryImageCreateInfoNV&() const
20840 {
20841 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoNV*>(this);
20842 }
20843
20844 bool operator==( ExternalMemoryImageCreateInfoNV const& rhs ) const
20845 {
20846 return ( sType == rhs.sType )
20847 && ( pNext == rhs.pNext )
20848 && ( handleTypes == rhs.handleTypes );
20849 }
20850
20851 bool operator!=( ExternalMemoryImageCreateInfoNV const& rhs ) const
20852 {
20853 return !operator==( rhs );
20854 }
20855
20856 private:
20857 StructureType sType;
20858
20859 public:
20860 const void* pNext;
20861 ExternalMemoryHandleTypeFlagsNV handleTypes;
20862 };
20863 static_assert( sizeof( ExternalMemoryImageCreateInfoNV ) == sizeof( VkExternalMemoryImageCreateInfoNV ), "struct and wrapper have different size!" );
20864
20865 struct ExportMemoryAllocateInfoNV
20866 {
20867 ExportMemoryAllocateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
20868 : sType( StructureType::eExportMemoryAllocateInfoNV )
20869 , pNext( nullptr )
20870 , handleTypes( handleTypes_ )
20871 {
20872 }
20873
20874 ExportMemoryAllocateInfoNV( VkExportMemoryAllocateInfoNV const & rhs )
20875 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020876 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020877 }
20878
20879 ExportMemoryAllocateInfoNV& operator=( VkExportMemoryAllocateInfoNV const & rhs )
20880 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020881 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020882 return *this;
20883 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020884 ExportMemoryAllocateInfoNV& setPNext( const void* pNext_ )
20885 {
20886 pNext = pNext_;
20887 return *this;
20888 }
20889
20890 ExportMemoryAllocateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
20891 {
20892 handleTypes = handleTypes_;
20893 return *this;
20894 }
20895
20896 operator const VkExportMemoryAllocateInfoNV&() const
20897 {
20898 return *reinterpret_cast<const VkExportMemoryAllocateInfoNV*>(this);
20899 }
20900
20901 bool operator==( ExportMemoryAllocateInfoNV const& rhs ) const
20902 {
20903 return ( sType == rhs.sType )
20904 && ( pNext == rhs.pNext )
20905 && ( handleTypes == rhs.handleTypes );
20906 }
20907
20908 bool operator!=( ExportMemoryAllocateInfoNV const& rhs ) const
20909 {
20910 return !operator==( rhs );
20911 }
20912
20913 private:
20914 StructureType sType;
20915
20916 public:
20917 const void* pNext;
20918 ExternalMemoryHandleTypeFlagsNV handleTypes;
20919 };
20920 static_assert( sizeof( ExportMemoryAllocateInfoNV ) == sizeof( VkExportMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
20921
20922#ifdef VK_USE_PLATFORM_WIN32_KHR
20923 struct ImportMemoryWin32HandleInfoNV
20924 {
20925 ImportMemoryWin32HandleInfoNV( ExternalMemoryHandleTypeFlagsNV handleType_ = ExternalMemoryHandleTypeFlagsNV(), HANDLE handle_ = 0 )
20926 : sType( StructureType::eImportMemoryWin32HandleInfoNV )
20927 , pNext( nullptr )
20928 , handleType( handleType_ )
20929 , handle( handle_ )
20930 {
20931 }
20932
20933 ImportMemoryWin32HandleInfoNV( VkImportMemoryWin32HandleInfoNV const & rhs )
20934 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020935 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020936 }
20937
20938 ImportMemoryWin32HandleInfoNV& operator=( VkImportMemoryWin32HandleInfoNV const & rhs )
20939 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020940 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020941 return *this;
20942 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020943 ImportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
20944 {
20945 pNext = pNext_;
20946 return *this;
20947 }
20948
20949 ImportMemoryWin32HandleInfoNV& setHandleType( ExternalMemoryHandleTypeFlagsNV handleType_ )
20950 {
20951 handleType = handleType_;
20952 return *this;
20953 }
20954
20955 ImportMemoryWin32HandleInfoNV& setHandle( HANDLE handle_ )
20956 {
20957 handle = handle_;
20958 return *this;
20959 }
20960
20961 operator const VkImportMemoryWin32HandleInfoNV&() const
20962 {
20963 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoNV*>(this);
20964 }
20965
20966 bool operator==( ImportMemoryWin32HandleInfoNV const& rhs ) const
20967 {
20968 return ( sType == rhs.sType )
20969 && ( pNext == rhs.pNext )
20970 && ( handleType == rhs.handleType )
20971 && ( handle == rhs.handle );
20972 }
20973
20974 bool operator!=( ImportMemoryWin32HandleInfoNV const& rhs ) const
20975 {
20976 return !operator==( rhs );
20977 }
20978
20979 private:
20980 StructureType sType;
20981
20982 public:
20983 const void* pNext;
20984 ExternalMemoryHandleTypeFlagsNV handleType;
20985 HANDLE handle;
20986 };
20987 static_assert( sizeof( ImportMemoryWin32HandleInfoNV ) == sizeof( VkImportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
20988#endif /*VK_USE_PLATFORM_WIN32_KHR*/
20989
20990 enum class ExternalMemoryFeatureFlagBitsNV
20991 {
20992 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV,
20993 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV,
20994 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV
20995 };
20996
20997 using ExternalMemoryFeatureFlagsNV = Flags<ExternalMemoryFeatureFlagBitsNV, VkExternalMemoryFeatureFlagsNV>;
20998
20999 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator|( ExternalMemoryFeatureFlagBitsNV bit0, ExternalMemoryFeatureFlagBitsNV bit1 )
21000 {
21001 return ExternalMemoryFeatureFlagsNV( bit0 ) | bit1;
21002 }
21003
21004 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator~( ExternalMemoryFeatureFlagBitsNV bits )
21005 {
21006 return ~( ExternalMemoryFeatureFlagsNV( bits ) );
21007 }
21008
21009 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsNV>
21010 {
21011 enum
21012 {
21013 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eImportable)
21014 };
21015 };
21016
21017 struct ExternalImageFormatPropertiesNV
21018 {
21019 operator const VkExternalImageFormatPropertiesNV&() const
21020 {
21021 return *reinterpret_cast<const VkExternalImageFormatPropertiesNV*>(this);
21022 }
21023
21024 bool operator==( ExternalImageFormatPropertiesNV const& rhs ) const
21025 {
21026 return ( imageFormatProperties == rhs.imageFormatProperties )
21027 && ( externalMemoryFeatures == rhs.externalMemoryFeatures )
21028 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
21029 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
21030 }
21031
21032 bool operator!=( ExternalImageFormatPropertiesNV const& rhs ) const
21033 {
21034 return !operator==( rhs );
21035 }
21036
21037 ImageFormatProperties imageFormatProperties;
21038 ExternalMemoryFeatureFlagsNV externalMemoryFeatures;
21039 ExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes;
21040 ExternalMemoryHandleTypeFlagsNV compatibleHandleTypes;
21041 };
21042 static_assert( sizeof( ExternalImageFormatPropertiesNV ) == sizeof( VkExternalImageFormatPropertiesNV ), "struct and wrapper have different size!" );
21043
21044 enum class ValidationCheckEXT
21045 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021046 eAll = VK_VALIDATION_CHECK_ALL_EXT,
21047 eShaders = VK_VALIDATION_CHECK_SHADERS_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021048 };
21049
21050 struct ValidationFlagsEXT
21051 {
21052 ValidationFlagsEXT( uint32_t disabledValidationCheckCount_ = 0, ValidationCheckEXT* pDisabledValidationChecks_ = nullptr )
21053 : sType( StructureType::eValidationFlagsEXT )
21054 , pNext( nullptr )
21055 , disabledValidationCheckCount( disabledValidationCheckCount_ )
21056 , pDisabledValidationChecks( pDisabledValidationChecks_ )
21057 {
21058 }
21059
21060 ValidationFlagsEXT( VkValidationFlagsEXT const & rhs )
21061 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021062 memcpy( this, &rhs, sizeof( ValidationFlagsEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021063 }
21064
21065 ValidationFlagsEXT& operator=( VkValidationFlagsEXT const & rhs )
21066 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021067 memcpy( this, &rhs, sizeof( ValidationFlagsEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021068 return *this;
21069 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021070 ValidationFlagsEXT& setPNext( const void* pNext_ )
21071 {
21072 pNext = pNext_;
21073 return *this;
21074 }
21075
21076 ValidationFlagsEXT& setDisabledValidationCheckCount( uint32_t disabledValidationCheckCount_ )
21077 {
21078 disabledValidationCheckCount = disabledValidationCheckCount_;
21079 return *this;
21080 }
21081
21082 ValidationFlagsEXT& setPDisabledValidationChecks( ValidationCheckEXT* pDisabledValidationChecks_ )
21083 {
21084 pDisabledValidationChecks = pDisabledValidationChecks_;
21085 return *this;
21086 }
21087
21088 operator const VkValidationFlagsEXT&() const
21089 {
21090 return *reinterpret_cast<const VkValidationFlagsEXT*>(this);
21091 }
21092
21093 bool operator==( ValidationFlagsEXT const& rhs ) const
21094 {
21095 return ( sType == rhs.sType )
21096 && ( pNext == rhs.pNext )
21097 && ( disabledValidationCheckCount == rhs.disabledValidationCheckCount )
21098 && ( pDisabledValidationChecks == rhs.pDisabledValidationChecks );
21099 }
21100
21101 bool operator!=( ValidationFlagsEXT const& rhs ) const
21102 {
21103 return !operator==( rhs );
21104 }
21105
21106 private:
21107 StructureType sType;
21108
21109 public:
21110 const void* pNext;
21111 uint32_t disabledValidationCheckCount;
21112 ValidationCheckEXT* pDisabledValidationChecks;
21113 };
21114 static_assert( sizeof( ValidationFlagsEXT ) == sizeof( VkValidationFlagsEXT ), "struct and wrapper have different size!" );
21115
21116 enum class IndirectCommandsLayoutUsageFlagBitsNVX
21117 {
21118 eUnorderedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX,
21119 eSparseSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX,
21120 eEmptyExecutions = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX,
21121 eIndexedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX
21122 };
21123
21124 using IndirectCommandsLayoutUsageFlagsNVX = Flags<IndirectCommandsLayoutUsageFlagBitsNVX, VkIndirectCommandsLayoutUsageFlagsNVX>;
21125
21126 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator|( IndirectCommandsLayoutUsageFlagBitsNVX bit0, IndirectCommandsLayoutUsageFlagBitsNVX bit1 )
21127 {
21128 return IndirectCommandsLayoutUsageFlagsNVX( bit0 ) | bit1;
21129 }
21130
21131 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator~( IndirectCommandsLayoutUsageFlagBitsNVX bits )
21132 {
21133 return ~( IndirectCommandsLayoutUsageFlagsNVX( bits ) );
21134 }
21135
21136 template <> struct FlagTraits<IndirectCommandsLayoutUsageFlagBitsNVX>
21137 {
21138 enum
21139 {
21140 allFlags = VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences)
21141 };
21142 };
21143
21144 enum class ObjectEntryUsageFlagBitsNVX
21145 {
21146 eGraphics = VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX,
21147 eCompute = VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX
21148 };
21149
21150 using ObjectEntryUsageFlagsNVX = Flags<ObjectEntryUsageFlagBitsNVX, VkObjectEntryUsageFlagsNVX>;
21151
21152 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator|( ObjectEntryUsageFlagBitsNVX bit0, ObjectEntryUsageFlagBitsNVX bit1 )
21153 {
21154 return ObjectEntryUsageFlagsNVX( bit0 ) | bit1;
21155 }
21156
21157 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator~( ObjectEntryUsageFlagBitsNVX bits )
21158 {
21159 return ~( ObjectEntryUsageFlagsNVX( bits ) );
21160 }
21161
21162 template <> struct FlagTraits<ObjectEntryUsageFlagBitsNVX>
21163 {
21164 enum
21165 {
21166 allFlags = VkFlags(ObjectEntryUsageFlagBitsNVX::eGraphics) | VkFlags(ObjectEntryUsageFlagBitsNVX::eCompute)
21167 };
21168 };
21169
21170 enum class IndirectCommandsTokenTypeNVX
21171 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021172 ePipeline = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX,
21173 eDescriptorSet = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX,
21174 eIndexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX,
21175 eVertexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX,
21176 ePushConstant = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX,
21177 eDrawIndexed = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX,
21178 eDraw = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX,
21179 eDispatch = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021180 };
21181
21182 struct IndirectCommandsTokenNVX
21183 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021184 IndirectCommandsTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::ePipeline, Buffer buffer_ = Buffer(), DeviceSize offset_ = 0 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021185 : tokenType( tokenType_ )
21186 , buffer( buffer_ )
21187 , offset( offset_ )
21188 {
21189 }
21190
21191 IndirectCommandsTokenNVX( VkIndirectCommandsTokenNVX const & rhs )
21192 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021193 memcpy( this, &rhs, sizeof( IndirectCommandsTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021194 }
21195
21196 IndirectCommandsTokenNVX& operator=( VkIndirectCommandsTokenNVX const & rhs )
21197 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021198 memcpy( this, &rhs, sizeof( IndirectCommandsTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021199 return *this;
21200 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021201 IndirectCommandsTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
21202 {
21203 tokenType = tokenType_;
21204 return *this;
21205 }
21206
21207 IndirectCommandsTokenNVX& setBuffer( Buffer buffer_ )
21208 {
21209 buffer = buffer_;
21210 return *this;
21211 }
21212
21213 IndirectCommandsTokenNVX& setOffset( DeviceSize offset_ )
21214 {
21215 offset = offset_;
21216 return *this;
21217 }
21218
21219 operator const VkIndirectCommandsTokenNVX&() const
21220 {
21221 return *reinterpret_cast<const VkIndirectCommandsTokenNVX*>(this);
21222 }
21223
21224 bool operator==( IndirectCommandsTokenNVX const& rhs ) const
21225 {
21226 return ( tokenType == rhs.tokenType )
21227 && ( buffer == rhs.buffer )
21228 && ( offset == rhs.offset );
21229 }
21230
21231 bool operator!=( IndirectCommandsTokenNVX const& rhs ) const
21232 {
21233 return !operator==( rhs );
21234 }
21235
21236 IndirectCommandsTokenTypeNVX tokenType;
21237 Buffer buffer;
21238 DeviceSize offset;
21239 };
21240 static_assert( sizeof( IndirectCommandsTokenNVX ) == sizeof( VkIndirectCommandsTokenNVX ), "struct and wrapper have different size!" );
21241
21242 struct IndirectCommandsLayoutTokenNVX
21243 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021244 IndirectCommandsLayoutTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::ePipeline, uint32_t bindingUnit_ = 0, uint32_t dynamicCount_ = 0, uint32_t divisor_ = 0 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021245 : tokenType( tokenType_ )
21246 , bindingUnit( bindingUnit_ )
21247 , dynamicCount( dynamicCount_ )
21248 , divisor( divisor_ )
21249 {
21250 }
21251
21252 IndirectCommandsLayoutTokenNVX( VkIndirectCommandsLayoutTokenNVX const & rhs )
21253 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021254 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021255 }
21256
21257 IndirectCommandsLayoutTokenNVX& operator=( VkIndirectCommandsLayoutTokenNVX const & rhs )
21258 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021259 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021260 return *this;
21261 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021262 IndirectCommandsLayoutTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
21263 {
21264 tokenType = tokenType_;
21265 return *this;
21266 }
21267
21268 IndirectCommandsLayoutTokenNVX& setBindingUnit( uint32_t bindingUnit_ )
21269 {
21270 bindingUnit = bindingUnit_;
21271 return *this;
21272 }
21273
21274 IndirectCommandsLayoutTokenNVX& setDynamicCount( uint32_t dynamicCount_ )
21275 {
21276 dynamicCount = dynamicCount_;
21277 return *this;
21278 }
21279
21280 IndirectCommandsLayoutTokenNVX& setDivisor( uint32_t divisor_ )
21281 {
21282 divisor = divisor_;
21283 return *this;
21284 }
21285
21286 operator const VkIndirectCommandsLayoutTokenNVX&() const
21287 {
21288 return *reinterpret_cast<const VkIndirectCommandsLayoutTokenNVX*>(this);
21289 }
21290
21291 bool operator==( IndirectCommandsLayoutTokenNVX const& rhs ) const
21292 {
21293 return ( tokenType == rhs.tokenType )
21294 && ( bindingUnit == rhs.bindingUnit )
21295 && ( dynamicCount == rhs.dynamicCount )
21296 && ( divisor == rhs.divisor );
21297 }
21298
21299 bool operator!=( IndirectCommandsLayoutTokenNVX const& rhs ) const
21300 {
21301 return !operator==( rhs );
21302 }
21303
21304 IndirectCommandsTokenTypeNVX tokenType;
21305 uint32_t bindingUnit;
21306 uint32_t dynamicCount;
21307 uint32_t divisor;
21308 };
21309 static_assert( sizeof( IndirectCommandsLayoutTokenNVX ) == sizeof( VkIndirectCommandsLayoutTokenNVX ), "struct and wrapper have different size!" );
21310
21311 struct IndirectCommandsLayoutCreateInfoNVX
21312 {
21313 IndirectCommandsLayoutCreateInfoNVX( PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics, IndirectCommandsLayoutUsageFlagsNVX flags_ = IndirectCommandsLayoutUsageFlagsNVX(), uint32_t tokenCount_ = 0, const IndirectCommandsLayoutTokenNVX* pTokens_ = nullptr )
21314 : sType( StructureType::eIndirectCommandsLayoutCreateInfoNVX )
21315 , pNext( nullptr )
21316 , pipelineBindPoint( pipelineBindPoint_ )
21317 , flags( flags_ )
21318 , tokenCount( tokenCount_ )
21319 , pTokens( pTokens_ )
21320 {
21321 }
21322
21323 IndirectCommandsLayoutCreateInfoNVX( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
21324 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021325 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021326 }
21327
21328 IndirectCommandsLayoutCreateInfoNVX& operator=( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
21329 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021330 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021331 return *this;
21332 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021333 IndirectCommandsLayoutCreateInfoNVX& setPNext( const void* pNext_ )
21334 {
21335 pNext = pNext_;
21336 return *this;
21337 }
21338
21339 IndirectCommandsLayoutCreateInfoNVX& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
21340 {
21341 pipelineBindPoint = pipelineBindPoint_;
21342 return *this;
21343 }
21344
21345 IndirectCommandsLayoutCreateInfoNVX& setFlags( IndirectCommandsLayoutUsageFlagsNVX flags_ )
21346 {
21347 flags = flags_;
21348 return *this;
21349 }
21350
21351 IndirectCommandsLayoutCreateInfoNVX& setTokenCount( uint32_t tokenCount_ )
21352 {
21353 tokenCount = tokenCount_;
21354 return *this;
21355 }
21356
21357 IndirectCommandsLayoutCreateInfoNVX& setPTokens( const IndirectCommandsLayoutTokenNVX* pTokens_ )
21358 {
21359 pTokens = pTokens_;
21360 return *this;
21361 }
21362
21363 operator const VkIndirectCommandsLayoutCreateInfoNVX&() const
21364 {
21365 return *reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>(this);
21366 }
21367
21368 bool operator==( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
21369 {
21370 return ( sType == rhs.sType )
21371 && ( pNext == rhs.pNext )
21372 && ( pipelineBindPoint == rhs.pipelineBindPoint )
21373 && ( flags == rhs.flags )
21374 && ( tokenCount == rhs.tokenCount )
21375 && ( pTokens == rhs.pTokens );
21376 }
21377
21378 bool operator!=( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
21379 {
21380 return !operator==( rhs );
21381 }
21382
21383 private:
21384 StructureType sType;
21385
21386 public:
21387 const void* pNext;
21388 PipelineBindPoint pipelineBindPoint;
21389 IndirectCommandsLayoutUsageFlagsNVX flags;
21390 uint32_t tokenCount;
21391 const IndirectCommandsLayoutTokenNVX* pTokens;
21392 };
21393 static_assert( sizeof( IndirectCommandsLayoutCreateInfoNVX ) == sizeof( VkIndirectCommandsLayoutCreateInfoNVX ), "struct and wrapper have different size!" );
21394
21395 enum class ObjectEntryTypeNVX
21396 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021397 eDescriptorSet = VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX,
21398 ePipeline = VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX,
21399 eIndexBuffer = VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX,
21400 eVertexBuffer = VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX,
21401 ePushConstant = VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021402 };
21403
21404 struct ObjectTableCreateInfoNVX
21405 {
21406 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 )
21407 : sType( StructureType::eObjectTableCreateInfoNVX )
21408 , pNext( nullptr )
21409 , objectCount( objectCount_ )
21410 , pObjectEntryTypes( pObjectEntryTypes_ )
21411 , pObjectEntryCounts( pObjectEntryCounts_ )
21412 , pObjectEntryUsageFlags( pObjectEntryUsageFlags_ )
21413 , maxUniformBuffersPerDescriptor( maxUniformBuffersPerDescriptor_ )
21414 , maxStorageBuffersPerDescriptor( maxStorageBuffersPerDescriptor_ )
21415 , maxStorageImagesPerDescriptor( maxStorageImagesPerDescriptor_ )
21416 , maxSampledImagesPerDescriptor( maxSampledImagesPerDescriptor_ )
21417 , maxPipelineLayouts( maxPipelineLayouts_ )
21418 {
21419 }
21420
21421 ObjectTableCreateInfoNVX( VkObjectTableCreateInfoNVX const & rhs )
21422 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021423 memcpy( this, &rhs, sizeof( ObjectTableCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021424 }
21425
21426 ObjectTableCreateInfoNVX& operator=( VkObjectTableCreateInfoNVX const & rhs )
21427 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021428 memcpy( this, &rhs, sizeof( ObjectTableCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021429 return *this;
21430 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021431 ObjectTableCreateInfoNVX& setPNext( const void* pNext_ )
21432 {
21433 pNext = pNext_;
21434 return *this;
21435 }
21436
21437 ObjectTableCreateInfoNVX& setObjectCount( uint32_t objectCount_ )
21438 {
21439 objectCount = objectCount_;
21440 return *this;
21441 }
21442
21443 ObjectTableCreateInfoNVX& setPObjectEntryTypes( const ObjectEntryTypeNVX* pObjectEntryTypes_ )
21444 {
21445 pObjectEntryTypes = pObjectEntryTypes_;
21446 return *this;
21447 }
21448
21449 ObjectTableCreateInfoNVX& setPObjectEntryCounts( const uint32_t* pObjectEntryCounts_ )
21450 {
21451 pObjectEntryCounts = pObjectEntryCounts_;
21452 return *this;
21453 }
21454
21455 ObjectTableCreateInfoNVX& setPObjectEntryUsageFlags( const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags_ )
21456 {
21457 pObjectEntryUsageFlags = pObjectEntryUsageFlags_;
21458 return *this;
21459 }
21460
21461 ObjectTableCreateInfoNVX& setMaxUniformBuffersPerDescriptor( uint32_t maxUniformBuffersPerDescriptor_ )
21462 {
21463 maxUniformBuffersPerDescriptor = maxUniformBuffersPerDescriptor_;
21464 return *this;
21465 }
21466
21467 ObjectTableCreateInfoNVX& setMaxStorageBuffersPerDescriptor( uint32_t maxStorageBuffersPerDescriptor_ )
21468 {
21469 maxStorageBuffersPerDescriptor = maxStorageBuffersPerDescriptor_;
21470 return *this;
21471 }
21472
21473 ObjectTableCreateInfoNVX& setMaxStorageImagesPerDescriptor( uint32_t maxStorageImagesPerDescriptor_ )
21474 {
21475 maxStorageImagesPerDescriptor = maxStorageImagesPerDescriptor_;
21476 return *this;
21477 }
21478
21479 ObjectTableCreateInfoNVX& setMaxSampledImagesPerDescriptor( uint32_t maxSampledImagesPerDescriptor_ )
21480 {
21481 maxSampledImagesPerDescriptor = maxSampledImagesPerDescriptor_;
21482 return *this;
21483 }
21484
21485 ObjectTableCreateInfoNVX& setMaxPipelineLayouts( uint32_t maxPipelineLayouts_ )
21486 {
21487 maxPipelineLayouts = maxPipelineLayouts_;
21488 return *this;
21489 }
21490
21491 operator const VkObjectTableCreateInfoNVX&() const
21492 {
21493 return *reinterpret_cast<const VkObjectTableCreateInfoNVX*>(this);
21494 }
21495
21496 bool operator==( ObjectTableCreateInfoNVX const& rhs ) const
21497 {
21498 return ( sType == rhs.sType )
21499 && ( pNext == rhs.pNext )
21500 && ( objectCount == rhs.objectCount )
21501 && ( pObjectEntryTypes == rhs.pObjectEntryTypes )
21502 && ( pObjectEntryCounts == rhs.pObjectEntryCounts )
21503 && ( pObjectEntryUsageFlags == rhs.pObjectEntryUsageFlags )
21504 && ( maxUniformBuffersPerDescriptor == rhs.maxUniformBuffersPerDescriptor )
21505 && ( maxStorageBuffersPerDescriptor == rhs.maxStorageBuffersPerDescriptor )
21506 && ( maxStorageImagesPerDescriptor == rhs.maxStorageImagesPerDescriptor )
21507 && ( maxSampledImagesPerDescriptor == rhs.maxSampledImagesPerDescriptor )
21508 && ( maxPipelineLayouts == rhs.maxPipelineLayouts );
21509 }
21510
21511 bool operator!=( ObjectTableCreateInfoNVX const& rhs ) const
21512 {
21513 return !operator==( rhs );
21514 }
21515
21516 private:
21517 StructureType sType;
21518
21519 public:
21520 const void* pNext;
21521 uint32_t objectCount;
21522 const ObjectEntryTypeNVX* pObjectEntryTypes;
21523 const uint32_t* pObjectEntryCounts;
21524 const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags;
21525 uint32_t maxUniformBuffersPerDescriptor;
21526 uint32_t maxStorageBuffersPerDescriptor;
21527 uint32_t maxStorageImagesPerDescriptor;
21528 uint32_t maxSampledImagesPerDescriptor;
21529 uint32_t maxPipelineLayouts;
21530 };
21531 static_assert( sizeof( ObjectTableCreateInfoNVX ) == sizeof( VkObjectTableCreateInfoNVX ), "struct and wrapper have different size!" );
21532
21533 struct ObjectTableEntryNVX
21534 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021535 ObjectTableEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021536 : type( type_ )
21537 , flags( flags_ )
21538 {
21539 }
21540
21541 ObjectTableEntryNVX( VkObjectTableEntryNVX const & rhs )
21542 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021543 memcpy( this, &rhs, sizeof( ObjectTableEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021544 }
21545
21546 ObjectTableEntryNVX& operator=( VkObjectTableEntryNVX const & rhs )
21547 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021548 memcpy( this, &rhs, sizeof( ObjectTableEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021549 return *this;
21550 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021551 ObjectTableEntryNVX& setType( ObjectEntryTypeNVX type_ )
21552 {
21553 type = type_;
21554 return *this;
21555 }
21556
21557 ObjectTableEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
21558 {
21559 flags = flags_;
21560 return *this;
21561 }
21562
21563 operator const VkObjectTableEntryNVX&() const
21564 {
21565 return *reinterpret_cast<const VkObjectTableEntryNVX*>(this);
21566 }
21567
21568 bool operator==( ObjectTableEntryNVX const& rhs ) const
21569 {
21570 return ( type == rhs.type )
21571 && ( flags == rhs.flags );
21572 }
21573
21574 bool operator!=( ObjectTableEntryNVX const& rhs ) const
21575 {
21576 return !operator==( rhs );
21577 }
21578
21579 ObjectEntryTypeNVX type;
21580 ObjectEntryUsageFlagsNVX flags;
21581 };
21582 static_assert( sizeof( ObjectTableEntryNVX ) == sizeof( VkObjectTableEntryNVX ), "struct and wrapper have different size!" );
21583
21584 struct ObjectTablePipelineEntryNVX
21585 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021586 ObjectTablePipelineEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Pipeline pipeline_ = Pipeline() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021587 : type( type_ )
21588 , flags( flags_ )
21589 , pipeline( pipeline_ )
21590 {
21591 }
21592
21593 ObjectTablePipelineEntryNVX( VkObjectTablePipelineEntryNVX const & rhs )
21594 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021595 memcpy( this, &rhs, sizeof( ObjectTablePipelineEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021596 }
21597
21598 ObjectTablePipelineEntryNVX& operator=( VkObjectTablePipelineEntryNVX const & rhs )
21599 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021600 memcpy( this, &rhs, sizeof( ObjectTablePipelineEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021601 return *this;
21602 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021603 ObjectTablePipelineEntryNVX& setType( ObjectEntryTypeNVX type_ )
21604 {
21605 type = type_;
21606 return *this;
21607 }
21608
21609 ObjectTablePipelineEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
21610 {
21611 flags = flags_;
21612 return *this;
21613 }
21614
21615 ObjectTablePipelineEntryNVX& setPipeline( Pipeline pipeline_ )
21616 {
21617 pipeline = pipeline_;
21618 return *this;
21619 }
21620
21621 operator const VkObjectTablePipelineEntryNVX&() const
21622 {
21623 return *reinterpret_cast<const VkObjectTablePipelineEntryNVX*>(this);
21624 }
21625
21626 bool operator==( ObjectTablePipelineEntryNVX const& rhs ) const
21627 {
21628 return ( type == rhs.type )
21629 && ( flags == rhs.flags )
21630 && ( pipeline == rhs.pipeline );
21631 }
21632
21633 bool operator!=( ObjectTablePipelineEntryNVX const& rhs ) const
21634 {
21635 return !operator==( rhs );
21636 }
21637
21638 ObjectEntryTypeNVX type;
21639 ObjectEntryUsageFlagsNVX flags;
21640 Pipeline pipeline;
21641 };
21642 static_assert( sizeof( ObjectTablePipelineEntryNVX ) == sizeof( VkObjectTablePipelineEntryNVX ), "struct and wrapper have different size!" );
21643
21644 struct ObjectTableDescriptorSetEntryNVX
21645 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021646 ObjectTableDescriptorSetEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), PipelineLayout pipelineLayout_ = PipelineLayout(), DescriptorSet descriptorSet_ = DescriptorSet() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021647 : type( type_ )
21648 , flags( flags_ )
21649 , pipelineLayout( pipelineLayout_ )
21650 , descriptorSet( descriptorSet_ )
21651 {
21652 }
21653
21654 ObjectTableDescriptorSetEntryNVX( VkObjectTableDescriptorSetEntryNVX const & rhs )
21655 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021656 memcpy( this, &rhs, sizeof( ObjectTableDescriptorSetEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021657 }
21658
21659 ObjectTableDescriptorSetEntryNVX& operator=( VkObjectTableDescriptorSetEntryNVX const & rhs )
21660 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021661 memcpy( this, &rhs, sizeof( ObjectTableDescriptorSetEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021662 return *this;
21663 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021664 ObjectTableDescriptorSetEntryNVX& setType( ObjectEntryTypeNVX type_ )
21665 {
21666 type = type_;
21667 return *this;
21668 }
21669
21670 ObjectTableDescriptorSetEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
21671 {
21672 flags = flags_;
21673 return *this;
21674 }
21675
21676 ObjectTableDescriptorSetEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
21677 {
21678 pipelineLayout = pipelineLayout_;
21679 return *this;
21680 }
21681
21682 ObjectTableDescriptorSetEntryNVX& setDescriptorSet( DescriptorSet descriptorSet_ )
21683 {
21684 descriptorSet = descriptorSet_;
21685 return *this;
21686 }
21687
21688 operator const VkObjectTableDescriptorSetEntryNVX&() const
21689 {
21690 return *reinterpret_cast<const VkObjectTableDescriptorSetEntryNVX*>(this);
21691 }
21692
21693 bool operator==( ObjectTableDescriptorSetEntryNVX const& rhs ) const
21694 {
21695 return ( type == rhs.type )
21696 && ( flags == rhs.flags )
21697 && ( pipelineLayout == rhs.pipelineLayout )
21698 && ( descriptorSet == rhs.descriptorSet );
21699 }
21700
21701 bool operator!=( ObjectTableDescriptorSetEntryNVX const& rhs ) const
21702 {
21703 return !operator==( rhs );
21704 }
21705
21706 ObjectEntryTypeNVX type;
21707 ObjectEntryUsageFlagsNVX flags;
21708 PipelineLayout pipelineLayout;
21709 DescriptorSet descriptorSet;
21710 };
21711 static_assert( sizeof( ObjectTableDescriptorSetEntryNVX ) == sizeof( VkObjectTableDescriptorSetEntryNVX ), "struct and wrapper have different size!" );
21712
21713 struct ObjectTableVertexBufferEntryNVX
21714 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021715 ObjectTableVertexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Buffer buffer_ = Buffer() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021716 : type( type_ )
21717 , flags( flags_ )
21718 , buffer( buffer_ )
21719 {
21720 }
21721
21722 ObjectTableVertexBufferEntryNVX( VkObjectTableVertexBufferEntryNVX const & rhs )
21723 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021724 memcpy( this, &rhs, sizeof( ObjectTableVertexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021725 }
21726
21727 ObjectTableVertexBufferEntryNVX& operator=( VkObjectTableVertexBufferEntryNVX const & rhs )
21728 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021729 memcpy( this, &rhs, sizeof( ObjectTableVertexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021730 return *this;
21731 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021732 ObjectTableVertexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
21733 {
21734 type = type_;
21735 return *this;
21736 }
21737
21738 ObjectTableVertexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
21739 {
21740 flags = flags_;
21741 return *this;
21742 }
21743
21744 ObjectTableVertexBufferEntryNVX& setBuffer( Buffer buffer_ )
21745 {
21746 buffer = buffer_;
21747 return *this;
21748 }
21749
21750 operator const VkObjectTableVertexBufferEntryNVX&() const
21751 {
21752 return *reinterpret_cast<const VkObjectTableVertexBufferEntryNVX*>(this);
21753 }
21754
21755 bool operator==( ObjectTableVertexBufferEntryNVX const& rhs ) const
21756 {
21757 return ( type == rhs.type )
21758 && ( flags == rhs.flags )
21759 && ( buffer == rhs.buffer );
21760 }
21761
21762 bool operator!=( ObjectTableVertexBufferEntryNVX const& rhs ) const
21763 {
21764 return !operator==( rhs );
21765 }
21766
21767 ObjectEntryTypeNVX type;
21768 ObjectEntryUsageFlagsNVX flags;
21769 Buffer buffer;
21770 };
21771 static_assert( sizeof( ObjectTableVertexBufferEntryNVX ) == sizeof( VkObjectTableVertexBufferEntryNVX ), "struct and wrapper have different size!" );
21772
21773 struct ObjectTableIndexBufferEntryNVX
21774 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021775 ObjectTableIndexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Buffer buffer_ = Buffer(), IndexType indexType_ = IndexType::eUint16 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021776 : type( type_ )
21777 , flags( flags_ )
21778 , buffer( buffer_ )
Mark Young39389872017-01-19 21:10:49 -070021779 , indexType( indexType_ )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021780 {
21781 }
21782
21783 ObjectTableIndexBufferEntryNVX( VkObjectTableIndexBufferEntryNVX const & rhs )
21784 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021785 memcpy( this, &rhs, sizeof( ObjectTableIndexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021786 }
21787
21788 ObjectTableIndexBufferEntryNVX& operator=( VkObjectTableIndexBufferEntryNVX const & rhs )
21789 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021790 memcpy( this, &rhs, sizeof( ObjectTableIndexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021791 return *this;
21792 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021793 ObjectTableIndexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
21794 {
21795 type = type_;
21796 return *this;
21797 }
21798
21799 ObjectTableIndexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
21800 {
21801 flags = flags_;
21802 return *this;
21803 }
21804
21805 ObjectTableIndexBufferEntryNVX& setBuffer( Buffer buffer_ )
21806 {
21807 buffer = buffer_;
21808 return *this;
21809 }
21810
Mark Young39389872017-01-19 21:10:49 -070021811 ObjectTableIndexBufferEntryNVX& setIndexType( IndexType indexType_ )
21812 {
21813 indexType = indexType_;
21814 return *this;
21815 }
21816
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021817 operator const VkObjectTableIndexBufferEntryNVX&() const
21818 {
21819 return *reinterpret_cast<const VkObjectTableIndexBufferEntryNVX*>(this);
21820 }
21821
21822 bool operator==( ObjectTableIndexBufferEntryNVX const& rhs ) const
21823 {
21824 return ( type == rhs.type )
21825 && ( flags == rhs.flags )
Mark Young39389872017-01-19 21:10:49 -070021826 && ( buffer == rhs.buffer )
21827 && ( indexType == rhs.indexType );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021828 }
21829
21830 bool operator!=( ObjectTableIndexBufferEntryNVX const& rhs ) const
21831 {
21832 return !operator==( rhs );
21833 }
21834
21835 ObjectEntryTypeNVX type;
21836 ObjectEntryUsageFlagsNVX flags;
21837 Buffer buffer;
Mark Young39389872017-01-19 21:10:49 -070021838 IndexType indexType;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021839 };
21840 static_assert( sizeof( ObjectTableIndexBufferEntryNVX ) == sizeof( VkObjectTableIndexBufferEntryNVX ), "struct and wrapper have different size!" );
21841
21842 struct ObjectTablePushConstantEntryNVX
21843 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021844 ObjectTablePushConstantEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), PipelineLayout pipelineLayout_ = PipelineLayout(), ShaderStageFlags stageFlags_ = ShaderStageFlags() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021845 : type( type_ )
21846 , flags( flags_ )
21847 , pipelineLayout( pipelineLayout_ )
21848 , stageFlags( stageFlags_ )
21849 {
21850 }
21851
21852 ObjectTablePushConstantEntryNVX( VkObjectTablePushConstantEntryNVX const & rhs )
21853 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021854 memcpy( this, &rhs, sizeof( ObjectTablePushConstantEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021855 }
21856
21857 ObjectTablePushConstantEntryNVX& operator=( VkObjectTablePushConstantEntryNVX const & rhs )
21858 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021859 memcpy( this, &rhs, sizeof( ObjectTablePushConstantEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021860 return *this;
21861 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021862 ObjectTablePushConstantEntryNVX& setType( ObjectEntryTypeNVX type_ )
21863 {
21864 type = type_;
21865 return *this;
21866 }
21867
21868 ObjectTablePushConstantEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
21869 {
21870 flags = flags_;
21871 return *this;
21872 }
21873
21874 ObjectTablePushConstantEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
21875 {
21876 pipelineLayout = pipelineLayout_;
21877 return *this;
21878 }
21879
21880 ObjectTablePushConstantEntryNVX& setStageFlags( ShaderStageFlags stageFlags_ )
21881 {
21882 stageFlags = stageFlags_;
21883 return *this;
21884 }
21885
21886 operator const VkObjectTablePushConstantEntryNVX&() const
21887 {
21888 return *reinterpret_cast<const VkObjectTablePushConstantEntryNVX*>(this);
21889 }
21890
21891 bool operator==( ObjectTablePushConstantEntryNVX const& rhs ) const
21892 {
21893 return ( type == rhs.type )
21894 && ( flags == rhs.flags )
21895 && ( pipelineLayout == rhs.pipelineLayout )
21896 && ( stageFlags == rhs.stageFlags );
21897 }
21898
21899 bool operator!=( ObjectTablePushConstantEntryNVX const& rhs ) const
21900 {
21901 return !operator==( rhs );
21902 }
21903
21904 ObjectEntryTypeNVX type;
21905 ObjectEntryUsageFlagsNVX flags;
21906 PipelineLayout pipelineLayout;
21907 ShaderStageFlags stageFlags;
21908 };
21909 static_assert( sizeof( ObjectTablePushConstantEntryNVX ) == sizeof( VkObjectTablePushConstantEntryNVX ), "struct and wrapper have different size!" );
21910
Mark Young0f183a82017-02-28 09:58:04 -070021911 enum class DescriptorSetLayoutCreateFlagBits
21912 {
21913 ePushDescriptorKHR = VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
21914 };
21915
21916 using DescriptorSetLayoutCreateFlags = Flags<DescriptorSetLayoutCreateFlagBits, VkDescriptorSetLayoutCreateFlags>;
21917
21918 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator|( DescriptorSetLayoutCreateFlagBits bit0, DescriptorSetLayoutCreateFlagBits bit1 )
21919 {
21920 return DescriptorSetLayoutCreateFlags( bit0 ) | bit1;
21921 }
21922
21923 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator~( DescriptorSetLayoutCreateFlagBits bits )
21924 {
21925 return ~( DescriptorSetLayoutCreateFlags( bits ) );
21926 }
21927
21928 template <> struct FlagTraits<DescriptorSetLayoutCreateFlagBits>
21929 {
21930 enum
21931 {
21932 allFlags = VkFlags(DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR)
21933 };
21934 };
21935
21936 struct DescriptorSetLayoutCreateInfo
21937 {
21938 DescriptorSetLayoutCreateInfo( DescriptorSetLayoutCreateFlags flags_ = DescriptorSetLayoutCreateFlags(), uint32_t bindingCount_ = 0, const DescriptorSetLayoutBinding* pBindings_ = nullptr )
21939 : sType( StructureType::eDescriptorSetLayoutCreateInfo )
21940 , pNext( nullptr )
21941 , flags( flags_ )
21942 , bindingCount( bindingCount_ )
21943 , pBindings( pBindings_ )
21944 {
21945 }
21946
21947 DescriptorSetLayoutCreateInfo( VkDescriptorSetLayoutCreateInfo const & rhs )
21948 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021949 memcpy( this, &rhs, sizeof( DescriptorSetLayoutCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070021950 }
21951
21952 DescriptorSetLayoutCreateInfo& operator=( VkDescriptorSetLayoutCreateInfo const & rhs )
21953 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021954 memcpy( this, &rhs, sizeof( DescriptorSetLayoutCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070021955 return *this;
21956 }
Mark Young0f183a82017-02-28 09:58:04 -070021957 DescriptorSetLayoutCreateInfo& setPNext( const void* pNext_ )
21958 {
21959 pNext = pNext_;
21960 return *this;
21961 }
21962
21963 DescriptorSetLayoutCreateInfo& setFlags( DescriptorSetLayoutCreateFlags flags_ )
21964 {
21965 flags = flags_;
21966 return *this;
21967 }
21968
21969 DescriptorSetLayoutCreateInfo& setBindingCount( uint32_t bindingCount_ )
21970 {
21971 bindingCount = bindingCount_;
21972 return *this;
21973 }
21974
21975 DescriptorSetLayoutCreateInfo& setPBindings( const DescriptorSetLayoutBinding* pBindings_ )
21976 {
21977 pBindings = pBindings_;
21978 return *this;
21979 }
21980
21981 operator const VkDescriptorSetLayoutCreateInfo&() const
21982 {
21983 return *reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>(this);
21984 }
21985
21986 bool operator==( DescriptorSetLayoutCreateInfo const& rhs ) const
21987 {
21988 return ( sType == rhs.sType )
21989 && ( pNext == rhs.pNext )
21990 && ( flags == rhs.flags )
21991 && ( bindingCount == rhs.bindingCount )
21992 && ( pBindings == rhs.pBindings );
21993 }
21994
21995 bool operator!=( DescriptorSetLayoutCreateInfo const& rhs ) const
21996 {
21997 return !operator==( rhs );
21998 }
21999
22000 private:
22001 StructureType sType;
22002
22003 public:
22004 const void* pNext;
22005 DescriptorSetLayoutCreateFlags flags;
22006 uint32_t bindingCount;
22007 const DescriptorSetLayoutBinding* pBindings;
22008 };
22009 static_assert( sizeof( DescriptorSetLayoutCreateInfo ) == sizeof( VkDescriptorSetLayoutCreateInfo ), "struct and wrapper have different size!" );
22010
Mark Youngabc2d6e2017-07-07 07:59:56 -060022011 enum class ExternalMemoryHandleTypeFlagBitsKHR
Mark Young0f183a82017-02-28 09:58:04 -070022012 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022013 eOpaqueFd = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
22014 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
22015 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
22016 eD3D11Texture = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR,
22017 eD3D11TextureKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR,
22018 eD3D12Heap = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR,
22019 eD3D12Resource = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR
Mark Young0f183a82017-02-28 09:58:04 -070022020 };
22021
Mark Youngabc2d6e2017-07-07 07:59:56 -060022022 using ExternalMemoryHandleTypeFlagsKHR = Flags<ExternalMemoryHandleTypeFlagBitsKHR, VkExternalMemoryHandleTypeFlagsKHR>;
Mark Young0f183a82017-02-28 09:58:04 -070022023
Mark Youngabc2d6e2017-07-07 07:59:56 -060022024 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsKHR operator|( ExternalMemoryHandleTypeFlagBitsKHR bit0, ExternalMemoryHandleTypeFlagBitsKHR bit1 )
Mark Young0f183a82017-02-28 09:58:04 -070022025 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022026 return ExternalMemoryHandleTypeFlagsKHR( bit0 ) | bit1;
Mark Young0f183a82017-02-28 09:58:04 -070022027 }
22028
Mark Youngabc2d6e2017-07-07 07:59:56 -060022029 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsKHR operator~( ExternalMemoryHandleTypeFlagBitsKHR bits )
Mark Young0f183a82017-02-28 09:58:04 -070022030 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022031 return ~( ExternalMemoryHandleTypeFlagsKHR( bits ) );
Mark Young0f183a82017-02-28 09:58:04 -070022032 }
22033
Mark Youngabc2d6e2017-07-07 07:59:56 -060022034 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsKHR>
Mark Young0f183a82017-02-28 09:58:04 -070022035 {
22036 enum
22037 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022038 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 -070022039 };
22040 };
22041
Mark Youngabc2d6e2017-07-07 07:59:56 -060022042 struct PhysicalDeviceExternalImageFormatInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022043 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022044 PhysicalDeviceExternalImageFormatInfoKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd )
22045 : sType( StructureType::ePhysicalDeviceExternalImageFormatInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022046 , pNext( nullptr )
22047 , handleType( handleType_ )
22048 {
22049 }
22050
Mark Youngabc2d6e2017-07-07 07:59:56 -060022051 PhysicalDeviceExternalImageFormatInfoKHR( VkPhysicalDeviceExternalImageFormatInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022052 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022053 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalImageFormatInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022054 }
22055
Mark Youngabc2d6e2017-07-07 07:59:56 -060022056 PhysicalDeviceExternalImageFormatInfoKHR& operator=( VkPhysicalDeviceExternalImageFormatInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022057 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022058 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalImageFormatInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022059 return *this;
22060 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022061 PhysicalDeviceExternalImageFormatInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022062 {
22063 pNext = pNext_;
22064 return *this;
22065 }
22066
Mark Youngabc2d6e2017-07-07 07:59:56 -060022067 PhysicalDeviceExternalImageFormatInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022068 {
22069 handleType = handleType_;
22070 return *this;
22071 }
22072
Mark Youngabc2d6e2017-07-07 07:59:56 -060022073 operator const VkPhysicalDeviceExternalImageFormatInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022074 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022075 return *reinterpret_cast<const VkPhysicalDeviceExternalImageFormatInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022076 }
22077
Mark Youngabc2d6e2017-07-07 07:59:56 -060022078 bool operator==( PhysicalDeviceExternalImageFormatInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022079 {
22080 return ( sType == rhs.sType )
22081 && ( pNext == rhs.pNext )
22082 && ( handleType == rhs.handleType );
22083 }
22084
Mark Youngabc2d6e2017-07-07 07:59:56 -060022085 bool operator!=( PhysicalDeviceExternalImageFormatInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022086 {
22087 return !operator==( rhs );
22088 }
22089
22090 private:
22091 StructureType sType;
22092
22093 public:
22094 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022095 ExternalMemoryHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022096 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022097 static_assert( sizeof( PhysicalDeviceExternalImageFormatInfoKHR ) == sizeof( VkPhysicalDeviceExternalImageFormatInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022098
Mark Youngabc2d6e2017-07-07 07:59:56 -060022099 struct PhysicalDeviceExternalBufferInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022100 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022101 PhysicalDeviceExternalBufferInfoKHR( BufferCreateFlags flags_ = BufferCreateFlags(), BufferUsageFlags usage_ = BufferUsageFlags(), ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd )
22102 : sType( StructureType::ePhysicalDeviceExternalBufferInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022103 , pNext( nullptr )
22104 , flags( flags_ )
22105 , usage( usage_ )
22106 , handleType( handleType_ )
22107 {
22108 }
22109
Mark Youngabc2d6e2017-07-07 07:59:56 -060022110 PhysicalDeviceExternalBufferInfoKHR( VkPhysicalDeviceExternalBufferInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022111 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022112 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalBufferInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022113 }
22114
Mark Youngabc2d6e2017-07-07 07:59:56 -060022115 PhysicalDeviceExternalBufferInfoKHR& operator=( VkPhysicalDeviceExternalBufferInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022116 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022117 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalBufferInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022118 return *this;
22119 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022120 PhysicalDeviceExternalBufferInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022121 {
22122 pNext = pNext_;
22123 return *this;
22124 }
22125
Mark Youngabc2d6e2017-07-07 07:59:56 -060022126 PhysicalDeviceExternalBufferInfoKHR& setFlags( BufferCreateFlags flags_ )
Mark Young0f183a82017-02-28 09:58:04 -070022127 {
22128 flags = flags_;
22129 return *this;
22130 }
22131
Mark Youngabc2d6e2017-07-07 07:59:56 -060022132 PhysicalDeviceExternalBufferInfoKHR& setUsage( BufferUsageFlags usage_ )
Mark Young0f183a82017-02-28 09:58:04 -070022133 {
22134 usage = usage_;
22135 return *this;
22136 }
22137
Mark Youngabc2d6e2017-07-07 07:59:56 -060022138 PhysicalDeviceExternalBufferInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022139 {
22140 handleType = handleType_;
22141 return *this;
22142 }
22143
Mark Youngabc2d6e2017-07-07 07:59:56 -060022144 operator const VkPhysicalDeviceExternalBufferInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022145 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022146 return *reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022147 }
22148
Mark Youngabc2d6e2017-07-07 07:59:56 -060022149 bool operator==( PhysicalDeviceExternalBufferInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022150 {
22151 return ( sType == rhs.sType )
22152 && ( pNext == rhs.pNext )
22153 && ( flags == rhs.flags )
22154 && ( usage == rhs.usage )
22155 && ( handleType == rhs.handleType );
22156 }
22157
Mark Youngabc2d6e2017-07-07 07:59:56 -060022158 bool operator!=( PhysicalDeviceExternalBufferInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022159 {
22160 return !operator==( rhs );
22161 }
22162
22163 private:
22164 StructureType sType;
22165
22166 public:
22167 const void* pNext;
22168 BufferCreateFlags flags;
22169 BufferUsageFlags usage;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022170 ExternalMemoryHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022171 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022172 static_assert( sizeof( PhysicalDeviceExternalBufferInfoKHR ) == sizeof( VkPhysicalDeviceExternalBufferInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022173
Mark Youngabc2d6e2017-07-07 07:59:56 -060022174 struct ExternalMemoryImageCreateInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022175 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022176 ExternalMemoryImageCreateInfoKHR( ExternalMemoryHandleTypeFlagsKHR handleTypes_ = ExternalMemoryHandleTypeFlagsKHR() )
22177 : sType( StructureType::eExternalMemoryImageCreateInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022178 , pNext( nullptr )
22179 , handleTypes( handleTypes_ )
22180 {
22181 }
22182
Mark Youngabc2d6e2017-07-07 07:59:56 -060022183 ExternalMemoryImageCreateInfoKHR( VkExternalMemoryImageCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022184 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022185 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022186 }
22187
Mark Youngabc2d6e2017-07-07 07:59:56 -060022188 ExternalMemoryImageCreateInfoKHR& operator=( VkExternalMemoryImageCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022189 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022190 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022191 return *this;
22192 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022193 ExternalMemoryImageCreateInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022194 {
22195 pNext = pNext_;
22196 return *this;
22197 }
22198
Mark Youngabc2d6e2017-07-07 07:59:56 -060022199 ExternalMemoryImageCreateInfoKHR& setHandleTypes( ExternalMemoryHandleTypeFlagsKHR handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070022200 {
22201 handleTypes = handleTypes_;
22202 return *this;
22203 }
22204
Mark Youngabc2d6e2017-07-07 07:59:56 -060022205 operator const VkExternalMemoryImageCreateInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022206 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022207 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022208 }
22209
Mark Youngabc2d6e2017-07-07 07:59:56 -060022210 bool operator==( ExternalMemoryImageCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022211 {
22212 return ( sType == rhs.sType )
22213 && ( pNext == rhs.pNext )
22214 && ( handleTypes == rhs.handleTypes );
22215 }
22216
Mark Youngabc2d6e2017-07-07 07:59:56 -060022217 bool operator!=( ExternalMemoryImageCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022218 {
22219 return !operator==( rhs );
22220 }
22221
22222 private:
22223 StructureType sType;
22224
22225 public:
22226 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022227 ExternalMemoryHandleTypeFlagsKHR handleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070022228 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022229 static_assert( sizeof( ExternalMemoryImageCreateInfoKHR ) == sizeof( VkExternalMemoryImageCreateInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022230
Mark Youngabc2d6e2017-07-07 07:59:56 -060022231 struct ExternalMemoryBufferCreateInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022232 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022233 ExternalMemoryBufferCreateInfoKHR( ExternalMemoryHandleTypeFlagsKHR handleTypes_ = ExternalMemoryHandleTypeFlagsKHR() )
22234 : sType( StructureType::eExternalMemoryBufferCreateInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022235 , pNext( nullptr )
22236 , handleTypes( handleTypes_ )
22237 {
22238 }
22239
Mark Youngabc2d6e2017-07-07 07:59:56 -060022240 ExternalMemoryBufferCreateInfoKHR( VkExternalMemoryBufferCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022241 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022242 memcpy( this, &rhs, sizeof( ExternalMemoryBufferCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022243 }
22244
Mark Youngabc2d6e2017-07-07 07:59:56 -060022245 ExternalMemoryBufferCreateInfoKHR& operator=( VkExternalMemoryBufferCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022246 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022247 memcpy( this, &rhs, sizeof( ExternalMemoryBufferCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022248 return *this;
22249 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022250 ExternalMemoryBufferCreateInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022251 {
22252 pNext = pNext_;
22253 return *this;
22254 }
22255
Mark Youngabc2d6e2017-07-07 07:59:56 -060022256 ExternalMemoryBufferCreateInfoKHR& setHandleTypes( ExternalMemoryHandleTypeFlagsKHR handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070022257 {
22258 handleTypes = handleTypes_;
22259 return *this;
22260 }
22261
Mark Youngabc2d6e2017-07-07 07:59:56 -060022262 operator const VkExternalMemoryBufferCreateInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022263 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022264 return *reinterpret_cast<const VkExternalMemoryBufferCreateInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022265 }
22266
Mark Youngabc2d6e2017-07-07 07:59:56 -060022267 bool operator==( ExternalMemoryBufferCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022268 {
22269 return ( sType == rhs.sType )
22270 && ( pNext == rhs.pNext )
22271 && ( handleTypes == rhs.handleTypes );
22272 }
22273
Mark Youngabc2d6e2017-07-07 07:59:56 -060022274 bool operator!=( ExternalMemoryBufferCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022275 {
22276 return !operator==( rhs );
22277 }
22278
22279 private:
22280 StructureType sType;
22281
22282 public:
22283 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022284 ExternalMemoryHandleTypeFlagsKHR handleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070022285 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022286 static_assert( sizeof( ExternalMemoryBufferCreateInfoKHR ) == sizeof( VkExternalMemoryBufferCreateInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022287
Mark Youngabc2d6e2017-07-07 07:59:56 -060022288 struct ExportMemoryAllocateInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022289 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022290 ExportMemoryAllocateInfoKHR( ExternalMemoryHandleTypeFlagsKHR handleTypes_ = ExternalMemoryHandleTypeFlagsKHR() )
22291 : sType( StructureType::eExportMemoryAllocateInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022292 , pNext( nullptr )
22293 , handleTypes( handleTypes_ )
22294 {
22295 }
22296
Mark Youngabc2d6e2017-07-07 07:59:56 -060022297 ExportMemoryAllocateInfoKHR( VkExportMemoryAllocateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022298 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022299 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022300 }
22301
Mark Youngabc2d6e2017-07-07 07:59:56 -060022302 ExportMemoryAllocateInfoKHR& operator=( VkExportMemoryAllocateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022303 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022304 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022305 return *this;
22306 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022307 ExportMemoryAllocateInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022308 {
22309 pNext = pNext_;
22310 return *this;
22311 }
22312
Mark Youngabc2d6e2017-07-07 07:59:56 -060022313 ExportMemoryAllocateInfoKHR& setHandleTypes( ExternalMemoryHandleTypeFlagsKHR handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070022314 {
22315 handleTypes = handleTypes_;
22316 return *this;
22317 }
22318
Mark Youngabc2d6e2017-07-07 07:59:56 -060022319 operator const VkExportMemoryAllocateInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022320 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022321 return *reinterpret_cast<const VkExportMemoryAllocateInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022322 }
22323
Mark Youngabc2d6e2017-07-07 07:59:56 -060022324 bool operator==( ExportMemoryAllocateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022325 {
22326 return ( sType == rhs.sType )
22327 && ( pNext == rhs.pNext )
22328 && ( handleTypes == rhs.handleTypes );
22329 }
22330
Mark Youngabc2d6e2017-07-07 07:59:56 -060022331 bool operator!=( ExportMemoryAllocateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022332 {
22333 return !operator==( rhs );
22334 }
22335
22336 private:
22337 StructureType sType;
22338
22339 public:
22340 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022341 ExternalMemoryHandleTypeFlagsKHR handleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070022342 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022343 static_assert( sizeof( ExportMemoryAllocateInfoKHR ) == sizeof( VkExportMemoryAllocateInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022344
Mark Youngabc2d6e2017-07-07 07:59:56 -060022345#ifdef VK_USE_PLATFORM_WIN32_KHR
22346 struct ImportMemoryWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022347 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022348 ImportMemoryWin32HandleInfoKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd, HANDLE handle_ = 0, LPCWSTR name_ = 0 )
22349 : sType( StructureType::eImportMemoryWin32HandleInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022350 , pNext( nullptr )
22351 , handleType( handleType_ )
22352 , handle( handle_ )
Mark Youngabc2d6e2017-07-07 07:59:56 -060022353 , name( name_ )
Mark Young0f183a82017-02-28 09:58:04 -070022354 {
22355 }
22356
Mark Youngabc2d6e2017-07-07 07:59:56 -060022357 ImportMemoryWin32HandleInfoKHR( VkImportMemoryWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022358 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022359 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022360 }
22361
Mark Youngabc2d6e2017-07-07 07:59:56 -060022362 ImportMemoryWin32HandleInfoKHR& operator=( VkImportMemoryWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022363 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022364 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022365 return *this;
22366 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022367 ImportMemoryWin32HandleInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022368 {
22369 pNext = pNext_;
22370 return *this;
22371 }
22372
Mark Youngabc2d6e2017-07-07 07:59:56 -060022373 ImportMemoryWin32HandleInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022374 {
22375 handleType = handleType_;
22376 return *this;
22377 }
22378
Mark Youngabc2d6e2017-07-07 07:59:56 -060022379 ImportMemoryWin32HandleInfoKHR& setHandle( HANDLE handle_ )
Mark Young0f183a82017-02-28 09:58:04 -070022380 {
22381 handle = handle_;
22382 return *this;
22383 }
22384
Mark Youngabc2d6e2017-07-07 07:59:56 -060022385 ImportMemoryWin32HandleInfoKHR& setName( LPCWSTR name_ )
Mark Young0f183a82017-02-28 09:58:04 -070022386 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022387 name = name_;
22388 return *this;
Mark Young0f183a82017-02-28 09:58:04 -070022389 }
22390
Mark Youngabc2d6e2017-07-07 07:59:56 -060022391 operator const VkImportMemoryWin32HandleInfoKHR&() const
22392 {
22393 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoKHR*>(this);
22394 }
22395
22396 bool operator==( ImportMemoryWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022397 {
22398 return ( sType == rhs.sType )
22399 && ( pNext == rhs.pNext )
22400 && ( handleType == rhs.handleType )
Mark Youngabc2d6e2017-07-07 07:59:56 -060022401 && ( handle == rhs.handle )
22402 && ( name == rhs.name );
Mark Young0f183a82017-02-28 09:58:04 -070022403 }
22404
Mark Youngabc2d6e2017-07-07 07:59:56 -060022405 bool operator!=( ImportMemoryWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022406 {
22407 return !operator==( rhs );
22408 }
22409
22410 private:
22411 StructureType sType;
22412
22413 public:
22414 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022415 ExternalMemoryHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022416 HANDLE handle;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022417 LPCWSTR name;
Mark Young0f183a82017-02-28 09:58:04 -070022418 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022419 static_assert( sizeof( ImportMemoryWin32HandleInfoKHR ) == sizeof( VkImportMemoryWin32HandleInfoKHR ), "struct and wrapper have different size!" );
22420#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070022421
Mark Youngabc2d6e2017-07-07 07:59:56 -060022422#ifdef VK_USE_PLATFORM_WIN32_KHR
22423 struct MemoryGetWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022424 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022425 MemoryGetWin32HandleInfoKHR( DeviceMemory memory_ = DeviceMemory(), ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd )
22426 : sType( StructureType::eMemoryGetWin32HandleInfoKHR )
22427 , pNext( nullptr )
22428 , memory( memory_ )
22429 , handleType( handleType_ )
22430 {
22431 }
22432
22433 MemoryGetWin32HandleInfoKHR( VkMemoryGetWin32HandleInfoKHR const & rhs )
22434 {
22435 memcpy( this, &rhs, sizeof( MemoryGetWin32HandleInfoKHR ) );
22436 }
22437
22438 MemoryGetWin32HandleInfoKHR& operator=( VkMemoryGetWin32HandleInfoKHR const & rhs )
22439 {
22440 memcpy( this, &rhs, sizeof( MemoryGetWin32HandleInfoKHR ) );
22441 return *this;
22442 }
22443 MemoryGetWin32HandleInfoKHR& setPNext( const void* pNext_ )
22444 {
22445 pNext = pNext_;
22446 return *this;
22447 }
22448
22449 MemoryGetWin32HandleInfoKHR& setMemory( DeviceMemory memory_ )
22450 {
22451 memory = memory_;
22452 return *this;
22453 }
22454
22455 MemoryGetWin32HandleInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
22456 {
22457 handleType = handleType_;
22458 return *this;
22459 }
22460
22461 operator const VkMemoryGetWin32HandleInfoKHR&() const
22462 {
22463 return *reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR*>(this);
22464 }
22465
22466 bool operator==( MemoryGetWin32HandleInfoKHR const& rhs ) const
22467 {
22468 return ( sType == rhs.sType )
22469 && ( pNext == rhs.pNext )
22470 && ( memory == rhs.memory )
22471 && ( handleType == rhs.handleType );
22472 }
22473
22474 bool operator!=( MemoryGetWin32HandleInfoKHR const& rhs ) const
22475 {
22476 return !operator==( rhs );
22477 }
22478
22479 private:
22480 StructureType sType;
22481
22482 public:
22483 const void* pNext;
22484 DeviceMemory memory;
22485 ExternalMemoryHandleTypeFlagBitsKHR handleType;
22486 };
22487 static_assert( sizeof( MemoryGetWin32HandleInfoKHR ) == sizeof( VkMemoryGetWin32HandleInfoKHR ), "struct and wrapper have different size!" );
22488#endif /*VK_USE_PLATFORM_WIN32_KHR*/
22489
22490 struct ImportMemoryFdInfoKHR
22491 {
22492 ImportMemoryFdInfoKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd, int fd_ = 0 )
22493 : sType( StructureType::eImportMemoryFdInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022494 , pNext( nullptr )
22495 , handleType( handleType_ )
22496 , fd( fd_ )
22497 {
22498 }
22499
Mark Youngabc2d6e2017-07-07 07:59:56 -060022500 ImportMemoryFdInfoKHR( VkImportMemoryFdInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022501 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022502 memcpy( this, &rhs, sizeof( ImportMemoryFdInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022503 }
22504
Mark Youngabc2d6e2017-07-07 07:59:56 -060022505 ImportMemoryFdInfoKHR& operator=( VkImportMemoryFdInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022506 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022507 memcpy( this, &rhs, sizeof( ImportMemoryFdInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022508 return *this;
22509 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022510 ImportMemoryFdInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022511 {
22512 pNext = pNext_;
22513 return *this;
22514 }
22515
Mark Youngabc2d6e2017-07-07 07:59:56 -060022516 ImportMemoryFdInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022517 {
22518 handleType = handleType_;
22519 return *this;
22520 }
22521
Mark Youngabc2d6e2017-07-07 07:59:56 -060022522 ImportMemoryFdInfoKHR& setFd( int fd_ )
Mark Young0f183a82017-02-28 09:58:04 -070022523 {
22524 fd = fd_;
22525 return *this;
22526 }
22527
Mark Youngabc2d6e2017-07-07 07:59:56 -060022528 operator const VkImportMemoryFdInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022529 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022530 return *reinterpret_cast<const VkImportMemoryFdInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022531 }
22532
Mark Youngabc2d6e2017-07-07 07:59:56 -060022533 bool operator==( ImportMemoryFdInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022534 {
22535 return ( sType == rhs.sType )
22536 && ( pNext == rhs.pNext )
22537 && ( handleType == rhs.handleType )
22538 && ( fd == rhs.fd );
22539 }
22540
Mark Youngabc2d6e2017-07-07 07:59:56 -060022541 bool operator!=( ImportMemoryFdInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022542 {
22543 return !operator==( rhs );
22544 }
22545
22546 private:
22547 StructureType sType;
22548
22549 public:
22550 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022551 ExternalMemoryHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022552 int fd;
22553 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022554 static_assert( sizeof( ImportMemoryFdInfoKHR ) == sizeof( VkImportMemoryFdInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022555
Mark Youngabc2d6e2017-07-07 07:59:56 -060022556 struct MemoryGetFdInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022557 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022558 MemoryGetFdInfoKHR( DeviceMemory memory_ = DeviceMemory(), ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd )
22559 : sType( StructureType::eMemoryGetFdInfoKHR )
22560 , pNext( nullptr )
22561 , memory( memory_ )
22562 , handleType( handleType_ )
22563 {
22564 }
22565
22566 MemoryGetFdInfoKHR( VkMemoryGetFdInfoKHR const & rhs )
22567 {
22568 memcpy( this, &rhs, sizeof( MemoryGetFdInfoKHR ) );
22569 }
22570
22571 MemoryGetFdInfoKHR& operator=( VkMemoryGetFdInfoKHR const & rhs )
22572 {
22573 memcpy( this, &rhs, sizeof( MemoryGetFdInfoKHR ) );
22574 return *this;
22575 }
22576 MemoryGetFdInfoKHR& setPNext( const void* pNext_ )
22577 {
22578 pNext = pNext_;
22579 return *this;
22580 }
22581
22582 MemoryGetFdInfoKHR& setMemory( DeviceMemory memory_ )
22583 {
22584 memory = memory_;
22585 return *this;
22586 }
22587
22588 MemoryGetFdInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
22589 {
22590 handleType = handleType_;
22591 return *this;
22592 }
22593
22594 operator const VkMemoryGetFdInfoKHR&() const
22595 {
22596 return *reinterpret_cast<const VkMemoryGetFdInfoKHR*>(this);
22597 }
22598
22599 bool operator==( MemoryGetFdInfoKHR const& rhs ) const
22600 {
22601 return ( sType == rhs.sType )
22602 && ( pNext == rhs.pNext )
22603 && ( memory == rhs.memory )
22604 && ( handleType == rhs.handleType );
22605 }
22606
22607 bool operator!=( MemoryGetFdInfoKHR const& rhs ) const
22608 {
22609 return !operator==( rhs );
22610 }
22611
22612 private:
22613 StructureType sType;
22614
22615 public:
22616 const void* pNext;
22617 DeviceMemory memory;
22618 ExternalMemoryHandleTypeFlagBitsKHR handleType;
22619 };
22620 static_assert( sizeof( MemoryGetFdInfoKHR ) == sizeof( VkMemoryGetFdInfoKHR ), "struct and wrapper have different size!" );
22621
22622 enum class ExternalMemoryFeatureFlagBitsKHR
22623 {
22624 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR,
22625 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR,
22626 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR
Mark Young0f183a82017-02-28 09:58:04 -070022627 };
22628
Mark Youngabc2d6e2017-07-07 07:59:56 -060022629 using ExternalMemoryFeatureFlagsKHR = Flags<ExternalMemoryFeatureFlagBitsKHR, VkExternalMemoryFeatureFlagsKHR>;
Mark Young0f183a82017-02-28 09:58:04 -070022630
Mark Youngabc2d6e2017-07-07 07:59:56 -060022631 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsKHR operator|( ExternalMemoryFeatureFlagBitsKHR bit0, ExternalMemoryFeatureFlagBitsKHR bit1 )
Mark Young0f183a82017-02-28 09:58:04 -070022632 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022633 return ExternalMemoryFeatureFlagsKHR( bit0 ) | bit1;
Mark Young0f183a82017-02-28 09:58:04 -070022634 }
22635
Mark Youngabc2d6e2017-07-07 07:59:56 -060022636 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsKHR operator~( ExternalMemoryFeatureFlagBitsKHR bits )
Mark Young0f183a82017-02-28 09:58:04 -070022637 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022638 return ~( ExternalMemoryFeatureFlagsKHR( bits ) );
Mark Young0f183a82017-02-28 09:58:04 -070022639 }
22640
Mark Youngabc2d6e2017-07-07 07:59:56 -060022641 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsKHR>
Mark Young0f183a82017-02-28 09:58:04 -070022642 {
22643 enum
22644 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022645 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsKHR::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsKHR::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsKHR::eImportable)
Mark Young0f183a82017-02-28 09:58:04 -070022646 };
22647 };
22648
Mark Youngabc2d6e2017-07-07 07:59:56 -060022649 struct ExternalMemoryPropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070022650 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022651 operator const VkExternalMemoryPropertiesKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022652 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022653 return *reinterpret_cast<const VkExternalMemoryPropertiesKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022654 }
22655
Mark Youngabc2d6e2017-07-07 07:59:56 -060022656 bool operator==( ExternalMemoryPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022657 {
22658 return ( externalMemoryFeatures == rhs.externalMemoryFeatures )
22659 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
22660 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
22661 }
22662
Mark Youngabc2d6e2017-07-07 07:59:56 -060022663 bool operator!=( ExternalMemoryPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022664 {
22665 return !operator==( rhs );
22666 }
22667
Mark Youngabc2d6e2017-07-07 07:59:56 -060022668 ExternalMemoryFeatureFlagsKHR externalMemoryFeatures;
22669 ExternalMemoryHandleTypeFlagsKHR exportFromImportedHandleTypes;
22670 ExternalMemoryHandleTypeFlagsKHR compatibleHandleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070022671 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022672 static_assert( sizeof( ExternalMemoryPropertiesKHR ) == sizeof( VkExternalMemoryPropertiesKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022673
Mark Youngabc2d6e2017-07-07 07:59:56 -060022674 struct ExternalImageFormatPropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070022675 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022676 operator const VkExternalImageFormatPropertiesKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022677 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022678 return *reinterpret_cast<const VkExternalImageFormatPropertiesKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022679 }
22680
Mark Youngabc2d6e2017-07-07 07:59:56 -060022681 bool operator==( ExternalImageFormatPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022682 {
22683 return ( sType == rhs.sType )
22684 && ( pNext == rhs.pNext )
22685 && ( externalMemoryProperties == rhs.externalMemoryProperties );
22686 }
22687
Mark Youngabc2d6e2017-07-07 07:59:56 -060022688 bool operator!=( ExternalImageFormatPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022689 {
22690 return !operator==( rhs );
22691 }
22692
22693 private:
22694 StructureType sType;
22695
22696 public:
22697 void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022698 ExternalMemoryPropertiesKHR externalMemoryProperties;
Mark Young0f183a82017-02-28 09:58:04 -070022699 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022700 static_assert( sizeof( ExternalImageFormatPropertiesKHR ) == sizeof( VkExternalImageFormatPropertiesKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022701
Mark Youngabc2d6e2017-07-07 07:59:56 -060022702 struct ExternalBufferPropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070022703 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022704 operator const VkExternalBufferPropertiesKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022705 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022706 return *reinterpret_cast<const VkExternalBufferPropertiesKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022707 }
22708
Mark Youngabc2d6e2017-07-07 07:59:56 -060022709 bool operator==( ExternalBufferPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022710 {
22711 return ( sType == rhs.sType )
22712 && ( pNext == rhs.pNext )
22713 && ( externalMemoryProperties == rhs.externalMemoryProperties );
22714 }
22715
Mark Youngabc2d6e2017-07-07 07:59:56 -060022716 bool operator!=( ExternalBufferPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022717 {
22718 return !operator==( rhs );
22719 }
22720
22721 private:
22722 StructureType sType;
22723
22724 public:
22725 void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022726 ExternalMemoryPropertiesKHR externalMemoryProperties;
Mark Young0f183a82017-02-28 09:58:04 -070022727 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022728 static_assert( sizeof( ExternalBufferPropertiesKHR ) == sizeof( VkExternalBufferPropertiesKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022729
Mark Youngabc2d6e2017-07-07 07:59:56 -060022730 enum class ExternalSemaphoreHandleTypeFlagBitsKHR
Mark Young0f183a82017-02-28 09:58:04 -070022731 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022732 eOpaqueFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
22733 eOpaqueWin32 = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
22734 eOpaqueWin32Kmt = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
22735 eD3D12Fence = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR,
22736 eSyncFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR
Mark Young0f183a82017-02-28 09:58:04 -070022737 };
22738
Mark Youngabc2d6e2017-07-07 07:59:56 -060022739 using ExternalSemaphoreHandleTypeFlagsKHR = Flags<ExternalSemaphoreHandleTypeFlagBitsKHR, VkExternalSemaphoreHandleTypeFlagsKHR>;
Mark Young0f183a82017-02-28 09:58:04 -070022740
Mark Youngabc2d6e2017-07-07 07:59:56 -060022741 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlagsKHR operator|( ExternalSemaphoreHandleTypeFlagBitsKHR bit0, ExternalSemaphoreHandleTypeFlagBitsKHR bit1 )
Mark Young0f183a82017-02-28 09:58:04 -070022742 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022743 return ExternalSemaphoreHandleTypeFlagsKHR( bit0 ) | bit1;
Mark Young0f183a82017-02-28 09:58:04 -070022744 }
22745
Mark Youngabc2d6e2017-07-07 07:59:56 -060022746 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlagsKHR operator~( ExternalSemaphoreHandleTypeFlagBitsKHR bits )
Mark Young0f183a82017-02-28 09:58:04 -070022747 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022748 return ~( ExternalSemaphoreHandleTypeFlagsKHR( bits ) );
Mark Young0f183a82017-02-28 09:58:04 -070022749 }
22750
Mark Youngabc2d6e2017-07-07 07:59:56 -060022751 template <> struct FlagTraits<ExternalSemaphoreHandleTypeFlagBitsKHR>
Mark Young0f183a82017-02-28 09:58:04 -070022752 {
22753 enum
22754 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022755 allFlags = VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eD3D12Fence) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eSyncFd)
Mark Young0f183a82017-02-28 09:58:04 -070022756 };
22757 };
22758
Mark Youngabc2d6e2017-07-07 07:59:56 -060022759 struct PhysicalDeviceExternalSemaphoreInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022760 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022761 PhysicalDeviceExternalSemaphoreInfoKHR( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd )
22762 : sType( StructureType::ePhysicalDeviceExternalSemaphoreInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022763 , pNext( nullptr )
22764 , handleType( handleType_ )
22765 {
22766 }
22767
Mark Youngabc2d6e2017-07-07 07:59:56 -060022768 PhysicalDeviceExternalSemaphoreInfoKHR( VkPhysicalDeviceExternalSemaphoreInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022769 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022770 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalSemaphoreInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022771 }
22772
Mark Youngabc2d6e2017-07-07 07:59:56 -060022773 PhysicalDeviceExternalSemaphoreInfoKHR& operator=( VkPhysicalDeviceExternalSemaphoreInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022774 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022775 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalSemaphoreInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022776 return *this;
22777 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022778 PhysicalDeviceExternalSemaphoreInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022779 {
22780 pNext = pNext_;
22781 return *this;
22782 }
22783
Mark Youngabc2d6e2017-07-07 07:59:56 -060022784 PhysicalDeviceExternalSemaphoreInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022785 {
22786 handleType = handleType_;
22787 return *this;
22788 }
22789
Mark Youngabc2d6e2017-07-07 07:59:56 -060022790 operator const VkPhysicalDeviceExternalSemaphoreInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022791 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022792 return *reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022793 }
22794
Mark Youngabc2d6e2017-07-07 07:59:56 -060022795 bool operator==( PhysicalDeviceExternalSemaphoreInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022796 {
22797 return ( sType == rhs.sType )
22798 && ( pNext == rhs.pNext )
22799 && ( handleType == rhs.handleType );
22800 }
22801
Mark Youngabc2d6e2017-07-07 07:59:56 -060022802 bool operator!=( PhysicalDeviceExternalSemaphoreInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022803 {
22804 return !operator==( rhs );
22805 }
22806
22807 private:
22808 StructureType sType;
22809
22810 public:
22811 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022812 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022813 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022814 static_assert( sizeof( PhysicalDeviceExternalSemaphoreInfoKHR ) == sizeof( VkPhysicalDeviceExternalSemaphoreInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022815
Mark Youngabc2d6e2017-07-07 07:59:56 -060022816 struct ExportSemaphoreCreateInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022817 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022818 ExportSemaphoreCreateInfoKHR( ExternalSemaphoreHandleTypeFlagsKHR handleTypes_ = ExternalSemaphoreHandleTypeFlagsKHR() )
22819 : sType( StructureType::eExportSemaphoreCreateInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022820 , pNext( nullptr )
22821 , handleTypes( handleTypes_ )
22822 {
22823 }
22824
Mark Youngabc2d6e2017-07-07 07:59:56 -060022825 ExportSemaphoreCreateInfoKHR( VkExportSemaphoreCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022826 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022827 memcpy( this, &rhs, sizeof( ExportSemaphoreCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022828 }
22829
Mark Youngabc2d6e2017-07-07 07:59:56 -060022830 ExportSemaphoreCreateInfoKHR& operator=( VkExportSemaphoreCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022831 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022832 memcpy( this, &rhs, sizeof( ExportSemaphoreCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022833 return *this;
22834 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022835 ExportSemaphoreCreateInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022836 {
22837 pNext = pNext_;
22838 return *this;
22839 }
22840
Mark Youngabc2d6e2017-07-07 07:59:56 -060022841 ExportSemaphoreCreateInfoKHR& setHandleTypes( ExternalSemaphoreHandleTypeFlagsKHR handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070022842 {
22843 handleTypes = handleTypes_;
22844 return *this;
22845 }
22846
Mark Youngabc2d6e2017-07-07 07:59:56 -060022847 operator const VkExportSemaphoreCreateInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022848 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022849 return *reinterpret_cast<const VkExportSemaphoreCreateInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022850 }
22851
Mark Youngabc2d6e2017-07-07 07:59:56 -060022852 bool operator==( ExportSemaphoreCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022853 {
22854 return ( sType == rhs.sType )
22855 && ( pNext == rhs.pNext )
22856 && ( handleTypes == rhs.handleTypes );
22857 }
22858
Mark Youngabc2d6e2017-07-07 07:59:56 -060022859 bool operator!=( ExportSemaphoreCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022860 {
22861 return !operator==( rhs );
22862 }
22863
22864 private:
22865 StructureType sType;
22866
22867 public:
22868 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022869 ExternalSemaphoreHandleTypeFlagsKHR handleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070022870 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022871 static_assert( sizeof( ExportSemaphoreCreateInfoKHR ) == sizeof( VkExportSemaphoreCreateInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022872
Mark Youngabc2d6e2017-07-07 07:59:56 -060022873#ifdef VK_USE_PLATFORM_WIN32_KHR
22874 struct SemaphoreGetWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022875 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022876 SemaphoreGetWin32HandleInfoKHR( Semaphore semaphore_ = Semaphore(), ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd )
22877 : sType( StructureType::eSemaphoreGetWin32HandleInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022878 , pNext( nullptr )
22879 , semaphore( semaphore_ )
22880 , handleType( handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022881 {
22882 }
22883
Mark Youngabc2d6e2017-07-07 07:59:56 -060022884 SemaphoreGetWin32HandleInfoKHR( VkSemaphoreGetWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022885 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022886 memcpy( this, &rhs, sizeof( SemaphoreGetWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022887 }
22888
Mark Youngabc2d6e2017-07-07 07:59:56 -060022889 SemaphoreGetWin32HandleInfoKHR& operator=( VkSemaphoreGetWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022890 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022891 memcpy( this, &rhs, sizeof( SemaphoreGetWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022892 return *this;
22893 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022894 SemaphoreGetWin32HandleInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022895 {
22896 pNext = pNext_;
22897 return *this;
22898 }
22899
Mark Youngabc2d6e2017-07-07 07:59:56 -060022900 SemaphoreGetWin32HandleInfoKHR& setSemaphore( Semaphore semaphore_ )
Mark Young0f183a82017-02-28 09:58:04 -070022901 {
22902 semaphore = semaphore_;
22903 return *this;
22904 }
22905
Mark Youngabc2d6e2017-07-07 07:59:56 -060022906 SemaphoreGetWin32HandleInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022907 {
22908 handleType = handleType_;
22909 return *this;
22910 }
22911
Mark Youngabc2d6e2017-07-07 07:59:56 -060022912 operator const VkSemaphoreGetWin32HandleInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022913 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022914 return *reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022915 }
22916
Mark Youngabc2d6e2017-07-07 07:59:56 -060022917 bool operator==( SemaphoreGetWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022918 {
22919 return ( sType == rhs.sType )
22920 && ( pNext == rhs.pNext )
22921 && ( semaphore == rhs.semaphore )
Mark Youngabc2d6e2017-07-07 07:59:56 -060022922 && ( handleType == rhs.handleType );
Mark Young0f183a82017-02-28 09:58:04 -070022923 }
22924
Mark Youngabc2d6e2017-07-07 07:59:56 -060022925 bool operator!=( SemaphoreGetWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022926 {
22927 return !operator==( rhs );
22928 }
22929
22930 private:
22931 StructureType sType;
22932
22933 public:
22934 const void* pNext;
22935 Semaphore semaphore;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022936 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022937 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022938 static_assert( sizeof( SemaphoreGetWin32HandleInfoKHR ) == sizeof( VkSemaphoreGetWin32HandleInfoKHR ), "struct and wrapper have different size!" );
22939#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070022940
Mark Youngabc2d6e2017-07-07 07:59:56 -060022941 struct SemaphoreGetFdInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022942 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022943 SemaphoreGetFdInfoKHR( Semaphore semaphore_ = Semaphore(), ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd )
22944 : sType( StructureType::eSemaphoreGetFdInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022945 , pNext( nullptr )
22946 , semaphore( semaphore_ )
22947 , handleType( handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022948 {
22949 }
22950
Mark Youngabc2d6e2017-07-07 07:59:56 -060022951 SemaphoreGetFdInfoKHR( VkSemaphoreGetFdInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022952 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022953 memcpy( this, &rhs, sizeof( SemaphoreGetFdInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022954 }
22955
Mark Youngabc2d6e2017-07-07 07:59:56 -060022956 SemaphoreGetFdInfoKHR& operator=( VkSemaphoreGetFdInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022957 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022958 memcpy( this, &rhs, sizeof( SemaphoreGetFdInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022959 return *this;
22960 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022961 SemaphoreGetFdInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022962 {
22963 pNext = pNext_;
22964 return *this;
22965 }
22966
Mark Youngabc2d6e2017-07-07 07:59:56 -060022967 SemaphoreGetFdInfoKHR& setSemaphore( Semaphore semaphore_ )
Mark Young0f183a82017-02-28 09:58:04 -070022968 {
22969 semaphore = semaphore_;
22970 return *this;
22971 }
22972
Mark Youngabc2d6e2017-07-07 07:59:56 -060022973 SemaphoreGetFdInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022974 {
22975 handleType = handleType_;
22976 return *this;
22977 }
22978
Mark Youngabc2d6e2017-07-07 07:59:56 -060022979 operator const VkSemaphoreGetFdInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022980 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022981 return *reinterpret_cast<const VkSemaphoreGetFdInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022982 }
22983
Mark Youngabc2d6e2017-07-07 07:59:56 -060022984 bool operator==( SemaphoreGetFdInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022985 {
22986 return ( sType == rhs.sType )
22987 && ( pNext == rhs.pNext )
22988 && ( semaphore == rhs.semaphore )
Mark Youngabc2d6e2017-07-07 07:59:56 -060022989 && ( handleType == rhs.handleType );
Mark Young0f183a82017-02-28 09:58:04 -070022990 }
22991
Mark Youngabc2d6e2017-07-07 07:59:56 -060022992 bool operator!=( SemaphoreGetFdInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022993 {
22994 return !operator==( rhs );
22995 }
22996
22997 private:
22998 StructureType sType;
22999
23000 public:
23001 const void* pNext;
23002 Semaphore semaphore;
Mark Youngabc2d6e2017-07-07 07:59:56 -060023003 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070023004 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060023005 static_assert( sizeof( SemaphoreGetFdInfoKHR ) == sizeof( VkSemaphoreGetFdInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070023006
Mark Youngabc2d6e2017-07-07 07:59:56 -060023007 enum class ExternalSemaphoreFeatureFlagBitsKHR
Mark Young0f183a82017-02-28 09:58:04 -070023008 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060023009 eExportable = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR,
23010 eImportable = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR
Mark Young0f183a82017-02-28 09:58:04 -070023011 };
23012
Mark Youngabc2d6e2017-07-07 07:59:56 -060023013 using ExternalSemaphoreFeatureFlagsKHR = Flags<ExternalSemaphoreFeatureFlagBitsKHR, VkExternalSemaphoreFeatureFlagsKHR>;
Mark Young0f183a82017-02-28 09:58:04 -070023014
Mark Youngabc2d6e2017-07-07 07:59:56 -060023015 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlagsKHR operator|( ExternalSemaphoreFeatureFlagBitsKHR bit0, ExternalSemaphoreFeatureFlagBitsKHR bit1 )
Mark Young0f183a82017-02-28 09:58:04 -070023016 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060023017 return ExternalSemaphoreFeatureFlagsKHR( bit0 ) | bit1;
Mark Young0f183a82017-02-28 09:58:04 -070023018 }
23019
Mark Youngabc2d6e2017-07-07 07:59:56 -060023020 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlagsKHR operator~( ExternalSemaphoreFeatureFlagBitsKHR bits )
Mark Young0f183a82017-02-28 09:58:04 -070023021 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060023022 return ~( ExternalSemaphoreFeatureFlagsKHR( bits ) );
Mark Young0f183a82017-02-28 09:58:04 -070023023 }
23024
Mark Youngabc2d6e2017-07-07 07:59:56 -060023025 template <> struct FlagTraits<ExternalSemaphoreFeatureFlagBitsKHR>
Mark Young0f183a82017-02-28 09:58:04 -070023026 {
23027 enum
23028 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060023029 allFlags = VkFlags(ExternalSemaphoreFeatureFlagBitsKHR::eExportable) | VkFlags(ExternalSemaphoreFeatureFlagBitsKHR::eImportable)
Mark Young0f183a82017-02-28 09:58:04 -070023030 };
23031 };
23032
Mark Youngabc2d6e2017-07-07 07:59:56 -060023033 struct ExternalSemaphorePropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070023034 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060023035 operator const VkExternalSemaphorePropertiesKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070023036 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060023037 return *reinterpret_cast<const VkExternalSemaphorePropertiesKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070023038 }
23039
Mark Youngabc2d6e2017-07-07 07:59:56 -060023040 bool operator==( ExternalSemaphorePropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070023041 {
23042 return ( sType == rhs.sType )
23043 && ( pNext == rhs.pNext )
23044 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
23045 && ( compatibleHandleTypes == rhs.compatibleHandleTypes )
23046 && ( externalSemaphoreFeatures == rhs.externalSemaphoreFeatures );
23047 }
23048
Mark Youngabc2d6e2017-07-07 07:59:56 -060023049 bool operator!=( ExternalSemaphorePropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070023050 {
23051 return !operator==( rhs );
23052 }
23053
23054 private:
23055 StructureType sType;
23056
23057 public:
23058 void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060023059 ExternalSemaphoreHandleTypeFlagsKHR exportFromImportedHandleTypes;
23060 ExternalSemaphoreHandleTypeFlagsKHR compatibleHandleTypes;
23061 ExternalSemaphoreFeatureFlagsKHR externalSemaphoreFeatures;
Mark Young0f183a82017-02-28 09:58:04 -070023062 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060023063 static_assert( sizeof( ExternalSemaphorePropertiesKHR ) == sizeof( VkExternalSemaphorePropertiesKHR ), "struct and wrapper have different size!" );
23064
23065 enum class SemaphoreImportFlagBitsKHR
23066 {
23067 eTemporary = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR
23068 };
23069
23070 using SemaphoreImportFlagsKHR = Flags<SemaphoreImportFlagBitsKHR, VkSemaphoreImportFlagsKHR>;
23071
23072 VULKAN_HPP_INLINE SemaphoreImportFlagsKHR operator|( SemaphoreImportFlagBitsKHR bit0, SemaphoreImportFlagBitsKHR bit1 )
23073 {
23074 return SemaphoreImportFlagsKHR( bit0 ) | bit1;
23075 }
23076
23077 VULKAN_HPP_INLINE SemaphoreImportFlagsKHR operator~( SemaphoreImportFlagBitsKHR bits )
23078 {
23079 return ~( SemaphoreImportFlagsKHR( bits ) );
23080 }
23081
23082 template <> struct FlagTraits<SemaphoreImportFlagBitsKHR>
23083 {
23084 enum
23085 {
23086 allFlags = VkFlags(SemaphoreImportFlagBitsKHR::eTemporary)
23087 };
23088 };
23089
23090#ifdef VK_USE_PLATFORM_WIN32_KHR
23091 struct ImportSemaphoreWin32HandleInfoKHR
23092 {
23093 ImportSemaphoreWin32HandleInfoKHR( Semaphore semaphore_ = Semaphore(), SemaphoreImportFlagsKHR flags_ = SemaphoreImportFlagsKHR(), ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd, HANDLE handle_ = 0, LPCWSTR name_ = 0 )
23094 : sType( StructureType::eImportSemaphoreWin32HandleInfoKHR )
23095 , pNext( nullptr )
23096 , semaphore( semaphore_ )
23097 , flags( flags_ )
23098 , handleType( handleType_ )
23099 , handle( handle_ )
23100 , name( name_ )
23101 {
23102 }
23103
23104 ImportSemaphoreWin32HandleInfoKHR( VkImportSemaphoreWin32HandleInfoKHR const & rhs )
23105 {
23106 memcpy( this, &rhs, sizeof( ImportSemaphoreWin32HandleInfoKHR ) );
23107 }
23108
23109 ImportSemaphoreWin32HandleInfoKHR& operator=( VkImportSemaphoreWin32HandleInfoKHR const & rhs )
23110 {
23111 memcpy( this, &rhs, sizeof( ImportSemaphoreWin32HandleInfoKHR ) );
23112 return *this;
23113 }
23114 ImportSemaphoreWin32HandleInfoKHR& setPNext( const void* pNext_ )
23115 {
23116 pNext = pNext_;
23117 return *this;
23118 }
23119
23120 ImportSemaphoreWin32HandleInfoKHR& setSemaphore( Semaphore semaphore_ )
23121 {
23122 semaphore = semaphore_;
23123 return *this;
23124 }
23125
23126 ImportSemaphoreWin32HandleInfoKHR& setFlags( SemaphoreImportFlagsKHR flags_ )
23127 {
23128 flags = flags_;
23129 return *this;
23130 }
23131
23132 ImportSemaphoreWin32HandleInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
23133 {
23134 handleType = handleType_;
23135 return *this;
23136 }
23137
23138 ImportSemaphoreWin32HandleInfoKHR& setHandle( HANDLE handle_ )
23139 {
23140 handle = handle_;
23141 return *this;
23142 }
23143
23144 ImportSemaphoreWin32HandleInfoKHR& setName( LPCWSTR name_ )
23145 {
23146 name = name_;
23147 return *this;
23148 }
23149
23150 operator const VkImportSemaphoreWin32HandleInfoKHR&() const
23151 {
23152 return *reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR*>(this);
23153 }
23154
23155 bool operator==( ImportSemaphoreWin32HandleInfoKHR const& rhs ) const
23156 {
23157 return ( sType == rhs.sType )
23158 && ( pNext == rhs.pNext )
23159 && ( semaphore == rhs.semaphore )
23160 && ( flags == rhs.flags )
23161 && ( handleType == rhs.handleType )
23162 && ( handle == rhs.handle )
23163 && ( name == rhs.name );
23164 }
23165
23166 bool operator!=( ImportSemaphoreWin32HandleInfoKHR const& rhs ) const
23167 {
23168 return !operator==( rhs );
23169 }
23170
23171 private:
23172 StructureType sType;
23173
23174 public:
23175 const void* pNext;
23176 Semaphore semaphore;
23177 SemaphoreImportFlagsKHR flags;
23178 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
23179 HANDLE handle;
23180 LPCWSTR name;
23181 };
23182 static_assert( sizeof( ImportSemaphoreWin32HandleInfoKHR ) == sizeof( VkImportSemaphoreWin32HandleInfoKHR ), "struct and wrapper have different size!" );
23183#endif /*VK_USE_PLATFORM_WIN32_KHR*/
23184
23185 struct ImportSemaphoreFdInfoKHR
23186 {
23187 ImportSemaphoreFdInfoKHR( Semaphore semaphore_ = Semaphore(), SemaphoreImportFlagsKHR flags_ = SemaphoreImportFlagsKHR(), ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd, int fd_ = 0 )
23188 : sType( StructureType::eImportSemaphoreFdInfoKHR )
23189 , pNext( nullptr )
23190 , semaphore( semaphore_ )
23191 , flags( flags_ )
23192 , handleType( handleType_ )
23193 , fd( fd_ )
23194 {
23195 }
23196
23197 ImportSemaphoreFdInfoKHR( VkImportSemaphoreFdInfoKHR const & rhs )
23198 {
23199 memcpy( this, &rhs, sizeof( ImportSemaphoreFdInfoKHR ) );
23200 }
23201
23202 ImportSemaphoreFdInfoKHR& operator=( VkImportSemaphoreFdInfoKHR const & rhs )
23203 {
23204 memcpy( this, &rhs, sizeof( ImportSemaphoreFdInfoKHR ) );
23205 return *this;
23206 }
23207 ImportSemaphoreFdInfoKHR& setPNext( const void* pNext_ )
23208 {
23209 pNext = pNext_;
23210 return *this;
23211 }
23212
23213 ImportSemaphoreFdInfoKHR& setSemaphore( Semaphore semaphore_ )
23214 {
23215 semaphore = semaphore_;
23216 return *this;
23217 }
23218
23219 ImportSemaphoreFdInfoKHR& setFlags( SemaphoreImportFlagsKHR flags_ )
23220 {
23221 flags = flags_;
23222 return *this;
23223 }
23224
23225 ImportSemaphoreFdInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
23226 {
23227 handleType = handleType_;
23228 return *this;
23229 }
23230
23231 ImportSemaphoreFdInfoKHR& setFd( int fd_ )
23232 {
23233 fd = fd_;
23234 return *this;
23235 }
23236
23237 operator const VkImportSemaphoreFdInfoKHR&() const
23238 {
23239 return *reinterpret_cast<const VkImportSemaphoreFdInfoKHR*>(this);
23240 }
23241
23242 bool operator==( ImportSemaphoreFdInfoKHR const& rhs ) const
23243 {
23244 return ( sType == rhs.sType )
23245 && ( pNext == rhs.pNext )
23246 && ( semaphore == rhs.semaphore )
23247 && ( flags == rhs.flags )
23248 && ( handleType == rhs.handleType )
23249 && ( fd == rhs.fd );
23250 }
23251
23252 bool operator!=( ImportSemaphoreFdInfoKHR const& rhs ) const
23253 {
23254 return !operator==( rhs );
23255 }
23256
23257 private:
23258 StructureType sType;
23259
23260 public:
23261 const void* pNext;
23262 Semaphore semaphore;
23263 SemaphoreImportFlagsKHR flags;
23264 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
23265 int fd;
23266 };
23267 static_assert( sizeof( ImportSemaphoreFdInfoKHR ) == sizeof( VkImportSemaphoreFdInfoKHR ), "struct and wrapper have different size!" );
23268
23269 enum class ExternalFenceHandleTypeFlagBitsKHR
23270 {
23271 eOpaqueFd = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
23272 eOpaqueWin32 = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
23273 eOpaqueWin32Kmt = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
23274 eSyncFd = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR
23275 };
23276
23277 using ExternalFenceHandleTypeFlagsKHR = Flags<ExternalFenceHandleTypeFlagBitsKHR, VkExternalFenceHandleTypeFlagsKHR>;
23278
23279 VULKAN_HPP_INLINE ExternalFenceHandleTypeFlagsKHR operator|( ExternalFenceHandleTypeFlagBitsKHR bit0, ExternalFenceHandleTypeFlagBitsKHR bit1 )
23280 {
23281 return ExternalFenceHandleTypeFlagsKHR( bit0 ) | bit1;
23282 }
23283
23284 VULKAN_HPP_INLINE ExternalFenceHandleTypeFlagsKHR operator~( ExternalFenceHandleTypeFlagBitsKHR bits )
23285 {
23286 return ~( ExternalFenceHandleTypeFlagsKHR( bits ) );
23287 }
23288
23289 template <> struct FlagTraits<ExternalFenceHandleTypeFlagBitsKHR>
23290 {
23291 enum
23292 {
23293 allFlags = VkFlags(ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd) | VkFlags(ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32) | VkFlags(ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) | VkFlags(ExternalFenceHandleTypeFlagBitsKHR::eSyncFd)
23294 };
23295 };
23296
23297 struct PhysicalDeviceExternalFenceInfoKHR
23298 {
23299 PhysicalDeviceExternalFenceInfoKHR( ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd )
23300 : sType( StructureType::ePhysicalDeviceExternalFenceInfoKHR )
23301 , pNext( nullptr )
23302 , handleType( handleType_ )
23303 {
23304 }
23305
23306 PhysicalDeviceExternalFenceInfoKHR( VkPhysicalDeviceExternalFenceInfoKHR const & rhs )
23307 {
23308 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalFenceInfoKHR ) );
23309 }
23310
23311 PhysicalDeviceExternalFenceInfoKHR& operator=( VkPhysicalDeviceExternalFenceInfoKHR const & rhs )
23312 {
23313 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalFenceInfoKHR ) );
23314 return *this;
23315 }
23316 PhysicalDeviceExternalFenceInfoKHR& setPNext( const void* pNext_ )
23317 {
23318 pNext = pNext_;
23319 return *this;
23320 }
23321
23322 PhysicalDeviceExternalFenceInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
23323 {
23324 handleType = handleType_;
23325 return *this;
23326 }
23327
23328 operator const VkPhysicalDeviceExternalFenceInfoKHR&() const
23329 {
23330 return *reinterpret_cast<const VkPhysicalDeviceExternalFenceInfoKHR*>(this);
23331 }
23332
23333 bool operator==( PhysicalDeviceExternalFenceInfoKHR const& rhs ) const
23334 {
23335 return ( sType == rhs.sType )
23336 && ( pNext == rhs.pNext )
23337 && ( handleType == rhs.handleType );
23338 }
23339
23340 bool operator!=( PhysicalDeviceExternalFenceInfoKHR const& rhs ) const
23341 {
23342 return !operator==( rhs );
23343 }
23344
23345 private:
23346 StructureType sType;
23347
23348 public:
23349 const void* pNext;
23350 ExternalFenceHandleTypeFlagBitsKHR handleType;
23351 };
23352 static_assert( sizeof( PhysicalDeviceExternalFenceInfoKHR ) == sizeof( VkPhysicalDeviceExternalFenceInfoKHR ), "struct and wrapper have different size!" );
23353
23354 struct ExportFenceCreateInfoKHR
23355 {
23356 ExportFenceCreateInfoKHR( ExternalFenceHandleTypeFlagsKHR handleTypes_ = ExternalFenceHandleTypeFlagsKHR() )
23357 : sType( StructureType::eExportFenceCreateInfoKHR )
23358 , pNext( nullptr )
23359 , handleTypes( handleTypes_ )
23360 {
23361 }
23362
23363 ExportFenceCreateInfoKHR( VkExportFenceCreateInfoKHR const & rhs )
23364 {
23365 memcpy( this, &rhs, sizeof( ExportFenceCreateInfoKHR ) );
23366 }
23367
23368 ExportFenceCreateInfoKHR& operator=( VkExportFenceCreateInfoKHR const & rhs )
23369 {
23370 memcpy( this, &rhs, sizeof( ExportFenceCreateInfoKHR ) );
23371 return *this;
23372 }
23373 ExportFenceCreateInfoKHR& setPNext( const void* pNext_ )
23374 {
23375 pNext = pNext_;
23376 return *this;
23377 }
23378
23379 ExportFenceCreateInfoKHR& setHandleTypes( ExternalFenceHandleTypeFlagsKHR handleTypes_ )
23380 {
23381 handleTypes = handleTypes_;
23382 return *this;
23383 }
23384
23385 operator const VkExportFenceCreateInfoKHR&() const
23386 {
23387 return *reinterpret_cast<const VkExportFenceCreateInfoKHR*>(this);
23388 }
23389
23390 bool operator==( ExportFenceCreateInfoKHR const& rhs ) const
23391 {
23392 return ( sType == rhs.sType )
23393 && ( pNext == rhs.pNext )
23394 && ( handleTypes == rhs.handleTypes );
23395 }
23396
23397 bool operator!=( ExportFenceCreateInfoKHR const& rhs ) const
23398 {
23399 return !operator==( rhs );
23400 }
23401
23402 private:
23403 StructureType sType;
23404
23405 public:
23406 const void* pNext;
23407 ExternalFenceHandleTypeFlagsKHR handleTypes;
23408 };
23409 static_assert( sizeof( ExportFenceCreateInfoKHR ) == sizeof( VkExportFenceCreateInfoKHR ), "struct and wrapper have different size!" );
23410
23411#ifdef VK_USE_PLATFORM_WIN32_KHR
23412 struct FenceGetWin32HandleInfoKHR
23413 {
23414 FenceGetWin32HandleInfoKHR( Fence fence_ = Fence(), ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd )
23415 : sType( StructureType::eFenceGetWin32HandleInfoKHR )
23416 , pNext( nullptr )
23417 , fence( fence_ )
23418 , handleType( handleType_ )
23419 {
23420 }
23421
23422 FenceGetWin32HandleInfoKHR( VkFenceGetWin32HandleInfoKHR const & rhs )
23423 {
23424 memcpy( this, &rhs, sizeof( FenceGetWin32HandleInfoKHR ) );
23425 }
23426
23427 FenceGetWin32HandleInfoKHR& operator=( VkFenceGetWin32HandleInfoKHR const & rhs )
23428 {
23429 memcpy( this, &rhs, sizeof( FenceGetWin32HandleInfoKHR ) );
23430 return *this;
23431 }
23432 FenceGetWin32HandleInfoKHR& setPNext( const void* pNext_ )
23433 {
23434 pNext = pNext_;
23435 return *this;
23436 }
23437
23438 FenceGetWin32HandleInfoKHR& setFence( Fence fence_ )
23439 {
23440 fence = fence_;
23441 return *this;
23442 }
23443
23444 FenceGetWin32HandleInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
23445 {
23446 handleType = handleType_;
23447 return *this;
23448 }
23449
23450 operator const VkFenceGetWin32HandleInfoKHR&() const
23451 {
23452 return *reinterpret_cast<const VkFenceGetWin32HandleInfoKHR*>(this);
23453 }
23454
23455 bool operator==( FenceGetWin32HandleInfoKHR const& rhs ) const
23456 {
23457 return ( sType == rhs.sType )
23458 && ( pNext == rhs.pNext )
23459 && ( fence == rhs.fence )
23460 && ( handleType == rhs.handleType );
23461 }
23462
23463 bool operator!=( FenceGetWin32HandleInfoKHR const& rhs ) const
23464 {
23465 return !operator==( rhs );
23466 }
23467
23468 private:
23469 StructureType sType;
23470
23471 public:
23472 const void* pNext;
23473 Fence fence;
23474 ExternalFenceHandleTypeFlagBitsKHR handleType;
23475 };
23476 static_assert( sizeof( FenceGetWin32HandleInfoKHR ) == sizeof( VkFenceGetWin32HandleInfoKHR ), "struct and wrapper have different size!" );
23477#endif /*VK_USE_PLATFORM_WIN32_KHR*/
23478
23479 struct FenceGetFdInfoKHR
23480 {
23481 FenceGetFdInfoKHR( Fence fence_ = Fence(), ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd )
23482 : sType( StructureType::eFenceGetFdInfoKHR )
23483 , pNext( nullptr )
23484 , fence( fence_ )
23485 , handleType( handleType_ )
23486 {
23487 }
23488
23489 FenceGetFdInfoKHR( VkFenceGetFdInfoKHR const & rhs )
23490 {
23491 memcpy( this, &rhs, sizeof( FenceGetFdInfoKHR ) );
23492 }
23493
23494 FenceGetFdInfoKHR& operator=( VkFenceGetFdInfoKHR const & rhs )
23495 {
23496 memcpy( this, &rhs, sizeof( FenceGetFdInfoKHR ) );
23497 return *this;
23498 }
23499 FenceGetFdInfoKHR& setPNext( const void* pNext_ )
23500 {
23501 pNext = pNext_;
23502 return *this;
23503 }
23504
23505 FenceGetFdInfoKHR& setFence( Fence fence_ )
23506 {
23507 fence = fence_;
23508 return *this;
23509 }
23510
23511 FenceGetFdInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
23512 {
23513 handleType = handleType_;
23514 return *this;
23515 }
23516
23517 operator const VkFenceGetFdInfoKHR&() const
23518 {
23519 return *reinterpret_cast<const VkFenceGetFdInfoKHR*>(this);
23520 }
23521
23522 bool operator==( FenceGetFdInfoKHR const& rhs ) const
23523 {
23524 return ( sType == rhs.sType )
23525 && ( pNext == rhs.pNext )
23526 && ( fence == rhs.fence )
23527 && ( handleType == rhs.handleType );
23528 }
23529
23530 bool operator!=( FenceGetFdInfoKHR const& rhs ) const
23531 {
23532 return !operator==( rhs );
23533 }
23534
23535 private:
23536 StructureType sType;
23537
23538 public:
23539 const void* pNext;
23540 Fence fence;
23541 ExternalFenceHandleTypeFlagBitsKHR handleType;
23542 };
23543 static_assert( sizeof( FenceGetFdInfoKHR ) == sizeof( VkFenceGetFdInfoKHR ), "struct and wrapper have different size!" );
23544
23545 enum class ExternalFenceFeatureFlagBitsKHR
23546 {
23547 eExportable = VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR,
23548 eImportable = VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR
23549 };
23550
23551 using ExternalFenceFeatureFlagsKHR = Flags<ExternalFenceFeatureFlagBitsKHR, VkExternalFenceFeatureFlagsKHR>;
23552
23553 VULKAN_HPP_INLINE ExternalFenceFeatureFlagsKHR operator|( ExternalFenceFeatureFlagBitsKHR bit0, ExternalFenceFeatureFlagBitsKHR bit1 )
23554 {
23555 return ExternalFenceFeatureFlagsKHR( bit0 ) | bit1;
23556 }
23557
23558 VULKAN_HPP_INLINE ExternalFenceFeatureFlagsKHR operator~( ExternalFenceFeatureFlagBitsKHR bits )
23559 {
23560 return ~( ExternalFenceFeatureFlagsKHR( bits ) );
23561 }
23562
23563 template <> struct FlagTraits<ExternalFenceFeatureFlagBitsKHR>
23564 {
23565 enum
23566 {
23567 allFlags = VkFlags(ExternalFenceFeatureFlagBitsKHR::eExportable) | VkFlags(ExternalFenceFeatureFlagBitsKHR::eImportable)
23568 };
23569 };
23570
23571 struct ExternalFencePropertiesKHR
23572 {
23573 operator const VkExternalFencePropertiesKHR&() const
23574 {
23575 return *reinterpret_cast<const VkExternalFencePropertiesKHR*>(this);
23576 }
23577
23578 bool operator==( ExternalFencePropertiesKHR const& rhs ) const
23579 {
23580 return ( sType == rhs.sType )
23581 && ( pNext == rhs.pNext )
23582 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
23583 && ( compatibleHandleTypes == rhs.compatibleHandleTypes )
23584 && ( externalFenceFeatures == rhs.externalFenceFeatures );
23585 }
23586
23587 bool operator!=( ExternalFencePropertiesKHR const& rhs ) const
23588 {
23589 return !operator==( rhs );
23590 }
23591
23592 private:
23593 StructureType sType;
23594
23595 public:
23596 void* pNext;
23597 ExternalFenceHandleTypeFlagsKHR exportFromImportedHandleTypes;
23598 ExternalFenceHandleTypeFlagsKHR compatibleHandleTypes;
23599 ExternalFenceFeatureFlagsKHR externalFenceFeatures;
23600 };
23601 static_assert( sizeof( ExternalFencePropertiesKHR ) == sizeof( VkExternalFencePropertiesKHR ), "struct and wrapper have different size!" );
23602
23603 enum class FenceImportFlagBitsKHR
23604 {
23605 eTemporary = VK_FENCE_IMPORT_TEMPORARY_BIT_KHR
23606 };
23607
23608 using FenceImportFlagsKHR = Flags<FenceImportFlagBitsKHR, VkFenceImportFlagsKHR>;
23609
23610 VULKAN_HPP_INLINE FenceImportFlagsKHR operator|( FenceImportFlagBitsKHR bit0, FenceImportFlagBitsKHR bit1 )
23611 {
23612 return FenceImportFlagsKHR( bit0 ) | bit1;
23613 }
23614
23615 VULKAN_HPP_INLINE FenceImportFlagsKHR operator~( FenceImportFlagBitsKHR bits )
23616 {
23617 return ~( FenceImportFlagsKHR( bits ) );
23618 }
23619
23620 template <> struct FlagTraits<FenceImportFlagBitsKHR>
23621 {
23622 enum
23623 {
23624 allFlags = VkFlags(FenceImportFlagBitsKHR::eTemporary)
23625 };
23626 };
23627
23628#ifdef VK_USE_PLATFORM_WIN32_KHR
23629 struct ImportFenceWin32HandleInfoKHR
23630 {
23631 ImportFenceWin32HandleInfoKHR( Fence fence_ = Fence(), FenceImportFlagsKHR flags_ = FenceImportFlagsKHR(), ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd, HANDLE handle_ = 0, LPCWSTR name_ = 0 )
23632 : sType( StructureType::eImportFenceWin32HandleInfoKHR )
23633 , pNext( nullptr )
23634 , fence( fence_ )
23635 , flags( flags_ )
23636 , handleType( handleType_ )
23637 , handle( handle_ )
23638 , name( name_ )
23639 {
23640 }
23641
23642 ImportFenceWin32HandleInfoKHR( VkImportFenceWin32HandleInfoKHR const & rhs )
23643 {
23644 memcpy( this, &rhs, sizeof( ImportFenceWin32HandleInfoKHR ) );
23645 }
23646
23647 ImportFenceWin32HandleInfoKHR& operator=( VkImportFenceWin32HandleInfoKHR const & rhs )
23648 {
23649 memcpy( this, &rhs, sizeof( ImportFenceWin32HandleInfoKHR ) );
23650 return *this;
23651 }
23652 ImportFenceWin32HandleInfoKHR& setPNext( const void* pNext_ )
23653 {
23654 pNext = pNext_;
23655 return *this;
23656 }
23657
23658 ImportFenceWin32HandleInfoKHR& setFence( Fence fence_ )
23659 {
23660 fence = fence_;
23661 return *this;
23662 }
23663
23664 ImportFenceWin32HandleInfoKHR& setFlags( FenceImportFlagsKHR flags_ )
23665 {
23666 flags = flags_;
23667 return *this;
23668 }
23669
23670 ImportFenceWin32HandleInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
23671 {
23672 handleType = handleType_;
23673 return *this;
23674 }
23675
23676 ImportFenceWin32HandleInfoKHR& setHandle( HANDLE handle_ )
23677 {
23678 handle = handle_;
23679 return *this;
23680 }
23681
23682 ImportFenceWin32HandleInfoKHR& setName( LPCWSTR name_ )
23683 {
23684 name = name_;
23685 return *this;
23686 }
23687
23688 operator const VkImportFenceWin32HandleInfoKHR&() const
23689 {
23690 return *reinterpret_cast<const VkImportFenceWin32HandleInfoKHR*>(this);
23691 }
23692
23693 bool operator==( ImportFenceWin32HandleInfoKHR const& rhs ) const
23694 {
23695 return ( sType == rhs.sType )
23696 && ( pNext == rhs.pNext )
23697 && ( fence == rhs.fence )
23698 && ( flags == rhs.flags )
23699 && ( handleType == rhs.handleType )
23700 && ( handle == rhs.handle )
23701 && ( name == rhs.name );
23702 }
23703
23704 bool operator!=( ImportFenceWin32HandleInfoKHR const& rhs ) const
23705 {
23706 return !operator==( rhs );
23707 }
23708
23709 private:
23710 StructureType sType;
23711
23712 public:
23713 const void* pNext;
23714 Fence fence;
23715 FenceImportFlagsKHR flags;
23716 ExternalFenceHandleTypeFlagBitsKHR handleType;
23717 HANDLE handle;
23718 LPCWSTR name;
23719 };
23720 static_assert( sizeof( ImportFenceWin32HandleInfoKHR ) == sizeof( VkImportFenceWin32HandleInfoKHR ), "struct and wrapper have different size!" );
23721#endif /*VK_USE_PLATFORM_WIN32_KHR*/
23722
23723 struct ImportFenceFdInfoKHR
23724 {
23725 ImportFenceFdInfoKHR( Fence fence_ = Fence(), FenceImportFlagsKHR flags_ = FenceImportFlagsKHR(), ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd, int fd_ = 0 )
23726 : sType( StructureType::eImportFenceFdInfoKHR )
23727 , pNext( nullptr )
23728 , fence( fence_ )
23729 , flags( flags_ )
23730 , handleType( handleType_ )
23731 , fd( fd_ )
23732 {
23733 }
23734
23735 ImportFenceFdInfoKHR( VkImportFenceFdInfoKHR const & rhs )
23736 {
23737 memcpy( this, &rhs, sizeof( ImportFenceFdInfoKHR ) );
23738 }
23739
23740 ImportFenceFdInfoKHR& operator=( VkImportFenceFdInfoKHR const & rhs )
23741 {
23742 memcpy( this, &rhs, sizeof( ImportFenceFdInfoKHR ) );
23743 return *this;
23744 }
23745 ImportFenceFdInfoKHR& setPNext( const void* pNext_ )
23746 {
23747 pNext = pNext_;
23748 return *this;
23749 }
23750
23751 ImportFenceFdInfoKHR& setFence( Fence fence_ )
23752 {
23753 fence = fence_;
23754 return *this;
23755 }
23756
23757 ImportFenceFdInfoKHR& setFlags( FenceImportFlagsKHR flags_ )
23758 {
23759 flags = flags_;
23760 return *this;
23761 }
23762
23763 ImportFenceFdInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
23764 {
23765 handleType = handleType_;
23766 return *this;
23767 }
23768
23769 ImportFenceFdInfoKHR& setFd( int fd_ )
23770 {
23771 fd = fd_;
23772 return *this;
23773 }
23774
23775 operator const VkImportFenceFdInfoKHR&() const
23776 {
23777 return *reinterpret_cast<const VkImportFenceFdInfoKHR*>(this);
23778 }
23779
23780 bool operator==( ImportFenceFdInfoKHR const& rhs ) const
23781 {
23782 return ( sType == rhs.sType )
23783 && ( pNext == rhs.pNext )
23784 && ( fence == rhs.fence )
23785 && ( flags == rhs.flags )
23786 && ( handleType == rhs.handleType )
23787 && ( fd == rhs.fd );
23788 }
23789
23790 bool operator!=( ImportFenceFdInfoKHR const& rhs ) const
23791 {
23792 return !operator==( rhs );
23793 }
23794
23795 private:
23796 StructureType sType;
23797
23798 public:
23799 const void* pNext;
23800 Fence fence;
23801 FenceImportFlagsKHR flags;
23802 ExternalFenceHandleTypeFlagBitsKHR handleType;
23803 int fd;
23804 };
23805 static_assert( sizeof( ImportFenceFdInfoKHR ) == sizeof( VkImportFenceFdInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070023806
Mark Young39389872017-01-19 21:10:49 -070023807 enum class SurfaceCounterFlagBitsEXT
23808 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060023809 eVblank = VK_SURFACE_COUNTER_VBLANK_EXT
Mark Young39389872017-01-19 21:10:49 -070023810 };
23811
23812 using SurfaceCounterFlagsEXT = Flags<SurfaceCounterFlagBitsEXT, VkSurfaceCounterFlagsEXT>;
23813
23814 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator|( SurfaceCounterFlagBitsEXT bit0, SurfaceCounterFlagBitsEXT bit1 )
23815 {
23816 return SurfaceCounterFlagsEXT( bit0 ) | bit1;
23817 }
23818
23819 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator~( SurfaceCounterFlagBitsEXT bits )
23820 {
23821 return ~( SurfaceCounterFlagsEXT( bits ) );
23822 }
23823
23824 template <> struct FlagTraits<SurfaceCounterFlagBitsEXT>
23825 {
23826 enum
23827 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060023828 allFlags = VkFlags(SurfaceCounterFlagBitsEXT::eVblank)
Mark Young39389872017-01-19 21:10:49 -070023829 };
23830 };
23831
23832 struct SurfaceCapabilities2EXT
23833 {
23834 operator const VkSurfaceCapabilities2EXT&() const
23835 {
23836 return *reinterpret_cast<const VkSurfaceCapabilities2EXT*>(this);
23837 }
23838
23839 bool operator==( SurfaceCapabilities2EXT const& rhs ) const
23840 {
23841 return ( sType == rhs.sType )
23842 && ( pNext == rhs.pNext )
23843 && ( minImageCount == rhs.minImageCount )
23844 && ( maxImageCount == rhs.maxImageCount )
23845 && ( currentExtent == rhs.currentExtent )
23846 && ( minImageExtent == rhs.minImageExtent )
23847 && ( maxImageExtent == rhs.maxImageExtent )
23848 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
23849 && ( supportedTransforms == rhs.supportedTransforms )
23850 && ( currentTransform == rhs.currentTransform )
23851 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
23852 && ( supportedUsageFlags == rhs.supportedUsageFlags )
23853 && ( supportedSurfaceCounters == rhs.supportedSurfaceCounters );
23854 }
23855
23856 bool operator!=( SurfaceCapabilities2EXT const& rhs ) const
23857 {
23858 return !operator==( rhs );
23859 }
23860
23861 private:
23862 StructureType sType;
23863
23864 public:
23865 void* pNext;
23866 uint32_t minImageCount;
23867 uint32_t maxImageCount;
23868 Extent2D currentExtent;
23869 Extent2D minImageExtent;
23870 Extent2D maxImageExtent;
23871 uint32_t maxImageArrayLayers;
23872 SurfaceTransformFlagsKHR supportedTransforms;
23873 SurfaceTransformFlagBitsKHR currentTransform;
23874 CompositeAlphaFlagsKHR supportedCompositeAlpha;
23875 ImageUsageFlags supportedUsageFlags;
23876 SurfaceCounterFlagsEXT supportedSurfaceCounters;
23877 };
23878 static_assert( sizeof( SurfaceCapabilities2EXT ) == sizeof( VkSurfaceCapabilities2EXT ), "struct and wrapper have different size!" );
23879
23880 struct SwapchainCounterCreateInfoEXT
23881 {
23882 SwapchainCounterCreateInfoEXT( SurfaceCounterFlagsEXT surfaceCounters_ = SurfaceCounterFlagsEXT() )
23883 : sType( StructureType::eSwapchainCounterCreateInfoEXT )
23884 , pNext( nullptr )
23885 , surfaceCounters( surfaceCounters_ )
23886 {
23887 }
23888
23889 SwapchainCounterCreateInfoEXT( VkSwapchainCounterCreateInfoEXT const & rhs )
23890 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023891 memcpy( this, &rhs, sizeof( SwapchainCounterCreateInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070023892 }
23893
23894 SwapchainCounterCreateInfoEXT& operator=( VkSwapchainCounterCreateInfoEXT const & rhs )
23895 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023896 memcpy( this, &rhs, sizeof( SwapchainCounterCreateInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070023897 return *this;
23898 }
Mark Young39389872017-01-19 21:10:49 -070023899 SwapchainCounterCreateInfoEXT& setPNext( const void* pNext_ )
23900 {
23901 pNext = pNext_;
23902 return *this;
23903 }
23904
23905 SwapchainCounterCreateInfoEXT& setSurfaceCounters( SurfaceCounterFlagsEXT surfaceCounters_ )
23906 {
23907 surfaceCounters = surfaceCounters_;
23908 return *this;
23909 }
23910
23911 operator const VkSwapchainCounterCreateInfoEXT&() const
23912 {
23913 return *reinterpret_cast<const VkSwapchainCounterCreateInfoEXT*>(this);
23914 }
23915
23916 bool operator==( SwapchainCounterCreateInfoEXT const& rhs ) const
23917 {
23918 return ( sType == rhs.sType )
23919 && ( pNext == rhs.pNext )
23920 && ( surfaceCounters == rhs.surfaceCounters );
23921 }
23922
23923 bool operator!=( SwapchainCounterCreateInfoEXT const& rhs ) const
23924 {
23925 return !operator==( rhs );
23926 }
23927
23928 private:
23929 StructureType sType;
23930
23931 public:
23932 const void* pNext;
23933 SurfaceCounterFlagsEXT surfaceCounters;
23934 };
23935 static_assert( sizeof( SwapchainCounterCreateInfoEXT ) == sizeof( VkSwapchainCounterCreateInfoEXT ), "struct and wrapper have different size!" );
23936
23937 enum class DisplayPowerStateEXT
23938 {
23939 eOff = VK_DISPLAY_POWER_STATE_OFF_EXT,
23940 eSuspend = VK_DISPLAY_POWER_STATE_SUSPEND_EXT,
23941 eOn = VK_DISPLAY_POWER_STATE_ON_EXT
23942 };
23943
23944 struct DisplayPowerInfoEXT
23945 {
23946 DisplayPowerInfoEXT( DisplayPowerStateEXT powerState_ = DisplayPowerStateEXT::eOff )
23947 : sType( StructureType::eDisplayPowerInfoEXT )
23948 , pNext( nullptr )
23949 , powerState( powerState_ )
23950 {
23951 }
23952
23953 DisplayPowerInfoEXT( VkDisplayPowerInfoEXT const & rhs )
23954 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023955 memcpy( this, &rhs, sizeof( DisplayPowerInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070023956 }
23957
23958 DisplayPowerInfoEXT& operator=( VkDisplayPowerInfoEXT const & rhs )
23959 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023960 memcpy( this, &rhs, sizeof( DisplayPowerInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070023961 return *this;
23962 }
Mark Young39389872017-01-19 21:10:49 -070023963 DisplayPowerInfoEXT& setPNext( const void* pNext_ )
23964 {
23965 pNext = pNext_;
23966 return *this;
23967 }
23968
23969 DisplayPowerInfoEXT& setPowerState( DisplayPowerStateEXT powerState_ )
23970 {
23971 powerState = powerState_;
23972 return *this;
23973 }
23974
23975 operator const VkDisplayPowerInfoEXT&() const
23976 {
23977 return *reinterpret_cast<const VkDisplayPowerInfoEXT*>(this);
23978 }
23979
23980 bool operator==( DisplayPowerInfoEXT const& rhs ) const
23981 {
23982 return ( sType == rhs.sType )
23983 && ( pNext == rhs.pNext )
23984 && ( powerState == rhs.powerState );
23985 }
23986
23987 bool operator!=( DisplayPowerInfoEXT const& rhs ) const
23988 {
23989 return !operator==( rhs );
23990 }
23991
23992 private:
23993 StructureType sType;
23994
23995 public:
23996 const void* pNext;
23997 DisplayPowerStateEXT powerState;
23998 };
23999 static_assert( sizeof( DisplayPowerInfoEXT ) == sizeof( VkDisplayPowerInfoEXT ), "struct and wrapper have different size!" );
24000
24001 enum class DeviceEventTypeEXT
24002 {
24003 eDisplayHotplug = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT
24004 };
24005
24006 struct DeviceEventInfoEXT
24007 {
24008 DeviceEventInfoEXT( DeviceEventTypeEXT deviceEvent_ = DeviceEventTypeEXT::eDisplayHotplug )
24009 : sType( StructureType::eDeviceEventInfoEXT )
24010 , pNext( nullptr )
24011 , deviceEvent( deviceEvent_ )
24012 {
24013 }
24014
24015 DeviceEventInfoEXT( VkDeviceEventInfoEXT const & rhs )
24016 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024017 memcpy( this, &rhs, sizeof( DeviceEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070024018 }
24019
24020 DeviceEventInfoEXT& operator=( VkDeviceEventInfoEXT const & rhs )
24021 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024022 memcpy( this, &rhs, sizeof( DeviceEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070024023 return *this;
24024 }
Mark Young39389872017-01-19 21:10:49 -070024025 DeviceEventInfoEXT& setPNext( const void* pNext_ )
24026 {
24027 pNext = pNext_;
24028 return *this;
24029 }
24030
24031 DeviceEventInfoEXT& setDeviceEvent( DeviceEventTypeEXT deviceEvent_ )
24032 {
24033 deviceEvent = deviceEvent_;
24034 return *this;
24035 }
24036
24037 operator const VkDeviceEventInfoEXT&() const
24038 {
24039 return *reinterpret_cast<const VkDeviceEventInfoEXT*>(this);
24040 }
24041
24042 bool operator==( DeviceEventInfoEXT const& rhs ) const
24043 {
24044 return ( sType == rhs.sType )
24045 && ( pNext == rhs.pNext )
24046 && ( deviceEvent == rhs.deviceEvent );
24047 }
24048
24049 bool operator!=( DeviceEventInfoEXT const& rhs ) const
24050 {
24051 return !operator==( rhs );
24052 }
24053
24054 private:
24055 StructureType sType;
24056
24057 public:
24058 const void* pNext;
24059 DeviceEventTypeEXT deviceEvent;
24060 };
24061 static_assert( sizeof( DeviceEventInfoEXT ) == sizeof( VkDeviceEventInfoEXT ), "struct and wrapper have different size!" );
24062
24063 enum class DisplayEventTypeEXT
24064 {
24065 eFirstPixelOut = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT
24066 };
24067
24068 struct DisplayEventInfoEXT
24069 {
24070 DisplayEventInfoEXT( DisplayEventTypeEXT displayEvent_ = DisplayEventTypeEXT::eFirstPixelOut )
24071 : sType( StructureType::eDisplayEventInfoEXT )
24072 , pNext( nullptr )
24073 , displayEvent( displayEvent_ )
24074 {
24075 }
24076
24077 DisplayEventInfoEXT( VkDisplayEventInfoEXT const & rhs )
24078 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024079 memcpy( this, &rhs, sizeof( DisplayEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070024080 }
24081
24082 DisplayEventInfoEXT& operator=( VkDisplayEventInfoEXT const & rhs )
24083 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024084 memcpy( this, &rhs, sizeof( DisplayEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070024085 return *this;
24086 }
Mark Young39389872017-01-19 21:10:49 -070024087 DisplayEventInfoEXT& setPNext( const void* pNext_ )
24088 {
24089 pNext = pNext_;
24090 return *this;
24091 }
24092
24093 DisplayEventInfoEXT& setDisplayEvent( DisplayEventTypeEXT displayEvent_ )
24094 {
24095 displayEvent = displayEvent_;
24096 return *this;
24097 }
24098
24099 operator const VkDisplayEventInfoEXT&() const
24100 {
24101 return *reinterpret_cast<const VkDisplayEventInfoEXT*>(this);
24102 }
24103
24104 bool operator==( DisplayEventInfoEXT const& rhs ) const
24105 {
24106 return ( sType == rhs.sType )
24107 && ( pNext == rhs.pNext )
24108 && ( displayEvent == rhs.displayEvent );
24109 }
24110
24111 bool operator!=( DisplayEventInfoEXT const& rhs ) const
24112 {
24113 return !operator==( rhs );
24114 }
24115
24116 private:
24117 StructureType sType;
24118
24119 public:
24120 const void* pNext;
24121 DisplayEventTypeEXT displayEvent;
24122 };
24123 static_assert( sizeof( DisplayEventInfoEXT ) == sizeof( VkDisplayEventInfoEXT ), "struct and wrapper have different size!" );
24124
Mark Young0f183a82017-02-28 09:58:04 -070024125 enum class PeerMemoryFeatureFlagBitsKHX
24126 {
24127 eCopySrc = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX,
24128 eCopyDst = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX,
24129 eGenericSrc = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX,
24130 eGenericDst = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX
24131 };
24132
24133 using PeerMemoryFeatureFlagsKHX = Flags<PeerMemoryFeatureFlagBitsKHX, VkPeerMemoryFeatureFlagsKHX>;
24134
24135 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX operator|( PeerMemoryFeatureFlagBitsKHX bit0, PeerMemoryFeatureFlagBitsKHX bit1 )
24136 {
24137 return PeerMemoryFeatureFlagsKHX( bit0 ) | bit1;
24138 }
24139
24140 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX operator~( PeerMemoryFeatureFlagBitsKHX bits )
24141 {
24142 return ~( PeerMemoryFeatureFlagsKHX( bits ) );
24143 }
24144
24145 template <> struct FlagTraits<PeerMemoryFeatureFlagBitsKHX>
24146 {
24147 enum
24148 {
24149 allFlags = VkFlags(PeerMemoryFeatureFlagBitsKHX::eCopySrc) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eCopyDst) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eGenericSrc) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eGenericDst)
24150 };
24151 };
24152
24153 enum class MemoryAllocateFlagBitsKHX
24154 {
24155 eDeviceMask = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX
24156 };
24157
24158 using MemoryAllocateFlagsKHX = Flags<MemoryAllocateFlagBitsKHX, VkMemoryAllocateFlagsKHX>;
24159
24160 VULKAN_HPP_INLINE MemoryAllocateFlagsKHX operator|( MemoryAllocateFlagBitsKHX bit0, MemoryAllocateFlagBitsKHX bit1 )
24161 {
24162 return MemoryAllocateFlagsKHX( bit0 ) | bit1;
24163 }
24164
24165 VULKAN_HPP_INLINE MemoryAllocateFlagsKHX operator~( MemoryAllocateFlagBitsKHX bits )
24166 {
24167 return ~( MemoryAllocateFlagsKHX( bits ) );
24168 }
24169
24170 template <> struct FlagTraits<MemoryAllocateFlagBitsKHX>
24171 {
24172 enum
24173 {
24174 allFlags = VkFlags(MemoryAllocateFlagBitsKHX::eDeviceMask)
24175 };
24176 };
24177
24178 struct MemoryAllocateFlagsInfoKHX
24179 {
24180 MemoryAllocateFlagsInfoKHX( MemoryAllocateFlagsKHX flags_ = MemoryAllocateFlagsKHX(), uint32_t deviceMask_ = 0 )
24181 : sType( StructureType::eMemoryAllocateFlagsInfoKHX )
24182 , pNext( nullptr )
24183 , flags( flags_ )
24184 , deviceMask( deviceMask_ )
24185 {
24186 }
24187
24188 MemoryAllocateFlagsInfoKHX( VkMemoryAllocateFlagsInfoKHX const & rhs )
24189 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024190 memcpy( this, &rhs, sizeof( MemoryAllocateFlagsInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070024191 }
24192
24193 MemoryAllocateFlagsInfoKHX& operator=( VkMemoryAllocateFlagsInfoKHX const & rhs )
24194 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024195 memcpy( this, &rhs, sizeof( MemoryAllocateFlagsInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070024196 return *this;
24197 }
Mark Young0f183a82017-02-28 09:58:04 -070024198 MemoryAllocateFlagsInfoKHX& setPNext( const void* pNext_ )
24199 {
24200 pNext = pNext_;
24201 return *this;
24202 }
24203
24204 MemoryAllocateFlagsInfoKHX& setFlags( MemoryAllocateFlagsKHX flags_ )
24205 {
24206 flags = flags_;
24207 return *this;
24208 }
24209
24210 MemoryAllocateFlagsInfoKHX& setDeviceMask( uint32_t deviceMask_ )
24211 {
24212 deviceMask = deviceMask_;
24213 return *this;
24214 }
24215
24216 operator const VkMemoryAllocateFlagsInfoKHX&() const
24217 {
24218 return *reinterpret_cast<const VkMemoryAllocateFlagsInfoKHX*>(this);
24219 }
24220
24221 bool operator==( MemoryAllocateFlagsInfoKHX const& rhs ) const
24222 {
24223 return ( sType == rhs.sType )
24224 && ( pNext == rhs.pNext )
24225 && ( flags == rhs.flags )
24226 && ( deviceMask == rhs.deviceMask );
24227 }
24228
24229 bool operator!=( MemoryAllocateFlagsInfoKHX const& rhs ) const
24230 {
24231 return !operator==( rhs );
24232 }
24233
24234 private:
24235 StructureType sType;
24236
24237 public:
24238 const void* pNext;
24239 MemoryAllocateFlagsKHX flags;
24240 uint32_t deviceMask;
24241 };
24242 static_assert( sizeof( MemoryAllocateFlagsInfoKHX ) == sizeof( VkMemoryAllocateFlagsInfoKHX ), "struct and wrapper have different size!" );
24243
24244 enum class DeviceGroupPresentModeFlagBitsKHX
24245 {
24246 eLocal = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX,
24247 eRemote = VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX,
24248 eSum = VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX,
24249 eLocalMultiDevice = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX
24250 };
24251
24252 using DeviceGroupPresentModeFlagsKHX = Flags<DeviceGroupPresentModeFlagBitsKHX, VkDeviceGroupPresentModeFlagsKHX>;
24253
24254 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHX operator|( DeviceGroupPresentModeFlagBitsKHX bit0, DeviceGroupPresentModeFlagBitsKHX bit1 )
24255 {
24256 return DeviceGroupPresentModeFlagsKHX( bit0 ) | bit1;
24257 }
24258
24259 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHX operator~( DeviceGroupPresentModeFlagBitsKHX bits )
24260 {
24261 return ~( DeviceGroupPresentModeFlagsKHX( bits ) );
24262 }
24263
24264 template <> struct FlagTraits<DeviceGroupPresentModeFlagBitsKHX>
24265 {
24266 enum
24267 {
24268 allFlags = VkFlags(DeviceGroupPresentModeFlagBitsKHX::eLocal) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eRemote) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eSum) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice)
24269 };
24270 };
24271
24272 struct DeviceGroupPresentCapabilitiesKHX
24273 {
24274 operator const VkDeviceGroupPresentCapabilitiesKHX&() const
24275 {
24276 return *reinterpret_cast<const VkDeviceGroupPresentCapabilitiesKHX*>(this);
24277 }
24278
24279 bool operator==( DeviceGroupPresentCapabilitiesKHX const& rhs ) const
24280 {
24281 return ( sType == rhs.sType )
24282 && ( pNext == rhs.pNext )
24283 && ( memcmp( presentMask, rhs.presentMask, VK_MAX_DEVICE_GROUP_SIZE_KHX * sizeof( uint32_t ) ) == 0 )
24284 && ( modes == rhs.modes );
24285 }
24286
24287 bool operator!=( DeviceGroupPresentCapabilitiesKHX const& rhs ) const
24288 {
24289 return !operator==( rhs );
24290 }
24291
24292 private:
24293 StructureType sType;
24294
24295 public:
24296 const void* pNext;
24297 uint32_t presentMask[VK_MAX_DEVICE_GROUP_SIZE_KHX];
24298 DeviceGroupPresentModeFlagsKHX modes;
24299 };
24300 static_assert( sizeof( DeviceGroupPresentCapabilitiesKHX ) == sizeof( VkDeviceGroupPresentCapabilitiesKHX ), "struct and wrapper have different size!" );
24301
24302 struct DeviceGroupPresentInfoKHX
24303 {
24304 DeviceGroupPresentInfoKHX( uint32_t swapchainCount_ = 0, const uint32_t* pDeviceMasks_ = nullptr, DeviceGroupPresentModeFlagBitsKHX mode_ = DeviceGroupPresentModeFlagBitsKHX::eLocal )
24305 : sType( StructureType::eDeviceGroupPresentInfoKHX )
24306 , pNext( nullptr )
24307 , swapchainCount( swapchainCount_ )
24308 , pDeviceMasks( pDeviceMasks_ )
24309 , mode( mode_ )
24310 {
24311 }
24312
24313 DeviceGroupPresentInfoKHX( VkDeviceGroupPresentInfoKHX const & rhs )
24314 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024315 memcpy( this, &rhs, sizeof( DeviceGroupPresentInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070024316 }
24317
24318 DeviceGroupPresentInfoKHX& operator=( VkDeviceGroupPresentInfoKHX const & rhs )
24319 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024320 memcpy( this, &rhs, sizeof( DeviceGroupPresentInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070024321 return *this;
24322 }
Mark Young0f183a82017-02-28 09:58:04 -070024323 DeviceGroupPresentInfoKHX& setPNext( const void* pNext_ )
24324 {
24325 pNext = pNext_;
24326 return *this;
24327 }
24328
24329 DeviceGroupPresentInfoKHX& setSwapchainCount( uint32_t swapchainCount_ )
24330 {
24331 swapchainCount = swapchainCount_;
24332 return *this;
24333 }
24334
24335 DeviceGroupPresentInfoKHX& setPDeviceMasks( const uint32_t* pDeviceMasks_ )
24336 {
24337 pDeviceMasks = pDeviceMasks_;
24338 return *this;
24339 }
24340
24341 DeviceGroupPresentInfoKHX& setMode( DeviceGroupPresentModeFlagBitsKHX mode_ )
24342 {
24343 mode = mode_;
24344 return *this;
24345 }
24346
24347 operator const VkDeviceGroupPresentInfoKHX&() const
24348 {
24349 return *reinterpret_cast<const VkDeviceGroupPresentInfoKHX*>(this);
24350 }
24351
24352 bool operator==( DeviceGroupPresentInfoKHX const& rhs ) const
24353 {
24354 return ( sType == rhs.sType )
24355 && ( pNext == rhs.pNext )
24356 && ( swapchainCount == rhs.swapchainCount )
24357 && ( pDeviceMasks == rhs.pDeviceMasks )
24358 && ( mode == rhs.mode );
24359 }
24360
24361 bool operator!=( DeviceGroupPresentInfoKHX const& rhs ) const
24362 {
24363 return !operator==( rhs );
24364 }
24365
24366 private:
24367 StructureType sType;
24368
24369 public:
24370 const void* pNext;
24371 uint32_t swapchainCount;
24372 const uint32_t* pDeviceMasks;
24373 DeviceGroupPresentModeFlagBitsKHX mode;
24374 };
24375 static_assert( sizeof( DeviceGroupPresentInfoKHX ) == sizeof( VkDeviceGroupPresentInfoKHX ), "struct and wrapper have different size!" );
24376
24377 struct DeviceGroupSwapchainCreateInfoKHX
24378 {
24379 DeviceGroupSwapchainCreateInfoKHX( DeviceGroupPresentModeFlagsKHX modes_ = DeviceGroupPresentModeFlagsKHX() )
24380 : sType( StructureType::eDeviceGroupSwapchainCreateInfoKHX )
24381 , pNext( nullptr )
24382 , modes( modes_ )
24383 {
24384 }
24385
24386 DeviceGroupSwapchainCreateInfoKHX( VkDeviceGroupSwapchainCreateInfoKHX const & rhs )
24387 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024388 memcpy( this, &rhs, sizeof( DeviceGroupSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070024389 }
24390
24391 DeviceGroupSwapchainCreateInfoKHX& operator=( VkDeviceGroupSwapchainCreateInfoKHX const & rhs )
24392 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024393 memcpy( this, &rhs, sizeof( DeviceGroupSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070024394 return *this;
24395 }
Mark Young0f183a82017-02-28 09:58:04 -070024396 DeviceGroupSwapchainCreateInfoKHX& setPNext( const void* pNext_ )
24397 {
24398 pNext = pNext_;
24399 return *this;
24400 }
24401
24402 DeviceGroupSwapchainCreateInfoKHX& setModes( DeviceGroupPresentModeFlagsKHX modes_ )
24403 {
24404 modes = modes_;
24405 return *this;
24406 }
24407
24408 operator const VkDeviceGroupSwapchainCreateInfoKHX&() const
24409 {
24410 return *reinterpret_cast<const VkDeviceGroupSwapchainCreateInfoKHX*>(this);
24411 }
24412
24413 bool operator==( DeviceGroupSwapchainCreateInfoKHX const& rhs ) const
24414 {
24415 return ( sType == rhs.sType )
24416 && ( pNext == rhs.pNext )
24417 && ( modes == rhs.modes );
24418 }
24419
24420 bool operator!=( DeviceGroupSwapchainCreateInfoKHX const& rhs ) const
24421 {
24422 return !operator==( rhs );
24423 }
24424
24425 private:
24426 StructureType sType;
24427
24428 public:
24429 const void* pNext;
24430 DeviceGroupPresentModeFlagsKHX modes;
24431 };
24432 static_assert( sizeof( DeviceGroupSwapchainCreateInfoKHX ) == sizeof( VkDeviceGroupSwapchainCreateInfoKHX ), "struct and wrapper have different size!" );
24433
24434 enum class SwapchainCreateFlagBitsKHR
24435 {
24436 eBindSfrKHX = VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX
24437 };
24438
24439 using SwapchainCreateFlagsKHR = Flags<SwapchainCreateFlagBitsKHR, VkSwapchainCreateFlagsKHR>;
24440
24441 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator|( SwapchainCreateFlagBitsKHR bit0, SwapchainCreateFlagBitsKHR bit1 )
24442 {
24443 return SwapchainCreateFlagsKHR( bit0 ) | bit1;
24444 }
24445
24446 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator~( SwapchainCreateFlagBitsKHR bits )
24447 {
24448 return ~( SwapchainCreateFlagsKHR( bits ) );
24449 }
24450
24451 template <> struct FlagTraits<SwapchainCreateFlagBitsKHR>
24452 {
24453 enum
24454 {
24455 allFlags = VkFlags(SwapchainCreateFlagBitsKHR::eBindSfrKHX)
24456 };
24457 };
24458
24459 struct SwapchainCreateInfoKHR
24460 {
24461 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() )
24462 : sType( StructureType::eSwapchainCreateInfoKHR )
24463 , pNext( nullptr )
24464 , flags( flags_ )
24465 , surface( surface_ )
24466 , minImageCount( minImageCount_ )
24467 , imageFormat( imageFormat_ )
24468 , imageColorSpace( imageColorSpace_ )
24469 , imageExtent( imageExtent_ )
24470 , imageArrayLayers( imageArrayLayers_ )
24471 , imageUsage( imageUsage_ )
24472 , imageSharingMode( imageSharingMode_ )
24473 , queueFamilyIndexCount( queueFamilyIndexCount_ )
24474 , pQueueFamilyIndices( pQueueFamilyIndices_ )
24475 , preTransform( preTransform_ )
24476 , compositeAlpha( compositeAlpha_ )
24477 , presentMode( presentMode_ )
24478 , clipped( clipped_ )
24479 , oldSwapchain( oldSwapchain_ )
24480 {
24481 }
24482
24483 SwapchainCreateInfoKHR( VkSwapchainCreateInfoKHR const & rhs )
24484 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024485 memcpy( this, &rhs, sizeof( SwapchainCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070024486 }
24487
24488 SwapchainCreateInfoKHR& operator=( VkSwapchainCreateInfoKHR const & rhs )
24489 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024490 memcpy( this, &rhs, sizeof( SwapchainCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070024491 return *this;
24492 }
Mark Young0f183a82017-02-28 09:58:04 -070024493 SwapchainCreateInfoKHR& setPNext( const void* pNext_ )
24494 {
24495 pNext = pNext_;
24496 return *this;
24497 }
24498
24499 SwapchainCreateInfoKHR& setFlags( SwapchainCreateFlagsKHR flags_ )
24500 {
24501 flags = flags_;
24502 return *this;
24503 }
24504
24505 SwapchainCreateInfoKHR& setSurface( SurfaceKHR surface_ )
24506 {
24507 surface = surface_;
24508 return *this;
24509 }
24510
24511 SwapchainCreateInfoKHR& setMinImageCount( uint32_t minImageCount_ )
24512 {
24513 minImageCount = minImageCount_;
24514 return *this;
24515 }
24516
24517 SwapchainCreateInfoKHR& setImageFormat( Format imageFormat_ )
24518 {
24519 imageFormat = imageFormat_;
24520 return *this;
24521 }
24522
24523 SwapchainCreateInfoKHR& setImageColorSpace( ColorSpaceKHR imageColorSpace_ )
24524 {
24525 imageColorSpace = imageColorSpace_;
24526 return *this;
24527 }
24528
24529 SwapchainCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
24530 {
24531 imageExtent = imageExtent_;
24532 return *this;
24533 }
24534
24535 SwapchainCreateInfoKHR& setImageArrayLayers( uint32_t imageArrayLayers_ )
24536 {
24537 imageArrayLayers = imageArrayLayers_;
24538 return *this;
24539 }
24540
24541 SwapchainCreateInfoKHR& setImageUsage( ImageUsageFlags imageUsage_ )
24542 {
24543 imageUsage = imageUsage_;
24544 return *this;
24545 }
24546
24547 SwapchainCreateInfoKHR& setImageSharingMode( SharingMode imageSharingMode_ )
24548 {
24549 imageSharingMode = imageSharingMode_;
24550 return *this;
24551 }
24552
24553 SwapchainCreateInfoKHR& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
24554 {
24555 queueFamilyIndexCount = queueFamilyIndexCount_;
24556 return *this;
24557 }
24558
24559 SwapchainCreateInfoKHR& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
24560 {
24561 pQueueFamilyIndices = pQueueFamilyIndices_;
24562 return *this;
24563 }
24564
24565 SwapchainCreateInfoKHR& setPreTransform( SurfaceTransformFlagBitsKHR preTransform_ )
24566 {
24567 preTransform = preTransform_;
24568 return *this;
24569 }
24570
24571 SwapchainCreateInfoKHR& setCompositeAlpha( CompositeAlphaFlagBitsKHR compositeAlpha_ )
24572 {
24573 compositeAlpha = compositeAlpha_;
24574 return *this;
24575 }
24576
24577 SwapchainCreateInfoKHR& setPresentMode( PresentModeKHR presentMode_ )
24578 {
24579 presentMode = presentMode_;
24580 return *this;
24581 }
24582
24583 SwapchainCreateInfoKHR& setClipped( Bool32 clipped_ )
24584 {
24585 clipped = clipped_;
24586 return *this;
24587 }
24588
24589 SwapchainCreateInfoKHR& setOldSwapchain( SwapchainKHR oldSwapchain_ )
24590 {
24591 oldSwapchain = oldSwapchain_;
24592 return *this;
24593 }
24594
24595 operator const VkSwapchainCreateInfoKHR&() const
24596 {
24597 return *reinterpret_cast<const VkSwapchainCreateInfoKHR*>(this);
24598 }
24599
24600 bool operator==( SwapchainCreateInfoKHR const& rhs ) const
24601 {
24602 return ( sType == rhs.sType )
24603 && ( pNext == rhs.pNext )
24604 && ( flags == rhs.flags )
24605 && ( surface == rhs.surface )
24606 && ( minImageCount == rhs.minImageCount )
24607 && ( imageFormat == rhs.imageFormat )
24608 && ( imageColorSpace == rhs.imageColorSpace )
24609 && ( imageExtent == rhs.imageExtent )
24610 && ( imageArrayLayers == rhs.imageArrayLayers )
24611 && ( imageUsage == rhs.imageUsage )
24612 && ( imageSharingMode == rhs.imageSharingMode )
24613 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
24614 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
24615 && ( preTransform == rhs.preTransform )
24616 && ( compositeAlpha == rhs.compositeAlpha )
24617 && ( presentMode == rhs.presentMode )
24618 && ( clipped == rhs.clipped )
24619 && ( oldSwapchain == rhs.oldSwapchain );
24620 }
24621
24622 bool operator!=( SwapchainCreateInfoKHR const& rhs ) const
24623 {
24624 return !operator==( rhs );
24625 }
24626
24627 private:
24628 StructureType sType;
24629
24630 public:
24631 const void* pNext;
24632 SwapchainCreateFlagsKHR flags;
24633 SurfaceKHR surface;
24634 uint32_t minImageCount;
24635 Format imageFormat;
24636 ColorSpaceKHR imageColorSpace;
24637 Extent2D imageExtent;
24638 uint32_t imageArrayLayers;
24639 ImageUsageFlags imageUsage;
24640 SharingMode imageSharingMode;
24641 uint32_t queueFamilyIndexCount;
24642 const uint32_t* pQueueFamilyIndices;
24643 SurfaceTransformFlagBitsKHR preTransform;
24644 CompositeAlphaFlagBitsKHR compositeAlpha;
24645 PresentModeKHR presentMode;
24646 Bool32 clipped;
24647 SwapchainKHR oldSwapchain;
24648 };
24649 static_assert( sizeof( SwapchainCreateInfoKHR ) == sizeof( VkSwapchainCreateInfoKHR ), "struct and wrapper have different size!" );
24650
24651 enum class ViewportCoordinateSwizzleNV
24652 {
24653 ePositiveX = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV,
24654 eNegativeX = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV,
24655 ePositiveY = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV,
24656 eNegativeY = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV,
24657 ePositiveZ = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV,
24658 eNegativeZ = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV,
24659 ePositiveW = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV,
24660 eNegativeW = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV
24661 };
24662
24663 struct ViewportSwizzleNV
24664 {
24665 ViewportSwizzleNV( ViewportCoordinateSwizzleNV x_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV y_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV z_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV w_ = ViewportCoordinateSwizzleNV::ePositiveX )
24666 : x( x_ )
24667 , y( y_ )
24668 , z( z_ )
24669 , w( w_ )
24670 {
24671 }
24672
24673 ViewportSwizzleNV( VkViewportSwizzleNV const & rhs )
24674 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024675 memcpy( this, &rhs, sizeof( ViewportSwizzleNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070024676 }
24677
24678 ViewportSwizzleNV& operator=( VkViewportSwizzleNV const & rhs )
24679 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024680 memcpy( this, &rhs, sizeof( ViewportSwizzleNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070024681 return *this;
24682 }
Mark Young0f183a82017-02-28 09:58:04 -070024683 ViewportSwizzleNV& setX( ViewportCoordinateSwizzleNV x_ )
24684 {
24685 x = x_;
24686 return *this;
24687 }
24688
24689 ViewportSwizzleNV& setY( ViewportCoordinateSwizzleNV y_ )
24690 {
24691 y = y_;
24692 return *this;
24693 }
24694
24695 ViewportSwizzleNV& setZ( ViewportCoordinateSwizzleNV z_ )
24696 {
24697 z = z_;
24698 return *this;
24699 }
24700
24701 ViewportSwizzleNV& setW( ViewportCoordinateSwizzleNV w_ )
24702 {
24703 w = w_;
24704 return *this;
24705 }
24706
24707 operator const VkViewportSwizzleNV&() const
24708 {
24709 return *reinterpret_cast<const VkViewportSwizzleNV*>(this);
24710 }
24711
24712 bool operator==( ViewportSwizzleNV const& rhs ) const
24713 {
24714 return ( x == rhs.x )
24715 && ( y == rhs.y )
24716 && ( z == rhs.z )
24717 && ( w == rhs.w );
24718 }
24719
24720 bool operator!=( ViewportSwizzleNV const& rhs ) const
24721 {
24722 return !operator==( rhs );
24723 }
24724
24725 ViewportCoordinateSwizzleNV x;
24726 ViewportCoordinateSwizzleNV y;
24727 ViewportCoordinateSwizzleNV z;
24728 ViewportCoordinateSwizzleNV w;
24729 };
24730 static_assert( sizeof( ViewportSwizzleNV ) == sizeof( VkViewportSwizzleNV ), "struct and wrapper have different size!" );
24731
24732 struct PipelineViewportSwizzleStateCreateInfoNV
24733 {
24734 PipelineViewportSwizzleStateCreateInfoNV( PipelineViewportSwizzleStateCreateFlagsNV flags_ = PipelineViewportSwizzleStateCreateFlagsNV(), uint32_t viewportCount_ = 0, const ViewportSwizzleNV* pViewportSwizzles_ = nullptr )
24735 : sType( StructureType::ePipelineViewportSwizzleStateCreateInfoNV )
24736 , pNext( nullptr )
24737 , flags( flags_ )
24738 , viewportCount( viewportCount_ )
24739 , pViewportSwizzles( pViewportSwizzles_ )
24740 {
24741 }
24742
24743 PipelineViewportSwizzleStateCreateInfoNV( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
24744 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024745 memcpy( this, &rhs, sizeof( PipelineViewportSwizzleStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070024746 }
24747
24748 PipelineViewportSwizzleStateCreateInfoNV& operator=( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
24749 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024750 memcpy( this, &rhs, sizeof( PipelineViewportSwizzleStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070024751 return *this;
24752 }
Mark Young0f183a82017-02-28 09:58:04 -070024753 PipelineViewportSwizzleStateCreateInfoNV& setPNext( const void* pNext_ )
24754 {
24755 pNext = pNext_;
24756 return *this;
24757 }
24758
24759 PipelineViewportSwizzleStateCreateInfoNV& setFlags( PipelineViewportSwizzleStateCreateFlagsNV flags_ )
24760 {
24761 flags = flags_;
24762 return *this;
24763 }
24764
24765 PipelineViewportSwizzleStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
24766 {
24767 viewportCount = viewportCount_;
24768 return *this;
24769 }
24770
24771 PipelineViewportSwizzleStateCreateInfoNV& setPViewportSwizzles( const ViewportSwizzleNV* pViewportSwizzles_ )
24772 {
24773 pViewportSwizzles = pViewportSwizzles_;
24774 return *this;
24775 }
24776
24777 operator const VkPipelineViewportSwizzleStateCreateInfoNV&() const
24778 {
24779 return *reinterpret_cast<const VkPipelineViewportSwizzleStateCreateInfoNV*>(this);
24780 }
24781
24782 bool operator==( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
24783 {
24784 return ( sType == rhs.sType )
24785 && ( pNext == rhs.pNext )
24786 && ( flags == rhs.flags )
24787 && ( viewportCount == rhs.viewportCount )
24788 && ( pViewportSwizzles == rhs.pViewportSwizzles );
24789 }
24790
24791 bool operator!=( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
24792 {
24793 return !operator==( rhs );
24794 }
24795
24796 private:
24797 StructureType sType;
24798
24799 public:
24800 const void* pNext;
24801 PipelineViewportSwizzleStateCreateFlagsNV flags;
24802 uint32_t viewportCount;
24803 const ViewportSwizzleNV* pViewportSwizzles;
24804 };
24805 static_assert( sizeof( PipelineViewportSwizzleStateCreateInfoNV ) == sizeof( VkPipelineViewportSwizzleStateCreateInfoNV ), "struct and wrapper have different size!" );
24806
24807 enum class DiscardRectangleModeEXT
24808 {
24809 eInclusive = VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT,
24810 eExclusive = VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT
24811 };
24812
24813 struct PipelineDiscardRectangleStateCreateInfoEXT
24814 {
24815 PipelineDiscardRectangleStateCreateInfoEXT( PipelineDiscardRectangleStateCreateFlagsEXT flags_ = PipelineDiscardRectangleStateCreateFlagsEXT(), DiscardRectangleModeEXT discardRectangleMode_ = DiscardRectangleModeEXT::eInclusive, uint32_t discardRectangleCount_ = 0, const Rect2D* pDiscardRectangles_ = nullptr )
24816 : sType( StructureType::ePipelineDiscardRectangleStateCreateInfoEXT )
24817 , pNext( nullptr )
24818 , flags( flags_ )
24819 , discardRectangleMode( discardRectangleMode_ )
24820 , discardRectangleCount( discardRectangleCount_ )
24821 , pDiscardRectangles( pDiscardRectangles_ )
24822 {
24823 }
24824
24825 PipelineDiscardRectangleStateCreateInfoEXT( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
24826 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024827 memcpy( this, &rhs, sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070024828 }
24829
24830 PipelineDiscardRectangleStateCreateInfoEXT& operator=( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
24831 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024832 memcpy( this, &rhs, sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070024833 return *this;
24834 }
Mark Young0f183a82017-02-28 09:58:04 -070024835 PipelineDiscardRectangleStateCreateInfoEXT& setPNext( const void* pNext_ )
24836 {
24837 pNext = pNext_;
24838 return *this;
24839 }
24840
24841 PipelineDiscardRectangleStateCreateInfoEXT& setFlags( PipelineDiscardRectangleStateCreateFlagsEXT flags_ )
24842 {
24843 flags = flags_;
24844 return *this;
24845 }
24846
24847 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleMode( DiscardRectangleModeEXT discardRectangleMode_ )
24848 {
24849 discardRectangleMode = discardRectangleMode_;
24850 return *this;
24851 }
24852
24853 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleCount( uint32_t discardRectangleCount_ )
24854 {
24855 discardRectangleCount = discardRectangleCount_;
24856 return *this;
24857 }
24858
24859 PipelineDiscardRectangleStateCreateInfoEXT& setPDiscardRectangles( const Rect2D* pDiscardRectangles_ )
24860 {
24861 pDiscardRectangles = pDiscardRectangles_;
24862 return *this;
24863 }
24864
24865 operator const VkPipelineDiscardRectangleStateCreateInfoEXT&() const
24866 {
24867 return *reinterpret_cast<const VkPipelineDiscardRectangleStateCreateInfoEXT*>(this);
24868 }
24869
24870 bool operator==( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
24871 {
24872 return ( sType == rhs.sType )
24873 && ( pNext == rhs.pNext )
24874 && ( flags == rhs.flags )
24875 && ( discardRectangleMode == rhs.discardRectangleMode )
24876 && ( discardRectangleCount == rhs.discardRectangleCount )
24877 && ( pDiscardRectangles == rhs.pDiscardRectangles );
24878 }
24879
24880 bool operator!=( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
24881 {
24882 return !operator==( rhs );
24883 }
24884
24885 private:
24886 StructureType sType;
24887
24888 public:
24889 const void* pNext;
24890 PipelineDiscardRectangleStateCreateFlagsEXT flags;
24891 DiscardRectangleModeEXT discardRectangleMode;
24892 uint32_t discardRectangleCount;
24893 const Rect2D* pDiscardRectangles;
24894 };
24895 static_assert( sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) == sizeof( VkPipelineDiscardRectangleStateCreateInfoEXT ), "struct and wrapper have different size!" );
24896
24897 enum class SubpassDescriptionFlagBits
24898 {
24899 ePerViewAttributesNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX,
24900 ePerViewPositionXOnlyNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX
24901 };
24902
24903 using SubpassDescriptionFlags = Flags<SubpassDescriptionFlagBits, VkSubpassDescriptionFlags>;
24904
24905 VULKAN_HPP_INLINE SubpassDescriptionFlags operator|( SubpassDescriptionFlagBits bit0, SubpassDescriptionFlagBits bit1 )
24906 {
24907 return SubpassDescriptionFlags( bit0 ) | bit1;
24908 }
24909
24910 VULKAN_HPP_INLINE SubpassDescriptionFlags operator~( SubpassDescriptionFlagBits bits )
24911 {
24912 return ~( SubpassDescriptionFlags( bits ) );
24913 }
24914
24915 template <> struct FlagTraits<SubpassDescriptionFlagBits>
24916 {
24917 enum
24918 {
24919 allFlags = VkFlags(SubpassDescriptionFlagBits::ePerViewAttributesNVX) | VkFlags(SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX)
24920 };
24921 };
24922
24923 struct SubpassDescription
24924 {
24925 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 )
24926 : flags( flags_ )
24927 , pipelineBindPoint( pipelineBindPoint_ )
24928 , inputAttachmentCount( inputAttachmentCount_ )
24929 , pInputAttachments( pInputAttachments_ )
24930 , colorAttachmentCount( colorAttachmentCount_ )
24931 , pColorAttachments( pColorAttachments_ )
24932 , pResolveAttachments( pResolveAttachments_ )
24933 , pDepthStencilAttachment( pDepthStencilAttachment_ )
24934 , preserveAttachmentCount( preserveAttachmentCount_ )
24935 , pPreserveAttachments( pPreserveAttachments_ )
24936 {
24937 }
24938
24939 SubpassDescription( VkSubpassDescription const & rhs )
24940 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024941 memcpy( this, &rhs, sizeof( SubpassDescription ) );
Mark Young0f183a82017-02-28 09:58:04 -070024942 }
24943
24944 SubpassDescription& operator=( VkSubpassDescription const & rhs )
24945 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024946 memcpy( this, &rhs, sizeof( SubpassDescription ) );
Mark Young0f183a82017-02-28 09:58:04 -070024947 return *this;
24948 }
Mark Young0f183a82017-02-28 09:58:04 -070024949 SubpassDescription& setFlags( SubpassDescriptionFlags flags_ )
24950 {
24951 flags = flags_;
24952 return *this;
24953 }
24954
24955 SubpassDescription& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
24956 {
24957 pipelineBindPoint = pipelineBindPoint_;
24958 return *this;
24959 }
24960
24961 SubpassDescription& setInputAttachmentCount( uint32_t inputAttachmentCount_ )
24962 {
24963 inputAttachmentCount = inputAttachmentCount_;
24964 return *this;
24965 }
24966
24967 SubpassDescription& setPInputAttachments( const AttachmentReference* pInputAttachments_ )
24968 {
24969 pInputAttachments = pInputAttachments_;
24970 return *this;
24971 }
24972
24973 SubpassDescription& setColorAttachmentCount( uint32_t colorAttachmentCount_ )
24974 {
24975 colorAttachmentCount = colorAttachmentCount_;
24976 return *this;
24977 }
24978
24979 SubpassDescription& setPColorAttachments( const AttachmentReference* pColorAttachments_ )
24980 {
24981 pColorAttachments = pColorAttachments_;
24982 return *this;
24983 }
24984
24985 SubpassDescription& setPResolveAttachments( const AttachmentReference* pResolveAttachments_ )
24986 {
24987 pResolveAttachments = pResolveAttachments_;
24988 return *this;
24989 }
24990
24991 SubpassDescription& setPDepthStencilAttachment( const AttachmentReference* pDepthStencilAttachment_ )
24992 {
24993 pDepthStencilAttachment = pDepthStencilAttachment_;
24994 return *this;
24995 }
24996
24997 SubpassDescription& setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ )
24998 {
24999 preserveAttachmentCount = preserveAttachmentCount_;
25000 return *this;
25001 }
25002
25003 SubpassDescription& setPPreserveAttachments( const uint32_t* pPreserveAttachments_ )
25004 {
25005 pPreserveAttachments = pPreserveAttachments_;
25006 return *this;
25007 }
25008
25009 operator const VkSubpassDescription&() const
25010 {
25011 return *reinterpret_cast<const VkSubpassDescription*>(this);
25012 }
25013
25014 bool operator==( SubpassDescription const& rhs ) const
25015 {
25016 return ( flags == rhs.flags )
25017 && ( pipelineBindPoint == rhs.pipelineBindPoint )
25018 && ( inputAttachmentCount == rhs.inputAttachmentCount )
25019 && ( pInputAttachments == rhs.pInputAttachments )
25020 && ( colorAttachmentCount == rhs.colorAttachmentCount )
25021 && ( pColorAttachments == rhs.pColorAttachments )
25022 && ( pResolveAttachments == rhs.pResolveAttachments )
25023 && ( pDepthStencilAttachment == rhs.pDepthStencilAttachment )
25024 && ( preserveAttachmentCount == rhs.preserveAttachmentCount )
25025 && ( pPreserveAttachments == rhs.pPreserveAttachments );
25026 }
25027
25028 bool operator!=( SubpassDescription const& rhs ) const
25029 {
25030 return !operator==( rhs );
25031 }
25032
25033 SubpassDescriptionFlags flags;
25034 PipelineBindPoint pipelineBindPoint;
25035 uint32_t inputAttachmentCount;
25036 const AttachmentReference* pInputAttachments;
25037 uint32_t colorAttachmentCount;
25038 const AttachmentReference* pColorAttachments;
25039 const AttachmentReference* pResolveAttachments;
25040 const AttachmentReference* pDepthStencilAttachment;
25041 uint32_t preserveAttachmentCount;
25042 const uint32_t* pPreserveAttachments;
25043 };
25044 static_assert( sizeof( SubpassDescription ) == sizeof( VkSubpassDescription ), "struct and wrapper have different size!" );
25045
25046 struct RenderPassCreateInfo
25047 {
25048 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 )
25049 : sType( StructureType::eRenderPassCreateInfo )
25050 , pNext( nullptr )
25051 , flags( flags_ )
25052 , attachmentCount( attachmentCount_ )
25053 , pAttachments( pAttachments_ )
25054 , subpassCount( subpassCount_ )
25055 , pSubpasses( pSubpasses_ )
25056 , dependencyCount( dependencyCount_ )
25057 , pDependencies( pDependencies_ )
25058 {
25059 }
25060
25061 RenderPassCreateInfo( VkRenderPassCreateInfo const & rhs )
25062 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025063 memcpy( this, &rhs, sizeof( RenderPassCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070025064 }
25065
25066 RenderPassCreateInfo& operator=( VkRenderPassCreateInfo const & rhs )
25067 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025068 memcpy( this, &rhs, sizeof( RenderPassCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070025069 return *this;
25070 }
Mark Young0f183a82017-02-28 09:58:04 -070025071 RenderPassCreateInfo& setPNext( const void* pNext_ )
25072 {
25073 pNext = pNext_;
25074 return *this;
25075 }
25076
25077 RenderPassCreateInfo& setFlags( RenderPassCreateFlags flags_ )
25078 {
25079 flags = flags_;
25080 return *this;
25081 }
25082
25083 RenderPassCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
25084 {
25085 attachmentCount = attachmentCount_;
25086 return *this;
25087 }
25088
25089 RenderPassCreateInfo& setPAttachments( const AttachmentDescription* pAttachments_ )
25090 {
25091 pAttachments = pAttachments_;
25092 return *this;
25093 }
25094
25095 RenderPassCreateInfo& setSubpassCount( uint32_t subpassCount_ )
25096 {
25097 subpassCount = subpassCount_;
25098 return *this;
25099 }
25100
25101 RenderPassCreateInfo& setPSubpasses( const SubpassDescription* pSubpasses_ )
25102 {
25103 pSubpasses = pSubpasses_;
25104 return *this;
25105 }
25106
25107 RenderPassCreateInfo& setDependencyCount( uint32_t dependencyCount_ )
25108 {
25109 dependencyCount = dependencyCount_;
25110 return *this;
25111 }
25112
25113 RenderPassCreateInfo& setPDependencies( const SubpassDependency* pDependencies_ )
25114 {
25115 pDependencies = pDependencies_;
25116 return *this;
25117 }
25118
25119 operator const VkRenderPassCreateInfo&() const
25120 {
25121 return *reinterpret_cast<const VkRenderPassCreateInfo*>(this);
25122 }
25123
25124 bool operator==( RenderPassCreateInfo const& rhs ) const
25125 {
25126 return ( sType == rhs.sType )
25127 && ( pNext == rhs.pNext )
25128 && ( flags == rhs.flags )
25129 && ( attachmentCount == rhs.attachmentCount )
25130 && ( pAttachments == rhs.pAttachments )
25131 && ( subpassCount == rhs.subpassCount )
25132 && ( pSubpasses == rhs.pSubpasses )
25133 && ( dependencyCount == rhs.dependencyCount )
25134 && ( pDependencies == rhs.pDependencies );
25135 }
25136
25137 bool operator!=( RenderPassCreateInfo const& rhs ) const
25138 {
25139 return !operator==( rhs );
25140 }
25141
25142 private:
25143 StructureType sType;
25144
25145 public:
25146 const void* pNext;
25147 RenderPassCreateFlags flags;
25148 uint32_t attachmentCount;
25149 const AttachmentDescription* pAttachments;
25150 uint32_t subpassCount;
25151 const SubpassDescription* pSubpasses;
25152 uint32_t dependencyCount;
25153 const SubpassDependency* pDependencies;
25154 };
25155 static_assert( sizeof( RenderPassCreateInfo ) == sizeof( VkRenderPassCreateInfo ), "struct and wrapper have different size!" );
25156
Lenny Komowb79f04a2017-09-18 17:07:00 -060025157 enum class PointClippingBehaviorKHR
25158 {
25159 eAllClipPlanes = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR,
25160 eUserClipPlanesOnly = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR
25161 };
25162
25163 struct PhysicalDevicePointClippingPropertiesKHR
25164 {
25165 operator const VkPhysicalDevicePointClippingPropertiesKHR&() const
25166 {
25167 return *reinterpret_cast<const VkPhysicalDevicePointClippingPropertiesKHR*>(this);
25168 }
25169
25170 bool operator==( PhysicalDevicePointClippingPropertiesKHR const& rhs ) const
25171 {
25172 return ( sType == rhs.sType )
25173 && ( pNext == rhs.pNext )
25174 && ( pointClippingBehavior == rhs.pointClippingBehavior );
25175 }
25176
25177 bool operator!=( PhysicalDevicePointClippingPropertiesKHR const& rhs ) const
25178 {
25179 return !operator==( rhs );
25180 }
25181
25182 private:
25183 StructureType sType;
25184
25185 public:
25186 void* pNext;
25187 PointClippingBehaviorKHR pointClippingBehavior;
25188 };
25189 static_assert( sizeof( PhysicalDevicePointClippingPropertiesKHR ) == sizeof( VkPhysicalDevicePointClippingPropertiesKHR ), "struct and wrapper have different size!" );
25190
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060025191 enum class SamplerReductionModeEXT
25192 {
25193 eWeightedAverage = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT,
25194 eMin = VK_SAMPLER_REDUCTION_MODE_MIN_EXT,
25195 eMax = VK_SAMPLER_REDUCTION_MODE_MAX_EXT
25196 };
25197
25198 struct SamplerReductionModeCreateInfoEXT
25199 {
25200 SamplerReductionModeCreateInfoEXT( SamplerReductionModeEXT reductionMode_ = SamplerReductionModeEXT::eWeightedAverage )
25201 : sType( StructureType::eSamplerReductionModeCreateInfoEXT )
25202 , pNext( nullptr )
25203 , reductionMode( reductionMode_ )
25204 {
25205 }
25206
25207 SamplerReductionModeCreateInfoEXT( VkSamplerReductionModeCreateInfoEXT const & rhs )
25208 {
25209 memcpy( this, &rhs, sizeof( SamplerReductionModeCreateInfoEXT ) );
25210 }
25211
25212 SamplerReductionModeCreateInfoEXT& operator=( VkSamplerReductionModeCreateInfoEXT const & rhs )
25213 {
25214 memcpy( this, &rhs, sizeof( SamplerReductionModeCreateInfoEXT ) );
25215 return *this;
25216 }
25217 SamplerReductionModeCreateInfoEXT& setPNext( const void* pNext_ )
25218 {
25219 pNext = pNext_;
25220 return *this;
25221 }
25222
25223 SamplerReductionModeCreateInfoEXT& setReductionMode( SamplerReductionModeEXT reductionMode_ )
25224 {
25225 reductionMode = reductionMode_;
25226 return *this;
25227 }
25228
25229 operator const VkSamplerReductionModeCreateInfoEXT&() const
25230 {
25231 return *reinterpret_cast<const VkSamplerReductionModeCreateInfoEXT*>(this);
25232 }
25233
25234 bool operator==( SamplerReductionModeCreateInfoEXT const& rhs ) const
25235 {
25236 return ( sType == rhs.sType )
25237 && ( pNext == rhs.pNext )
25238 && ( reductionMode == rhs.reductionMode );
25239 }
25240
25241 bool operator!=( SamplerReductionModeCreateInfoEXT const& rhs ) const
25242 {
25243 return !operator==( rhs );
25244 }
25245
25246 private:
25247 StructureType sType;
25248
25249 public:
25250 const void* pNext;
25251 SamplerReductionModeEXT reductionMode;
25252 };
25253 static_assert( sizeof( SamplerReductionModeCreateInfoEXT ) == sizeof( VkSamplerReductionModeCreateInfoEXT ), "struct and wrapper have different size!" );
25254
Lenny Komowb79f04a2017-09-18 17:07:00 -060025255 enum class TessellationDomainOriginKHR
25256 {
25257 eUpperLeft = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR,
25258 eLowerLeft = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR
25259 };
25260
25261 struct PipelineTessellationDomainOriginStateCreateInfoKHR
25262 {
25263 PipelineTessellationDomainOriginStateCreateInfoKHR( TessellationDomainOriginKHR domainOrigin_ = TessellationDomainOriginKHR::eUpperLeft )
25264 : sType( StructureType::ePipelineTessellationDomainOriginStateCreateInfoKHR )
25265 , pNext( nullptr )
25266 , domainOrigin( domainOrigin_ )
25267 {
25268 }
25269
25270 PipelineTessellationDomainOriginStateCreateInfoKHR( VkPipelineTessellationDomainOriginStateCreateInfoKHR const & rhs )
25271 {
25272 memcpy( this, &rhs, sizeof( PipelineTessellationDomainOriginStateCreateInfoKHR ) );
25273 }
25274
25275 PipelineTessellationDomainOriginStateCreateInfoKHR& operator=( VkPipelineTessellationDomainOriginStateCreateInfoKHR const & rhs )
25276 {
25277 memcpy( this, &rhs, sizeof( PipelineTessellationDomainOriginStateCreateInfoKHR ) );
25278 return *this;
25279 }
25280 PipelineTessellationDomainOriginStateCreateInfoKHR& setPNext( const void* pNext_ )
25281 {
25282 pNext = pNext_;
25283 return *this;
25284 }
25285
25286 PipelineTessellationDomainOriginStateCreateInfoKHR& setDomainOrigin( TessellationDomainOriginKHR domainOrigin_ )
25287 {
25288 domainOrigin = domainOrigin_;
25289 return *this;
25290 }
25291
25292 operator const VkPipelineTessellationDomainOriginStateCreateInfoKHR&() const
25293 {
25294 return *reinterpret_cast<const VkPipelineTessellationDomainOriginStateCreateInfoKHR*>(this);
25295 }
25296
25297 bool operator==( PipelineTessellationDomainOriginStateCreateInfoKHR const& rhs ) const
25298 {
25299 return ( sType == rhs.sType )
25300 && ( pNext == rhs.pNext )
25301 && ( domainOrigin == rhs.domainOrigin );
25302 }
25303
25304 bool operator!=( PipelineTessellationDomainOriginStateCreateInfoKHR const& rhs ) const
25305 {
25306 return !operator==( rhs );
25307 }
25308
25309 private:
25310 StructureType sType;
25311
25312 public:
25313 const void* pNext;
25314 TessellationDomainOriginKHR domainOrigin;
25315 };
25316 static_assert( sizeof( PipelineTessellationDomainOriginStateCreateInfoKHR ) == sizeof( VkPipelineTessellationDomainOriginStateCreateInfoKHR ), "struct and wrapper have different size!" );
25317
25318 enum class SamplerYcbcrModelConversionKHR
25319 {
25320 eRgbIdentity = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR,
25321 eYcbcrIdentity = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR,
25322 eYcbcr709 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR,
25323 eYcbcr601 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR,
25324 eYcbcr2020 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR
25325 };
25326
25327 enum class SamplerYcbcrRangeKHR
25328 {
25329 eItuFull = VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR,
25330 eItuNarrow = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR
25331 };
25332
25333 enum class ChromaLocationKHR
25334 {
25335 eCositedEven = VK_CHROMA_LOCATION_COSITED_EVEN_KHR,
25336 eMidpoint = VK_CHROMA_LOCATION_MIDPOINT_KHR
25337 };
25338
25339 struct SamplerYcbcrConversionCreateInfoKHR
25340 {
25341 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 )
25342 : sType( StructureType::eSamplerYcbcrConversionCreateInfoKHR )
25343 , pNext( nullptr )
25344 , format( format_ )
25345 , ycbcrModel( ycbcrModel_ )
25346 , ycbcrRange( ycbcrRange_ )
25347 , components( components_ )
25348 , xChromaOffset( xChromaOffset_ )
25349 , yChromaOffset( yChromaOffset_ )
25350 , chromaFilter( chromaFilter_ )
25351 , forceExplicitReconstruction( forceExplicitReconstruction_ )
25352 {
25353 }
25354
25355 SamplerYcbcrConversionCreateInfoKHR( VkSamplerYcbcrConversionCreateInfoKHR const & rhs )
25356 {
25357 memcpy( this, &rhs, sizeof( SamplerYcbcrConversionCreateInfoKHR ) );
25358 }
25359
25360 SamplerYcbcrConversionCreateInfoKHR& operator=( VkSamplerYcbcrConversionCreateInfoKHR const & rhs )
25361 {
25362 memcpy( this, &rhs, sizeof( SamplerYcbcrConversionCreateInfoKHR ) );
25363 return *this;
25364 }
25365 SamplerYcbcrConversionCreateInfoKHR& setPNext( const void* pNext_ )
25366 {
25367 pNext = pNext_;
25368 return *this;
25369 }
25370
25371 SamplerYcbcrConversionCreateInfoKHR& setFormat( Format format_ )
25372 {
25373 format = format_;
25374 return *this;
25375 }
25376
25377 SamplerYcbcrConversionCreateInfoKHR& setYcbcrModel( SamplerYcbcrModelConversionKHR ycbcrModel_ )
25378 {
25379 ycbcrModel = ycbcrModel_;
25380 return *this;
25381 }
25382
25383 SamplerYcbcrConversionCreateInfoKHR& setYcbcrRange( SamplerYcbcrRangeKHR ycbcrRange_ )
25384 {
25385 ycbcrRange = ycbcrRange_;
25386 return *this;
25387 }
25388
25389 SamplerYcbcrConversionCreateInfoKHR& setComponents( ComponentMapping components_ )
25390 {
25391 components = components_;
25392 return *this;
25393 }
25394
25395 SamplerYcbcrConversionCreateInfoKHR& setXChromaOffset( ChromaLocationKHR xChromaOffset_ )
25396 {
25397 xChromaOffset = xChromaOffset_;
25398 return *this;
25399 }
25400
25401 SamplerYcbcrConversionCreateInfoKHR& setYChromaOffset( ChromaLocationKHR yChromaOffset_ )
25402 {
25403 yChromaOffset = yChromaOffset_;
25404 return *this;
25405 }
25406
25407 SamplerYcbcrConversionCreateInfoKHR& setChromaFilter( Filter chromaFilter_ )
25408 {
25409 chromaFilter = chromaFilter_;
25410 return *this;
25411 }
25412
25413 SamplerYcbcrConversionCreateInfoKHR& setForceExplicitReconstruction( Bool32 forceExplicitReconstruction_ )
25414 {
25415 forceExplicitReconstruction = forceExplicitReconstruction_;
25416 return *this;
25417 }
25418
25419 operator const VkSamplerYcbcrConversionCreateInfoKHR&() const
25420 {
25421 return *reinterpret_cast<const VkSamplerYcbcrConversionCreateInfoKHR*>(this);
25422 }
25423
25424 bool operator==( SamplerYcbcrConversionCreateInfoKHR const& rhs ) const
25425 {
25426 return ( sType == rhs.sType )
25427 && ( pNext == rhs.pNext )
25428 && ( format == rhs.format )
25429 && ( ycbcrModel == rhs.ycbcrModel )
25430 && ( ycbcrRange == rhs.ycbcrRange )
25431 && ( components == rhs.components )
25432 && ( xChromaOffset == rhs.xChromaOffset )
25433 && ( yChromaOffset == rhs.yChromaOffset )
25434 && ( chromaFilter == rhs.chromaFilter )
25435 && ( forceExplicitReconstruction == rhs.forceExplicitReconstruction );
25436 }
25437
25438 bool operator!=( SamplerYcbcrConversionCreateInfoKHR const& rhs ) const
25439 {
25440 return !operator==( rhs );
25441 }
25442
25443 private:
25444 StructureType sType;
25445
25446 public:
25447 const void* pNext;
25448 Format format;
25449 SamplerYcbcrModelConversionKHR ycbcrModel;
25450 SamplerYcbcrRangeKHR ycbcrRange;
25451 ComponentMapping components;
25452 ChromaLocationKHR xChromaOffset;
25453 ChromaLocationKHR yChromaOffset;
25454 Filter chromaFilter;
25455 Bool32 forceExplicitReconstruction;
25456 };
25457 static_assert( sizeof( SamplerYcbcrConversionCreateInfoKHR ) == sizeof( VkSamplerYcbcrConversionCreateInfoKHR ), "struct and wrapper have different size!" );
25458
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060025459 enum class BlendOverlapEXT
25460 {
25461 eUncorrelated = VK_BLEND_OVERLAP_UNCORRELATED_EXT,
25462 eDisjoint = VK_BLEND_OVERLAP_DISJOINT_EXT,
25463 eConjoint = VK_BLEND_OVERLAP_CONJOINT_EXT
25464 };
25465
25466 struct PipelineColorBlendAdvancedStateCreateInfoEXT
25467 {
25468 PipelineColorBlendAdvancedStateCreateInfoEXT( Bool32 srcPremultiplied_ = 0, Bool32 dstPremultiplied_ = 0, BlendOverlapEXT blendOverlap_ = BlendOverlapEXT::eUncorrelated )
25469 : sType( StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT )
25470 , pNext( nullptr )
25471 , srcPremultiplied( srcPremultiplied_ )
25472 , dstPremultiplied( dstPremultiplied_ )
25473 , blendOverlap( blendOverlap_ )
25474 {
25475 }
25476
25477 PipelineColorBlendAdvancedStateCreateInfoEXT( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs )
25478 {
25479 memcpy( this, &rhs, sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) );
25480 }
25481
25482 PipelineColorBlendAdvancedStateCreateInfoEXT& operator=( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs )
25483 {
25484 memcpy( this, &rhs, sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) );
25485 return *this;
25486 }
25487 PipelineColorBlendAdvancedStateCreateInfoEXT& setPNext( const void* pNext_ )
25488 {
25489 pNext = pNext_;
25490 return *this;
25491 }
25492
25493 PipelineColorBlendAdvancedStateCreateInfoEXT& setSrcPremultiplied( Bool32 srcPremultiplied_ )
25494 {
25495 srcPremultiplied = srcPremultiplied_;
25496 return *this;
25497 }
25498
25499 PipelineColorBlendAdvancedStateCreateInfoEXT& setDstPremultiplied( Bool32 dstPremultiplied_ )
25500 {
25501 dstPremultiplied = dstPremultiplied_;
25502 return *this;
25503 }
25504
25505 PipelineColorBlendAdvancedStateCreateInfoEXT& setBlendOverlap( BlendOverlapEXT blendOverlap_ )
25506 {
25507 blendOverlap = blendOverlap_;
25508 return *this;
25509 }
25510
25511 operator const VkPipelineColorBlendAdvancedStateCreateInfoEXT&() const
25512 {
25513 return *reinterpret_cast<const VkPipelineColorBlendAdvancedStateCreateInfoEXT*>(this);
25514 }
25515
25516 bool operator==( PipelineColorBlendAdvancedStateCreateInfoEXT const& rhs ) const
25517 {
25518 return ( sType == rhs.sType )
25519 && ( pNext == rhs.pNext )
25520 && ( srcPremultiplied == rhs.srcPremultiplied )
25521 && ( dstPremultiplied == rhs.dstPremultiplied )
25522 && ( blendOverlap == rhs.blendOverlap );
25523 }
25524
25525 bool operator!=( PipelineColorBlendAdvancedStateCreateInfoEXT const& rhs ) const
25526 {
25527 return !operator==( rhs );
25528 }
25529
25530 private:
25531 StructureType sType;
25532
25533 public:
25534 const void* pNext;
25535 Bool32 srcPremultiplied;
25536 Bool32 dstPremultiplied;
25537 BlendOverlapEXT blendOverlap;
25538 };
25539 static_assert( sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) == sizeof( VkPipelineColorBlendAdvancedStateCreateInfoEXT ), "struct and wrapper have different size!" );
25540
25541 enum class CoverageModulationModeNV
25542 {
25543 eNone = VK_COVERAGE_MODULATION_MODE_NONE_NV,
25544 eRgb = VK_COVERAGE_MODULATION_MODE_RGB_NV,
25545 eAlpha = VK_COVERAGE_MODULATION_MODE_ALPHA_NV,
25546 eRgba = VK_COVERAGE_MODULATION_MODE_RGBA_NV
25547 };
25548
25549 struct PipelineCoverageModulationStateCreateInfoNV
25550 {
25551 PipelineCoverageModulationStateCreateInfoNV( PipelineCoverageModulationStateCreateFlagsNV flags_ = PipelineCoverageModulationStateCreateFlagsNV(), CoverageModulationModeNV coverageModulationMode_ = CoverageModulationModeNV::eNone, Bool32 coverageModulationTableEnable_ = 0, uint32_t coverageModulationTableCount_ = 0, const float* pCoverageModulationTable_ = nullptr )
25552 : sType( StructureType::ePipelineCoverageModulationStateCreateInfoNV )
25553 , pNext( nullptr )
25554 , flags( flags_ )
25555 , coverageModulationMode( coverageModulationMode_ )
25556 , coverageModulationTableEnable( coverageModulationTableEnable_ )
25557 , coverageModulationTableCount( coverageModulationTableCount_ )
25558 , pCoverageModulationTable( pCoverageModulationTable_ )
25559 {
25560 }
25561
25562 PipelineCoverageModulationStateCreateInfoNV( VkPipelineCoverageModulationStateCreateInfoNV const & rhs )
25563 {
25564 memcpy( this, &rhs, sizeof( PipelineCoverageModulationStateCreateInfoNV ) );
25565 }
25566
25567 PipelineCoverageModulationStateCreateInfoNV& operator=( VkPipelineCoverageModulationStateCreateInfoNV const & rhs )
25568 {
25569 memcpy( this, &rhs, sizeof( PipelineCoverageModulationStateCreateInfoNV ) );
25570 return *this;
25571 }
25572 PipelineCoverageModulationStateCreateInfoNV& setPNext( const void* pNext_ )
25573 {
25574 pNext = pNext_;
25575 return *this;
25576 }
25577
25578 PipelineCoverageModulationStateCreateInfoNV& setFlags( PipelineCoverageModulationStateCreateFlagsNV flags_ )
25579 {
25580 flags = flags_;
25581 return *this;
25582 }
25583
25584 PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationMode( CoverageModulationModeNV coverageModulationMode_ )
25585 {
25586 coverageModulationMode = coverageModulationMode_;
25587 return *this;
25588 }
25589
25590 PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationTableEnable( Bool32 coverageModulationTableEnable_ )
25591 {
25592 coverageModulationTableEnable = coverageModulationTableEnable_;
25593 return *this;
25594 }
25595
25596 PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationTableCount( uint32_t coverageModulationTableCount_ )
25597 {
25598 coverageModulationTableCount = coverageModulationTableCount_;
25599 return *this;
25600 }
25601
25602 PipelineCoverageModulationStateCreateInfoNV& setPCoverageModulationTable( const float* pCoverageModulationTable_ )
25603 {
25604 pCoverageModulationTable = pCoverageModulationTable_;
25605 return *this;
25606 }
25607
25608 operator const VkPipelineCoverageModulationStateCreateInfoNV&() const
25609 {
25610 return *reinterpret_cast<const VkPipelineCoverageModulationStateCreateInfoNV*>(this);
25611 }
25612
25613 bool operator==( PipelineCoverageModulationStateCreateInfoNV const& rhs ) const
25614 {
25615 return ( sType == rhs.sType )
25616 && ( pNext == rhs.pNext )
25617 && ( flags == rhs.flags )
25618 && ( coverageModulationMode == rhs.coverageModulationMode )
25619 && ( coverageModulationTableEnable == rhs.coverageModulationTableEnable )
25620 && ( coverageModulationTableCount == rhs.coverageModulationTableCount )
25621 && ( pCoverageModulationTable == rhs.pCoverageModulationTable );
25622 }
25623
25624 bool operator!=( PipelineCoverageModulationStateCreateInfoNV const& rhs ) const
25625 {
25626 return !operator==( rhs );
25627 }
25628
25629 private:
25630 StructureType sType;
25631
25632 public:
25633 const void* pNext;
25634 PipelineCoverageModulationStateCreateFlagsNV flags;
25635 CoverageModulationModeNV coverageModulationMode;
25636 Bool32 coverageModulationTableEnable;
25637 uint32_t coverageModulationTableCount;
25638 const float* pCoverageModulationTable;
25639 };
25640 static_assert( sizeof( PipelineCoverageModulationStateCreateInfoNV ) == sizeof( VkPipelineCoverageModulationStateCreateInfoNV ), "struct and wrapper have different size!" );
25641
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060025642 enum class ValidationCacheHeaderVersionEXT
25643 {
25644 eOne = VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT
25645 };
25646
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060025647 enum class ShaderInfoTypeAMD
25648 {
25649 eStatistics = VK_SHADER_INFO_TYPE_STATISTICS_AMD,
25650 eBinary = VK_SHADER_INFO_TYPE_BINARY_AMD,
25651 eDisassembly = VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD
25652 };
25653
25654 enum class QueueGlobalPriorityEXT
25655 {
25656 eLow = VK_QUEUE_GLOBAL_PRIORITY_LOW,
25657 eMedium = VK_QUEUE_GLOBAL_PRIORITY_MEDIUM,
25658 eHigh = VK_QUEUE_GLOBAL_PRIORITY_HIGH,
25659 eRealtime = VK_QUEUE_GLOBAL_PRIORITY_REALTIME
25660 };
25661
25662 struct DeviceQueueGlobalPriorityCreateInfoEXT
25663 {
25664 DeviceQueueGlobalPriorityCreateInfoEXT( QueueGlobalPriorityEXT globalPriority_ = QueueGlobalPriorityEXT::eLow )
25665 : sType( StructureType::eDeviceQueueGlobalPriorityCreateInfoEXT )
25666 , pNext( nullptr )
25667 , globalPriority( globalPriority_ )
25668 {
25669 }
25670
25671 DeviceQueueGlobalPriorityCreateInfoEXT( VkDeviceQueueGlobalPriorityCreateInfoEXT const & rhs )
25672 {
25673 memcpy( this, &rhs, sizeof( DeviceQueueGlobalPriorityCreateInfoEXT ) );
25674 }
25675
25676 DeviceQueueGlobalPriorityCreateInfoEXT& operator=( VkDeviceQueueGlobalPriorityCreateInfoEXT const & rhs )
25677 {
25678 memcpy( this, &rhs, sizeof( DeviceQueueGlobalPriorityCreateInfoEXT ) );
25679 return *this;
25680 }
25681 DeviceQueueGlobalPriorityCreateInfoEXT& setPNext( const void* pNext_ )
25682 {
25683 pNext = pNext_;
25684 return *this;
25685 }
25686
25687 DeviceQueueGlobalPriorityCreateInfoEXT& setGlobalPriority( QueueGlobalPriorityEXT globalPriority_ )
25688 {
25689 globalPriority = globalPriority_;
25690 return *this;
25691 }
25692
25693 operator const VkDeviceQueueGlobalPriorityCreateInfoEXT&() const
25694 {
25695 return *reinterpret_cast<const VkDeviceQueueGlobalPriorityCreateInfoEXT*>(this);
25696 }
25697
25698 bool operator==( DeviceQueueGlobalPriorityCreateInfoEXT const& rhs ) const
25699 {
25700 return ( sType == rhs.sType )
25701 && ( pNext == rhs.pNext )
25702 && ( globalPriority == rhs.globalPriority );
25703 }
25704
25705 bool operator!=( DeviceQueueGlobalPriorityCreateInfoEXT const& rhs ) const
25706 {
25707 return !operator==( rhs );
25708 }
25709
25710 private:
25711 StructureType sType;
25712
25713 public:
25714 const void* pNext;
25715 QueueGlobalPriorityEXT globalPriority;
25716 };
25717 static_assert( sizeof( DeviceQueueGlobalPriorityCreateInfoEXT ) == sizeof( VkDeviceQueueGlobalPriorityCreateInfoEXT ), "struct and wrapper have different size!" );
25718
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025719 Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025720#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025721 template <typename Allocator = std::allocator<LayerProperties>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060025722 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties();
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025723#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25724
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025725 VULKAN_HPP_INLINE Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties )
25726 {
25727 return static_cast<Result>( vkEnumerateInstanceLayerProperties( pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
25728 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025729#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025730 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060025731 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties()
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025732 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060025733 std::vector<LayerProperties,Allocator> properties;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025734 uint32_t propertyCount;
25735 Result result;
25736 do
25737 {
25738 result = static_cast<Result>( vkEnumerateInstanceLayerProperties( &propertyCount, nullptr ) );
25739 if ( ( result == Result::eSuccess ) && propertyCount )
25740 {
25741 properties.resize( propertyCount );
25742 result = static_cast<Result>( vkEnumerateInstanceLayerProperties( &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
25743 }
25744 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025745 assert( propertyCount <= properties.size() );
25746 properties.resize( propertyCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060025747 return createResultValue( result, properties, "VULKAN_HPP_NAMESPACE::enumerateInstanceLayerProperties" );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025748 }
25749#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25750
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025751
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025752 Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025753#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025754 template <typename Allocator = std::allocator<ExtensionProperties>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060025755 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName = nullptr );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025756#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25757
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025758 VULKAN_HPP_INLINE Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties )
25759 {
25760 return static_cast<Result>( vkEnumerateInstanceExtensionProperties( pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
25761 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025762#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025763 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060025764 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025765 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060025766 std::vector<ExtensionProperties,Allocator> properties;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025767 uint32_t propertyCount;
25768 Result result;
25769 do
25770 {
25771 result = static_cast<Result>( vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
25772 if ( ( result == Result::eSuccess ) && propertyCount )
25773 {
25774 properties.resize( propertyCount );
25775 result = static_cast<Result>( vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
25776 }
25777 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025778 assert( propertyCount <= properties.size() );
25779 properties.resize( propertyCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060025780 return createResultValue( result, properties, "VULKAN_HPP_NAMESPACE::enumerateInstanceExtensionProperties" );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025781 }
25782#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25783
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025784
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025785 // forward declarations
25786 struct CmdProcessCommandsInfoNVX;
25787
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025788 class CommandBuffer
25789 {
25790 public:
25791 CommandBuffer()
25792 : m_commandBuffer(VK_NULL_HANDLE)
25793 {}
25794
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070025795 CommandBuffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025796 : m_commandBuffer(VK_NULL_HANDLE)
25797 {}
25798
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025799 VULKAN_HPP_TYPESAFE_EXPLICIT CommandBuffer( VkCommandBuffer commandBuffer )
25800 : m_commandBuffer( commandBuffer )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025801 {}
25802
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070025803#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025804 CommandBuffer & operator=(VkCommandBuffer commandBuffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025805 {
25806 m_commandBuffer = commandBuffer;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025807 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025808 }
25809#endif
25810
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025811 CommandBuffer & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025812 {
25813 m_commandBuffer = VK_NULL_HANDLE;
25814 return *this;
25815 }
25816
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025817 bool operator==( CommandBuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060025818 {
25819 return m_commandBuffer == rhs.m_commandBuffer;
25820 }
25821
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025822 bool operator!=(CommandBuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060025823 {
25824 return m_commandBuffer != rhs.m_commandBuffer;
25825 }
25826
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025827 bool operator<(CommandBuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060025828 {
25829 return m_commandBuffer < rhs.m_commandBuffer;
25830 }
25831
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025832 Result begin( const CommandBufferBeginInfo* pBeginInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025833#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025834 ResultValueType<void>::type begin( const CommandBufferBeginInfo & beginInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025835#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25836
25837#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025838 Result end() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025839#else
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025840 ResultValueType<void>::type end() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025841#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25842
25843#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025844 Result reset( CommandBufferResetFlags flags ) const;
25845#else
25846 ResultValueType<void>::type reset( CommandBufferResetFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025847#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25848
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025849 void bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025850
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025851 void setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025852#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025853 void setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025854#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25855
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025856 void setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025857#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025858 void setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025859#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25860
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025861 void setLineWidth( float lineWidth ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025862
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025863 void setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const;
25864
25865 void setBlendConstants( const float blendConstants[4] ) const;
25866
25867 void setDepthBounds( float minDepthBounds, float maxDepthBounds ) const;
25868
25869 void setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const;
25870
25871 void setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const;
25872
25873 void setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const;
25874
25875 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 -060025876#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025877 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 -060025878#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25879
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025880 void bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025881
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025882 void bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025883#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025884 void bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025885#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25886
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025887 void draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025888
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025889 void drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const;
25890
25891 void drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const;
25892
25893 void drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const;
25894
Mark Young0f183a82017-02-28 09:58:04 -070025895 void dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025896
25897 void dispatchIndirect( Buffer buffer, DeviceSize offset ) const;
25898
25899 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025900#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025901 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025902#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25903
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025904 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025905#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025906 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025907#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25908
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025909 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 -060025910#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025911 void blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025912#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25913
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025914 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025915#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025916 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025917#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25918
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025919 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025920#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025921 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025922#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25923
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025924 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025925#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25926 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025927 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025928#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25929
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025930 void fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025931
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025932 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025933#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025934 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025935#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25936
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025937 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025938#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025939 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025940#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25941
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025942 void clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025943#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025944 void clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025945#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25946
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025947 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025948#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025949 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025950#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25951
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025952 void setEvent( Event event, PipelineStageFlags stageMask ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025953
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025954 void resetEvent( Event event, PipelineStageFlags stageMask ) const;
25955
25956 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 -060025957#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025958 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 -060025959#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25960
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025961 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 -060025962#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025963 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 -060025964#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25965
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025966 void beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025967
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025968 void endQuery( QueryPool queryPool, uint32_t query ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025969
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025970 void resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025971
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025972 void writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025973
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025974 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 -060025975
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025976 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025977#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25978 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025979 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025980#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25981
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025982 void beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025983#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025984 void beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025985#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25986
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025987 void nextSubpass( SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025988
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025989 void endRenderPass() const;
25990
25991 void executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025992#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025993 void executeCommands( ArrayProxy<const CommandBuffer> commandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025994#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25995
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060025996 void debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025997#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060025998 void debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025999#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26000
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026001 void debugMarkerEndEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026002
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026003 void debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026004#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026005 void debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026006#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26007
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026008 void drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026009
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026010 void drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const;
26011
26012 void processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026013#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026014 void processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026015#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26016
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026017 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026018#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026019 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070026020#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26021
Mark Young0f183a82017-02-28 09:58:04 -070026022 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites ) const;
26023#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26024 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites ) const;
26025#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26026
26027 void setDeviceMaskKHX( uint32_t deviceMask ) const;
26028
26029 void dispatchBaseKHX( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const;
26030
26031 void pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData ) const;
26032
26033 void setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings ) const;
26034#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26035 void setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings ) const;
26036#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26037
26038 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles ) const;
26039#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26040 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles ) const;
26041#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26042
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060026043 void setSampleLocationsEXT( const SampleLocationsInfoEXT* pSampleLocationsInfo ) const;
26044#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26045 void setSampleLocationsEXT( const SampleLocationsInfoEXT & sampleLocationsInfo ) const;
26046#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26047
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026048
26049
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026050 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandBuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026051 {
26052 return m_commandBuffer;
26053 }
26054
26055 explicit operator bool() const
26056 {
26057 return m_commandBuffer != VK_NULL_HANDLE;
26058 }
26059
26060 bool operator!() const
26061 {
26062 return m_commandBuffer == VK_NULL_HANDLE;
26063 }
26064
26065 private:
26066 VkCommandBuffer m_commandBuffer;
26067 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026068
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026069 static_assert( sizeof( CommandBuffer ) == sizeof( VkCommandBuffer ), "handle and wrapper have different size!" );
26070
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026071 VULKAN_HPP_INLINE Result CommandBuffer::begin( const CommandBufferBeginInfo* pBeginInfo ) const
26072 {
26073 return static_cast<Result>( vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( pBeginInfo ) ) );
26074 }
26075#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26076 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::begin( const CommandBufferBeginInfo & beginInfo ) const
26077 {
26078 Result result = static_cast<Result>( vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( &beginInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060026079 return createResultValue( result, "VULKAN_HPP_NAMESPACE::CommandBuffer::begin" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026080 }
26081#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26082
26083#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26084 VULKAN_HPP_INLINE Result CommandBuffer::end() const
26085 {
26086 return static_cast<Result>( vkEndCommandBuffer( m_commandBuffer ) );
26087 }
26088#else
26089 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::end() const
26090 {
26091 Result result = static_cast<Result>( vkEndCommandBuffer( m_commandBuffer ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060026092 return createResultValue( result, "VULKAN_HPP_NAMESPACE::CommandBuffer::end" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026093 }
26094#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26095
26096#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26097 VULKAN_HPP_INLINE Result CommandBuffer::reset( CommandBufferResetFlags flags ) const
26098 {
26099 return static_cast<Result>( vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
26100 }
26101#else
26102 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::reset( CommandBufferResetFlags flags ) const
26103 {
26104 Result result = static_cast<Result>( vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060026105 return createResultValue( result, "VULKAN_HPP_NAMESPACE::CommandBuffer::reset" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026106 }
26107#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26108
26109 VULKAN_HPP_INLINE void CommandBuffer::bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline ) const
26110 {
26111 vkCmdBindPipeline( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipeline>( pipeline ) );
26112 }
26113
26114 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports ) const
26115 {
26116 vkCmdSetViewport( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewport*>( pViewports ) );
26117 }
26118#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26119 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports ) const
26120 {
26121 vkCmdSetViewport( m_commandBuffer, firstViewport, viewports.size() , reinterpret_cast<const VkViewport*>( viewports.data() ) );
26122 }
26123#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26124
26125 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors ) const
26126 {
26127 vkCmdSetScissor( m_commandBuffer, firstScissor, scissorCount, reinterpret_cast<const VkRect2D*>( pScissors ) );
26128 }
26129#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26130 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors ) const
26131 {
26132 vkCmdSetScissor( m_commandBuffer, firstScissor, scissors.size() , reinterpret_cast<const VkRect2D*>( scissors.data() ) );
26133 }
26134#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26135
26136 VULKAN_HPP_INLINE void CommandBuffer::setLineWidth( float lineWidth ) const
26137 {
26138 vkCmdSetLineWidth( m_commandBuffer, lineWidth );
26139 }
26140
26141 VULKAN_HPP_INLINE void CommandBuffer::setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const
26142 {
26143 vkCmdSetDepthBias( m_commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor );
26144 }
26145
26146 VULKAN_HPP_INLINE void CommandBuffer::setBlendConstants( const float blendConstants[4] ) const
26147 {
26148 vkCmdSetBlendConstants( m_commandBuffer, blendConstants );
26149 }
26150
26151 VULKAN_HPP_INLINE void CommandBuffer::setDepthBounds( float minDepthBounds, float maxDepthBounds ) const
26152 {
26153 vkCmdSetDepthBounds( m_commandBuffer, minDepthBounds, maxDepthBounds );
26154 }
26155
26156 VULKAN_HPP_INLINE void CommandBuffer::setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const
26157 {
26158 vkCmdSetStencilCompareMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), compareMask );
26159 }
26160
26161 VULKAN_HPP_INLINE void CommandBuffer::setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const
26162 {
26163 vkCmdSetStencilWriteMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), writeMask );
26164 }
26165
26166 VULKAN_HPP_INLINE void CommandBuffer::setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const
26167 {
26168 vkCmdSetStencilReference( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), reference );
26169 }
26170
26171 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
26172 {
26173 vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ), dynamicOffsetCount, pDynamicOffsets );
26174 }
26175#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26176 VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t firstSet, ArrayProxy<const DescriptorSet> descriptorSets, ArrayProxy<const uint32_t> dynamicOffsets ) const
26177 {
26178 vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ), dynamicOffsets.size() , dynamicOffsets.data() );
26179 }
26180#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26181
26182 VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType ) const
26183 {
26184 vkCmdBindIndexBuffer( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkIndexType>( indexType ) );
26185 }
26186
26187 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets ) const
26188 {
26189 vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, bindingCount, reinterpret_cast<const VkBuffer*>( pBuffers ), pOffsets );
26190 }
26191#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26192 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets ) const
26193 {
26194#ifdef VULKAN_HPP_NO_EXCEPTIONS
26195 assert( buffers.size() == offsets.size() );
26196#else
26197 if ( buffers.size() != offsets.size() )
26198 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060026199 throw LogicError( "VULKAN_HPP_NAMESPACE::CommandBuffer::bindVertexBuffers: buffers.size() != offsets.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026200 }
26201#endif // VULKAN_HPP_NO_EXCEPTIONS
26202 vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, buffers.size() , reinterpret_cast<const VkBuffer*>( buffers.data() ), offsets.data() );
26203 }
26204#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26205
26206 VULKAN_HPP_INLINE void CommandBuffer::draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const
26207 {
26208 vkCmdDraw( m_commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance );
26209 }
26210
26211 VULKAN_HPP_INLINE void CommandBuffer::drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const
26212 {
26213 vkCmdDrawIndexed( m_commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance );
26214 }
26215
26216 VULKAN_HPP_INLINE void CommandBuffer::drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const
26217 {
26218 vkCmdDrawIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
26219 }
26220
26221 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const
26222 {
26223 vkCmdDrawIndexedIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
26224 }
26225
Mark Young0f183a82017-02-28 09:58:04 -070026226 VULKAN_HPP_INLINE void CommandBuffer::dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026227 {
Mark Young0f183a82017-02-28 09:58:04 -070026228 vkCmdDispatch( m_commandBuffer, groupCountX, groupCountY, groupCountZ );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026229 }
26230
26231 VULKAN_HPP_INLINE void CommandBuffer::dispatchIndirect( Buffer buffer, DeviceSize offset ) const
26232 {
26233 vkCmdDispatchIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset );
26234 }
26235
26236 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions ) const
26237 {
26238 vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferCopy*>( pRegions ) );
26239 }
26240#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26241 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions ) const
26242 {
26243 vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferCopy*>( regions.data() ) );
26244 }
26245#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26246
26247 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions ) const
26248 {
26249 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 ) );
26250 }
26251#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26252 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions ) const
26253 {
26254 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() ) );
26255 }
26256#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26257
26258 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageBlit* pRegions, Filter filter ) const
26259 {
26260 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 ) );
26261 }
26262#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26263 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter ) const
26264 {
26265 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 ) );
26266 }
26267#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26268
26269 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions ) const
26270 {
26271 vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
26272 }
26273#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26274 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions ) const
26275 {
26276 vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
26277 }
26278#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26279
26280 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions ) const
26281 {
26282 vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
26283 }
26284#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26285 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions ) const
26286 {
26287 vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
26288 }
26289#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26290
26291 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData ) const
26292 {
26293 vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, dataSize, pData );
26294 }
26295#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26296 template <typename T>
26297 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data ) const
26298 {
26299 vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, data.size() * sizeof( T ) , reinterpret_cast<const void*>( data.data() ) );
26300 }
26301#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26302
26303 VULKAN_HPP_INLINE void CommandBuffer::fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const
26304 {
26305 vkCmdFillBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, size, data );
26306 }
26307
26308 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const
26309 {
26310 vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( pColor ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
26311 }
26312#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26313 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges ) const
26314 {
26315 vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( &color ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
26316 }
26317#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26318
26319 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const
26320 {
26321 vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( pDepthStencil ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
26322 }
26323#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26324 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges ) const
26325 {
26326 vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( &depthStencil ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
26327 }
26328#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26329
26330 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects ) const
26331 {
26332 vkCmdClearAttachments( m_commandBuffer, attachmentCount, reinterpret_cast<const VkClearAttachment*>( pAttachments ), rectCount, reinterpret_cast<const VkClearRect*>( pRects ) );
26333 }
26334#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26335 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects ) const
26336 {
26337 vkCmdClearAttachments( m_commandBuffer, attachments.size() , reinterpret_cast<const VkClearAttachment*>( attachments.data() ), rects.size() , reinterpret_cast<const VkClearRect*>( rects.data() ) );
26338 }
26339#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26340
26341 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions ) const
26342 {
26343 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 ) );
26344 }
26345#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26346 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions ) const
26347 {
26348 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() ) );
26349 }
26350#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26351
26352 VULKAN_HPP_INLINE void CommandBuffer::setEvent( Event event, PipelineStageFlags stageMask ) const
26353 {
26354 vkCmdSetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
26355 }
26356
26357 VULKAN_HPP_INLINE void CommandBuffer::resetEvent( Event event, PipelineStageFlags stageMask ) const
26358 {
26359 vkCmdResetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
26360 }
26361
26362 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
26363 {
26364 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 ) );
26365 }
26366#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26367 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
26368 {
26369 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() ) );
26370 }
26371#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26372
26373 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
26374 {
26375 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 ) );
26376 }
26377#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26378 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
26379 {
26380 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() ) );
26381 }
26382#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26383
26384 VULKAN_HPP_INLINE void CommandBuffer::beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const
26385 {
26386 vkCmdBeginQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query, static_cast<VkQueryControlFlags>( flags ) );
26387 }
26388
26389 VULKAN_HPP_INLINE void CommandBuffer::endQuery( QueryPool queryPool, uint32_t query ) const
26390 {
26391 vkCmdEndQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query );
26392 }
26393
26394 VULKAN_HPP_INLINE void CommandBuffer::resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const
26395 {
26396 vkCmdResetQueryPool( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount );
26397 }
26398
26399 VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query ) const
26400 {
26401 vkCmdWriteTimestamp( m_commandBuffer, static_cast<VkPipelineStageFlagBits>( pipelineStage ), static_cast<VkQueryPool>( queryPool ), query );
26402 }
26403
26404 VULKAN_HPP_INLINE void CommandBuffer::copyQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Buffer dstBuffer, DeviceSize dstOffset, DeviceSize stride, QueryResultFlags flags ) const
26405 {
26406 vkCmdCopyQueryPoolResults( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, static_cast<VkBuffer>( dstBuffer ), dstOffset, stride, static_cast<VkQueryResultFlags>( flags ) );
26407 }
26408
26409 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const
26410 {
26411 vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, size, pValues );
26412 }
26413#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26414 template <typename T>
26415 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values ) const
26416 {
26417 vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, values.size() * sizeof( T ) , reinterpret_cast<const void*>( values.data() ) );
26418 }
26419#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26420
26421 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents ) const
26422 {
26423 vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( pRenderPassBegin ), static_cast<VkSubpassContents>( contents ) );
26424 }
26425#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26426 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const
26427 {
26428 vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( &renderPassBegin ), static_cast<VkSubpassContents>( contents ) );
26429 }
26430#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26431
26432 VULKAN_HPP_INLINE void CommandBuffer::nextSubpass( SubpassContents contents ) const
26433 {
26434 vkCmdNextSubpass( m_commandBuffer, static_cast<VkSubpassContents>( contents ) );
26435 }
26436
26437 VULKAN_HPP_INLINE void CommandBuffer::endRenderPass() const
26438 {
26439 vkCmdEndRenderPass( m_commandBuffer );
26440 }
26441
26442 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const
26443 {
26444 vkCmdExecuteCommands( m_commandBuffer, commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
26445 }
26446#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26447 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( ArrayProxy<const CommandBuffer> commandBuffers ) const
26448 {
26449 vkCmdExecuteCommands( m_commandBuffer, commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
26450 }
26451#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26452
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026453 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026454 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026455 vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026456 }
26457#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026458 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026459 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026460 vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026461 }
26462#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26463
26464 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerEndEXT() const
26465 {
26466 vkCmdDebugMarkerEndEXT( m_commandBuffer );
26467 }
26468
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026469 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026470 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026471 vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026472 }
26473#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026474 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026475 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026476 vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026477 }
26478#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26479
26480 VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
26481 {
26482 vkCmdDrawIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
26483 }
26484
26485 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
26486 {
26487 vkCmdDrawIndexedIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
26488 }
26489
26490 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const
26491 {
26492 vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( pProcessCommandsInfo ) );
26493 }
26494#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26495 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo ) const
26496 {
26497 vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( &processCommandsInfo ) );
26498 }
26499#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26500
26501 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const
26502 {
26503 vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( pReserveSpaceInfo ) );
26504 }
26505#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26506 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo ) const
26507 {
26508 vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( &reserveSpaceInfo ) );
26509 }
26510#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070026511
26512 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites ) const
26513 {
26514 vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ) );
26515 }
26516#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26517 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites ) const
26518 {
26519 vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ) );
26520 }
26521#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26522
26523 VULKAN_HPP_INLINE void CommandBuffer::setDeviceMaskKHX( uint32_t deviceMask ) const
26524 {
26525 vkCmdSetDeviceMaskKHX( m_commandBuffer, deviceMask );
26526 }
26527
26528 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
26529 {
26530 vkCmdDispatchBaseKHX( m_commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ );
26531 }
26532
26533 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData ) const
26534 {
26535 vkCmdPushDescriptorSetWithTemplateKHR( m_commandBuffer, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), static_cast<VkPipelineLayout>( layout ), set, pData );
26536 }
26537
26538 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings ) const
26539 {
26540 vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewportWScalingNV*>( pViewportWScalings ) );
26541 }
26542#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26543 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings ) const
26544 {
26545 vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportWScalings.size() , reinterpret_cast<const VkViewportWScalingNV*>( viewportWScalings.data() ) );
26546 }
26547#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26548
26549 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles ) const
26550 {
26551 vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangleCount, reinterpret_cast<const VkRect2D*>( pDiscardRectangles ) );
26552 }
26553#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26554 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles ) const
26555 {
26556 vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangles.size() , reinterpret_cast<const VkRect2D*>( discardRectangles.data() ) );
26557 }
26558#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026559
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060026560 VULKAN_HPP_INLINE void CommandBuffer::setSampleLocationsEXT( const SampleLocationsInfoEXT* pSampleLocationsInfo ) const
26561 {
26562 vkCmdSetSampleLocationsEXT( m_commandBuffer, reinterpret_cast<const VkSampleLocationsInfoEXT*>( pSampleLocationsInfo ) );
26563 }
26564#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26565 VULKAN_HPP_INLINE void CommandBuffer::setSampleLocationsEXT( const SampleLocationsInfoEXT & sampleLocationsInfo ) const
26566 {
26567 vkCmdSetSampleLocationsEXT( m_commandBuffer, reinterpret_cast<const VkSampleLocationsInfoEXT*>( &sampleLocationsInfo ) );
26568 }
26569#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26570
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026571 struct SubmitInfo
26572 {
26573 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 )
26574 : sType( StructureType::eSubmitInfo )
26575 , pNext( nullptr )
26576 , waitSemaphoreCount( waitSemaphoreCount_ )
26577 , pWaitSemaphores( pWaitSemaphores_ )
26578 , pWaitDstStageMask( pWaitDstStageMask_ )
26579 , commandBufferCount( commandBufferCount_ )
26580 , pCommandBuffers( pCommandBuffers_ )
26581 , signalSemaphoreCount( signalSemaphoreCount_ )
26582 , pSignalSemaphores( pSignalSemaphores_ )
26583 {
26584 }
26585
26586 SubmitInfo( VkSubmitInfo const & rhs )
26587 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026588 memcpy( this, &rhs, sizeof( SubmitInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026589 }
26590
26591 SubmitInfo& operator=( VkSubmitInfo const & rhs )
26592 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026593 memcpy( this, &rhs, sizeof( SubmitInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026594 return *this;
26595 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026596 SubmitInfo& setPNext( const void* pNext_ )
26597 {
26598 pNext = pNext_;
26599 return *this;
26600 }
26601
26602 SubmitInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
26603 {
26604 waitSemaphoreCount = waitSemaphoreCount_;
26605 return *this;
26606 }
26607
26608 SubmitInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
26609 {
26610 pWaitSemaphores = pWaitSemaphores_;
26611 return *this;
26612 }
26613
26614 SubmitInfo& setPWaitDstStageMask( const PipelineStageFlags* pWaitDstStageMask_ )
26615 {
26616 pWaitDstStageMask = pWaitDstStageMask_;
26617 return *this;
26618 }
26619
26620 SubmitInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
26621 {
26622 commandBufferCount = commandBufferCount_;
26623 return *this;
26624 }
26625
26626 SubmitInfo& setPCommandBuffers( const CommandBuffer* pCommandBuffers_ )
26627 {
26628 pCommandBuffers = pCommandBuffers_;
26629 return *this;
26630 }
26631
26632 SubmitInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
26633 {
26634 signalSemaphoreCount = signalSemaphoreCount_;
26635 return *this;
26636 }
26637
26638 SubmitInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
26639 {
26640 pSignalSemaphores = pSignalSemaphores_;
26641 return *this;
26642 }
26643
26644 operator const VkSubmitInfo&() const
26645 {
26646 return *reinterpret_cast<const VkSubmitInfo*>(this);
26647 }
26648
26649 bool operator==( SubmitInfo const& rhs ) const
26650 {
26651 return ( sType == rhs.sType )
26652 && ( pNext == rhs.pNext )
26653 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
26654 && ( pWaitSemaphores == rhs.pWaitSemaphores )
26655 && ( pWaitDstStageMask == rhs.pWaitDstStageMask )
26656 && ( commandBufferCount == rhs.commandBufferCount )
26657 && ( pCommandBuffers == rhs.pCommandBuffers )
26658 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
26659 && ( pSignalSemaphores == rhs.pSignalSemaphores );
26660 }
26661
26662 bool operator!=( SubmitInfo const& rhs ) const
26663 {
26664 return !operator==( rhs );
26665 }
26666
26667 private:
26668 StructureType sType;
26669
26670 public:
26671 const void* pNext;
26672 uint32_t waitSemaphoreCount;
26673 const Semaphore* pWaitSemaphores;
26674 const PipelineStageFlags* pWaitDstStageMask;
26675 uint32_t commandBufferCount;
26676 const CommandBuffer* pCommandBuffers;
26677 uint32_t signalSemaphoreCount;
26678 const Semaphore* pSignalSemaphores;
26679 };
26680 static_assert( sizeof( SubmitInfo ) == sizeof( VkSubmitInfo ), "struct and wrapper have different size!" );
26681
26682 class Queue
26683 {
26684 public:
26685 Queue()
26686 : m_queue(VK_NULL_HANDLE)
26687 {}
26688
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070026689 Queue( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026690 : m_queue(VK_NULL_HANDLE)
26691 {}
26692
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026693 VULKAN_HPP_TYPESAFE_EXPLICIT Queue( VkQueue queue )
26694 : m_queue( queue )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026695 {}
26696
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026697#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026698 Queue & operator=(VkQueue queue)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026699 {
26700 m_queue = queue;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026701 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026702 }
26703#endif
26704
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026705 Queue & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026706 {
26707 m_queue = VK_NULL_HANDLE;
26708 return *this;
26709 }
26710
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026711 bool operator==( Queue const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026712 {
26713 return m_queue == rhs.m_queue;
26714 }
26715
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026716 bool operator!=(Queue const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026717 {
26718 return m_queue != rhs.m_queue;
26719 }
26720
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026721 bool operator<(Queue const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026722 {
26723 return m_queue < rhs.m_queue;
26724 }
26725
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026726 Result submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026727#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026728 ResultValueType<void>::type submit( ArrayProxy<const SubmitInfo> submits, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026729#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26730
26731#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026732 Result waitIdle() const;
26733#else
26734 ResultValueType<void>::type waitIdle() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026735#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26736
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026737 Result bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026738#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026739 ResultValueType<void>::type bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026740#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26741
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026742 Result presentKHR( const PresentInfoKHR* pPresentInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026743#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026744 Result presentKHR( const PresentInfoKHR & presentInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026745#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26746
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026747
26748
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026749 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueue() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026750 {
26751 return m_queue;
26752 }
26753
26754 explicit operator bool() const
26755 {
26756 return m_queue != VK_NULL_HANDLE;
26757 }
26758
26759 bool operator!() const
26760 {
26761 return m_queue == VK_NULL_HANDLE;
26762 }
26763
26764 private:
26765 VkQueue m_queue;
26766 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026767
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026768 static_assert( sizeof( Queue ) == sizeof( VkQueue ), "handle and wrapper have different size!" );
26769
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026770 VULKAN_HPP_INLINE Result Queue::submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence ) const
26771 {
26772 return static_cast<Result>( vkQueueSubmit( m_queue, submitCount, reinterpret_cast<const VkSubmitInfo*>( pSubmits ), static_cast<VkFence>( fence ) ) );
26773 }
26774#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26775 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::submit( ArrayProxy<const SubmitInfo> submits, Fence fence ) const
26776 {
26777 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 -060026778 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Queue::submit" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026779 }
26780#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26781
26782#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26783 VULKAN_HPP_INLINE Result Queue::waitIdle() const
26784 {
26785 return static_cast<Result>( vkQueueWaitIdle( m_queue ) );
26786 }
26787#else
26788 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::waitIdle() const
26789 {
26790 Result result = static_cast<Result>( vkQueueWaitIdle( m_queue ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060026791 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Queue::waitIdle" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026792 }
26793#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26794
26795 VULKAN_HPP_INLINE Result Queue::bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence ) const
26796 {
26797 return static_cast<Result>( vkQueueBindSparse( m_queue, bindInfoCount, reinterpret_cast<const VkBindSparseInfo*>( pBindInfo ), static_cast<VkFence>( fence ) ) );
26798 }
26799#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26800 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence ) const
26801 {
26802 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 -060026803 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Queue::bindSparse" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026804 }
26805#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26806
26807 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR* pPresentInfo ) const
26808 {
26809 return static_cast<Result>( vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( pPresentInfo ) ) );
26810 }
26811#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26812 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR & presentInfo ) const
26813 {
26814 Result result = static_cast<Result>( vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( &presentInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060026815 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Queue::presentKHR", { Result::eSuccess, Result::eSuboptimalKHR } );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026816 }
26817#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026818
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026819#ifndef VULKAN_HPP_NO_SMART_HANDLE
26820 class BufferDeleter;
26821 using UniqueBuffer = UniqueHandle<Buffer, BufferDeleter>;
26822 class BufferViewDeleter;
26823 using UniqueBufferView = UniqueHandle<BufferView, BufferViewDeleter>;
26824 class CommandBufferDeleter;
26825 using UniqueCommandBuffer = UniqueHandle<CommandBuffer, CommandBufferDeleter>;
26826 class CommandPoolDeleter;
26827 using UniqueCommandPool = UniqueHandle<CommandPool, CommandPoolDeleter>;
26828 class DescriptorPoolDeleter;
26829 using UniqueDescriptorPool = UniqueHandle<DescriptorPool, DescriptorPoolDeleter>;
26830 class DescriptorSetDeleter;
26831 using UniqueDescriptorSet = UniqueHandle<DescriptorSet, DescriptorSetDeleter>;
26832 class DescriptorSetLayoutDeleter;
26833 using UniqueDescriptorSetLayout = UniqueHandle<DescriptorSetLayout, DescriptorSetLayoutDeleter>;
Mark Young0f183a82017-02-28 09:58:04 -070026834 class DescriptorUpdateTemplateKHRDeleter;
26835 using UniqueDescriptorUpdateTemplateKHR = UniqueHandle<DescriptorUpdateTemplateKHR, DescriptorUpdateTemplateKHRDeleter>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026836 class DeviceMemoryDeleter;
26837 using UniqueDeviceMemory = UniqueHandle<DeviceMemory, DeviceMemoryDeleter>;
26838 class EventDeleter;
26839 using UniqueEvent = UniqueHandle<Event, EventDeleter>;
26840 class FenceDeleter;
26841 using UniqueFence = UniqueHandle<Fence, FenceDeleter>;
26842 class FramebufferDeleter;
26843 using UniqueFramebuffer = UniqueHandle<Framebuffer, FramebufferDeleter>;
26844 class ImageDeleter;
26845 using UniqueImage = UniqueHandle<Image, ImageDeleter>;
26846 class ImageViewDeleter;
26847 using UniqueImageView = UniqueHandle<ImageView, ImageViewDeleter>;
26848 class IndirectCommandsLayoutNVXDeleter;
26849 using UniqueIndirectCommandsLayoutNVX = UniqueHandle<IndirectCommandsLayoutNVX, IndirectCommandsLayoutNVXDeleter>;
26850 class ObjectTableNVXDeleter;
26851 using UniqueObjectTableNVX = UniqueHandle<ObjectTableNVX, ObjectTableNVXDeleter>;
26852 class PipelineDeleter;
26853 using UniquePipeline = UniqueHandle<Pipeline, PipelineDeleter>;
26854 class PipelineCacheDeleter;
26855 using UniquePipelineCache = UniqueHandle<PipelineCache, PipelineCacheDeleter>;
26856 class PipelineLayoutDeleter;
26857 using UniquePipelineLayout = UniqueHandle<PipelineLayout, PipelineLayoutDeleter>;
26858 class QueryPoolDeleter;
26859 using UniqueQueryPool = UniqueHandle<QueryPool, QueryPoolDeleter>;
26860 class RenderPassDeleter;
26861 using UniqueRenderPass = UniqueHandle<RenderPass, RenderPassDeleter>;
26862 class SamplerDeleter;
26863 using UniqueSampler = UniqueHandle<Sampler, SamplerDeleter>;
Lenny Komowb79f04a2017-09-18 17:07:00 -060026864 class SamplerYcbcrConversionKHRDeleter;
26865 using UniqueSamplerYcbcrConversionKHR = UniqueHandle<SamplerYcbcrConversionKHR, SamplerYcbcrConversionKHRDeleter>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026866 class SemaphoreDeleter;
26867 using UniqueSemaphore = UniqueHandle<Semaphore, SemaphoreDeleter>;
26868 class ShaderModuleDeleter;
26869 using UniqueShaderModule = UniqueHandle<ShaderModule, ShaderModuleDeleter>;
26870 class SwapchainKHRDeleter;
26871 using UniqueSwapchainKHR = UniqueHandle<SwapchainKHR, SwapchainKHRDeleter>;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060026872 class ValidationCacheEXTDeleter;
26873 using UniqueValidationCacheEXT = UniqueHandle<ValidationCacheEXT, ValidationCacheEXTDeleter>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026874#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26875
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026876 class Device
26877 {
26878 public:
26879 Device()
26880 : m_device(VK_NULL_HANDLE)
26881 {}
26882
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070026883 Device( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026884 : m_device(VK_NULL_HANDLE)
26885 {}
26886
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026887 VULKAN_HPP_TYPESAFE_EXPLICIT Device( VkDevice device )
26888 : m_device( device )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026889 {}
26890
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026891#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026892 Device & operator=(VkDevice device)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026893 {
26894 m_device = device;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026895 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026896 }
26897#endif
26898
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026899 Device & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026900 {
26901 m_device = VK_NULL_HANDLE;
26902 return *this;
26903 }
26904
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026905 bool operator==( Device const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026906 {
26907 return m_device == rhs.m_device;
26908 }
26909
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026910 bool operator!=(Device const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026911 {
26912 return m_device != rhs.m_device;
26913 }
26914
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026915 bool operator<(Device const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026916 {
26917 return m_device < rhs.m_device;
26918 }
26919
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026920 PFN_vkVoidFunction getProcAddr( const char* pName ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026921#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026922 PFN_vkVoidFunction getProcAddr( const std::string & name ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026923#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26924
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026925 void destroy( const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026926#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026927 void destroy( Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026928#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26929
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026930 void getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026931#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026932 Queue getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026933#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26934
26935#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026936 Result waitIdle() const;
26937#else
26938 ResultValueType<void>::type waitIdle() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026939#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26940
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026941 Result allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026942#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026943 ResultValueType<DeviceMemory>::type allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26944#ifndef VULKAN_HPP_NO_SMART_HANDLE
26945 UniqueDeviceMemory allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26946#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026947#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26948
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026949 void freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026950#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026951 void freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26952#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26953
26954 Result mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData ) const;
26955#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26956 ResultValueType<void*>::type mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags = MemoryMapFlags() ) const;
26957#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26958
26959 void unmapMemory( DeviceMemory memory ) const;
26960
26961 Result flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const;
26962#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26963 ResultValueType<void>::type flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const;
26964#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26965
26966 Result invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const;
26967#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26968 ResultValueType<void>::type invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const;
26969#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26970
26971 void getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes ) const;
26972#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26973 DeviceSize getMemoryCommitment( DeviceMemory memory ) const;
26974#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26975
26976 void getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements ) const;
26977#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26978 MemoryRequirements getBufferMemoryRequirements( Buffer buffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026979#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26980
26981#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026982 Result bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const;
26983#else
26984 ResultValueType<void>::type bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const;
26985#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026986
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026987 void getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026988#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026989 MemoryRequirements getImageMemoryRequirements( Image image ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026990#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26991
26992#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026993 Result bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const;
26994#else
26995 ResultValueType<void>::type bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026996#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26997
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026998 void getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026999#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027000 template <typename Allocator = std::allocator<SparseImageMemoryRequirements>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027001 std::vector<SparseImageMemoryRequirements,Allocator> getImageSparseMemoryRequirements( Image image ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027002#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27003
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027004 Result createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027005#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027006 ResultValueType<Fence>::type createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27007#ifndef VULKAN_HPP_NO_SMART_HANDLE
27008 UniqueFence createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27009#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027010#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27011
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027012 void destroyFence( Fence fence, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027013#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027014 void destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027015#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27016
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027017 Result resetFences( uint32_t fenceCount, const Fence* pFences ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027018#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027019 ResultValueType<void>::type resetFences( ArrayProxy<const Fence> fences ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027020#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27021
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027022 Result getFenceStatus( Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027023
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027024 Result waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027025#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027026 Result waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout ) const;
27027#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27028
27029 Result createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore ) const;
27030#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27031 ResultValueType<Semaphore>::type createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27032#ifndef VULKAN_HPP_NO_SMART_HANDLE
27033 UniqueSemaphore createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27034#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27035#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27036
27037 void destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator ) const;
27038#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27039 void destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27040#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27041
27042 Result createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent ) const;
27043#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27044 ResultValueType<Event>::type createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27045#ifndef VULKAN_HPP_NO_SMART_HANDLE
27046 UniqueEvent createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27047#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27048#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27049
27050 void destroyEvent( Event event, const AllocationCallbacks* pAllocator ) const;
27051#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27052 void destroyEvent( Event event, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027053#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27054
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027055 Result getEventStatus( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027056
27057#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027058 Result setEvent( Event event ) const;
27059#else
27060 ResultValueType<void>::type setEvent( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027061#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27062
27063#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027064 Result resetEvent( Event event ) const;
27065#else
27066 ResultValueType<void>::type resetEvent( Event event ) 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 createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027070#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027071 ResultValueType<QueryPool>::type createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27072#ifndef VULKAN_HPP_NO_SMART_HANDLE
27073 UniqueQueryPool createQueryPoolUnique( const QueryPoolCreateInfo & 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 destroyQueryPool( QueryPool queryPool, 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 destroyQueryPool( QueryPool queryPool, 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 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 -060027083#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27084 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027085 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 -060027086#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27087
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027088 Result createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027089#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027090 ResultValueType<Buffer>::type createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27091#ifndef VULKAN_HPP_NO_SMART_HANDLE
27092 UniqueBuffer createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27093#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027094#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27095
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027096 void destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027097#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027098 void destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027099#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27100
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027101 Result createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027102#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027103 ResultValueType<BufferView>::type createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27104#ifndef VULKAN_HPP_NO_SMART_HANDLE
27105 UniqueBufferView createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27106#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027107#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27108
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027109 void destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027110#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027111 void destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027112#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27113
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027114 Result createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027115#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027116 ResultValueType<Image>::type createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27117#ifndef VULKAN_HPP_NO_SMART_HANDLE
27118 UniqueImage createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27119#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027120#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27121
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027122 void destroyImage( Image image, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027123#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027124 void destroyImage( Image image, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027125#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27126
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027127 void getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027128#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027129 SubresourceLayout getImageSubresourceLayout( Image image, const ImageSubresource & subresource ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027130#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27131
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027132 Result createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027133#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027134 ResultValueType<ImageView>::type createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27135#ifndef VULKAN_HPP_NO_SMART_HANDLE
27136 UniqueImageView createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27137#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027138#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27139
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027140 void destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027141#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027142 void destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027143#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27144
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027145 Result createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027146#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027147 ResultValueType<ShaderModule>::type createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27148#ifndef VULKAN_HPP_NO_SMART_HANDLE
27149 UniqueShaderModule createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27150#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027151#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27152
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027153 void destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027154#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027155 void destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027156#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27157
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027158 Result createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027159#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027160 ResultValueType<PipelineCache>::type createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27161#ifndef VULKAN_HPP_NO_SMART_HANDLE
27162 UniquePipelineCache createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27163#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027164#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27165
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027166 void destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027167#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027168 void destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027169#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27170
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027171 Result getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027172#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027173 template <typename Allocator = std::allocator<uint8_t>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027174 typename ResultValueType<std::vector<uint8_t,Allocator>>::type getPipelineCacheData( PipelineCache pipelineCache ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027175#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27176
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027177 Result mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027178#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027179 ResultValueType<void>::type mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027180#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27181
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027182 Result createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027183#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027184 template <typename Allocator = std::allocator<Pipeline>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027185 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027186 ResultValueType<Pipeline>::type createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27187#ifndef VULKAN_HPP_NO_SMART_HANDLE
27188 template <typename Allocator = std::allocator<Pipeline>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027189 std::vector<UniquePipeline> createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027190 UniquePipeline createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27191#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027192#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27193
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027194 Result createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027195#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027196 template <typename Allocator = std::allocator<Pipeline>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027197 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027198 ResultValueType<Pipeline>::type createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27199#ifndef VULKAN_HPP_NO_SMART_HANDLE
27200 template <typename Allocator = std::allocator<Pipeline>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027201 std::vector<UniquePipeline> createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027202 UniquePipeline createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27203#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027204#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27205
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027206 void destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027207#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027208 void destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027209#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27210
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027211 Result createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027212#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027213 ResultValueType<PipelineLayout>::type createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27214#ifndef VULKAN_HPP_NO_SMART_HANDLE
27215 UniquePipelineLayout createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27216#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027217#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27218
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027219 void destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027220#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027221 void destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027222#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27223
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027224 Result createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027225#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027226 ResultValueType<Sampler>::type createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27227#ifndef VULKAN_HPP_NO_SMART_HANDLE
27228 UniqueSampler createSamplerUnique( const SamplerCreateInfo & 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 destroySampler( Sampler sampler, 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 destroySampler( Sampler sampler, 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 createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027238#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027239 ResultValueType<DescriptorSetLayout>::type createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27240#ifndef VULKAN_HPP_NO_SMART_HANDLE
27241 UniqueDescriptorSetLayout createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27242#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027243#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27244
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027245 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027246#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027247 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027248#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27249
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027250 Result createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027251#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027252 ResultValueType<DescriptorPool>::type createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27253#ifndef VULKAN_HPP_NO_SMART_HANDLE
27254 UniqueDescriptorPool createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27255#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027256#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27257
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027258 void destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027259#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027260 void destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027261#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27262
27263#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027264 Result resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const;
27265#else
27266 ResultValueType<void>::type resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags = DescriptorPoolResetFlags() ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027267#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27268
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027269 Result allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027270#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027271 template <typename Allocator = std::allocator<DescriptorSet>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027272 typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027273#ifndef VULKAN_HPP_NO_SMART_HANDLE
27274 template <typename Allocator = std::allocator<DescriptorSet>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027275 std::vector<UniqueDescriptorSet> allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027276#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027277#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27278
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027279 Result freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027280#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027281 ResultValueType<void>::type freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027282#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27283
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027284 void updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027285#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027286 void updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027287#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27288
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027289 Result createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027290#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027291 ResultValueType<Framebuffer>::type createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27292#ifndef VULKAN_HPP_NO_SMART_HANDLE
27293 UniqueFramebuffer createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27294#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027295#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27296
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027297 void destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027298#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027299 void destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027300#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27301
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027302 Result createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027303#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027304 ResultValueType<RenderPass>::type createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27305#ifndef VULKAN_HPP_NO_SMART_HANDLE
27306 UniqueRenderPass createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27307#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027308#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27309
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027310 void destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027311#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027312 void destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027313#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27314
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027315 void getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027316#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027317 Extent2D getRenderAreaGranularity( RenderPass renderPass ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027318#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27319
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027320 Result createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027321#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027322 ResultValueType<CommandPool>::type createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27323#ifndef VULKAN_HPP_NO_SMART_HANDLE
27324 UniqueCommandPool createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27325#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027326#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27327
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027328 void destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027329#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027330 void destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027331#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27332
27333#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027334 Result resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const;
27335#else
27336 ResultValueType<void>::type resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027337#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27338
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027339 Result allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027340#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027341 template <typename Allocator = std::allocator<CommandBuffer>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027342 typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027343#ifndef VULKAN_HPP_NO_SMART_HANDLE
27344 template <typename Allocator = std::allocator<CommandBuffer>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027345 std::vector<UniqueCommandBuffer> allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027346#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027347#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27348
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027349 void freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027350#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027351 void freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027352#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27353
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027354 Result createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027355#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027356 template <typename Allocator = std::allocator<SwapchainKHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027357 typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027358 ResultValueType<SwapchainKHR>::type createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27359#ifndef VULKAN_HPP_NO_SMART_HANDLE
27360 template <typename Allocator = std::allocator<SwapchainKHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027361 std::vector<UniqueSwapchainKHR> createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027362 UniqueSwapchainKHR createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27363#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027364#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27365
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027366 Result createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027367#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027368 ResultValueType<SwapchainKHR>::type createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27369#ifndef VULKAN_HPP_NO_SMART_HANDLE
27370 UniqueSwapchainKHR createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27371#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027372#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27373
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027374 void destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027375#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027376 void destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027377#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27378
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027379 Result getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027380#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027381 template <typename Allocator = std::allocator<Image>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027382 typename ResultValueType<std::vector<Image,Allocator>>::type getSwapchainImagesKHR( SwapchainKHR swapchain ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027383#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27384
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027385 Result acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027386#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027387 ResultValue<uint32_t> acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027388#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27389
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060027390 Result debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT* pNameInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027391#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060027392 ResultValueType<void>::type debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT & nameInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027393#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27394
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060027395 Result debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT* pTagInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027396#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060027397 ResultValueType<void>::type debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT & tagInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027398#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27399
Lenny Komow6501c122016-08-31 15:03:49 -060027400#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027401 Result getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const;
27402#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27403 ResultValueType<HANDLE>::type getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType ) const;
27404#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komow6501c122016-08-31 15:03:49 -060027405#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27406
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027407 Result createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const;
Lenny Komow6501c122016-08-31 15:03:49 -060027408#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027409 ResultValueType<IndirectCommandsLayoutNVX>::type createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27410#ifndef VULKAN_HPP_NO_SMART_HANDLE
27411 UniqueIndirectCommandsLayoutNVX createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27412#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komow6501c122016-08-31 15:03:49 -060027413#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27414
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027415 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027416#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027417 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027418#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27419
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027420 Result createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027421#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027422 ResultValueType<ObjectTableNVX>::type createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27423#ifndef VULKAN_HPP_NO_SMART_HANDLE
27424 UniqueObjectTableNVX createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27425#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027426#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27427
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027428 void destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027429#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027430 void destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027431#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27432
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027433 Result registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027434#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027435 ResultValueType<void>::type registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027436#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27437
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027438 Result unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027439#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027440 ResultValueType<void>::type unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027441#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27442
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027443#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027444 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags ) const;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027445#else
27446 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags = CommandPoolTrimFlagsKHR() ) const;
27447#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027448
Mark Youngabc2d6e2017-07-07 07:59:56 -060027449#ifdef VK_USE_PLATFORM_WIN32_KHR
27450 Result getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027451#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027452 ResultValueType<HANDLE>::type getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027453#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060027454#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070027455
Mark Youngabc2d6e2017-07-07 07:59:56 -060027456#ifdef VK_USE_PLATFORM_WIN32_KHR
27457 Result getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle, MemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027458#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027459 ResultValueType<MemoryWin32HandlePropertiesKHR>::type getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027460#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060027461#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070027462
Mark Youngabc2d6e2017-07-07 07:59:56 -060027463 Result getMemoryFdKHR( const MemoryGetFdInfoKHR* pGetFdInfo, int* pFd ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027464#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027465 ResultValueType<int>::type getMemoryFdKHR( const MemoryGetFdInfoKHR & getFdInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027466#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27467
Mark Youngabc2d6e2017-07-07 07:59:56 -060027468 Result getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, int fd, MemoryFdPropertiesKHR* pMemoryFdProperties ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027469#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027470 ResultValueType<MemoryFdPropertiesKHR>::type getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, int fd ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027471#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27472
Mark Youngabc2d6e2017-07-07 07:59:56 -060027473#ifdef VK_USE_PLATFORM_WIN32_KHR
27474 Result getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027475#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027476 ResultValueType<HANDLE>::type getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027477#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060027478#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070027479
Mark Youngabc2d6e2017-07-07 07:59:56 -060027480#ifdef VK_USE_PLATFORM_WIN32_KHR
27481 Result importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027482#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027483 ResultValueType<void>::type importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027484#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060027485#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070027486
Mark Youngabc2d6e2017-07-07 07:59:56 -060027487 Result getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027488#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027489 ResultValueType<int>::type getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR & getFdInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027490#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27491
Mark Youngabc2d6e2017-07-07 07:59:56 -060027492 Result importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027493#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027494 ResultValueType<void>::type importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo ) const;
27495#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27496
27497#ifdef VK_USE_PLATFORM_WIN32_KHR
27498 Result getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const;
27499#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27500 ResultValueType<HANDLE>::type getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
27501#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27502#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27503
27504#ifdef VK_USE_PLATFORM_WIN32_KHR
27505 Result importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo ) const;
27506#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27507 ResultValueType<void>::type importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo ) const;
27508#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27509#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27510
27511 Result getFenceFdKHR( const FenceGetFdInfoKHR* pGetFdInfo, int* pFd ) const;
27512#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27513 ResultValueType<int>::type getFenceFdKHR( const FenceGetFdInfoKHR & getFdInfo ) const;
27514#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27515
27516 Result importFenceFdKHR( const ImportFenceFdInfoKHR* pImportFenceFdInfo ) const;
27517#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27518 ResultValueType<void>::type importFenceFdKHR( const ImportFenceFdInfoKHR & importFenceFdInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027519#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27520
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027521 Result displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027522#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027523 ResultValueType<void>::type displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027524#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27525
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027526 Result registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Mark Young39389872017-01-19 21:10:49 -070027527#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060027528 ResultValueType<Fence>::type registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Young39389872017-01-19 21:10:49 -070027529#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27530
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027531 Result registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Mark Young39389872017-01-19 21:10:49 -070027532#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060027533 ResultValueType<Fence>::type registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Young39389872017-01-19 21:10:49 -070027534#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27535
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027536 Result getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const;
Mark Young39389872017-01-19 21:10:49 -070027537#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027538 ResultValue<uint64_t> getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter ) const;
Mark Young39389872017-01-19 21:10:49 -070027539#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27540
Mark Young0f183a82017-02-28 09:58:04 -070027541 void getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ) const;
27542#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27543 PeerMemoryFeatureFlagsKHX getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const;
27544#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27545
Lenny Komowb79f04a2017-09-18 17:07:00 -060027546 Result bindBufferMemory2KHR( uint32_t bindInfoCount, const BindBufferMemoryInfoKHR* pBindInfos ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027547#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060027548 ResultValueType<void>::type bindBufferMemory2KHR( ArrayProxy<const BindBufferMemoryInfoKHR> bindInfos ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027549#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27550
Lenny Komowb79f04a2017-09-18 17:07:00 -060027551 Result bindImageMemory2KHR( uint32_t bindInfoCount, const BindImageMemoryInfoKHR* pBindInfos ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027552#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060027553 ResultValueType<void>::type bindImageMemory2KHR( ArrayProxy<const BindImageMemoryInfoKHR> bindInfos ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027554#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27555
27556 Result getGroupPresentCapabilitiesKHX( DeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ) const;
27557#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27558 ResultValueType<DeviceGroupPresentCapabilitiesKHX>::type getGroupPresentCapabilitiesKHX() const;
27559#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27560
27561 Result getGroupSurfacePresentModesKHX( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHX* pModes ) const;
27562#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27563 ResultValueType<DeviceGroupPresentModeFlagsKHX>::type getGroupSurfacePresentModesKHX( SurfaceKHR surface ) const;
27564#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27565
27566 Result acquireNextImage2KHX( const AcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex ) const;
27567#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27568 ResultValue<uint32_t> acquireNextImage2KHX( const AcquireNextImageInfoKHX & acquireInfo ) const;
27569#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27570
27571 Result createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) const;
27572#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27573 ResultValueType<DescriptorUpdateTemplateKHR>::type createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27574#ifndef VULKAN_HPP_NO_SMART_HANDLE
27575 UniqueDescriptorUpdateTemplateKHR createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27576#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27577#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27578
27579 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const AllocationCallbacks* pAllocator ) const;
27580#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27581 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27582#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27583
27584 void updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData ) const;
27585
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027586 void setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata ) const;
27587#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27588 void setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata ) const;
27589#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27590
Mark Lobodzinski54385432017-05-15 10:27:52 -060027591 Result getSwapchainStatusKHR( SwapchainKHR swapchain ) const;
27592
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027593 Result getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const;
27594#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27595 ResultValueType<RefreshCycleDurationGOOGLE>::type getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain ) const;
27596#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27597
27598 Result getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings ) const;
27599#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27600 template <typename Allocator = std::allocator<PastPresentationTimingGOOGLE>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027601 typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type getPastPresentationTimingGOOGLE( SwapchainKHR swapchain ) const;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027602#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27603
Mark Youngabc2d6e2017-07-07 07:59:56 -060027604 void getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR* pInfo, MemoryRequirements2KHR* pMemoryRequirements ) const;
27605#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27606 MemoryRequirements2KHR getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR & info ) const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060027607 template <typename ...T>
27608 StructureChain<T...> getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR & info ) const;
Mark Youngabc2d6e2017-07-07 07:59:56 -060027609#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27610
27611 void getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR* pInfo, MemoryRequirements2KHR* pMemoryRequirements ) const;
27612#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27613 MemoryRequirements2KHR getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR & info ) const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060027614 template <typename ...T>
27615 StructureChain<T...> getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR & info ) const;
Mark Youngabc2d6e2017-07-07 07:59:56 -060027616#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27617
27618 void getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2KHR* pInfo, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements2KHR* pSparseMemoryRequirements ) const;
27619#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27620 template <typename Allocator = std::allocator<SparseImageMemoryRequirements2KHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027621 std::vector<SparseImageMemoryRequirements2KHR,Allocator> getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2KHR & info ) const;
Mark Youngabc2d6e2017-07-07 07:59:56 -060027622#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27623
Lenny Komowb79f04a2017-09-18 17:07:00 -060027624 Result createSamplerYcbcrConversionKHR( const SamplerYcbcrConversionCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SamplerYcbcrConversionKHR* pYcbcrConversion ) const;
27625#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27626 ResultValueType<SamplerYcbcrConversionKHR>::type createSamplerYcbcrConversionKHR( const SamplerYcbcrConversionCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27627#ifndef VULKAN_HPP_NO_SMART_HANDLE
27628 UniqueSamplerYcbcrConversionKHR createSamplerYcbcrConversionKHRUnique( const SamplerYcbcrConversionCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27629#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27630#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27631
27632 void destroySamplerYcbcrConversionKHR( SamplerYcbcrConversionKHR ycbcrConversion, const AllocationCallbacks* pAllocator ) const;
27633#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27634 void destroySamplerYcbcrConversionKHR( SamplerYcbcrConversionKHR ycbcrConversion, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27635#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27636
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060027637 Result createValidationCacheEXT( const ValidationCacheCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, ValidationCacheEXT* pValidationCache ) const;
27638#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27639 ResultValueType<ValidationCacheEXT>::type createValidationCacheEXT( const ValidationCacheCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27640#ifndef VULKAN_HPP_NO_SMART_HANDLE
27641 UniqueValidationCacheEXT createValidationCacheEXTUnique( const ValidationCacheCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27642#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27643#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27644
27645 void destroyValidationCacheEXT( ValidationCacheEXT validationCache, const AllocationCallbacks* pAllocator ) const;
27646#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27647 void destroyValidationCacheEXT( ValidationCacheEXT validationCache, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27648#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27649
27650 Result getValidationCacheDataEXT( ValidationCacheEXT validationCache, size_t* pDataSize, void* pData ) const;
27651#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27652 template <typename Allocator = std::allocator<uint8_t>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027653 typename ResultValueType<std::vector<uint8_t,Allocator>>::type getValidationCacheDataEXT( ValidationCacheEXT validationCache ) const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060027654#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27655
27656 Result mergeValidationCachesEXT( ValidationCacheEXT dstCache, uint32_t srcCacheCount, const ValidationCacheEXT* pSrcCaches ) const;
27657#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27658 ResultValueType<void>::type mergeValidationCachesEXT( ValidationCacheEXT dstCache, ArrayProxy<const ValidationCacheEXT> srcCaches ) const;
27659#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27660
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060027661 Result getShaderInfoAMD( Pipeline pipeline, ShaderStageFlagBits shaderStage, ShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo ) const;
27662#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27663 template <typename Allocator = std::allocator<uint8_t>>
27664 typename ResultValueType<std::vector<uint8_t,Allocator>>::type getShaderInfoAMD( Pipeline pipeline, ShaderStageFlagBits shaderStage, ShaderInfoTypeAMD infoType ) const;
27665#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27666
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027667
27668
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070027669 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDevice() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027670 {
27671 return m_device;
27672 }
27673
27674 explicit operator bool() const
27675 {
27676 return m_device != VK_NULL_HANDLE;
27677 }
27678
27679 bool operator!() const
27680 {
27681 return m_device == VK_NULL_HANDLE;
27682 }
27683
27684 private:
27685 VkDevice m_device;
27686 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027687
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027688 static_assert( sizeof( Device ) == sizeof( VkDevice ), "handle and wrapper have different size!" );
27689
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027690#ifndef VULKAN_HPP_NO_SMART_HANDLE
27691 class BufferDeleter
27692 {
27693 public:
27694 BufferDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27695 : m_device( device )
27696 , m_allocator( allocator )
27697 {}
27698
27699 void operator()( Buffer buffer )
27700 {
27701 m_device.destroyBuffer( buffer, m_allocator );
27702 }
27703
27704 private:
27705 Device m_device;
27706 Optional<const AllocationCallbacks> m_allocator;
27707 };
27708
27709 class BufferViewDeleter
27710 {
27711 public:
27712 BufferViewDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27713 : m_device( device )
27714 , m_allocator( allocator )
27715 {}
27716
27717 void operator()( BufferView bufferView )
27718 {
27719 m_device.destroyBufferView( bufferView, m_allocator );
27720 }
27721
27722 private:
27723 Device m_device;
27724 Optional<const AllocationCallbacks> m_allocator;
27725 };
27726
27727 class CommandBufferDeleter
27728 {
27729 public:
27730 CommandBufferDeleter( Device device = Device(), CommandPool commandPool = CommandPool() )
27731 : m_device( device )
27732 , m_commandPool( commandPool )
27733 {}
27734
27735 void operator()( CommandBuffer commandBuffer )
27736 {
27737 m_device.freeCommandBuffers( m_commandPool, commandBuffer );
27738 }
27739
27740 private:
27741 Device m_device;
27742 CommandPool m_commandPool;
27743 };
27744
27745 class CommandPoolDeleter
27746 {
27747 public:
27748 CommandPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27749 : m_device( device )
27750 , m_allocator( allocator )
27751 {}
27752
27753 void operator()( CommandPool commandPool )
27754 {
27755 m_device.destroyCommandPool( commandPool, m_allocator );
27756 }
27757
27758 private:
27759 Device m_device;
27760 Optional<const AllocationCallbacks> m_allocator;
27761 };
27762
27763 class DescriptorPoolDeleter
27764 {
27765 public:
27766 DescriptorPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27767 : m_device( device )
27768 , m_allocator( allocator )
27769 {}
27770
27771 void operator()( DescriptorPool descriptorPool )
27772 {
27773 m_device.destroyDescriptorPool( descriptorPool, m_allocator );
27774 }
27775
27776 private:
27777 Device m_device;
27778 Optional<const AllocationCallbacks> m_allocator;
27779 };
27780
27781 class DescriptorSetDeleter
27782 {
27783 public:
27784 DescriptorSetDeleter( Device device = Device(), DescriptorPool descriptorPool = DescriptorPool() )
27785 : m_device( device )
27786 , m_descriptorPool( descriptorPool )
27787 {}
27788
27789 void operator()( DescriptorSet descriptorSet )
27790 {
27791 m_device.freeDescriptorSets( m_descriptorPool, descriptorSet );
27792 }
27793
27794 private:
27795 Device m_device;
27796 DescriptorPool m_descriptorPool;
27797 };
27798
27799 class DescriptorSetLayoutDeleter
27800 {
27801 public:
27802 DescriptorSetLayoutDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27803 : m_device( device )
27804 , m_allocator( allocator )
27805 {}
27806
27807 void operator()( DescriptorSetLayout descriptorSetLayout )
27808 {
27809 m_device.destroyDescriptorSetLayout( descriptorSetLayout, m_allocator );
27810 }
27811
27812 private:
27813 Device m_device;
27814 Optional<const AllocationCallbacks> m_allocator;
27815 };
27816
Mark Young0f183a82017-02-28 09:58:04 -070027817 class DescriptorUpdateTemplateKHRDeleter
27818 {
27819 public:
27820 DescriptorUpdateTemplateKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27821 : m_device( device )
27822 , m_allocator( allocator )
27823 {}
27824
27825 void operator()( DescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR )
27826 {
27827 m_device.destroyDescriptorUpdateTemplateKHR( descriptorUpdateTemplateKHR, m_allocator );
27828 }
27829
27830 private:
27831 Device m_device;
27832 Optional<const AllocationCallbacks> m_allocator;
27833 };
27834
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027835 class DeviceMemoryDeleter
27836 {
27837 public:
27838 DeviceMemoryDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27839 : m_device( device )
27840 , m_allocator( allocator )
27841 {}
27842
27843 void operator()( DeviceMemory deviceMemory )
27844 {
27845 m_device.freeMemory( deviceMemory, m_allocator );
27846 }
27847
27848 private:
27849 Device m_device;
27850 Optional<const AllocationCallbacks> m_allocator;
27851 };
27852
27853 class EventDeleter
27854 {
27855 public:
27856 EventDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27857 : m_device( device )
27858 , m_allocator( allocator )
27859 {}
27860
27861 void operator()( Event event )
27862 {
27863 m_device.destroyEvent( event, m_allocator );
27864 }
27865
27866 private:
27867 Device m_device;
27868 Optional<const AllocationCallbacks> m_allocator;
27869 };
27870
27871 class FenceDeleter
27872 {
27873 public:
27874 FenceDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27875 : m_device( device )
27876 , m_allocator( allocator )
27877 {}
27878
27879 void operator()( Fence fence )
27880 {
27881 m_device.destroyFence( fence, m_allocator );
27882 }
27883
27884 private:
27885 Device m_device;
27886 Optional<const AllocationCallbacks> m_allocator;
27887 };
27888
27889 class FramebufferDeleter
27890 {
27891 public:
27892 FramebufferDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27893 : m_device( device )
27894 , m_allocator( allocator )
27895 {}
27896
27897 void operator()( Framebuffer framebuffer )
27898 {
27899 m_device.destroyFramebuffer( framebuffer, m_allocator );
27900 }
27901
27902 private:
27903 Device m_device;
27904 Optional<const AllocationCallbacks> m_allocator;
27905 };
27906
27907 class ImageDeleter
27908 {
27909 public:
27910 ImageDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27911 : m_device( device )
27912 , m_allocator( allocator )
27913 {}
27914
27915 void operator()( Image image )
27916 {
27917 m_device.destroyImage( image, m_allocator );
27918 }
27919
27920 private:
27921 Device m_device;
27922 Optional<const AllocationCallbacks> m_allocator;
27923 };
27924
27925 class ImageViewDeleter
27926 {
27927 public:
27928 ImageViewDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27929 : m_device( device )
27930 , m_allocator( allocator )
27931 {}
27932
27933 void operator()( ImageView imageView )
27934 {
27935 m_device.destroyImageView( imageView, m_allocator );
27936 }
27937
27938 private:
27939 Device m_device;
27940 Optional<const AllocationCallbacks> m_allocator;
27941 };
27942
27943 class IndirectCommandsLayoutNVXDeleter
27944 {
27945 public:
27946 IndirectCommandsLayoutNVXDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27947 : m_device( device )
27948 , m_allocator( allocator )
27949 {}
27950
27951 void operator()( IndirectCommandsLayoutNVX indirectCommandsLayoutNVX )
27952 {
27953 m_device.destroyIndirectCommandsLayoutNVX( indirectCommandsLayoutNVX, m_allocator );
27954 }
27955
27956 private:
27957 Device m_device;
27958 Optional<const AllocationCallbacks> m_allocator;
27959 };
27960
27961 class ObjectTableNVXDeleter
27962 {
27963 public:
27964 ObjectTableNVXDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27965 : m_device( device )
27966 , m_allocator( allocator )
27967 {}
27968
27969 void operator()( ObjectTableNVX objectTableNVX )
27970 {
27971 m_device.destroyObjectTableNVX( objectTableNVX, m_allocator );
27972 }
27973
27974 private:
27975 Device m_device;
27976 Optional<const AllocationCallbacks> m_allocator;
27977 };
27978
27979 class PipelineDeleter
27980 {
27981 public:
27982 PipelineDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27983 : m_device( device )
27984 , m_allocator( allocator )
27985 {}
27986
27987 void operator()( Pipeline pipeline )
27988 {
27989 m_device.destroyPipeline( pipeline, m_allocator );
27990 }
27991
27992 private:
27993 Device m_device;
27994 Optional<const AllocationCallbacks> m_allocator;
27995 };
27996
27997 class PipelineCacheDeleter
27998 {
27999 public:
28000 PipelineCacheDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28001 : m_device( device )
28002 , m_allocator( allocator )
28003 {}
28004
28005 void operator()( PipelineCache pipelineCache )
28006 {
28007 m_device.destroyPipelineCache( pipelineCache, m_allocator );
28008 }
28009
28010 private:
28011 Device m_device;
28012 Optional<const AllocationCallbacks> m_allocator;
28013 };
28014
28015 class PipelineLayoutDeleter
28016 {
28017 public:
28018 PipelineLayoutDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28019 : m_device( device )
28020 , m_allocator( allocator )
28021 {}
28022
28023 void operator()( PipelineLayout pipelineLayout )
28024 {
28025 m_device.destroyPipelineLayout( pipelineLayout, m_allocator );
28026 }
28027
28028 private:
28029 Device m_device;
28030 Optional<const AllocationCallbacks> m_allocator;
28031 };
28032
28033 class QueryPoolDeleter
28034 {
28035 public:
28036 QueryPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28037 : m_device( device )
28038 , m_allocator( allocator )
28039 {}
28040
28041 void operator()( QueryPool queryPool )
28042 {
28043 m_device.destroyQueryPool( queryPool, m_allocator );
28044 }
28045
28046 private:
28047 Device m_device;
28048 Optional<const AllocationCallbacks> m_allocator;
28049 };
28050
28051 class RenderPassDeleter
28052 {
28053 public:
28054 RenderPassDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28055 : m_device( device )
28056 , m_allocator( allocator )
28057 {}
28058
28059 void operator()( RenderPass renderPass )
28060 {
28061 m_device.destroyRenderPass( renderPass, m_allocator );
28062 }
28063
28064 private:
28065 Device m_device;
28066 Optional<const AllocationCallbacks> m_allocator;
28067 };
28068
28069 class SamplerDeleter
28070 {
28071 public:
28072 SamplerDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28073 : m_device( device )
28074 , m_allocator( allocator )
28075 {}
28076
28077 void operator()( Sampler sampler )
28078 {
28079 m_device.destroySampler( sampler, m_allocator );
28080 }
28081
28082 private:
28083 Device m_device;
28084 Optional<const AllocationCallbacks> m_allocator;
28085 };
28086
Lenny Komowb79f04a2017-09-18 17:07:00 -060028087 class SamplerYcbcrConversionKHRDeleter
28088 {
28089 public:
28090 SamplerYcbcrConversionKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28091 : m_device( device )
28092 , m_allocator( allocator )
28093 {}
28094
28095 void operator()( SamplerYcbcrConversionKHR samplerYcbcrConversionKHR )
28096 {
28097 m_device.destroySamplerYcbcrConversionKHR( samplerYcbcrConversionKHR, m_allocator );
28098 }
28099
28100 private:
28101 Device m_device;
28102 Optional<const AllocationCallbacks> m_allocator;
28103 };
28104
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028105 class SemaphoreDeleter
28106 {
28107 public:
28108 SemaphoreDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28109 : m_device( device )
28110 , m_allocator( allocator )
28111 {}
28112
28113 void operator()( Semaphore semaphore )
28114 {
28115 m_device.destroySemaphore( semaphore, m_allocator );
28116 }
28117
28118 private:
28119 Device m_device;
28120 Optional<const AllocationCallbacks> m_allocator;
28121 };
28122
28123 class ShaderModuleDeleter
28124 {
28125 public:
28126 ShaderModuleDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28127 : m_device( device )
28128 , m_allocator( allocator )
28129 {}
28130
28131 void operator()( ShaderModule shaderModule )
28132 {
28133 m_device.destroyShaderModule( shaderModule, m_allocator );
28134 }
28135
28136 private:
28137 Device m_device;
28138 Optional<const AllocationCallbacks> m_allocator;
28139 };
28140
28141 class SwapchainKHRDeleter
28142 {
28143 public:
28144 SwapchainKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28145 : m_device( device )
28146 , m_allocator( allocator )
28147 {}
28148
28149 void operator()( SwapchainKHR swapchainKHR )
28150 {
28151 m_device.destroySwapchainKHR( swapchainKHR, m_allocator );
28152 }
28153
28154 private:
28155 Device m_device;
28156 Optional<const AllocationCallbacks> m_allocator;
28157 };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060028158
28159 class ValidationCacheEXTDeleter
28160 {
28161 public:
28162 ValidationCacheEXTDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
28163 : m_device( device )
28164 , m_allocator( allocator )
28165 {}
28166
28167 void operator()( ValidationCacheEXT validationCacheEXT )
28168 {
28169 m_device.destroyValidationCacheEXT( validationCacheEXT, m_allocator );
28170 }
28171
28172 private:
28173 Device m_device;
28174 Optional<const AllocationCallbacks> m_allocator;
28175 };
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028176#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28177
28178 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const char* pName ) const
28179 {
28180 return vkGetDeviceProcAddr( m_device, pName );
28181 }
28182#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28183 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const std::string & name ) const
28184 {
28185 return vkGetDeviceProcAddr( m_device, name.c_str() );
28186 }
28187#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28188
28189 VULKAN_HPP_INLINE void Device::destroy( const AllocationCallbacks* pAllocator ) const
28190 {
28191 vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28192 }
28193#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28194 VULKAN_HPP_INLINE void Device::destroy( Optional<const AllocationCallbacks> allocator ) const
28195 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028196 vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028197 }
28198#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28199
28200 VULKAN_HPP_INLINE void Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue ) const
28201 {
28202 vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( pQueue ) );
28203 }
28204#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28205 VULKAN_HPP_INLINE Queue Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const
28206 {
28207 Queue queue;
28208 vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( &queue ) );
28209 return queue;
28210 }
28211#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28212
28213#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28214 VULKAN_HPP_INLINE Result Device::waitIdle() const
28215 {
28216 return static_cast<Result>( vkDeviceWaitIdle( m_device ) );
28217 }
28218#else
28219 VULKAN_HPP_INLINE ResultValueType<void>::type Device::waitIdle() const
28220 {
28221 Result result = static_cast<Result>( vkDeviceWaitIdle( m_device ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028222 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::waitIdle" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028223 }
28224#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28225
28226 VULKAN_HPP_INLINE Result Device::allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory ) const
28227 {
28228 return static_cast<Result>( vkAllocateMemory( m_device, reinterpret_cast<const VkMemoryAllocateInfo*>( pAllocateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDeviceMemory*>( pMemory ) ) );
28229 }
28230#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28231 VULKAN_HPP_INLINE ResultValueType<DeviceMemory>::type Device::allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator ) const
28232 {
28233 DeviceMemory memory;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028234 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 -060028235 return createResultValue( result, memory, "VULKAN_HPP_NAMESPACE::Device::allocateMemory" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028236 }
28237#ifndef VULKAN_HPP_NO_SMART_HANDLE
28238 VULKAN_HPP_INLINE UniqueDeviceMemory Device::allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator ) const
28239 {
28240 DeviceMemoryDeleter deleter( *this, allocator );
28241 return UniqueDeviceMemory( allocateMemory( allocateInfo, allocator ), deleter );
28242 }
28243#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28244#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28245
28246 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator ) const
28247 {
28248 vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28249 }
28250#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28251 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator ) const
28252 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028253 vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028254 }
28255#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28256
28257 VULKAN_HPP_INLINE Result Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData ) const
28258 {
28259 return static_cast<Result>( vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), ppData ) );
28260 }
28261#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28262 VULKAN_HPP_INLINE ResultValueType<void*>::type Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags ) const
28263 {
28264 void* pData;
28265 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 -060028266 return createResultValue( result, pData, "VULKAN_HPP_NAMESPACE::Device::mapMemory" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028267 }
28268#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28269
28270 VULKAN_HPP_INLINE void Device::unmapMemory( DeviceMemory memory ) const
28271 {
28272 vkUnmapMemory( m_device, static_cast<VkDeviceMemory>( memory ) );
28273 }
28274
28275 VULKAN_HPP_INLINE Result Device::flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const
28276 {
28277 return static_cast<Result>( vkFlushMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
28278 }
28279#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28280 VULKAN_HPP_INLINE ResultValueType<void>::type Device::flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const
28281 {
28282 Result result = static_cast<Result>( vkFlushMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028283 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::flushMappedMemoryRanges" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028284 }
28285#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28286
28287 VULKAN_HPP_INLINE Result Device::invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const
28288 {
28289 return static_cast<Result>( vkInvalidateMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
28290 }
28291#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28292 VULKAN_HPP_INLINE ResultValueType<void>::type Device::invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const
28293 {
28294 Result result = static_cast<Result>( vkInvalidateMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028295 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::invalidateMappedMemoryRanges" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028296 }
28297#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28298
28299 VULKAN_HPP_INLINE void Device::getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes ) const
28300 {
28301 vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), pCommittedMemoryInBytes );
28302 }
28303#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28304 VULKAN_HPP_INLINE DeviceSize Device::getMemoryCommitment( DeviceMemory memory ) const
28305 {
28306 DeviceSize committedMemoryInBytes;
28307 vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), &committedMemoryInBytes );
28308 return committedMemoryInBytes;
28309 }
28310#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28311
28312 VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements ) const
28313 {
28314 vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
28315 }
28316#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28317 VULKAN_HPP_INLINE MemoryRequirements Device::getBufferMemoryRequirements( Buffer buffer ) const
28318 {
28319 MemoryRequirements memoryRequirements;
28320 vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
28321 return memoryRequirements;
28322 }
28323#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28324
28325#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28326 VULKAN_HPP_INLINE Result Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const
28327 {
28328 return static_cast<Result>( vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
28329 }
28330#else
28331 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const
28332 {
28333 Result result = static_cast<Result>( vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028334 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::bindBufferMemory" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028335 }
28336#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28337
28338 VULKAN_HPP_INLINE void Device::getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements ) const
28339 {
28340 vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
28341 }
28342#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28343 VULKAN_HPP_INLINE MemoryRequirements Device::getImageMemoryRequirements( Image image ) const
28344 {
28345 MemoryRequirements memoryRequirements;
28346 vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
28347 return memoryRequirements;
28348 }
28349#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28350
28351#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28352 VULKAN_HPP_INLINE Result Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const
28353 {
28354 return static_cast<Result>( vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
28355 }
28356#else
28357 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const
28358 {
28359 Result result = static_cast<Result>( vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028360 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::bindImageMemory" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028361 }
28362#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28363
28364 VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements ) const
28365 {
28366 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), pSparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( pSparseMemoryRequirements ) );
28367 }
28368#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28369 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060028370 VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements,Allocator> Device::getImageSparseMemoryRequirements( Image image ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028371 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060028372 std::vector<SparseImageMemoryRequirements,Allocator> sparseMemoryRequirements;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028373 uint32_t sparseMemoryRequirementCount;
28374 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, nullptr );
28375 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
28376 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( sparseMemoryRequirements.data() ) );
28377 return sparseMemoryRequirements;
28378 }
28379#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28380
28381 VULKAN_HPP_INLINE Result Device::createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
28382 {
28383 return static_cast<Result>( vkCreateFence( m_device, reinterpret_cast<const VkFenceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
28384 }
28385#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28386 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28387 {
28388 Fence fence;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028389 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 -060028390 return createResultValue( result, fence, "VULKAN_HPP_NAMESPACE::Device::createFence" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028391 }
28392#ifndef VULKAN_HPP_NO_SMART_HANDLE
28393 VULKAN_HPP_INLINE UniqueFence Device::createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28394 {
28395 FenceDeleter deleter( *this, allocator );
28396 return UniqueFence( createFence( createInfo, allocator ), deleter );
28397 }
28398#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28399#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28400
28401 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, const AllocationCallbacks* pAllocator ) const
28402 {
28403 vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28404 }
28405#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28406 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator ) const
28407 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028408 vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028409 }
28410#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28411
28412 VULKAN_HPP_INLINE Result Device::resetFences( uint32_t fenceCount, const Fence* pFences ) const
28413 {
28414 return static_cast<Result>( vkResetFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ) ) );
28415 }
28416#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28417 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetFences( ArrayProxy<const Fence> fences ) const
28418 {
28419 Result result = static_cast<Result>( vkResetFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028420 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::resetFences" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028421 }
28422#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28423
28424#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28425 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence ) const
28426 {
28427 return static_cast<Result>( vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
28428 }
28429#else
28430 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence ) const
28431 {
28432 Result result = static_cast<Result>( vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028433 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::getFenceStatus", { Result::eSuccess, Result::eNotReady } );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028434 }
28435#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28436
28437 VULKAN_HPP_INLINE Result Device::waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout ) const
28438 {
28439 return static_cast<Result>( vkWaitForFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ), waitAll, timeout ) );
28440 }
28441#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28442 VULKAN_HPP_INLINE Result Device::waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout ) const
28443 {
28444 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 -060028445 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::waitForFences", { Result::eSuccess, Result::eTimeout } );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028446 }
28447#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28448
28449 VULKAN_HPP_INLINE Result Device::createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore ) const
28450 {
28451 return static_cast<Result>( vkCreateSemaphore( m_device, reinterpret_cast<const VkSemaphoreCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSemaphore*>( pSemaphore ) ) );
28452 }
28453#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28454 VULKAN_HPP_INLINE ResultValueType<Semaphore>::type Device::createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28455 {
28456 Semaphore semaphore;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028457 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 -060028458 return createResultValue( result, semaphore, "VULKAN_HPP_NAMESPACE::Device::createSemaphore" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028459 }
28460#ifndef VULKAN_HPP_NO_SMART_HANDLE
28461 VULKAN_HPP_INLINE UniqueSemaphore Device::createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28462 {
28463 SemaphoreDeleter deleter( *this, allocator );
28464 return UniqueSemaphore( createSemaphore( createInfo, allocator ), deleter );
28465 }
28466#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28467#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28468
28469 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator ) const
28470 {
28471 vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28472 }
28473#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28474 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator ) const
28475 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028476 vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028477 }
28478#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28479
28480 VULKAN_HPP_INLINE Result Device::createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent ) const
28481 {
28482 return static_cast<Result>( vkCreateEvent( m_device, reinterpret_cast<const VkEventCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkEvent*>( pEvent ) ) );
28483 }
28484#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28485 VULKAN_HPP_INLINE ResultValueType<Event>::type Device::createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28486 {
28487 Event event;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028488 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 -060028489 return createResultValue( result, event, "VULKAN_HPP_NAMESPACE::Device::createEvent" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028490 }
28491#ifndef VULKAN_HPP_NO_SMART_HANDLE
28492 VULKAN_HPP_INLINE UniqueEvent Device::createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28493 {
28494 EventDeleter deleter( *this, allocator );
28495 return UniqueEvent( createEvent( createInfo, allocator ), deleter );
28496 }
28497#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28498#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28499
28500 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, const AllocationCallbacks* pAllocator ) const
28501 {
28502 vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28503 }
28504#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28505 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, Optional<const AllocationCallbacks> allocator ) const
28506 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028507 vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028508 }
28509#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28510
28511#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28512 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event ) const
28513 {
28514 return static_cast<Result>( vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
28515 }
28516#else
28517 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event ) const
28518 {
28519 Result result = static_cast<Result>( vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028520 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::getEventStatus", { Result::eEventSet, Result::eEventReset } );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028521 }
28522#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28523
28524#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28525 VULKAN_HPP_INLINE Result Device::setEvent( Event event ) const
28526 {
28527 return static_cast<Result>( vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
28528 }
28529#else
28530 VULKAN_HPP_INLINE ResultValueType<void>::type Device::setEvent( Event event ) const
28531 {
28532 Result result = static_cast<Result>( vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028533 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::setEvent" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028534 }
28535#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28536
28537#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28538 VULKAN_HPP_INLINE Result Device::resetEvent( Event event ) const
28539 {
28540 return static_cast<Result>( vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
28541 }
28542#else
28543 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetEvent( Event event ) const
28544 {
28545 Result result = static_cast<Result>( vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028546 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::resetEvent" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028547 }
28548#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28549
28550 VULKAN_HPP_INLINE Result Device::createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool ) const
28551 {
28552 return static_cast<Result>( vkCreateQueryPool( m_device, reinterpret_cast<const VkQueryPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkQueryPool*>( pQueryPool ) ) );
28553 }
28554#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28555 VULKAN_HPP_INLINE ResultValueType<QueryPool>::type Device::createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28556 {
28557 QueryPool queryPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028558 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 -060028559 return createResultValue( result, queryPool, "VULKAN_HPP_NAMESPACE::Device::createQueryPool" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028560 }
28561#ifndef VULKAN_HPP_NO_SMART_HANDLE
28562 VULKAN_HPP_INLINE UniqueQueryPool Device::createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28563 {
28564 QueryPoolDeleter deleter( *this, allocator );
28565 return UniqueQueryPool( createQueryPool( createInfo, allocator ), deleter );
28566 }
28567#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28568#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28569
28570 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator ) const
28571 {
28572 vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28573 }
28574#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28575 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator ) const
28576 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028577 vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028578 }
28579#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28580
28581 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, DeviceSize stride, QueryResultFlags flags ) const
28582 {
28583 return static_cast<Result>( vkGetQueryPoolResults( m_device, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, dataSize, pData, stride, static_cast<VkQueryResultFlags>( flags ) ) );
28584 }
28585#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28586 template <typename T>
28587 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, ArrayProxy<T> data, DeviceSize stride, QueryResultFlags flags ) const
28588 {
28589 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 -060028590 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::getQueryPoolResults", { Result::eSuccess, Result::eNotReady } );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028591 }
28592#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28593
28594 VULKAN_HPP_INLINE Result Device::createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer ) const
28595 {
28596 return static_cast<Result>( vkCreateBuffer( m_device, reinterpret_cast<const VkBufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBuffer*>( pBuffer ) ) );
28597 }
28598#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28599 VULKAN_HPP_INLINE ResultValueType<Buffer>::type Device::createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28600 {
28601 Buffer buffer;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028602 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 -060028603 return createResultValue( result, buffer, "VULKAN_HPP_NAMESPACE::Device::createBuffer" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028604 }
28605#ifndef VULKAN_HPP_NO_SMART_HANDLE
28606 VULKAN_HPP_INLINE UniqueBuffer Device::createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28607 {
28608 BufferDeleter deleter( *this, allocator );
28609 return UniqueBuffer( createBuffer( createInfo, allocator ), deleter );
28610 }
28611#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28612#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28613
28614 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator ) const
28615 {
28616 vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28617 }
28618#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28619 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator ) const
28620 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028621 vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028622 }
28623#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28624
28625 VULKAN_HPP_INLINE Result Device::createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView ) const
28626 {
28627 return static_cast<Result>( vkCreateBufferView( m_device, reinterpret_cast<const VkBufferViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBufferView*>( pView ) ) );
28628 }
28629#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28630 VULKAN_HPP_INLINE ResultValueType<BufferView>::type Device::createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28631 {
28632 BufferView view;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028633 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 -060028634 return createResultValue( result, view, "VULKAN_HPP_NAMESPACE::Device::createBufferView" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028635 }
28636#ifndef VULKAN_HPP_NO_SMART_HANDLE
28637 VULKAN_HPP_INLINE UniqueBufferView Device::createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28638 {
28639 BufferViewDeleter deleter( *this, allocator );
28640 return UniqueBufferView( createBufferView( createInfo, allocator ), deleter );
28641 }
28642#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28643#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28644
28645 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator ) const
28646 {
28647 vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28648 }
28649#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28650 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator ) const
28651 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028652 vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028653 }
28654#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28655
28656 VULKAN_HPP_INLINE Result Device::createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage ) const
28657 {
28658 return static_cast<Result>( vkCreateImage( m_device, reinterpret_cast<const VkImageCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImage*>( pImage ) ) );
28659 }
28660#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28661 VULKAN_HPP_INLINE ResultValueType<Image>::type Device::createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28662 {
28663 Image image;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028664 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 -060028665 return createResultValue( result, image, "VULKAN_HPP_NAMESPACE::Device::createImage" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028666 }
28667#ifndef VULKAN_HPP_NO_SMART_HANDLE
28668 VULKAN_HPP_INLINE UniqueImage Device::createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28669 {
28670 ImageDeleter deleter( *this, allocator );
28671 return UniqueImage( createImage( createInfo, allocator ), deleter );
28672 }
28673#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28674#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28675
28676 VULKAN_HPP_INLINE void Device::destroyImage( Image image, const AllocationCallbacks* pAllocator ) const
28677 {
28678 vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28679 }
28680#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28681 VULKAN_HPP_INLINE void Device::destroyImage( Image image, Optional<const AllocationCallbacks> allocator ) const
28682 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028683 vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028684 }
28685#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28686
28687 VULKAN_HPP_INLINE void Device::getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout ) const
28688 {
28689 vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( pSubresource ), reinterpret_cast<VkSubresourceLayout*>( pLayout ) );
28690 }
28691#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28692 VULKAN_HPP_INLINE SubresourceLayout Device::getImageSubresourceLayout( Image image, const ImageSubresource & subresource ) const
28693 {
28694 SubresourceLayout layout;
28695 vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( &subresource ), reinterpret_cast<VkSubresourceLayout*>( &layout ) );
28696 return layout;
28697 }
28698#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28699
28700 VULKAN_HPP_INLINE Result Device::createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView ) const
28701 {
28702 return static_cast<Result>( vkCreateImageView( m_device, reinterpret_cast<const VkImageViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImageView*>( pView ) ) );
28703 }
28704#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28705 VULKAN_HPP_INLINE ResultValueType<ImageView>::type Device::createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28706 {
28707 ImageView view;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028708 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 -060028709 return createResultValue( result, view, "VULKAN_HPP_NAMESPACE::Device::createImageView" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028710 }
28711#ifndef VULKAN_HPP_NO_SMART_HANDLE
28712 VULKAN_HPP_INLINE UniqueImageView Device::createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28713 {
28714 ImageViewDeleter deleter( *this, allocator );
28715 return UniqueImageView( createImageView( createInfo, allocator ), deleter );
28716 }
28717#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28718#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28719
28720 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator ) const
28721 {
28722 vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28723 }
28724#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28725 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator ) const
28726 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028727 vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028728 }
28729#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28730
28731 VULKAN_HPP_INLINE Result Device::createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule ) const
28732 {
28733 return static_cast<Result>( vkCreateShaderModule( m_device, reinterpret_cast<const VkShaderModuleCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkShaderModule*>( pShaderModule ) ) );
28734 }
28735#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28736 VULKAN_HPP_INLINE ResultValueType<ShaderModule>::type Device::createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28737 {
28738 ShaderModule shaderModule;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028739 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 -060028740 return createResultValue( result, shaderModule, "VULKAN_HPP_NAMESPACE::Device::createShaderModule" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028741 }
28742#ifndef VULKAN_HPP_NO_SMART_HANDLE
28743 VULKAN_HPP_INLINE UniqueShaderModule Device::createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28744 {
28745 ShaderModuleDeleter deleter( *this, allocator );
28746 return UniqueShaderModule( createShaderModule( createInfo, allocator ), deleter );
28747 }
28748#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28749#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28750
28751 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator ) const
28752 {
28753 vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28754 }
28755#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28756 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator ) const
28757 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028758 vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028759 }
28760#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28761
28762 VULKAN_HPP_INLINE Result Device::createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache ) const
28763 {
28764 return static_cast<Result>( vkCreatePipelineCache( m_device, reinterpret_cast<const VkPipelineCacheCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineCache*>( pPipelineCache ) ) );
28765 }
28766#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28767 VULKAN_HPP_INLINE ResultValueType<PipelineCache>::type Device::createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28768 {
28769 PipelineCache pipelineCache;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028770 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 -060028771 return createResultValue( result, pipelineCache, "VULKAN_HPP_NAMESPACE::Device::createPipelineCache" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028772 }
28773#ifndef VULKAN_HPP_NO_SMART_HANDLE
28774 VULKAN_HPP_INLINE UniquePipelineCache Device::createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28775 {
28776 PipelineCacheDeleter deleter( *this, allocator );
28777 return UniquePipelineCache( createPipelineCache( createInfo, allocator ), deleter );
28778 }
28779#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28780#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28781
28782 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator ) const
28783 {
28784 vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28785 }
28786#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28787 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator ) const
28788 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028789 vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028790 }
28791#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28792
28793 VULKAN_HPP_INLINE Result Device::getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData ) const
28794 {
28795 return static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), pDataSize, pData ) );
28796 }
28797#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28798 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060028799 VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getPipelineCacheData( PipelineCache pipelineCache ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028800 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060028801 std::vector<uint8_t,Allocator> data;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028802 size_t dataSize;
28803 Result result;
28804 do
28805 {
28806 result = static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, nullptr ) );
28807 if ( ( result == Result::eSuccess ) && dataSize )
28808 {
28809 data.resize( dataSize );
28810 result = static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, reinterpret_cast<void*>( data.data() ) ) );
28811 }
28812 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028813 assert( dataSize <= data.size() );
28814 data.resize( dataSize );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060028815 return createResultValue( result, data, "VULKAN_HPP_NAMESPACE::Device::getPipelineCacheData" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028816 }
28817#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28818
28819 VULKAN_HPP_INLINE Result Device::mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches ) const
28820 {
28821 return static_cast<Result>( vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCacheCount, reinterpret_cast<const VkPipelineCache*>( pSrcCaches ) ) );
28822 }
28823#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28824 VULKAN_HPP_INLINE ResultValueType<void>::type Device::mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches ) const
28825 {
28826 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 -060028827 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::mergePipelineCaches" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028828 }
28829#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28830
28831 VULKAN_HPP_INLINE Result Device::createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const
28832 {
28833 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 ) ) );
28834 }
28835#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28836 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060028837 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028838 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060028839 std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028840 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 -060028841 return createResultValue( result, pipelines, "VULKAN_HPP_NAMESPACE::Device::createGraphicsPipelines" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028842 }
28843 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28844 {
28845 Pipeline pipeline;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028846 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 -060028847 return createResultValue( result, pipeline, "VULKAN_HPP_NAMESPACE::Device::createGraphicsPipeline" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028848 }
28849#ifndef VULKAN_HPP_NO_SMART_HANDLE
28850 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060028851 VULKAN_HPP_INLINE std::vector<UniquePipeline> Device::createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028852 {
28853 PipelineDeleter deleter( *this, allocator );
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060028854 std::vector<Pipeline,Allocator> pipelines = createGraphicsPipelines( pipelineCache, createInfos, allocator );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028855 std::vector<UniquePipeline> uniquePipelines;
28856 uniquePipelines.reserve( pipelines.size() );
28857 for ( auto pipeline : pipelines )
28858 {
28859 uniquePipelines.push_back( UniquePipeline( pipeline, deleter ) );
28860 }
28861 return uniquePipelines;
28862 }
28863 VULKAN_HPP_INLINE UniquePipeline Device::createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28864 {
28865 PipelineDeleter deleter( *this, allocator );
28866 return UniquePipeline( createGraphicsPipeline( pipelineCache, createInfo, allocator ), deleter );
28867 }
28868#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28869#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28870
28871 VULKAN_HPP_INLINE Result Device::createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const
28872 {
28873 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 ) ) );
28874 }
28875#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28876 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060028877 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028878 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060028879 std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028880 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 -060028881 return createResultValue( result, pipelines, "VULKAN_HPP_NAMESPACE::Device::createComputePipelines" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028882 }
28883 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28884 {
28885 Pipeline pipeline;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028886 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 -060028887 return createResultValue( result, pipeline, "VULKAN_HPP_NAMESPACE::Device::createComputePipeline" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028888 }
28889#ifndef VULKAN_HPP_NO_SMART_HANDLE
28890 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060028891 VULKAN_HPP_INLINE std::vector<UniquePipeline> Device::createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028892 {
28893 PipelineDeleter deleter( *this, allocator );
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060028894 std::vector<Pipeline,Allocator> pipelines = createComputePipelines( pipelineCache, createInfos, allocator );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028895 std::vector<UniquePipeline> uniquePipelines;
28896 uniquePipelines.reserve( pipelines.size() );
28897 for ( auto pipeline : pipelines )
28898 {
28899 uniquePipelines.push_back( UniquePipeline( pipeline, deleter ) );
28900 }
28901 return uniquePipelines;
28902 }
28903 VULKAN_HPP_INLINE UniquePipeline Device::createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28904 {
28905 PipelineDeleter deleter( *this, allocator );
28906 return UniquePipeline( createComputePipeline( pipelineCache, createInfo, allocator ), deleter );
28907 }
28908#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28909#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28910
28911 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator ) const
28912 {
28913 vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28914 }
28915#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28916 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator ) const
28917 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028918 vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028919 }
28920#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28921
28922 VULKAN_HPP_INLINE Result Device::createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout ) const
28923 {
28924 return static_cast<Result>( vkCreatePipelineLayout( m_device, reinterpret_cast<const VkPipelineLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineLayout*>( pPipelineLayout ) ) );
28925 }
28926#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28927 VULKAN_HPP_INLINE ResultValueType<PipelineLayout>::type Device::createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28928 {
28929 PipelineLayout pipelineLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028930 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 -060028931 return createResultValue( result, pipelineLayout, "VULKAN_HPP_NAMESPACE::Device::createPipelineLayout" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028932 }
28933#ifndef VULKAN_HPP_NO_SMART_HANDLE
28934 VULKAN_HPP_INLINE UniquePipelineLayout Device::createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28935 {
28936 PipelineLayoutDeleter deleter( *this, allocator );
28937 return UniquePipelineLayout( createPipelineLayout( createInfo, allocator ), deleter );
28938 }
28939#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28940#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28941
28942 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator ) const
28943 {
28944 vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28945 }
28946#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28947 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator ) const
28948 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028949 vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028950 }
28951#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28952
28953 VULKAN_HPP_INLINE Result Device::createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler ) const
28954 {
28955 return static_cast<Result>( vkCreateSampler( m_device, reinterpret_cast<const VkSamplerCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSampler*>( pSampler ) ) );
28956 }
28957#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28958 VULKAN_HPP_INLINE ResultValueType<Sampler>::type Device::createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28959 {
28960 Sampler sampler;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028961 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 -060028962 return createResultValue( result, sampler, "VULKAN_HPP_NAMESPACE::Device::createSampler" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028963 }
28964#ifndef VULKAN_HPP_NO_SMART_HANDLE
28965 VULKAN_HPP_INLINE UniqueSampler Device::createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28966 {
28967 SamplerDeleter deleter( *this, allocator );
28968 return UniqueSampler( createSampler( createInfo, allocator ), deleter );
28969 }
28970#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28971#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28972
28973 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator ) const
28974 {
28975 vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28976 }
28977#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28978 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator ) const
28979 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028980 vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028981 }
28982#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28983
28984 VULKAN_HPP_INLINE Result Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout ) const
28985 {
28986 return static_cast<Result>( vkCreateDescriptorSetLayout( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorSetLayout*>( pSetLayout ) ) );
28987 }
28988#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28989 VULKAN_HPP_INLINE ResultValueType<DescriptorSetLayout>::type Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28990 {
28991 DescriptorSetLayout setLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028992 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 -060028993 return createResultValue( result, setLayout, "VULKAN_HPP_NAMESPACE::Device::createDescriptorSetLayout" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028994 }
28995#ifndef VULKAN_HPP_NO_SMART_HANDLE
28996 VULKAN_HPP_INLINE UniqueDescriptorSetLayout Device::createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28997 {
28998 DescriptorSetLayoutDeleter deleter( *this, allocator );
28999 return UniqueDescriptorSetLayout( createDescriptorSetLayout( createInfo, allocator ), deleter );
29000 }
29001#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29002#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29003
29004 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator ) const
29005 {
29006 vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29007 }
29008#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29009 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator ) const
29010 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029011 vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029012 }
29013#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29014
29015 VULKAN_HPP_INLINE Result Device::createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool ) const
29016 {
29017 return static_cast<Result>( vkCreateDescriptorPool( m_device, reinterpret_cast<const VkDescriptorPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorPool*>( pDescriptorPool ) ) );
29018 }
29019#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29020 VULKAN_HPP_INLINE ResultValueType<DescriptorPool>::type Device::createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29021 {
29022 DescriptorPool descriptorPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029023 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 -060029024 return createResultValue( result, descriptorPool, "VULKAN_HPP_NAMESPACE::Device::createDescriptorPool" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029025 }
29026#ifndef VULKAN_HPP_NO_SMART_HANDLE
29027 VULKAN_HPP_INLINE UniqueDescriptorPool Device::createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29028 {
29029 DescriptorPoolDeleter deleter( *this, allocator );
29030 return UniqueDescriptorPool( createDescriptorPool( createInfo, allocator ), deleter );
29031 }
29032#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29033#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29034
29035 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator ) const
29036 {
29037 vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29038 }
29039#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29040 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator ) const
29041 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029042 vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029043 }
29044#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29045
29046#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
29047 VULKAN_HPP_INLINE Result Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const
29048 {
29049 return static_cast<Result>( vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
29050 }
29051#else
29052 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const
29053 {
29054 Result result = static_cast<Result>( vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029055 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::resetDescriptorPool" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029056 }
29057#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29058
29059 VULKAN_HPP_INLINE Result Device::allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets ) const
29060 {
29061 return static_cast<Result>( vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkDescriptorSet*>( pDescriptorSets ) ) );
29062 }
29063#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29064 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029065 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type Device::allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029066 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029067 std::vector<DescriptorSet,Allocator> descriptorSets( allocateInfo.descriptorSetCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029068 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 -060029069 return createResultValue( result, descriptorSets, "VULKAN_HPP_NAMESPACE::Device::allocateDescriptorSets" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029070 }
29071#ifndef VULKAN_HPP_NO_SMART_HANDLE
29072 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029073 VULKAN_HPP_INLINE std::vector<UniqueDescriptorSet> Device::allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029074 {
29075 DescriptorSetDeleter deleter( *this, allocateInfo.descriptorPool );
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029076 std::vector<DescriptorSet,Allocator> descriptorSets = allocateDescriptorSets( allocateInfo );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029077 std::vector<UniqueDescriptorSet> uniqueDescriptorSets;
29078 uniqueDescriptorSets.reserve( descriptorSets.size() );
29079 for ( auto descriptorSet : descriptorSets )
29080 {
29081 uniqueDescriptorSets.push_back( UniqueDescriptorSet( descriptorSet, deleter ) );
29082 }
29083 return uniqueDescriptorSets;
29084 }
29085#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29086#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29087
29088 VULKAN_HPP_INLINE Result Device::freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets ) const
29089 {
29090 return static_cast<Result>( vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ) ) );
29091 }
29092#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29093 VULKAN_HPP_INLINE ResultValueType<void>::type Device::freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets ) const
29094 {
29095 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 -060029096 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::freeDescriptorSets" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029097 }
29098#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29099
29100 VULKAN_HPP_INLINE void Device::updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies ) const
29101 {
29102 vkUpdateDescriptorSets( m_device, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ), descriptorCopyCount, reinterpret_cast<const VkCopyDescriptorSet*>( pDescriptorCopies ) );
29103 }
29104#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29105 VULKAN_HPP_INLINE void Device::updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies ) const
29106 {
29107 vkUpdateDescriptorSets( m_device, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ), descriptorCopies.size() , reinterpret_cast<const VkCopyDescriptorSet*>( descriptorCopies.data() ) );
29108 }
29109#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29110
29111 VULKAN_HPP_INLINE Result Device::createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer ) const
29112 {
29113 return static_cast<Result>( vkCreateFramebuffer( m_device, reinterpret_cast<const VkFramebufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFramebuffer*>( pFramebuffer ) ) );
29114 }
29115#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29116 VULKAN_HPP_INLINE ResultValueType<Framebuffer>::type Device::createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29117 {
29118 Framebuffer framebuffer;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029119 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 -060029120 return createResultValue( result, framebuffer, "VULKAN_HPP_NAMESPACE::Device::createFramebuffer" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029121 }
29122#ifndef VULKAN_HPP_NO_SMART_HANDLE
29123 VULKAN_HPP_INLINE UniqueFramebuffer Device::createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29124 {
29125 FramebufferDeleter deleter( *this, allocator );
29126 return UniqueFramebuffer( createFramebuffer( createInfo, allocator ), deleter );
29127 }
29128#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29129#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29130
29131 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator ) const
29132 {
29133 vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29134 }
29135#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29136 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator ) const
29137 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029138 vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029139 }
29140#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29141
29142 VULKAN_HPP_INLINE Result Device::createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass ) const
29143 {
29144 return static_cast<Result>( vkCreateRenderPass( m_device, reinterpret_cast<const VkRenderPassCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkRenderPass*>( pRenderPass ) ) );
29145 }
29146#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29147 VULKAN_HPP_INLINE ResultValueType<RenderPass>::type Device::createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29148 {
29149 RenderPass renderPass;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029150 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 -060029151 return createResultValue( result, renderPass, "VULKAN_HPP_NAMESPACE::Device::createRenderPass" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029152 }
29153#ifndef VULKAN_HPP_NO_SMART_HANDLE
29154 VULKAN_HPP_INLINE UniqueRenderPass Device::createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29155 {
29156 RenderPassDeleter deleter( *this, allocator );
29157 return UniqueRenderPass( createRenderPass( createInfo, allocator ), deleter );
29158 }
29159#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29160#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29161
29162 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator ) const
29163 {
29164 vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29165 }
29166#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29167 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator ) const
29168 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029169 vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029170 }
29171#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29172
29173 VULKAN_HPP_INLINE void Device::getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity ) const
29174 {
29175 vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( pGranularity ) );
29176 }
29177#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29178 VULKAN_HPP_INLINE Extent2D Device::getRenderAreaGranularity( RenderPass renderPass ) const
29179 {
29180 Extent2D granularity;
29181 vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( &granularity ) );
29182 return granularity;
29183 }
29184#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29185
29186 VULKAN_HPP_INLINE Result Device::createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool ) const
29187 {
29188 return static_cast<Result>( vkCreateCommandPool( m_device, reinterpret_cast<const VkCommandPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkCommandPool*>( pCommandPool ) ) );
29189 }
29190#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29191 VULKAN_HPP_INLINE ResultValueType<CommandPool>::type Device::createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29192 {
29193 CommandPool commandPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029194 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 -060029195 return createResultValue( result, commandPool, "VULKAN_HPP_NAMESPACE::Device::createCommandPool" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029196 }
29197#ifndef VULKAN_HPP_NO_SMART_HANDLE
29198 VULKAN_HPP_INLINE UniqueCommandPool Device::createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29199 {
29200 CommandPoolDeleter deleter( *this, allocator );
29201 return UniqueCommandPool( createCommandPool( createInfo, allocator ), deleter );
29202 }
29203#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29204#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29205
29206 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator ) const
29207 {
29208 vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29209 }
29210#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29211 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator ) const
29212 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029213 vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029214 }
29215#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29216
29217#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
29218 VULKAN_HPP_INLINE Result Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const
29219 {
29220 return static_cast<Result>( vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
29221 }
29222#else
29223 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const
29224 {
29225 Result result = static_cast<Result>( vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029226 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::resetCommandPool" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029227 }
29228#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29229
29230 VULKAN_HPP_INLINE Result Device::allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers ) const
29231 {
29232 return static_cast<Result>( vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkCommandBuffer*>( pCommandBuffers ) ) );
29233 }
29234#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29235 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029236 VULKAN_HPP_INLINE typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type Device::allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029237 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029238 std::vector<CommandBuffer,Allocator> commandBuffers( allocateInfo.commandBufferCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029239 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 -060029240 return createResultValue( result, commandBuffers, "VULKAN_HPP_NAMESPACE::Device::allocateCommandBuffers" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029241 }
29242#ifndef VULKAN_HPP_NO_SMART_HANDLE
29243 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029244 VULKAN_HPP_INLINE std::vector<UniqueCommandBuffer> Device::allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029245 {
29246 CommandBufferDeleter deleter( *this, allocateInfo.commandPool );
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029247 std::vector<CommandBuffer,Allocator> commandBuffers = allocateCommandBuffers( allocateInfo );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029248 std::vector<UniqueCommandBuffer> uniqueCommandBuffers;
29249 uniqueCommandBuffers.reserve( commandBuffers.size() );
29250 for ( auto commandBuffer : commandBuffers )
29251 {
29252 uniqueCommandBuffers.push_back( UniqueCommandBuffer( commandBuffer, deleter ) );
29253 }
29254 return uniqueCommandBuffers;
29255 }
29256#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29257#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29258
29259 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const
29260 {
29261 vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
29262 }
29263#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29264 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers ) const
29265 {
29266 vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
29267 }
29268#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29269
29270 VULKAN_HPP_INLINE Result Device::createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains ) const
29271 {
29272 return static_cast<Result>( vkCreateSharedSwapchainsKHR( m_device, swapchainCount, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfos ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchains ) ) );
29273 }
29274#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29275 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029276 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type Device::createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029277 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029278 std::vector<SwapchainKHR,Allocator> swapchains( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029279 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 -060029280 return createResultValue( result, swapchains, "VULKAN_HPP_NAMESPACE::Device::createSharedSwapchainsKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029281 }
29282 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29283 {
29284 SwapchainKHR swapchain;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029285 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 -060029286 return createResultValue( result, swapchain, "VULKAN_HPP_NAMESPACE::Device::createSharedSwapchainKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029287 }
29288#ifndef VULKAN_HPP_NO_SMART_HANDLE
29289 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029290 VULKAN_HPP_INLINE std::vector<UniqueSwapchainKHR> Device::createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029291 {
29292 SwapchainKHRDeleter deleter( *this, allocator );
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029293 std::vector<SwapchainKHR,Allocator> swapchainKHRs = createSharedSwapchainsKHR( createInfos, allocator );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029294 std::vector<UniqueSwapchainKHR> uniqueSwapchainKHRs;
29295 uniqueSwapchainKHRs.reserve( swapchainKHRs.size() );
29296 for ( auto swapchainKHR : swapchainKHRs )
29297 {
29298 uniqueSwapchainKHRs.push_back( UniqueSwapchainKHR( swapchainKHR, deleter ) );
29299 }
29300 return uniqueSwapchainKHRs;
29301 }
29302 VULKAN_HPP_INLINE UniqueSwapchainKHR Device::createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29303 {
29304 SwapchainKHRDeleter deleter( *this, allocator );
29305 return UniqueSwapchainKHR( createSharedSwapchainKHR( createInfo, allocator ), deleter );
29306 }
29307#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29308#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29309
29310 VULKAN_HPP_INLINE Result Device::createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain ) const
29311 {
29312 return static_cast<Result>( vkCreateSwapchainKHR( m_device, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchain ) ) );
29313 }
29314#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29315 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29316 {
29317 SwapchainKHR swapchain;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029318 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 -060029319 return createResultValue( result, swapchain, "VULKAN_HPP_NAMESPACE::Device::createSwapchainKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029320 }
29321#ifndef VULKAN_HPP_NO_SMART_HANDLE
29322 VULKAN_HPP_INLINE UniqueSwapchainKHR Device::createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29323 {
29324 SwapchainKHRDeleter deleter( *this, allocator );
29325 return UniqueSwapchainKHR( createSwapchainKHR( createInfo, allocator ), deleter );
29326 }
29327#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29328#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29329
29330 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator ) const
29331 {
29332 vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29333 }
29334#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29335 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator ) const
29336 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029337 vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029338 }
29339#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29340
29341 VULKAN_HPP_INLINE Result Device::getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages ) const
29342 {
29343 return static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), pSwapchainImageCount, reinterpret_cast<VkImage*>( pSwapchainImages ) ) );
29344 }
29345#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29346 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029347 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Image,Allocator>>::type Device::getSwapchainImagesKHR( SwapchainKHR swapchain ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029348 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029349 std::vector<Image,Allocator> swapchainImages;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029350 uint32_t swapchainImageCount;
29351 Result result;
29352 do
29353 {
29354 result = static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, nullptr ) );
29355 if ( ( result == Result::eSuccess ) && swapchainImageCount )
29356 {
29357 swapchainImages.resize( swapchainImageCount );
29358 result = static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, reinterpret_cast<VkImage*>( swapchainImages.data() ) ) );
29359 }
29360 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029361 assert( swapchainImageCount <= swapchainImages.size() );
29362 swapchainImages.resize( swapchainImageCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029363 return createResultValue( result, swapchainImages, "VULKAN_HPP_NAMESPACE::Device::getSwapchainImagesKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029364 }
29365#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29366
29367 VULKAN_HPP_INLINE Result Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex ) const
29368 {
29369 return static_cast<Result>( vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), pImageIndex ) );
29370 }
29371#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29372 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence ) const
29373 {
29374 uint32_t imageIndex;
29375 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 -060029376 return createResultValue( result, imageIndex, "VULKAN_HPP_NAMESPACE::Device::acquireNextImageKHR", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029377 }
29378#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29379
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029380 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT* pNameInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029381 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029382 return static_cast<Result>( vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>( pNameInfo ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029383 }
29384#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029385 VULKAN_HPP_INLINE ResultValueType<void>::type Device::debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT & nameInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029386 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029387 Result result = static_cast<Result>( vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>( &nameInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029388 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::debugMarkerSetObjectNameEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029389 }
29390#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29391
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029392 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT* pTagInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029393 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029394 return static_cast<Result>( vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>( pTagInfo ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029395 }
29396#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029397 VULKAN_HPP_INLINE ResultValueType<void>::type Device::debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT & tagInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029398 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029399 Result result = static_cast<Result>( vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>( &tagInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029400 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::debugMarkerSetObjectTagEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029401 }
29402#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29403
29404#ifdef VK_USE_PLATFORM_WIN32_KHR
29405 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const
29406 {
29407 return static_cast<Result>( vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), pHandle ) );
29408 }
29409#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29410 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType ) const
29411 {
29412 HANDLE handle;
29413 Result result = static_cast<Result>( vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), &handle ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029414 return createResultValue( result, handle, "VULKAN_HPP_NAMESPACE::Device::getMemoryWin32HandleNV" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029415 }
29416#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29417#endif /*VK_USE_PLATFORM_WIN32_KHR*/
29418
29419 VULKAN_HPP_INLINE Result Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const
29420 {
29421 return static_cast<Result>( vkCreateIndirectCommandsLayoutNVX( m_device, reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkIndirectCommandsLayoutNVX*>( pIndirectCommandsLayout ) ) );
29422 }
29423#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29424 VULKAN_HPP_INLINE ResultValueType<IndirectCommandsLayoutNVX>::type Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
29425 {
29426 IndirectCommandsLayoutNVX indirectCommandsLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029427 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 -060029428 return createResultValue( result, indirectCommandsLayout, "VULKAN_HPP_NAMESPACE::Device::createIndirectCommandsLayoutNVX" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029429 }
29430#ifndef VULKAN_HPP_NO_SMART_HANDLE
29431 VULKAN_HPP_INLINE UniqueIndirectCommandsLayoutNVX Device::createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
29432 {
29433 IndirectCommandsLayoutNVXDeleter deleter( *this, allocator );
29434 return UniqueIndirectCommandsLayoutNVX( createIndirectCommandsLayoutNVX( createInfo, allocator ), deleter );
29435 }
29436#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29437#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29438
29439 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator ) const
29440 {
29441 vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29442 }
29443#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29444 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator ) const
29445 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029446 vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029447 }
29448#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29449
29450 VULKAN_HPP_INLINE Result Device::createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable ) const
29451 {
29452 return static_cast<Result>( vkCreateObjectTableNVX( m_device, reinterpret_cast<const VkObjectTableCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkObjectTableNVX*>( pObjectTable ) ) );
29453 }
29454#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29455 VULKAN_HPP_INLINE ResultValueType<ObjectTableNVX>::type Device::createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
29456 {
29457 ObjectTableNVX objectTable;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029458 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 -060029459 return createResultValue( result, objectTable, "VULKAN_HPP_NAMESPACE::Device::createObjectTableNVX" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029460 }
29461#ifndef VULKAN_HPP_NO_SMART_HANDLE
29462 VULKAN_HPP_INLINE UniqueObjectTableNVX Device::createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
29463 {
29464 ObjectTableNVXDeleter deleter( *this, allocator );
29465 return UniqueObjectTableNVX( createObjectTableNVX( createInfo, allocator ), deleter );
29466 }
29467#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29468#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29469
29470 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator ) const
29471 {
29472 vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29473 }
29474#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29475 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator ) const
29476 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029477 vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029478 }
29479#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29480
29481 VULKAN_HPP_INLINE Result Device::registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const
29482 {
29483 return static_cast<Result>( vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectTableEntryNVX* const*>( ppObjectTableEntries ), pObjectIndices ) );
29484 }
29485#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29486 VULKAN_HPP_INLINE ResultValueType<void>::type Device::registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices ) const
29487 {
29488#ifdef VULKAN_HPP_NO_EXCEPTIONS
29489 assert( pObjectTableEntries.size() == objectIndices.size() );
29490#else
29491 if ( pObjectTableEntries.size() != objectIndices.size() )
29492 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029493 throw LogicError( "VULKAN_HPP_NAMESPACE::Device::registerObjectsNVX: pObjectTableEntries.size() != objectIndices.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029494 }
29495#endif // VULKAN_HPP_NO_EXCEPTIONS
29496 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 -060029497 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::registerObjectsNVX" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029498 }
29499#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29500
29501 VULKAN_HPP_INLINE Result Device::unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const
29502 {
29503 return static_cast<Result>( vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectEntryTypeNVX*>( pObjectEntryTypes ), pObjectIndices ) );
29504 }
29505#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29506 VULKAN_HPP_INLINE ResultValueType<void>::type Device::unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices ) const
29507 {
29508#ifdef VULKAN_HPP_NO_EXCEPTIONS
29509 assert( objectEntryTypes.size() == objectIndices.size() );
29510#else
29511 if ( objectEntryTypes.size() != objectIndices.size() )
29512 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029513 throw LogicError( "VULKAN_HPP_NAMESPACE::Device::unregisterObjectsNVX: objectEntryTypes.size() != objectIndices.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029514 }
29515#endif // VULKAN_HPP_NO_EXCEPTIONS
29516 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 -060029517 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::unregisterObjectsNVX" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029518 }
29519#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29520
29521 VULKAN_HPP_INLINE void Device::trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags ) const
29522 {
29523 vkTrimCommandPoolKHR( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolTrimFlagsKHR>( flags ) );
29524 }
29525
Mark Youngabc2d6e2017-07-07 07:59:56 -060029526#ifdef VK_USE_PLATFORM_WIN32_KHR
29527 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const
Mark Young0f183a82017-02-28 09:58:04 -070029528 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029529 return static_cast<Result>( vkGetMemoryWin32HandleKHR( m_device, reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR*>( pGetWin32HandleInfo ), pHandle ) );
Mark Young0f183a82017-02-28 09:58:04 -070029530 }
29531#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029532 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR & getWin32HandleInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029533 {
29534 HANDLE handle;
Mark Youngabc2d6e2017-07-07 07:59:56 -060029535 Result result = static_cast<Result>( vkGetMemoryWin32HandleKHR( m_device, reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR*>( &getWin32HandleInfo ), &handle ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029536 return createResultValue( result, handle, "VULKAN_HPP_NAMESPACE::Device::getMemoryWin32HandleKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029537 }
29538#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060029539#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070029540
Mark Youngabc2d6e2017-07-07 07:59:56 -060029541#ifdef VK_USE_PLATFORM_WIN32_KHR
29542 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle, MemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties ) const
Mark Young0f183a82017-02-28 09:58:04 -070029543 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029544 return static_cast<Result>( vkGetMemoryWin32HandlePropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHR*>( pMemoryWin32HandleProperties ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029545 }
29546#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029547 VULKAN_HPP_INLINE ResultValueType<MemoryWin32HandlePropertiesKHR>::type Device::getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle ) const
Mark Young0f183a82017-02-28 09:58:04 -070029548 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029549 MemoryWin32HandlePropertiesKHR memoryWin32HandleProperties;
29550 Result result = static_cast<Result>( vkGetMemoryWin32HandlePropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHR*>( &memoryWin32HandleProperties ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029551 return createResultValue( result, memoryWin32HandleProperties, "VULKAN_HPP_NAMESPACE::Device::getMemoryWin32HandlePropertiesKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029552 }
29553#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060029554#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070029555
Mark Youngabc2d6e2017-07-07 07:59:56 -060029556 VULKAN_HPP_INLINE Result Device::getMemoryFdKHR( const MemoryGetFdInfoKHR* pGetFdInfo, int* pFd ) const
Mark Young0f183a82017-02-28 09:58:04 -070029557 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029558 return static_cast<Result>( vkGetMemoryFdKHR( m_device, reinterpret_cast<const VkMemoryGetFdInfoKHR*>( pGetFdInfo ), pFd ) );
Mark Young0f183a82017-02-28 09:58:04 -070029559 }
29560#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029561 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getMemoryFdKHR( const MemoryGetFdInfoKHR & getFdInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029562 {
29563 int fd;
Mark Youngabc2d6e2017-07-07 07:59:56 -060029564 Result result = static_cast<Result>( vkGetMemoryFdKHR( m_device, reinterpret_cast<const VkMemoryGetFdInfoKHR*>( &getFdInfo ), &fd ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029565 return createResultValue( result, fd, "VULKAN_HPP_NAMESPACE::Device::getMemoryFdKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029566 }
29567#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29568
Mark Youngabc2d6e2017-07-07 07:59:56 -060029569 VULKAN_HPP_INLINE Result Device::getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, int fd, MemoryFdPropertiesKHR* pMemoryFdProperties ) const
Mark Young0f183a82017-02-28 09:58:04 -070029570 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029571 return static_cast<Result>( vkGetMemoryFdPropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHR*>( pMemoryFdProperties ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029572 }
29573#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029574 VULKAN_HPP_INLINE ResultValueType<MemoryFdPropertiesKHR>::type Device::getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, int fd ) const
Mark Young0f183a82017-02-28 09:58:04 -070029575 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029576 MemoryFdPropertiesKHR memoryFdProperties;
29577 Result result = static_cast<Result>( vkGetMemoryFdPropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHR*>( &memoryFdProperties ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029578 return createResultValue( result, memoryFdProperties, "VULKAN_HPP_NAMESPACE::Device::getMemoryFdPropertiesKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029579 }
29580#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29581
Mark Youngabc2d6e2017-07-07 07:59:56 -060029582#ifdef VK_USE_PLATFORM_WIN32_KHR
29583 VULKAN_HPP_INLINE Result Device::getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const
Mark Young0f183a82017-02-28 09:58:04 -070029584 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029585 return static_cast<Result>( vkGetSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR*>( pGetWin32HandleInfo ), pHandle ) );
Mark Young0f183a82017-02-28 09:58:04 -070029586 }
29587#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029588 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029589 {
29590 HANDLE handle;
Mark Youngabc2d6e2017-07-07 07:59:56 -060029591 Result result = static_cast<Result>( vkGetSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR*>( &getWin32HandleInfo ), &handle ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029592 return createResultValue( result, handle, "VULKAN_HPP_NAMESPACE::Device::getSemaphoreWin32HandleKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029593 }
29594#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060029595#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070029596
Mark Youngabc2d6e2017-07-07 07:59:56 -060029597#ifdef VK_USE_PLATFORM_WIN32_KHR
29598 VULKAN_HPP_INLINE Result Device::importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029599 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029600 return static_cast<Result>( vkImportSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR*>( pImportSemaphoreWin32HandleInfo ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029601 }
29602#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029603 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029604 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029605 Result result = static_cast<Result>( vkImportSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR*>( &importSemaphoreWin32HandleInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029606 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::importSemaphoreWin32HandleKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029607 }
29608#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060029609#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070029610
Mark Youngabc2d6e2017-07-07 07:59:56 -060029611 VULKAN_HPP_INLINE Result Device::getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd ) const
Mark Young0f183a82017-02-28 09:58:04 -070029612 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029613 return static_cast<Result>( vkGetSemaphoreFdKHR( m_device, reinterpret_cast<const VkSemaphoreGetFdInfoKHR*>( pGetFdInfo ), pFd ) );
Mark Young0f183a82017-02-28 09:58:04 -070029614 }
29615#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029616 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR & getFdInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029617 {
29618 int fd;
Mark Youngabc2d6e2017-07-07 07:59:56 -060029619 Result result = static_cast<Result>( vkGetSemaphoreFdKHR( m_device, reinterpret_cast<const VkSemaphoreGetFdInfoKHR*>( &getFdInfo ), &fd ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029620 return createResultValue( result, fd, "VULKAN_HPP_NAMESPACE::Device::getSemaphoreFdKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029621 }
29622#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29623
Mark Youngabc2d6e2017-07-07 07:59:56 -060029624 VULKAN_HPP_INLINE Result Device::importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029625 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029626 return static_cast<Result>( vkImportSemaphoreFdKHR( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHR*>( pImportSemaphoreFdInfo ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029627 }
29628#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029629 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029630 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029631 Result result = static_cast<Result>( vkImportSemaphoreFdKHR( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHR*>( &importSemaphoreFdInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029632 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::importSemaphoreFdKHR" );
Mark Youngabc2d6e2017-07-07 07:59:56 -060029633 }
29634#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29635
29636#ifdef VK_USE_PLATFORM_WIN32_KHR
29637 VULKAN_HPP_INLINE Result Device::getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const
29638 {
29639 return static_cast<Result>( vkGetFenceWin32HandleKHR( m_device, reinterpret_cast<const VkFenceGetWin32HandleInfoKHR*>( pGetWin32HandleInfo ), pHandle ) );
29640 }
29641#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29642 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR & getWin32HandleInfo ) const
29643 {
29644 HANDLE handle;
29645 Result result = static_cast<Result>( vkGetFenceWin32HandleKHR( m_device, reinterpret_cast<const VkFenceGetWin32HandleInfoKHR*>( &getWin32HandleInfo ), &handle ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029646 return createResultValue( result, handle, "VULKAN_HPP_NAMESPACE::Device::getFenceWin32HandleKHR" );
Mark Youngabc2d6e2017-07-07 07:59:56 -060029647 }
29648#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29649#endif /*VK_USE_PLATFORM_WIN32_KHR*/
29650
29651#ifdef VK_USE_PLATFORM_WIN32_KHR
29652 VULKAN_HPP_INLINE Result Device::importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo ) const
29653 {
29654 return static_cast<Result>( vkImportFenceWin32HandleKHR( m_device, reinterpret_cast<const VkImportFenceWin32HandleInfoKHR*>( pImportFenceWin32HandleInfo ) ) );
29655 }
29656#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29657 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo ) const
29658 {
29659 Result result = static_cast<Result>( vkImportFenceWin32HandleKHR( m_device, reinterpret_cast<const VkImportFenceWin32HandleInfoKHR*>( &importFenceWin32HandleInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029660 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::importFenceWin32HandleKHR" );
Mark Youngabc2d6e2017-07-07 07:59:56 -060029661 }
29662#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29663#endif /*VK_USE_PLATFORM_WIN32_KHR*/
29664
29665 VULKAN_HPP_INLINE Result Device::getFenceFdKHR( const FenceGetFdInfoKHR* pGetFdInfo, int* pFd ) const
29666 {
29667 return static_cast<Result>( vkGetFenceFdKHR( m_device, reinterpret_cast<const VkFenceGetFdInfoKHR*>( pGetFdInfo ), pFd ) );
29668 }
29669#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29670 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getFenceFdKHR( const FenceGetFdInfoKHR & getFdInfo ) const
29671 {
29672 int fd;
29673 Result result = static_cast<Result>( vkGetFenceFdKHR( m_device, reinterpret_cast<const VkFenceGetFdInfoKHR*>( &getFdInfo ), &fd ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029674 return createResultValue( result, fd, "VULKAN_HPP_NAMESPACE::Device::getFenceFdKHR" );
Mark Youngabc2d6e2017-07-07 07:59:56 -060029675 }
29676#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29677
29678 VULKAN_HPP_INLINE Result Device::importFenceFdKHR( const ImportFenceFdInfoKHR* pImportFenceFdInfo ) const
29679 {
29680 return static_cast<Result>( vkImportFenceFdKHR( m_device, reinterpret_cast<const VkImportFenceFdInfoKHR*>( pImportFenceFdInfo ) ) );
29681 }
29682#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29683 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importFenceFdKHR( const ImportFenceFdInfoKHR & importFenceFdInfo ) const
29684 {
29685 Result result = static_cast<Result>( vkImportFenceFdKHR( m_device, reinterpret_cast<const VkImportFenceFdInfoKHR*>( &importFenceFdInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029686 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::importFenceFdKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029687 }
29688#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29689
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029690 VULKAN_HPP_INLINE Result Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo ) const
29691 {
29692 return static_cast<Result>( vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( pDisplayPowerInfo ) ) );
29693 }
29694#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29695 VULKAN_HPP_INLINE ResultValueType<void>::type Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo ) const
29696 {
29697 Result result = static_cast<Result>( vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( &displayPowerInfo ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029698 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::displayPowerControlEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029699 }
29700#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29701
29702 VULKAN_HPP_INLINE Result Device::registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
29703 {
29704 return static_cast<Result>( vkRegisterDeviceEventEXT( m_device, reinterpret_cast<const VkDeviceEventInfoEXT*>( pDeviceEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
29705 }
29706#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060029707 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, Optional<const AllocationCallbacks> allocator ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029708 {
29709 Fence fence;
Lenny Komowb79f04a2017-09-18 17:07:00 -060029710 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 -060029711 return createResultValue( result, fence, "VULKAN_HPP_NAMESPACE::Device::registerEventEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029712 }
29713#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29714
29715 VULKAN_HPP_INLINE Result Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
29716 {
29717 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 ) ) );
29718 }
29719#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060029720 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 -070029721 {
29722 Fence fence;
Lenny Komowb79f04a2017-09-18 17:07:00 -060029723 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 -060029724 return createResultValue( result, fence, "VULKAN_HPP_NAMESPACE::Device::registerDisplayEventEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029725 }
29726#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29727
29728 VULKAN_HPP_INLINE Result Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const
29729 {
29730 return static_cast<Result>( vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), pCounterValue ) );
29731 }
29732#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29733 VULKAN_HPP_INLINE ResultValue<uint64_t> Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter ) const
29734 {
29735 uint64_t counterValue;
29736 Result result = static_cast<Result>( vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), &counterValue ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029737 return createResultValue( result, counterValue, "VULKAN_HPP_NAMESPACE::Device::getSwapchainCounterEXT", { Result::eSuccess, Result::eErrorDeviceLost, Result::eErrorOutOfDateKHR } );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029738 }
29739#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070029740
29741 VULKAN_HPP_INLINE void Device::getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ) const
29742 {
29743 vkGetDeviceGroupPeerMemoryFeaturesKHX( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlagsKHX*>( pPeerMemoryFeatures ) );
29744 }
29745#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29746 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX Device::getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const
29747 {
29748 PeerMemoryFeatureFlagsKHX peerMemoryFeatures;
29749 vkGetDeviceGroupPeerMemoryFeaturesKHX( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlagsKHX*>( &peerMemoryFeatures ) );
29750 return peerMemoryFeatures;
29751 }
29752#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29753
Lenny Komowb79f04a2017-09-18 17:07:00 -060029754 VULKAN_HPP_INLINE Result Device::bindBufferMemory2KHR( uint32_t bindInfoCount, const BindBufferMemoryInfoKHR* pBindInfos ) const
Mark Young0f183a82017-02-28 09:58:04 -070029755 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060029756 return static_cast<Result>( vkBindBufferMemory2KHR( m_device, bindInfoCount, reinterpret_cast<const VkBindBufferMemoryInfoKHR*>( pBindInfos ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029757 }
29758#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060029759 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory2KHR( ArrayProxy<const BindBufferMemoryInfoKHR> bindInfos ) const
Mark Young0f183a82017-02-28 09:58:04 -070029760 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060029761 Result result = static_cast<Result>( vkBindBufferMemory2KHR( m_device, bindInfos.size() , reinterpret_cast<const VkBindBufferMemoryInfoKHR*>( bindInfos.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029762 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::bindBufferMemory2KHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029763 }
29764#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29765
Lenny Komowb79f04a2017-09-18 17:07:00 -060029766 VULKAN_HPP_INLINE Result Device::bindImageMemory2KHR( uint32_t bindInfoCount, const BindImageMemoryInfoKHR* pBindInfos ) const
Mark Young0f183a82017-02-28 09:58:04 -070029767 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060029768 return static_cast<Result>( vkBindImageMemory2KHR( m_device, bindInfoCount, reinterpret_cast<const VkBindImageMemoryInfoKHR*>( pBindInfos ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029769 }
29770#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060029771 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory2KHR( ArrayProxy<const BindImageMemoryInfoKHR> bindInfos ) const
Mark Young0f183a82017-02-28 09:58:04 -070029772 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060029773 Result result = static_cast<Result>( vkBindImageMemory2KHR( m_device, bindInfos.size() , reinterpret_cast<const VkBindImageMemoryInfoKHR*>( bindInfos.data() ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029774 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::bindImageMemory2KHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029775 }
29776#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29777
29778 VULKAN_HPP_INLINE Result Device::getGroupPresentCapabilitiesKHX( DeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ) const
29779 {
29780 return static_cast<Result>( vkGetDeviceGroupPresentCapabilitiesKHX( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHX*>( pDeviceGroupPresentCapabilities ) ) );
29781 }
29782#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29783 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentCapabilitiesKHX>::type Device::getGroupPresentCapabilitiesKHX() const
29784 {
29785 DeviceGroupPresentCapabilitiesKHX deviceGroupPresentCapabilities;
29786 Result result = static_cast<Result>( vkGetDeviceGroupPresentCapabilitiesKHX( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHX*>( &deviceGroupPresentCapabilities ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029787 return createResultValue( result, deviceGroupPresentCapabilities, "VULKAN_HPP_NAMESPACE::Device::getGroupPresentCapabilitiesKHX" );
Mark Young0f183a82017-02-28 09:58:04 -070029788 }
29789#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29790
29791 VULKAN_HPP_INLINE Result Device::getGroupSurfacePresentModesKHX( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHX* pModes ) const
29792 {
29793 return static_cast<Result>( vkGetDeviceGroupSurfacePresentModesKHX( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHX*>( pModes ) ) );
29794 }
29795#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29796 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentModeFlagsKHX>::type Device::getGroupSurfacePresentModesKHX( SurfaceKHR surface ) const
29797 {
29798 DeviceGroupPresentModeFlagsKHX modes;
29799 Result result = static_cast<Result>( vkGetDeviceGroupSurfacePresentModesKHX( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHX*>( &modes ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029800 return createResultValue( result, modes, "VULKAN_HPP_NAMESPACE::Device::getGroupSurfacePresentModesKHX" );
Mark Young0f183a82017-02-28 09:58:04 -070029801 }
29802#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29803
29804 VULKAN_HPP_INLINE Result Device::acquireNextImage2KHX( const AcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex ) const
29805 {
29806 return static_cast<Result>( vkAcquireNextImage2KHX( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHX*>( pAcquireInfo ), pImageIndex ) );
29807 }
29808#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29809 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImage2KHX( const AcquireNextImageInfoKHX & acquireInfo ) const
29810 {
29811 uint32_t imageIndex;
29812 Result result = static_cast<Result>( vkAcquireNextImage2KHX( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHX*>( &acquireInfo ), &imageIndex ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029813 return createResultValue( result, imageIndex, "VULKAN_HPP_NAMESPACE::Device::acquireNextImage2KHX", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
Mark Young0f183a82017-02-28 09:58:04 -070029814 }
29815#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29816
29817 VULKAN_HPP_INLINE Result Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) const
29818 {
29819 return static_cast<Result>( vkCreateDescriptorUpdateTemplateKHR( m_device, reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorUpdateTemplateKHR*>( pDescriptorUpdateTemplate ) ) );
29820 }
29821#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29822 VULKAN_HPP_INLINE ResultValueType<DescriptorUpdateTemplateKHR>::type Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29823 {
29824 DescriptorUpdateTemplateKHR descriptorUpdateTemplate;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029825 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 -060029826 return createResultValue( result, descriptorUpdateTemplate, "VULKAN_HPP_NAMESPACE::Device::createDescriptorUpdateTemplateKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029827 }
29828#ifndef VULKAN_HPP_NO_SMART_HANDLE
29829 VULKAN_HPP_INLINE UniqueDescriptorUpdateTemplateKHR Device::createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29830 {
29831 DescriptorUpdateTemplateKHRDeleter deleter( *this, allocator );
29832 return UniqueDescriptorUpdateTemplateKHR( createDescriptorUpdateTemplateKHR( createInfo, allocator ), deleter );
29833 }
29834#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29835#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29836
29837 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const AllocationCallbacks* pAllocator ) const
29838 {
29839 vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29840 }
29841#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29842 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator ) const
29843 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029844 vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029845 }
29846#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29847
29848 VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData ) const
29849 {
29850 vkUpdateDescriptorSetWithTemplateKHR( m_device, static_cast<VkDescriptorSet>( descriptorSet ), static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), pData );
29851 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029852
29853 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata ) const
29854 {
29855 vkSetHdrMetadataEXT( m_device, swapchainCount, reinterpret_cast<const VkSwapchainKHR*>( pSwapchains ), reinterpret_cast<const VkHdrMetadataEXT*>( pMetadata ) );
29856 }
29857#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29858 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata ) const
29859 {
29860#ifdef VULKAN_HPP_NO_EXCEPTIONS
29861 assert( swapchains.size() == metadata.size() );
29862#else
29863 if ( swapchains.size() != metadata.size() )
29864 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029865 throw LogicError( "VULKAN_HPP_NAMESPACE::Device::setHdrMetadataEXT: swapchains.size() != metadata.size()" );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029866 }
29867#endif // VULKAN_HPP_NO_EXCEPTIONS
29868 vkSetHdrMetadataEXT( m_device, swapchains.size() , reinterpret_cast<const VkSwapchainKHR*>( swapchains.data() ), reinterpret_cast<const VkHdrMetadataEXT*>( metadata.data() ) );
29869 }
29870#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29871
Mark Lobodzinski54385432017-05-15 10:27:52 -060029872#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
29873 VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( SwapchainKHR swapchain ) const
29874 {
29875 return static_cast<Result>( vkGetSwapchainStatusKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ) ) );
29876 }
29877#else
29878 VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( SwapchainKHR swapchain ) const
29879 {
29880 Result result = static_cast<Result>( vkGetSwapchainStatusKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029881 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::getSwapchainStatusKHR", { Result::eSuccess, Result::eSuboptimalKHR } );
Mark Lobodzinski54385432017-05-15 10:27:52 -060029882 }
29883#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29884
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029885 VULKAN_HPP_INLINE Result Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const
29886 {
29887 return static_cast<Result>( vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( pDisplayTimingProperties ) ) );
29888 }
29889#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29890 VULKAN_HPP_INLINE ResultValueType<RefreshCycleDurationGOOGLE>::type Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain ) const
29891 {
29892 RefreshCycleDurationGOOGLE displayTimingProperties;
29893 Result result = static_cast<Result>( vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( &displayTimingProperties ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029894 return createResultValue( result, displayTimingProperties, "VULKAN_HPP_NAMESPACE::Device::getRefreshCycleDurationGOOGLE" );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029895 }
29896#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29897
29898 VULKAN_HPP_INLINE Result Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings ) const
29899 {
29900 return static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), pPresentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( pPresentationTimings ) ) );
29901 }
29902#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29903 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029904 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain ) const
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029905 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029906 std::vector<PastPresentationTimingGOOGLE,Allocator> presentationTimings;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029907 uint32_t presentationTimingCount;
29908 Result result = static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, nullptr ) );
29909 if ( ( result == Result::eSuccess ) && presentationTimingCount )
29910 {
29911 presentationTimings.resize( presentationTimingCount );
29912 result = static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( presentationTimings.data() ) ) );
29913 }
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060029914 return createResultValue( result, presentationTimings, "VULKAN_HPP_NAMESPACE::Device::getPastPresentationTimingGOOGLE" );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029915 }
29916#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29917
Mark Youngabc2d6e2017-07-07 07:59:56 -060029918 VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR* pInfo, MemoryRequirements2KHR* pMemoryRequirements ) const
29919 {
29920 vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2KHR*>( pInfo ), reinterpret_cast<VkMemoryRequirements2KHR*>( pMemoryRequirements ) );
29921 }
29922#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29923 VULKAN_HPP_INLINE MemoryRequirements2KHR Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR & info ) const
29924 {
29925 MemoryRequirements2KHR memoryRequirements;
29926 vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2KHR*>( &info ), reinterpret_cast<VkMemoryRequirements2KHR*>( &memoryRequirements ) );
29927 return memoryRequirements;
29928 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060029929 template <typename ...T>
29930 VULKAN_HPP_INLINE StructureChain<T...> Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR & info ) const
29931 {
29932 StructureChain<T...> structureChain;
29933 MemoryRequirements2KHR& memoryRequirements = structureChain.template get<MemoryRequirements2KHR>();
29934 vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2KHR*>( &info ), reinterpret_cast<VkMemoryRequirements2KHR*>( &memoryRequirements ) );
29935 return structureChain;
29936 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060029937#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29938
29939 VULKAN_HPP_INLINE void Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR* pInfo, MemoryRequirements2KHR* pMemoryRequirements ) const
29940 {
29941 vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2KHR*>( pInfo ), reinterpret_cast<VkMemoryRequirements2KHR*>( pMemoryRequirements ) );
29942 }
29943#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29944 VULKAN_HPP_INLINE MemoryRequirements2KHR Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR & info ) const
29945 {
29946 MemoryRequirements2KHR memoryRequirements;
29947 vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2KHR*>( &info ), reinterpret_cast<VkMemoryRequirements2KHR*>( &memoryRequirements ) );
29948 return memoryRequirements;
29949 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060029950 template <typename ...T>
29951 VULKAN_HPP_INLINE StructureChain<T...> Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR & info ) const
29952 {
29953 StructureChain<T...> structureChain;
29954 MemoryRequirements2KHR& memoryRequirements = structureChain.template get<MemoryRequirements2KHR>();
29955 vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2KHR*>( &info ), reinterpret_cast<VkMemoryRequirements2KHR*>( &memoryRequirements ) );
29956 return structureChain;
29957 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060029958#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29959
29960 VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2KHR* pInfo, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements2KHR* pSparseMemoryRequirements ) const
29961 {
29962 vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2KHR*>( pInfo ), pSparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements2KHR*>( pSparseMemoryRequirements ) );
29963 }
29964#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29965 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029966 VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements2KHR,Allocator> Device::getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2KHR & info ) const
Mark Youngabc2d6e2017-07-07 07:59:56 -060029967 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060029968 std::vector<SparseImageMemoryRequirements2KHR,Allocator> sparseMemoryRequirements;
Mark Youngabc2d6e2017-07-07 07:59:56 -060029969 uint32_t sparseMemoryRequirementCount;
29970 vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2KHR*>( &info ), &sparseMemoryRequirementCount, nullptr );
29971 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
29972 vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2KHR*>( &info ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements2KHR*>( sparseMemoryRequirements.data() ) );
29973 return sparseMemoryRequirements;
29974 }
29975#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29976
Lenny Komowb79f04a2017-09-18 17:07:00 -060029977 VULKAN_HPP_INLINE Result Device::createSamplerYcbcrConversionKHR( const SamplerYcbcrConversionCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SamplerYcbcrConversionKHR* pYcbcrConversion ) const
29978 {
29979 return static_cast<Result>( vkCreateSamplerYcbcrConversionKHR( m_device, reinterpret_cast<const VkSamplerYcbcrConversionCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSamplerYcbcrConversionKHR*>( pYcbcrConversion ) ) );
29980 }
29981#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29982 VULKAN_HPP_INLINE ResultValueType<SamplerYcbcrConversionKHR>::type Device::createSamplerYcbcrConversionKHR( const SamplerYcbcrConversionCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29983 {
29984 SamplerYcbcrConversionKHR ycbcrConversion;
29985 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 -060029986 return createResultValue( result, ycbcrConversion, "VULKAN_HPP_NAMESPACE::Device::createSamplerYcbcrConversionKHR" );
Lenny Komowb79f04a2017-09-18 17:07:00 -060029987 }
29988#ifndef VULKAN_HPP_NO_SMART_HANDLE
29989 VULKAN_HPP_INLINE UniqueSamplerYcbcrConversionKHR Device::createSamplerYcbcrConversionKHRUnique( const SamplerYcbcrConversionCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29990 {
29991 SamplerYcbcrConversionKHRDeleter deleter( *this, allocator );
29992 return UniqueSamplerYcbcrConversionKHR( createSamplerYcbcrConversionKHR( createInfo, allocator ), deleter );
29993 }
29994#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29995#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29996
29997 VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversionKHR( SamplerYcbcrConversionKHR ycbcrConversion, const AllocationCallbacks* pAllocator ) const
29998 {
29999 vkDestroySamplerYcbcrConversionKHR( m_device, static_cast<VkSamplerYcbcrConversionKHR>( ycbcrConversion ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
30000 }
30001#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30002 VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversionKHR( SamplerYcbcrConversionKHR ycbcrConversion, Optional<const AllocationCallbacks> allocator ) const
30003 {
30004 vkDestroySamplerYcbcrConversionKHR( m_device, static_cast<VkSamplerYcbcrConversionKHR>( ycbcrConversion ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
30005 }
30006#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30007
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030008 VULKAN_HPP_INLINE Result Device::createValidationCacheEXT( const ValidationCacheCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, ValidationCacheEXT* pValidationCache ) const
30009 {
30010 return static_cast<Result>( vkCreateValidationCacheEXT( m_device, reinterpret_cast<const VkValidationCacheCreateInfoEXT*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkValidationCacheEXT*>( pValidationCache ) ) );
30011 }
30012#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30013 VULKAN_HPP_INLINE ResultValueType<ValidationCacheEXT>::type Device::createValidationCacheEXT( const ValidationCacheCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
30014 {
30015 ValidationCacheEXT validationCache;
30016 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 -060030017 return createResultValue( result, validationCache, "VULKAN_HPP_NAMESPACE::Device::createValidationCacheEXT" );
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030018 }
30019#ifndef VULKAN_HPP_NO_SMART_HANDLE
30020 VULKAN_HPP_INLINE UniqueValidationCacheEXT Device::createValidationCacheEXTUnique( const ValidationCacheCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
30021 {
30022 ValidationCacheEXTDeleter deleter( *this, allocator );
30023 return UniqueValidationCacheEXT( createValidationCacheEXT( createInfo, allocator ), deleter );
30024 }
30025#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30026#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30027
30028 VULKAN_HPP_INLINE void Device::destroyValidationCacheEXT( ValidationCacheEXT validationCache, const AllocationCallbacks* pAllocator ) const
30029 {
30030 vkDestroyValidationCacheEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
30031 }
30032#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30033 VULKAN_HPP_INLINE void Device::destroyValidationCacheEXT( ValidationCacheEXT validationCache, Optional<const AllocationCallbacks> allocator ) const
30034 {
30035 vkDestroyValidationCacheEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
30036 }
30037#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30038
30039 VULKAN_HPP_INLINE Result Device::getValidationCacheDataEXT( ValidationCacheEXT validationCache, size_t* pDataSize, void* pData ) const
30040 {
30041 return static_cast<Result>( vkGetValidationCacheDataEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), pDataSize, pData ) );
30042 }
30043#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30044 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030045 VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getValidationCacheDataEXT( ValidationCacheEXT validationCache ) const
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030046 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030047 std::vector<uint8_t,Allocator> data;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030048 size_t dataSize;
30049 Result result;
30050 do
30051 {
30052 result = static_cast<Result>( vkGetValidationCacheDataEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), &dataSize, nullptr ) );
30053 if ( ( result == Result::eSuccess ) && dataSize )
30054 {
30055 data.resize( dataSize );
30056 result = static_cast<Result>( vkGetValidationCacheDataEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), &dataSize, reinterpret_cast<void*>( data.data() ) ) );
30057 }
30058 } while ( result == Result::eIncomplete );
30059 assert( dataSize <= data.size() );
30060 data.resize( dataSize );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030061 return createResultValue( result, data, "VULKAN_HPP_NAMESPACE::Device::getValidationCacheDataEXT" );
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030062 }
30063#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30064
30065 VULKAN_HPP_INLINE Result Device::mergeValidationCachesEXT( ValidationCacheEXT dstCache, uint32_t srcCacheCount, const ValidationCacheEXT* pSrcCaches ) const
30066 {
30067 return static_cast<Result>( vkMergeValidationCachesEXT( m_device, static_cast<VkValidationCacheEXT>( dstCache ), srcCacheCount, reinterpret_cast<const VkValidationCacheEXT*>( pSrcCaches ) ) );
30068 }
30069#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30070 VULKAN_HPP_INLINE ResultValueType<void>::type Device::mergeValidationCachesEXT( ValidationCacheEXT dstCache, ArrayProxy<const ValidationCacheEXT> srcCaches ) const
30071 {
30072 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 -060030073 return createResultValue( result, "VULKAN_HPP_NAMESPACE::Device::mergeValidationCachesEXT" );
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030074 }
30075#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30076
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030077 VULKAN_HPP_INLINE Result Device::getShaderInfoAMD( Pipeline pipeline, ShaderStageFlagBits shaderStage, ShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo ) const
30078 {
30079 return static_cast<Result>( vkGetShaderInfoAMD( m_device, static_cast<VkPipeline>( pipeline ), static_cast<VkShaderStageFlagBits>( shaderStage ), static_cast<VkShaderInfoTypeAMD>( infoType ), pInfoSize, pInfo ) );
30080 }
30081#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30082 template <typename Allocator>
30083 VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getShaderInfoAMD( Pipeline pipeline, ShaderStageFlagBits shaderStage, ShaderInfoTypeAMD infoType ) const
30084 {
30085 std::vector<uint8_t,Allocator> info;
30086 size_t infoSize;
30087 Result result;
30088 do
30089 {
30090 result = static_cast<Result>( vkGetShaderInfoAMD( m_device, static_cast<VkPipeline>( pipeline ), static_cast<VkShaderStageFlagBits>( shaderStage ), static_cast<VkShaderInfoTypeAMD>( infoType ), &infoSize, nullptr ) );
30091 if ( ( result == Result::eSuccess ) && infoSize )
30092 {
30093 info.resize( infoSize );
30094 result = static_cast<Result>( vkGetShaderInfoAMD( m_device, static_cast<VkPipeline>( pipeline ), static_cast<VkShaderStageFlagBits>( shaderStage ), static_cast<VkShaderInfoTypeAMD>( infoType ), &infoSize, reinterpret_cast<void*>( info.data() ) ) );
30095 }
30096 } while ( result == Result::eIncomplete );
30097 assert( infoSize <= info.size() );
30098 info.resize( infoSize );
30099 return createResultValue( result, info, "VULKAN_HPP_NAMESPACE::Device::getShaderInfoAMD" );
30100 }
30101#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30102
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030103#ifndef VULKAN_HPP_NO_SMART_HANDLE
30104 class DeviceDeleter;
30105 using UniqueDevice = UniqueHandle<Device, DeviceDeleter>;
30106#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30107
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030108 class PhysicalDevice
30109 {
30110 public:
30111 PhysicalDevice()
30112 : m_physicalDevice(VK_NULL_HANDLE)
30113 {}
30114
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070030115 PhysicalDevice( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030116 : m_physicalDevice(VK_NULL_HANDLE)
30117 {}
30118
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030119 VULKAN_HPP_TYPESAFE_EXPLICIT PhysicalDevice( VkPhysicalDevice physicalDevice )
30120 : m_physicalDevice( physicalDevice )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030121 {}
30122
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070030123#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030124 PhysicalDevice & operator=(VkPhysicalDevice physicalDevice)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030125 {
30126 m_physicalDevice = physicalDevice;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030127 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030128 }
30129#endif
30130
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030131 PhysicalDevice & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030132 {
30133 m_physicalDevice = VK_NULL_HANDLE;
30134 return *this;
30135 }
30136
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030137 bool operator==( PhysicalDevice const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060030138 {
30139 return m_physicalDevice == rhs.m_physicalDevice;
30140 }
30141
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030142 bool operator!=(PhysicalDevice const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060030143 {
30144 return m_physicalDevice != rhs.m_physicalDevice;
30145 }
30146
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030147 bool operator<(PhysicalDevice const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060030148 {
30149 return m_physicalDevice < rhs.m_physicalDevice;
30150 }
30151
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030152 void getProperties( PhysicalDeviceProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030153#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030154 PhysicalDeviceProperties getProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030155#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30156
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030157 void getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030158#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030159 template <typename Allocator = std::allocator<QueueFamilyProperties>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030160 std::vector<QueueFamilyProperties,Allocator> getQueueFamilyProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030161#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30162
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030163 void getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030164#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030165 PhysicalDeviceMemoryProperties getMemoryProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030166#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30167
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030168 void getFeatures( PhysicalDeviceFeatures* pFeatures ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030169#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030170 PhysicalDeviceFeatures getFeatures() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030171#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30172
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030173 void getFormatProperties( Format format, FormatProperties* pFormatProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030174#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030175 FormatProperties getFormatProperties( Format format ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030176#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30177
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030178 Result getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030179#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030180 ResultValueType<ImageFormatProperties>::type getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030181#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30182
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030183 Result createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030184#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030185 ResultValueType<Device>::type createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
30186#ifndef VULKAN_HPP_NO_SMART_HANDLE
30187 UniqueDevice createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
30188#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030189#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30190
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030191 Result enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030192#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030193 template <typename Allocator = std::allocator<LayerProperties>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030194 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateDeviceLayerProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030195#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30196
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030197 Result enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030198#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030199 template <typename Allocator = std::allocator<ExtensionProperties>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030200 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateDeviceExtensionProperties( Optional<const std::string> layerName = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030201#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30202
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030203 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 -060030204#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030205 template <typename Allocator = std::allocator<SparseImageFormatProperties>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030206 std::vector<SparseImageFormatProperties,Allocator> getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030207#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30208
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030209 Result getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030210#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030211 template <typename Allocator = std::allocator<DisplayPropertiesKHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030212 typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type getDisplayPropertiesKHR() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030213#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30214
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030215 Result getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030216#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030217 template <typename Allocator = std::allocator<DisplayPlanePropertiesKHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030218 typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type getDisplayPlanePropertiesKHR() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030219#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30220
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030221 Result getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030222#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030223 template <typename Allocator = std::allocator<DisplayKHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030224 typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030225#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30226
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030227 Result getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030228#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030229 template <typename Allocator = std::allocator<DisplayModePropertiesKHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030230 typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type getDisplayModePropertiesKHR( DisplayKHR display ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030231#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30232
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030233 Result createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030234#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030235 ResultValueType<DisplayModeKHR>::type createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030236#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30237
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030238 Result getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030239#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030240 ResultValueType<DisplayPlaneCapabilitiesKHR>::type getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030241#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30242
30243#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030244 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection ) const;
30245#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30246 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection ) const;
30247#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030248#endif /*VK_USE_PLATFORM_MIR_KHR*/
30249
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030250 Result getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030251#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030252 ResultValueType<Bool32>::type getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030253#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30254
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030255 Result getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030256#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030257 ResultValueType<SurfaceCapabilitiesKHR>::type getSurfaceCapabilitiesKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030258#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30259
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030260 Result getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030261#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030262 template <typename Allocator = std::allocator<SurfaceFormatKHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030263 typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type getSurfaceFormatsKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030264#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30265
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030266 Result getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030267#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030268 template <typename Allocator = std::allocator<PresentModeKHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030269 typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type getSurfacePresentModesKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030270#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30271
30272#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030273 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display ) const;
30274#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30275 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const;
30276#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030277#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
30278
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030279#ifdef VK_USE_PLATFORM_WIN32_KHR
30280 Bool32 getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const;
30281#endif /*VK_USE_PLATFORM_WIN32_KHR*/
30282
30283#ifdef VK_USE_PLATFORM_XLIB_KHR
30284 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030285#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030286 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const;
30287#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30288#endif /*VK_USE_PLATFORM_XLIB_KHR*/
30289
30290#ifdef VK_USE_PLATFORM_XCB_KHR
30291 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const;
30292#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30293 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const;
30294#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30295#endif /*VK_USE_PLATFORM_XCB_KHR*/
30296
30297 Result getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const;
30298#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30299 ResultValueType<ExternalImageFormatPropertiesNV>::type getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType ) const;
30300#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30301
30302 void getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits ) const;
30303#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30304 DeviceGeneratedCommandsLimitsNVX getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features ) const;
30305#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30306
30307 void getFeatures2KHR( PhysicalDeviceFeatures2KHR* pFeatures ) const;
30308#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30309 PhysicalDeviceFeatures2KHR getFeatures2KHR() const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030310 template <typename ...T>
30311 StructureChain<T...> getFeatures2KHR() const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030312#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30313
30314 void getProperties2KHR( PhysicalDeviceProperties2KHR* pProperties ) const;
30315#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30316 PhysicalDeviceProperties2KHR getProperties2KHR() const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030317 template <typename ...T>
30318 StructureChain<T...> getProperties2KHR() const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030319#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30320
30321 void getFormatProperties2KHR( Format format, FormatProperties2KHR* pFormatProperties ) const;
30322#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30323 FormatProperties2KHR getFormatProperties2KHR( Format format ) const;
30324#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30325
30326 Result getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, ImageFormatProperties2KHR* pImageFormatProperties ) const;
30327#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30328 ResultValueType<ImageFormatProperties2KHR>::type getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030329 template <typename ...T>
30330 typename ResultValueType<StructureChain<T...>>::type getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030331#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30332
30333 void getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2KHR* pQueueFamilyProperties ) const;
30334#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30335 template <typename Allocator = std::allocator<QueueFamilyProperties2KHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030336 std::vector<QueueFamilyProperties2KHR,Allocator> getQueueFamilyProperties2KHR() const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030337#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30338
30339 void getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2KHR* pMemoryProperties ) const;
30340#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30341 PhysicalDeviceMemoryProperties2KHR getMemoryProperties2KHR() const;
30342#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30343
30344 void getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2KHR* pProperties ) const;
30345#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30346 template <typename Allocator = std::allocator<SparseImageFormatProperties2KHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030347 std::vector<SparseImageFormatProperties2KHR,Allocator> getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR & formatInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030348#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30349
Mark Youngabc2d6e2017-07-07 07:59:56 -060030350 void getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfoKHR* pExternalBufferInfo, ExternalBufferPropertiesKHR* pExternalBufferProperties ) const;
Mark Young0f183a82017-02-28 09:58:04 -070030351#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060030352 ExternalBufferPropertiesKHR getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfoKHR & externalBufferInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070030353#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30354
Mark Youngabc2d6e2017-07-07 07:59:56 -060030355 void getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfoKHR* pExternalSemaphoreInfo, ExternalSemaphorePropertiesKHR* pExternalSemaphoreProperties ) const;
Mark Young0f183a82017-02-28 09:58:04 -070030356#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060030357 ExternalSemaphorePropertiesKHR getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfoKHR & externalSemaphoreInfo ) const;
30358#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30359
30360 void getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfoKHR* pExternalFenceInfo, ExternalFencePropertiesKHR* pExternalFenceProperties ) const;
30361#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30362 ExternalFencePropertiesKHR getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfoKHR & externalFenceInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070030363#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30364
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030365#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030366 Result releaseDisplayEXT( DisplayKHR display ) const;
30367#else
30368 ResultValueType<void>::type releaseDisplayEXT( DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070030369#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30370
30371#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030372 Result acquireXlibDisplayEXT( Display* dpy, DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070030373#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030374 ResultValueType<Display>::type acquireXlibDisplayEXT( DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070030375#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young39389872017-01-19 21:10:49 -070030376#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
30377
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030378#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
30379 Result getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay ) const;
Mark Young39389872017-01-19 21:10:49 -070030380#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030381 ResultValueType<DisplayKHR>::type getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const;
Mark Young39389872017-01-19 21:10:49 -070030382#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030383#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
Mark Young39389872017-01-19 21:10:49 -070030384
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030385 Result getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities ) const;
Mark Young39389872017-01-19 21:10:49 -070030386#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030387 ResultValueType<SurfaceCapabilities2EXT>::type getSurfaceCapabilities2EXT( SurfaceKHR surface ) const;
Mark Young39389872017-01-19 21:10:49 -070030388#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30389
Mark Young0f183a82017-02-28 09:58:04 -070030390 Result getPresentRectanglesKHX( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects ) const;
30391#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30392 template <typename Allocator = std::allocator<Rect2D>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030393 typename ResultValueType<std::vector<Rect2D,Allocator>>::type getPresentRectanglesKHX( SurfaceKHR surface ) const;
Mark Young0f183a82017-02-28 09:58:04 -070030394#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30395
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030396 void getMultisamplePropertiesEXT( SampleCountFlagBits samples, MultisamplePropertiesEXT* pMultisampleProperties ) const;
30397#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30398 MultisamplePropertiesEXT getMultisamplePropertiesEXT( SampleCountFlagBits samples ) const;
30399#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30400
Mark Lobodzinski54385432017-05-15 10:27:52 -060030401 Result getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, SurfaceCapabilities2KHR* pSurfaceCapabilities ) const;
30402#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030403 ResultValueType<SurfaceCapabilities2KHR>::type getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030404 template <typename ...T>
30405 typename ResultValueType<StructureChain<T...>>::type getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
Mark Lobodzinski54385432017-05-15 10:27:52 -060030406#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30407
30408 Result getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, SurfaceFormat2KHR* pSurfaceFormats ) const;
30409#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30410 template <typename Allocator = std::allocator<SurfaceFormat2KHR>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030411 typename ResultValueType<std::vector<SurfaceFormat2KHR,Allocator>>::type getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
Mark Lobodzinski54385432017-05-15 10:27:52 -060030412#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30413
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030414
30415
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070030416 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPhysicalDevice() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030417 {
30418 return m_physicalDevice;
30419 }
30420
30421 explicit operator bool() const
30422 {
30423 return m_physicalDevice != VK_NULL_HANDLE;
30424 }
30425
30426 bool operator!() const
30427 {
30428 return m_physicalDevice == VK_NULL_HANDLE;
30429 }
30430
30431 private:
30432 VkPhysicalDevice m_physicalDevice;
30433 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030434
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030435 static_assert( sizeof( PhysicalDevice ) == sizeof( VkPhysicalDevice ), "handle and wrapper have different size!" );
30436
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030437#ifndef VULKAN_HPP_NO_SMART_HANDLE
30438 class DeviceDeleter
30439 {
30440 public:
30441 DeviceDeleter( Optional<const AllocationCallbacks> allocator = nullptr )
30442 : m_allocator( allocator )
30443 {}
30444
30445 void operator()( Device device )
30446 {
30447 device.destroy( m_allocator );
30448 }
30449
30450 private:
30451 Optional<const AllocationCallbacks> m_allocator;
30452 };
30453#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30454
30455 VULKAN_HPP_INLINE void PhysicalDevice::getProperties( PhysicalDeviceProperties* pProperties ) const
30456 {
30457 vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( pProperties ) );
30458 }
30459#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30460 VULKAN_HPP_INLINE PhysicalDeviceProperties PhysicalDevice::getProperties() const
30461 {
30462 PhysicalDeviceProperties properties;
30463 vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( &properties ) );
30464 return properties;
30465 }
30466#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30467
30468 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties ) const
30469 {
30470 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( pQueueFamilyProperties ) );
30471 }
30472#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30473 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030474 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties,Allocator> PhysicalDevice::getQueueFamilyProperties() const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030475 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030476 std::vector<QueueFamilyProperties,Allocator> queueFamilyProperties;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030477 uint32_t queueFamilyPropertyCount;
30478 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
30479 queueFamilyProperties.resize( queueFamilyPropertyCount );
30480 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( queueFamilyProperties.data() ) );
30481 return queueFamilyProperties;
30482 }
30483#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30484
30485 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties ) const
30486 {
30487 vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( pMemoryProperties ) );
30488 }
30489#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30490 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties PhysicalDevice::getMemoryProperties() const
30491 {
30492 PhysicalDeviceMemoryProperties memoryProperties;
30493 vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( &memoryProperties ) );
30494 return memoryProperties;
30495 }
30496#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30497
30498 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures( PhysicalDeviceFeatures* pFeatures ) const
30499 {
30500 vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( pFeatures ) );
30501 }
30502#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30503 VULKAN_HPP_INLINE PhysicalDeviceFeatures PhysicalDevice::getFeatures() const
30504 {
30505 PhysicalDeviceFeatures features;
30506 vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( &features ) );
30507 return features;
30508 }
30509#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30510
30511 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties( Format format, FormatProperties* pFormatProperties ) const
30512 {
30513 vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( pFormatProperties ) );
30514 }
30515#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30516 VULKAN_HPP_INLINE FormatProperties PhysicalDevice::getFormatProperties( Format format ) const
30517 {
30518 FormatProperties formatProperties;
30519 vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( &formatProperties ) );
30520 return formatProperties;
30521 }
30522#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30523
30524 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties ) const
30525 {
30526 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 ) ) );
30527 }
30528#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30529 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties>::type PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const
30530 {
30531 ImageFormatProperties imageFormatProperties;
30532 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 -060030533 return createResultValue( result, imageFormatProperties, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getImageFormatProperties" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030534 }
30535#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30536
30537 VULKAN_HPP_INLINE Result PhysicalDevice::createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice ) const
30538 {
30539 return static_cast<Result>( vkCreateDevice( m_physicalDevice, reinterpret_cast<const VkDeviceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDevice*>( pDevice ) ) );
30540 }
30541#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30542 VULKAN_HPP_INLINE ResultValueType<Device>::type PhysicalDevice::createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
30543 {
30544 Device device;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030545 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 -060030546 return createResultValue( result, device, "VULKAN_HPP_NAMESPACE::PhysicalDevice::createDevice" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030547 }
30548#ifndef VULKAN_HPP_NO_SMART_HANDLE
30549 VULKAN_HPP_INLINE UniqueDevice PhysicalDevice::createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
30550 {
30551 DeviceDeleter deleter( allocator );
30552 return UniqueDevice( createDevice( createInfo, allocator ), deleter );
30553 }
30554#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30555#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30556
30557 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties ) const
30558 {
30559 return static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
30560 }
30561#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30562 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030563 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type PhysicalDevice::enumerateDeviceLayerProperties() const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030564 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030565 std::vector<LayerProperties,Allocator> properties;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030566 uint32_t propertyCount;
30567 Result result;
30568 do
30569 {
30570 result = static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, nullptr ) );
30571 if ( ( result == Result::eSuccess ) && propertyCount )
30572 {
30573 properties.resize( propertyCount );
30574 result = static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
30575 }
30576 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030577 assert( propertyCount <= properties.size() );
30578 properties.resize( propertyCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030579 return createResultValue( result, properties, "VULKAN_HPP_NAMESPACE::PhysicalDevice::enumerateDeviceLayerProperties" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030580 }
30581#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30582
30583 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties ) const
30584 {
30585 return static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
30586 }
30587#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30588 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030589 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type PhysicalDevice::enumerateDeviceExtensionProperties( Optional<const std::string> layerName ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030590 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030591 std::vector<ExtensionProperties,Allocator> properties;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030592 uint32_t propertyCount;
30593 Result result;
30594 do
30595 {
30596 result = static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
30597 if ( ( result == Result::eSuccess ) && propertyCount )
30598 {
30599 properties.resize( propertyCount );
30600 result = static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
30601 }
30602 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030603 assert( propertyCount <= properties.size() );
30604 properties.resize( propertyCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030605 return createResultValue( result, properties, "VULKAN_HPP_NAMESPACE::PhysicalDevice::enumerateDeviceExtensionProperties" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030606 }
30607#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30608
30609 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling, uint32_t* pPropertyCount, SparseImageFormatProperties* pProperties ) const
30610 {
30611 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 ) );
30612 }
30613#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30614 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030615 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties,Allocator> PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030616 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030617 std::vector<SparseImageFormatProperties,Allocator> properties;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030618 uint32_t propertyCount;
30619 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 );
30620 properties.resize( propertyCount );
30621 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() ) );
30622 return properties;
30623 }
30624#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30625
30626 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties ) const
30627 {
30628 return static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( pProperties ) ) );
30629 }
30630#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30631 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030632 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPropertiesKHR() const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030633 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030634 std::vector<DisplayPropertiesKHR,Allocator> properties;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030635 uint32_t propertyCount;
30636 Result result;
30637 do
30638 {
30639 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
30640 if ( ( result == Result::eSuccess ) && propertyCount )
30641 {
30642 properties.resize( propertyCount );
30643 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( properties.data() ) ) );
30644 }
30645 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030646 assert( propertyCount <= properties.size() );
30647 properties.resize( propertyCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030648 return createResultValue( result, properties, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getDisplayPropertiesKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030649 }
30650#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30651
30652 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties ) const
30653 {
30654 return static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( pProperties ) ) );
30655 }
30656#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30657 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030658 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPlanePropertiesKHR() const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030659 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030660 std::vector<DisplayPlanePropertiesKHR,Allocator> properties;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030661 uint32_t propertyCount;
30662 Result result;
30663 do
30664 {
30665 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
30666 if ( ( result == Result::eSuccess ) && propertyCount )
30667 {
30668 properties.resize( propertyCount );
30669 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( properties.data() ) ) );
30670 }
30671 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030672 assert( propertyCount <= properties.size() );
30673 properties.resize( propertyCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030674 return createResultValue( result, properties, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getDisplayPlanePropertiesKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030675 }
30676#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30677
30678 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays ) const
30679 {
30680 return static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, pDisplayCount, reinterpret_cast<VkDisplayKHR*>( pDisplays ) ) );
30681 }
30682#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30683 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030684 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030685 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030686 std::vector<DisplayKHR,Allocator> displays;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030687 uint32_t displayCount;
30688 Result result;
30689 do
30690 {
30691 result = static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, nullptr ) );
30692 if ( ( result == Result::eSuccess ) && displayCount )
30693 {
30694 displays.resize( displayCount );
30695 result = static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, reinterpret_cast<VkDisplayKHR*>( displays.data() ) ) );
30696 }
30697 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030698 assert( displayCount <= displays.size() );
30699 displays.resize( displayCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030700 return createResultValue( result, displays, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030701 }
30702#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30703
30704 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties ) const
30705 {
30706 return static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), pPropertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( pProperties ) ) );
30707 }
30708#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30709 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030710 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030711 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030712 std::vector<DisplayModePropertiesKHR,Allocator> properties;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030713 uint32_t propertyCount;
30714 Result result;
30715 do
30716 {
30717 result = static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, nullptr ) );
30718 if ( ( result == Result::eSuccess ) && propertyCount )
30719 {
30720 properties.resize( propertyCount );
30721 result = static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( properties.data() ) ) );
30722 }
30723 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030724 assert( propertyCount <= properties.size() );
30725 properties.resize( propertyCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030726 return createResultValue( result, properties, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getDisplayModePropertiesKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030727 }
30728#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30729
30730 VULKAN_HPP_INLINE Result PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode ) const
30731 {
30732 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 ) ) );
30733 }
30734#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30735 VULKAN_HPP_INLINE ResultValueType<DisplayModeKHR>::type PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
30736 {
30737 DisplayModeKHR mode;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030738 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 -060030739 return createResultValue( result, mode, "VULKAN_HPP_NAMESPACE::PhysicalDevice::createDisplayModeKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030740 }
30741#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30742
30743 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities ) const
30744 {
30745 return static_cast<Result>( vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( pCapabilities ) ) );
30746 }
30747#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30748 VULKAN_HPP_INLINE ResultValueType<DisplayPlaneCapabilitiesKHR>::type PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex ) const
30749 {
30750 DisplayPlaneCapabilitiesKHR capabilities;
30751 Result result = static_cast<Result>( vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( &capabilities ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030752 return createResultValue( result, capabilities, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getDisplayPlaneCapabilitiesKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030753 }
30754#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30755
30756#ifdef VK_USE_PLATFORM_MIR_KHR
30757 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection ) const
30758 {
30759 return vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection );
30760 }
30761#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30762 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection ) const
30763 {
30764 return vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection );
30765 }
30766#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30767#endif /*VK_USE_PLATFORM_MIR_KHR*/
30768
30769 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported ) const
30770 {
30771 return static_cast<Result>( vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), pSupported ) );
30772 }
30773#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30774 VULKAN_HPP_INLINE ResultValueType<Bool32>::type PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface ) const
30775 {
30776 Bool32 supported;
30777 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), &supported ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030778 return createResultValue( result, supported, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getSurfaceSupportKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030779 }
30780#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30781
30782 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities ) const
30783 {
30784 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( pSurfaceCapabilities ) ) );
30785 }
30786#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30787 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilitiesKHR>::type PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface ) const
30788 {
30789 SurfaceCapabilitiesKHR surfaceCapabilities;
30790 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( &surfaceCapabilities ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030791 return createResultValue( result, surfaceCapabilities, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getSurfaceCapabilitiesKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030792 }
30793#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30794
30795 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats ) const
30796 {
30797 return static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pSurfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( pSurfaceFormats ) ) );
30798 }
30799#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30800 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030801 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030802 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030803 std::vector<SurfaceFormatKHR,Allocator> surfaceFormats;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030804 uint32_t surfaceFormatCount;
30805 Result result;
30806 do
30807 {
30808 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, nullptr ) );
30809 if ( ( result == Result::eSuccess ) && surfaceFormatCount )
30810 {
30811 surfaceFormats.resize( surfaceFormatCount );
30812 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( surfaceFormats.data() ) ) );
30813 }
30814 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030815 assert( surfaceFormatCount <= surfaceFormats.size() );
30816 surfaceFormats.resize( surfaceFormatCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030817 return createResultValue( result, surfaceFormats, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getSurfaceFormatsKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030818 }
30819#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30820
30821 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes ) const
30822 {
30823 return static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pPresentModeCount, reinterpret_cast<VkPresentModeKHR*>( pPresentModes ) ) );
30824 }
30825#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30826 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030827 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030828 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060030829 std::vector<PresentModeKHR,Allocator> presentModes;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030830 uint32_t presentModeCount;
30831 Result result;
30832 do
30833 {
30834 result = static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, nullptr ) );
30835 if ( ( result == Result::eSuccess ) && presentModeCount )
30836 {
30837 presentModes.resize( presentModeCount );
30838 result = static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, reinterpret_cast<VkPresentModeKHR*>( presentModes.data() ) ) );
30839 }
30840 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030841 assert( presentModeCount <= presentModes.size() );
30842 presentModes.resize( presentModeCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030843 return createResultValue( result, presentModes, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getSurfacePresentModesKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030844 }
30845#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30846
30847#ifdef VK_USE_PLATFORM_WAYLAND_KHR
30848 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display ) const
30849 {
30850 return vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, display );
30851 }
30852#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30853 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const
30854 {
30855 return vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &display );
30856 }
30857#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30858#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
30859
30860#ifdef VK_USE_PLATFORM_WIN32_KHR
30861 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const
30862 {
30863 return vkGetPhysicalDeviceWin32PresentationSupportKHR( m_physicalDevice, queueFamilyIndex );
30864 }
30865#endif /*VK_USE_PLATFORM_WIN32_KHR*/
30866
30867#ifdef VK_USE_PLATFORM_XLIB_KHR
30868 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const
30869 {
30870 return vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, dpy, visualID );
30871 }
30872#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30873 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const
30874 {
30875 return vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &dpy, visualID );
30876 }
30877#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30878#endif /*VK_USE_PLATFORM_XLIB_KHR*/
30879
30880#ifdef VK_USE_PLATFORM_XCB_KHR
30881 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const
30882 {
30883 return vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection, visual_id );
30884 }
30885#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30886 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const
30887 {
30888 return vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection, visual_id );
30889 }
30890#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30891#endif /*VK_USE_PLATFORM_XCB_KHR*/
30892
30893 VULKAN_HPP_INLINE Result PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const
30894 {
30895 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 ) ) );
30896 }
30897#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30898 VULKAN_HPP_INLINE ResultValueType<ExternalImageFormatPropertiesNV>::type PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType ) const
30899 {
30900 ExternalImageFormatPropertiesNV externalImageFormatProperties;
30901 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 -060030902 return createResultValue( result, externalImageFormatProperties, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getExternalImageFormatPropertiesNV" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030903 }
30904#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30905
30906 VULKAN_HPP_INLINE void PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits ) const
30907 {
30908 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( pFeatures ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( pLimits ) );
30909 }
30910#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30911 VULKAN_HPP_INLINE DeviceGeneratedCommandsLimitsNVX PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features ) const
30912 {
30913 DeviceGeneratedCommandsLimitsNVX limits;
30914 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( &features ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( &limits ) );
30915 return limits;
30916 }
30917#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30918
30919 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures2KHR( PhysicalDeviceFeatures2KHR* pFeatures ) const
30920 {
30921 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( pFeatures ) );
30922 }
30923#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30924 VULKAN_HPP_INLINE PhysicalDeviceFeatures2KHR PhysicalDevice::getFeatures2KHR() const
30925 {
30926 PhysicalDeviceFeatures2KHR features;
30927 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( &features ) );
30928 return features;
30929 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030930 template <typename ...T>
30931 VULKAN_HPP_INLINE StructureChain<T...> PhysicalDevice::getFeatures2KHR() const
30932 {
30933 StructureChain<T...> structureChain;
30934 PhysicalDeviceFeatures2KHR& features = structureChain.template get<PhysicalDeviceFeatures2KHR>();
30935 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( &features ) );
30936 return structureChain;
30937 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030938#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30939
30940 VULKAN_HPP_INLINE void PhysicalDevice::getProperties2KHR( PhysicalDeviceProperties2KHR* pProperties ) const
30941 {
30942 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( pProperties ) );
30943 }
30944#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30945 VULKAN_HPP_INLINE PhysicalDeviceProperties2KHR PhysicalDevice::getProperties2KHR() const
30946 {
30947 PhysicalDeviceProperties2KHR properties;
30948 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( &properties ) );
30949 return properties;
30950 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030951 template <typename ...T>
30952 VULKAN_HPP_INLINE StructureChain<T...> PhysicalDevice::getProperties2KHR() const
30953 {
30954 StructureChain<T...> structureChain;
30955 PhysicalDeviceProperties2KHR& properties = structureChain.template get<PhysicalDeviceProperties2KHR>();
30956 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( &properties ) );
30957 return structureChain;
30958 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030959#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30960
30961 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties2KHR( Format format, FormatProperties2KHR* pFormatProperties ) const
30962 {
30963 vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2KHR*>( pFormatProperties ) );
30964 }
30965#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30966 VULKAN_HPP_INLINE FormatProperties2KHR PhysicalDevice::getFormatProperties2KHR( Format format ) const
30967 {
30968 FormatProperties2KHR formatProperties;
30969 vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2KHR*>( &formatProperties ) );
30970 return formatProperties;
30971 }
30972#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30973
30974 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, ImageFormatProperties2KHR* pImageFormatProperties ) const
30975 {
30976 return static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( pImageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( pImageFormatProperties ) ) );
30977 }
30978#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30979 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties2KHR>::type PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const
30980 {
30981 ImageFormatProperties2KHR imageFormatProperties;
30982 Result result = static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( &imageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( &imageFormatProperties ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030983 return createResultValue( result, imageFormatProperties, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getImageFormatProperties2KHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030984 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030985 template <typename ...T>
30986 VULKAN_HPP_INLINE typename ResultValueType<StructureChain<T...>>::type PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const
30987 {
30988 StructureChain<T...> structureChain;
30989 ImageFormatProperties2KHR& imageFormatProperties = structureChain.template get<ImageFormatProperties2KHR>();
30990 Result result = static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( &imageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( &imageFormatProperties ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060030991 return createResultValue( result, structureChain, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getImageFormatProperties2KHR" );
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030992 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030993#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30994
30995 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2KHR* pQueueFamilyProperties ) const
30996 {
30997 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2KHR*>( pQueueFamilyProperties ) );
30998 }
30999#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31000 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031001 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties2KHR,Allocator> PhysicalDevice::getQueueFamilyProperties2KHR() const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031002 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031003 std::vector<QueueFamilyProperties2KHR,Allocator> queueFamilyProperties;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031004 uint32_t queueFamilyPropertyCount;
31005 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
31006 queueFamilyProperties.resize( queueFamilyPropertyCount );
31007 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2KHR*>( queueFamilyProperties.data() ) );
31008 return queueFamilyProperties;
31009 }
31010#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31011
31012 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2KHR* pMemoryProperties ) const
31013 {
31014 vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2KHR*>( pMemoryProperties ) );
31015 }
31016#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31017 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties2KHR PhysicalDevice::getMemoryProperties2KHR() const
31018 {
31019 PhysicalDeviceMemoryProperties2KHR memoryProperties;
31020 vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2KHR*>( &memoryProperties ) );
31021 return memoryProperties;
31022 }
31023#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31024
31025 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2KHR* pProperties ) const
31026 {
31027 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( pFormatInfo ), pPropertyCount, reinterpret_cast<VkSparseImageFormatProperties2KHR*>( pProperties ) );
31028 }
31029#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31030 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031031 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties2KHR,Allocator> PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR & formatInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031032 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031033 std::vector<SparseImageFormatProperties2KHR,Allocator> properties;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031034 uint32_t propertyCount;
31035 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( &formatInfo ), &propertyCount, nullptr );
31036 properties.resize( propertyCount );
31037 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( &formatInfo ), &propertyCount, reinterpret_cast<VkSparseImageFormatProperties2KHR*>( properties.data() ) );
31038 return properties;
31039 }
31040#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31041
Mark Youngabc2d6e2017-07-07 07:59:56 -060031042 VULKAN_HPP_INLINE void PhysicalDevice::getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfoKHR* pExternalBufferInfo, ExternalBufferPropertiesKHR* pExternalBufferProperties ) const
Mark Young0f183a82017-02-28 09:58:04 -070031043 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060031044 vkGetPhysicalDeviceExternalBufferPropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHR*>( pExternalBufferInfo ), reinterpret_cast<VkExternalBufferPropertiesKHR*>( pExternalBufferProperties ) );
Mark Young0f183a82017-02-28 09:58:04 -070031045 }
31046#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060031047 VULKAN_HPP_INLINE ExternalBufferPropertiesKHR PhysicalDevice::getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfoKHR & externalBufferInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070031048 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060031049 ExternalBufferPropertiesKHR externalBufferProperties;
31050 vkGetPhysicalDeviceExternalBufferPropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHR*>( &externalBufferInfo ), reinterpret_cast<VkExternalBufferPropertiesKHR*>( &externalBufferProperties ) );
Mark Young0f183a82017-02-28 09:58:04 -070031051 return externalBufferProperties;
31052 }
31053#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31054
Mark Youngabc2d6e2017-07-07 07:59:56 -060031055 VULKAN_HPP_INLINE void PhysicalDevice::getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfoKHR* pExternalSemaphoreInfo, ExternalSemaphorePropertiesKHR* pExternalSemaphoreProperties ) const
Mark Young0f183a82017-02-28 09:58:04 -070031056 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060031057 vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHR*>( pExternalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphorePropertiesKHR*>( pExternalSemaphoreProperties ) );
Mark Young0f183a82017-02-28 09:58:04 -070031058 }
31059#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060031060 VULKAN_HPP_INLINE ExternalSemaphorePropertiesKHR PhysicalDevice::getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfoKHR & externalSemaphoreInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070031061 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060031062 ExternalSemaphorePropertiesKHR externalSemaphoreProperties;
31063 vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHR*>( &externalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphorePropertiesKHR*>( &externalSemaphoreProperties ) );
Mark Young0f183a82017-02-28 09:58:04 -070031064 return externalSemaphoreProperties;
31065 }
31066#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31067
Mark Youngabc2d6e2017-07-07 07:59:56 -060031068 VULKAN_HPP_INLINE void PhysicalDevice::getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfoKHR* pExternalFenceInfo, ExternalFencePropertiesKHR* pExternalFenceProperties ) const
31069 {
31070 vkGetPhysicalDeviceExternalFencePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalFenceInfoKHR*>( pExternalFenceInfo ), reinterpret_cast<VkExternalFencePropertiesKHR*>( pExternalFenceProperties ) );
31071 }
31072#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31073 VULKAN_HPP_INLINE ExternalFencePropertiesKHR PhysicalDevice::getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfoKHR & externalFenceInfo ) const
31074 {
31075 ExternalFencePropertiesKHR externalFenceProperties;
31076 vkGetPhysicalDeviceExternalFencePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalFenceInfoKHR*>( &externalFenceInfo ), reinterpret_cast<VkExternalFencePropertiesKHR*>( &externalFenceProperties ) );
31077 return externalFenceProperties;
31078 }
31079#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31080
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031081#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
31082 VULKAN_HPP_INLINE Result PhysicalDevice::releaseDisplayEXT( DisplayKHR display ) const
31083 {
31084 return static_cast<Result>( vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
31085 }
31086#else
31087 VULKAN_HPP_INLINE ResultValueType<void>::type PhysicalDevice::releaseDisplayEXT( DisplayKHR display ) const
31088 {
31089 Result result = static_cast<Result>( vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031090 return createResultValue( result, "VULKAN_HPP_NAMESPACE::PhysicalDevice::releaseDisplayEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031091 }
31092#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31093
31094#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
31095 VULKAN_HPP_INLINE Result PhysicalDevice::acquireXlibDisplayEXT( Display* dpy, DisplayKHR display ) const
31096 {
31097 return static_cast<Result>( vkAcquireXlibDisplayEXT( m_physicalDevice, dpy, static_cast<VkDisplayKHR>( display ) ) );
31098 }
31099#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31100 VULKAN_HPP_INLINE ResultValueType<Display>::type PhysicalDevice::acquireXlibDisplayEXT( DisplayKHR display ) const
31101 {
31102 Display dpy;
31103 Result result = static_cast<Result>( vkAcquireXlibDisplayEXT( m_physicalDevice, &dpy, static_cast<VkDisplayKHR>( display ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031104 return createResultValue( result, dpy, "VULKAN_HPP_NAMESPACE::PhysicalDevice::acquireXlibDisplayEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031105 }
31106#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31107#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
31108
31109#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
31110 VULKAN_HPP_INLINE Result PhysicalDevice::getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay ) const
31111 {
31112 return static_cast<Result>( vkGetRandROutputDisplayEXT( m_physicalDevice, dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( pDisplay ) ) );
31113 }
31114#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31115 VULKAN_HPP_INLINE ResultValueType<DisplayKHR>::type PhysicalDevice::getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const
31116 {
31117 DisplayKHR display;
31118 Result result = static_cast<Result>( vkGetRandROutputDisplayEXT( m_physicalDevice, &dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( &display ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031119 return createResultValue( result, display, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getRandROutputDisplayEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031120 }
31121#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31122#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
31123
31124 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities ) const
31125 {
31126 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( pSurfaceCapabilities ) ) );
31127 }
31128#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31129 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilities2EXT>::type PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface ) const
31130 {
31131 SurfaceCapabilities2EXT surfaceCapabilities;
31132 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( &surfaceCapabilities ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031133 return createResultValue( result, surfaceCapabilities, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getSurfaceCapabilities2EXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031134 }
31135#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070031136
31137 VULKAN_HPP_INLINE Result PhysicalDevice::getPresentRectanglesKHX( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects ) const
31138 {
31139 return static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pRectCount, reinterpret_cast<VkRect2D*>( pRects ) ) );
31140 }
31141#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31142 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031143 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Rect2D,Allocator>>::type PhysicalDevice::getPresentRectanglesKHX( SurfaceKHR surface ) const
Mark Young0f183a82017-02-28 09:58:04 -070031144 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031145 std::vector<Rect2D,Allocator> rects;
Mark Young0f183a82017-02-28 09:58:04 -070031146 uint32_t rectCount;
31147 Result result;
31148 do
31149 {
31150 result = static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, nullptr ) );
31151 if ( ( result == Result::eSuccess ) && rectCount )
31152 {
31153 rects.resize( rectCount );
31154 result = static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, reinterpret_cast<VkRect2D*>( rects.data() ) ) );
31155 }
31156 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031157 assert( rectCount <= rects.size() );
31158 rects.resize( rectCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031159 return createResultValue( result, rects, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getPresentRectanglesKHX" );
Mark Young0f183a82017-02-28 09:58:04 -070031160 }
31161#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031162
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031163 VULKAN_HPP_INLINE void PhysicalDevice::getMultisamplePropertiesEXT( SampleCountFlagBits samples, MultisamplePropertiesEXT* pMultisampleProperties ) const
31164 {
31165 vkGetPhysicalDeviceMultisamplePropertiesEXT( m_physicalDevice, static_cast<VkSampleCountFlagBits>( samples ), reinterpret_cast<VkMultisamplePropertiesEXT*>( pMultisampleProperties ) );
31166 }
31167#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31168 VULKAN_HPP_INLINE MultisamplePropertiesEXT PhysicalDevice::getMultisamplePropertiesEXT( SampleCountFlagBits samples ) const
31169 {
31170 MultisamplePropertiesEXT multisampleProperties;
31171 vkGetPhysicalDeviceMultisamplePropertiesEXT( m_physicalDevice, static_cast<VkSampleCountFlagBits>( samples ), reinterpret_cast<VkMultisamplePropertiesEXT*>( &multisampleProperties ) );
31172 return multisampleProperties;
31173 }
31174#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31175
Mark Lobodzinski54385432017-05-15 10:27:52 -060031176 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, SurfaceCapabilities2KHR* pSurfaceCapabilities ) const
31177 {
31178 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( pSurfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( pSurfaceCapabilities ) ) );
31179 }
31180#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031181 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilities2KHR>::type PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
Mark Lobodzinski54385432017-05-15 10:27:52 -060031182 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031183 SurfaceCapabilities2KHR surfaceCapabilities;
Mark Lobodzinski54385432017-05-15 10:27:52 -060031184 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( &surfaceCapabilities ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031185 return createResultValue( result, surfaceCapabilities, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getSurfaceCapabilities2KHR" );
Mark Lobodzinski54385432017-05-15 10:27:52 -060031186 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031187 template <typename ...T>
31188 VULKAN_HPP_INLINE typename ResultValueType<StructureChain<T...>>::type PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
31189 {
31190 StructureChain<T...> structureChain;
31191 SurfaceCapabilities2KHR& surfaceCapabilities = structureChain.template get<SurfaceCapabilities2KHR>();
31192 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( &surfaceCapabilities ) ) );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031193 return createResultValue( result, structureChain, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getSurfaceCapabilities2KHR" );
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031194 }
Mark Lobodzinski54385432017-05-15 10:27:52 -060031195#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31196
31197 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, SurfaceFormat2KHR* pSurfaceFormats ) const
31198 {
31199 return static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( pSurfaceInfo ), pSurfaceFormatCount, reinterpret_cast<VkSurfaceFormat2KHR*>( pSurfaceFormats ) ) );
31200 }
31201#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31202 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031203 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormat2KHR,Allocator>>::type PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
Mark Lobodzinski54385432017-05-15 10:27:52 -060031204 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031205 std::vector<SurfaceFormat2KHR,Allocator> surfaceFormats;
Mark Lobodzinski54385432017-05-15 10:27:52 -060031206 uint32_t surfaceFormatCount;
31207 Result result;
31208 do
31209 {
31210 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), &surfaceFormatCount, nullptr ) );
31211 if ( ( result == Result::eSuccess ) && surfaceFormatCount )
31212 {
31213 surfaceFormats.resize( surfaceFormatCount );
31214 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormat2KHR*>( surfaceFormats.data() ) ) );
31215 }
31216 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031217 assert( surfaceFormatCount <= surfaceFormats.size() );
31218 surfaceFormats.resize( surfaceFormatCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031219 return createResultValue( result, surfaceFormats, "VULKAN_HPP_NAMESPACE::PhysicalDevice::getSurfaceFormats2KHR" );
Mark Lobodzinski54385432017-05-15 10:27:52 -060031220 }
31221#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31222
Mark Young0f183a82017-02-28 09:58:04 -070031223 struct CmdProcessCommandsInfoNVX
31224 {
31225 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 )
31226 : sType( StructureType::eCmdProcessCommandsInfoNVX )
31227 , pNext( nullptr )
31228 , objectTable( objectTable_ )
31229 , indirectCommandsLayout( indirectCommandsLayout_ )
31230 , indirectCommandsTokenCount( indirectCommandsTokenCount_ )
31231 , pIndirectCommandsTokens( pIndirectCommandsTokens_ )
31232 , maxSequencesCount( maxSequencesCount_ )
31233 , targetCommandBuffer( targetCommandBuffer_ )
31234 , sequencesCountBuffer( sequencesCountBuffer_ )
31235 , sequencesCountOffset( sequencesCountOffset_ )
31236 , sequencesIndexBuffer( sequencesIndexBuffer_ )
31237 , sequencesIndexOffset( sequencesIndexOffset_ )
31238 {
31239 }
31240
31241 CmdProcessCommandsInfoNVX( VkCmdProcessCommandsInfoNVX const & rhs )
31242 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031243 memcpy( this, &rhs, sizeof( CmdProcessCommandsInfoNVX ) );
Mark Young0f183a82017-02-28 09:58:04 -070031244 }
31245
31246 CmdProcessCommandsInfoNVX& operator=( VkCmdProcessCommandsInfoNVX const & rhs )
31247 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031248 memcpy( this, &rhs, sizeof( CmdProcessCommandsInfoNVX ) );
Mark Young0f183a82017-02-28 09:58:04 -070031249 return *this;
31250 }
Mark Young0f183a82017-02-28 09:58:04 -070031251 CmdProcessCommandsInfoNVX& setPNext( const void* pNext_ )
31252 {
31253 pNext = pNext_;
31254 return *this;
31255 }
31256
31257 CmdProcessCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
31258 {
31259 objectTable = objectTable_;
31260 return *this;
31261 }
31262
31263 CmdProcessCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
31264 {
31265 indirectCommandsLayout = indirectCommandsLayout_;
31266 return *this;
31267 }
31268
31269 CmdProcessCommandsInfoNVX& setIndirectCommandsTokenCount( uint32_t indirectCommandsTokenCount_ )
31270 {
31271 indirectCommandsTokenCount = indirectCommandsTokenCount_;
31272 return *this;
31273 }
31274
31275 CmdProcessCommandsInfoNVX& setPIndirectCommandsTokens( const IndirectCommandsTokenNVX* pIndirectCommandsTokens_ )
31276 {
31277 pIndirectCommandsTokens = pIndirectCommandsTokens_;
31278 return *this;
31279 }
31280
31281 CmdProcessCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
31282 {
31283 maxSequencesCount = maxSequencesCount_;
31284 return *this;
31285 }
31286
31287 CmdProcessCommandsInfoNVX& setTargetCommandBuffer( CommandBuffer targetCommandBuffer_ )
31288 {
31289 targetCommandBuffer = targetCommandBuffer_;
31290 return *this;
31291 }
31292
31293 CmdProcessCommandsInfoNVX& setSequencesCountBuffer( Buffer sequencesCountBuffer_ )
31294 {
31295 sequencesCountBuffer = sequencesCountBuffer_;
31296 return *this;
31297 }
31298
31299 CmdProcessCommandsInfoNVX& setSequencesCountOffset( DeviceSize sequencesCountOffset_ )
31300 {
31301 sequencesCountOffset = sequencesCountOffset_;
31302 return *this;
31303 }
31304
31305 CmdProcessCommandsInfoNVX& setSequencesIndexBuffer( Buffer sequencesIndexBuffer_ )
31306 {
31307 sequencesIndexBuffer = sequencesIndexBuffer_;
31308 return *this;
31309 }
31310
31311 CmdProcessCommandsInfoNVX& setSequencesIndexOffset( DeviceSize sequencesIndexOffset_ )
31312 {
31313 sequencesIndexOffset = sequencesIndexOffset_;
31314 return *this;
31315 }
31316
31317 operator const VkCmdProcessCommandsInfoNVX&() const
31318 {
31319 return *reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>(this);
31320 }
31321
31322 bool operator==( CmdProcessCommandsInfoNVX const& rhs ) const
31323 {
31324 return ( sType == rhs.sType )
31325 && ( pNext == rhs.pNext )
31326 && ( objectTable == rhs.objectTable )
31327 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
31328 && ( indirectCommandsTokenCount == rhs.indirectCommandsTokenCount )
31329 && ( pIndirectCommandsTokens == rhs.pIndirectCommandsTokens )
31330 && ( maxSequencesCount == rhs.maxSequencesCount )
31331 && ( targetCommandBuffer == rhs.targetCommandBuffer )
31332 && ( sequencesCountBuffer == rhs.sequencesCountBuffer )
31333 && ( sequencesCountOffset == rhs.sequencesCountOffset )
31334 && ( sequencesIndexBuffer == rhs.sequencesIndexBuffer )
31335 && ( sequencesIndexOffset == rhs.sequencesIndexOffset );
31336 }
31337
31338 bool operator!=( CmdProcessCommandsInfoNVX const& rhs ) const
31339 {
31340 return !operator==( rhs );
31341 }
31342
31343 private:
31344 StructureType sType;
31345
31346 public:
31347 const void* pNext;
31348 ObjectTableNVX objectTable;
31349 IndirectCommandsLayoutNVX indirectCommandsLayout;
31350 uint32_t indirectCommandsTokenCount;
31351 const IndirectCommandsTokenNVX* pIndirectCommandsTokens;
31352 uint32_t maxSequencesCount;
31353 CommandBuffer targetCommandBuffer;
31354 Buffer sequencesCountBuffer;
31355 DeviceSize sequencesCountOffset;
31356 Buffer sequencesIndexBuffer;
31357 DeviceSize sequencesIndexOffset;
31358 };
31359 static_assert( sizeof( CmdProcessCommandsInfoNVX ) == sizeof( VkCmdProcessCommandsInfoNVX ), "struct and wrapper have different size!" );
31360
31361 struct PhysicalDeviceGroupPropertiesKHX
31362 {
31363 operator const VkPhysicalDeviceGroupPropertiesKHX&() const
31364 {
31365 return *reinterpret_cast<const VkPhysicalDeviceGroupPropertiesKHX*>(this);
31366 }
31367
31368 bool operator==( PhysicalDeviceGroupPropertiesKHX const& rhs ) const
31369 {
31370 return ( sType == rhs.sType )
31371 && ( pNext == rhs.pNext )
31372 && ( physicalDeviceCount == rhs.physicalDeviceCount )
31373 && ( memcmp( physicalDevices, rhs.physicalDevices, VK_MAX_DEVICE_GROUP_SIZE_KHX * sizeof( PhysicalDevice ) ) == 0 )
31374 && ( subsetAllocation == rhs.subsetAllocation );
31375 }
31376
31377 bool operator!=( PhysicalDeviceGroupPropertiesKHX const& rhs ) const
31378 {
31379 return !operator==( rhs );
31380 }
31381
31382 private:
31383 StructureType sType;
31384
31385 public:
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060031386 void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070031387 uint32_t physicalDeviceCount;
31388 PhysicalDevice physicalDevices[VK_MAX_DEVICE_GROUP_SIZE_KHX];
31389 Bool32 subsetAllocation;
31390 };
31391 static_assert( sizeof( PhysicalDeviceGroupPropertiesKHX ) == sizeof( VkPhysicalDeviceGroupPropertiesKHX ), "struct and wrapper have different size!" );
31392
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031393#ifndef VULKAN_HPP_NO_SMART_HANDLE
31394 class DebugReportCallbackEXTDeleter;
31395 using UniqueDebugReportCallbackEXT = UniqueHandle<DebugReportCallbackEXT, DebugReportCallbackEXTDeleter>;
31396 class SurfaceKHRDeleter;
31397 using UniqueSurfaceKHR = UniqueHandle<SurfaceKHR, SurfaceKHRDeleter>;
31398#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31399
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031400 class Instance
31401 {
31402 public:
31403 Instance()
31404 : m_instance(VK_NULL_HANDLE)
31405 {}
31406
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070031407 Instance( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031408 : m_instance(VK_NULL_HANDLE)
31409 {}
31410
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031411 VULKAN_HPP_TYPESAFE_EXPLICIT Instance( VkInstance instance )
31412 : m_instance( instance )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031413 {}
31414
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070031415#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031416 Instance & operator=(VkInstance instance)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031417 {
31418 m_instance = instance;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031419 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031420 }
31421#endif
31422
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031423 Instance & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031424 {
31425 m_instance = VK_NULL_HANDLE;
31426 return *this;
31427 }
31428
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031429 bool operator==( Instance const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060031430 {
31431 return m_instance == rhs.m_instance;
31432 }
31433
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031434 bool operator!=(Instance const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060031435 {
31436 return m_instance != rhs.m_instance;
31437 }
31438
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031439 bool operator<(Instance const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060031440 {
31441 return m_instance < rhs.m_instance;
31442 }
31443
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031444 void destroy( const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031445#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031446 void destroy( Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031447#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31448
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031449 Result enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031450#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031451 template <typename Allocator = std::allocator<PhysicalDevice>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031452 typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type enumeratePhysicalDevices() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031453#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31454
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031455 PFN_vkVoidFunction getProcAddr( const char* pName ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031456#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031457 PFN_vkVoidFunction getProcAddr( const std::string & name ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031458#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31459
31460#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031461 Result createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031462#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031463 ResultValueType<SurfaceKHR>::type createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31464#ifndef VULKAN_HPP_NO_SMART_HANDLE
31465 UniqueSurfaceKHR createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31466#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031467#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031468#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031469
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031470 Result createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031471#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031472 ResultValueType<SurfaceKHR>::type createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31473#ifndef VULKAN_HPP_NO_SMART_HANDLE
31474 UniqueSurfaceKHR createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31475#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031476#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31477
31478#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031479 Result createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031480#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031481 ResultValueType<SurfaceKHR>::type createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31482#ifndef VULKAN_HPP_NO_SMART_HANDLE
31483 UniqueSurfaceKHR createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31484#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031485#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031486#endif /*VK_USE_PLATFORM_MIR_KHR*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031487
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031488 void destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031489#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031490 void destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031491#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31492
Mark Young39389872017-01-19 21:10:49 -070031493#ifdef VK_USE_PLATFORM_VI_NN
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031494 Result createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31495#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31496 ResultValueType<SurfaceKHR>::type createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31497#ifndef VULKAN_HPP_NO_SMART_HANDLE
31498 UniqueSurfaceKHR createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31499#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31500#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young39389872017-01-19 21:10:49 -070031501#endif /*VK_USE_PLATFORM_VI_NN*/
31502
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031503#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031504 Result createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31505#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31506 ResultValueType<SurfaceKHR>::type createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31507#ifndef VULKAN_HPP_NO_SMART_HANDLE
31508 UniqueSurfaceKHR createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31509#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31510#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031511#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
31512
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031513#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031514 Result createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31515#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31516 ResultValueType<SurfaceKHR>::type createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31517#ifndef VULKAN_HPP_NO_SMART_HANDLE
31518 UniqueSurfaceKHR createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31519#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31520#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031521#endif /*VK_USE_PLATFORM_WIN32_KHR*/
31522
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031523#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031524 Result createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31525#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31526 ResultValueType<SurfaceKHR>::type createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31527#ifndef VULKAN_HPP_NO_SMART_HANDLE
31528 UniqueSurfaceKHR createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31529#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31530#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031531#endif /*VK_USE_PLATFORM_XLIB_KHR*/
31532
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031533#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031534 Result createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31535#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31536 ResultValueType<SurfaceKHR>::type createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31537#ifndef VULKAN_HPP_NO_SMART_HANDLE
31538 UniqueSurfaceKHR createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31539#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31540#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031541#endif /*VK_USE_PLATFORM_XCB_KHR*/
31542
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031543 Result createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031544#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031545 ResultValueType<DebugReportCallbackEXT>::type createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31546#ifndef VULKAN_HPP_NO_SMART_HANDLE
31547 UniqueDebugReportCallbackEXT createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31548#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031549#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31550
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031551 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031552#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031553 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031554#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31555
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031556 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 -060031557#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031558 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 -060031559#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31560
Mark Young0f183a82017-02-28 09:58:04 -070031561 Result enumeratePhysicalDeviceGroupsKHX( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ) const;
31562#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31563 template <typename Allocator = std::allocator<PhysicalDeviceGroupPropertiesKHX>>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031564 typename ResultValueType<std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator>>::type enumeratePhysicalDeviceGroupsKHX() const;
Mark Young0f183a82017-02-28 09:58:04 -070031565#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31566
31567#ifdef VK_USE_PLATFORM_IOS_MVK
31568 Result createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31569#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31570 ResultValueType<SurfaceKHR>::type createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31571#ifndef VULKAN_HPP_NO_SMART_HANDLE
31572 UniqueSurfaceKHR createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31573#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31574#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31575#endif /*VK_USE_PLATFORM_IOS_MVK*/
31576
31577#ifdef VK_USE_PLATFORM_MACOS_MVK
31578 Result createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31579#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31580 ResultValueType<SurfaceKHR>::type createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31581#ifndef VULKAN_HPP_NO_SMART_HANDLE
31582 UniqueSurfaceKHR createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31583#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31584#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31585#endif /*VK_USE_PLATFORM_MACOS_MVK*/
31586
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031587
31588
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070031589 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkInstance() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031590 {
31591 return m_instance;
31592 }
31593
31594 explicit operator bool() const
31595 {
31596 return m_instance != VK_NULL_HANDLE;
31597 }
31598
31599 bool operator!() const
31600 {
31601 return m_instance == VK_NULL_HANDLE;
31602 }
31603
31604 private:
31605 VkInstance m_instance;
31606 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031607
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031608 static_assert( sizeof( Instance ) == sizeof( VkInstance ), "handle and wrapper have different size!" );
31609
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031610#ifndef VULKAN_HPP_NO_SMART_HANDLE
31611 class DebugReportCallbackEXTDeleter
31612 {
31613 public:
31614 DebugReportCallbackEXTDeleter( Instance instance = Instance(), Optional<const AllocationCallbacks> allocator = nullptr )
31615 : m_instance( instance )
31616 , m_allocator( allocator )
31617 {}
31618
31619 void operator()( DebugReportCallbackEXT debugReportCallbackEXT )
31620 {
31621 m_instance.destroyDebugReportCallbackEXT( debugReportCallbackEXT, m_allocator );
31622 }
31623
31624 private:
31625 Instance m_instance;
31626 Optional<const AllocationCallbacks> m_allocator;
31627 };
31628
31629 class SurfaceKHRDeleter
31630 {
31631 public:
31632 SurfaceKHRDeleter( Instance instance = Instance(), Optional<const AllocationCallbacks> allocator = nullptr )
31633 : m_instance( instance )
31634 , m_allocator( allocator )
31635 {}
31636
31637 void operator()( SurfaceKHR surfaceKHR )
31638 {
31639 m_instance.destroySurfaceKHR( surfaceKHR, m_allocator );
31640 }
31641
31642 private:
31643 Instance m_instance;
31644 Optional<const AllocationCallbacks> m_allocator;
31645 };
31646#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31647
31648 VULKAN_HPP_INLINE void Instance::destroy( const AllocationCallbacks* pAllocator ) const
31649 {
31650 vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
31651 }
31652#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31653 VULKAN_HPP_INLINE void Instance::destroy( Optional<const AllocationCallbacks> allocator ) const
31654 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031655 vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031656 }
31657#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31658
31659 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices ) const
31660 {
31661 return static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, pPhysicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( pPhysicalDevices ) ) );
31662 }
31663#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31664 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031665 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type Instance::enumeratePhysicalDevices() const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031666 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031667 std::vector<PhysicalDevice,Allocator> physicalDevices;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031668 uint32_t physicalDeviceCount;
31669 Result result;
31670 do
31671 {
31672 result = static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, nullptr ) );
31673 if ( ( result == Result::eSuccess ) && physicalDeviceCount )
31674 {
31675 physicalDevices.resize( physicalDeviceCount );
31676 result = static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( physicalDevices.data() ) ) );
31677 }
31678 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031679 assert( physicalDeviceCount <= physicalDevices.size() );
31680 physicalDevices.resize( physicalDeviceCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031681 return createResultValue( result, physicalDevices, "VULKAN_HPP_NAMESPACE::Instance::enumeratePhysicalDevices" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031682 }
31683#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31684
31685 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const char* pName ) const
31686 {
31687 return vkGetInstanceProcAddr( m_instance, pName );
31688 }
31689#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31690 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const std::string & name ) const
31691 {
31692 return vkGetInstanceProcAddr( m_instance, name.c_str() );
31693 }
31694#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31695
31696#ifdef VK_USE_PLATFORM_ANDROID_KHR
31697 VULKAN_HPP_INLINE Result Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31698 {
31699 return static_cast<Result>( vkCreateAndroidSurfaceKHR( m_instance, reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31700 }
31701#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31702 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31703 {
31704 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031705 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 -060031706 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createAndroidSurfaceKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031707 }
31708#ifndef VULKAN_HPP_NO_SMART_HANDLE
31709 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31710 {
31711 SurfaceKHRDeleter deleter( *this, allocator );
31712 return UniqueSurfaceKHR( createAndroidSurfaceKHR( createInfo, allocator ), deleter );
31713 }
31714#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31715#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31716#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
31717
31718 VULKAN_HPP_INLINE Result Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31719 {
31720 return static_cast<Result>( vkCreateDisplayPlaneSurfaceKHR( m_instance, reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31721 }
31722#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31723 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31724 {
31725 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031726 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 -060031727 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createDisplayPlaneSurfaceKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031728 }
31729#ifndef VULKAN_HPP_NO_SMART_HANDLE
31730 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31731 {
31732 SurfaceKHRDeleter deleter( *this, allocator );
31733 return UniqueSurfaceKHR( createDisplayPlaneSurfaceKHR( createInfo, allocator ), deleter );
31734 }
31735#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31736#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31737
31738#ifdef VK_USE_PLATFORM_MIR_KHR
31739 VULKAN_HPP_INLINE Result Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31740 {
31741 return static_cast<Result>( vkCreateMirSurfaceKHR( m_instance, reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31742 }
31743#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31744 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31745 {
31746 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031747 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 -060031748 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createMirSurfaceKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031749 }
31750#ifndef VULKAN_HPP_NO_SMART_HANDLE
31751 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31752 {
31753 SurfaceKHRDeleter deleter( *this, allocator );
31754 return UniqueSurfaceKHR( createMirSurfaceKHR( createInfo, allocator ), deleter );
31755 }
31756#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31757#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31758#endif /*VK_USE_PLATFORM_MIR_KHR*/
31759
31760 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator ) const
31761 {
31762 vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
31763 }
31764#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31765 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator ) const
31766 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031767 vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031768 }
31769#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31770
31771#ifdef VK_USE_PLATFORM_VI_NN
31772 VULKAN_HPP_INLINE Result Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31773 {
31774 return static_cast<Result>( vkCreateViSurfaceNN( m_instance, reinterpret_cast<const VkViSurfaceCreateInfoNN*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31775 }
31776#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31777 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator ) const
31778 {
31779 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031780 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 -060031781 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createViSurfaceNN" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031782 }
31783#ifndef VULKAN_HPP_NO_SMART_HANDLE
31784 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator ) const
31785 {
31786 SurfaceKHRDeleter deleter( *this, allocator );
31787 return UniqueSurfaceKHR( createViSurfaceNN( createInfo, allocator ), deleter );
31788 }
31789#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31790#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31791#endif /*VK_USE_PLATFORM_VI_NN*/
31792
31793#ifdef VK_USE_PLATFORM_WAYLAND_KHR
31794 VULKAN_HPP_INLINE Result Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31795 {
31796 return static_cast<Result>( vkCreateWaylandSurfaceKHR( m_instance, reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31797 }
31798#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31799 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31800 {
31801 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031802 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 -060031803 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createWaylandSurfaceKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031804 }
31805#ifndef VULKAN_HPP_NO_SMART_HANDLE
31806 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31807 {
31808 SurfaceKHRDeleter deleter( *this, allocator );
31809 return UniqueSurfaceKHR( createWaylandSurfaceKHR( createInfo, allocator ), deleter );
31810 }
31811#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31812#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31813#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
31814
31815#ifdef VK_USE_PLATFORM_WIN32_KHR
31816 VULKAN_HPP_INLINE Result Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31817 {
31818 return static_cast<Result>( vkCreateWin32SurfaceKHR( m_instance, reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31819 }
31820#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31821 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31822 {
31823 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031824 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 -060031825 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createWin32SurfaceKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031826 }
31827#ifndef VULKAN_HPP_NO_SMART_HANDLE
31828 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31829 {
31830 SurfaceKHRDeleter deleter( *this, allocator );
31831 return UniqueSurfaceKHR( createWin32SurfaceKHR( createInfo, allocator ), deleter );
31832 }
31833#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31834#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31835#endif /*VK_USE_PLATFORM_WIN32_KHR*/
31836
31837#ifdef VK_USE_PLATFORM_XLIB_KHR
31838 VULKAN_HPP_INLINE Result Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31839 {
31840 return static_cast<Result>( vkCreateXlibSurfaceKHR( m_instance, reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31841 }
31842#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31843 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31844 {
31845 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031846 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 -060031847 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createXlibSurfaceKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031848 }
31849#ifndef VULKAN_HPP_NO_SMART_HANDLE
31850 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31851 {
31852 SurfaceKHRDeleter deleter( *this, allocator );
31853 return UniqueSurfaceKHR( createXlibSurfaceKHR( createInfo, allocator ), deleter );
31854 }
31855#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31856#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31857#endif /*VK_USE_PLATFORM_XLIB_KHR*/
31858
31859#ifdef VK_USE_PLATFORM_XCB_KHR
31860 VULKAN_HPP_INLINE Result Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31861 {
31862 return static_cast<Result>( vkCreateXcbSurfaceKHR( m_instance, reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31863 }
31864#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31865 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31866 {
31867 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031868 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 -060031869 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createXcbSurfaceKHR" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031870 }
31871#ifndef VULKAN_HPP_NO_SMART_HANDLE
31872 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31873 {
31874 SurfaceKHRDeleter deleter( *this, allocator );
31875 return UniqueSurfaceKHR( createXcbSurfaceKHR( createInfo, allocator ), deleter );
31876 }
31877#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31878#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31879#endif /*VK_USE_PLATFORM_XCB_KHR*/
31880
31881 VULKAN_HPP_INLINE Result Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback ) const
31882 {
31883 return static_cast<Result>( vkCreateDebugReportCallbackEXT( m_instance, reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDebugReportCallbackEXT*>( pCallback ) ) );
31884 }
31885#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31886 VULKAN_HPP_INLINE ResultValueType<DebugReportCallbackEXT>::type Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
31887 {
31888 DebugReportCallbackEXT callback;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031889 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 -060031890 return createResultValue( result, callback, "VULKAN_HPP_NAMESPACE::Instance::createDebugReportCallbackEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031891 }
31892#ifndef VULKAN_HPP_NO_SMART_HANDLE
31893 VULKAN_HPP_INLINE UniqueDebugReportCallbackEXT Instance::createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
31894 {
31895 DebugReportCallbackEXTDeleter deleter( *this, allocator );
31896 return UniqueDebugReportCallbackEXT( createDebugReportCallbackEXT( createInfo, allocator ), deleter );
31897 }
31898#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31899#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31900
31901 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator ) const
31902 {
31903 vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
31904 }
31905#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31906 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator ) const
31907 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031908 vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031909 }
31910#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31911
31912 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
31913 {
31914 vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, pLayerPrefix, pMessage );
31915 }
31916#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31917 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
31918 {
31919#ifdef VULKAN_HPP_NO_EXCEPTIONS
31920 assert( layerPrefix.size() == message.size() );
31921#else
31922 if ( layerPrefix.size() != message.size() )
31923 {
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031924 throw LogicError( "VULKAN_HPP_NAMESPACE::Instance::debugReportMessageEXT: layerPrefix.size() != message.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031925 }
31926#endif // VULKAN_HPP_NO_EXCEPTIONS
31927 vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, layerPrefix.c_str(), message.c_str() );
31928 }
31929#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070031930
31931 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDeviceGroupsKHX( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ) const
Lenny Komow68432d72016-09-29 14:16:59 -060031932 {
Mark Young0f183a82017-02-28 09:58:04 -070031933 return static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, pPhysicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupPropertiesKHX*>( pPhysicalDeviceGroupProperties ) ) );
31934 }
31935#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31936 template <typename Allocator>
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031937 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator>>::type Instance::enumeratePhysicalDeviceGroupsKHX() const
Mark Young0f183a82017-02-28 09:58:04 -070031938 {
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060031939 std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator> physicalDeviceGroupProperties;
Mark Young0f183a82017-02-28 09:58:04 -070031940 uint32_t physicalDeviceGroupCount;
31941 Result result;
31942 do
31943 {
31944 result = static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, &physicalDeviceGroupCount, nullptr ) );
31945 if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount )
31946 {
31947 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
31948 result = static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, &physicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupPropertiesKHX*>( physicalDeviceGroupProperties.data() ) ) );
31949 }
31950 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031951 assert( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() );
31952 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060031953 return createResultValue( result, physicalDeviceGroupProperties, "VULKAN_HPP_NAMESPACE::Instance::enumeratePhysicalDeviceGroupsKHX" );
Mark Young0f183a82017-02-28 09:58:04 -070031954 }
31955#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31956
31957#ifdef VK_USE_PLATFORM_IOS_MVK
31958 VULKAN_HPP_INLINE Result Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31959 {
31960 return static_cast<Result>( vkCreateIOSSurfaceMVK( m_instance, reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31961 }
31962#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31963 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
31964 {
31965 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031966 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 -060031967 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createIOSSurfaceMVK" );
Mark Young0f183a82017-02-28 09:58:04 -070031968 }
31969#ifndef VULKAN_HPP_NO_SMART_HANDLE
31970 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
31971 {
31972 SurfaceKHRDeleter deleter( *this, allocator );
31973 return UniqueSurfaceKHR( createIOSSurfaceMVK( createInfo, allocator ), deleter );
31974 }
31975#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31976#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31977#endif /*VK_USE_PLATFORM_IOS_MVK*/
31978
31979#ifdef VK_USE_PLATFORM_MACOS_MVK
31980 VULKAN_HPP_INLINE Result Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31981 {
31982 return static_cast<Result>( vkCreateMacOSSurfaceMVK( m_instance, reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31983 }
31984#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31985 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
31986 {
31987 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031988 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 -060031989 return createResultValue( result, surface, "VULKAN_HPP_NAMESPACE::Instance::createMacOSSurfaceMVK" );
Mark Young0f183a82017-02-28 09:58:04 -070031990 }
31991#ifndef VULKAN_HPP_NO_SMART_HANDLE
31992 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
31993 {
31994 SurfaceKHRDeleter deleter( *this, allocator );
31995 return UniqueSurfaceKHR( createMacOSSurfaceMVK( createInfo, allocator ), deleter );
31996 }
31997#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31998#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31999#endif /*VK_USE_PLATFORM_MACOS_MVK*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060032000
Mark Young0f183a82017-02-28 09:58:04 -070032001 struct DeviceGroupDeviceCreateInfoKHX
32002 {
32003 DeviceGroupDeviceCreateInfoKHX( uint32_t physicalDeviceCount_ = 0, const PhysicalDevice* pPhysicalDevices_ = nullptr )
32004 : sType( StructureType::eDeviceGroupDeviceCreateInfoKHX )
Lenny Komow68432d72016-09-29 14:16:59 -060032005 , pNext( nullptr )
Mark Young0f183a82017-02-28 09:58:04 -070032006 , physicalDeviceCount( physicalDeviceCount_ )
32007 , pPhysicalDevices( pPhysicalDevices_ )
Lenny Komow68432d72016-09-29 14:16:59 -060032008 {
32009 }
32010
Mark Young0f183a82017-02-28 09:58:04 -070032011 DeviceGroupDeviceCreateInfoKHX( VkDeviceGroupDeviceCreateInfoKHX const & rhs )
Lenny Komow68432d72016-09-29 14:16:59 -060032012 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060032013 memcpy( this, &rhs, sizeof( DeviceGroupDeviceCreateInfoKHX ) );
Lenny Komow68432d72016-09-29 14:16:59 -060032014 }
32015
Mark Young0f183a82017-02-28 09:58:04 -070032016 DeviceGroupDeviceCreateInfoKHX& operator=( VkDeviceGroupDeviceCreateInfoKHX const & rhs )
Lenny Komow68432d72016-09-29 14:16:59 -060032017 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060032018 memcpy( this, &rhs, sizeof( DeviceGroupDeviceCreateInfoKHX ) );
Lenny Komow68432d72016-09-29 14:16:59 -060032019 return *this;
32020 }
Mark Young0f183a82017-02-28 09:58:04 -070032021 DeviceGroupDeviceCreateInfoKHX& setPNext( const void* pNext_ )
Lenny Komow68432d72016-09-29 14:16:59 -060032022 {
32023 pNext = pNext_;
32024 return *this;
32025 }
32026
Mark Young0f183a82017-02-28 09:58:04 -070032027 DeviceGroupDeviceCreateInfoKHX& setPhysicalDeviceCount( uint32_t physicalDeviceCount_ )
Lenny Komow68432d72016-09-29 14:16:59 -060032028 {
Mark Young0f183a82017-02-28 09:58:04 -070032029 physicalDeviceCount = physicalDeviceCount_;
Lenny Komow68432d72016-09-29 14:16:59 -060032030 return *this;
32031 }
32032
Mark Young0f183a82017-02-28 09:58:04 -070032033 DeviceGroupDeviceCreateInfoKHX& setPPhysicalDevices( const PhysicalDevice* pPhysicalDevices_ )
Lenny Komow68432d72016-09-29 14:16:59 -060032034 {
Mark Young0f183a82017-02-28 09:58:04 -070032035 pPhysicalDevices = pPhysicalDevices_;
Lenny Komow68432d72016-09-29 14:16:59 -060032036 return *this;
32037 }
32038
Mark Young0f183a82017-02-28 09:58:04 -070032039 operator const VkDeviceGroupDeviceCreateInfoKHX&() const
Lenny Komow68432d72016-09-29 14:16:59 -060032040 {
Mark Young0f183a82017-02-28 09:58:04 -070032041 return *reinterpret_cast<const VkDeviceGroupDeviceCreateInfoKHX*>(this);
Lenny Komow68432d72016-09-29 14:16:59 -060032042 }
32043
Mark Young0f183a82017-02-28 09:58:04 -070032044 bool operator==( DeviceGroupDeviceCreateInfoKHX const& rhs ) const
Lenny Komow68432d72016-09-29 14:16:59 -060032045 {
32046 return ( sType == rhs.sType )
32047 && ( pNext == rhs.pNext )
Mark Young0f183a82017-02-28 09:58:04 -070032048 && ( physicalDeviceCount == rhs.physicalDeviceCount )
32049 && ( pPhysicalDevices == rhs.pPhysicalDevices );
Lenny Komow68432d72016-09-29 14:16:59 -060032050 }
32051
Mark Young0f183a82017-02-28 09:58:04 -070032052 bool operator!=( DeviceGroupDeviceCreateInfoKHX const& rhs ) const
Lenny Komow68432d72016-09-29 14:16:59 -060032053 {
32054 return !operator==( rhs );
32055 }
32056
32057 private:
32058 StructureType sType;
32059
32060 public:
32061 const void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070032062 uint32_t physicalDeviceCount;
32063 const PhysicalDevice* pPhysicalDevices;
Lenny Komow68432d72016-09-29 14:16:59 -060032064 };
Mark Young0f183a82017-02-28 09:58:04 -070032065 static_assert( sizeof( DeviceGroupDeviceCreateInfoKHX ) == sizeof( VkDeviceGroupDeviceCreateInfoKHX ), "struct and wrapper have different size!" );
Lenny Komow68432d72016-09-29 14:16:59 -060032066
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032067#ifndef VULKAN_HPP_NO_SMART_HANDLE
32068 class InstanceDeleter;
32069 using UniqueInstance = UniqueHandle<Instance, InstanceDeleter>;
32070#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
32071
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060032072 Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032073#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060032074 ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032075#ifndef VULKAN_HPP_NO_SMART_HANDLE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060032076 UniqueInstance createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032077#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
32078#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32079
32080#ifndef VULKAN_HPP_NO_SMART_HANDLE
32081 class InstanceDeleter
32082 {
32083 public:
32084 InstanceDeleter( Optional<const AllocationCallbacks> allocator = nullptr )
32085 : m_allocator( allocator )
32086 {}
32087
32088 void operator()( Instance instance )
32089 {
32090 instance.destroy( m_allocator );
32091 }
32092
32093 private:
32094 Optional<const AllocationCallbacks> m_allocator;
32095 };
32096#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
32097
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032098 VULKAN_HPP_INLINE Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032099 {
32100 return static_cast<Result>( vkCreateInstance( reinterpret_cast<const VkInstanceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkInstance*>( pInstance ) ) );
32101 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032102#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032103 VULKAN_HPP_INLINE ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032104 {
32105 Instance instance;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060032106 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 -060032107 return createResultValue( result, instance, "VULKAN_HPP_NAMESPACE::createInstance" );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032108 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070032109#ifndef VULKAN_HPP_NO_SMART_HANDLE
32110 VULKAN_HPP_INLINE UniqueInstance createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator )
32111 {
32112 InstanceDeleter deleter( allocator );
32113 return UniqueInstance( createInstance( createInfo, allocator ), deleter );
32114 }
32115#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032116#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
32117
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060032118
Mike Schuchardt2ece4b72017-09-19 15:00:40 -060032119 template <> constexpr bool isStructureChainValid<PresentInfoKHR, DisplayPresentInfoKHR>() { return true; }
32120 template <> constexpr bool isStructureChainValid<ImageCreateInfo, DedicatedAllocationImageCreateInfoNV>() { return true; }
32121 template <> constexpr bool isStructureChainValid<BufferCreateInfo, DedicatedAllocationBufferCreateInfoNV>() { return true; }
32122 template <> constexpr bool isStructureChainValid<MemoryAllocateInfo, DedicatedAllocationMemoryAllocateInfoNV>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032123#ifdef VK_USE_PLATFORM_WIN32_KHR
Mike Schuchardt2ece4b72017-09-19 15:00:40 -060032124 template <> constexpr bool isStructureChainValid<MemoryAllocateInfo, ExportMemoryWin32HandleInfoNV>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032125#endif /*VK_USE_PLATFORM_WIN32_KHR*/
32126#ifdef VK_USE_PLATFORM_WIN32_KHR
Mike Schuchardt2ece4b72017-09-19 15:00:40 -060032127 template <> constexpr bool isStructureChainValid<SubmitInfo, Win32KeyedMutexAcquireReleaseInfoNV>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032128#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mike Schuchardt2ece4b72017-09-19 15:00:40 -060032129 template <> constexpr bool isStructureChainValid<DeviceCreateInfo, PhysicalDeviceFeatures2KHR>() { return true; }
32130 template <> constexpr bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDevicePushDescriptorPropertiesKHR>() { return true; }
32131 template <> constexpr bool isStructureChainValid<PresentInfoKHR, PresentRegionsKHR>() { return true; }
32132 template <> constexpr bool isStructureChainValid<PhysicalDeviceFeatures2KHR, PhysicalDeviceVariablePointerFeaturesKHR>() { return true; }
32133 template <> constexpr bool isStructureChainValid<DeviceCreateInfo, PhysicalDeviceVariablePointerFeaturesKHR>() { return true; }
32134 template <> constexpr bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceIDPropertiesKHR>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032135#ifdef VK_USE_PLATFORM_WIN32_KHR
Mike Schuchardt2ece4b72017-09-19 15:00:40 -060032136 template <> constexpr bool isStructureChainValid<MemoryAllocateInfo, ExportMemoryWin32HandleInfoKHR>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032137#endif /*VK_USE_PLATFORM_WIN32_KHR*/
32138#ifdef VK_USE_PLATFORM_WIN32_KHR
Mike Schuchardt2ece4b72017-09-19 15:00:40 -060032139 template <> constexpr bool isStructureChainValid<SubmitInfo, Win32KeyedMutexAcquireReleaseInfoKHR>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032140#endif /*VK_USE_PLATFORM_WIN32_KHR*/
32141#ifdef VK_USE_PLATFORM_WIN32_KHR
Mike Schuchardt2ece4b72017-09-19 15:00:40 -060032142 template <> constexpr bool isStructureChainValid<SemaphoreCreateInfo, ExportSemaphoreWin32HandleInfoKHR>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032143#endif /*VK_USE_PLATFORM_WIN32_KHR*/
32144#ifdef VK_USE_PLATFORM_WIN32_KHR
Mike Schuchardt2ece4b72017-09-19 15:00:40 -060032145 template <> constexpr bool isStructureChainValid<SubmitInfo, D3D12FenceSubmitInfoKHR>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032146#endif /*VK_USE_PLATFORM_WIN32_KHR*/
32147#ifdef VK_USE_PLATFORM_WIN32_KHR
Mike Schuchardt2ece4b72017-09-19 15:00:40 -060032148 template <> constexpr bool isStructureChainValid<FenceCreateInfo, ExportFenceWin32HandleInfoKHR>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032149#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mike Schuchardt2ece4b72017-09-19 15:00:40 -060032150 template <> constexpr bool isStructureChainValid<PhysicalDeviceFeatures2KHR, PhysicalDeviceMultiviewFeaturesKHX>() { return true; }
32151 template <> constexpr bool isStructureChainValid<DeviceCreateInfo, PhysicalDeviceMultiviewFeaturesKHX>() { return true; }
32152 template <> constexpr bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceMultiviewPropertiesKHX>() { return true; }
32153 template <> constexpr bool isStructureChainValid<RenderPassCreateInfo, RenderPassMultiviewCreateInfoKHX>() { return true; }
32154 template <> constexpr bool isStructureChainValid<BindBufferMemoryInfoKHR, BindBufferMemoryDeviceGroupInfoKHX>() { return true; }
32155 template <> constexpr bool isStructureChainValid<BindImageMemoryInfoKHR, BindImageMemoryDeviceGroupInfoKHX>() { return true; }
32156 template <> constexpr bool isStructureChainValid<RenderPassBeginInfo, DeviceGroupRenderPassBeginInfoKHX>() { return true; }
32157 template <> constexpr bool isStructureChainValid<CommandBufferBeginInfo, DeviceGroupCommandBufferBeginInfoKHX>() { return true; }
32158 template <> constexpr bool isStructureChainValid<SubmitInfo, DeviceGroupSubmitInfoKHX>() { return true; }
32159 template <> constexpr bool isStructureChainValid<BindSparseInfo, DeviceGroupBindSparseInfoKHX>() { return true; }
32160 template <> constexpr bool isStructureChainValid<ImageCreateInfo, ImageSwapchainCreateInfoKHX>() { return true; }
32161 template <> constexpr bool isStructureChainValid<BindImageMemoryInfoKHR, BindImageMemorySwapchainInfoKHX>() { return true; }
32162 template <> constexpr bool isStructureChainValid<PresentInfoKHR, PresentTimesInfoGOOGLE>() { return true; }
32163 template <> constexpr bool isStructureChainValid<PipelineViewportStateCreateInfo, PipelineViewportWScalingStateCreateInfoNV>() { return true; }
32164 template <> constexpr bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceDiscardRectanglePropertiesEXT>() { return true; }
32165 template <> constexpr bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX>() { return true; }
32166 template <> constexpr bool isStructureChainValid<PhysicalDeviceFeatures2KHR, PhysicalDevice16BitStorageFeaturesKHR>() { return true; }
32167 template <> constexpr bool isStructureChainValid<DeviceCreateInfo, PhysicalDevice16BitStorageFeaturesKHR>() { return true; }
32168 template <> constexpr bool isStructureChainValid<MemoryRequirements2KHR, MemoryDedicatedRequirementsKHR>() { return true; }
32169 template <> constexpr bool isStructureChainValid<MemoryAllocateInfo, MemoryDedicatedAllocateInfoKHR>() { return true; }
32170 template <> constexpr bool isStructureChainValid<SamplerCreateInfo, SamplerYcbcrConversionInfoKHR>() { return true; }
32171 template <> constexpr bool isStructureChainValid<ImageViewCreateInfo, SamplerYcbcrConversionInfoKHR>() { return true; }
32172 template <> constexpr bool isStructureChainValid<PhysicalDeviceFeatures2KHR, PhysicalDeviceSamplerYcbcrConversionFeaturesKHR>() { return true; }
32173 template <> constexpr bool isStructureChainValid<DeviceCreateInfo, PhysicalDeviceSamplerYcbcrConversionFeaturesKHR>() { return true; }
32174 template <> constexpr bool isStructureChainValid<ImageFormatProperties2KHR, SamplerYcbcrConversionImageFormatPropertiesKHR>() { return true; }
32175 template <> constexpr bool isStructureChainValid<ImageFormatProperties2KHR, TextureLODGatherFormatPropertiesAMD>() { return true; }
32176 template <> constexpr bool isStructureChainValid<PipelineMultisampleStateCreateInfo, PipelineCoverageToColorStateCreateInfoNV>() { return true; }
32177 template <> constexpr bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceSamplerFilterMinmaxPropertiesEXT>() { return true; }
32178 template <> constexpr bool isStructureChainValid<PhysicalDeviceFeatures2KHR, PhysicalDeviceBlendOperationAdvancedFeaturesEXT>() { return true; }
32179 template <> constexpr bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceBlendOperationAdvancedPropertiesEXT>() { return true; }
32180 template <> constexpr bool isStructureChainValid<ImageCreateInfo, ImageFormatListCreateInfoKHR>() { return true; }
32181 template <> constexpr bool isStructureChainValid<ShaderModuleCreateInfo, ShaderModuleValidationCacheCreateInfoEXT>() { return true; }
32182 template <> constexpr bool isStructureChainValid<SurfaceCapabilities2KHR, SharedPresentSurfaceCapabilitiesKHR>() { return true; }
32183 template <> constexpr bool isStructureChainValid<ImageViewCreateInfo, ImageViewUsageCreateInfoKHR>() { return true; }
32184 template <> constexpr bool isStructureChainValid<RenderPassCreateInfo, RenderPassInputAttachmentAspectCreateInfoKHR>() { return true; }
32185 template <> constexpr bool isStructureChainValid<BindImageMemoryInfoKHR, BindImagePlaneMemoryInfoKHR>() { return true; }
32186 template <> constexpr bool isStructureChainValid<ImageMemoryRequirementsInfo2KHR, ImagePlaneMemoryRequirementsInfoKHR>() { return true; }
32187 template <> constexpr bool isStructureChainValid<ImageMemoryBarrier, SampleLocationsInfoEXT>() { return true; }
32188 template <> constexpr bool isStructureChainValid<RenderPassBeginInfo, RenderPassSampleLocationsBeginInfoEXT>() { return true; }
32189 template <> constexpr bool isStructureChainValid<PipelineMultisampleStateCreateInfo, PipelineSampleLocationsStateCreateInfoEXT>() { return true; }
32190 template <> constexpr bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceSampleLocationsPropertiesEXT>() { return true; }
32191 template <> constexpr bool isStructureChainValid<InstanceCreateInfo, DebugReportCallbackCreateInfoEXT>() { return true; }
32192 template <> constexpr bool isStructureChainValid<PipelineRasterizationStateCreateInfo, PipelineRasterizationStateRasterizationOrderAMD>() { return true; }
32193 template <> constexpr bool isStructureChainValid<ImageCreateInfo, ExternalMemoryImageCreateInfoNV>() { return true; }
32194 template <> constexpr bool isStructureChainValid<MemoryAllocateInfo, ExportMemoryAllocateInfoNV>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032195#ifdef VK_USE_PLATFORM_WIN32_KHR
Mike Schuchardt2ece4b72017-09-19 15:00:40 -060032196 template <> constexpr bool isStructureChainValid<MemoryAllocateInfo, ImportMemoryWin32HandleInfoNV>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032197#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mike Schuchardt2ece4b72017-09-19 15:00:40 -060032198 template <> constexpr bool isStructureChainValid<InstanceCreateInfo, ValidationFlagsEXT>() { return true; }
32199 template <> constexpr bool isStructureChainValid<PhysicalDeviceImageFormatInfo2KHR, PhysicalDeviceExternalImageFormatInfoKHR>() { return true; }
32200 template <> constexpr bool isStructureChainValid<ImageCreateInfo, ExternalMemoryImageCreateInfoKHR>() { return true; }
32201 template <> constexpr bool isStructureChainValid<BufferCreateInfo, ExternalMemoryBufferCreateInfoKHR>() { return true; }
32202 template <> constexpr bool isStructureChainValid<MemoryAllocateInfo, ExportMemoryAllocateInfoKHR>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032203#ifdef VK_USE_PLATFORM_WIN32_KHR
Mike Schuchardt2ece4b72017-09-19 15:00:40 -060032204 template <> constexpr bool isStructureChainValid<MemoryAllocateInfo, ImportMemoryWin32HandleInfoKHR>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032205#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mike Schuchardt2ece4b72017-09-19 15:00:40 -060032206 template <> constexpr bool isStructureChainValid<MemoryAllocateInfo, ImportMemoryFdInfoKHR>() { return true; }
32207 template <> constexpr bool isStructureChainValid<ImageFormatProperties2KHR, ExternalImageFormatPropertiesKHR>() { return true; }
32208 template <> constexpr bool isStructureChainValid<SemaphoreCreateInfo, ExportSemaphoreCreateInfoKHR>() { return true; }
32209 template <> constexpr bool isStructureChainValid<FenceCreateInfo, ExportFenceCreateInfoKHR>() { return true; }
32210 template <> constexpr bool isStructureChainValid<SwapchainCreateInfoKHR, SwapchainCounterCreateInfoEXT>() { return true; }
32211 template <> constexpr bool isStructureChainValid<MemoryAllocateInfo, MemoryAllocateFlagsInfoKHX>() { return true; }
32212 template <> constexpr bool isStructureChainValid<PresentInfoKHR, DeviceGroupPresentInfoKHX>() { return true; }
32213 template <> constexpr bool isStructureChainValid<SwapchainCreateInfoKHR, DeviceGroupSwapchainCreateInfoKHX>() { return true; }
32214 template <> constexpr bool isStructureChainValid<PipelineViewportStateCreateInfo, PipelineViewportSwizzleStateCreateInfoNV>() { return true; }
32215 template <> constexpr bool isStructureChainValid<GraphicsPipelineCreateInfo, PipelineDiscardRectangleStateCreateInfoEXT>() { return true; }
32216 template <> constexpr bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDevicePointClippingPropertiesKHR>() { return true; }
32217 template <> constexpr bool isStructureChainValid<SamplerCreateInfo, SamplerReductionModeCreateInfoEXT>() { return true; }
32218 template <> constexpr bool isStructureChainValid<PipelineTessellationStateCreateInfo, PipelineTessellationDomainOriginStateCreateInfoKHR>() { return true; }
32219 template <> constexpr bool isStructureChainValid<PipelineColorBlendStateCreateInfo, PipelineColorBlendAdvancedStateCreateInfoEXT>() { return true; }
32220 template <> constexpr bool isStructureChainValid<PipelineMultisampleStateCreateInfo, PipelineCoverageModulationStateCreateInfoNV>() { return true; }
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060032221 template <> constexpr bool isStructureChainValid<DeviceQueueCreateInfo, DeviceQueueGlobalPriorityCreateInfoEXT>() { return true; }
Mike Schuchardt2ece4b72017-09-19 15:00:40 -060032222 template <> constexpr bool isStructureChainValid<DeviceCreateInfo, DeviceGroupDeviceCreateInfoKHX>() { return true; }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032223 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032224 {
32225 return "(void)";
32226 }
32227
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032228 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032229 {
32230 return "{}";
32231 }
32232
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032233 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032234 {
32235 return "(void)";
32236 }
32237
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032238 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032239 {
32240 return "{}";
32241 }
32242
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032243 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032244 {
32245 return "(void)";
32246 }
32247
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032248 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032249 {
32250 return "{}";
32251 }
32252
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032253 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032254 {
32255 return "(void)";
32256 }
32257
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032258 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032259 {
32260 return "{}";
32261 }
32262
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032263 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032264 {
32265 return "(void)";
32266 }
32267
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032268 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032269 {
32270 return "{}";
32271 }
32272
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032273 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032274 {
32275 return "(void)";
32276 }
32277
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032278 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032279 {
32280 return "{}";
32281 }
32282
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032283 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032284 {
32285 return "(void)";
32286 }
32287
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032288 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032289 {
32290 return "{}";
32291 }
32292
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032293 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032294 {
32295 return "(void)";
32296 }
32297
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032298 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032299 {
32300 return "{}";
32301 }
32302
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032303 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032304 {
32305 return "(void)";
32306 }
32307
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032308 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032309 {
32310 return "{}";
32311 }
32312
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032313 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032314 {
32315 return "(void)";
32316 }
32317
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032318 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032319 {
32320 return "{}";
32321 }
32322
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032323 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032324 {
32325 return "(void)";
32326 }
32327
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032328 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032329 {
32330 return "{}";
32331 }
32332
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032333 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032334 {
32335 return "(void)";
32336 }
32337
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032338 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032339 {
32340 return "{}";
32341 }
32342
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032343 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032344 {
32345 return "(void)";
32346 }
32347
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032348 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032349 {
32350 return "{}";
32351 }
32352
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032353 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032354 {
32355 return "(void)";
32356 }
32357
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032358 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032359 {
32360 return "{}";
32361 }
32362
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032363 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032364 {
32365 return "(void)";
32366 }
32367
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032368 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032369 {
32370 return "{}";
32371 }
32372
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032373 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032374 {
32375 return "(void)";
32376 }
32377
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032378 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032379 {
32380 return "{}";
32381 }
32382
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032383 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032384 {
32385 return "(void)";
32386 }
32387
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032388 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032389 {
32390 return "{}";
32391 }
32392
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032393 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032394 {
32395 return "(void)";
32396 }
32397
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032398 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032399 {
32400 return "{}";
32401 }
32402
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032403 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032404 {
32405 return "(void)";
32406 }
32407
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032408 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032409 {
32410 return "{}";
32411 }
32412
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032413 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032414 {
32415 return "(void)";
32416 }
32417
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032418 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032419 {
32420 return "{}";
32421 }
32422
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032423 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032424 {
32425 return "(void)";
32426 }
32427
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032428 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032429 {
32430 return "{}";
32431 }
32432
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032433 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032434 {
32435 return "(void)";
32436 }
32437
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032438 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032439 {
32440 return "{}";
32441 }
32442
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032443 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032444 {
32445 return "(void)";
32446 }
32447
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032448 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032449 {
32450 return "{}";
32451 }
32452
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032453 VULKAN_HPP_INLINE std::string to_string(EventCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032454 {
32455 return "(void)";
32456 }
32457
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032458 VULKAN_HPP_INLINE std::string to_string(EventCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032459 {
32460 return "{}";
32461 }
32462
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032463 VULKAN_HPP_INLINE std::string to_string(MemoryMapFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032464 {
32465 return "(void)";
32466 }
32467
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032468 VULKAN_HPP_INLINE std::string to_string(MemoryMapFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032469 {
32470 return "{}";
32471 }
32472
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032473 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032474 {
32475 return "(void)";
32476 }
32477
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032478 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032479 {
32480 return "{}";
32481 }
32482
Mark Young0f183a82017-02-28 09:58:04 -070032483 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032484 {
32485 return "(void)";
32486 }
32487
Mark Young0f183a82017-02-28 09:58:04 -070032488 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032489 {
32490 return "{}";
32491 }
32492
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032493 VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032494 {
32495 return "(void)";
32496 }
32497
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032498 VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032499 {
32500 return "{}";
32501 }
32502
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032503 VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032504 {
32505 return "(void)";
32506 }
32507
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032508 VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032509 {
32510 return "{}";
32511 }
32512
32513#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032514 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032515 {
32516 return "(void)";
32517 }
32518#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
32519
32520#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032521 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032522 {
32523 return "{}";
32524 }
32525#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
32526
32527#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032528 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032529 {
32530 return "(void)";
32531 }
32532#endif /*VK_USE_PLATFORM_MIR_KHR*/
32533
32534#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032535 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032536 {
32537 return "{}";
32538 }
32539#endif /*VK_USE_PLATFORM_MIR_KHR*/
32540
Mark Young39389872017-01-19 21:10:49 -070032541#ifdef VK_USE_PLATFORM_VI_NN
32542 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagBitsNN)
32543 {
32544 return "(void)";
32545 }
32546#endif /*VK_USE_PLATFORM_VI_NN*/
32547
32548#ifdef VK_USE_PLATFORM_VI_NN
32549 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagsNN)
32550 {
32551 return "{}";
32552 }
32553#endif /*VK_USE_PLATFORM_VI_NN*/
32554
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032555#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032556 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032557 {
32558 return "(void)";
32559 }
32560#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
32561
32562#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032563 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032564 {
32565 return "{}";
32566 }
32567#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
32568
32569#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032570 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032571 {
32572 return "(void)";
32573 }
32574#endif /*VK_USE_PLATFORM_WIN32_KHR*/
32575
32576#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032577 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032578 {
32579 return "{}";
32580 }
32581#endif /*VK_USE_PLATFORM_WIN32_KHR*/
32582
32583#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032584 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032585 {
32586 return "(void)";
32587 }
32588#endif /*VK_USE_PLATFORM_XLIB_KHR*/
32589
32590#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032591 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032592 {
32593 return "{}";
32594 }
32595#endif /*VK_USE_PLATFORM_XLIB_KHR*/
32596
32597#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032598 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032599 {
32600 return "(void)";
32601 }
32602#endif /*VK_USE_PLATFORM_XCB_KHR*/
32603
32604#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032605 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032606 {
32607 return "{}";
32608 }
32609#endif /*VK_USE_PLATFORM_XCB_KHR*/
32610
Mark Young0f183a82017-02-28 09:58:04 -070032611#ifdef VK_USE_PLATFORM_IOS_MVK
32612 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagBitsMVK)
32613 {
32614 return "(void)";
32615 }
32616#endif /*VK_USE_PLATFORM_IOS_MVK*/
32617
32618#ifdef VK_USE_PLATFORM_IOS_MVK
32619 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagsMVK)
32620 {
32621 return "{}";
32622 }
32623#endif /*VK_USE_PLATFORM_IOS_MVK*/
32624
32625#ifdef VK_USE_PLATFORM_MACOS_MVK
32626 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagBitsMVK)
32627 {
32628 return "(void)";
32629 }
32630#endif /*VK_USE_PLATFORM_MACOS_MVK*/
32631
32632#ifdef VK_USE_PLATFORM_MACOS_MVK
32633 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagsMVK)
32634 {
32635 return "{}";
32636 }
32637#endif /*VK_USE_PLATFORM_MACOS_MVK*/
32638
Mark Young39389872017-01-19 21:10:49 -070032639 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagBitsKHR)
32640 {
32641 return "(void)";
32642 }
32643
32644 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagsKHR)
32645 {
32646 return "{}";
32647 }
32648
Mark Young0f183a82017-02-28 09:58:04 -070032649 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagBitsNV)
32650 {
32651 return "(void)";
32652 }
32653
32654 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagsNV)
32655 {
32656 return "{}";
32657 }
32658
32659 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagBitsEXT)
32660 {
32661 return "(void)";
32662 }
32663
32664 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagsEXT)
32665 {
32666 return "{}";
32667 }
32668
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060032669 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageToColorStateCreateFlagBitsNV)
32670 {
32671 return "(void)";
32672 }
32673
32674 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageToColorStateCreateFlagsNV)
32675 {
32676 return "{}";
32677 }
32678
32679 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageModulationStateCreateFlagBitsNV)
32680 {
32681 return "(void)";
32682 }
32683
32684 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageModulationStateCreateFlagsNV)
32685 {
32686 return "{}";
32687 }
32688
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032689 VULKAN_HPP_INLINE std::string to_string(ValidationCacheCreateFlagBitsEXT)
32690 {
32691 return "(void)";
32692 }
32693
32694 VULKAN_HPP_INLINE std::string to_string(ValidationCacheCreateFlagsEXT)
32695 {
32696 return "{}";
32697 }
32698
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032699 VULKAN_HPP_INLINE std::string to_string(ImageLayout value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032700 {
32701 switch (value)
32702 {
32703 case ImageLayout::eUndefined: return "Undefined";
32704 case ImageLayout::eGeneral: return "General";
32705 case ImageLayout::eColorAttachmentOptimal: return "ColorAttachmentOptimal";
32706 case ImageLayout::eDepthStencilAttachmentOptimal: return "DepthStencilAttachmentOptimal";
32707 case ImageLayout::eDepthStencilReadOnlyOptimal: return "DepthStencilReadOnlyOptimal";
32708 case ImageLayout::eShaderReadOnlyOptimal: return "ShaderReadOnlyOptimal";
32709 case ImageLayout::eTransferSrcOptimal: return "TransferSrcOptimal";
32710 case ImageLayout::eTransferDstOptimal: return "TransferDstOptimal";
32711 case ImageLayout::ePreinitialized: return "Preinitialized";
32712 case ImageLayout::ePresentSrcKHR: return "PresentSrcKHR";
Mark Lobodzinski54385432017-05-15 10:27:52 -060032713 case ImageLayout::eSharedPresentKHR: return "SharedPresentKHR";
Lenny Komowb79f04a2017-09-18 17:07:00 -060032714 case ImageLayout::eDepthReadOnlyStencilAttachmentOptimalKHR: return "DepthReadOnlyStencilAttachmentOptimalKHR";
32715 case ImageLayout::eDepthAttachmentStencilReadOnlyOptimalKHR: return "DepthAttachmentStencilReadOnlyOptimalKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032716 default: return "invalid";
32717 }
32718 }
32719
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032720 VULKAN_HPP_INLINE std::string to_string(AttachmentLoadOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032721 {
32722 switch (value)
32723 {
32724 case AttachmentLoadOp::eLoad: return "Load";
32725 case AttachmentLoadOp::eClear: return "Clear";
32726 case AttachmentLoadOp::eDontCare: return "DontCare";
32727 default: return "invalid";
32728 }
32729 }
32730
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032731 VULKAN_HPP_INLINE std::string to_string(AttachmentStoreOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032732 {
32733 switch (value)
32734 {
32735 case AttachmentStoreOp::eStore: return "Store";
32736 case AttachmentStoreOp::eDontCare: return "DontCare";
32737 default: return "invalid";
32738 }
32739 }
32740
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032741 VULKAN_HPP_INLINE std::string to_string(ImageType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032742 {
32743 switch (value)
32744 {
32745 case ImageType::e1D: return "1D";
32746 case ImageType::e2D: return "2D";
32747 case ImageType::e3D: return "3D";
32748 default: return "invalid";
32749 }
32750 }
32751
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032752 VULKAN_HPP_INLINE std::string to_string(ImageTiling value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032753 {
32754 switch (value)
32755 {
32756 case ImageTiling::eOptimal: return "Optimal";
32757 case ImageTiling::eLinear: return "Linear";
32758 default: return "invalid";
32759 }
32760 }
32761
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032762 VULKAN_HPP_INLINE std::string to_string(ImageViewType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032763 {
32764 switch (value)
32765 {
32766 case ImageViewType::e1D: return "1D";
32767 case ImageViewType::e2D: return "2D";
32768 case ImageViewType::e3D: return "3D";
32769 case ImageViewType::eCube: return "Cube";
32770 case ImageViewType::e1DArray: return "1DArray";
32771 case ImageViewType::e2DArray: return "2DArray";
32772 case ImageViewType::eCubeArray: return "CubeArray";
32773 default: return "invalid";
32774 }
32775 }
32776
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032777 VULKAN_HPP_INLINE std::string to_string(CommandBufferLevel value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032778 {
32779 switch (value)
32780 {
32781 case CommandBufferLevel::ePrimary: return "Primary";
32782 case CommandBufferLevel::eSecondary: return "Secondary";
32783 default: return "invalid";
32784 }
32785 }
32786
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032787 VULKAN_HPP_INLINE std::string to_string(ComponentSwizzle value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032788 {
32789 switch (value)
32790 {
32791 case ComponentSwizzle::eIdentity: return "Identity";
32792 case ComponentSwizzle::eZero: return "Zero";
32793 case ComponentSwizzle::eOne: return "One";
32794 case ComponentSwizzle::eR: return "R";
32795 case ComponentSwizzle::eG: return "G";
32796 case ComponentSwizzle::eB: return "B";
32797 case ComponentSwizzle::eA: return "A";
32798 default: return "invalid";
32799 }
32800 }
32801
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032802 VULKAN_HPP_INLINE std::string to_string(DescriptorType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032803 {
32804 switch (value)
32805 {
32806 case DescriptorType::eSampler: return "Sampler";
32807 case DescriptorType::eCombinedImageSampler: return "CombinedImageSampler";
32808 case DescriptorType::eSampledImage: return "SampledImage";
32809 case DescriptorType::eStorageImage: return "StorageImage";
32810 case DescriptorType::eUniformTexelBuffer: return "UniformTexelBuffer";
32811 case DescriptorType::eStorageTexelBuffer: return "StorageTexelBuffer";
32812 case DescriptorType::eUniformBuffer: return "UniformBuffer";
32813 case DescriptorType::eStorageBuffer: return "StorageBuffer";
32814 case DescriptorType::eUniformBufferDynamic: return "UniformBufferDynamic";
32815 case DescriptorType::eStorageBufferDynamic: return "StorageBufferDynamic";
32816 case DescriptorType::eInputAttachment: return "InputAttachment";
32817 default: return "invalid";
32818 }
32819 }
32820
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032821 VULKAN_HPP_INLINE std::string to_string(QueryType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032822 {
32823 switch (value)
32824 {
32825 case QueryType::eOcclusion: return "Occlusion";
32826 case QueryType::ePipelineStatistics: return "PipelineStatistics";
32827 case QueryType::eTimestamp: return "Timestamp";
32828 default: return "invalid";
32829 }
32830 }
32831
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032832 VULKAN_HPP_INLINE std::string to_string(BorderColor value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032833 {
32834 switch (value)
32835 {
32836 case BorderColor::eFloatTransparentBlack: return "FloatTransparentBlack";
32837 case BorderColor::eIntTransparentBlack: return "IntTransparentBlack";
32838 case BorderColor::eFloatOpaqueBlack: return "FloatOpaqueBlack";
32839 case BorderColor::eIntOpaqueBlack: return "IntOpaqueBlack";
32840 case BorderColor::eFloatOpaqueWhite: return "FloatOpaqueWhite";
32841 case BorderColor::eIntOpaqueWhite: return "IntOpaqueWhite";
32842 default: return "invalid";
32843 }
32844 }
32845
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032846 VULKAN_HPP_INLINE std::string to_string(PipelineBindPoint value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032847 {
32848 switch (value)
32849 {
32850 case PipelineBindPoint::eGraphics: return "Graphics";
32851 case PipelineBindPoint::eCompute: return "Compute";
32852 default: return "invalid";
32853 }
32854 }
32855
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032856 VULKAN_HPP_INLINE std::string to_string(PipelineCacheHeaderVersion value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032857 {
32858 switch (value)
32859 {
32860 case PipelineCacheHeaderVersion::eOne: return "One";
32861 default: return "invalid";
32862 }
32863 }
32864
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032865 VULKAN_HPP_INLINE std::string to_string(PrimitiveTopology value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032866 {
32867 switch (value)
32868 {
32869 case PrimitiveTopology::ePointList: return "PointList";
32870 case PrimitiveTopology::eLineList: return "LineList";
32871 case PrimitiveTopology::eLineStrip: return "LineStrip";
32872 case PrimitiveTopology::eTriangleList: return "TriangleList";
32873 case PrimitiveTopology::eTriangleStrip: return "TriangleStrip";
32874 case PrimitiveTopology::eTriangleFan: return "TriangleFan";
32875 case PrimitiveTopology::eLineListWithAdjacency: return "LineListWithAdjacency";
32876 case PrimitiveTopology::eLineStripWithAdjacency: return "LineStripWithAdjacency";
32877 case PrimitiveTopology::eTriangleListWithAdjacency: return "TriangleListWithAdjacency";
32878 case PrimitiveTopology::eTriangleStripWithAdjacency: return "TriangleStripWithAdjacency";
32879 case PrimitiveTopology::ePatchList: return "PatchList";
32880 default: return "invalid";
32881 }
32882 }
32883
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032884 VULKAN_HPP_INLINE std::string to_string(SharingMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032885 {
32886 switch (value)
32887 {
32888 case SharingMode::eExclusive: return "Exclusive";
32889 case SharingMode::eConcurrent: return "Concurrent";
32890 default: return "invalid";
32891 }
32892 }
32893
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032894 VULKAN_HPP_INLINE std::string to_string(IndexType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032895 {
32896 switch (value)
32897 {
32898 case IndexType::eUint16: return "Uint16";
32899 case IndexType::eUint32: return "Uint32";
32900 default: return "invalid";
32901 }
32902 }
32903
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032904 VULKAN_HPP_INLINE std::string to_string(Filter value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032905 {
32906 switch (value)
32907 {
32908 case Filter::eNearest: return "Nearest";
32909 case Filter::eLinear: return "Linear";
32910 case Filter::eCubicIMG: return "CubicIMG";
32911 default: return "invalid";
32912 }
32913 }
32914
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032915 VULKAN_HPP_INLINE std::string to_string(SamplerMipmapMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032916 {
32917 switch (value)
32918 {
32919 case SamplerMipmapMode::eNearest: return "Nearest";
32920 case SamplerMipmapMode::eLinear: return "Linear";
32921 default: return "invalid";
32922 }
32923 }
32924
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032925 VULKAN_HPP_INLINE std::string to_string(SamplerAddressMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032926 {
32927 switch (value)
32928 {
32929 case SamplerAddressMode::eRepeat: return "Repeat";
32930 case SamplerAddressMode::eMirroredRepeat: return "MirroredRepeat";
32931 case SamplerAddressMode::eClampToEdge: return "ClampToEdge";
32932 case SamplerAddressMode::eClampToBorder: return "ClampToBorder";
32933 case SamplerAddressMode::eMirrorClampToEdge: return "MirrorClampToEdge";
32934 default: return "invalid";
32935 }
32936 }
32937
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032938 VULKAN_HPP_INLINE std::string to_string(CompareOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032939 {
32940 switch (value)
32941 {
32942 case CompareOp::eNever: return "Never";
32943 case CompareOp::eLess: return "Less";
32944 case CompareOp::eEqual: return "Equal";
32945 case CompareOp::eLessOrEqual: return "LessOrEqual";
32946 case CompareOp::eGreater: return "Greater";
32947 case CompareOp::eNotEqual: return "NotEqual";
32948 case CompareOp::eGreaterOrEqual: return "GreaterOrEqual";
32949 case CompareOp::eAlways: return "Always";
32950 default: return "invalid";
32951 }
32952 }
32953
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032954 VULKAN_HPP_INLINE std::string to_string(PolygonMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032955 {
32956 switch (value)
32957 {
32958 case PolygonMode::eFill: return "Fill";
32959 case PolygonMode::eLine: return "Line";
32960 case PolygonMode::ePoint: return "Point";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060032961 case PolygonMode::eFillRectangleNV: return "FillRectangleNV";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032962 default: return "invalid";
32963 }
32964 }
32965
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032966 VULKAN_HPP_INLINE std::string to_string(CullModeFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032967 {
32968 switch (value)
32969 {
32970 case CullModeFlagBits::eNone: return "None";
32971 case CullModeFlagBits::eFront: return "Front";
32972 case CullModeFlagBits::eBack: return "Back";
32973 case CullModeFlagBits::eFrontAndBack: return "FrontAndBack";
32974 default: return "invalid";
32975 }
32976 }
32977
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032978 VULKAN_HPP_INLINE std::string to_string(CullModeFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032979 {
32980 if (!value) return "{}";
32981 std::string result;
32982 if (value & CullModeFlagBits::eNone) result += "None | ";
32983 if (value & CullModeFlagBits::eFront) result += "Front | ";
32984 if (value & CullModeFlagBits::eBack) result += "Back | ";
32985 if (value & CullModeFlagBits::eFrontAndBack) result += "FrontAndBack | ";
32986 return "{" + result.substr(0, result.size() - 3) + "}";
32987 }
32988
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032989 VULKAN_HPP_INLINE std::string to_string(FrontFace value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032990 {
32991 switch (value)
32992 {
32993 case FrontFace::eCounterClockwise: return "CounterClockwise";
32994 case FrontFace::eClockwise: return "Clockwise";
32995 default: return "invalid";
32996 }
32997 }
32998
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032999 VULKAN_HPP_INLINE std::string to_string(BlendFactor value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033000 {
33001 switch (value)
33002 {
33003 case BlendFactor::eZero: return "Zero";
33004 case BlendFactor::eOne: return "One";
33005 case BlendFactor::eSrcColor: return "SrcColor";
33006 case BlendFactor::eOneMinusSrcColor: return "OneMinusSrcColor";
33007 case BlendFactor::eDstColor: return "DstColor";
33008 case BlendFactor::eOneMinusDstColor: return "OneMinusDstColor";
33009 case BlendFactor::eSrcAlpha: return "SrcAlpha";
33010 case BlendFactor::eOneMinusSrcAlpha: return "OneMinusSrcAlpha";
33011 case BlendFactor::eDstAlpha: return "DstAlpha";
33012 case BlendFactor::eOneMinusDstAlpha: return "OneMinusDstAlpha";
33013 case BlendFactor::eConstantColor: return "ConstantColor";
33014 case BlendFactor::eOneMinusConstantColor: return "OneMinusConstantColor";
33015 case BlendFactor::eConstantAlpha: return "ConstantAlpha";
33016 case BlendFactor::eOneMinusConstantAlpha: return "OneMinusConstantAlpha";
33017 case BlendFactor::eSrcAlphaSaturate: return "SrcAlphaSaturate";
33018 case BlendFactor::eSrc1Color: return "Src1Color";
33019 case BlendFactor::eOneMinusSrc1Color: return "OneMinusSrc1Color";
33020 case BlendFactor::eSrc1Alpha: return "Src1Alpha";
33021 case BlendFactor::eOneMinusSrc1Alpha: return "OneMinusSrc1Alpha";
33022 default: return "invalid";
33023 }
33024 }
33025
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033026 VULKAN_HPP_INLINE std::string to_string(BlendOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033027 {
33028 switch (value)
33029 {
33030 case BlendOp::eAdd: return "Add";
33031 case BlendOp::eSubtract: return "Subtract";
33032 case BlendOp::eReverseSubtract: return "ReverseSubtract";
33033 case BlendOp::eMin: return "Min";
33034 case BlendOp::eMax: return "Max";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060033035 case BlendOp::eZeroEXT: return "ZeroEXT";
33036 case BlendOp::eSrcEXT: return "SrcEXT";
33037 case BlendOp::eDstEXT: return "DstEXT";
33038 case BlendOp::eSrcOverEXT: return "SrcOverEXT";
33039 case BlendOp::eDstOverEXT: return "DstOverEXT";
33040 case BlendOp::eSrcInEXT: return "SrcInEXT";
33041 case BlendOp::eDstInEXT: return "DstInEXT";
33042 case BlendOp::eSrcOutEXT: return "SrcOutEXT";
33043 case BlendOp::eDstOutEXT: return "DstOutEXT";
33044 case BlendOp::eSrcAtopEXT: return "SrcAtopEXT";
33045 case BlendOp::eDstAtopEXT: return "DstAtopEXT";
33046 case BlendOp::eXorEXT: return "XorEXT";
33047 case BlendOp::eMultiplyEXT: return "MultiplyEXT";
33048 case BlendOp::eScreenEXT: return "ScreenEXT";
33049 case BlendOp::eOverlayEXT: return "OverlayEXT";
33050 case BlendOp::eDarkenEXT: return "DarkenEXT";
33051 case BlendOp::eLightenEXT: return "LightenEXT";
33052 case BlendOp::eColordodgeEXT: return "ColordodgeEXT";
33053 case BlendOp::eColorburnEXT: return "ColorburnEXT";
33054 case BlendOp::eHardlightEXT: return "HardlightEXT";
33055 case BlendOp::eSoftlightEXT: return "SoftlightEXT";
33056 case BlendOp::eDifferenceEXT: return "DifferenceEXT";
33057 case BlendOp::eExclusionEXT: return "ExclusionEXT";
33058 case BlendOp::eInvertEXT: return "InvertEXT";
33059 case BlendOp::eInvertRgbEXT: return "InvertRgbEXT";
33060 case BlendOp::eLineardodgeEXT: return "LineardodgeEXT";
33061 case BlendOp::eLinearburnEXT: return "LinearburnEXT";
33062 case BlendOp::eVividlightEXT: return "VividlightEXT";
33063 case BlendOp::eLinearlightEXT: return "LinearlightEXT";
33064 case BlendOp::ePinlightEXT: return "PinlightEXT";
33065 case BlendOp::eHardmixEXT: return "HardmixEXT";
33066 case BlendOp::eHslHueEXT: return "HslHueEXT";
33067 case BlendOp::eHslSaturationEXT: return "HslSaturationEXT";
33068 case BlendOp::eHslColorEXT: return "HslColorEXT";
33069 case BlendOp::eHslLuminosityEXT: return "HslLuminosityEXT";
33070 case BlendOp::ePlusEXT: return "PlusEXT";
33071 case BlendOp::ePlusClampedEXT: return "PlusClampedEXT";
33072 case BlendOp::ePlusClampedAlphaEXT: return "PlusClampedAlphaEXT";
33073 case BlendOp::ePlusDarkerEXT: return "PlusDarkerEXT";
33074 case BlendOp::eMinusEXT: return "MinusEXT";
33075 case BlendOp::eMinusClampedEXT: return "MinusClampedEXT";
33076 case BlendOp::eContrastEXT: return "ContrastEXT";
33077 case BlendOp::eInvertOvgEXT: return "InvertOvgEXT";
33078 case BlendOp::eRedEXT: return "RedEXT";
33079 case BlendOp::eGreenEXT: return "GreenEXT";
33080 case BlendOp::eBlueEXT: return "BlueEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033081 default: return "invalid";
33082 }
33083 }
33084
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033085 VULKAN_HPP_INLINE std::string to_string(StencilOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033086 {
33087 switch (value)
33088 {
33089 case StencilOp::eKeep: return "Keep";
33090 case StencilOp::eZero: return "Zero";
33091 case StencilOp::eReplace: return "Replace";
33092 case StencilOp::eIncrementAndClamp: return "IncrementAndClamp";
33093 case StencilOp::eDecrementAndClamp: return "DecrementAndClamp";
33094 case StencilOp::eInvert: return "Invert";
33095 case StencilOp::eIncrementAndWrap: return "IncrementAndWrap";
33096 case StencilOp::eDecrementAndWrap: return "DecrementAndWrap";
33097 default: return "invalid";
33098 }
33099 }
33100
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033101 VULKAN_HPP_INLINE std::string to_string(LogicOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033102 {
33103 switch (value)
33104 {
33105 case LogicOp::eClear: return "Clear";
33106 case LogicOp::eAnd: return "And";
33107 case LogicOp::eAndReverse: return "AndReverse";
33108 case LogicOp::eCopy: return "Copy";
33109 case LogicOp::eAndInverted: return "AndInverted";
33110 case LogicOp::eNoOp: return "NoOp";
33111 case LogicOp::eXor: return "Xor";
33112 case LogicOp::eOr: return "Or";
33113 case LogicOp::eNor: return "Nor";
33114 case LogicOp::eEquivalent: return "Equivalent";
33115 case LogicOp::eInvert: return "Invert";
33116 case LogicOp::eOrReverse: return "OrReverse";
33117 case LogicOp::eCopyInverted: return "CopyInverted";
33118 case LogicOp::eOrInverted: return "OrInverted";
33119 case LogicOp::eNand: return "Nand";
33120 case LogicOp::eSet: return "Set";
33121 default: return "invalid";
33122 }
33123 }
33124
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033125 VULKAN_HPP_INLINE std::string to_string(InternalAllocationType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033126 {
33127 switch (value)
33128 {
33129 case InternalAllocationType::eExecutable: return "Executable";
33130 default: return "invalid";
33131 }
33132 }
33133
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033134 VULKAN_HPP_INLINE std::string to_string(SystemAllocationScope value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033135 {
33136 switch (value)
33137 {
33138 case SystemAllocationScope::eCommand: return "Command";
33139 case SystemAllocationScope::eObject: return "Object";
33140 case SystemAllocationScope::eCache: return "Cache";
33141 case SystemAllocationScope::eDevice: return "Device";
33142 case SystemAllocationScope::eInstance: return "Instance";
33143 default: return "invalid";
33144 }
33145 }
33146
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033147 VULKAN_HPP_INLINE std::string to_string(PhysicalDeviceType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033148 {
33149 switch (value)
33150 {
33151 case PhysicalDeviceType::eOther: return "Other";
33152 case PhysicalDeviceType::eIntegratedGpu: return "IntegratedGpu";
33153 case PhysicalDeviceType::eDiscreteGpu: return "DiscreteGpu";
33154 case PhysicalDeviceType::eVirtualGpu: return "VirtualGpu";
33155 case PhysicalDeviceType::eCpu: return "Cpu";
33156 default: return "invalid";
33157 }
33158 }
33159
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033160 VULKAN_HPP_INLINE std::string to_string(VertexInputRate value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033161 {
33162 switch (value)
33163 {
33164 case VertexInputRate::eVertex: return "Vertex";
33165 case VertexInputRate::eInstance: return "Instance";
33166 default: return "invalid";
33167 }
33168 }
33169
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033170 VULKAN_HPP_INLINE std::string to_string(Format value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033171 {
33172 switch (value)
33173 {
33174 case Format::eUndefined: return "Undefined";
33175 case Format::eR4G4UnormPack8: return "R4G4UnormPack8";
33176 case Format::eR4G4B4A4UnormPack16: return "R4G4B4A4UnormPack16";
33177 case Format::eB4G4R4A4UnormPack16: return "B4G4R4A4UnormPack16";
33178 case Format::eR5G6B5UnormPack16: return "R5G6B5UnormPack16";
33179 case Format::eB5G6R5UnormPack16: return "B5G6R5UnormPack16";
33180 case Format::eR5G5B5A1UnormPack16: return "R5G5B5A1UnormPack16";
33181 case Format::eB5G5R5A1UnormPack16: return "B5G5R5A1UnormPack16";
33182 case Format::eA1R5G5B5UnormPack16: return "A1R5G5B5UnormPack16";
33183 case Format::eR8Unorm: return "R8Unorm";
33184 case Format::eR8Snorm: return "R8Snorm";
33185 case Format::eR8Uscaled: return "R8Uscaled";
33186 case Format::eR8Sscaled: return "R8Sscaled";
33187 case Format::eR8Uint: return "R8Uint";
33188 case Format::eR8Sint: return "R8Sint";
33189 case Format::eR8Srgb: return "R8Srgb";
33190 case Format::eR8G8Unorm: return "R8G8Unorm";
33191 case Format::eR8G8Snorm: return "R8G8Snorm";
33192 case Format::eR8G8Uscaled: return "R8G8Uscaled";
33193 case Format::eR8G8Sscaled: return "R8G8Sscaled";
33194 case Format::eR8G8Uint: return "R8G8Uint";
33195 case Format::eR8G8Sint: return "R8G8Sint";
33196 case Format::eR8G8Srgb: return "R8G8Srgb";
33197 case Format::eR8G8B8Unorm: return "R8G8B8Unorm";
33198 case Format::eR8G8B8Snorm: return "R8G8B8Snorm";
33199 case Format::eR8G8B8Uscaled: return "R8G8B8Uscaled";
33200 case Format::eR8G8B8Sscaled: return "R8G8B8Sscaled";
33201 case Format::eR8G8B8Uint: return "R8G8B8Uint";
33202 case Format::eR8G8B8Sint: return "R8G8B8Sint";
33203 case Format::eR8G8B8Srgb: return "R8G8B8Srgb";
33204 case Format::eB8G8R8Unorm: return "B8G8R8Unorm";
33205 case Format::eB8G8R8Snorm: return "B8G8R8Snorm";
33206 case Format::eB8G8R8Uscaled: return "B8G8R8Uscaled";
33207 case Format::eB8G8R8Sscaled: return "B8G8R8Sscaled";
33208 case Format::eB8G8R8Uint: return "B8G8R8Uint";
33209 case Format::eB8G8R8Sint: return "B8G8R8Sint";
33210 case Format::eB8G8R8Srgb: return "B8G8R8Srgb";
33211 case Format::eR8G8B8A8Unorm: return "R8G8B8A8Unorm";
33212 case Format::eR8G8B8A8Snorm: return "R8G8B8A8Snorm";
33213 case Format::eR8G8B8A8Uscaled: return "R8G8B8A8Uscaled";
33214 case Format::eR8G8B8A8Sscaled: return "R8G8B8A8Sscaled";
33215 case Format::eR8G8B8A8Uint: return "R8G8B8A8Uint";
33216 case Format::eR8G8B8A8Sint: return "R8G8B8A8Sint";
33217 case Format::eR8G8B8A8Srgb: return "R8G8B8A8Srgb";
33218 case Format::eB8G8R8A8Unorm: return "B8G8R8A8Unorm";
33219 case Format::eB8G8R8A8Snorm: return "B8G8R8A8Snorm";
33220 case Format::eB8G8R8A8Uscaled: return "B8G8R8A8Uscaled";
33221 case Format::eB8G8R8A8Sscaled: return "B8G8R8A8Sscaled";
33222 case Format::eB8G8R8A8Uint: return "B8G8R8A8Uint";
33223 case Format::eB8G8R8A8Sint: return "B8G8R8A8Sint";
33224 case Format::eB8G8R8A8Srgb: return "B8G8R8A8Srgb";
33225 case Format::eA8B8G8R8UnormPack32: return "A8B8G8R8UnormPack32";
33226 case Format::eA8B8G8R8SnormPack32: return "A8B8G8R8SnormPack32";
33227 case Format::eA8B8G8R8UscaledPack32: return "A8B8G8R8UscaledPack32";
33228 case Format::eA8B8G8R8SscaledPack32: return "A8B8G8R8SscaledPack32";
33229 case Format::eA8B8G8R8UintPack32: return "A8B8G8R8UintPack32";
33230 case Format::eA8B8G8R8SintPack32: return "A8B8G8R8SintPack32";
33231 case Format::eA8B8G8R8SrgbPack32: return "A8B8G8R8SrgbPack32";
33232 case Format::eA2R10G10B10UnormPack32: return "A2R10G10B10UnormPack32";
33233 case Format::eA2R10G10B10SnormPack32: return "A2R10G10B10SnormPack32";
33234 case Format::eA2R10G10B10UscaledPack32: return "A2R10G10B10UscaledPack32";
33235 case Format::eA2R10G10B10SscaledPack32: return "A2R10G10B10SscaledPack32";
33236 case Format::eA2R10G10B10UintPack32: return "A2R10G10B10UintPack32";
33237 case Format::eA2R10G10B10SintPack32: return "A2R10G10B10SintPack32";
33238 case Format::eA2B10G10R10UnormPack32: return "A2B10G10R10UnormPack32";
33239 case Format::eA2B10G10R10SnormPack32: return "A2B10G10R10SnormPack32";
33240 case Format::eA2B10G10R10UscaledPack32: return "A2B10G10R10UscaledPack32";
33241 case Format::eA2B10G10R10SscaledPack32: return "A2B10G10R10SscaledPack32";
33242 case Format::eA2B10G10R10UintPack32: return "A2B10G10R10UintPack32";
33243 case Format::eA2B10G10R10SintPack32: return "A2B10G10R10SintPack32";
33244 case Format::eR16Unorm: return "R16Unorm";
33245 case Format::eR16Snorm: return "R16Snorm";
33246 case Format::eR16Uscaled: return "R16Uscaled";
33247 case Format::eR16Sscaled: return "R16Sscaled";
33248 case Format::eR16Uint: return "R16Uint";
33249 case Format::eR16Sint: return "R16Sint";
33250 case Format::eR16Sfloat: return "R16Sfloat";
33251 case Format::eR16G16Unorm: return "R16G16Unorm";
33252 case Format::eR16G16Snorm: return "R16G16Snorm";
33253 case Format::eR16G16Uscaled: return "R16G16Uscaled";
33254 case Format::eR16G16Sscaled: return "R16G16Sscaled";
33255 case Format::eR16G16Uint: return "R16G16Uint";
33256 case Format::eR16G16Sint: return "R16G16Sint";
33257 case Format::eR16G16Sfloat: return "R16G16Sfloat";
33258 case Format::eR16G16B16Unorm: return "R16G16B16Unorm";
33259 case Format::eR16G16B16Snorm: return "R16G16B16Snorm";
33260 case Format::eR16G16B16Uscaled: return "R16G16B16Uscaled";
33261 case Format::eR16G16B16Sscaled: return "R16G16B16Sscaled";
33262 case Format::eR16G16B16Uint: return "R16G16B16Uint";
33263 case Format::eR16G16B16Sint: return "R16G16B16Sint";
33264 case Format::eR16G16B16Sfloat: return "R16G16B16Sfloat";
33265 case Format::eR16G16B16A16Unorm: return "R16G16B16A16Unorm";
33266 case Format::eR16G16B16A16Snorm: return "R16G16B16A16Snorm";
33267 case Format::eR16G16B16A16Uscaled: return "R16G16B16A16Uscaled";
33268 case Format::eR16G16B16A16Sscaled: return "R16G16B16A16Sscaled";
33269 case Format::eR16G16B16A16Uint: return "R16G16B16A16Uint";
33270 case Format::eR16G16B16A16Sint: return "R16G16B16A16Sint";
33271 case Format::eR16G16B16A16Sfloat: return "R16G16B16A16Sfloat";
33272 case Format::eR32Uint: return "R32Uint";
33273 case Format::eR32Sint: return "R32Sint";
33274 case Format::eR32Sfloat: return "R32Sfloat";
33275 case Format::eR32G32Uint: return "R32G32Uint";
33276 case Format::eR32G32Sint: return "R32G32Sint";
33277 case Format::eR32G32Sfloat: return "R32G32Sfloat";
33278 case Format::eR32G32B32Uint: return "R32G32B32Uint";
33279 case Format::eR32G32B32Sint: return "R32G32B32Sint";
33280 case Format::eR32G32B32Sfloat: return "R32G32B32Sfloat";
33281 case Format::eR32G32B32A32Uint: return "R32G32B32A32Uint";
33282 case Format::eR32G32B32A32Sint: return "R32G32B32A32Sint";
33283 case Format::eR32G32B32A32Sfloat: return "R32G32B32A32Sfloat";
33284 case Format::eR64Uint: return "R64Uint";
33285 case Format::eR64Sint: return "R64Sint";
33286 case Format::eR64Sfloat: return "R64Sfloat";
33287 case Format::eR64G64Uint: return "R64G64Uint";
33288 case Format::eR64G64Sint: return "R64G64Sint";
33289 case Format::eR64G64Sfloat: return "R64G64Sfloat";
33290 case Format::eR64G64B64Uint: return "R64G64B64Uint";
33291 case Format::eR64G64B64Sint: return "R64G64B64Sint";
33292 case Format::eR64G64B64Sfloat: return "R64G64B64Sfloat";
33293 case Format::eR64G64B64A64Uint: return "R64G64B64A64Uint";
33294 case Format::eR64G64B64A64Sint: return "R64G64B64A64Sint";
33295 case Format::eR64G64B64A64Sfloat: return "R64G64B64A64Sfloat";
33296 case Format::eB10G11R11UfloatPack32: return "B10G11R11UfloatPack32";
33297 case Format::eE5B9G9R9UfloatPack32: return "E5B9G9R9UfloatPack32";
33298 case Format::eD16Unorm: return "D16Unorm";
33299 case Format::eX8D24UnormPack32: return "X8D24UnormPack32";
33300 case Format::eD32Sfloat: return "D32Sfloat";
33301 case Format::eS8Uint: return "S8Uint";
33302 case Format::eD16UnormS8Uint: return "D16UnormS8Uint";
33303 case Format::eD24UnormS8Uint: return "D24UnormS8Uint";
33304 case Format::eD32SfloatS8Uint: return "D32SfloatS8Uint";
33305 case Format::eBc1RgbUnormBlock: return "Bc1RgbUnormBlock";
33306 case Format::eBc1RgbSrgbBlock: return "Bc1RgbSrgbBlock";
33307 case Format::eBc1RgbaUnormBlock: return "Bc1RgbaUnormBlock";
33308 case Format::eBc1RgbaSrgbBlock: return "Bc1RgbaSrgbBlock";
33309 case Format::eBc2UnormBlock: return "Bc2UnormBlock";
33310 case Format::eBc2SrgbBlock: return "Bc2SrgbBlock";
33311 case Format::eBc3UnormBlock: return "Bc3UnormBlock";
33312 case Format::eBc3SrgbBlock: return "Bc3SrgbBlock";
33313 case Format::eBc4UnormBlock: return "Bc4UnormBlock";
33314 case Format::eBc4SnormBlock: return "Bc4SnormBlock";
33315 case Format::eBc5UnormBlock: return "Bc5UnormBlock";
33316 case Format::eBc5SnormBlock: return "Bc5SnormBlock";
33317 case Format::eBc6HUfloatBlock: return "Bc6HUfloatBlock";
33318 case Format::eBc6HSfloatBlock: return "Bc6HSfloatBlock";
33319 case Format::eBc7UnormBlock: return "Bc7UnormBlock";
33320 case Format::eBc7SrgbBlock: return "Bc7SrgbBlock";
33321 case Format::eEtc2R8G8B8UnormBlock: return "Etc2R8G8B8UnormBlock";
33322 case Format::eEtc2R8G8B8SrgbBlock: return "Etc2R8G8B8SrgbBlock";
33323 case Format::eEtc2R8G8B8A1UnormBlock: return "Etc2R8G8B8A1UnormBlock";
33324 case Format::eEtc2R8G8B8A1SrgbBlock: return "Etc2R8G8B8A1SrgbBlock";
33325 case Format::eEtc2R8G8B8A8UnormBlock: return "Etc2R8G8B8A8UnormBlock";
33326 case Format::eEtc2R8G8B8A8SrgbBlock: return "Etc2R8G8B8A8SrgbBlock";
33327 case Format::eEacR11UnormBlock: return "EacR11UnormBlock";
33328 case Format::eEacR11SnormBlock: return "EacR11SnormBlock";
33329 case Format::eEacR11G11UnormBlock: return "EacR11G11UnormBlock";
33330 case Format::eEacR11G11SnormBlock: return "EacR11G11SnormBlock";
33331 case Format::eAstc4x4UnormBlock: return "Astc4x4UnormBlock";
33332 case Format::eAstc4x4SrgbBlock: return "Astc4x4SrgbBlock";
33333 case Format::eAstc5x4UnormBlock: return "Astc5x4UnormBlock";
33334 case Format::eAstc5x4SrgbBlock: return "Astc5x4SrgbBlock";
33335 case Format::eAstc5x5UnormBlock: return "Astc5x5UnormBlock";
33336 case Format::eAstc5x5SrgbBlock: return "Astc5x5SrgbBlock";
33337 case Format::eAstc6x5UnormBlock: return "Astc6x5UnormBlock";
33338 case Format::eAstc6x5SrgbBlock: return "Astc6x5SrgbBlock";
33339 case Format::eAstc6x6UnormBlock: return "Astc6x6UnormBlock";
33340 case Format::eAstc6x6SrgbBlock: return "Astc6x6SrgbBlock";
33341 case Format::eAstc8x5UnormBlock: return "Astc8x5UnormBlock";
33342 case Format::eAstc8x5SrgbBlock: return "Astc8x5SrgbBlock";
33343 case Format::eAstc8x6UnormBlock: return "Astc8x6UnormBlock";
33344 case Format::eAstc8x6SrgbBlock: return "Astc8x6SrgbBlock";
33345 case Format::eAstc8x8UnormBlock: return "Astc8x8UnormBlock";
33346 case Format::eAstc8x8SrgbBlock: return "Astc8x8SrgbBlock";
33347 case Format::eAstc10x5UnormBlock: return "Astc10x5UnormBlock";
33348 case Format::eAstc10x5SrgbBlock: return "Astc10x5SrgbBlock";
33349 case Format::eAstc10x6UnormBlock: return "Astc10x6UnormBlock";
33350 case Format::eAstc10x6SrgbBlock: return "Astc10x6SrgbBlock";
33351 case Format::eAstc10x8UnormBlock: return "Astc10x8UnormBlock";
33352 case Format::eAstc10x8SrgbBlock: return "Astc10x8SrgbBlock";
33353 case Format::eAstc10x10UnormBlock: return "Astc10x10UnormBlock";
33354 case Format::eAstc10x10SrgbBlock: return "Astc10x10SrgbBlock";
33355 case Format::eAstc12x10UnormBlock: return "Astc12x10UnormBlock";
33356 case Format::eAstc12x10SrgbBlock: return "Astc12x10SrgbBlock";
33357 case Format::eAstc12x12UnormBlock: return "Astc12x12UnormBlock";
33358 case Format::eAstc12x12SrgbBlock: return "Astc12x12SrgbBlock";
Lenny Komowebf33162016-08-26 14:10:08 -060033359 case Format::ePvrtc12BppUnormBlockIMG: return "Pvrtc12BppUnormBlockIMG";
33360 case Format::ePvrtc14BppUnormBlockIMG: return "Pvrtc14BppUnormBlockIMG";
33361 case Format::ePvrtc22BppUnormBlockIMG: return "Pvrtc22BppUnormBlockIMG";
33362 case Format::ePvrtc24BppUnormBlockIMG: return "Pvrtc24BppUnormBlockIMG";
33363 case Format::ePvrtc12BppSrgbBlockIMG: return "Pvrtc12BppSrgbBlockIMG";
33364 case Format::ePvrtc14BppSrgbBlockIMG: return "Pvrtc14BppSrgbBlockIMG";
33365 case Format::ePvrtc22BppSrgbBlockIMG: return "Pvrtc22BppSrgbBlockIMG";
33366 case Format::ePvrtc24BppSrgbBlockIMG: return "Pvrtc24BppSrgbBlockIMG";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033367 case Format::eG8B8G8R8422UnormKHR: return "G8B8G8R8422UnormKHR";
33368 case Format::eB8G8R8G8422UnormKHR: return "B8G8R8G8422UnormKHR";
33369 case Format::eG8B8R83Plane420UnormKHR: return "G8B8R83Plane420UnormKHR";
33370 case Format::eG8B8R82Plane420UnormKHR: return "G8B8R82Plane420UnormKHR";
33371 case Format::eG8B8R83Plane422UnormKHR: return "G8B8R83Plane422UnormKHR";
33372 case Format::eG8B8R82Plane422UnormKHR: return "G8B8R82Plane422UnormKHR";
33373 case Format::eG8B8R83Plane444UnormKHR: return "G8B8R83Plane444UnormKHR";
33374 case Format::eR10X6UnormPack16KHR: return "R10X6UnormPack16KHR";
33375 case Format::eR10X6G10X6Unorm2Pack16KHR: return "R10X6G10X6Unorm2Pack16KHR";
33376 case Format::eR10X6G10X6B10X6A10X6Unorm4Pack16KHR: return "R10X6G10X6B10X6A10X6Unorm4Pack16KHR";
33377 case Format::eG10X6B10X6G10X6R10X6422Unorm4Pack16KHR: return "G10X6B10X6G10X6R10X6422Unorm4Pack16KHR";
33378 case Format::eB10X6G10X6R10X6G10X6422Unorm4Pack16KHR: return "B10X6G10X6R10X6G10X6422Unorm4Pack16KHR";
33379 case Format::eG10X6B10X6R10X63Plane420Unorm3Pack16KHR: return "G10X6B10X6R10X63Plane420Unorm3Pack16KHR";
33380 case Format::eG10X6B10X6R10X62Plane420Unorm3Pack16KHR: return "G10X6B10X6R10X62Plane420Unorm3Pack16KHR";
33381 case Format::eG10X6B10X6R10X63Plane422Unorm3Pack16KHR: return "G10X6B10X6R10X63Plane422Unorm3Pack16KHR";
33382 case Format::eG10X6B10X6R10X62Plane422Unorm3Pack16KHR: return "G10X6B10X6R10X62Plane422Unorm3Pack16KHR";
33383 case Format::eG10X6B10X6R10X63Plane444Unorm3Pack16KHR: return "G10X6B10X6R10X63Plane444Unorm3Pack16KHR";
33384 case Format::eR12X4UnormPack16KHR: return "R12X4UnormPack16KHR";
33385 case Format::eR12X4G12X4Unorm2Pack16KHR: return "R12X4G12X4Unorm2Pack16KHR";
33386 case Format::eR12X4G12X4B12X4A12X4Unorm4Pack16KHR: return "R12X4G12X4B12X4A12X4Unorm4Pack16KHR";
33387 case Format::eG12X4B12X4G12X4R12X4422Unorm4Pack16KHR: return "G12X4B12X4G12X4R12X4422Unorm4Pack16KHR";
33388 case Format::eB12X4G12X4R12X4G12X4422Unorm4Pack16KHR: return "B12X4G12X4R12X4G12X4422Unorm4Pack16KHR";
33389 case Format::eG12X4B12X4R12X43Plane420Unorm3Pack16KHR: return "G12X4B12X4R12X43Plane420Unorm3Pack16KHR";
33390 case Format::eG12X4B12X4R12X42Plane420Unorm3Pack16KHR: return "G12X4B12X4R12X42Plane420Unorm3Pack16KHR";
33391 case Format::eG12X4B12X4R12X43Plane422Unorm3Pack16KHR: return "G12X4B12X4R12X43Plane422Unorm3Pack16KHR";
33392 case Format::eG12X4B12X4R12X42Plane422Unorm3Pack16KHR: return "G12X4B12X4R12X42Plane422Unorm3Pack16KHR";
33393 case Format::eG12X4B12X4R12X43Plane444Unorm3Pack16KHR: return "G12X4B12X4R12X43Plane444Unorm3Pack16KHR";
33394 case Format::eG16B16G16R16422UnormKHR: return "G16B16G16R16422UnormKHR";
33395 case Format::eB16G16R16G16422UnormKHR: return "B16G16R16G16422UnormKHR";
33396 case Format::eG16B16R163Plane420UnormKHR: return "G16B16R163Plane420UnormKHR";
33397 case Format::eG16B16R162Plane420UnormKHR: return "G16B16R162Plane420UnormKHR";
33398 case Format::eG16B16R163Plane422UnormKHR: return "G16B16R163Plane422UnormKHR";
33399 case Format::eG16B16R162Plane422UnormKHR: return "G16B16R162Plane422UnormKHR";
33400 case Format::eG16B16R163Plane444UnormKHR: return "G16B16R163Plane444UnormKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033401 default: return "invalid";
33402 }
33403 }
33404
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033405 VULKAN_HPP_INLINE std::string to_string(StructureType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033406 {
33407 switch (value)
33408 {
33409 case StructureType::eApplicationInfo: return "ApplicationInfo";
33410 case StructureType::eInstanceCreateInfo: return "InstanceCreateInfo";
33411 case StructureType::eDeviceQueueCreateInfo: return "DeviceQueueCreateInfo";
33412 case StructureType::eDeviceCreateInfo: return "DeviceCreateInfo";
33413 case StructureType::eSubmitInfo: return "SubmitInfo";
33414 case StructureType::eMemoryAllocateInfo: return "MemoryAllocateInfo";
33415 case StructureType::eMappedMemoryRange: return "MappedMemoryRange";
33416 case StructureType::eBindSparseInfo: return "BindSparseInfo";
33417 case StructureType::eFenceCreateInfo: return "FenceCreateInfo";
33418 case StructureType::eSemaphoreCreateInfo: return "SemaphoreCreateInfo";
33419 case StructureType::eEventCreateInfo: return "EventCreateInfo";
33420 case StructureType::eQueryPoolCreateInfo: return "QueryPoolCreateInfo";
33421 case StructureType::eBufferCreateInfo: return "BufferCreateInfo";
33422 case StructureType::eBufferViewCreateInfo: return "BufferViewCreateInfo";
33423 case StructureType::eImageCreateInfo: return "ImageCreateInfo";
33424 case StructureType::eImageViewCreateInfo: return "ImageViewCreateInfo";
33425 case StructureType::eShaderModuleCreateInfo: return "ShaderModuleCreateInfo";
33426 case StructureType::ePipelineCacheCreateInfo: return "PipelineCacheCreateInfo";
33427 case StructureType::ePipelineShaderStageCreateInfo: return "PipelineShaderStageCreateInfo";
33428 case StructureType::ePipelineVertexInputStateCreateInfo: return "PipelineVertexInputStateCreateInfo";
33429 case StructureType::ePipelineInputAssemblyStateCreateInfo: return "PipelineInputAssemblyStateCreateInfo";
33430 case StructureType::ePipelineTessellationStateCreateInfo: return "PipelineTessellationStateCreateInfo";
33431 case StructureType::ePipelineViewportStateCreateInfo: return "PipelineViewportStateCreateInfo";
33432 case StructureType::ePipelineRasterizationStateCreateInfo: return "PipelineRasterizationStateCreateInfo";
33433 case StructureType::ePipelineMultisampleStateCreateInfo: return "PipelineMultisampleStateCreateInfo";
33434 case StructureType::ePipelineDepthStencilStateCreateInfo: return "PipelineDepthStencilStateCreateInfo";
33435 case StructureType::ePipelineColorBlendStateCreateInfo: return "PipelineColorBlendStateCreateInfo";
33436 case StructureType::ePipelineDynamicStateCreateInfo: return "PipelineDynamicStateCreateInfo";
33437 case StructureType::eGraphicsPipelineCreateInfo: return "GraphicsPipelineCreateInfo";
33438 case StructureType::eComputePipelineCreateInfo: return "ComputePipelineCreateInfo";
33439 case StructureType::ePipelineLayoutCreateInfo: return "PipelineLayoutCreateInfo";
33440 case StructureType::eSamplerCreateInfo: return "SamplerCreateInfo";
33441 case StructureType::eDescriptorSetLayoutCreateInfo: return "DescriptorSetLayoutCreateInfo";
33442 case StructureType::eDescriptorPoolCreateInfo: return "DescriptorPoolCreateInfo";
33443 case StructureType::eDescriptorSetAllocateInfo: return "DescriptorSetAllocateInfo";
33444 case StructureType::eWriteDescriptorSet: return "WriteDescriptorSet";
33445 case StructureType::eCopyDescriptorSet: return "CopyDescriptorSet";
33446 case StructureType::eFramebufferCreateInfo: return "FramebufferCreateInfo";
33447 case StructureType::eRenderPassCreateInfo: return "RenderPassCreateInfo";
33448 case StructureType::eCommandPoolCreateInfo: return "CommandPoolCreateInfo";
33449 case StructureType::eCommandBufferAllocateInfo: return "CommandBufferAllocateInfo";
33450 case StructureType::eCommandBufferInheritanceInfo: return "CommandBufferInheritanceInfo";
33451 case StructureType::eCommandBufferBeginInfo: return "CommandBufferBeginInfo";
33452 case StructureType::eRenderPassBeginInfo: return "RenderPassBeginInfo";
33453 case StructureType::eBufferMemoryBarrier: return "BufferMemoryBarrier";
33454 case StructureType::eImageMemoryBarrier: return "ImageMemoryBarrier";
33455 case StructureType::eMemoryBarrier: return "MemoryBarrier";
33456 case StructureType::eLoaderInstanceCreateInfo: return "LoaderInstanceCreateInfo";
33457 case StructureType::eLoaderDeviceCreateInfo: return "LoaderDeviceCreateInfo";
33458 case StructureType::eSwapchainCreateInfoKHR: return "SwapchainCreateInfoKHR";
33459 case StructureType::ePresentInfoKHR: return "PresentInfoKHR";
33460 case StructureType::eDisplayModeCreateInfoKHR: return "DisplayModeCreateInfoKHR";
33461 case StructureType::eDisplaySurfaceCreateInfoKHR: return "DisplaySurfaceCreateInfoKHR";
33462 case StructureType::eDisplayPresentInfoKHR: return "DisplayPresentInfoKHR";
33463 case StructureType::eXlibSurfaceCreateInfoKHR: return "XlibSurfaceCreateInfoKHR";
33464 case StructureType::eXcbSurfaceCreateInfoKHR: return "XcbSurfaceCreateInfoKHR";
33465 case StructureType::eWaylandSurfaceCreateInfoKHR: return "WaylandSurfaceCreateInfoKHR";
33466 case StructureType::eMirSurfaceCreateInfoKHR: return "MirSurfaceCreateInfoKHR";
33467 case StructureType::eAndroidSurfaceCreateInfoKHR: return "AndroidSurfaceCreateInfoKHR";
33468 case StructureType::eWin32SurfaceCreateInfoKHR: return "Win32SurfaceCreateInfoKHR";
33469 case StructureType::eDebugReportCallbackCreateInfoEXT: return "DebugReportCallbackCreateInfoEXT";
33470 case StructureType::ePipelineRasterizationStateRasterizationOrderAMD: return "PipelineRasterizationStateRasterizationOrderAMD";
33471 case StructureType::eDebugMarkerObjectNameInfoEXT: return "DebugMarkerObjectNameInfoEXT";
33472 case StructureType::eDebugMarkerObjectTagInfoEXT: return "DebugMarkerObjectTagInfoEXT";
33473 case StructureType::eDebugMarkerMarkerInfoEXT: return "DebugMarkerMarkerInfoEXT";
33474 case StructureType::eDedicatedAllocationImageCreateInfoNV: return "DedicatedAllocationImageCreateInfoNV";
33475 case StructureType::eDedicatedAllocationBufferCreateInfoNV: return "DedicatedAllocationBufferCreateInfoNV";
33476 case StructureType::eDedicatedAllocationMemoryAllocateInfoNV: return "DedicatedAllocationMemoryAllocateInfoNV";
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060033477 case StructureType::eTextureLodGatherFormatPropertiesAMD: return "TextureLodGatherFormatPropertiesAMD";
Mark Young0f183a82017-02-28 09:58:04 -070033478 case StructureType::eRenderPassMultiviewCreateInfoKHX: return "RenderPassMultiviewCreateInfoKHX";
33479 case StructureType::ePhysicalDeviceMultiviewFeaturesKHX: return "PhysicalDeviceMultiviewFeaturesKHX";
33480 case StructureType::ePhysicalDeviceMultiviewPropertiesKHX: return "PhysicalDeviceMultiviewPropertiesKHX";
Lenny Komow6501c122016-08-31 15:03:49 -060033481 case StructureType::eExternalMemoryImageCreateInfoNV: return "ExternalMemoryImageCreateInfoNV";
33482 case StructureType::eExportMemoryAllocateInfoNV: return "ExportMemoryAllocateInfoNV";
33483 case StructureType::eImportMemoryWin32HandleInfoNV: return "ImportMemoryWin32HandleInfoNV";
33484 case StructureType::eExportMemoryWin32HandleInfoNV: return "ExportMemoryWin32HandleInfoNV";
33485 case StructureType::eWin32KeyedMutexAcquireReleaseInfoNV: return "Win32KeyedMutexAcquireReleaseInfoNV";
Mark Young39389872017-01-19 21:10:49 -070033486 case StructureType::ePhysicalDeviceFeatures2KHR: return "PhysicalDeviceFeatures2KHR";
33487 case StructureType::ePhysicalDeviceProperties2KHR: return "PhysicalDeviceProperties2KHR";
33488 case StructureType::eFormatProperties2KHR: return "FormatProperties2KHR";
33489 case StructureType::eImageFormatProperties2KHR: return "ImageFormatProperties2KHR";
33490 case StructureType::ePhysicalDeviceImageFormatInfo2KHR: return "PhysicalDeviceImageFormatInfo2KHR";
33491 case StructureType::eQueueFamilyProperties2KHR: return "QueueFamilyProperties2KHR";
33492 case StructureType::ePhysicalDeviceMemoryProperties2KHR: return "PhysicalDeviceMemoryProperties2KHR";
33493 case StructureType::eSparseImageFormatProperties2KHR: return "SparseImageFormatProperties2KHR";
33494 case StructureType::ePhysicalDeviceSparseImageFormatInfo2KHR: return "PhysicalDeviceSparseImageFormatInfo2KHR";
Mark Young0f183a82017-02-28 09:58:04 -070033495 case StructureType::eMemoryAllocateFlagsInfoKHX: return "MemoryAllocateFlagsInfoKHX";
Mark Young0f183a82017-02-28 09:58:04 -070033496 case StructureType::eDeviceGroupRenderPassBeginInfoKHX: return "DeviceGroupRenderPassBeginInfoKHX";
33497 case StructureType::eDeviceGroupCommandBufferBeginInfoKHX: return "DeviceGroupCommandBufferBeginInfoKHX";
33498 case StructureType::eDeviceGroupSubmitInfoKHX: return "DeviceGroupSubmitInfoKHX";
33499 case StructureType::eDeviceGroupBindSparseInfoKHX: return "DeviceGroupBindSparseInfoKHX";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033500 case StructureType::eAcquireNextImageInfoKHX: return "AcquireNextImageInfoKHX";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033501 case StructureType::eBindBufferMemoryDeviceGroupInfoKHX: return "BindBufferMemoryDeviceGroupInfoKHX";
33502 case StructureType::eBindImageMemoryDeviceGroupInfoKHX: return "BindImageMemoryDeviceGroupInfoKHX";
Mark Young0f183a82017-02-28 09:58:04 -070033503 case StructureType::eDeviceGroupPresentCapabilitiesKHX: return "DeviceGroupPresentCapabilitiesKHX";
33504 case StructureType::eImageSwapchainCreateInfoKHX: return "ImageSwapchainCreateInfoKHX";
33505 case StructureType::eBindImageMemorySwapchainInfoKHX: return "BindImageMemorySwapchainInfoKHX";
Mark Young0f183a82017-02-28 09:58:04 -070033506 case StructureType::eDeviceGroupPresentInfoKHX: return "DeviceGroupPresentInfoKHX";
33507 case StructureType::eDeviceGroupSwapchainCreateInfoKHX: return "DeviceGroupSwapchainCreateInfoKHX";
Lenny Komow68432d72016-09-29 14:16:59 -060033508 case StructureType::eValidationFlagsEXT: return "ValidationFlagsEXT";
Mark Young39389872017-01-19 21:10:49 -070033509 case StructureType::eViSurfaceCreateInfoNN: return "ViSurfaceCreateInfoNN";
Mark Young0f183a82017-02-28 09:58:04 -070033510 case StructureType::ePhysicalDeviceGroupPropertiesKHX: return "PhysicalDeviceGroupPropertiesKHX";
33511 case StructureType::eDeviceGroupDeviceCreateInfoKHX: return "DeviceGroupDeviceCreateInfoKHX";
Mark Youngabc2d6e2017-07-07 07:59:56 -060033512 case StructureType::ePhysicalDeviceExternalImageFormatInfoKHR: return "PhysicalDeviceExternalImageFormatInfoKHR";
33513 case StructureType::eExternalImageFormatPropertiesKHR: return "ExternalImageFormatPropertiesKHR";
33514 case StructureType::ePhysicalDeviceExternalBufferInfoKHR: return "PhysicalDeviceExternalBufferInfoKHR";
33515 case StructureType::eExternalBufferPropertiesKHR: return "ExternalBufferPropertiesKHR";
33516 case StructureType::ePhysicalDeviceIdPropertiesKHR: return "PhysicalDeviceIdPropertiesKHR";
33517 case StructureType::eExternalMemoryBufferCreateInfoKHR: return "ExternalMemoryBufferCreateInfoKHR";
33518 case StructureType::eExternalMemoryImageCreateInfoKHR: return "ExternalMemoryImageCreateInfoKHR";
33519 case StructureType::eExportMemoryAllocateInfoKHR: return "ExportMemoryAllocateInfoKHR";
33520 case StructureType::eImportMemoryWin32HandleInfoKHR: return "ImportMemoryWin32HandleInfoKHR";
33521 case StructureType::eExportMemoryWin32HandleInfoKHR: return "ExportMemoryWin32HandleInfoKHR";
33522 case StructureType::eMemoryWin32HandlePropertiesKHR: return "MemoryWin32HandlePropertiesKHR";
33523 case StructureType::eMemoryGetWin32HandleInfoKHR: return "MemoryGetWin32HandleInfoKHR";
33524 case StructureType::eImportMemoryFdInfoKHR: return "ImportMemoryFdInfoKHR";
33525 case StructureType::eMemoryFdPropertiesKHR: return "MemoryFdPropertiesKHR";
33526 case StructureType::eMemoryGetFdInfoKHR: return "MemoryGetFdInfoKHR";
33527 case StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR: return "Win32KeyedMutexAcquireReleaseInfoKHR";
33528 case StructureType::ePhysicalDeviceExternalSemaphoreInfoKHR: return "PhysicalDeviceExternalSemaphoreInfoKHR";
33529 case StructureType::eExternalSemaphorePropertiesKHR: return "ExternalSemaphorePropertiesKHR";
33530 case StructureType::eExportSemaphoreCreateInfoKHR: return "ExportSemaphoreCreateInfoKHR";
33531 case StructureType::eImportSemaphoreWin32HandleInfoKHR: return "ImportSemaphoreWin32HandleInfoKHR";
33532 case StructureType::eExportSemaphoreWin32HandleInfoKHR: return "ExportSemaphoreWin32HandleInfoKHR";
33533 case StructureType::eD3D12FenceSubmitInfoKHR: return "D3D12FenceSubmitInfoKHR";
33534 case StructureType::eSemaphoreGetWin32HandleInfoKHR: return "SemaphoreGetWin32HandleInfoKHR";
33535 case StructureType::eImportSemaphoreFdInfoKHR: return "ImportSemaphoreFdInfoKHR";
33536 case StructureType::eSemaphoreGetFdInfoKHR: return "SemaphoreGetFdInfoKHR";
Mark Young0f183a82017-02-28 09:58:04 -070033537 case StructureType::ePhysicalDevicePushDescriptorPropertiesKHR: return "PhysicalDevicePushDescriptorPropertiesKHR";
Mark Youngabc2d6e2017-07-07 07:59:56 -060033538 case StructureType::ePhysicalDevice16BitStorageFeaturesKHR: return "PhysicalDevice16BitStorageFeaturesKHR";
Mark Lobodzinski3289d762017-04-03 08:22:04 -060033539 case StructureType::ePresentRegionsKHR: return "PresentRegionsKHR";
Mark Young0f183a82017-02-28 09:58:04 -070033540 case StructureType::eDescriptorUpdateTemplateCreateInfoKHR: return "DescriptorUpdateTemplateCreateInfoKHR";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033541 case StructureType::eObjectTableCreateInfoNVX: return "ObjectTableCreateInfoNVX";
33542 case StructureType::eIndirectCommandsLayoutCreateInfoNVX: return "IndirectCommandsLayoutCreateInfoNVX";
33543 case StructureType::eCmdProcessCommandsInfoNVX: return "CmdProcessCommandsInfoNVX";
33544 case StructureType::eCmdReserveSpaceForCommandsInfoNVX: return "CmdReserveSpaceForCommandsInfoNVX";
33545 case StructureType::eDeviceGeneratedCommandsLimitsNVX: return "DeviceGeneratedCommandsLimitsNVX";
33546 case StructureType::eDeviceGeneratedCommandsFeaturesNVX: return "DeviceGeneratedCommandsFeaturesNVX";
Mark Young0f183a82017-02-28 09:58:04 -070033547 case StructureType::ePipelineViewportWScalingStateCreateInfoNV: return "PipelineViewportWScalingStateCreateInfoNV";
Mark Young39389872017-01-19 21:10:49 -070033548 case StructureType::eSurfaceCapabilities2EXT: return "SurfaceCapabilities2EXT";
33549 case StructureType::eDisplayPowerInfoEXT: return "DisplayPowerInfoEXT";
33550 case StructureType::eDeviceEventInfoEXT: return "DeviceEventInfoEXT";
33551 case StructureType::eDisplayEventInfoEXT: return "DisplayEventInfoEXT";
33552 case StructureType::eSwapchainCounterCreateInfoEXT: return "SwapchainCounterCreateInfoEXT";
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060033553 case StructureType::ePresentTimesInfoGOOGLE: return "PresentTimesInfoGOOGLE";
Mark Young0f183a82017-02-28 09:58:04 -070033554 case StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX: return "PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX";
33555 case StructureType::ePipelineViewportSwizzleStateCreateInfoNV: return "PipelineViewportSwizzleStateCreateInfoNV";
33556 case StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT: return "PhysicalDeviceDiscardRectanglePropertiesEXT";
33557 case StructureType::ePipelineDiscardRectangleStateCreateInfoEXT: return "PipelineDiscardRectangleStateCreateInfoEXT";
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060033558 case StructureType::eHdrMetadataEXT: return "HdrMetadataEXT";
Mark Lobodzinski54385432017-05-15 10:27:52 -060033559 case StructureType::eSharedPresentSurfaceCapabilitiesKHR: return "SharedPresentSurfaceCapabilitiesKHR";
Mark Youngabc2d6e2017-07-07 07:59:56 -060033560 case StructureType::ePhysicalDeviceExternalFenceInfoKHR: return "PhysicalDeviceExternalFenceInfoKHR";
33561 case StructureType::eExternalFencePropertiesKHR: return "ExternalFencePropertiesKHR";
33562 case StructureType::eExportFenceCreateInfoKHR: return "ExportFenceCreateInfoKHR";
33563 case StructureType::eImportFenceWin32HandleInfoKHR: return "ImportFenceWin32HandleInfoKHR";
33564 case StructureType::eExportFenceWin32HandleInfoKHR: return "ExportFenceWin32HandleInfoKHR";
33565 case StructureType::eFenceGetWin32HandleInfoKHR: return "FenceGetWin32HandleInfoKHR";
33566 case StructureType::eImportFenceFdInfoKHR: return "ImportFenceFdInfoKHR";
33567 case StructureType::eFenceGetFdInfoKHR: return "FenceGetFdInfoKHR";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033568 case StructureType::ePhysicalDevicePointClippingPropertiesKHR: return "PhysicalDevicePointClippingPropertiesKHR";
33569 case StructureType::eRenderPassInputAttachmentAspectCreateInfoKHR: return "RenderPassInputAttachmentAspectCreateInfoKHR";
33570 case StructureType::eImageViewUsageCreateInfoKHR: return "ImageViewUsageCreateInfoKHR";
33571 case StructureType::ePipelineTessellationDomainOriginStateCreateInfoKHR: return "PipelineTessellationDomainOriginStateCreateInfoKHR";
Mark Lobodzinski54385432017-05-15 10:27:52 -060033572 case StructureType::ePhysicalDeviceSurfaceInfo2KHR: return "PhysicalDeviceSurfaceInfo2KHR";
33573 case StructureType::eSurfaceCapabilities2KHR: return "SurfaceCapabilities2KHR";
33574 case StructureType::eSurfaceFormat2KHR: return "SurfaceFormat2KHR";
Mark Youngabc2d6e2017-07-07 07:59:56 -060033575 case StructureType::ePhysicalDeviceVariablePointerFeaturesKHR: return "PhysicalDeviceVariablePointerFeaturesKHR";
Mark Young0f183a82017-02-28 09:58:04 -070033576 case StructureType::eIosSurfaceCreateInfoMVK: return "IosSurfaceCreateInfoMVK";
33577 case StructureType::eMacosSurfaceCreateInfoMVK: return "MacosSurfaceCreateInfoMVK";
Mark Youngabc2d6e2017-07-07 07:59:56 -060033578 case StructureType::eMemoryDedicatedRequirementsKHR: return "MemoryDedicatedRequirementsKHR";
33579 case StructureType::eMemoryDedicatedAllocateInfoKHR: return "MemoryDedicatedAllocateInfoKHR";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060033580 case StructureType::ePhysicalDeviceSamplerFilterMinmaxPropertiesEXT: return "PhysicalDeviceSamplerFilterMinmaxPropertiesEXT";
33581 case StructureType::eSamplerReductionModeCreateInfoEXT: return "SamplerReductionModeCreateInfoEXT";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033582 case StructureType::eSampleLocationsInfoEXT: return "SampleLocationsInfoEXT";
33583 case StructureType::eRenderPassSampleLocationsBeginInfoEXT: return "RenderPassSampleLocationsBeginInfoEXT";
33584 case StructureType::ePipelineSampleLocationsStateCreateInfoEXT: return "PipelineSampleLocationsStateCreateInfoEXT";
33585 case StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT: return "PhysicalDeviceSampleLocationsPropertiesEXT";
33586 case StructureType::eMultisamplePropertiesEXT: return "MultisamplePropertiesEXT";
Mark Youngabc2d6e2017-07-07 07:59:56 -060033587 case StructureType::eBufferMemoryRequirementsInfo2KHR: return "BufferMemoryRequirementsInfo2KHR";
33588 case StructureType::eImageMemoryRequirementsInfo2KHR: return "ImageMemoryRequirementsInfo2KHR";
33589 case StructureType::eImageSparseMemoryRequirementsInfo2KHR: return "ImageSparseMemoryRequirementsInfo2KHR";
33590 case StructureType::eMemoryRequirements2KHR: return "MemoryRequirements2KHR";
33591 case StructureType::eSparseImageMemoryRequirements2KHR: return "SparseImageMemoryRequirements2KHR";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033592 case StructureType::eImageFormatListCreateInfoKHR: return "ImageFormatListCreateInfoKHR";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060033593 case StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT: return "PhysicalDeviceBlendOperationAdvancedFeaturesEXT";
33594 case StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT: return "PhysicalDeviceBlendOperationAdvancedPropertiesEXT";
33595 case StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT: return "PipelineColorBlendAdvancedStateCreateInfoEXT";
33596 case StructureType::ePipelineCoverageToColorStateCreateInfoNV: return "PipelineCoverageToColorStateCreateInfoNV";
33597 case StructureType::ePipelineCoverageModulationStateCreateInfoNV: return "PipelineCoverageModulationStateCreateInfoNV";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033598 case StructureType::eSamplerYcbcrConversionCreateInfoKHR: return "SamplerYcbcrConversionCreateInfoKHR";
33599 case StructureType::eSamplerYcbcrConversionInfoKHR: return "SamplerYcbcrConversionInfoKHR";
33600 case StructureType::eBindImagePlaneMemoryInfoKHR: return "BindImagePlaneMemoryInfoKHR";
33601 case StructureType::eImagePlaneMemoryRequirementsInfoKHR: return "ImagePlaneMemoryRequirementsInfoKHR";
33602 case StructureType::ePhysicalDeviceSamplerYcbcrConversionFeaturesKHR: return "PhysicalDeviceSamplerYcbcrConversionFeaturesKHR";
33603 case StructureType::eSamplerYcbcrConversionImageFormatPropertiesKHR: return "SamplerYcbcrConversionImageFormatPropertiesKHR";
33604 case StructureType::eBindBufferMemoryInfoKHR: return "BindBufferMemoryInfoKHR";
33605 case StructureType::eBindImageMemoryInfoKHR: return "BindImageMemoryInfoKHR";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033606 case StructureType::eValidationCacheCreateInfoEXT: return "ValidationCacheCreateInfoEXT";
33607 case StructureType::eShaderModuleValidationCacheCreateInfoEXT: return "ShaderModuleValidationCacheCreateInfoEXT";
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060033608 case StructureType::eDeviceQueueGlobalPriorityCreateInfoEXT: return "DeviceQueueGlobalPriorityCreateInfoEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033609 default: return "invalid";
33610 }
33611 }
33612
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033613 VULKAN_HPP_INLINE std::string to_string(SubpassContents value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033614 {
33615 switch (value)
33616 {
33617 case SubpassContents::eInline: return "Inline";
33618 case SubpassContents::eSecondaryCommandBuffers: return "SecondaryCommandBuffers";
33619 default: return "invalid";
33620 }
33621 }
33622
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033623 VULKAN_HPP_INLINE std::string to_string(DynamicState value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033624 {
33625 switch (value)
33626 {
33627 case DynamicState::eViewport: return "Viewport";
33628 case DynamicState::eScissor: return "Scissor";
33629 case DynamicState::eLineWidth: return "LineWidth";
33630 case DynamicState::eDepthBias: return "DepthBias";
33631 case DynamicState::eBlendConstants: return "BlendConstants";
33632 case DynamicState::eDepthBounds: return "DepthBounds";
33633 case DynamicState::eStencilCompareMask: return "StencilCompareMask";
33634 case DynamicState::eStencilWriteMask: return "StencilWriteMask";
33635 case DynamicState::eStencilReference: return "StencilReference";
Mark Young0f183a82017-02-28 09:58:04 -070033636 case DynamicState::eViewportWScalingNV: return "ViewportWScalingNV";
33637 case DynamicState::eDiscardRectangleEXT: return "DiscardRectangleEXT";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033638 case DynamicState::eSampleLocationsEXT: return "SampleLocationsEXT";
Mark Young0f183a82017-02-28 09:58:04 -070033639 default: return "invalid";
33640 }
33641 }
33642
33643 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateTypeKHR value)
33644 {
33645 switch (value)
33646 {
33647 case DescriptorUpdateTemplateTypeKHR::eDescriptorSet: return "DescriptorSet";
33648 case DescriptorUpdateTemplateTypeKHR::ePushDescriptors: return "PushDescriptors";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033649 default: return "invalid";
33650 }
33651 }
33652
Mark Lobodzinski54385432017-05-15 10:27:52 -060033653 VULKAN_HPP_INLINE std::string to_string(ObjectType value)
33654 {
33655 switch (value)
33656 {
33657 case ObjectType::eUnknown: return "Unknown";
33658 case ObjectType::eInstance: return "Instance";
33659 case ObjectType::ePhysicalDevice: return "PhysicalDevice";
33660 case ObjectType::eDevice: return "Device";
33661 case ObjectType::eQueue: return "Queue";
33662 case ObjectType::eSemaphore: return "Semaphore";
33663 case ObjectType::eCommandBuffer: return "CommandBuffer";
33664 case ObjectType::eFence: return "Fence";
33665 case ObjectType::eDeviceMemory: return "DeviceMemory";
33666 case ObjectType::eBuffer: return "Buffer";
33667 case ObjectType::eImage: return "Image";
33668 case ObjectType::eEvent: return "Event";
33669 case ObjectType::eQueryPool: return "QueryPool";
33670 case ObjectType::eBufferView: return "BufferView";
33671 case ObjectType::eImageView: return "ImageView";
33672 case ObjectType::eShaderModule: return "ShaderModule";
33673 case ObjectType::ePipelineCache: return "PipelineCache";
33674 case ObjectType::ePipelineLayout: return "PipelineLayout";
33675 case ObjectType::eRenderPass: return "RenderPass";
33676 case ObjectType::ePipeline: return "Pipeline";
33677 case ObjectType::eDescriptorSetLayout: return "DescriptorSetLayout";
33678 case ObjectType::eSampler: return "Sampler";
33679 case ObjectType::eDescriptorPool: return "DescriptorPool";
33680 case ObjectType::eDescriptorSet: return "DescriptorSet";
33681 case ObjectType::eFramebuffer: return "Framebuffer";
33682 case ObjectType::eCommandPool: return "CommandPool";
33683 case ObjectType::eSurfaceKHR: return "SurfaceKHR";
33684 case ObjectType::eSwapchainKHR: return "SwapchainKHR";
33685 case ObjectType::eDisplayKHR: return "DisplayKHR";
33686 case ObjectType::eDisplayModeKHR: return "DisplayModeKHR";
33687 case ObjectType::eDebugReportCallbackEXT: return "DebugReportCallbackEXT";
33688 case ObjectType::eDescriptorUpdateTemplateKHR: return "DescriptorUpdateTemplateKHR";
33689 case ObjectType::eObjectTableNVX: return "ObjectTableNVX";
33690 case ObjectType::eIndirectCommandsLayoutNVX: return "IndirectCommandsLayoutNVX";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033691 case ObjectType::eSamplerYcbcrConversionKHR: return "SamplerYcbcrConversionKHR";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033692 case ObjectType::eValidationCacheEXT: return "ValidationCacheEXT";
Mark Lobodzinski54385432017-05-15 10:27:52 -060033693 default: return "invalid";
33694 }
33695 }
33696
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033697 VULKAN_HPP_INLINE std::string to_string(QueueFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033698 {
33699 switch (value)
33700 {
33701 case QueueFlagBits::eGraphics: return "Graphics";
33702 case QueueFlagBits::eCompute: return "Compute";
33703 case QueueFlagBits::eTransfer: return "Transfer";
33704 case QueueFlagBits::eSparseBinding: return "SparseBinding";
33705 default: return "invalid";
33706 }
33707 }
33708
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033709 VULKAN_HPP_INLINE std::string to_string(QueueFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033710 {
33711 if (!value) return "{}";
33712 std::string result;
33713 if (value & QueueFlagBits::eGraphics) result += "Graphics | ";
33714 if (value & QueueFlagBits::eCompute) result += "Compute | ";
33715 if (value & QueueFlagBits::eTransfer) result += "Transfer | ";
33716 if (value & QueueFlagBits::eSparseBinding) result += "SparseBinding | ";
33717 return "{" + result.substr(0, result.size() - 3) + "}";
33718 }
33719
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033720 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033721 {
33722 switch (value)
33723 {
33724 case MemoryPropertyFlagBits::eDeviceLocal: return "DeviceLocal";
33725 case MemoryPropertyFlagBits::eHostVisible: return "HostVisible";
33726 case MemoryPropertyFlagBits::eHostCoherent: return "HostCoherent";
33727 case MemoryPropertyFlagBits::eHostCached: return "HostCached";
33728 case MemoryPropertyFlagBits::eLazilyAllocated: return "LazilyAllocated";
33729 default: return "invalid";
33730 }
33731 }
33732
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033733 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033734 {
33735 if (!value) return "{}";
33736 std::string result;
33737 if (value & MemoryPropertyFlagBits::eDeviceLocal) result += "DeviceLocal | ";
33738 if (value & MemoryPropertyFlagBits::eHostVisible) result += "HostVisible | ";
33739 if (value & MemoryPropertyFlagBits::eHostCoherent) result += "HostCoherent | ";
33740 if (value & MemoryPropertyFlagBits::eHostCached) result += "HostCached | ";
33741 if (value & MemoryPropertyFlagBits::eLazilyAllocated) result += "LazilyAllocated | ";
33742 return "{" + result.substr(0, result.size() - 3) + "}";
33743 }
33744
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033745 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033746 {
33747 switch (value)
33748 {
33749 case MemoryHeapFlagBits::eDeviceLocal: return "DeviceLocal";
Mark Young0f183a82017-02-28 09:58:04 -070033750 case MemoryHeapFlagBits::eMultiInstanceKHX: return "MultiInstanceKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033751 default: return "invalid";
33752 }
33753 }
33754
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033755 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033756 {
33757 if (!value) return "{}";
33758 std::string result;
33759 if (value & MemoryHeapFlagBits::eDeviceLocal) result += "DeviceLocal | ";
Mark Young0f183a82017-02-28 09:58:04 -070033760 if (value & MemoryHeapFlagBits::eMultiInstanceKHX) result += "MultiInstanceKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033761 return "{" + result.substr(0, result.size() - 3) + "}";
33762 }
33763
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033764 VULKAN_HPP_INLINE std::string to_string(AccessFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033765 {
33766 switch (value)
33767 {
33768 case AccessFlagBits::eIndirectCommandRead: return "IndirectCommandRead";
33769 case AccessFlagBits::eIndexRead: return "IndexRead";
33770 case AccessFlagBits::eVertexAttributeRead: return "VertexAttributeRead";
33771 case AccessFlagBits::eUniformRead: return "UniformRead";
33772 case AccessFlagBits::eInputAttachmentRead: return "InputAttachmentRead";
33773 case AccessFlagBits::eShaderRead: return "ShaderRead";
33774 case AccessFlagBits::eShaderWrite: return "ShaderWrite";
33775 case AccessFlagBits::eColorAttachmentRead: return "ColorAttachmentRead";
33776 case AccessFlagBits::eColorAttachmentWrite: return "ColorAttachmentWrite";
33777 case AccessFlagBits::eDepthStencilAttachmentRead: return "DepthStencilAttachmentRead";
33778 case AccessFlagBits::eDepthStencilAttachmentWrite: return "DepthStencilAttachmentWrite";
33779 case AccessFlagBits::eTransferRead: return "TransferRead";
33780 case AccessFlagBits::eTransferWrite: return "TransferWrite";
33781 case AccessFlagBits::eHostRead: return "HostRead";
33782 case AccessFlagBits::eHostWrite: return "HostWrite";
33783 case AccessFlagBits::eMemoryRead: return "MemoryRead";
33784 case AccessFlagBits::eMemoryWrite: return "MemoryWrite";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033785 case AccessFlagBits::eCommandProcessReadNVX: return "CommandProcessReadNVX";
33786 case AccessFlagBits::eCommandProcessWriteNVX: return "CommandProcessWriteNVX";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060033787 case AccessFlagBits::eColorAttachmentReadNoncoherentEXT: return "ColorAttachmentReadNoncoherentEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033788 default: return "invalid";
33789 }
33790 }
33791
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033792 VULKAN_HPP_INLINE std::string to_string(AccessFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033793 {
33794 if (!value) return "{}";
33795 std::string result;
33796 if (value & AccessFlagBits::eIndirectCommandRead) result += "IndirectCommandRead | ";
33797 if (value & AccessFlagBits::eIndexRead) result += "IndexRead | ";
33798 if (value & AccessFlagBits::eVertexAttributeRead) result += "VertexAttributeRead | ";
33799 if (value & AccessFlagBits::eUniformRead) result += "UniformRead | ";
33800 if (value & AccessFlagBits::eInputAttachmentRead) result += "InputAttachmentRead | ";
33801 if (value & AccessFlagBits::eShaderRead) result += "ShaderRead | ";
33802 if (value & AccessFlagBits::eShaderWrite) result += "ShaderWrite | ";
33803 if (value & AccessFlagBits::eColorAttachmentRead) result += "ColorAttachmentRead | ";
33804 if (value & AccessFlagBits::eColorAttachmentWrite) result += "ColorAttachmentWrite | ";
33805 if (value & AccessFlagBits::eDepthStencilAttachmentRead) result += "DepthStencilAttachmentRead | ";
33806 if (value & AccessFlagBits::eDepthStencilAttachmentWrite) result += "DepthStencilAttachmentWrite | ";
33807 if (value & AccessFlagBits::eTransferRead) result += "TransferRead | ";
33808 if (value & AccessFlagBits::eTransferWrite) result += "TransferWrite | ";
33809 if (value & AccessFlagBits::eHostRead) result += "HostRead | ";
33810 if (value & AccessFlagBits::eHostWrite) result += "HostWrite | ";
33811 if (value & AccessFlagBits::eMemoryRead) result += "MemoryRead | ";
33812 if (value & AccessFlagBits::eMemoryWrite) result += "MemoryWrite | ";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033813 if (value & AccessFlagBits::eCommandProcessReadNVX) result += "CommandProcessReadNVX | ";
33814 if (value & AccessFlagBits::eCommandProcessWriteNVX) result += "CommandProcessWriteNVX | ";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060033815 if (value & AccessFlagBits::eColorAttachmentReadNoncoherentEXT) result += "ColorAttachmentReadNoncoherentEXT | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033816 return "{" + result.substr(0, result.size() - 3) + "}";
33817 }
33818
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033819 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033820 {
33821 switch (value)
33822 {
33823 case BufferUsageFlagBits::eTransferSrc: return "TransferSrc";
33824 case BufferUsageFlagBits::eTransferDst: return "TransferDst";
33825 case BufferUsageFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
33826 case BufferUsageFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
33827 case BufferUsageFlagBits::eUniformBuffer: return "UniformBuffer";
33828 case BufferUsageFlagBits::eStorageBuffer: return "StorageBuffer";
33829 case BufferUsageFlagBits::eIndexBuffer: return "IndexBuffer";
33830 case BufferUsageFlagBits::eVertexBuffer: return "VertexBuffer";
33831 case BufferUsageFlagBits::eIndirectBuffer: return "IndirectBuffer";
33832 default: return "invalid";
33833 }
33834 }
33835
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033836 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033837 {
33838 if (!value) return "{}";
33839 std::string result;
33840 if (value & BufferUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
33841 if (value & BufferUsageFlagBits::eTransferDst) result += "TransferDst | ";
33842 if (value & BufferUsageFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
33843 if (value & BufferUsageFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
33844 if (value & BufferUsageFlagBits::eUniformBuffer) result += "UniformBuffer | ";
33845 if (value & BufferUsageFlagBits::eStorageBuffer) result += "StorageBuffer | ";
33846 if (value & BufferUsageFlagBits::eIndexBuffer) result += "IndexBuffer | ";
33847 if (value & BufferUsageFlagBits::eVertexBuffer) result += "VertexBuffer | ";
33848 if (value & BufferUsageFlagBits::eIndirectBuffer) result += "IndirectBuffer | ";
33849 return "{" + result.substr(0, result.size() - 3) + "}";
33850 }
33851
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033852 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033853 {
33854 switch (value)
33855 {
33856 case BufferCreateFlagBits::eSparseBinding: return "SparseBinding";
33857 case BufferCreateFlagBits::eSparseResidency: return "SparseResidency";
33858 case BufferCreateFlagBits::eSparseAliased: return "SparseAliased";
33859 default: return "invalid";
33860 }
33861 }
33862
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033863 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033864 {
33865 if (!value) return "{}";
33866 std::string result;
33867 if (value & BufferCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
33868 if (value & BufferCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
33869 if (value & BufferCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
33870 return "{" + result.substr(0, result.size() - 3) + "}";
33871 }
33872
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033873 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033874 {
33875 switch (value)
33876 {
33877 case ShaderStageFlagBits::eVertex: return "Vertex";
33878 case ShaderStageFlagBits::eTessellationControl: return "TessellationControl";
33879 case ShaderStageFlagBits::eTessellationEvaluation: return "TessellationEvaluation";
33880 case ShaderStageFlagBits::eGeometry: return "Geometry";
33881 case ShaderStageFlagBits::eFragment: return "Fragment";
33882 case ShaderStageFlagBits::eCompute: return "Compute";
33883 case ShaderStageFlagBits::eAllGraphics: return "AllGraphics";
33884 case ShaderStageFlagBits::eAll: return "All";
33885 default: return "invalid";
33886 }
33887 }
33888
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033889 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033890 {
33891 if (!value) return "{}";
33892 std::string result;
33893 if (value & ShaderStageFlagBits::eVertex) result += "Vertex | ";
33894 if (value & ShaderStageFlagBits::eTessellationControl) result += "TessellationControl | ";
33895 if (value & ShaderStageFlagBits::eTessellationEvaluation) result += "TessellationEvaluation | ";
33896 if (value & ShaderStageFlagBits::eGeometry) result += "Geometry | ";
33897 if (value & ShaderStageFlagBits::eFragment) result += "Fragment | ";
33898 if (value & ShaderStageFlagBits::eCompute) result += "Compute | ";
33899 if (value & ShaderStageFlagBits::eAllGraphics) result += "AllGraphics | ";
33900 if (value & ShaderStageFlagBits::eAll) result += "All | ";
33901 return "{" + result.substr(0, result.size() - 3) + "}";
33902 }
33903
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033904 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033905 {
33906 switch (value)
33907 {
33908 case ImageUsageFlagBits::eTransferSrc: return "TransferSrc";
33909 case ImageUsageFlagBits::eTransferDst: return "TransferDst";
33910 case ImageUsageFlagBits::eSampled: return "Sampled";
33911 case ImageUsageFlagBits::eStorage: return "Storage";
33912 case ImageUsageFlagBits::eColorAttachment: return "ColorAttachment";
33913 case ImageUsageFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
33914 case ImageUsageFlagBits::eTransientAttachment: return "TransientAttachment";
33915 case ImageUsageFlagBits::eInputAttachment: return "InputAttachment";
33916 default: return "invalid";
33917 }
33918 }
33919
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033920 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033921 {
33922 if (!value) return "{}";
33923 std::string result;
33924 if (value & ImageUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
33925 if (value & ImageUsageFlagBits::eTransferDst) result += "TransferDst | ";
33926 if (value & ImageUsageFlagBits::eSampled) result += "Sampled | ";
33927 if (value & ImageUsageFlagBits::eStorage) result += "Storage | ";
33928 if (value & ImageUsageFlagBits::eColorAttachment) result += "ColorAttachment | ";
33929 if (value & ImageUsageFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
33930 if (value & ImageUsageFlagBits::eTransientAttachment) result += "TransientAttachment | ";
33931 if (value & ImageUsageFlagBits::eInputAttachment) result += "InputAttachment | ";
33932 return "{" + result.substr(0, result.size() - 3) + "}";
33933 }
33934
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033935 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033936 {
33937 switch (value)
33938 {
33939 case ImageCreateFlagBits::eSparseBinding: return "SparseBinding";
33940 case ImageCreateFlagBits::eSparseResidency: return "SparseResidency";
33941 case ImageCreateFlagBits::eSparseAliased: return "SparseAliased";
33942 case ImageCreateFlagBits::eMutableFormat: return "MutableFormat";
33943 case ImageCreateFlagBits::eCubeCompatible: return "CubeCompatible";
Mark Young0f183a82017-02-28 09:58:04 -070033944 case ImageCreateFlagBits::eBindSfrKHX: return "BindSfrKHX";
Mark Young39389872017-01-19 21:10:49 -070033945 case ImageCreateFlagBits::e2DArrayCompatibleKHR: return "2DArrayCompatibleKHR";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033946 case ImageCreateFlagBits::eBlockTexelViewCompatibleKHR: return "BlockTexelViewCompatibleKHR";
33947 case ImageCreateFlagBits::eExtendedUsageKHR: return "ExtendedUsageKHR";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033948 case ImageCreateFlagBits::eSampleLocationsCompatibleDepthEXT: return "SampleLocationsCompatibleDepthEXT";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033949 case ImageCreateFlagBits::eDisjointKHR: return "DisjointKHR";
33950 case ImageCreateFlagBits::eAliasKHR: return "AliasKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033951 default: return "invalid";
33952 }
33953 }
33954
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033955 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033956 {
33957 if (!value) return "{}";
33958 std::string result;
33959 if (value & ImageCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
33960 if (value & ImageCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
33961 if (value & ImageCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
33962 if (value & ImageCreateFlagBits::eMutableFormat) result += "MutableFormat | ";
33963 if (value & ImageCreateFlagBits::eCubeCompatible) result += "CubeCompatible | ";
Mark Young0f183a82017-02-28 09:58:04 -070033964 if (value & ImageCreateFlagBits::eBindSfrKHX) result += "BindSfrKHX | ";
Mark Young39389872017-01-19 21:10:49 -070033965 if (value & ImageCreateFlagBits::e2DArrayCompatibleKHR) result += "2DArrayCompatibleKHR | ";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033966 if (value & ImageCreateFlagBits::eBlockTexelViewCompatibleKHR) result += "BlockTexelViewCompatibleKHR | ";
33967 if (value & ImageCreateFlagBits::eExtendedUsageKHR) result += "ExtendedUsageKHR | ";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033968 if (value & ImageCreateFlagBits::eSampleLocationsCompatibleDepthEXT) result += "SampleLocationsCompatibleDepthEXT | ";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033969 if (value & ImageCreateFlagBits::eDisjointKHR) result += "DisjointKHR | ";
33970 if (value & ImageCreateFlagBits::eAliasKHR) result += "AliasKHR | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033971 return "{" + result.substr(0, result.size() - 3) + "}";
33972 }
33973
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033974 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033975 {
33976 switch (value)
33977 {
33978 case PipelineCreateFlagBits::eDisableOptimization: return "DisableOptimization";
33979 case PipelineCreateFlagBits::eAllowDerivatives: return "AllowDerivatives";
33980 case PipelineCreateFlagBits::eDerivative: return "Derivative";
Mark Young0f183a82017-02-28 09:58:04 -070033981 case PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX: return "ViewIndexFromDeviceIndexKHX";
33982 case PipelineCreateFlagBits::eDispatchBaseKHX: return "DispatchBaseKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033983 default: return "invalid";
33984 }
33985 }
33986
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033987 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033988 {
33989 if (!value) return "{}";
33990 std::string result;
33991 if (value & PipelineCreateFlagBits::eDisableOptimization) result += "DisableOptimization | ";
33992 if (value & PipelineCreateFlagBits::eAllowDerivatives) result += "AllowDerivatives | ";
33993 if (value & PipelineCreateFlagBits::eDerivative) result += "Derivative | ";
Mark Young0f183a82017-02-28 09:58:04 -070033994 if (value & PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX) result += "ViewIndexFromDeviceIndexKHX | ";
33995 if (value & PipelineCreateFlagBits::eDispatchBaseKHX) result += "DispatchBaseKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033996 return "{" + result.substr(0, result.size() - 3) + "}";
33997 }
33998
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033999 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034000 {
34001 switch (value)
34002 {
34003 case ColorComponentFlagBits::eR: return "R";
34004 case ColorComponentFlagBits::eG: return "G";
34005 case ColorComponentFlagBits::eB: return "B";
34006 case ColorComponentFlagBits::eA: return "A";
34007 default: return "invalid";
34008 }
34009 }
34010
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034011 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034012 {
34013 if (!value) return "{}";
34014 std::string result;
34015 if (value & ColorComponentFlagBits::eR) result += "R | ";
34016 if (value & ColorComponentFlagBits::eG) result += "G | ";
34017 if (value & ColorComponentFlagBits::eB) result += "B | ";
34018 if (value & ColorComponentFlagBits::eA) result += "A | ";
34019 return "{" + result.substr(0, result.size() - 3) + "}";
34020 }
34021
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034022 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034023 {
34024 switch (value)
34025 {
34026 case FenceCreateFlagBits::eSignaled: return "Signaled";
34027 default: return "invalid";
34028 }
34029 }
34030
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034031 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034032 {
34033 if (!value) return "{}";
34034 std::string result;
34035 if (value & FenceCreateFlagBits::eSignaled) result += "Signaled | ";
34036 return "{" + result.substr(0, result.size() - 3) + "}";
34037 }
34038
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034039 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034040 {
34041 switch (value)
34042 {
34043 case FormatFeatureFlagBits::eSampledImage: return "SampledImage";
34044 case FormatFeatureFlagBits::eStorageImage: return "StorageImage";
34045 case FormatFeatureFlagBits::eStorageImageAtomic: return "StorageImageAtomic";
34046 case FormatFeatureFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
34047 case FormatFeatureFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
34048 case FormatFeatureFlagBits::eStorageTexelBufferAtomic: return "StorageTexelBufferAtomic";
34049 case FormatFeatureFlagBits::eVertexBuffer: return "VertexBuffer";
34050 case FormatFeatureFlagBits::eColorAttachment: return "ColorAttachment";
34051 case FormatFeatureFlagBits::eColorAttachmentBlend: return "ColorAttachmentBlend";
34052 case FormatFeatureFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
34053 case FormatFeatureFlagBits::eBlitSrc: return "BlitSrc";
34054 case FormatFeatureFlagBits::eBlitDst: return "BlitDst";
34055 case FormatFeatureFlagBits::eSampledImageFilterLinear: return "SampledImageFilterLinear";
34056 case FormatFeatureFlagBits::eSampledImageFilterCubicIMG: return "SampledImageFilterCubicIMG";
Mark Young39389872017-01-19 21:10:49 -070034057 case FormatFeatureFlagBits::eTransferSrcKHR: return "TransferSrcKHR";
34058 case FormatFeatureFlagBits::eTransferDstKHR: return "TransferDstKHR";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060034059 case FormatFeatureFlagBits::eSampledImageFilterMinmaxEXT: return "SampledImageFilterMinmaxEXT";
Lenny Komowb79f04a2017-09-18 17:07:00 -060034060 case FormatFeatureFlagBits::eMidpointChromaSamplesKHR: return "MidpointChromaSamplesKHR";
34061 case FormatFeatureFlagBits::eSampledImageYcbcrConversionLinearFilterKHR: return "SampledImageYcbcrConversionLinearFilterKHR";
34062 case FormatFeatureFlagBits::eSampledImageYcbcrConversionSeparateReconstructionFilterKHR: return "SampledImageYcbcrConversionSeparateReconstructionFilterKHR";
34063 case FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitKHR: return "SampledImageYcbcrConversionChromaReconstructionExplicitKHR";
34064 case FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR: return "SampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR";
34065 case FormatFeatureFlagBits::eDisjointKHR: return "DisjointKHR";
34066 case FormatFeatureFlagBits::eCositedChromaSamplesKHR: return "CositedChromaSamplesKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034067 default: return "invalid";
34068 }
34069 }
34070
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034071 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034072 {
34073 if (!value) return "{}";
34074 std::string result;
34075 if (value & FormatFeatureFlagBits::eSampledImage) result += "SampledImage | ";
34076 if (value & FormatFeatureFlagBits::eStorageImage) result += "StorageImage | ";
34077 if (value & FormatFeatureFlagBits::eStorageImageAtomic) result += "StorageImageAtomic | ";
34078 if (value & FormatFeatureFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
34079 if (value & FormatFeatureFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
34080 if (value & FormatFeatureFlagBits::eStorageTexelBufferAtomic) result += "StorageTexelBufferAtomic | ";
34081 if (value & FormatFeatureFlagBits::eVertexBuffer) result += "VertexBuffer | ";
34082 if (value & FormatFeatureFlagBits::eColorAttachment) result += "ColorAttachment | ";
34083 if (value & FormatFeatureFlagBits::eColorAttachmentBlend) result += "ColorAttachmentBlend | ";
34084 if (value & FormatFeatureFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
34085 if (value & FormatFeatureFlagBits::eBlitSrc) result += "BlitSrc | ";
34086 if (value & FormatFeatureFlagBits::eBlitDst) result += "BlitDst | ";
34087 if (value & FormatFeatureFlagBits::eSampledImageFilterLinear) result += "SampledImageFilterLinear | ";
34088 if (value & FormatFeatureFlagBits::eSampledImageFilterCubicIMG) result += "SampledImageFilterCubicIMG | ";
Mark Young39389872017-01-19 21:10:49 -070034089 if (value & FormatFeatureFlagBits::eTransferSrcKHR) result += "TransferSrcKHR | ";
34090 if (value & FormatFeatureFlagBits::eTransferDstKHR) result += "TransferDstKHR | ";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060034091 if (value & FormatFeatureFlagBits::eSampledImageFilterMinmaxEXT) result += "SampledImageFilterMinmaxEXT | ";
Lenny Komowb79f04a2017-09-18 17:07:00 -060034092 if (value & FormatFeatureFlagBits::eMidpointChromaSamplesKHR) result += "MidpointChromaSamplesKHR | ";
34093 if (value & FormatFeatureFlagBits::eSampledImageYcbcrConversionLinearFilterKHR) result += "SampledImageYcbcrConversionLinearFilterKHR | ";
34094 if (value & FormatFeatureFlagBits::eSampledImageYcbcrConversionSeparateReconstructionFilterKHR) result += "SampledImageYcbcrConversionSeparateReconstructionFilterKHR | ";
34095 if (value & FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitKHR) result += "SampledImageYcbcrConversionChromaReconstructionExplicitKHR | ";
34096 if (value & FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR) result += "SampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR | ";
34097 if (value & FormatFeatureFlagBits::eDisjointKHR) result += "DisjointKHR | ";
34098 if (value & FormatFeatureFlagBits::eCositedChromaSamplesKHR) result += "CositedChromaSamplesKHR | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034099 return "{" + result.substr(0, result.size() - 3) + "}";
34100 }
34101
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034102 VULKAN_HPP_INLINE std::string to_string(QueryControlFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034103 {
34104 switch (value)
34105 {
34106 case QueryControlFlagBits::ePrecise: return "Precise";
34107 default: return "invalid";
34108 }
34109 }
34110
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034111 VULKAN_HPP_INLINE std::string to_string(QueryControlFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034112 {
34113 if (!value) return "{}";
34114 std::string result;
34115 if (value & QueryControlFlagBits::ePrecise) result += "Precise | ";
34116 return "{" + result.substr(0, result.size() - 3) + "}";
34117 }
34118
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034119 VULKAN_HPP_INLINE std::string to_string(QueryResultFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034120 {
34121 switch (value)
34122 {
34123 case QueryResultFlagBits::e64: return "64";
34124 case QueryResultFlagBits::eWait: return "Wait";
34125 case QueryResultFlagBits::eWithAvailability: return "WithAvailability";
34126 case QueryResultFlagBits::ePartial: return "Partial";
34127 default: return "invalid";
34128 }
34129 }
34130
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034131 VULKAN_HPP_INLINE std::string to_string(QueryResultFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034132 {
34133 if (!value) return "{}";
34134 std::string result;
34135 if (value & QueryResultFlagBits::e64) result += "64 | ";
34136 if (value & QueryResultFlagBits::eWait) result += "Wait | ";
34137 if (value & QueryResultFlagBits::eWithAvailability) result += "WithAvailability | ";
34138 if (value & QueryResultFlagBits::ePartial) result += "Partial | ";
34139 return "{" + result.substr(0, result.size() - 3) + "}";
34140 }
34141
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034142 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034143 {
34144 switch (value)
34145 {
34146 case CommandBufferUsageFlagBits::eOneTimeSubmit: return "OneTimeSubmit";
34147 case CommandBufferUsageFlagBits::eRenderPassContinue: return "RenderPassContinue";
34148 case CommandBufferUsageFlagBits::eSimultaneousUse: return "SimultaneousUse";
34149 default: return "invalid";
34150 }
34151 }
34152
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034153 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034154 {
34155 if (!value) return "{}";
34156 std::string result;
34157 if (value & CommandBufferUsageFlagBits::eOneTimeSubmit) result += "OneTimeSubmit | ";
34158 if (value & CommandBufferUsageFlagBits::eRenderPassContinue) result += "RenderPassContinue | ";
34159 if (value & CommandBufferUsageFlagBits::eSimultaneousUse) result += "SimultaneousUse | ";
34160 return "{" + result.substr(0, result.size() - 3) + "}";
34161 }
34162
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034163 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034164 {
34165 switch (value)
34166 {
34167 case QueryPipelineStatisticFlagBits::eInputAssemblyVertices: return "InputAssemblyVertices";
34168 case QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives: return "InputAssemblyPrimitives";
34169 case QueryPipelineStatisticFlagBits::eVertexShaderInvocations: return "VertexShaderInvocations";
34170 case QueryPipelineStatisticFlagBits::eGeometryShaderInvocations: return "GeometryShaderInvocations";
34171 case QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives: return "GeometryShaderPrimitives";
34172 case QueryPipelineStatisticFlagBits::eClippingInvocations: return "ClippingInvocations";
34173 case QueryPipelineStatisticFlagBits::eClippingPrimitives: return "ClippingPrimitives";
34174 case QueryPipelineStatisticFlagBits::eFragmentShaderInvocations: return "FragmentShaderInvocations";
34175 case QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches: return "TessellationControlShaderPatches";
34176 case QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations: return "TessellationEvaluationShaderInvocations";
34177 case QueryPipelineStatisticFlagBits::eComputeShaderInvocations: return "ComputeShaderInvocations";
34178 default: return "invalid";
34179 }
34180 }
34181
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034182 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034183 {
34184 if (!value) return "{}";
34185 std::string result;
34186 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyVertices) result += "InputAssemblyVertices | ";
34187 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives) result += "InputAssemblyPrimitives | ";
34188 if (value & QueryPipelineStatisticFlagBits::eVertexShaderInvocations) result += "VertexShaderInvocations | ";
34189 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderInvocations) result += "GeometryShaderInvocations | ";
34190 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives) result += "GeometryShaderPrimitives | ";
34191 if (value & QueryPipelineStatisticFlagBits::eClippingInvocations) result += "ClippingInvocations | ";
34192 if (value & QueryPipelineStatisticFlagBits::eClippingPrimitives) result += "ClippingPrimitives | ";
34193 if (value & QueryPipelineStatisticFlagBits::eFragmentShaderInvocations) result += "FragmentShaderInvocations | ";
34194 if (value & QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches) result += "TessellationControlShaderPatches | ";
34195 if (value & QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations) result += "TessellationEvaluationShaderInvocations | ";
34196 if (value & QueryPipelineStatisticFlagBits::eComputeShaderInvocations) result += "ComputeShaderInvocations | ";
34197 return "{" + result.substr(0, result.size() - 3) + "}";
34198 }
34199
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034200 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034201 {
34202 switch (value)
34203 {
34204 case ImageAspectFlagBits::eColor: return "Color";
34205 case ImageAspectFlagBits::eDepth: return "Depth";
34206 case ImageAspectFlagBits::eStencil: return "Stencil";
34207 case ImageAspectFlagBits::eMetadata: return "Metadata";
Lenny Komowb79f04a2017-09-18 17:07:00 -060034208 case ImageAspectFlagBits::ePlane0KHR: return "Plane0KHR";
34209 case ImageAspectFlagBits::ePlane1KHR: return "Plane1KHR";
34210 case ImageAspectFlagBits::ePlane2KHR: return "Plane2KHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034211 default: return "invalid";
34212 }
34213 }
34214
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034215 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034216 {
34217 if (!value) return "{}";
34218 std::string result;
34219 if (value & ImageAspectFlagBits::eColor) result += "Color | ";
34220 if (value & ImageAspectFlagBits::eDepth) result += "Depth | ";
34221 if (value & ImageAspectFlagBits::eStencil) result += "Stencil | ";
34222 if (value & ImageAspectFlagBits::eMetadata) result += "Metadata | ";
Lenny Komowb79f04a2017-09-18 17:07:00 -060034223 if (value & ImageAspectFlagBits::ePlane0KHR) result += "Plane0KHR | ";
34224 if (value & ImageAspectFlagBits::ePlane1KHR) result += "Plane1KHR | ";
34225 if (value & ImageAspectFlagBits::ePlane2KHR) result += "Plane2KHR | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034226 return "{" + result.substr(0, result.size() - 3) + "}";
34227 }
34228
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034229 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034230 {
34231 switch (value)
34232 {
34233 case SparseImageFormatFlagBits::eSingleMiptail: return "SingleMiptail";
34234 case SparseImageFormatFlagBits::eAlignedMipSize: return "AlignedMipSize";
34235 case SparseImageFormatFlagBits::eNonstandardBlockSize: return "NonstandardBlockSize";
34236 default: return "invalid";
34237 }
34238 }
34239
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034240 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034241 {
34242 if (!value) return "{}";
34243 std::string result;
34244 if (value & SparseImageFormatFlagBits::eSingleMiptail) result += "SingleMiptail | ";
34245 if (value & SparseImageFormatFlagBits::eAlignedMipSize) result += "AlignedMipSize | ";
34246 if (value & SparseImageFormatFlagBits::eNonstandardBlockSize) result += "NonstandardBlockSize | ";
34247 return "{" + result.substr(0, result.size() - 3) + "}";
34248 }
34249
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034250 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034251 {
34252 switch (value)
34253 {
34254 case SparseMemoryBindFlagBits::eMetadata: return "Metadata";
34255 default: return "invalid";
34256 }
34257 }
34258
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034259 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034260 {
34261 if (!value) return "{}";
34262 std::string result;
34263 if (value & SparseMemoryBindFlagBits::eMetadata) result += "Metadata | ";
34264 return "{" + result.substr(0, result.size() - 3) + "}";
34265 }
34266
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034267 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034268 {
34269 switch (value)
34270 {
34271 case PipelineStageFlagBits::eTopOfPipe: return "TopOfPipe";
34272 case PipelineStageFlagBits::eDrawIndirect: return "DrawIndirect";
34273 case PipelineStageFlagBits::eVertexInput: return "VertexInput";
34274 case PipelineStageFlagBits::eVertexShader: return "VertexShader";
34275 case PipelineStageFlagBits::eTessellationControlShader: return "TessellationControlShader";
34276 case PipelineStageFlagBits::eTessellationEvaluationShader: return "TessellationEvaluationShader";
34277 case PipelineStageFlagBits::eGeometryShader: return "GeometryShader";
34278 case PipelineStageFlagBits::eFragmentShader: return "FragmentShader";
34279 case PipelineStageFlagBits::eEarlyFragmentTests: return "EarlyFragmentTests";
34280 case PipelineStageFlagBits::eLateFragmentTests: return "LateFragmentTests";
34281 case PipelineStageFlagBits::eColorAttachmentOutput: return "ColorAttachmentOutput";
34282 case PipelineStageFlagBits::eComputeShader: return "ComputeShader";
34283 case PipelineStageFlagBits::eTransfer: return "Transfer";
34284 case PipelineStageFlagBits::eBottomOfPipe: return "BottomOfPipe";
34285 case PipelineStageFlagBits::eHost: return "Host";
34286 case PipelineStageFlagBits::eAllGraphics: return "AllGraphics";
34287 case PipelineStageFlagBits::eAllCommands: return "AllCommands";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034288 case PipelineStageFlagBits::eCommandProcessNVX: return "CommandProcessNVX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034289 default: return "invalid";
34290 }
34291 }
34292
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034293 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034294 {
34295 if (!value) return "{}";
34296 std::string result;
34297 if (value & PipelineStageFlagBits::eTopOfPipe) result += "TopOfPipe | ";
34298 if (value & PipelineStageFlagBits::eDrawIndirect) result += "DrawIndirect | ";
34299 if (value & PipelineStageFlagBits::eVertexInput) result += "VertexInput | ";
34300 if (value & PipelineStageFlagBits::eVertexShader) result += "VertexShader | ";
34301 if (value & PipelineStageFlagBits::eTessellationControlShader) result += "TessellationControlShader | ";
34302 if (value & PipelineStageFlagBits::eTessellationEvaluationShader) result += "TessellationEvaluationShader | ";
34303 if (value & PipelineStageFlagBits::eGeometryShader) result += "GeometryShader | ";
34304 if (value & PipelineStageFlagBits::eFragmentShader) result += "FragmentShader | ";
34305 if (value & PipelineStageFlagBits::eEarlyFragmentTests) result += "EarlyFragmentTests | ";
34306 if (value & PipelineStageFlagBits::eLateFragmentTests) result += "LateFragmentTests | ";
34307 if (value & PipelineStageFlagBits::eColorAttachmentOutput) result += "ColorAttachmentOutput | ";
34308 if (value & PipelineStageFlagBits::eComputeShader) result += "ComputeShader | ";
34309 if (value & PipelineStageFlagBits::eTransfer) result += "Transfer | ";
34310 if (value & PipelineStageFlagBits::eBottomOfPipe) result += "BottomOfPipe | ";
34311 if (value & PipelineStageFlagBits::eHost) result += "Host | ";
34312 if (value & PipelineStageFlagBits::eAllGraphics) result += "AllGraphics | ";
34313 if (value & PipelineStageFlagBits::eAllCommands) result += "AllCommands | ";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034314 if (value & PipelineStageFlagBits::eCommandProcessNVX) result += "CommandProcessNVX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034315 return "{" + result.substr(0, result.size() - 3) + "}";
34316 }
34317
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034318 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034319 {
34320 switch (value)
34321 {
34322 case CommandPoolCreateFlagBits::eTransient: return "Transient";
34323 case CommandPoolCreateFlagBits::eResetCommandBuffer: return "ResetCommandBuffer";
34324 default: return "invalid";
34325 }
34326 }
34327
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034328 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034329 {
34330 if (!value) return "{}";
34331 std::string result;
34332 if (value & CommandPoolCreateFlagBits::eTransient) result += "Transient | ";
34333 if (value & CommandPoolCreateFlagBits::eResetCommandBuffer) result += "ResetCommandBuffer | ";
34334 return "{" + result.substr(0, result.size() - 3) + "}";
34335 }
34336
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034337 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034338 {
34339 switch (value)
34340 {
34341 case CommandPoolResetFlagBits::eReleaseResources: return "ReleaseResources";
34342 default: return "invalid";
34343 }
34344 }
34345
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034346 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034347 {
34348 if (!value) return "{}";
34349 std::string result;
34350 if (value & CommandPoolResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
34351 return "{" + result.substr(0, result.size() - 3) + "}";
34352 }
34353
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034354 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034355 {
34356 switch (value)
34357 {
34358 case CommandBufferResetFlagBits::eReleaseResources: return "ReleaseResources";
34359 default: return "invalid";
34360 }
34361 }
34362
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034363 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034364 {
34365 if (!value) return "{}";
34366 std::string result;
34367 if (value & CommandBufferResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
34368 return "{" + result.substr(0, result.size() - 3) + "}";
34369 }
34370
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034371 VULKAN_HPP_INLINE std::string to_string(SampleCountFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034372 {
34373 switch (value)
34374 {
34375 case SampleCountFlagBits::e1: return "1";
34376 case SampleCountFlagBits::e2: return "2";
34377 case SampleCountFlagBits::e4: return "4";
34378 case SampleCountFlagBits::e8: return "8";
34379 case SampleCountFlagBits::e16: return "16";
34380 case SampleCountFlagBits::e32: return "32";
34381 case SampleCountFlagBits::e64: return "64";
34382 default: return "invalid";
34383 }
34384 }
34385
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034386 VULKAN_HPP_INLINE std::string to_string(SampleCountFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034387 {
34388 if (!value) return "{}";
34389 std::string result;
34390 if (value & SampleCountFlagBits::e1) result += "1 | ";
34391 if (value & SampleCountFlagBits::e2) result += "2 | ";
34392 if (value & SampleCountFlagBits::e4) result += "4 | ";
34393 if (value & SampleCountFlagBits::e8) result += "8 | ";
34394 if (value & SampleCountFlagBits::e16) result += "16 | ";
34395 if (value & SampleCountFlagBits::e32) result += "32 | ";
34396 if (value & SampleCountFlagBits::e64) result += "64 | ";
34397 return "{" + result.substr(0, result.size() - 3) + "}";
34398 }
34399
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034400 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034401 {
34402 switch (value)
34403 {
34404 case AttachmentDescriptionFlagBits::eMayAlias: return "MayAlias";
34405 default: return "invalid";
34406 }
34407 }
34408
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034409 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034410 {
34411 if (!value) return "{}";
34412 std::string result;
34413 if (value & AttachmentDescriptionFlagBits::eMayAlias) result += "MayAlias | ";
34414 return "{" + result.substr(0, result.size() - 3) + "}";
34415 }
34416
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034417 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034418 {
34419 switch (value)
34420 {
34421 case StencilFaceFlagBits::eFront: return "Front";
34422 case StencilFaceFlagBits::eBack: return "Back";
34423 case StencilFaceFlagBits::eVkStencilFrontAndBack: return "VkStencilFrontAndBack";
34424 default: return "invalid";
34425 }
34426 }
34427
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034428 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034429 {
34430 if (!value) return "{}";
34431 std::string result;
34432 if (value & StencilFaceFlagBits::eFront) result += "Front | ";
34433 if (value & StencilFaceFlagBits::eBack) result += "Back | ";
34434 if (value & StencilFaceFlagBits::eVkStencilFrontAndBack) result += "VkStencilFrontAndBack | ";
34435 return "{" + result.substr(0, result.size() - 3) + "}";
34436 }
34437
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034438 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034439 {
34440 switch (value)
34441 {
34442 case DescriptorPoolCreateFlagBits::eFreeDescriptorSet: return "FreeDescriptorSet";
34443 default: return "invalid";
34444 }
34445 }
34446
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034447 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034448 {
34449 if (!value) return "{}";
34450 std::string result;
34451 if (value & DescriptorPoolCreateFlagBits::eFreeDescriptorSet) result += "FreeDescriptorSet | ";
34452 return "{" + result.substr(0, result.size() - 3) + "}";
34453 }
34454
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034455 VULKAN_HPP_INLINE std::string to_string(DependencyFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034456 {
34457 switch (value)
34458 {
34459 case DependencyFlagBits::eByRegion: return "ByRegion";
Mark Young0f183a82017-02-28 09:58:04 -070034460 case DependencyFlagBits::eViewLocalKHX: return "ViewLocalKHX";
34461 case DependencyFlagBits::eDeviceGroupKHX: return "DeviceGroupKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034462 default: return "invalid";
34463 }
34464 }
34465
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034466 VULKAN_HPP_INLINE std::string to_string(DependencyFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034467 {
34468 if (!value) return "{}";
34469 std::string result;
34470 if (value & DependencyFlagBits::eByRegion) result += "ByRegion | ";
Mark Young0f183a82017-02-28 09:58:04 -070034471 if (value & DependencyFlagBits::eViewLocalKHX) result += "ViewLocalKHX | ";
34472 if (value & DependencyFlagBits::eDeviceGroupKHX) result += "DeviceGroupKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034473 return "{" + result.substr(0, result.size() - 3) + "}";
34474 }
34475
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034476 VULKAN_HPP_INLINE std::string to_string(PresentModeKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034477 {
34478 switch (value)
34479 {
34480 case PresentModeKHR::eImmediate: return "Immediate";
34481 case PresentModeKHR::eMailbox: return "Mailbox";
34482 case PresentModeKHR::eFifo: return "Fifo";
34483 case PresentModeKHR::eFifoRelaxed: return "FifoRelaxed";
Mark Lobodzinski54385432017-05-15 10:27:52 -060034484 case PresentModeKHR::eSharedDemandRefresh: return "SharedDemandRefresh";
34485 case PresentModeKHR::eSharedContinuousRefresh: return "SharedContinuousRefresh";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034486 default: return "invalid";
34487 }
34488 }
34489
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034490 VULKAN_HPP_INLINE std::string to_string(ColorSpaceKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034491 {
34492 switch (value)
34493 {
34494 case ColorSpaceKHR::eSrgbNonlinear: return "SrgbNonlinear";
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060034495 case ColorSpaceKHR::eDisplayP3NonlinearEXT: return "DisplayP3NonlinearEXT";
34496 case ColorSpaceKHR::eExtendedSrgbLinearEXT: return "ExtendedSrgbLinearEXT";
34497 case ColorSpaceKHR::eDciP3LinearEXT: return "DciP3LinearEXT";
34498 case ColorSpaceKHR::eDciP3NonlinearEXT: return "DciP3NonlinearEXT";
34499 case ColorSpaceKHR::eBt709LinearEXT: return "Bt709LinearEXT";
34500 case ColorSpaceKHR::eBt709NonlinearEXT: return "Bt709NonlinearEXT";
34501 case ColorSpaceKHR::eBt2020LinearEXT: return "Bt2020LinearEXT";
34502 case ColorSpaceKHR::eHdr10St2084EXT: return "Hdr10St2084EXT";
34503 case ColorSpaceKHR::eDolbyvisionEXT: return "DolbyvisionEXT";
34504 case ColorSpaceKHR::eHdr10HlgEXT: return "Hdr10HlgEXT";
34505 case ColorSpaceKHR::eAdobergbLinearEXT: return "AdobergbLinearEXT";
34506 case ColorSpaceKHR::eAdobergbNonlinearEXT: return "AdobergbNonlinearEXT";
34507 case ColorSpaceKHR::ePassThroughEXT: return "PassThroughEXT";
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060034508 case ColorSpaceKHR::eExtendedSrgbNonlinearEXT: return "ExtendedSrgbNonlinearEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034509 default: return "invalid";
34510 }
34511 }
34512
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034513 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034514 {
34515 switch (value)
34516 {
34517 case DisplayPlaneAlphaFlagBitsKHR::eOpaque: return "Opaque";
34518 case DisplayPlaneAlphaFlagBitsKHR::eGlobal: return "Global";
34519 case DisplayPlaneAlphaFlagBitsKHR::ePerPixel: return "PerPixel";
34520 case DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied: return "PerPixelPremultiplied";
34521 default: return "invalid";
34522 }
34523 }
34524
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034525 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034526 {
34527 if (!value) return "{}";
34528 std::string result;
34529 if (value & DisplayPlaneAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
34530 if (value & DisplayPlaneAlphaFlagBitsKHR::eGlobal) result += "Global | ";
34531 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixel) result += "PerPixel | ";
34532 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied) result += "PerPixelPremultiplied | ";
34533 return "{" + result.substr(0, result.size() - 3) + "}";
34534 }
34535
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034536 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034537 {
34538 switch (value)
34539 {
34540 case CompositeAlphaFlagBitsKHR::eOpaque: return "Opaque";
34541 case CompositeAlphaFlagBitsKHR::ePreMultiplied: return "PreMultiplied";
34542 case CompositeAlphaFlagBitsKHR::ePostMultiplied: return "PostMultiplied";
34543 case CompositeAlphaFlagBitsKHR::eInherit: return "Inherit";
34544 default: return "invalid";
34545 }
34546 }
34547
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034548 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034549 {
34550 if (!value) return "{}";
34551 std::string result;
34552 if (value & CompositeAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
34553 if (value & CompositeAlphaFlagBitsKHR::ePreMultiplied) result += "PreMultiplied | ";
34554 if (value & CompositeAlphaFlagBitsKHR::ePostMultiplied) result += "PostMultiplied | ";
34555 if (value & CompositeAlphaFlagBitsKHR::eInherit) result += "Inherit | ";
34556 return "{" + result.substr(0, result.size() - 3) + "}";
34557 }
34558
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034559 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034560 {
34561 switch (value)
34562 {
34563 case SurfaceTransformFlagBitsKHR::eIdentity: return "Identity";
34564 case SurfaceTransformFlagBitsKHR::eRotate90: return "Rotate90";
34565 case SurfaceTransformFlagBitsKHR::eRotate180: return "Rotate180";
34566 case SurfaceTransformFlagBitsKHR::eRotate270: return "Rotate270";
34567 case SurfaceTransformFlagBitsKHR::eHorizontalMirror: return "HorizontalMirror";
34568 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90: return "HorizontalMirrorRotate90";
34569 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180: return "HorizontalMirrorRotate180";
34570 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270: return "HorizontalMirrorRotate270";
34571 case SurfaceTransformFlagBitsKHR::eInherit: return "Inherit";
34572 default: return "invalid";
34573 }
34574 }
34575
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034576 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034577 {
34578 if (!value) return "{}";
34579 std::string result;
34580 if (value & SurfaceTransformFlagBitsKHR::eIdentity) result += "Identity | ";
34581 if (value & SurfaceTransformFlagBitsKHR::eRotate90) result += "Rotate90 | ";
34582 if (value & SurfaceTransformFlagBitsKHR::eRotate180) result += "Rotate180 | ";
34583 if (value & SurfaceTransformFlagBitsKHR::eRotate270) result += "Rotate270 | ";
34584 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirror) result += "HorizontalMirror | ";
34585 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90) result += "HorizontalMirrorRotate90 | ";
34586 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180) result += "HorizontalMirrorRotate180 | ";
34587 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270) result += "HorizontalMirrorRotate270 | ";
34588 if (value & SurfaceTransformFlagBitsKHR::eInherit) result += "Inherit | ";
34589 return "{" + result.substr(0, result.size() - 3) + "}";
34590 }
34591
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034592 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagBitsEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034593 {
34594 switch (value)
34595 {
34596 case DebugReportFlagBitsEXT::eInformation: return "Information";
34597 case DebugReportFlagBitsEXT::eWarning: return "Warning";
34598 case DebugReportFlagBitsEXT::ePerformanceWarning: return "PerformanceWarning";
34599 case DebugReportFlagBitsEXT::eError: return "Error";
34600 case DebugReportFlagBitsEXT::eDebug: return "Debug";
34601 default: return "invalid";
34602 }
34603 }
34604
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034605 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagsEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034606 {
34607 if (!value) return "{}";
34608 std::string result;
34609 if (value & DebugReportFlagBitsEXT::eInformation) result += "Information | ";
34610 if (value & DebugReportFlagBitsEXT::eWarning) result += "Warning | ";
34611 if (value & DebugReportFlagBitsEXT::ePerformanceWarning) result += "PerformanceWarning | ";
34612 if (value & DebugReportFlagBitsEXT::eError) result += "Error | ";
34613 if (value & DebugReportFlagBitsEXT::eDebug) result += "Debug | ";
34614 return "{" + result.substr(0, result.size() - 3) + "}";
34615 }
34616
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034617 VULKAN_HPP_INLINE std::string to_string(DebugReportObjectTypeEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034618 {
34619 switch (value)
34620 {
34621 case DebugReportObjectTypeEXT::eUnknown: return "Unknown";
34622 case DebugReportObjectTypeEXT::eInstance: return "Instance";
34623 case DebugReportObjectTypeEXT::ePhysicalDevice: return "PhysicalDevice";
34624 case DebugReportObjectTypeEXT::eDevice: return "Device";
34625 case DebugReportObjectTypeEXT::eQueue: return "Queue";
34626 case DebugReportObjectTypeEXT::eSemaphore: return "Semaphore";
34627 case DebugReportObjectTypeEXT::eCommandBuffer: return "CommandBuffer";
34628 case DebugReportObjectTypeEXT::eFence: return "Fence";
34629 case DebugReportObjectTypeEXT::eDeviceMemory: return "DeviceMemory";
34630 case DebugReportObjectTypeEXT::eBuffer: return "Buffer";
34631 case DebugReportObjectTypeEXT::eImage: return "Image";
34632 case DebugReportObjectTypeEXT::eEvent: return "Event";
34633 case DebugReportObjectTypeEXT::eQueryPool: return "QueryPool";
34634 case DebugReportObjectTypeEXT::eBufferView: return "BufferView";
34635 case DebugReportObjectTypeEXT::eImageView: return "ImageView";
34636 case DebugReportObjectTypeEXT::eShaderModule: return "ShaderModule";
34637 case DebugReportObjectTypeEXT::ePipelineCache: return "PipelineCache";
34638 case DebugReportObjectTypeEXT::ePipelineLayout: return "PipelineLayout";
34639 case DebugReportObjectTypeEXT::eRenderPass: return "RenderPass";
34640 case DebugReportObjectTypeEXT::ePipeline: return "Pipeline";
34641 case DebugReportObjectTypeEXT::eDescriptorSetLayout: return "DescriptorSetLayout";
34642 case DebugReportObjectTypeEXT::eSampler: return "Sampler";
34643 case DebugReportObjectTypeEXT::eDescriptorPool: return "DescriptorPool";
34644 case DebugReportObjectTypeEXT::eDescriptorSet: return "DescriptorSet";
34645 case DebugReportObjectTypeEXT::eFramebuffer: return "Framebuffer";
34646 case DebugReportObjectTypeEXT::eCommandPool: return "CommandPool";
34647 case DebugReportObjectTypeEXT::eSurfaceKhr: return "SurfaceKhr";
34648 case DebugReportObjectTypeEXT::eSwapchainKhr: return "SwapchainKhr";
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060034649 case DebugReportObjectTypeEXT::eDebugReportCallbackExt: return "DebugReportCallbackExt";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034650 case DebugReportObjectTypeEXT::eDisplayKhr: return "DisplayKhr";
34651 case DebugReportObjectTypeEXT::eDisplayModeKhr: return "DisplayModeKhr";
34652 case DebugReportObjectTypeEXT::eObjectTableNvx: return "ObjectTableNvx";
34653 case DebugReportObjectTypeEXT::eIndirectCommandsLayoutNvx: return "IndirectCommandsLayoutNvx";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060034654 case DebugReportObjectTypeEXT::eValidationCache: return "ValidationCache";
Mark Lobodzinski54385432017-05-15 10:27:52 -060034655 case DebugReportObjectTypeEXT::eDescriptorUpdateTemplateKHR: return "DescriptorUpdateTemplateKHR";
Lenny Komowb79f04a2017-09-18 17:07:00 -060034656 case DebugReportObjectTypeEXT::eSamplerYcbcrConversionKHR: return "SamplerYcbcrConversionKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034657 default: return "invalid";
34658 }
34659 }
34660
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034661 VULKAN_HPP_INLINE std::string to_string(RasterizationOrderAMD value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034662 {
34663 switch (value)
34664 {
34665 case RasterizationOrderAMD::eStrict: return "Strict";
34666 case RasterizationOrderAMD::eRelaxed: return "Relaxed";
34667 default: return "invalid";
34668 }
34669 }
34670
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034671 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060034672 {
34673 switch (value)
34674 {
34675 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32: return "OpaqueWin32";
34676 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
34677 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image: return "D3D11Image";
34678 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt: return "D3D11ImageKmt";
34679 default: return "invalid";
34680 }
34681 }
34682
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034683 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060034684 {
34685 if (!value) return "{}";
34686 std::string result;
34687 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) result += "OpaqueWin32 | ";
34688 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
34689 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) result += "D3D11Image | ";
34690 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt) result += "D3D11ImageKmt | ";
34691 return "{" + result.substr(0, result.size() - 3) + "}";
34692 }
34693
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034694 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060034695 {
34696 switch (value)
34697 {
34698 case ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly: return "DedicatedOnly";
34699 case ExternalMemoryFeatureFlagBitsNV::eExportable: return "Exportable";
34700 case ExternalMemoryFeatureFlagBitsNV::eImportable: return "Importable";
34701 default: return "invalid";
34702 }
34703 }
34704
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034705 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060034706 {
34707 if (!value) return "{}";
34708 std::string result;
34709 if (value & ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) result += "DedicatedOnly | ";
34710 if (value & ExternalMemoryFeatureFlagBitsNV::eExportable) result += "Exportable | ";
34711 if (value & ExternalMemoryFeatureFlagBitsNV::eImportable) result += "Importable | ";
34712 return "{" + result.substr(0, result.size() - 3) + "}";
34713 }
34714
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034715 VULKAN_HPP_INLINE std::string to_string(ValidationCheckEXT value)
Lenny Komow68432d72016-09-29 14:16:59 -060034716 {
34717 switch (value)
34718 {
34719 case ValidationCheckEXT::eAll: return "All";
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060034720 case ValidationCheckEXT::eShaders: return "Shaders";
Lenny Komow68432d72016-09-29 14:16:59 -060034721 default: return "invalid";
34722 }
34723 }
34724
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034725 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagBitsNVX value)
34726 {
34727 switch (value)
34728 {
34729 case IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences: return "UnorderedSequences";
34730 case IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences: return "SparseSequences";
34731 case IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions: return "EmptyExecutions";
34732 case IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences: return "IndexedSequences";
34733 default: return "invalid";
34734 }
34735 }
34736
34737 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagsNVX value)
34738 {
34739 if (!value) return "{}";
34740 std::string result;
34741 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) result += "UnorderedSequences | ";
34742 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) result += "SparseSequences | ";
34743 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) result += "EmptyExecutions | ";
34744 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences) result += "IndexedSequences | ";
34745 return "{" + result.substr(0, result.size() - 3) + "}";
34746 }
34747
34748 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagBitsNVX value)
34749 {
34750 switch (value)
34751 {
34752 case ObjectEntryUsageFlagBitsNVX::eGraphics: return "Graphics";
34753 case ObjectEntryUsageFlagBitsNVX::eCompute: return "Compute";
34754 default: return "invalid";
34755 }
34756 }
34757
34758 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagsNVX value)
34759 {
34760 if (!value) return "{}";
34761 std::string result;
34762 if (value & ObjectEntryUsageFlagBitsNVX::eGraphics) result += "Graphics | ";
34763 if (value & ObjectEntryUsageFlagBitsNVX::eCompute) result += "Compute | ";
34764 return "{" + result.substr(0, result.size() - 3) + "}";
34765 }
34766
34767 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsTokenTypeNVX value)
34768 {
34769 switch (value)
34770 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060034771 case IndirectCommandsTokenTypeNVX::ePipeline: return "Pipeline";
34772 case IndirectCommandsTokenTypeNVX::eDescriptorSet: return "DescriptorSet";
34773 case IndirectCommandsTokenTypeNVX::eIndexBuffer: return "IndexBuffer";
34774 case IndirectCommandsTokenTypeNVX::eVertexBuffer: return "VertexBuffer";
34775 case IndirectCommandsTokenTypeNVX::ePushConstant: return "PushConstant";
34776 case IndirectCommandsTokenTypeNVX::eDrawIndexed: return "DrawIndexed";
34777 case IndirectCommandsTokenTypeNVX::eDraw: return "Draw";
34778 case IndirectCommandsTokenTypeNVX::eDispatch: return "Dispatch";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034779 default: return "invalid";
34780 }
34781 }
34782
34783 VULKAN_HPP_INLINE std::string to_string(ObjectEntryTypeNVX value)
34784 {
34785 switch (value)
34786 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060034787 case ObjectEntryTypeNVX::eDescriptorSet: return "DescriptorSet";
34788 case ObjectEntryTypeNVX::ePipeline: return "Pipeline";
34789 case ObjectEntryTypeNVX::eIndexBuffer: return "IndexBuffer";
34790 case ObjectEntryTypeNVX::eVertexBuffer: return "VertexBuffer";
34791 case ObjectEntryTypeNVX::ePushConstant: return "PushConstant";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034792 default: return "invalid";
34793 }
34794 }
34795
Mark Young0f183a82017-02-28 09:58:04 -070034796 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlagBits value)
34797 {
34798 switch (value)
34799 {
34800 case DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR: return "PushDescriptorKHR";
34801 default: return "invalid";
34802 }
34803 }
34804
34805 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlags value)
34806 {
34807 if (!value) return "{}";
34808 std::string result;
34809 if (value & DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR) result += "PushDescriptorKHR | ";
34810 return "{" + result.substr(0, result.size() - 3) + "}";
34811 }
34812
Mark Youngabc2d6e2017-07-07 07:59:56 -060034813 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070034814 {
34815 switch (value)
34816 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060034817 case ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd: return "OpaqueFd";
34818 case ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32: return "OpaqueWin32";
34819 case ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
34820 case ExternalMemoryHandleTypeFlagBitsKHR::eD3D11Texture: return "D3D11Texture";
34821 case ExternalMemoryHandleTypeFlagBitsKHR::eD3D11TextureKmt: return "D3D11TextureKmt";
34822 case ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Heap: return "D3D12Heap";
34823 case ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Resource: return "D3D12Resource";
Mark Young0f183a82017-02-28 09:58:04 -070034824 default: return "invalid";
34825 }
34826 }
34827
Mark Youngabc2d6e2017-07-07 07:59:56 -060034828 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070034829 {
34830 if (!value) return "{}";
34831 std::string result;
Mark Youngabc2d6e2017-07-07 07:59:56 -060034832 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd) result += "OpaqueFd | ";
34833 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32) result += "OpaqueWin32 | ";
34834 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
34835 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eD3D11Texture) result += "D3D11Texture | ";
34836 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eD3D11TextureKmt) result += "D3D11TextureKmt | ";
34837 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Heap) result += "D3D12Heap | ";
34838 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Resource) result += "D3D12Resource | ";
Mark Young0f183a82017-02-28 09:58:04 -070034839 return "{" + result.substr(0, result.size() - 3) + "}";
34840 }
34841
Mark Youngabc2d6e2017-07-07 07:59:56 -060034842 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070034843 {
34844 switch (value)
34845 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060034846 case ExternalMemoryFeatureFlagBitsKHR::eDedicatedOnly: return "DedicatedOnly";
34847 case ExternalMemoryFeatureFlagBitsKHR::eExportable: return "Exportable";
34848 case ExternalMemoryFeatureFlagBitsKHR::eImportable: return "Importable";
Mark Young0f183a82017-02-28 09:58:04 -070034849 default: return "invalid";
34850 }
34851 }
34852
Mark Youngabc2d6e2017-07-07 07:59:56 -060034853 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070034854 {
34855 if (!value) return "{}";
34856 std::string result;
Mark Youngabc2d6e2017-07-07 07:59:56 -060034857 if (value & ExternalMemoryFeatureFlagBitsKHR::eDedicatedOnly) result += "DedicatedOnly | ";
34858 if (value & ExternalMemoryFeatureFlagBitsKHR::eExportable) result += "Exportable | ";
34859 if (value & ExternalMemoryFeatureFlagBitsKHR::eImportable) result += "Importable | ";
Mark Young0f183a82017-02-28 09:58:04 -070034860 return "{" + result.substr(0, result.size() - 3) + "}";
34861 }
34862
Mark Youngabc2d6e2017-07-07 07:59:56 -060034863 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagBitsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070034864 {
34865 switch (value)
34866 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060034867 case ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd: return "OpaqueFd";
34868 case ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32: return "OpaqueWin32";
34869 case ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
34870 case ExternalSemaphoreHandleTypeFlagBitsKHR::eD3D12Fence: return "D3D12Fence";
34871 case ExternalSemaphoreHandleTypeFlagBitsKHR::eSyncFd: return "SyncFd";
Mark Young0f183a82017-02-28 09:58:04 -070034872 default: return "invalid";
34873 }
34874 }
34875
Mark Youngabc2d6e2017-07-07 07:59:56 -060034876 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070034877 {
34878 if (!value) return "{}";
34879 std::string result;
Mark Youngabc2d6e2017-07-07 07:59:56 -060034880 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd) result += "OpaqueFd | ";
34881 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32) result += "OpaqueWin32 | ";
34882 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
34883 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eD3D12Fence) result += "D3D12Fence | ";
34884 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eSyncFd) result += "SyncFd | ";
Mark Young0f183a82017-02-28 09:58:04 -070034885 return "{" + result.substr(0, result.size() - 3) + "}";
34886 }
34887
Mark Youngabc2d6e2017-07-07 07:59:56 -060034888 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagBitsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070034889 {
34890 switch (value)
34891 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060034892 case ExternalSemaphoreFeatureFlagBitsKHR::eExportable: return "Exportable";
34893 case ExternalSemaphoreFeatureFlagBitsKHR::eImportable: return "Importable";
Mark Young0f183a82017-02-28 09:58:04 -070034894 default: return "invalid";
34895 }
34896 }
34897
Mark Youngabc2d6e2017-07-07 07:59:56 -060034898 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070034899 {
34900 if (!value) return "{}";
34901 std::string result;
Mark Youngabc2d6e2017-07-07 07:59:56 -060034902 if (value & ExternalSemaphoreFeatureFlagBitsKHR::eExportable) result += "Exportable | ";
34903 if (value & ExternalSemaphoreFeatureFlagBitsKHR::eImportable) result += "Importable | ";
34904 return "{" + result.substr(0, result.size() - 3) + "}";
34905 }
34906
34907 VULKAN_HPP_INLINE std::string to_string(SemaphoreImportFlagBitsKHR value)
34908 {
34909 switch (value)
34910 {
34911 case SemaphoreImportFlagBitsKHR::eTemporary: return "Temporary";
34912 default: return "invalid";
34913 }
34914 }
34915
34916 VULKAN_HPP_INLINE std::string to_string(SemaphoreImportFlagsKHR value)
34917 {
34918 if (!value) return "{}";
34919 std::string result;
34920 if (value & SemaphoreImportFlagBitsKHR::eTemporary) result += "Temporary | ";
34921 return "{" + result.substr(0, result.size() - 3) + "}";
34922 }
34923
34924 VULKAN_HPP_INLINE std::string to_string(ExternalFenceHandleTypeFlagBitsKHR value)
34925 {
34926 switch (value)
34927 {
34928 case ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd: return "OpaqueFd";
34929 case ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32: return "OpaqueWin32";
34930 case ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
34931 case ExternalFenceHandleTypeFlagBitsKHR::eSyncFd: return "SyncFd";
34932 default: return "invalid";
34933 }
34934 }
34935
34936 VULKAN_HPP_INLINE std::string to_string(ExternalFenceHandleTypeFlagsKHR value)
34937 {
34938 if (!value) return "{}";
34939 std::string result;
34940 if (value & ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd) result += "OpaqueFd | ";
34941 if (value & ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32) result += "OpaqueWin32 | ";
34942 if (value & ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
34943 if (value & ExternalFenceHandleTypeFlagBitsKHR::eSyncFd) result += "SyncFd | ";
34944 return "{" + result.substr(0, result.size() - 3) + "}";
34945 }
34946
34947 VULKAN_HPP_INLINE std::string to_string(ExternalFenceFeatureFlagBitsKHR value)
34948 {
34949 switch (value)
34950 {
34951 case ExternalFenceFeatureFlagBitsKHR::eExportable: return "Exportable";
34952 case ExternalFenceFeatureFlagBitsKHR::eImportable: return "Importable";
34953 default: return "invalid";
34954 }
34955 }
34956
34957 VULKAN_HPP_INLINE std::string to_string(ExternalFenceFeatureFlagsKHR value)
34958 {
34959 if (!value) return "{}";
34960 std::string result;
34961 if (value & ExternalFenceFeatureFlagBitsKHR::eExportable) result += "Exportable | ";
34962 if (value & ExternalFenceFeatureFlagBitsKHR::eImportable) result += "Importable | ";
34963 return "{" + result.substr(0, result.size() - 3) + "}";
34964 }
34965
34966 VULKAN_HPP_INLINE std::string to_string(FenceImportFlagBitsKHR value)
34967 {
34968 switch (value)
34969 {
34970 case FenceImportFlagBitsKHR::eTemporary: return "Temporary";
34971 default: return "invalid";
34972 }
34973 }
34974
34975 VULKAN_HPP_INLINE std::string to_string(FenceImportFlagsKHR value)
34976 {
34977 if (!value) return "{}";
34978 std::string result;
34979 if (value & FenceImportFlagBitsKHR::eTemporary) result += "Temporary | ";
Mark Young0f183a82017-02-28 09:58:04 -070034980 return "{" + result.substr(0, result.size() - 3) + "}";
34981 }
34982
Mark Young39389872017-01-19 21:10:49 -070034983 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagBitsEXT value)
34984 {
34985 switch (value)
34986 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060034987 case SurfaceCounterFlagBitsEXT::eVblank: return "Vblank";
Mark Young39389872017-01-19 21:10:49 -070034988 default: return "invalid";
34989 }
34990 }
34991
34992 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagsEXT value)
34993 {
34994 if (!value) return "{}";
34995 std::string result;
Mark Lobodzinski54385432017-05-15 10:27:52 -060034996 if (value & SurfaceCounterFlagBitsEXT::eVblank) result += "Vblank | ";
Mark Young39389872017-01-19 21:10:49 -070034997 return "{" + result.substr(0, result.size() - 3) + "}";
34998 }
34999
35000 VULKAN_HPP_INLINE std::string to_string(DisplayPowerStateEXT value)
35001 {
35002 switch (value)
35003 {
35004 case DisplayPowerStateEXT::eOff: return "Off";
35005 case DisplayPowerStateEXT::eSuspend: return "Suspend";
35006 case DisplayPowerStateEXT::eOn: return "On";
35007 default: return "invalid";
35008 }
35009 }
35010
35011 VULKAN_HPP_INLINE std::string to_string(DeviceEventTypeEXT value)
35012 {
35013 switch (value)
35014 {
35015 case DeviceEventTypeEXT::eDisplayHotplug: return "DisplayHotplug";
35016 default: return "invalid";
35017 }
35018 }
35019
35020 VULKAN_HPP_INLINE std::string to_string(DisplayEventTypeEXT value)
35021 {
35022 switch (value)
35023 {
35024 case DisplayEventTypeEXT::eFirstPixelOut: return "FirstPixelOut";
35025 default: return "invalid";
35026 }
35027 }
35028
Mark Young0f183a82017-02-28 09:58:04 -070035029 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagBitsKHX value)
35030 {
35031 switch (value)
35032 {
35033 case PeerMemoryFeatureFlagBitsKHX::eCopySrc: return "CopySrc";
35034 case PeerMemoryFeatureFlagBitsKHX::eCopyDst: return "CopyDst";
35035 case PeerMemoryFeatureFlagBitsKHX::eGenericSrc: return "GenericSrc";
35036 case PeerMemoryFeatureFlagBitsKHX::eGenericDst: return "GenericDst";
35037 default: return "invalid";
35038 }
35039 }
35040
35041 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagsKHX value)
35042 {
35043 if (!value) return "{}";
35044 std::string result;
35045 if (value & PeerMemoryFeatureFlagBitsKHX::eCopySrc) result += "CopySrc | ";
35046 if (value & PeerMemoryFeatureFlagBitsKHX::eCopyDst) result += "CopyDst | ";
35047 if (value & PeerMemoryFeatureFlagBitsKHX::eGenericSrc) result += "GenericSrc | ";
35048 if (value & PeerMemoryFeatureFlagBitsKHX::eGenericDst) result += "GenericDst | ";
35049 return "{" + result.substr(0, result.size() - 3) + "}";
35050 }
35051
35052 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagBitsKHX value)
35053 {
35054 switch (value)
35055 {
35056 case MemoryAllocateFlagBitsKHX::eDeviceMask: return "DeviceMask";
35057 default: return "invalid";
35058 }
35059 }
35060
35061 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagsKHX value)
35062 {
35063 if (!value) return "{}";
35064 std::string result;
35065 if (value & MemoryAllocateFlagBitsKHX::eDeviceMask) result += "DeviceMask | ";
35066 return "{" + result.substr(0, result.size() - 3) + "}";
35067 }
35068
35069 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagBitsKHX value)
35070 {
35071 switch (value)
35072 {
35073 case DeviceGroupPresentModeFlagBitsKHX::eLocal: return "Local";
35074 case DeviceGroupPresentModeFlagBitsKHX::eRemote: return "Remote";
35075 case DeviceGroupPresentModeFlagBitsKHX::eSum: return "Sum";
35076 case DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice: return "LocalMultiDevice";
35077 default: return "invalid";
35078 }
35079 }
35080
35081 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagsKHX value)
35082 {
35083 if (!value) return "{}";
35084 std::string result;
35085 if (value & DeviceGroupPresentModeFlagBitsKHX::eLocal) result += "Local | ";
35086 if (value & DeviceGroupPresentModeFlagBitsKHX::eRemote) result += "Remote | ";
35087 if (value & DeviceGroupPresentModeFlagBitsKHX::eSum) result += "Sum | ";
35088 if (value & DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice) result += "LocalMultiDevice | ";
35089 return "{" + result.substr(0, result.size() - 3) + "}";
35090 }
35091
35092 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagBitsKHR value)
35093 {
35094 switch (value)
35095 {
35096 case SwapchainCreateFlagBitsKHR::eBindSfrKHX: return "BindSfrKHX";
35097 default: return "invalid";
35098 }
35099 }
35100
35101 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagsKHR value)
35102 {
35103 if (!value) return "{}";
35104 std::string result;
35105 if (value & SwapchainCreateFlagBitsKHR::eBindSfrKHX) result += "BindSfrKHX | ";
35106 return "{" + result.substr(0, result.size() - 3) + "}";
35107 }
35108
35109 VULKAN_HPP_INLINE std::string to_string(ViewportCoordinateSwizzleNV value)
35110 {
35111 switch (value)
35112 {
35113 case ViewportCoordinateSwizzleNV::ePositiveX: return "PositiveX";
35114 case ViewportCoordinateSwizzleNV::eNegativeX: return "NegativeX";
35115 case ViewportCoordinateSwizzleNV::ePositiveY: return "PositiveY";
35116 case ViewportCoordinateSwizzleNV::eNegativeY: return "NegativeY";
35117 case ViewportCoordinateSwizzleNV::ePositiveZ: return "PositiveZ";
35118 case ViewportCoordinateSwizzleNV::eNegativeZ: return "NegativeZ";
35119 case ViewportCoordinateSwizzleNV::ePositiveW: return "PositiveW";
35120 case ViewportCoordinateSwizzleNV::eNegativeW: return "NegativeW";
35121 default: return "invalid";
35122 }
35123 }
35124
35125 VULKAN_HPP_INLINE std::string to_string(DiscardRectangleModeEXT value)
35126 {
35127 switch (value)
35128 {
35129 case DiscardRectangleModeEXT::eInclusive: return "Inclusive";
35130 case DiscardRectangleModeEXT::eExclusive: return "Exclusive";
35131 default: return "invalid";
35132 }
35133 }
35134
35135 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlagBits value)
35136 {
35137 switch (value)
35138 {
35139 case SubpassDescriptionFlagBits::ePerViewAttributesNVX: return "PerViewAttributesNVX";
35140 case SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX: return "PerViewPositionXOnlyNVX";
35141 default: return "invalid";
35142 }
35143 }
35144
35145 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlags value)
35146 {
35147 if (!value) return "{}";
35148 std::string result;
35149 if (value & SubpassDescriptionFlagBits::ePerViewAttributesNVX) result += "PerViewAttributesNVX | ";
35150 if (value & SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX) result += "PerViewPositionXOnlyNVX | ";
35151 return "{" + result.substr(0, result.size() - 3) + "}";
35152 }
35153
Lenny Komowb79f04a2017-09-18 17:07:00 -060035154 VULKAN_HPP_INLINE std::string to_string(PointClippingBehaviorKHR value)
35155 {
35156 switch (value)
35157 {
35158 case PointClippingBehaviorKHR::eAllClipPlanes: return "AllClipPlanes";
35159 case PointClippingBehaviorKHR::eUserClipPlanesOnly: return "UserClipPlanesOnly";
35160 default: return "invalid";
35161 }
35162 }
35163
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060035164 VULKAN_HPP_INLINE std::string to_string(SamplerReductionModeEXT value)
35165 {
35166 switch (value)
35167 {
35168 case SamplerReductionModeEXT::eWeightedAverage: return "WeightedAverage";
35169 case SamplerReductionModeEXT::eMin: return "Min";
35170 case SamplerReductionModeEXT::eMax: return "Max";
35171 default: return "invalid";
35172 }
35173 }
35174
Lenny Komowb79f04a2017-09-18 17:07:00 -060035175 VULKAN_HPP_INLINE std::string to_string(TessellationDomainOriginKHR value)
35176 {
35177 switch (value)
35178 {
35179 case TessellationDomainOriginKHR::eUpperLeft: return "UpperLeft";
35180 case TessellationDomainOriginKHR::eLowerLeft: return "LowerLeft";
35181 default: return "invalid";
35182 }
35183 }
35184
35185 VULKAN_HPP_INLINE std::string to_string(SamplerYcbcrModelConversionKHR value)
35186 {
35187 switch (value)
35188 {
35189 case SamplerYcbcrModelConversionKHR::eRgbIdentity: return "RgbIdentity";
35190 case SamplerYcbcrModelConversionKHR::eYcbcrIdentity: return "YcbcrIdentity";
35191 case SamplerYcbcrModelConversionKHR::eYcbcr709: return "Ycbcr709";
35192 case SamplerYcbcrModelConversionKHR::eYcbcr601: return "Ycbcr601";
35193 case SamplerYcbcrModelConversionKHR::eYcbcr2020: return "Ycbcr2020";
35194 default: return "invalid";
35195 }
35196 }
35197
35198 VULKAN_HPP_INLINE std::string to_string(SamplerYcbcrRangeKHR value)
35199 {
35200 switch (value)
35201 {
35202 case SamplerYcbcrRangeKHR::eItuFull: return "ItuFull";
35203 case SamplerYcbcrRangeKHR::eItuNarrow: return "ItuNarrow";
35204 default: return "invalid";
35205 }
35206 }
35207
35208 VULKAN_HPP_INLINE std::string to_string(ChromaLocationKHR value)
35209 {
35210 switch (value)
35211 {
35212 case ChromaLocationKHR::eCositedEven: return "CositedEven";
35213 case ChromaLocationKHR::eMidpoint: return "Midpoint";
35214 default: return "invalid";
35215 }
35216 }
35217
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060035218 VULKAN_HPP_INLINE std::string to_string(BlendOverlapEXT value)
35219 {
35220 switch (value)
35221 {
35222 case BlendOverlapEXT::eUncorrelated: return "Uncorrelated";
35223 case BlendOverlapEXT::eDisjoint: return "Disjoint";
35224 case BlendOverlapEXT::eConjoint: return "Conjoint";
35225 default: return "invalid";
35226 }
35227 }
35228
35229 VULKAN_HPP_INLINE std::string to_string(CoverageModulationModeNV value)
35230 {
35231 switch (value)
35232 {
35233 case CoverageModulationModeNV::eNone: return "None";
35234 case CoverageModulationModeNV::eRgb: return "Rgb";
35235 case CoverageModulationModeNV::eAlpha: return "Alpha";
35236 case CoverageModulationModeNV::eRgba: return "Rgba";
35237 default: return "invalid";
35238 }
35239 }
35240
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060035241 VULKAN_HPP_INLINE std::string to_string(ValidationCacheHeaderVersionEXT value)
35242 {
35243 switch (value)
35244 {
35245 case ValidationCacheHeaderVersionEXT::eOne: return "One";
35246 default: return "invalid";
35247 }
35248 }
35249
Mark Lobodzinski2ffbeb82017-10-23 09:23:06 -060035250 VULKAN_HPP_INLINE std::string to_string(ShaderInfoTypeAMD value)
35251 {
35252 switch (value)
35253 {
35254 case ShaderInfoTypeAMD::eStatistics: return "Statistics";
35255 case ShaderInfoTypeAMD::eBinary: return "Binary";
35256 case ShaderInfoTypeAMD::eDisassembly: return "Disassembly";
35257 default: return "invalid";
35258 }
35259 }
35260
35261 VULKAN_HPP_INLINE std::string to_string(QueueGlobalPriorityEXT value)
35262 {
35263 switch (value)
35264 {
35265 case QueueGlobalPriorityEXT::eLow: return "Low";
35266 case QueueGlobalPriorityEXT::eMedium: return "Medium";
35267 case QueueGlobalPriorityEXT::eHigh: return "High";
35268 case QueueGlobalPriorityEXT::eRealtime: return "Realtime";
35269 default: return "invalid";
35270 }
35271 }
35272
Mark Lobodzinskie3f891d2017-10-09 13:06:50 -060035273} // namespace VULKAN_HPP_NAMESPACE
Lenny Komowbed9b5c2016-08-11 11:23:15 -060035274
35275#endif