blob: 37a9680bceaf10d4c9cc75d19bee9e6e9c2c16d9 [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*/
Lenny Komowb79f04a2017-09-18 17:07:00 -060036static_assert( VK_HEADER_VERSION == 61 , "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
Lenny Komowbed9b5c2016-08-11 11:23:15 -060085namespace vk
86{
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060087
Mark Lobodzinski2d589822016-12-12 09:44:34 -070088 template <typename FlagBitsType> struct FlagTraits
89 {
90 enum { allFlags = 0 };
91 };
92
Lenny Komowbed9b5c2016-08-11 11:23:15 -060093 template <typename BitType, typename MaskType = VkFlags>
94 class Flags
95 {
96 public:
97 Flags()
98 : m_mask(0)
99 {
100 }
101
102 Flags(BitType bit)
103 : m_mask(static_cast<MaskType>(bit))
104 {
105 }
106
107 Flags(Flags<BitType> const& rhs)
108 : m_mask(rhs.m_mask)
109 {
110 }
111
112 Flags<BitType> & operator=(Flags<BitType> const& rhs)
113 {
114 m_mask = rhs.m_mask;
115 return *this;
116 }
117
118 Flags<BitType> & operator|=(Flags<BitType> const& rhs)
119 {
120 m_mask |= rhs.m_mask;
121 return *this;
122 }
123
124 Flags<BitType> & operator&=(Flags<BitType> const& rhs)
125 {
126 m_mask &= rhs.m_mask;
127 return *this;
128 }
129
130 Flags<BitType> & operator^=(Flags<BitType> const& rhs)
131 {
132 m_mask ^= rhs.m_mask;
133 return *this;
134 }
135
136 Flags<BitType> operator|(Flags<BitType> const& rhs) const
137 {
138 Flags<BitType> result(*this);
139 result |= rhs;
140 return result;
141 }
142
143 Flags<BitType> operator&(Flags<BitType> const& rhs) const
144 {
145 Flags<BitType> result(*this);
146 result &= rhs;
147 return result;
148 }
149
150 Flags<BitType> operator^(Flags<BitType> const& rhs) const
151 {
152 Flags<BitType> result(*this);
153 result ^= rhs;
154 return result;
155 }
156
157 bool operator!() const
158 {
159 return !m_mask;
160 }
161
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700162 Flags<BitType> operator~() const
163 {
164 Flags<BitType> result(*this);
165 result.m_mask ^= FlagTraits<BitType>::allFlags;
166 return result;
167 }
168
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600169 bool operator==(Flags<BitType> const& rhs) const
170 {
171 return m_mask == rhs.m_mask;
172 }
173
174 bool operator!=(Flags<BitType> const& rhs) const
175 {
176 return m_mask != rhs.m_mask;
177 }
178
179 explicit operator bool() const
180 {
181 return !!m_mask;
182 }
183
184 explicit operator MaskType() const
185 {
186 return m_mask;
187 }
188
189 private:
190 MaskType m_mask;
191 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600192
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600193 template <typename BitType>
194 Flags<BitType> operator|(BitType bit, Flags<BitType> const& flags)
195 {
196 return flags | bit;
197 }
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600198
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600199 template <typename BitType>
200 Flags<BitType> operator&(BitType bit, Flags<BitType> const& flags)
201 {
202 return flags & bit;
203 }
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600204
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600205 template <typename BitType>
206 Flags<BitType> operator^(BitType bit, Flags<BitType> const& flags)
207 {
208 return flags ^ bit;
209 }
210
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700211
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600212 template <typename RefType>
213 class Optional
214 {
215 public:
216 Optional(RefType & reference) { m_ptr = &reference; }
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700217 Optional(RefType * ptr) { m_ptr = ptr; }
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600218 Optional(std::nullptr_t) { m_ptr = nullptr; }
219
220 operator RefType*() const { return m_ptr; }
221 RefType const* operator->() const { return m_ptr; }
222 explicit operator bool() const { return !!m_ptr; }
223
224 private:
225 RefType *m_ptr;
226 };
227
228#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
229 template <typename T>
230 class ArrayProxy
231 {
232 public:
233 ArrayProxy(std::nullptr_t)
234 : m_count(0)
235 , m_ptr(nullptr)
236 {}
237
238 ArrayProxy(T & ptr)
239 : m_count(1)
240 , m_ptr(&ptr)
241 {}
242
243 ArrayProxy(uint32_t count, T * ptr)
244 : m_count(count)
245 , m_ptr(ptr)
246 {}
247
248 template <size_t N>
249 ArrayProxy(std::array<typename std::remove_const<T>::type, N> & data)
250 : m_count(N)
251 , m_ptr(data.data())
252 {}
253
254 template <size_t N>
255 ArrayProxy(std::array<typename std::remove_const<T>::type, N> const& data)
256 : m_count(N)
257 , m_ptr(data.data())
258 {}
259
260 template <class Allocator = std::allocator<typename std::remove_const<T>::type>>
261 ArrayProxy(std::vector<typename std::remove_const<T>::type, Allocator> & data)
262 : m_count(static_cast<uint32_t>(data.size()))
263 , m_ptr(data.data())
264 {}
265
266 template <class Allocator = std::allocator<typename std::remove_const<T>::type>>
267 ArrayProxy(std::vector<typename std::remove_const<T>::type, Allocator> const& data)
268 : m_count(static_cast<uint32_t>(data.size()))
269 , m_ptr(data.data())
270 {}
271
272 ArrayProxy(std::initializer_list<T> const& data)
273 : m_count(static_cast<uint32_t>(data.end() - data.begin()))
274 , m_ptr(data.begin())
275 {}
276
277 const T * begin() const
278 {
279 return m_ptr;
280 }
281
282 const T * end() const
283 {
284 return m_ptr + m_count;
285 }
286
287 const T & front() const
288 {
289 assert(m_count && m_ptr);
290 return *m_ptr;
291 }
292
293 const T & back() const
294 {
295 assert(m_count && m_ptr);
296 return *(m_ptr + m_count - 1);
297 }
298
299 bool empty() const
300 {
301 return (m_count == 0);
302 }
303
304 uint32_t size() const
305 {
306 return m_count;
307 }
308
309 T * data() const
310 {
311 return m_ptr;
312 }
313
314 private:
315 uint32_t m_count;
316 T * m_ptr;
317 };
318#endif
319
Mark Lobodzinski36c33862017-02-13 10:15:53 -0700320#if defined(VULKAN_HPP_NO_EXCEPTIONS) && !defined(VULKAN_HPP_NO_SMART_HANDLE)
321# define VULKAN_HPP_NO_SMART_HANDLE
322#endif
323
324#ifndef VULKAN_HPP_NO_SMART_HANDLE
325 template <typename Type, typename Deleter>
326 class UniqueHandle
327 {
328 public:
329 explicit UniqueHandle( Type const& value = Type(), Deleter const& deleter = Deleter() )
330 : m_value( value )
331 , m_deleter( deleter )
332 {}
333
334 UniqueHandle( UniqueHandle const& ) = delete;
335
336 UniqueHandle( UniqueHandle && other )
337 : m_value( other.release() )
338 , m_deleter( std::move( other.m_deleter ) )
339 {}
340
341 ~UniqueHandle()
342 {
343 destroy();
344 }
345
346 UniqueHandle & operator=( UniqueHandle const& ) = delete;
347
348 UniqueHandle & operator=( UniqueHandle && other )
349 {
350 reset( other.release() );
351 m_deleter = std::move( other.m_deleter );
352 return *this;
353 }
354
355 explicit operator bool() const
356 {
357 return m_value.operator bool();
358 }
359
360 Type const* operator->() const
361 {
362 return &m_value;
363 }
364
365 Type const& operator*() const
366 {
367 return m_value;
368 }
369
370 Type get() const
371 {
372 return m_value;
373 }
374
375 Deleter & getDeleter()
376 {
377 return m_deleter;
378 }
379
380 Deleter const& getDeleter() const
381 {
382 return m_deleter;
383 }
384
385 void reset( Type const& value = Type() )
386 {
387 if ( m_value != value )
388 {
389 destroy();
390 m_value = value;
391 }
392 }
393
394 Type release()
395 {
396 Type value = m_value;
397 m_value = nullptr;
398 return value;
399 }
400
401 void swap( UniqueHandle<Type, Deleter> & rhs )
402 {
403 std::swap(m_value, rhs.m_value);
404 std::swap(m_deleter, rhs.m_deleter);
405 }
406
407 private:
408 void destroy()
409 {
410 if ( m_value )
411 {
412 m_deleter( m_value );
413 }
414 }
415
416 private:
417 Type m_value;
418 Deleter m_deleter;
419 };
420
421 template <typename Type, typename Deleter>
422 VULKAN_HPP_INLINE void swap( UniqueHandle<Type,Deleter> & lhs, UniqueHandle<Type,Deleter> & rhs )
423 {
424 lhs.swap( rhs );
425 }
426#endif
427
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -0600428
429 template <typename X, typename Y> bool isStructureChainValid() { return false; }
430
431 template <class Element>
432 class StructureChainElement
433 {
434 public:
435 explicit operator Element&() { return value; }
436 explicit operator const Element&() const { return value; }
437 private:
438 Element value;
439 };
440
441 template<typename ...StructureElements>
442 class StructureChain : private StructureChainElement<StructureElements>...
443 {
444 public:
445 StructureChain()
446 {
447 link<StructureElements...>();
448 }
449
450 StructureChain(StructureChain const &rhs)
451 {
452 linkAndCopy<StructureElements...>(rhs);
453 }
454
455 StructureChain& operator=(StructureChain const &rhs)
456 {
457 linkAndCopy(rhs);
458 return this;
459 }
460
461 template<typename ClassType> ClassType& get() { return static_cast<ClassType&>(*this);}
462
463 private:
464 template<typename X>
465 void link()
466 {
467 }
468
469 template<typename X, typename Y, typename ...Z>
470 void link()
471 {
472 static_assert(isStructureChainValid<X,Y>(), "The structure chain is not valid!");
473 X& x = static_cast<X&>(*this);
474 Y& y = static_cast<Y&>(*this);
475 x.pNext = &y;
476 link<Y, Z...>();
477 }
478
479 template<typename X>
480 void linkAndCopy(StructureChain const &rhs)
481 {
482 static_cast<X&>(*this) = static_cast<X const &>(rhs);
483 }
484
485 template<typename X, typename Y, typename ...Z>
486 void linkAndCopy(StructureChain const &rhs)
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 = static_cast<X const &>(rhs);
492 x.pNext = &y;
493 linkAndCopy<Y, Z...>(rhs);
494 }
495
496};
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600497 enum class Result
498 {
499 eSuccess = VK_SUCCESS,
500 eNotReady = VK_NOT_READY,
501 eTimeout = VK_TIMEOUT,
502 eEventSet = VK_EVENT_SET,
503 eEventReset = VK_EVENT_RESET,
504 eIncomplete = VK_INCOMPLETE,
505 eErrorOutOfHostMemory = VK_ERROR_OUT_OF_HOST_MEMORY,
506 eErrorOutOfDeviceMemory = VK_ERROR_OUT_OF_DEVICE_MEMORY,
507 eErrorInitializationFailed = VK_ERROR_INITIALIZATION_FAILED,
508 eErrorDeviceLost = VK_ERROR_DEVICE_LOST,
509 eErrorMemoryMapFailed = VK_ERROR_MEMORY_MAP_FAILED,
510 eErrorLayerNotPresent = VK_ERROR_LAYER_NOT_PRESENT,
511 eErrorExtensionNotPresent = VK_ERROR_EXTENSION_NOT_PRESENT,
512 eErrorFeatureNotPresent = VK_ERROR_FEATURE_NOT_PRESENT,
513 eErrorIncompatibleDriver = VK_ERROR_INCOMPATIBLE_DRIVER,
514 eErrorTooManyObjects = VK_ERROR_TOO_MANY_OBJECTS,
515 eErrorFormatNotSupported = VK_ERROR_FORMAT_NOT_SUPPORTED,
Lenny Komowebf33162016-08-26 14:10:08 -0600516 eErrorFragmentedPool = VK_ERROR_FRAGMENTED_POOL,
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600517 eErrorSurfaceLostKHR = VK_ERROR_SURFACE_LOST_KHR,
518 eErrorNativeWindowInUseKHR = VK_ERROR_NATIVE_WINDOW_IN_USE_KHR,
519 eSuboptimalKHR = VK_SUBOPTIMAL_KHR,
520 eErrorOutOfDateKHR = VK_ERROR_OUT_OF_DATE_KHR,
521 eErrorIncompatibleDisplayKHR = VK_ERROR_INCOMPATIBLE_DISPLAY_KHR,
522 eErrorValidationFailedEXT = VK_ERROR_VALIDATION_FAILED_EXT,
Mark Young39389872017-01-19 21:10:49 -0700523 eErrorInvalidShaderNV = VK_ERROR_INVALID_SHADER_NV,
Mark Young0f183a82017-02-28 09:58:04 -0700524 eErrorOutOfPoolMemoryKHR = VK_ERROR_OUT_OF_POOL_MEMORY_KHR,
Mark Youngabc2d6e2017-07-07 07:59:56 -0600525 eErrorInvalidExternalHandleKHR = VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600526 };
527
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700528 VULKAN_HPP_INLINE std::string to_string(Result value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600529 {
530 switch (value)
531 {
532 case Result::eSuccess: return "Success";
533 case Result::eNotReady: return "NotReady";
534 case Result::eTimeout: return "Timeout";
535 case Result::eEventSet: return "EventSet";
536 case Result::eEventReset: return "EventReset";
537 case Result::eIncomplete: return "Incomplete";
538 case Result::eErrorOutOfHostMemory: return "ErrorOutOfHostMemory";
539 case Result::eErrorOutOfDeviceMemory: return "ErrorOutOfDeviceMemory";
540 case Result::eErrorInitializationFailed: return "ErrorInitializationFailed";
541 case Result::eErrorDeviceLost: return "ErrorDeviceLost";
542 case Result::eErrorMemoryMapFailed: return "ErrorMemoryMapFailed";
543 case Result::eErrorLayerNotPresent: return "ErrorLayerNotPresent";
544 case Result::eErrorExtensionNotPresent: return "ErrorExtensionNotPresent";
545 case Result::eErrorFeatureNotPresent: return "ErrorFeatureNotPresent";
546 case Result::eErrorIncompatibleDriver: return "ErrorIncompatibleDriver";
547 case Result::eErrorTooManyObjects: return "ErrorTooManyObjects";
548 case Result::eErrorFormatNotSupported: return "ErrorFormatNotSupported";
Lenny Komowebf33162016-08-26 14:10:08 -0600549 case Result::eErrorFragmentedPool: return "ErrorFragmentedPool";
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600550 case Result::eErrorSurfaceLostKHR: return "ErrorSurfaceLostKHR";
551 case Result::eErrorNativeWindowInUseKHR: return "ErrorNativeWindowInUseKHR";
552 case Result::eSuboptimalKHR: return "SuboptimalKHR";
553 case Result::eErrorOutOfDateKHR: return "ErrorOutOfDateKHR";
554 case Result::eErrorIncompatibleDisplayKHR: return "ErrorIncompatibleDisplayKHR";
555 case Result::eErrorValidationFailedEXT: return "ErrorValidationFailedEXT";
556 case Result::eErrorInvalidShaderNV: return "ErrorInvalidShaderNV";
Mark Young39389872017-01-19 21:10:49 -0700557 case Result::eErrorOutOfPoolMemoryKHR: return "ErrorOutOfPoolMemoryKHR";
Mark Youngabc2d6e2017-07-07 07:59:56 -0600558 case Result::eErrorInvalidExternalHandleKHR: return "ErrorInvalidExternalHandleKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600559 default: return "invalid";
560 }
561 }
562
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -0600563#ifndef VULKAN_HPP_NO_EXCEPTIONS
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600564#if defined(_MSC_VER) && (_MSC_VER == 1800)
565# define noexcept _NOEXCEPT
566#endif
567
568 class ErrorCategoryImpl : public std::error_category
569 {
570 public:
571 virtual const char* name() const noexcept override { return "vk::Result"; }
572 virtual std::string message(int ev) const override { return to_string(static_cast<Result>(ev)); }
573 };
574
575#if defined(_MSC_VER) && (_MSC_VER == 1800)
576# undef noexcept
577#endif
578
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700579 VULKAN_HPP_INLINE const std::error_category& errorCategory()
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600580 {
581 static ErrorCategoryImpl instance;
582 return instance;
583 }
584
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700585 VULKAN_HPP_INLINE std::error_code make_error_code(Result e)
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600586 {
587 return std::error_code(static_cast<int>(e), errorCategory());
588 }
589
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700590 VULKAN_HPP_INLINE std::error_condition make_error_condition(Result e)
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600591 {
592 return std::error_condition(static_cast<int>(e), errorCategory());
593 }
594
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600595#if defined(_MSC_VER) && (_MSC_VER == 1800)
596# define noexcept _NOEXCEPT
597#endif
598
599 class Error
600 {
601 public:
602 virtual ~Error() = default;
603
604 virtual const char* what() const noexcept = 0;
605 };
606
607 class LogicError : public Error, public std::logic_error
608 {
609 public:
610 explicit LogicError( const std::string& what )
611 : Error(), std::logic_error(what) {}
612 explicit LogicError( char const * what )
613 : Error(), std::logic_error(what) {}
614 virtual ~LogicError() = default;
615
616 virtual const char* what() const noexcept { return std::logic_error::what(); }
617 };
618
619 class SystemError : public Error, public std::system_error
620 {
621 public:
622 SystemError( std::error_code ec )
623 : Error(), std::system_error(ec) {}
624 SystemError( std::error_code ec, std::string const& what )
625 : Error(), std::system_error(ec, what) {}
626 SystemError( std::error_code ec, char const * what )
627 : Error(), std::system_error(ec, what) {}
628 SystemError( int ev, std::error_category const& ecat )
629 : Error(), std::system_error(ev, ecat) {}
630 SystemError( int ev, std::error_category const& ecat, std::string const& what)
631 : Error(), std::system_error(ev, ecat, what) {}
632 SystemError( int ev, std::error_category const& ecat, char const * what)
633 : Error(), std::system_error(ev, ecat, what) {}
634 virtual ~SystemError() = default;
635
636 virtual const char* what() const noexcept { return std::system_error::what(); }
637 };
638
639#if defined(_MSC_VER) && (_MSC_VER == 1800)
640# undef noexcept
641#endif
642
643 class OutOfHostMemoryError : public SystemError
644 {
645 public:
646 OutOfHostMemoryError( std::string const& message )
647 : SystemError( make_error_code( Result::eErrorOutOfHostMemory ), message ) {}
648 OutOfHostMemoryError( char const * message )
649 : SystemError( make_error_code( Result::eErrorOutOfHostMemory ), message ) {}
650 };
651 class OutOfDeviceMemoryError : public SystemError
652 {
653 public:
654 OutOfDeviceMemoryError( std::string const& message )
655 : SystemError( make_error_code( Result::eErrorOutOfDeviceMemory ), message ) {}
656 OutOfDeviceMemoryError( char const * message )
657 : SystemError( make_error_code( Result::eErrorOutOfDeviceMemory ), message ) {}
658 };
659 class InitializationFailedError : public SystemError
660 {
661 public:
662 InitializationFailedError( std::string const& message )
663 : SystemError( make_error_code( Result::eErrorInitializationFailed ), message ) {}
664 InitializationFailedError( char const * message )
665 : SystemError( make_error_code( Result::eErrorInitializationFailed ), message ) {}
666 };
667 class DeviceLostError : public SystemError
668 {
669 public:
670 DeviceLostError( std::string const& message )
671 : SystemError( make_error_code( Result::eErrorDeviceLost ), message ) {}
672 DeviceLostError( char const * message )
673 : SystemError( make_error_code( Result::eErrorDeviceLost ), message ) {}
674 };
675 class MemoryMapFailedError : public SystemError
676 {
677 public:
678 MemoryMapFailedError( std::string const& message )
679 : SystemError( make_error_code( Result::eErrorMemoryMapFailed ), message ) {}
680 MemoryMapFailedError( char const * message )
681 : SystemError( make_error_code( Result::eErrorMemoryMapFailed ), message ) {}
682 };
683 class LayerNotPresentError : public SystemError
684 {
685 public:
686 LayerNotPresentError( std::string const& message )
687 : SystemError( make_error_code( Result::eErrorLayerNotPresent ), message ) {}
688 LayerNotPresentError( char const * message )
689 : SystemError( make_error_code( Result::eErrorLayerNotPresent ), message ) {}
690 };
691 class ExtensionNotPresentError : public SystemError
692 {
693 public:
694 ExtensionNotPresentError( std::string const& message )
695 : SystemError( make_error_code( Result::eErrorExtensionNotPresent ), message ) {}
696 ExtensionNotPresentError( char const * message )
697 : SystemError( make_error_code( Result::eErrorExtensionNotPresent ), message ) {}
698 };
699 class FeatureNotPresentError : public SystemError
700 {
701 public:
702 FeatureNotPresentError( std::string const& message )
703 : SystemError( make_error_code( Result::eErrorFeatureNotPresent ), message ) {}
704 FeatureNotPresentError( char const * message )
705 : SystemError( make_error_code( Result::eErrorFeatureNotPresent ), message ) {}
706 };
707 class IncompatibleDriverError : public SystemError
708 {
709 public:
710 IncompatibleDriverError( std::string const& message )
711 : SystemError( make_error_code( Result::eErrorIncompatibleDriver ), message ) {}
712 IncompatibleDriverError( char const * message )
713 : SystemError( make_error_code( Result::eErrorIncompatibleDriver ), message ) {}
714 };
715 class TooManyObjectsError : public SystemError
716 {
717 public:
718 TooManyObjectsError( std::string const& message )
719 : SystemError( make_error_code( Result::eErrorTooManyObjects ), message ) {}
720 TooManyObjectsError( char const * message )
721 : SystemError( make_error_code( Result::eErrorTooManyObjects ), message ) {}
722 };
723 class FormatNotSupportedError : public SystemError
724 {
725 public:
726 FormatNotSupportedError( std::string const& message )
727 : SystemError( make_error_code( Result::eErrorFormatNotSupported ), message ) {}
728 FormatNotSupportedError( char const * message )
729 : SystemError( make_error_code( Result::eErrorFormatNotSupported ), message ) {}
730 };
731 class FragmentedPoolError : public SystemError
732 {
733 public:
734 FragmentedPoolError( std::string const& message )
735 : SystemError( make_error_code( Result::eErrorFragmentedPool ), message ) {}
736 FragmentedPoolError( char const * message )
737 : SystemError( make_error_code( Result::eErrorFragmentedPool ), message ) {}
738 };
739 class SurfaceLostKHRError : public SystemError
740 {
741 public:
742 SurfaceLostKHRError( std::string const& message )
743 : SystemError( make_error_code( Result::eErrorSurfaceLostKHR ), message ) {}
744 SurfaceLostKHRError( char const * message )
745 : SystemError( make_error_code( Result::eErrorSurfaceLostKHR ), message ) {}
746 };
747 class NativeWindowInUseKHRError : public SystemError
748 {
749 public:
750 NativeWindowInUseKHRError( std::string const& message )
751 : SystemError( make_error_code( Result::eErrorNativeWindowInUseKHR ), message ) {}
752 NativeWindowInUseKHRError( char const * message )
753 : SystemError( make_error_code( Result::eErrorNativeWindowInUseKHR ), message ) {}
754 };
755 class OutOfDateKHRError : public SystemError
756 {
757 public:
758 OutOfDateKHRError( std::string const& message )
759 : SystemError( make_error_code( Result::eErrorOutOfDateKHR ), message ) {}
760 OutOfDateKHRError( char const * message )
761 : SystemError( make_error_code( Result::eErrorOutOfDateKHR ), message ) {}
762 };
763 class IncompatibleDisplayKHRError : public SystemError
764 {
765 public:
766 IncompatibleDisplayKHRError( std::string const& message )
767 : SystemError( make_error_code( Result::eErrorIncompatibleDisplayKHR ), message ) {}
768 IncompatibleDisplayKHRError( char const * message )
769 : SystemError( make_error_code( Result::eErrorIncompatibleDisplayKHR ), message ) {}
770 };
771 class ValidationFailedEXTError : public SystemError
772 {
773 public:
774 ValidationFailedEXTError( std::string const& message )
775 : SystemError( make_error_code( Result::eErrorValidationFailedEXT ), message ) {}
776 ValidationFailedEXTError( char const * message )
777 : SystemError( make_error_code( Result::eErrorValidationFailedEXT ), message ) {}
778 };
779 class InvalidShaderNVError : public SystemError
780 {
781 public:
782 InvalidShaderNVError( std::string const& message )
783 : SystemError( make_error_code( Result::eErrorInvalidShaderNV ), message ) {}
784 InvalidShaderNVError( char const * message )
785 : SystemError( make_error_code( Result::eErrorInvalidShaderNV ), message ) {}
786 };
787 class OutOfPoolMemoryKHRError : public SystemError
788 {
789 public:
790 OutOfPoolMemoryKHRError( std::string const& message )
791 : SystemError( make_error_code( Result::eErrorOutOfPoolMemoryKHR ), message ) {}
792 OutOfPoolMemoryKHRError( char const * message )
793 : SystemError( make_error_code( Result::eErrorOutOfPoolMemoryKHR ), message ) {}
794 };
Mark Youngabc2d6e2017-07-07 07:59:56 -0600795 class InvalidExternalHandleKHRError : public SystemError
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600796 {
797 public:
Mark Youngabc2d6e2017-07-07 07:59:56 -0600798 InvalidExternalHandleKHRError( std::string const& message )
799 : SystemError( make_error_code( Result::eErrorInvalidExternalHandleKHR ), message ) {}
800 InvalidExternalHandleKHRError( char const * message )
801 : SystemError( make_error_code( Result::eErrorInvalidExternalHandleKHR ), message ) {}
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600802 };
803
804 VULKAN_HPP_INLINE void throwResultException( Result result, char const * message )
805 {
806 assert ( static_cast<long long int>(result) < 0 );
807 switch ( result )
808 {
809 case Result::eErrorOutOfHostMemory: throw OutOfHostMemoryError ( message );
810 case Result::eErrorOutOfDeviceMemory: throw OutOfDeviceMemoryError ( message );
811 case Result::eErrorInitializationFailed: throw InitializationFailedError ( message );
812 case Result::eErrorDeviceLost: throw DeviceLostError ( message );
813 case Result::eErrorMemoryMapFailed: throw MemoryMapFailedError ( message );
814 case Result::eErrorLayerNotPresent: throw LayerNotPresentError ( message );
815 case Result::eErrorExtensionNotPresent: throw ExtensionNotPresentError ( message );
816 case Result::eErrorFeatureNotPresent: throw FeatureNotPresentError ( message );
817 case Result::eErrorIncompatibleDriver: throw IncompatibleDriverError ( message );
818 case Result::eErrorTooManyObjects: throw TooManyObjectsError ( message );
819 case Result::eErrorFormatNotSupported: throw FormatNotSupportedError ( message );
820 case Result::eErrorFragmentedPool: throw FragmentedPoolError ( message );
821 case Result::eErrorSurfaceLostKHR: throw SurfaceLostKHRError ( message );
822 case Result::eErrorNativeWindowInUseKHR: throw NativeWindowInUseKHRError ( message );
823 case Result::eErrorOutOfDateKHR: throw OutOfDateKHRError ( message );
824 case Result::eErrorIncompatibleDisplayKHR: throw IncompatibleDisplayKHRError ( message );
825 case Result::eErrorValidationFailedEXT: throw ValidationFailedEXTError ( message );
826 case Result::eErrorInvalidShaderNV: throw InvalidShaderNVError ( message );
827 case Result::eErrorOutOfPoolMemoryKHR: throw OutOfPoolMemoryKHRError ( message );
Mark Youngabc2d6e2017-07-07 07:59:56 -0600828 case Result::eErrorInvalidExternalHandleKHR: throw InvalidExternalHandleKHRError ( message );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600829 default: throw SystemError( make_error_code( result ) );
830 }
831 }
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -0600832#endif
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600833} // namespace vk
834
835namespace std
836{
837 template <>
838 struct is_error_code_enum<vk::Result> : public true_type
839 {};
840}
841
842namespace vk
843{
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600844
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600845 template <typename T>
846 struct ResultValue
847 {
848 ResultValue( Result r, T & v )
849 : result( r )
850 , value( v )
851 {}
852
853 Result result;
854 T value;
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700855
856 operator std::tuple<Result&, T&>() { return std::tuple<Result&, T&>(result, value); }
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600857 };
858
859 template <typename T>
860 struct ResultValueType
861 {
862#ifdef VULKAN_HPP_NO_EXCEPTIONS
863 typedef ResultValue<T> type;
864#else
865 typedef T type;
866#endif
867 };
868
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600869 template <>
870 struct ResultValueType<void>
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600871 {
872#ifdef VULKAN_HPP_NO_EXCEPTIONS
873 typedef Result type;
874#else
875 typedef void type;
876#endif
877 };
878
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700879 VULKAN_HPP_INLINE ResultValueType<void>::type createResultValue( Result result, char const * message )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600880 {
881#ifdef VULKAN_HPP_NO_EXCEPTIONS
882 assert( result == Result::eSuccess );
883 return result;
884#else
885 if ( result != Result::eSuccess )
886 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600887 throwResultException( result, message );
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600888 }
889#endif
890 }
891
892 template <typename T>
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700893 VULKAN_HPP_INLINE typename ResultValueType<T>::type createResultValue( Result result, T & data, char const * message )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600894 {
895#ifdef VULKAN_HPP_NO_EXCEPTIONS
896 assert( result == Result::eSuccess );
897 return ResultValue<T>( result, data );
898#else
899 if ( result != Result::eSuccess )
900 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600901 throwResultException( result, message );
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600902 }
903 return data;
904#endif
905 }
906
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700907 VULKAN_HPP_INLINE Result createResultValue( Result result, char const * message, std::initializer_list<Result> successCodes )
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600908 {
909#ifdef VULKAN_HPP_NO_EXCEPTIONS
910 assert( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() );
911#else
912 if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() )
913 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600914 throwResultException( result, message );
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600915 }
916#endif
917 return result;
918 }
919
920 template <typename T>
Mark Lobodzinski2d589822016-12-12 09:44:34 -0700921 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 -0600922 {
923#ifdef VULKAN_HPP_NO_EXCEPTIONS
924 assert( std::find( successCodes.begin(), successCodes.end(), result ) != successCodes.end() );
925#else
926 if ( std::find( successCodes.begin(), successCodes.end(), result ) == successCodes.end() )
927 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -0600928 throwResultException( result, message );
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600929 }
930#endif
931 return ResultValue<T>( result, data );
932 }
933
934 using SampleMask = uint32_t;
935
936 using Bool32 = uint32_t;
937
938 using DeviceSize = uint64_t;
939
940 enum class FramebufferCreateFlagBits
941 {
942 };
943
944 using FramebufferCreateFlags = Flags<FramebufferCreateFlagBits, VkFramebufferCreateFlags>;
945
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600946 enum class QueryPoolCreateFlagBits
947 {
948 };
949
950 using QueryPoolCreateFlags = Flags<QueryPoolCreateFlagBits, VkQueryPoolCreateFlags>;
951
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600952 enum class RenderPassCreateFlagBits
953 {
954 };
955
956 using RenderPassCreateFlags = Flags<RenderPassCreateFlagBits, VkRenderPassCreateFlags>;
957
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600958 enum class SamplerCreateFlagBits
959 {
960 };
961
962 using SamplerCreateFlags = Flags<SamplerCreateFlagBits, VkSamplerCreateFlags>;
963
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600964 enum class PipelineLayoutCreateFlagBits
965 {
966 };
967
968 using PipelineLayoutCreateFlags = Flags<PipelineLayoutCreateFlagBits, VkPipelineLayoutCreateFlags>;
969
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600970 enum class PipelineCacheCreateFlagBits
971 {
972 };
973
974 using PipelineCacheCreateFlags = Flags<PipelineCacheCreateFlagBits, VkPipelineCacheCreateFlags>;
975
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600976 enum class PipelineDepthStencilStateCreateFlagBits
977 {
978 };
979
980 using PipelineDepthStencilStateCreateFlags = Flags<PipelineDepthStencilStateCreateFlagBits, VkPipelineDepthStencilStateCreateFlags>;
981
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600982 enum class PipelineDynamicStateCreateFlagBits
983 {
984 };
985
986 using PipelineDynamicStateCreateFlags = Flags<PipelineDynamicStateCreateFlagBits, VkPipelineDynamicStateCreateFlags>;
987
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600988 enum class PipelineColorBlendStateCreateFlagBits
989 {
990 };
991
992 using PipelineColorBlendStateCreateFlags = Flags<PipelineColorBlendStateCreateFlagBits, VkPipelineColorBlendStateCreateFlags>;
993
Lenny Komowbed9b5c2016-08-11 11:23:15 -0600994 enum class PipelineMultisampleStateCreateFlagBits
995 {
996 };
997
998 using PipelineMultisampleStateCreateFlags = Flags<PipelineMultisampleStateCreateFlagBits, VkPipelineMultisampleStateCreateFlags>;
999
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001000 enum class PipelineRasterizationStateCreateFlagBits
1001 {
1002 };
1003
1004 using PipelineRasterizationStateCreateFlags = Flags<PipelineRasterizationStateCreateFlagBits, VkPipelineRasterizationStateCreateFlags>;
1005
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001006 enum class PipelineViewportStateCreateFlagBits
1007 {
1008 };
1009
1010 using PipelineViewportStateCreateFlags = Flags<PipelineViewportStateCreateFlagBits, VkPipelineViewportStateCreateFlags>;
1011
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001012 enum class PipelineTessellationStateCreateFlagBits
1013 {
1014 };
1015
1016 using PipelineTessellationStateCreateFlags = Flags<PipelineTessellationStateCreateFlagBits, VkPipelineTessellationStateCreateFlags>;
1017
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001018 enum class PipelineInputAssemblyStateCreateFlagBits
1019 {
1020 };
1021
1022 using PipelineInputAssemblyStateCreateFlags = Flags<PipelineInputAssemblyStateCreateFlagBits, VkPipelineInputAssemblyStateCreateFlags>;
1023
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001024 enum class PipelineVertexInputStateCreateFlagBits
1025 {
1026 };
1027
1028 using PipelineVertexInputStateCreateFlags = Flags<PipelineVertexInputStateCreateFlagBits, VkPipelineVertexInputStateCreateFlags>;
1029
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001030 enum class PipelineShaderStageCreateFlagBits
1031 {
1032 };
1033
1034 using PipelineShaderStageCreateFlags = Flags<PipelineShaderStageCreateFlagBits, VkPipelineShaderStageCreateFlags>;
1035
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001036 enum class BufferViewCreateFlagBits
1037 {
1038 };
1039
1040 using BufferViewCreateFlags = Flags<BufferViewCreateFlagBits, VkBufferViewCreateFlags>;
1041
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001042 enum class InstanceCreateFlagBits
1043 {
1044 };
1045
1046 using InstanceCreateFlags = Flags<InstanceCreateFlagBits, VkInstanceCreateFlags>;
1047
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001048 enum class DeviceCreateFlagBits
1049 {
1050 };
1051
1052 using DeviceCreateFlags = Flags<DeviceCreateFlagBits, VkDeviceCreateFlags>;
1053
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001054 enum class DeviceQueueCreateFlagBits
1055 {
1056 };
1057
1058 using DeviceQueueCreateFlags = Flags<DeviceQueueCreateFlagBits, VkDeviceQueueCreateFlags>;
1059
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001060 enum class ImageViewCreateFlagBits
1061 {
1062 };
1063
1064 using ImageViewCreateFlags = Flags<ImageViewCreateFlagBits, VkImageViewCreateFlags>;
1065
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001066 enum class SemaphoreCreateFlagBits
1067 {
1068 };
1069
1070 using SemaphoreCreateFlags = Flags<SemaphoreCreateFlagBits, VkSemaphoreCreateFlags>;
1071
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001072 enum class ShaderModuleCreateFlagBits
1073 {
1074 };
1075
1076 using ShaderModuleCreateFlags = Flags<ShaderModuleCreateFlagBits, VkShaderModuleCreateFlags>;
1077
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001078 enum class EventCreateFlagBits
1079 {
1080 };
1081
1082 using EventCreateFlags = Flags<EventCreateFlagBits, VkEventCreateFlags>;
1083
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001084 enum class MemoryMapFlagBits
1085 {
1086 };
1087
1088 using MemoryMapFlags = Flags<MemoryMapFlagBits, VkMemoryMapFlags>;
1089
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001090 enum class DescriptorPoolResetFlagBits
1091 {
1092 };
1093
1094 using DescriptorPoolResetFlags = Flags<DescriptorPoolResetFlagBits, VkDescriptorPoolResetFlags>;
1095
Mark Young0f183a82017-02-28 09:58:04 -07001096 enum class DescriptorUpdateTemplateCreateFlagBitsKHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001097 {
1098 };
1099
Mark Young0f183a82017-02-28 09:58:04 -07001100 using DescriptorUpdateTemplateCreateFlagsKHR = Flags<DescriptorUpdateTemplateCreateFlagBitsKHR, VkDescriptorUpdateTemplateCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001101
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001102 enum class DisplayModeCreateFlagBitsKHR
1103 {
1104 };
1105
1106 using DisplayModeCreateFlagsKHR = Flags<DisplayModeCreateFlagBitsKHR, VkDisplayModeCreateFlagsKHR>;
1107
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001108 enum class DisplaySurfaceCreateFlagBitsKHR
1109 {
1110 };
1111
1112 using DisplaySurfaceCreateFlagsKHR = Flags<DisplaySurfaceCreateFlagBitsKHR, VkDisplaySurfaceCreateFlagsKHR>;
1113
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001114#ifdef VK_USE_PLATFORM_ANDROID_KHR
1115 enum class AndroidSurfaceCreateFlagBitsKHR
1116 {
1117 };
1118#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
1119
1120#ifdef VK_USE_PLATFORM_ANDROID_KHR
1121 using AndroidSurfaceCreateFlagsKHR = Flags<AndroidSurfaceCreateFlagBitsKHR, VkAndroidSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001122#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
1123
1124#ifdef VK_USE_PLATFORM_MIR_KHR
1125 enum class MirSurfaceCreateFlagBitsKHR
1126 {
1127 };
1128#endif /*VK_USE_PLATFORM_MIR_KHR*/
1129
1130#ifdef VK_USE_PLATFORM_MIR_KHR
1131 using MirSurfaceCreateFlagsKHR = Flags<MirSurfaceCreateFlagBitsKHR, VkMirSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001132#endif /*VK_USE_PLATFORM_MIR_KHR*/
1133
Mark Young39389872017-01-19 21:10:49 -07001134#ifdef VK_USE_PLATFORM_VI_NN
1135 enum class ViSurfaceCreateFlagBitsNN
1136 {
1137 };
1138#endif /*VK_USE_PLATFORM_VI_NN*/
1139
1140#ifdef VK_USE_PLATFORM_VI_NN
1141 using ViSurfaceCreateFlagsNN = Flags<ViSurfaceCreateFlagBitsNN, VkViSurfaceCreateFlagsNN>;
Mark Young39389872017-01-19 21:10:49 -07001142#endif /*VK_USE_PLATFORM_VI_NN*/
1143
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001144#ifdef VK_USE_PLATFORM_WAYLAND_KHR
1145 enum class WaylandSurfaceCreateFlagBitsKHR
1146 {
1147 };
1148#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
1149
1150#ifdef VK_USE_PLATFORM_WAYLAND_KHR
1151 using WaylandSurfaceCreateFlagsKHR = Flags<WaylandSurfaceCreateFlagBitsKHR, VkWaylandSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001152#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
1153
1154#ifdef VK_USE_PLATFORM_WIN32_KHR
1155 enum class Win32SurfaceCreateFlagBitsKHR
1156 {
1157 };
1158#endif /*VK_USE_PLATFORM_WIN32_KHR*/
1159
1160#ifdef VK_USE_PLATFORM_WIN32_KHR
1161 using Win32SurfaceCreateFlagsKHR = Flags<Win32SurfaceCreateFlagBitsKHR, VkWin32SurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001162#endif /*VK_USE_PLATFORM_WIN32_KHR*/
1163
1164#ifdef VK_USE_PLATFORM_XLIB_KHR
1165 enum class XlibSurfaceCreateFlagBitsKHR
1166 {
1167 };
1168#endif /*VK_USE_PLATFORM_XLIB_KHR*/
1169
1170#ifdef VK_USE_PLATFORM_XLIB_KHR
1171 using XlibSurfaceCreateFlagsKHR = Flags<XlibSurfaceCreateFlagBitsKHR, VkXlibSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001172#endif /*VK_USE_PLATFORM_XLIB_KHR*/
1173
1174#ifdef VK_USE_PLATFORM_XCB_KHR
1175 enum class XcbSurfaceCreateFlagBitsKHR
1176 {
1177 };
1178#endif /*VK_USE_PLATFORM_XCB_KHR*/
1179
1180#ifdef VK_USE_PLATFORM_XCB_KHR
1181 using XcbSurfaceCreateFlagsKHR = Flags<XcbSurfaceCreateFlagBitsKHR, VkXcbSurfaceCreateFlagsKHR>;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001182#endif /*VK_USE_PLATFORM_XCB_KHR*/
1183
Mark Young0f183a82017-02-28 09:58:04 -07001184#ifdef VK_USE_PLATFORM_IOS_MVK
1185 enum class IOSSurfaceCreateFlagBitsMVK
1186 {
1187 };
1188#endif /*VK_USE_PLATFORM_IOS_MVK*/
1189
1190#ifdef VK_USE_PLATFORM_IOS_MVK
1191 using IOSSurfaceCreateFlagsMVK = Flags<IOSSurfaceCreateFlagBitsMVK, VkIOSSurfaceCreateFlagsMVK>;
Mark Young0f183a82017-02-28 09:58:04 -07001192#endif /*VK_USE_PLATFORM_IOS_MVK*/
1193
1194#ifdef VK_USE_PLATFORM_MACOS_MVK
1195 enum class MacOSSurfaceCreateFlagBitsMVK
1196 {
1197 };
1198#endif /*VK_USE_PLATFORM_MACOS_MVK*/
1199
1200#ifdef VK_USE_PLATFORM_MACOS_MVK
1201 using MacOSSurfaceCreateFlagsMVK = Flags<MacOSSurfaceCreateFlagBitsMVK, VkMacOSSurfaceCreateFlagsMVK>;
Mark Young0f183a82017-02-28 09:58:04 -07001202#endif /*VK_USE_PLATFORM_MACOS_MVK*/
1203
Mark Young39389872017-01-19 21:10:49 -07001204 enum class CommandPoolTrimFlagBitsKHR
1205 {
1206 };
1207
1208 using CommandPoolTrimFlagsKHR = Flags<CommandPoolTrimFlagBitsKHR, VkCommandPoolTrimFlagsKHR>;
1209
Mark Young0f183a82017-02-28 09:58:04 -07001210 enum class PipelineViewportSwizzleStateCreateFlagBitsNV
1211 {
1212 };
1213
1214 using PipelineViewportSwizzleStateCreateFlagsNV = Flags<PipelineViewportSwizzleStateCreateFlagBitsNV, VkPipelineViewportSwizzleStateCreateFlagsNV>;
1215
Mark Young0f183a82017-02-28 09:58:04 -07001216 enum class PipelineDiscardRectangleStateCreateFlagBitsEXT
1217 {
1218 };
1219
1220 using PipelineDiscardRectangleStateCreateFlagsEXT = Flags<PipelineDiscardRectangleStateCreateFlagBitsEXT, VkPipelineDiscardRectangleStateCreateFlagsEXT>;
1221
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06001222 enum class PipelineCoverageToColorStateCreateFlagBitsNV
1223 {
1224 };
1225
1226 using PipelineCoverageToColorStateCreateFlagsNV = Flags<PipelineCoverageToColorStateCreateFlagBitsNV, VkPipelineCoverageToColorStateCreateFlagsNV>;
1227
1228 enum class PipelineCoverageModulationStateCreateFlagBitsNV
1229 {
1230 };
1231
1232 using PipelineCoverageModulationStateCreateFlagsNV = Flags<PipelineCoverageModulationStateCreateFlagBitsNV, VkPipelineCoverageModulationStateCreateFlagsNV>;
1233
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06001234 enum class ValidationCacheCreateFlagBitsEXT
1235 {
1236 };
1237
1238 using ValidationCacheCreateFlagsEXT = Flags<ValidationCacheCreateFlagBitsEXT, VkValidationCacheCreateFlagsEXT>;
1239
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001240 class DeviceMemory
1241 {
1242 public:
1243 DeviceMemory()
1244 : m_deviceMemory(VK_NULL_HANDLE)
1245 {}
1246
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001247 DeviceMemory( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001248 : m_deviceMemory(VK_NULL_HANDLE)
1249 {}
1250
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001251 VULKAN_HPP_TYPESAFE_EXPLICIT DeviceMemory( VkDeviceMemory deviceMemory )
1252 : m_deviceMemory( deviceMemory )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001253 {}
1254
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001255#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001256 DeviceMemory & operator=(VkDeviceMemory deviceMemory)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001257 {
1258 m_deviceMemory = deviceMemory;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001259 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001260 }
1261#endif
1262
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001263 DeviceMemory & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001264 {
1265 m_deviceMemory = VK_NULL_HANDLE;
1266 return *this;
1267 }
1268
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001269 bool operator==( DeviceMemory const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001270 {
1271 return m_deviceMemory == rhs.m_deviceMemory;
1272 }
1273
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001274 bool operator!=(DeviceMemory const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001275 {
1276 return m_deviceMemory != rhs.m_deviceMemory;
1277 }
1278
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001279 bool operator<(DeviceMemory const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001280 {
1281 return m_deviceMemory < rhs.m_deviceMemory;
1282 }
1283
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001284
1285
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001286 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDeviceMemory() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001287 {
1288 return m_deviceMemory;
1289 }
1290
1291 explicit operator bool() const
1292 {
1293 return m_deviceMemory != VK_NULL_HANDLE;
1294 }
1295
1296 bool operator!() const
1297 {
1298 return m_deviceMemory == VK_NULL_HANDLE;
1299 }
1300
1301 private:
1302 VkDeviceMemory m_deviceMemory;
1303 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001304
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001305 static_assert( sizeof( DeviceMemory ) == sizeof( VkDeviceMemory ), "handle and wrapper have different size!" );
1306
1307 class CommandPool
1308 {
1309 public:
1310 CommandPool()
1311 : m_commandPool(VK_NULL_HANDLE)
1312 {}
1313
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001314 CommandPool( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001315 : m_commandPool(VK_NULL_HANDLE)
1316 {}
1317
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001318 VULKAN_HPP_TYPESAFE_EXPLICIT CommandPool( VkCommandPool commandPool )
1319 : m_commandPool( commandPool )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001320 {}
1321
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001322#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001323 CommandPool & operator=(VkCommandPool commandPool)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001324 {
1325 m_commandPool = commandPool;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001326 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001327 }
1328#endif
1329
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001330 CommandPool & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001331 {
1332 m_commandPool = VK_NULL_HANDLE;
1333 return *this;
1334 }
1335
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001336 bool operator==( CommandPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001337 {
1338 return m_commandPool == rhs.m_commandPool;
1339 }
1340
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001341 bool operator!=(CommandPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001342 {
1343 return m_commandPool != rhs.m_commandPool;
1344 }
1345
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001346 bool operator<(CommandPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001347 {
1348 return m_commandPool < rhs.m_commandPool;
1349 }
1350
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001351
1352
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001353 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandPool() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001354 {
1355 return m_commandPool;
1356 }
1357
1358 explicit operator bool() const
1359 {
1360 return m_commandPool != VK_NULL_HANDLE;
1361 }
1362
1363 bool operator!() const
1364 {
1365 return m_commandPool == VK_NULL_HANDLE;
1366 }
1367
1368 private:
1369 VkCommandPool m_commandPool;
1370 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001371
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001372 static_assert( sizeof( CommandPool ) == sizeof( VkCommandPool ), "handle and wrapper have different size!" );
1373
1374 class Buffer
1375 {
1376 public:
1377 Buffer()
1378 : m_buffer(VK_NULL_HANDLE)
1379 {}
1380
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001381 Buffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001382 : m_buffer(VK_NULL_HANDLE)
1383 {}
1384
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001385 VULKAN_HPP_TYPESAFE_EXPLICIT Buffer( VkBuffer buffer )
1386 : m_buffer( buffer )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001387 {}
1388
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001389#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001390 Buffer & operator=(VkBuffer buffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001391 {
1392 m_buffer = buffer;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001393 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001394 }
1395#endif
1396
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001397 Buffer & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001398 {
1399 m_buffer = VK_NULL_HANDLE;
1400 return *this;
1401 }
1402
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001403 bool operator==( Buffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001404 {
1405 return m_buffer == rhs.m_buffer;
1406 }
1407
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001408 bool operator!=(Buffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001409 {
1410 return m_buffer != rhs.m_buffer;
1411 }
1412
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001413 bool operator<(Buffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001414 {
1415 return m_buffer < rhs.m_buffer;
1416 }
1417
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001418
1419
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001420 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkBuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001421 {
1422 return m_buffer;
1423 }
1424
1425 explicit operator bool() const
1426 {
1427 return m_buffer != VK_NULL_HANDLE;
1428 }
1429
1430 bool operator!() const
1431 {
1432 return m_buffer == VK_NULL_HANDLE;
1433 }
1434
1435 private:
1436 VkBuffer m_buffer;
1437 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001438
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001439 static_assert( sizeof( Buffer ) == sizeof( VkBuffer ), "handle and wrapper have different size!" );
1440
1441 class BufferView
1442 {
1443 public:
1444 BufferView()
1445 : m_bufferView(VK_NULL_HANDLE)
1446 {}
1447
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001448 BufferView( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001449 : m_bufferView(VK_NULL_HANDLE)
1450 {}
1451
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001452 VULKAN_HPP_TYPESAFE_EXPLICIT BufferView( VkBufferView bufferView )
1453 : m_bufferView( bufferView )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001454 {}
1455
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001456#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001457 BufferView & operator=(VkBufferView bufferView)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001458 {
1459 m_bufferView = bufferView;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001460 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001461 }
1462#endif
1463
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001464 BufferView & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001465 {
1466 m_bufferView = VK_NULL_HANDLE;
1467 return *this;
1468 }
1469
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001470 bool operator==( BufferView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001471 {
1472 return m_bufferView == rhs.m_bufferView;
1473 }
1474
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001475 bool operator!=(BufferView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001476 {
1477 return m_bufferView != rhs.m_bufferView;
1478 }
1479
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001480 bool operator<(BufferView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001481 {
1482 return m_bufferView < rhs.m_bufferView;
1483 }
1484
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001485
1486
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001487 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkBufferView() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001488 {
1489 return m_bufferView;
1490 }
1491
1492 explicit operator bool() const
1493 {
1494 return m_bufferView != VK_NULL_HANDLE;
1495 }
1496
1497 bool operator!() const
1498 {
1499 return m_bufferView == VK_NULL_HANDLE;
1500 }
1501
1502 private:
1503 VkBufferView m_bufferView;
1504 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001505
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001506 static_assert( sizeof( BufferView ) == sizeof( VkBufferView ), "handle and wrapper have different size!" );
1507
1508 class Image
1509 {
1510 public:
1511 Image()
1512 : m_image(VK_NULL_HANDLE)
1513 {}
1514
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001515 Image( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001516 : m_image(VK_NULL_HANDLE)
1517 {}
1518
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001519 VULKAN_HPP_TYPESAFE_EXPLICIT Image( VkImage image )
1520 : m_image( image )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001521 {}
1522
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001523#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001524 Image & operator=(VkImage image)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001525 {
1526 m_image = image;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001527 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001528 }
1529#endif
1530
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001531 Image & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001532 {
1533 m_image = VK_NULL_HANDLE;
1534 return *this;
1535 }
1536
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001537 bool operator==( Image const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001538 {
1539 return m_image == rhs.m_image;
1540 }
1541
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001542 bool operator!=(Image const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001543 {
1544 return m_image != rhs.m_image;
1545 }
1546
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001547 bool operator<(Image const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001548 {
1549 return m_image < rhs.m_image;
1550 }
1551
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001552
1553
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001554 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkImage() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001555 {
1556 return m_image;
1557 }
1558
1559 explicit operator bool() const
1560 {
1561 return m_image != VK_NULL_HANDLE;
1562 }
1563
1564 bool operator!() const
1565 {
1566 return m_image == VK_NULL_HANDLE;
1567 }
1568
1569 private:
1570 VkImage m_image;
1571 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001572
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001573 static_assert( sizeof( Image ) == sizeof( VkImage ), "handle and wrapper have different size!" );
1574
1575 class ImageView
1576 {
1577 public:
1578 ImageView()
1579 : m_imageView(VK_NULL_HANDLE)
1580 {}
1581
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001582 ImageView( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001583 : m_imageView(VK_NULL_HANDLE)
1584 {}
1585
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001586 VULKAN_HPP_TYPESAFE_EXPLICIT ImageView( VkImageView imageView )
1587 : m_imageView( imageView )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001588 {}
1589
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001590#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001591 ImageView & operator=(VkImageView imageView)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001592 {
1593 m_imageView = imageView;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001594 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001595 }
1596#endif
1597
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001598 ImageView & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001599 {
1600 m_imageView = VK_NULL_HANDLE;
1601 return *this;
1602 }
1603
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001604 bool operator==( ImageView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001605 {
1606 return m_imageView == rhs.m_imageView;
1607 }
1608
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001609 bool operator!=(ImageView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001610 {
1611 return m_imageView != rhs.m_imageView;
1612 }
1613
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001614 bool operator<(ImageView const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001615 {
1616 return m_imageView < rhs.m_imageView;
1617 }
1618
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001619
1620
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001621 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkImageView() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001622 {
1623 return m_imageView;
1624 }
1625
1626 explicit operator bool() const
1627 {
1628 return m_imageView != VK_NULL_HANDLE;
1629 }
1630
1631 bool operator!() const
1632 {
1633 return m_imageView == VK_NULL_HANDLE;
1634 }
1635
1636 private:
1637 VkImageView m_imageView;
1638 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001639
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001640 static_assert( sizeof( ImageView ) == sizeof( VkImageView ), "handle and wrapper have different size!" );
1641
1642 class ShaderModule
1643 {
1644 public:
1645 ShaderModule()
1646 : m_shaderModule(VK_NULL_HANDLE)
1647 {}
1648
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001649 ShaderModule( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001650 : m_shaderModule(VK_NULL_HANDLE)
1651 {}
1652
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001653 VULKAN_HPP_TYPESAFE_EXPLICIT ShaderModule( VkShaderModule shaderModule )
1654 : m_shaderModule( shaderModule )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001655 {}
1656
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001657#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001658 ShaderModule & operator=(VkShaderModule shaderModule)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001659 {
1660 m_shaderModule = shaderModule;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001661 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001662 }
1663#endif
1664
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001665 ShaderModule & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001666 {
1667 m_shaderModule = VK_NULL_HANDLE;
1668 return *this;
1669 }
1670
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001671 bool operator==( ShaderModule const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001672 {
1673 return m_shaderModule == rhs.m_shaderModule;
1674 }
1675
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001676 bool operator!=(ShaderModule const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001677 {
1678 return m_shaderModule != rhs.m_shaderModule;
1679 }
1680
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001681 bool operator<(ShaderModule const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001682 {
1683 return m_shaderModule < rhs.m_shaderModule;
1684 }
1685
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001686
1687
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001688 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkShaderModule() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001689 {
1690 return m_shaderModule;
1691 }
1692
1693 explicit operator bool() const
1694 {
1695 return m_shaderModule != VK_NULL_HANDLE;
1696 }
1697
1698 bool operator!() const
1699 {
1700 return m_shaderModule == VK_NULL_HANDLE;
1701 }
1702
1703 private:
1704 VkShaderModule m_shaderModule;
1705 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001706
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001707 static_assert( sizeof( ShaderModule ) == sizeof( VkShaderModule ), "handle and wrapper have different size!" );
1708
1709 class Pipeline
1710 {
1711 public:
1712 Pipeline()
1713 : m_pipeline(VK_NULL_HANDLE)
1714 {}
1715
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001716 Pipeline( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001717 : m_pipeline(VK_NULL_HANDLE)
1718 {}
1719
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001720 VULKAN_HPP_TYPESAFE_EXPLICIT Pipeline( VkPipeline pipeline )
1721 : m_pipeline( pipeline )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001722 {}
1723
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001724#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001725 Pipeline & operator=(VkPipeline pipeline)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001726 {
1727 m_pipeline = pipeline;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001728 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001729 }
1730#endif
1731
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001732 Pipeline & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001733 {
1734 m_pipeline = VK_NULL_HANDLE;
1735 return *this;
1736 }
1737
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001738 bool operator==( Pipeline const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001739 {
1740 return m_pipeline == rhs.m_pipeline;
1741 }
1742
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001743 bool operator!=(Pipeline const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001744 {
1745 return m_pipeline != rhs.m_pipeline;
1746 }
1747
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001748 bool operator<(Pipeline const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001749 {
1750 return m_pipeline < rhs.m_pipeline;
1751 }
1752
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001753
1754
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001755 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipeline() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001756 {
1757 return m_pipeline;
1758 }
1759
1760 explicit operator bool() const
1761 {
1762 return m_pipeline != VK_NULL_HANDLE;
1763 }
1764
1765 bool operator!() const
1766 {
1767 return m_pipeline == VK_NULL_HANDLE;
1768 }
1769
1770 private:
1771 VkPipeline m_pipeline;
1772 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001773
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001774 static_assert( sizeof( Pipeline ) == sizeof( VkPipeline ), "handle and wrapper have different size!" );
1775
1776 class PipelineLayout
1777 {
1778 public:
1779 PipelineLayout()
1780 : m_pipelineLayout(VK_NULL_HANDLE)
1781 {}
1782
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001783 PipelineLayout( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001784 : m_pipelineLayout(VK_NULL_HANDLE)
1785 {}
1786
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001787 VULKAN_HPP_TYPESAFE_EXPLICIT PipelineLayout( VkPipelineLayout pipelineLayout )
1788 : m_pipelineLayout( pipelineLayout )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001789 {}
1790
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001791#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001792 PipelineLayout & operator=(VkPipelineLayout pipelineLayout)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001793 {
1794 m_pipelineLayout = pipelineLayout;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001795 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001796 }
1797#endif
1798
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001799 PipelineLayout & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001800 {
1801 m_pipelineLayout = VK_NULL_HANDLE;
1802 return *this;
1803 }
1804
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001805 bool operator==( PipelineLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001806 {
1807 return m_pipelineLayout == rhs.m_pipelineLayout;
1808 }
1809
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001810 bool operator!=(PipelineLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001811 {
1812 return m_pipelineLayout != rhs.m_pipelineLayout;
1813 }
1814
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001815 bool operator<(PipelineLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001816 {
1817 return m_pipelineLayout < rhs.m_pipelineLayout;
1818 }
1819
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001820
1821
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001822 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipelineLayout() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001823 {
1824 return m_pipelineLayout;
1825 }
1826
1827 explicit operator bool() const
1828 {
1829 return m_pipelineLayout != VK_NULL_HANDLE;
1830 }
1831
1832 bool operator!() const
1833 {
1834 return m_pipelineLayout == VK_NULL_HANDLE;
1835 }
1836
1837 private:
1838 VkPipelineLayout m_pipelineLayout;
1839 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001840
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001841 static_assert( sizeof( PipelineLayout ) == sizeof( VkPipelineLayout ), "handle and wrapper have different size!" );
1842
1843 class Sampler
1844 {
1845 public:
1846 Sampler()
1847 : m_sampler(VK_NULL_HANDLE)
1848 {}
1849
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001850 Sampler( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001851 : m_sampler(VK_NULL_HANDLE)
1852 {}
1853
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001854 VULKAN_HPP_TYPESAFE_EXPLICIT Sampler( VkSampler sampler )
1855 : m_sampler( sampler )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001856 {}
1857
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001858#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001859 Sampler & operator=(VkSampler sampler)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001860 {
1861 m_sampler = sampler;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001862 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001863 }
1864#endif
1865
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001866 Sampler & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001867 {
1868 m_sampler = VK_NULL_HANDLE;
1869 return *this;
1870 }
1871
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001872 bool operator==( Sampler const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001873 {
1874 return m_sampler == rhs.m_sampler;
1875 }
1876
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001877 bool operator!=(Sampler const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001878 {
1879 return m_sampler != rhs.m_sampler;
1880 }
1881
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001882 bool operator<(Sampler const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001883 {
1884 return m_sampler < rhs.m_sampler;
1885 }
1886
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001887
1888
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001889 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSampler() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001890 {
1891 return m_sampler;
1892 }
1893
1894 explicit operator bool() const
1895 {
1896 return m_sampler != VK_NULL_HANDLE;
1897 }
1898
1899 bool operator!() const
1900 {
1901 return m_sampler == VK_NULL_HANDLE;
1902 }
1903
1904 private:
1905 VkSampler m_sampler;
1906 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001907
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001908 static_assert( sizeof( Sampler ) == sizeof( VkSampler ), "handle and wrapper have different size!" );
1909
1910 class DescriptorSet
1911 {
1912 public:
1913 DescriptorSet()
1914 : m_descriptorSet(VK_NULL_HANDLE)
1915 {}
1916
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001917 DescriptorSet( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001918 : m_descriptorSet(VK_NULL_HANDLE)
1919 {}
1920
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001921 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorSet( VkDescriptorSet descriptorSet )
1922 : m_descriptorSet( descriptorSet )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001923 {}
1924
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001925#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001926 DescriptorSet & operator=(VkDescriptorSet descriptorSet)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001927 {
1928 m_descriptorSet = descriptorSet;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001929 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001930 }
1931#endif
1932
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001933 DescriptorSet & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001934 {
1935 m_descriptorSet = VK_NULL_HANDLE;
1936 return *this;
1937 }
1938
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001939 bool operator==( DescriptorSet const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001940 {
1941 return m_descriptorSet == rhs.m_descriptorSet;
1942 }
1943
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001944 bool operator!=(DescriptorSet const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001945 {
1946 return m_descriptorSet != rhs.m_descriptorSet;
1947 }
1948
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001949 bool operator<(DescriptorSet const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06001950 {
1951 return m_descriptorSet < rhs.m_descriptorSet;
1952 }
1953
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001954
1955
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001956 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorSet() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001957 {
1958 return m_descriptorSet;
1959 }
1960
1961 explicit operator bool() const
1962 {
1963 return m_descriptorSet != VK_NULL_HANDLE;
1964 }
1965
1966 bool operator!() const
1967 {
1968 return m_descriptorSet == VK_NULL_HANDLE;
1969 }
1970
1971 private:
1972 VkDescriptorSet m_descriptorSet;
1973 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001974
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001975 static_assert( sizeof( DescriptorSet ) == sizeof( VkDescriptorSet ), "handle and wrapper have different size!" );
1976
1977 class DescriptorSetLayout
1978 {
1979 public:
1980 DescriptorSetLayout()
1981 : m_descriptorSetLayout(VK_NULL_HANDLE)
1982 {}
1983
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07001984 DescriptorSetLayout( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07001985 : m_descriptorSetLayout(VK_NULL_HANDLE)
1986 {}
1987
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001988 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorSetLayout( VkDescriptorSetLayout descriptorSetLayout )
1989 : m_descriptorSetLayout( descriptorSetLayout )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001990 {}
1991
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07001992#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001993 DescriptorSetLayout & operator=(VkDescriptorSetLayout descriptorSetLayout)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001994 {
1995 m_descriptorSetLayout = descriptorSetLayout;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06001996 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06001997 }
1998#endif
1999
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002000 DescriptorSetLayout & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002001 {
2002 m_descriptorSetLayout = VK_NULL_HANDLE;
2003 return *this;
2004 }
2005
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002006 bool operator==( DescriptorSetLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002007 {
2008 return m_descriptorSetLayout == rhs.m_descriptorSetLayout;
2009 }
2010
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002011 bool operator!=(DescriptorSetLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002012 {
2013 return m_descriptorSetLayout != rhs.m_descriptorSetLayout;
2014 }
2015
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002016 bool operator<(DescriptorSetLayout const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002017 {
2018 return m_descriptorSetLayout < rhs.m_descriptorSetLayout;
2019 }
2020
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002021
2022
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002023 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorSetLayout() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002024 {
2025 return m_descriptorSetLayout;
2026 }
2027
2028 explicit operator bool() const
2029 {
2030 return m_descriptorSetLayout != VK_NULL_HANDLE;
2031 }
2032
2033 bool operator!() const
2034 {
2035 return m_descriptorSetLayout == VK_NULL_HANDLE;
2036 }
2037
2038 private:
2039 VkDescriptorSetLayout m_descriptorSetLayout;
2040 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002041
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002042 static_assert( sizeof( DescriptorSetLayout ) == sizeof( VkDescriptorSetLayout ), "handle and wrapper have different size!" );
2043
2044 class DescriptorPool
2045 {
2046 public:
2047 DescriptorPool()
2048 : m_descriptorPool(VK_NULL_HANDLE)
2049 {}
2050
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002051 DescriptorPool( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002052 : m_descriptorPool(VK_NULL_HANDLE)
2053 {}
2054
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002055 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorPool( VkDescriptorPool descriptorPool )
2056 : m_descriptorPool( descriptorPool )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002057 {}
2058
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002059#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002060 DescriptorPool & operator=(VkDescriptorPool descriptorPool)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002061 {
2062 m_descriptorPool = descriptorPool;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002063 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002064 }
2065#endif
2066
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002067 DescriptorPool & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002068 {
2069 m_descriptorPool = VK_NULL_HANDLE;
2070 return *this;
2071 }
2072
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002073 bool operator==( DescriptorPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002074 {
2075 return m_descriptorPool == rhs.m_descriptorPool;
2076 }
2077
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002078 bool operator!=(DescriptorPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002079 {
2080 return m_descriptorPool != rhs.m_descriptorPool;
2081 }
2082
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002083 bool operator<(DescriptorPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002084 {
2085 return m_descriptorPool < rhs.m_descriptorPool;
2086 }
2087
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002088
2089
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002090 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorPool() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002091 {
2092 return m_descriptorPool;
2093 }
2094
2095 explicit operator bool() const
2096 {
2097 return m_descriptorPool != VK_NULL_HANDLE;
2098 }
2099
2100 bool operator!() const
2101 {
2102 return m_descriptorPool == VK_NULL_HANDLE;
2103 }
2104
2105 private:
2106 VkDescriptorPool m_descriptorPool;
2107 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002108
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002109 static_assert( sizeof( DescriptorPool ) == sizeof( VkDescriptorPool ), "handle and wrapper have different size!" );
2110
2111 class Fence
2112 {
2113 public:
2114 Fence()
2115 : m_fence(VK_NULL_HANDLE)
2116 {}
2117
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002118 Fence( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002119 : m_fence(VK_NULL_HANDLE)
2120 {}
2121
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002122 VULKAN_HPP_TYPESAFE_EXPLICIT Fence( VkFence fence )
2123 : m_fence( fence )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002124 {}
2125
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002126#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002127 Fence & operator=(VkFence fence)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002128 {
2129 m_fence = fence;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002130 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002131 }
2132#endif
2133
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002134 Fence & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002135 {
2136 m_fence = VK_NULL_HANDLE;
2137 return *this;
2138 }
2139
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002140 bool operator==( Fence const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002141 {
2142 return m_fence == rhs.m_fence;
2143 }
2144
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002145 bool operator!=(Fence const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002146 {
2147 return m_fence != rhs.m_fence;
2148 }
2149
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002150 bool operator<(Fence const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002151 {
2152 return m_fence < rhs.m_fence;
2153 }
2154
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002155
2156
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002157 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkFence() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002158 {
2159 return m_fence;
2160 }
2161
2162 explicit operator bool() const
2163 {
2164 return m_fence != VK_NULL_HANDLE;
2165 }
2166
2167 bool operator!() const
2168 {
2169 return m_fence == VK_NULL_HANDLE;
2170 }
2171
2172 private:
2173 VkFence m_fence;
2174 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002175
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002176 static_assert( sizeof( Fence ) == sizeof( VkFence ), "handle and wrapper have different size!" );
2177
2178 class Semaphore
2179 {
2180 public:
2181 Semaphore()
2182 : m_semaphore(VK_NULL_HANDLE)
2183 {}
2184
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002185 Semaphore( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002186 : m_semaphore(VK_NULL_HANDLE)
2187 {}
2188
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002189 VULKAN_HPP_TYPESAFE_EXPLICIT Semaphore( VkSemaphore semaphore )
2190 : m_semaphore( semaphore )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002191 {}
2192
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002193#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002194 Semaphore & operator=(VkSemaphore semaphore)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002195 {
2196 m_semaphore = semaphore;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002197 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002198 }
2199#endif
2200
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002201 Semaphore & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002202 {
2203 m_semaphore = VK_NULL_HANDLE;
2204 return *this;
2205 }
2206
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002207 bool operator==( Semaphore const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002208 {
2209 return m_semaphore == rhs.m_semaphore;
2210 }
2211
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002212 bool operator!=(Semaphore const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002213 {
2214 return m_semaphore != rhs.m_semaphore;
2215 }
2216
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002217 bool operator<(Semaphore const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002218 {
2219 return m_semaphore < rhs.m_semaphore;
2220 }
2221
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002222
2223
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002224 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSemaphore() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002225 {
2226 return m_semaphore;
2227 }
2228
2229 explicit operator bool() const
2230 {
2231 return m_semaphore != VK_NULL_HANDLE;
2232 }
2233
2234 bool operator!() const
2235 {
2236 return m_semaphore == VK_NULL_HANDLE;
2237 }
2238
2239 private:
2240 VkSemaphore m_semaphore;
2241 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002242
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002243 static_assert( sizeof( Semaphore ) == sizeof( VkSemaphore ), "handle and wrapper have different size!" );
2244
2245 class Event
2246 {
2247 public:
2248 Event()
2249 : m_event(VK_NULL_HANDLE)
2250 {}
2251
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002252 Event( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002253 : m_event(VK_NULL_HANDLE)
2254 {}
2255
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002256 VULKAN_HPP_TYPESAFE_EXPLICIT Event( VkEvent event )
2257 : m_event( event )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002258 {}
2259
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002260#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002261 Event & operator=(VkEvent event)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002262 {
2263 m_event = event;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002264 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002265 }
2266#endif
2267
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002268 Event & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002269 {
2270 m_event = VK_NULL_HANDLE;
2271 return *this;
2272 }
2273
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002274 bool operator==( Event const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002275 {
2276 return m_event == rhs.m_event;
2277 }
2278
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002279 bool operator!=(Event const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002280 {
2281 return m_event != rhs.m_event;
2282 }
2283
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002284 bool operator<(Event const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002285 {
2286 return m_event < rhs.m_event;
2287 }
2288
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002289
2290
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002291 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkEvent() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002292 {
2293 return m_event;
2294 }
2295
2296 explicit operator bool() const
2297 {
2298 return m_event != VK_NULL_HANDLE;
2299 }
2300
2301 bool operator!() const
2302 {
2303 return m_event == VK_NULL_HANDLE;
2304 }
2305
2306 private:
2307 VkEvent m_event;
2308 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002309
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002310 static_assert( sizeof( Event ) == sizeof( VkEvent ), "handle and wrapper have different size!" );
2311
2312 class QueryPool
2313 {
2314 public:
2315 QueryPool()
2316 : m_queryPool(VK_NULL_HANDLE)
2317 {}
2318
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002319 QueryPool( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002320 : m_queryPool(VK_NULL_HANDLE)
2321 {}
2322
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002323 VULKAN_HPP_TYPESAFE_EXPLICIT QueryPool( VkQueryPool queryPool )
2324 : m_queryPool( queryPool )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002325 {}
2326
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002327#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002328 QueryPool & operator=(VkQueryPool queryPool)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002329 {
2330 m_queryPool = queryPool;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002331 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002332 }
2333#endif
2334
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002335 QueryPool & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002336 {
2337 m_queryPool = VK_NULL_HANDLE;
2338 return *this;
2339 }
2340
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002341 bool operator==( QueryPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002342 {
2343 return m_queryPool == rhs.m_queryPool;
2344 }
2345
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002346 bool operator!=(QueryPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002347 {
2348 return m_queryPool != rhs.m_queryPool;
2349 }
2350
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002351 bool operator<(QueryPool const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002352 {
2353 return m_queryPool < rhs.m_queryPool;
2354 }
2355
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002356
2357
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002358 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueryPool() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002359 {
2360 return m_queryPool;
2361 }
2362
2363 explicit operator bool() const
2364 {
2365 return m_queryPool != VK_NULL_HANDLE;
2366 }
2367
2368 bool operator!() const
2369 {
2370 return m_queryPool == VK_NULL_HANDLE;
2371 }
2372
2373 private:
2374 VkQueryPool m_queryPool;
2375 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002376
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002377 static_assert( sizeof( QueryPool ) == sizeof( VkQueryPool ), "handle and wrapper have different size!" );
2378
2379 class Framebuffer
2380 {
2381 public:
2382 Framebuffer()
2383 : m_framebuffer(VK_NULL_HANDLE)
2384 {}
2385
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002386 Framebuffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002387 : m_framebuffer(VK_NULL_HANDLE)
2388 {}
2389
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002390 VULKAN_HPP_TYPESAFE_EXPLICIT Framebuffer( VkFramebuffer framebuffer )
2391 : m_framebuffer( framebuffer )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002392 {}
2393
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002394#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002395 Framebuffer & operator=(VkFramebuffer framebuffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002396 {
2397 m_framebuffer = framebuffer;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002398 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002399 }
2400#endif
2401
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002402 Framebuffer & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002403 {
2404 m_framebuffer = VK_NULL_HANDLE;
2405 return *this;
2406 }
2407
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002408 bool operator==( Framebuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002409 {
2410 return m_framebuffer == rhs.m_framebuffer;
2411 }
2412
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002413 bool operator!=(Framebuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002414 {
2415 return m_framebuffer != rhs.m_framebuffer;
2416 }
2417
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002418 bool operator<(Framebuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002419 {
2420 return m_framebuffer < rhs.m_framebuffer;
2421 }
2422
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002423
2424
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002425 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkFramebuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002426 {
2427 return m_framebuffer;
2428 }
2429
2430 explicit operator bool() const
2431 {
2432 return m_framebuffer != VK_NULL_HANDLE;
2433 }
2434
2435 bool operator!() const
2436 {
2437 return m_framebuffer == VK_NULL_HANDLE;
2438 }
2439
2440 private:
2441 VkFramebuffer m_framebuffer;
2442 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002443
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002444 static_assert( sizeof( Framebuffer ) == sizeof( VkFramebuffer ), "handle and wrapper have different size!" );
2445
2446 class RenderPass
2447 {
2448 public:
2449 RenderPass()
2450 : m_renderPass(VK_NULL_HANDLE)
2451 {}
2452
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002453 RenderPass( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002454 : m_renderPass(VK_NULL_HANDLE)
2455 {}
2456
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002457 VULKAN_HPP_TYPESAFE_EXPLICIT RenderPass( VkRenderPass renderPass )
2458 : m_renderPass( renderPass )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002459 {}
2460
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002461#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002462 RenderPass & operator=(VkRenderPass renderPass)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002463 {
2464 m_renderPass = renderPass;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002465 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002466 }
2467#endif
2468
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002469 RenderPass & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002470 {
2471 m_renderPass = VK_NULL_HANDLE;
2472 return *this;
2473 }
2474
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002475 bool operator==( RenderPass const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002476 {
2477 return m_renderPass == rhs.m_renderPass;
2478 }
2479
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002480 bool operator!=(RenderPass const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002481 {
2482 return m_renderPass != rhs.m_renderPass;
2483 }
2484
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002485 bool operator<(RenderPass const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002486 {
2487 return m_renderPass < rhs.m_renderPass;
2488 }
2489
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002490
2491
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002492 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkRenderPass() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002493 {
2494 return m_renderPass;
2495 }
2496
2497 explicit operator bool() const
2498 {
2499 return m_renderPass != VK_NULL_HANDLE;
2500 }
2501
2502 bool operator!() const
2503 {
2504 return m_renderPass == VK_NULL_HANDLE;
2505 }
2506
2507 private:
2508 VkRenderPass m_renderPass;
2509 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002510
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002511 static_assert( sizeof( RenderPass ) == sizeof( VkRenderPass ), "handle and wrapper have different size!" );
2512
2513 class PipelineCache
2514 {
2515 public:
2516 PipelineCache()
2517 : m_pipelineCache(VK_NULL_HANDLE)
2518 {}
2519
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002520 PipelineCache( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002521 : m_pipelineCache(VK_NULL_HANDLE)
2522 {}
2523
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002524 VULKAN_HPP_TYPESAFE_EXPLICIT PipelineCache( VkPipelineCache pipelineCache )
2525 : m_pipelineCache( pipelineCache )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002526 {}
2527
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002528#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002529 PipelineCache & operator=(VkPipelineCache pipelineCache)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002530 {
2531 m_pipelineCache = pipelineCache;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002532 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002533 }
2534#endif
2535
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002536 PipelineCache & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002537 {
2538 m_pipelineCache = VK_NULL_HANDLE;
2539 return *this;
2540 }
2541
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002542 bool operator==( PipelineCache const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002543 {
2544 return m_pipelineCache == rhs.m_pipelineCache;
2545 }
2546
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002547 bool operator!=(PipelineCache const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002548 {
2549 return m_pipelineCache != rhs.m_pipelineCache;
2550 }
2551
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002552 bool operator<(PipelineCache const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002553 {
2554 return m_pipelineCache < rhs.m_pipelineCache;
2555 }
2556
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002557
2558
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002559 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPipelineCache() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002560 {
2561 return m_pipelineCache;
2562 }
2563
2564 explicit operator bool() const
2565 {
2566 return m_pipelineCache != VK_NULL_HANDLE;
2567 }
2568
2569 bool operator!() const
2570 {
2571 return m_pipelineCache == VK_NULL_HANDLE;
2572 }
2573
2574 private:
2575 VkPipelineCache m_pipelineCache;
2576 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002577
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002578 static_assert( sizeof( PipelineCache ) == sizeof( VkPipelineCache ), "handle and wrapper have different size!" );
2579
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002580 class ObjectTableNVX
2581 {
2582 public:
2583 ObjectTableNVX()
2584 : m_objectTableNVX(VK_NULL_HANDLE)
2585 {}
2586
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002587 ObjectTableNVX( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002588 : m_objectTableNVX(VK_NULL_HANDLE)
2589 {}
2590
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002591 VULKAN_HPP_TYPESAFE_EXPLICIT ObjectTableNVX( VkObjectTableNVX objectTableNVX )
2592 : m_objectTableNVX( objectTableNVX )
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002593 {}
2594
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002595#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002596 ObjectTableNVX & operator=(VkObjectTableNVX objectTableNVX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002597 {
2598 m_objectTableNVX = objectTableNVX;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002599 return *this;
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002600 }
2601#endif
2602
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002603 ObjectTableNVX & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002604 {
2605 m_objectTableNVX = VK_NULL_HANDLE;
2606 return *this;
2607 }
2608
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002609 bool operator==( ObjectTableNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002610 {
2611 return m_objectTableNVX == rhs.m_objectTableNVX;
2612 }
2613
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002614 bool operator!=(ObjectTableNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002615 {
2616 return m_objectTableNVX != rhs.m_objectTableNVX;
2617 }
2618
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002619 bool operator<(ObjectTableNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002620 {
2621 return m_objectTableNVX < rhs.m_objectTableNVX;
2622 }
2623
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002624
2625
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002626 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkObjectTableNVX() const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002627 {
2628 return m_objectTableNVX;
2629 }
2630
2631 explicit operator bool() const
2632 {
2633 return m_objectTableNVX != VK_NULL_HANDLE;
2634 }
2635
2636 bool operator!() const
2637 {
2638 return m_objectTableNVX == VK_NULL_HANDLE;
2639 }
2640
2641 private:
2642 VkObjectTableNVX m_objectTableNVX;
2643 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002644
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002645 static_assert( sizeof( ObjectTableNVX ) == sizeof( VkObjectTableNVX ), "handle and wrapper have different size!" );
2646
2647 class IndirectCommandsLayoutNVX
2648 {
2649 public:
2650 IndirectCommandsLayoutNVX()
2651 : m_indirectCommandsLayoutNVX(VK_NULL_HANDLE)
2652 {}
2653
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002654 IndirectCommandsLayoutNVX( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002655 : m_indirectCommandsLayoutNVX(VK_NULL_HANDLE)
2656 {}
2657
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002658 VULKAN_HPP_TYPESAFE_EXPLICIT IndirectCommandsLayoutNVX( VkIndirectCommandsLayoutNVX indirectCommandsLayoutNVX )
2659 : m_indirectCommandsLayoutNVX( indirectCommandsLayoutNVX )
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002660 {}
2661
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002662#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002663 IndirectCommandsLayoutNVX & operator=(VkIndirectCommandsLayoutNVX indirectCommandsLayoutNVX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002664 {
2665 m_indirectCommandsLayoutNVX = indirectCommandsLayoutNVX;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002666 return *this;
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002667 }
2668#endif
2669
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002670 IndirectCommandsLayoutNVX & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002671 {
2672 m_indirectCommandsLayoutNVX = VK_NULL_HANDLE;
2673 return *this;
2674 }
2675
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002676 bool operator==( IndirectCommandsLayoutNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002677 {
2678 return m_indirectCommandsLayoutNVX == rhs.m_indirectCommandsLayoutNVX;
2679 }
2680
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002681 bool operator!=(IndirectCommandsLayoutNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002682 {
2683 return m_indirectCommandsLayoutNVX != rhs.m_indirectCommandsLayoutNVX;
2684 }
2685
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002686 bool operator<(IndirectCommandsLayoutNVX const & rhs ) const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002687 {
2688 return m_indirectCommandsLayoutNVX < rhs.m_indirectCommandsLayoutNVX;
2689 }
2690
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002691
2692
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002693 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkIndirectCommandsLayoutNVX() const
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002694 {
2695 return m_indirectCommandsLayoutNVX;
2696 }
2697
2698 explicit operator bool() const
2699 {
2700 return m_indirectCommandsLayoutNVX != VK_NULL_HANDLE;
2701 }
2702
2703 bool operator!() const
2704 {
2705 return m_indirectCommandsLayoutNVX == VK_NULL_HANDLE;
2706 }
2707
2708 private:
2709 VkIndirectCommandsLayoutNVX m_indirectCommandsLayoutNVX;
2710 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002711
Mark Lobodzinski2d589822016-12-12 09:44:34 -07002712 static_assert( sizeof( IndirectCommandsLayoutNVX ) == sizeof( VkIndirectCommandsLayoutNVX ), "handle and wrapper have different size!" );
2713
Mark Young0f183a82017-02-28 09:58:04 -07002714 class DescriptorUpdateTemplateKHR
2715 {
2716 public:
2717 DescriptorUpdateTemplateKHR()
2718 : m_descriptorUpdateTemplateKHR(VK_NULL_HANDLE)
2719 {}
2720
2721 DescriptorUpdateTemplateKHR( std::nullptr_t )
2722 : m_descriptorUpdateTemplateKHR(VK_NULL_HANDLE)
2723 {}
2724
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002725 VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorUpdateTemplateKHR( VkDescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR )
2726 : m_descriptorUpdateTemplateKHR( descriptorUpdateTemplateKHR )
Mark Young0f183a82017-02-28 09:58:04 -07002727 {}
2728
2729#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002730 DescriptorUpdateTemplateKHR & operator=(VkDescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR)
Mark Young0f183a82017-02-28 09:58:04 -07002731 {
2732 m_descriptorUpdateTemplateKHR = descriptorUpdateTemplateKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002733 return *this;
Mark Young0f183a82017-02-28 09:58:04 -07002734 }
2735#endif
2736
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002737 DescriptorUpdateTemplateKHR & operator=( std::nullptr_t )
Mark Young0f183a82017-02-28 09:58:04 -07002738 {
2739 m_descriptorUpdateTemplateKHR = VK_NULL_HANDLE;
2740 return *this;
2741 }
2742
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002743 bool operator==( DescriptorUpdateTemplateKHR const & rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -07002744 {
2745 return m_descriptorUpdateTemplateKHR == rhs.m_descriptorUpdateTemplateKHR;
2746 }
2747
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002748 bool operator!=(DescriptorUpdateTemplateKHR const & rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -07002749 {
2750 return m_descriptorUpdateTemplateKHR != rhs.m_descriptorUpdateTemplateKHR;
2751 }
2752
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002753 bool operator<(DescriptorUpdateTemplateKHR const & rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -07002754 {
2755 return m_descriptorUpdateTemplateKHR < rhs.m_descriptorUpdateTemplateKHR;
2756 }
2757
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002758
2759
Mark Young0f183a82017-02-28 09:58:04 -07002760 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDescriptorUpdateTemplateKHR() const
2761 {
2762 return m_descriptorUpdateTemplateKHR;
2763 }
2764
2765 explicit operator bool() const
2766 {
2767 return m_descriptorUpdateTemplateKHR != VK_NULL_HANDLE;
2768 }
2769
2770 bool operator!() const
2771 {
2772 return m_descriptorUpdateTemplateKHR == VK_NULL_HANDLE;
2773 }
2774
2775 private:
2776 VkDescriptorUpdateTemplateKHR m_descriptorUpdateTemplateKHR;
2777 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002778
Mark Young0f183a82017-02-28 09:58:04 -07002779 static_assert( sizeof( DescriptorUpdateTemplateKHR ) == sizeof( VkDescriptorUpdateTemplateKHR ), "handle and wrapper have different size!" );
2780
Lenny Komowb79f04a2017-09-18 17:07:00 -06002781 class SamplerYcbcrConversionKHR
2782 {
2783 public:
2784 SamplerYcbcrConversionKHR()
2785 : m_samplerYcbcrConversionKHR(VK_NULL_HANDLE)
2786 {}
2787
2788 SamplerYcbcrConversionKHR( std::nullptr_t )
2789 : m_samplerYcbcrConversionKHR(VK_NULL_HANDLE)
2790 {}
2791
2792 VULKAN_HPP_TYPESAFE_EXPLICIT SamplerYcbcrConversionKHR( VkSamplerYcbcrConversionKHR samplerYcbcrConversionKHR )
2793 : m_samplerYcbcrConversionKHR( samplerYcbcrConversionKHR )
2794 {}
2795
2796#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
2797 SamplerYcbcrConversionKHR & operator=(VkSamplerYcbcrConversionKHR samplerYcbcrConversionKHR)
2798 {
2799 m_samplerYcbcrConversionKHR = samplerYcbcrConversionKHR;
2800 return *this;
2801 }
2802#endif
2803
2804 SamplerYcbcrConversionKHR & operator=( std::nullptr_t )
2805 {
2806 m_samplerYcbcrConversionKHR = VK_NULL_HANDLE;
2807 return *this;
2808 }
2809
2810 bool operator==( SamplerYcbcrConversionKHR const & rhs ) const
2811 {
2812 return m_samplerYcbcrConversionKHR == rhs.m_samplerYcbcrConversionKHR;
2813 }
2814
2815 bool operator!=(SamplerYcbcrConversionKHR const & rhs ) const
2816 {
2817 return m_samplerYcbcrConversionKHR != rhs.m_samplerYcbcrConversionKHR;
2818 }
2819
2820 bool operator<(SamplerYcbcrConversionKHR const & rhs ) const
2821 {
2822 return m_samplerYcbcrConversionKHR < rhs.m_samplerYcbcrConversionKHR;
2823 }
2824
2825
2826
2827 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSamplerYcbcrConversionKHR() const
2828 {
2829 return m_samplerYcbcrConversionKHR;
2830 }
2831
2832 explicit operator bool() const
2833 {
2834 return m_samplerYcbcrConversionKHR != VK_NULL_HANDLE;
2835 }
2836
2837 bool operator!() const
2838 {
2839 return m_samplerYcbcrConversionKHR == VK_NULL_HANDLE;
2840 }
2841
2842 private:
2843 VkSamplerYcbcrConversionKHR m_samplerYcbcrConversionKHR;
2844 };
2845
2846 static_assert( sizeof( SamplerYcbcrConversionKHR ) == sizeof( VkSamplerYcbcrConversionKHR ), "handle and wrapper have different size!" );
2847
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06002848 class ValidationCacheEXT
2849 {
2850 public:
2851 ValidationCacheEXT()
2852 : m_validationCacheEXT(VK_NULL_HANDLE)
2853 {}
2854
2855 ValidationCacheEXT( std::nullptr_t )
2856 : m_validationCacheEXT(VK_NULL_HANDLE)
2857 {}
2858
2859 VULKAN_HPP_TYPESAFE_EXPLICIT ValidationCacheEXT( VkValidationCacheEXT validationCacheEXT )
2860 : m_validationCacheEXT( validationCacheEXT )
2861 {}
2862
2863#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
2864 ValidationCacheEXT & operator=(VkValidationCacheEXT validationCacheEXT)
2865 {
2866 m_validationCacheEXT = validationCacheEXT;
2867 return *this;
2868 }
2869#endif
2870
2871 ValidationCacheEXT & operator=( std::nullptr_t )
2872 {
2873 m_validationCacheEXT = VK_NULL_HANDLE;
2874 return *this;
2875 }
2876
2877 bool operator==( ValidationCacheEXT const & rhs ) const
2878 {
2879 return m_validationCacheEXT == rhs.m_validationCacheEXT;
2880 }
2881
2882 bool operator!=(ValidationCacheEXT const & rhs ) const
2883 {
2884 return m_validationCacheEXT != rhs.m_validationCacheEXT;
2885 }
2886
2887 bool operator<(ValidationCacheEXT const & rhs ) const
2888 {
2889 return m_validationCacheEXT < rhs.m_validationCacheEXT;
2890 }
2891
2892
2893
2894 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkValidationCacheEXT() const
2895 {
2896 return m_validationCacheEXT;
2897 }
2898
2899 explicit operator bool() const
2900 {
2901 return m_validationCacheEXT != VK_NULL_HANDLE;
2902 }
2903
2904 bool operator!() const
2905 {
2906 return m_validationCacheEXT == VK_NULL_HANDLE;
2907 }
2908
2909 private:
2910 VkValidationCacheEXT m_validationCacheEXT;
2911 };
2912
2913 static_assert( sizeof( ValidationCacheEXT ) == sizeof( VkValidationCacheEXT ), "handle and wrapper have different size!" );
2914
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002915 class DisplayKHR
2916 {
2917 public:
2918 DisplayKHR()
2919 : m_displayKHR(VK_NULL_HANDLE)
2920 {}
2921
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002922 DisplayKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002923 : m_displayKHR(VK_NULL_HANDLE)
2924 {}
2925
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002926 VULKAN_HPP_TYPESAFE_EXPLICIT DisplayKHR( VkDisplayKHR displayKHR )
2927 : m_displayKHR( displayKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002928 {}
2929
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002930#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002931 DisplayKHR & operator=(VkDisplayKHR displayKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002932 {
2933 m_displayKHR = displayKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002934 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002935 }
2936#endif
2937
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002938 DisplayKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002939 {
2940 m_displayKHR = VK_NULL_HANDLE;
2941 return *this;
2942 }
2943
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002944 bool operator==( DisplayKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002945 {
2946 return m_displayKHR == rhs.m_displayKHR;
2947 }
2948
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002949 bool operator!=(DisplayKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002950 {
2951 return m_displayKHR != rhs.m_displayKHR;
2952 }
2953
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002954 bool operator<(DisplayKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002955 {
2956 return m_displayKHR < rhs.m_displayKHR;
2957 }
2958
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002959
2960
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002961 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDisplayKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002962 {
2963 return m_displayKHR;
2964 }
2965
2966 explicit operator bool() const
2967 {
2968 return m_displayKHR != VK_NULL_HANDLE;
2969 }
2970
2971 bool operator!() const
2972 {
2973 return m_displayKHR == VK_NULL_HANDLE;
2974 }
2975
2976 private:
2977 VkDisplayKHR m_displayKHR;
2978 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002979
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002980 static_assert( sizeof( DisplayKHR ) == sizeof( VkDisplayKHR ), "handle and wrapper have different size!" );
2981
2982 class DisplayModeKHR
2983 {
2984 public:
2985 DisplayModeKHR()
2986 : m_displayModeKHR(VK_NULL_HANDLE)
2987 {}
2988
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002989 DisplayModeKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002990 : m_displayModeKHR(VK_NULL_HANDLE)
2991 {}
2992
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002993 VULKAN_HPP_TYPESAFE_EXPLICIT DisplayModeKHR( VkDisplayModeKHR displayModeKHR )
2994 : m_displayModeKHR( displayModeKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002995 {}
2996
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002997#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002998 DisplayModeKHR & operator=(VkDisplayModeKHR displayModeKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002999 {
3000 m_displayModeKHR = displayModeKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003001 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003002 }
3003#endif
3004
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003005 DisplayModeKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003006 {
3007 m_displayModeKHR = VK_NULL_HANDLE;
3008 return *this;
3009 }
3010
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003011 bool operator==( DisplayModeKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003012 {
3013 return m_displayModeKHR == rhs.m_displayModeKHR;
3014 }
3015
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003016 bool operator!=(DisplayModeKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003017 {
3018 return m_displayModeKHR != rhs.m_displayModeKHR;
3019 }
3020
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003021 bool operator<(DisplayModeKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003022 {
3023 return m_displayModeKHR < rhs.m_displayModeKHR;
3024 }
3025
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003026
3027
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003028 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDisplayModeKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003029 {
3030 return m_displayModeKHR;
3031 }
3032
3033 explicit operator bool() const
3034 {
3035 return m_displayModeKHR != VK_NULL_HANDLE;
3036 }
3037
3038 bool operator!() const
3039 {
3040 return m_displayModeKHR == VK_NULL_HANDLE;
3041 }
3042
3043 private:
3044 VkDisplayModeKHR m_displayModeKHR;
3045 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003046
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003047 static_assert( sizeof( DisplayModeKHR ) == sizeof( VkDisplayModeKHR ), "handle and wrapper have different size!" );
3048
3049 class SurfaceKHR
3050 {
3051 public:
3052 SurfaceKHR()
3053 : m_surfaceKHR(VK_NULL_HANDLE)
3054 {}
3055
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07003056 SurfaceKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003057 : m_surfaceKHR(VK_NULL_HANDLE)
3058 {}
3059
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003060 VULKAN_HPP_TYPESAFE_EXPLICIT SurfaceKHR( VkSurfaceKHR surfaceKHR )
3061 : m_surfaceKHR( surfaceKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003062 {}
3063
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003064#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003065 SurfaceKHR & operator=(VkSurfaceKHR surfaceKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003066 {
3067 m_surfaceKHR = surfaceKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003068 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003069 }
3070#endif
3071
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003072 SurfaceKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003073 {
3074 m_surfaceKHR = VK_NULL_HANDLE;
3075 return *this;
3076 }
3077
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003078 bool operator==( SurfaceKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003079 {
3080 return m_surfaceKHR == rhs.m_surfaceKHR;
3081 }
3082
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003083 bool operator!=(SurfaceKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003084 {
3085 return m_surfaceKHR != rhs.m_surfaceKHR;
3086 }
3087
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003088 bool operator<(SurfaceKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003089 {
3090 return m_surfaceKHR < rhs.m_surfaceKHR;
3091 }
3092
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003093
3094
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003095 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSurfaceKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003096 {
3097 return m_surfaceKHR;
3098 }
3099
3100 explicit operator bool() const
3101 {
3102 return m_surfaceKHR != VK_NULL_HANDLE;
3103 }
3104
3105 bool operator!() const
3106 {
3107 return m_surfaceKHR == VK_NULL_HANDLE;
3108 }
3109
3110 private:
3111 VkSurfaceKHR m_surfaceKHR;
3112 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003113
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003114 static_assert( sizeof( SurfaceKHR ) == sizeof( VkSurfaceKHR ), "handle and wrapper have different size!" );
3115
3116 class SwapchainKHR
3117 {
3118 public:
3119 SwapchainKHR()
3120 : m_swapchainKHR(VK_NULL_HANDLE)
3121 {}
3122
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07003123 SwapchainKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003124 : m_swapchainKHR(VK_NULL_HANDLE)
3125 {}
3126
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003127 VULKAN_HPP_TYPESAFE_EXPLICIT SwapchainKHR( VkSwapchainKHR swapchainKHR )
3128 : m_swapchainKHR( swapchainKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003129 {}
3130
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003131#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003132 SwapchainKHR & operator=(VkSwapchainKHR swapchainKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003133 {
3134 m_swapchainKHR = swapchainKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003135 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003136 }
3137#endif
3138
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003139 SwapchainKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003140 {
3141 m_swapchainKHR = VK_NULL_HANDLE;
3142 return *this;
3143 }
3144
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003145 bool operator==( SwapchainKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003146 {
3147 return m_swapchainKHR == rhs.m_swapchainKHR;
3148 }
3149
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003150 bool operator!=(SwapchainKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003151 {
3152 return m_swapchainKHR != rhs.m_swapchainKHR;
3153 }
3154
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003155 bool operator<(SwapchainKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003156 {
3157 return m_swapchainKHR < rhs.m_swapchainKHR;
3158 }
3159
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003160
3161
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003162 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSwapchainKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003163 {
3164 return m_swapchainKHR;
3165 }
3166
3167 explicit operator bool() const
3168 {
3169 return m_swapchainKHR != VK_NULL_HANDLE;
3170 }
3171
3172 bool operator!() const
3173 {
3174 return m_swapchainKHR == VK_NULL_HANDLE;
3175 }
3176
3177 private:
3178 VkSwapchainKHR m_swapchainKHR;
3179 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003180
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003181 static_assert( sizeof( SwapchainKHR ) == sizeof( VkSwapchainKHR ), "handle and wrapper have different size!" );
3182
3183 class DebugReportCallbackEXT
3184 {
3185 public:
3186 DebugReportCallbackEXT()
3187 : m_debugReportCallbackEXT(VK_NULL_HANDLE)
3188 {}
3189
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07003190 DebugReportCallbackEXT( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003191 : m_debugReportCallbackEXT(VK_NULL_HANDLE)
3192 {}
3193
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003194 VULKAN_HPP_TYPESAFE_EXPLICIT DebugReportCallbackEXT( VkDebugReportCallbackEXT debugReportCallbackEXT )
3195 : m_debugReportCallbackEXT( debugReportCallbackEXT )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003196 {}
3197
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003198#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003199 DebugReportCallbackEXT & operator=(VkDebugReportCallbackEXT debugReportCallbackEXT)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003200 {
3201 m_debugReportCallbackEXT = debugReportCallbackEXT;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003202 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003203 }
3204#endif
3205
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003206 DebugReportCallbackEXT & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003207 {
3208 m_debugReportCallbackEXT = VK_NULL_HANDLE;
3209 return *this;
3210 }
3211
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003212 bool operator==( DebugReportCallbackEXT const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003213 {
3214 return m_debugReportCallbackEXT == rhs.m_debugReportCallbackEXT;
3215 }
3216
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003217 bool operator!=(DebugReportCallbackEXT const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003218 {
3219 return m_debugReportCallbackEXT != rhs.m_debugReportCallbackEXT;
3220 }
3221
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003222 bool operator<(DebugReportCallbackEXT const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003223 {
3224 return m_debugReportCallbackEXT < rhs.m_debugReportCallbackEXT;
3225 }
3226
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003227
3228
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003229 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDebugReportCallbackEXT() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003230 {
3231 return m_debugReportCallbackEXT;
3232 }
3233
3234 explicit operator bool() const
3235 {
3236 return m_debugReportCallbackEXT != VK_NULL_HANDLE;
3237 }
3238
3239 bool operator!() const
3240 {
3241 return m_debugReportCallbackEXT == VK_NULL_HANDLE;
3242 }
3243
3244 private:
3245 VkDebugReportCallbackEXT m_debugReportCallbackEXT;
3246 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003247
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003248 static_assert( sizeof( DebugReportCallbackEXT ) == sizeof( VkDebugReportCallbackEXT ), "handle and wrapper have different size!" );
3249
3250 struct Offset2D
3251 {
3252 Offset2D( int32_t x_ = 0, int32_t y_ = 0 )
3253 : x( x_ )
3254 , y( y_ )
3255 {
3256 }
3257
3258 Offset2D( VkOffset2D const & rhs )
3259 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003260 memcpy( this, &rhs, sizeof( Offset2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003261 }
3262
3263 Offset2D& operator=( VkOffset2D const & rhs )
3264 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003265 memcpy( this, &rhs, sizeof( Offset2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003266 return *this;
3267 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003268 Offset2D& setX( int32_t x_ )
3269 {
3270 x = x_;
3271 return *this;
3272 }
3273
3274 Offset2D& setY( int32_t y_ )
3275 {
3276 y = y_;
3277 return *this;
3278 }
3279
3280 operator const VkOffset2D&() const
3281 {
3282 return *reinterpret_cast<const VkOffset2D*>(this);
3283 }
3284
3285 bool operator==( Offset2D const& rhs ) const
3286 {
3287 return ( x == rhs.x )
3288 && ( y == rhs.y );
3289 }
3290
3291 bool operator!=( Offset2D const& rhs ) const
3292 {
3293 return !operator==( rhs );
3294 }
3295
3296 int32_t x;
3297 int32_t y;
3298 };
3299 static_assert( sizeof( Offset2D ) == sizeof( VkOffset2D ), "struct and wrapper have different size!" );
3300
3301 struct Offset3D
3302 {
3303 Offset3D( int32_t x_ = 0, int32_t y_ = 0, int32_t z_ = 0 )
3304 : x( x_ )
3305 , y( y_ )
3306 , z( z_ )
3307 {
3308 }
3309
3310 Offset3D( VkOffset3D const & rhs )
3311 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003312 memcpy( this, &rhs, sizeof( Offset3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003313 }
3314
3315 Offset3D& operator=( VkOffset3D const & rhs )
3316 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003317 memcpy( this, &rhs, sizeof( Offset3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003318 return *this;
3319 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003320 Offset3D& setX( int32_t x_ )
3321 {
3322 x = x_;
3323 return *this;
3324 }
3325
3326 Offset3D& setY( int32_t y_ )
3327 {
3328 y = y_;
3329 return *this;
3330 }
3331
3332 Offset3D& setZ( int32_t z_ )
3333 {
3334 z = z_;
3335 return *this;
3336 }
3337
3338 operator const VkOffset3D&() const
3339 {
3340 return *reinterpret_cast<const VkOffset3D*>(this);
3341 }
3342
3343 bool operator==( Offset3D const& rhs ) const
3344 {
3345 return ( x == rhs.x )
3346 && ( y == rhs.y )
3347 && ( z == rhs.z );
3348 }
3349
3350 bool operator!=( Offset3D const& rhs ) const
3351 {
3352 return !operator==( rhs );
3353 }
3354
3355 int32_t x;
3356 int32_t y;
3357 int32_t z;
3358 };
3359 static_assert( sizeof( Offset3D ) == sizeof( VkOffset3D ), "struct and wrapper have different size!" );
3360
3361 struct Extent2D
3362 {
3363 Extent2D( uint32_t width_ = 0, uint32_t height_ = 0 )
3364 : width( width_ )
3365 , height( height_ )
3366 {
3367 }
3368
3369 Extent2D( VkExtent2D const & rhs )
3370 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003371 memcpy( this, &rhs, sizeof( Extent2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003372 }
3373
3374 Extent2D& operator=( VkExtent2D const & rhs )
3375 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003376 memcpy( this, &rhs, sizeof( Extent2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003377 return *this;
3378 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003379 Extent2D& setWidth( uint32_t width_ )
3380 {
3381 width = width_;
3382 return *this;
3383 }
3384
3385 Extent2D& setHeight( uint32_t height_ )
3386 {
3387 height = height_;
3388 return *this;
3389 }
3390
3391 operator const VkExtent2D&() const
3392 {
3393 return *reinterpret_cast<const VkExtent2D*>(this);
3394 }
3395
3396 bool operator==( Extent2D const& rhs ) const
3397 {
3398 return ( width == rhs.width )
3399 && ( height == rhs.height );
3400 }
3401
3402 bool operator!=( Extent2D const& rhs ) const
3403 {
3404 return !operator==( rhs );
3405 }
3406
3407 uint32_t width;
3408 uint32_t height;
3409 };
3410 static_assert( sizeof( Extent2D ) == sizeof( VkExtent2D ), "struct and wrapper have different size!" );
3411
3412 struct Extent3D
3413 {
3414 Extent3D( uint32_t width_ = 0, uint32_t height_ = 0, uint32_t depth_ = 0 )
3415 : width( width_ )
3416 , height( height_ )
3417 , depth( depth_ )
3418 {
3419 }
3420
3421 Extent3D( VkExtent3D const & rhs )
3422 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003423 memcpy( this, &rhs, sizeof( Extent3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003424 }
3425
3426 Extent3D& operator=( VkExtent3D const & rhs )
3427 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003428 memcpy( this, &rhs, sizeof( Extent3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003429 return *this;
3430 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003431 Extent3D& setWidth( uint32_t width_ )
3432 {
3433 width = width_;
3434 return *this;
3435 }
3436
3437 Extent3D& setHeight( uint32_t height_ )
3438 {
3439 height = height_;
3440 return *this;
3441 }
3442
3443 Extent3D& setDepth( uint32_t depth_ )
3444 {
3445 depth = depth_;
3446 return *this;
3447 }
3448
3449 operator const VkExtent3D&() const
3450 {
3451 return *reinterpret_cast<const VkExtent3D*>(this);
3452 }
3453
3454 bool operator==( Extent3D const& rhs ) const
3455 {
3456 return ( width == rhs.width )
3457 && ( height == rhs.height )
3458 && ( depth == rhs.depth );
3459 }
3460
3461 bool operator!=( Extent3D const& rhs ) const
3462 {
3463 return !operator==( rhs );
3464 }
3465
3466 uint32_t width;
3467 uint32_t height;
3468 uint32_t depth;
3469 };
3470 static_assert( sizeof( Extent3D ) == sizeof( VkExtent3D ), "struct and wrapper have different size!" );
3471
3472 struct Viewport
3473 {
3474 Viewport( float x_ = 0, float y_ = 0, float width_ = 0, float height_ = 0, float minDepth_ = 0, float maxDepth_ = 0 )
3475 : x( x_ )
3476 , y( y_ )
3477 , width( width_ )
3478 , height( height_ )
3479 , minDepth( minDepth_ )
3480 , maxDepth( maxDepth_ )
3481 {
3482 }
3483
3484 Viewport( VkViewport const & rhs )
3485 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003486 memcpy( this, &rhs, sizeof( Viewport ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003487 }
3488
3489 Viewport& operator=( VkViewport const & rhs )
3490 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003491 memcpy( this, &rhs, sizeof( Viewport ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003492 return *this;
3493 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003494 Viewport& setX( float x_ )
3495 {
3496 x = x_;
3497 return *this;
3498 }
3499
3500 Viewport& setY( float y_ )
3501 {
3502 y = y_;
3503 return *this;
3504 }
3505
3506 Viewport& setWidth( float width_ )
3507 {
3508 width = width_;
3509 return *this;
3510 }
3511
3512 Viewport& setHeight( float height_ )
3513 {
3514 height = height_;
3515 return *this;
3516 }
3517
3518 Viewport& setMinDepth( float minDepth_ )
3519 {
3520 minDepth = minDepth_;
3521 return *this;
3522 }
3523
3524 Viewport& setMaxDepth( float maxDepth_ )
3525 {
3526 maxDepth = maxDepth_;
3527 return *this;
3528 }
3529
3530 operator const VkViewport&() const
3531 {
3532 return *reinterpret_cast<const VkViewport*>(this);
3533 }
3534
3535 bool operator==( Viewport const& rhs ) const
3536 {
3537 return ( x == rhs.x )
3538 && ( y == rhs.y )
3539 && ( width == rhs.width )
3540 && ( height == rhs.height )
3541 && ( minDepth == rhs.minDepth )
3542 && ( maxDepth == rhs.maxDepth );
3543 }
3544
3545 bool operator!=( Viewport const& rhs ) const
3546 {
3547 return !operator==( rhs );
3548 }
3549
3550 float x;
3551 float y;
3552 float width;
3553 float height;
3554 float minDepth;
3555 float maxDepth;
3556 };
3557 static_assert( sizeof( Viewport ) == sizeof( VkViewport ), "struct and wrapper have different size!" );
3558
3559 struct Rect2D
3560 {
3561 Rect2D( Offset2D offset_ = Offset2D(), Extent2D extent_ = Extent2D() )
3562 : offset( offset_ )
3563 , extent( extent_ )
3564 {
3565 }
3566
3567 Rect2D( VkRect2D const & rhs )
3568 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003569 memcpy( this, &rhs, sizeof( Rect2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003570 }
3571
3572 Rect2D& operator=( VkRect2D const & rhs )
3573 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003574 memcpy( this, &rhs, sizeof( Rect2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003575 return *this;
3576 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003577 Rect2D& setOffset( Offset2D offset_ )
3578 {
3579 offset = offset_;
3580 return *this;
3581 }
3582
3583 Rect2D& setExtent( Extent2D extent_ )
3584 {
3585 extent = extent_;
3586 return *this;
3587 }
3588
3589 operator const VkRect2D&() const
3590 {
3591 return *reinterpret_cast<const VkRect2D*>(this);
3592 }
3593
3594 bool operator==( Rect2D const& rhs ) const
3595 {
3596 return ( offset == rhs.offset )
3597 && ( extent == rhs.extent );
3598 }
3599
3600 bool operator!=( Rect2D const& rhs ) const
3601 {
3602 return !operator==( rhs );
3603 }
3604
3605 Offset2D offset;
3606 Extent2D extent;
3607 };
3608 static_assert( sizeof( Rect2D ) == sizeof( VkRect2D ), "struct and wrapper have different size!" );
3609
3610 struct ClearRect
3611 {
3612 ClearRect( Rect2D rect_ = Rect2D(), uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
3613 : rect( rect_ )
3614 , baseArrayLayer( baseArrayLayer_ )
3615 , layerCount( layerCount_ )
3616 {
3617 }
3618
3619 ClearRect( VkClearRect const & rhs )
3620 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003621 memcpy( this, &rhs, sizeof( ClearRect ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003622 }
3623
3624 ClearRect& operator=( VkClearRect const & rhs )
3625 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003626 memcpy( this, &rhs, sizeof( ClearRect ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003627 return *this;
3628 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003629 ClearRect& setRect( Rect2D rect_ )
3630 {
3631 rect = rect_;
3632 return *this;
3633 }
3634
3635 ClearRect& setBaseArrayLayer( uint32_t baseArrayLayer_ )
3636 {
3637 baseArrayLayer = baseArrayLayer_;
3638 return *this;
3639 }
3640
3641 ClearRect& setLayerCount( uint32_t layerCount_ )
3642 {
3643 layerCount = layerCount_;
3644 return *this;
3645 }
3646
3647 operator const VkClearRect&() const
3648 {
3649 return *reinterpret_cast<const VkClearRect*>(this);
3650 }
3651
3652 bool operator==( ClearRect const& rhs ) const
3653 {
3654 return ( rect == rhs.rect )
3655 && ( baseArrayLayer == rhs.baseArrayLayer )
3656 && ( layerCount == rhs.layerCount );
3657 }
3658
3659 bool operator!=( ClearRect const& rhs ) const
3660 {
3661 return !operator==( rhs );
3662 }
3663
3664 Rect2D rect;
3665 uint32_t baseArrayLayer;
3666 uint32_t layerCount;
3667 };
3668 static_assert( sizeof( ClearRect ) == sizeof( VkClearRect ), "struct and wrapper have different size!" );
3669
3670 struct ExtensionProperties
3671 {
3672 operator const VkExtensionProperties&() const
3673 {
3674 return *reinterpret_cast<const VkExtensionProperties*>(this);
3675 }
3676
3677 bool operator==( ExtensionProperties const& rhs ) const
3678 {
3679 return ( memcmp( extensionName, rhs.extensionName, VK_MAX_EXTENSION_NAME_SIZE * sizeof( char ) ) == 0 )
3680 && ( specVersion == rhs.specVersion );
3681 }
3682
3683 bool operator!=( ExtensionProperties const& rhs ) const
3684 {
3685 return !operator==( rhs );
3686 }
3687
3688 char extensionName[VK_MAX_EXTENSION_NAME_SIZE];
3689 uint32_t specVersion;
3690 };
3691 static_assert( sizeof( ExtensionProperties ) == sizeof( VkExtensionProperties ), "struct and wrapper have different size!" );
3692
3693 struct LayerProperties
3694 {
3695 operator const VkLayerProperties&() const
3696 {
3697 return *reinterpret_cast<const VkLayerProperties*>(this);
3698 }
3699
3700 bool operator==( LayerProperties const& rhs ) const
3701 {
3702 return ( memcmp( layerName, rhs.layerName, VK_MAX_EXTENSION_NAME_SIZE * sizeof( char ) ) == 0 )
3703 && ( specVersion == rhs.specVersion )
3704 && ( implementationVersion == rhs.implementationVersion )
3705 && ( memcmp( description, rhs.description, VK_MAX_DESCRIPTION_SIZE * sizeof( char ) ) == 0 );
3706 }
3707
3708 bool operator!=( LayerProperties const& rhs ) const
3709 {
3710 return !operator==( rhs );
3711 }
3712
3713 char layerName[VK_MAX_EXTENSION_NAME_SIZE];
3714 uint32_t specVersion;
3715 uint32_t implementationVersion;
3716 char description[VK_MAX_DESCRIPTION_SIZE];
3717 };
3718 static_assert( sizeof( LayerProperties ) == sizeof( VkLayerProperties ), "struct and wrapper have different size!" );
3719
3720 struct AllocationCallbacks
3721 {
3722 AllocationCallbacks( void* pUserData_ = nullptr, PFN_vkAllocationFunction pfnAllocation_ = nullptr, PFN_vkReallocationFunction pfnReallocation_ = nullptr, PFN_vkFreeFunction pfnFree_ = nullptr, PFN_vkInternalAllocationNotification pfnInternalAllocation_ = nullptr, PFN_vkInternalFreeNotification pfnInternalFree_ = nullptr )
3723 : pUserData( pUserData_ )
3724 , pfnAllocation( pfnAllocation_ )
3725 , pfnReallocation( pfnReallocation_ )
3726 , pfnFree( pfnFree_ )
3727 , pfnInternalAllocation( pfnInternalAllocation_ )
3728 , pfnInternalFree( pfnInternalFree_ )
3729 {
3730 }
3731
3732 AllocationCallbacks( VkAllocationCallbacks const & rhs )
3733 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003734 memcpy( this, &rhs, sizeof( AllocationCallbacks ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003735 }
3736
3737 AllocationCallbacks& operator=( VkAllocationCallbacks const & rhs )
3738 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003739 memcpy( this, &rhs, sizeof( AllocationCallbacks ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003740 return *this;
3741 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003742 AllocationCallbacks& setPUserData( void* pUserData_ )
3743 {
3744 pUserData = pUserData_;
3745 return *this;
3746 }
3747
3748 AllocationCallbacks& setPfnAllocation( PFN_vkAllocationFunction pfnAllocation_ )
3749 {
3750 pfnAllocation = pfnAllocation_;
3751 return *this;
3752 }
3753
3754 AllocationCallbacks& setPfnReallocation( PFN_vkReallocationFunction pfnReallocation_ )
3755 {
3756 pfnReallocation = pfnReallocation_;
3757 return *this;
3758 }
3759
3760 AllocationCallbacks& setPfnFree( PFN_vkFreeFunction pfnFree_ )
3761 {
3762 pfnFree = pfnFree_;
3763 return *this;
3764 }
3765
3766 AllocationCallbacks& setPfnInternalAllocation( PFN_vkInternalAllocationNotification pfnInternalAllocation_ )
3767 {
3768 pfnInternalAllocation = pfnInternalAllocation_;
3769 return *this;
3770 }
3771
3772 AllocationCallbacks& setPfnInternalFree( PFN_vkInternalFreeNotification pfnInternalFree_ )
3773 {
3774 pfnInternalFree = pfnInternalFree_;
3775 return *this;
3776 }
3777
3778 operator const VkAllocationCallbacks&() const
3779 {
3780 return *reinterpret_cast<const VkAllocationCallbacks*>(this);
3781 }
3782
3783 bool operator==( AllocationCallbacks const& rhs ) const
3784 {
3785 return ( pUserData == rhs.pUserData )
3786 && ( pfnAllocation == rhs.pfnAllocation )
3787 && ( pfnReallocation == rhs.pfnReallocation )
3788 && ( pfnFree == rhs.pfnFree )
3789 && ( pfnInternalAllocation == rhs.pfnInternalAllocation )
3790 && ( pfnInternalFree == rhs.pfnInternalFree );
3791 }
3792
3793 bool operator!=( AllocationCallbacks const& rhs ) const
3794 {
3795 return !operator==( rhs );
3796 }
3797
3798 void* pUserData;
3799 PFN_vkAllocationFunction pfnAllocation;
3800 PFN_vkReallocationFunction pfnReallocation;
3801 PFN_vkFreeFunction pfnFree;
3802 PFN_vkInternalAllocationNotification pfnInternalAllocation;
3803 PFN_vkInternalFreeNotification pfnInternalFree;
3804 };
3805 static_assert( sizeof( AllocationCallbacks ) == sizeof( VkAllocationCallbacks ), "struct and wrapper have different size!" );
3806
3807 struct MemoryRequirements
3808 {
3809 operator const VkMemoryRequirements&() const
3810 {
3811 return *reinterpret_cast<const VkMemoryRequirements*>(this);
3812 }
3813
3814 bool operator==( MemoryRequirements const& rhs ) const
3815 {
3816 return ( size == rhs.size )
3817 && ( alignment == rhs.alignment )
3818 && ( memoryTypeBits == rhs.memoryTypeBits );
3819 }
3820
3821 bool operator!=( MemoryRequirements const& rhs ) const
3822 {
3823 return !operator==( rhs );
3824 }
3825
3826 DeviceSize size;
3827 DeviceSize alignment;
3828 uint32_t memoryTypeBits;
3829 };
3830 static_assert( sizeof( MemoryRequirements ) == sizeof( VkMemoryRequirements ), "struct and wrapper have different size!" );
3831
3832 struct DescriptorBufferInfo
3833 {
3834 DescriptorBufferInfo( Buffer buffer_ = Buffer(), DeviceSize offset_ = 0, DeviceSize range_ = 0 )
3835 : buffer( buffer_ )
3836 , offset( offset_ )
3837 , range( range_ )
3838 {
3839 }
3840
3841 DescriptorBufferInfo( VkDescriptorBufferInfo const & rhs )
3842 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003843 memcpy( this, &rhs, sizeof( DescriptorBufferInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003844 }
3845
3846 DescriptorBufferInfo& operator=( VkDescriptorBufferInfo const & rhs )
3847 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003848 memcpy( this, &rhs, sizeof( DescriptorBufferInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003849 return *this;
3850 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003851 DescriptorBufferInfo& setBuffer( Buffer buffer_ )
3852 {
3853 buffer = buffer_;
3854 return *this;
3855 }
3856
3857 DescriptorBufferInfo& setOffset( DeviceSize offset_ )
3858 {
3859 offset = offset_;
3860 return *this;
3861 }
3862
3863 DescriptorBufferInfo& setRange( DeviceSize range_ )
3864 {
3865 range = range_;
3866 return *this;
3867 }
3868
3869 operator const VkDescriptorBufferInfo&() const
3870 {
3871 return *reinterpret_cast<const VkDescriptorBufferInfo*>(this);
3872 }
3873
3874 bool operator==( DescriptorBufferInfo const& rhs ) const
3875 {
3876 return ( buffer == rhs.buffer )
3877 && ( offset == rhs.offset )
3878 && ( range == rhs.range );
3879 }
3880
3881 bool operator!=( DescriptorBufferInfo const& rhs ) const
3882 {
3883 return !operator==( rhs );
3884 }
3885
3886 Buffer buffer;
3887 DeviceSize offset;
3888 DeviceSize range;
3889 };
3890 static_assert( sizeof( DescriptorBufferInfo ) == sizeof( VkDescriptorBufferInfo ), "struct and wrapper have different size!" );
3891
3892 struct SubresourceLayout
3893 {
3894 operator const VkSubresourceLayout&() const
3895 {
3896 return *reinterpret_cast<const VkSubresourceLayout*>(this);
3897 }
3898
3899 bool operator==( SubresourceLayout const& rhs ) const
3900 {
3901 return ( offset == rhs.offset )
3902 && ( size == rhs.size )
3903 && ( rowPitch == rhs.rowPitch )
3904 && ( arrayPitch == rhs.arrayPitch )
3905 && ( depthPitch == rhs.depthPitch );
3906 }
3907
3908 bool operator!=( SubresourceLayout const& rhs ) const
3909 {
3910 return !operator==( rhs );
3911 }
3912
3913 DeviceSize offset;
3914 DeviceSize size;
3915 DeviceSize rowPitch;
3916 DeviceSize arrayPitch;
3917 DeviceSize depthPitch;
3918 };
3919 static_assert( sizeof( SubresourceLayout ) == sizeof( VkSubresourceLayout ), "struct and wrapper have different size!" );
3920
3921 struct BufferCopy
3922 {
3923 BufferCopy( DeviceSize srcOffset_ = 0, DeviceSize dstOffset_ = 0, DeviceSize size_ = 0 )
3924 : srcOffset( srcOffset_ )
3925 , dstOffset( dstOffset_ )
3926 , size( size_ )
3927 {
3928 }
3929
3930 BufferCopy( VkBufferCopy const & rhs )
3931 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003932 memcpy( this, &rhs, sizeof( BufferCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003933 }
3934
3935 BufferCopy& operator=( VkBufferCopy const & rhs )
3936 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003937 memcpy( this, &rhs, sizeof( BufferCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003938 return *this;
3939 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003940 BufferCopy& setSrcOffset( DeviceSize srcOffset_ )
3941 {
3942 srcOffset = srcOffset_;
3943 return *this;
3944 }
3945
3946 BufferCopy& setDstOffset( DeviceSize dstOffset_ )
3947 {
3948 dstOffset = dstOffset_;
3949 return *this;
3950 }
3951
3952 BufferCopy& setSize( DeviceSize size_ )
3953 {
3954 size = size_;
3955 return *this;
3956 }
3957
3958 operator const VkBufferCopy&() const
3959 {
3960 return *reinterpret_cast<const VkBufferCopy*>(this);
3961 }
3962
3963 bool operator==( BufferCopy const& rhs ) const
3964 {
3965 return ( srcOffset == rhs.srcOffset )
3966 && ( dstOffset == rhs.dstOffset )
3967 && ( size == rhs.size );
3968 }
3969
3970 bool operator!=( BufferCopy const& rhs ) const
3971 {
3972 return !operator==( rhs );
3973 }
3974
3975 DeviceSize srcOffset;
3976 DeviceSize dstOffset;
3977 DeviceSize size;
3978 };
3979 static_assert( sizeof( BufferCopy ) == sizeof( VkBufferCopy ), "struct and wrapper have different size!" );
3980
3981 struct SpecializationMapEntry
3982 {
3983 SpecializationMapEntry( uint32_t constantID_ = 0, uint32_t offset_ = 0, size_t size_ = 0 )
3984 : constantID( constantID_ )
3985 , offset( offset_ )
3986 , size( size_ )
3987 {
3988 }
3989
3990 SpecializationMapEntry( VkSpecializationMapEntry const & rhs )
3991 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003992 memcpy( this, &rhs, sizeof( SpecializationMapEntry ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003993 }
3994
3995 SpecializationMapEntry& operator=( VkSpecializationMapEntry const & rhs )
3996 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003997 memcpy( this, &rhs, sizeof( SpecializationMapEntry ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003998 return *this;
3999 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004000 SpecializationMapEntry& setConstantID( uint32_t constantID_ )
4001 {
4002 constantID = constantID_;
4003 return *this;
4004 }
4005
4006 SpecializationMapEntry& setOffset( uint32_t offset_ )
4007 {
4008 offset = offset_;
4009 return *this;
4010 }
4011
4012 SpecializationMapEntry& setSize( size_t size_ )
4013 {
4014 size = size_;
4015 return *this;
4016 }
4017
4018 operator const VkSpecializationMapEntry&() const
4019 {
4020 return *reinterpret_cast<const VkSpecializationMapEntry*>(this);
4021 }
4022
4023 bool operator==( SpecializationMapEntry const& rhs ) const
4024 {
4025 return ( constantID == rhs.constantID )
4026 && ( offset == rhs.offset )
4027 && ( size == rhs.size );
4028 }
4029
4030 bool operator!=( SpecializationMapEntry const& rhs ) const
4031 {
4032 return !operator==( rhs );
4033 }
4034
4035 uint32_t constantID;
4036 uint32_t offset;
4037 size_t size;
4038 };
4039 static_assert( sizeof( SpecializationMapEntry ) == sizeof( VkSpecializationMapEntry ), "struct and wrapper have different size!" );
4040
4041 struct SpecializationInfo
4042 {
4043 SpecializationInfo( uint32_t mapEntryCount_ = 0, const SpecializationMapEntry* pMapEntries_ = nullptr, size_t dataSize_ = 0, const void* pData_ = nullptr )
4044 : mapEntryCount( mapEntryCount_ )
4045 , pMapEntries( pMapEntries_ )
4046 , dataSize( dataSize_ )
4047 , pData( pData_ )
4048 {
4049 }
4050
4051 SpecializationInfo( VkSpecializationInfo const & rhs )
4052 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004053 memcpy( this, &rhs, sizeof( SpecializationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004054 }
4055
4056 SpecializationInfo& operator=( VkSpecializationInfo const & rhs )
4057 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004058 memcpy( this, &rhs, sizeof( SpecializationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004059 return *this;
4060 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004061 SpecializationInfo& setMapEntryCount( uint32_t mapEntryCount_ )
4062 {
4063 mapEntryCount = mapEntryCount_;
4064 return *this;
4065 }
4066
4067 SpecializationInfo& setPMapEntries( const SpecializationMapEntry* pMapEntries_ )
4068 {
4069 pMapEntries = pMapEntries_;
4070 return *this;
4071 }
4072
4073 SpecializationInfo& setDataSize( size_t dataSize_ )
4074 {
4075 dataSize = dataSize_;
4076 return *this;
4077 }
4078
4079 SpecializationInfo& setPData( const void* pData_ )
4080 {
4081 pData = pData_;
4082 return *this;
4083 }
4084
4085 operator const VkSpecializationInfo&() const
4086 {
4087 return *reinterpret_cast<const VkSpecializationInfo*>(this);
4088 }
4089
4090 bool operator==( SpecializationInfo const& rhs ) const
4091 {
4092 return ( mapEntryCount == rhs.mapEntryCount )
4093 && ( pMapEntries == rhs.pMapEntries )
4094 && ( dataSize == rhs.dataSize )
4095 && ( pData == rhs.pData );
4096 }
4097
4098 bool operator!=( SpecializationInfo const& rhs ) const
4099 {
4100 return !operator==( rhs );
4101 }
4102
4103 uint32_t mapEntryCount;
4104 const SpecializationMapEntry* pMapEntries;
4105 size_t dataSize;
4106 const void* pData;
4107 };
4108 static_assert( sizeof( SpecializationInfo ) == sizeof( VkSpecializationInfo ), "struct and wrapper have different size!" );
4109
4110 union ClearColorValue
4111 {
4112 ClearColorValue( const std::array<float,4>& float32_ = { {0} } )
4113 {
4114 memcpy( &float32, float32_.data(), 4 * sizeof( float ) );
4115 }
4116
4117 ClearColorValue( const std::array<int32_t,4>& int32_ )
4118 {
4119 memcpy( &int32, int32_.data(), 4 * sizeof( int32_t ) );
4120 }
4121
4122 ClearColorValue( const std::array<uint32_t,4>& uint32_ )
4123 {
4124 memcpy( &uint32, uint32_.data(), 4 * sizeof( uint32_t ) );
4125 }
4126
4127 ClearColorValue& setFloat32( std::array<float,4> float32_ )
4128 {
4129 memcpy( &float32, float32_.data(), 4 * sizeof( float ) );
4130 return *this;
4131 }
4132
4133 ClearColorValue& setInt32( std::array<int32_t,4> int32_ )
4134 {
4135 memcpy( &int32, int32_.data(), 4 * sizeof( int32_t ) );
4136 return *this;
4137 }
4138
4139 ClearColorValue& setUint32( std::array<uint32_t,4> uint32_ )
4140 {
4141 memcpy( &uint32, uint32_.data(), 4 * sizeof( uint32_t ) );
4142 return *this;
4143 }
4144
4145 operator VkClearColorValue const& () const
4146 {
4147 return *reinterpret_cast<const VkClearColorValue*>(this);
4148 }
4149
4150 float float32[4];
4151 int32_t int32[4];
4152 uint32_t uint32[4];
4153 };
4154
4155 struct ClearDepthStencilValue
4156 {
4157 ClearDepthStencilValue( float depth_ = 0, uint32_t stencil_ = 0 )
4158 : depth( depth_ )
4159 , stencil( stencil_ )
4160 {
4161 }
4162
4163 ClearDepthStencilValue( VkClearDepthStencilValue const & rhs )
4164 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004165 memcpy( this, &rhs, sizeof( ClearDepthStencilValue ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004166 }
4167
4168 ClearDepthStencilValue& operator=( VkClearDepthStencilValue const & rhs )
4169 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004170 memcpy( this, &rhs, sizeof( ClearDepthStencilValue ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004171 return *this;
4172 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004173 ClearDepthStencilValue& setDepth( float depth_ )
4174 {
4175 depth = depth_;
4176 return *this;
4177 }
4178
4179 ClearDepthStencilValue& setStencil( uint32_t stencil_ )
4180 {
4181 stencil = stencil_;
4182 return *this;
4183 }
4184
4185 operator const VkClearDepthStencilValue&() const
4186 {
4187 return *reinterpret_cast<const VkClearDepthStencilValue*>(this);
4188 }
4189
4190 bool operator==( ClearDepthStencilValue const& rhs ) const
4191 {
4192 return ( depth == rhs.depth )
4193 && ( stencil == rhs.stencil );
4194 }
4195
4196 bool operator!=( ClearDepthStencilValue const& rhs ) const
4197 {
4198 return !operator==( rhs );
4199 }
4200
4201 float depth;
4202 uint32_t stencil;
4203 };
4204 static_assert( sizeof( ClearDepthStencilValue ) == sizeof( VkClearDepthStencilValue ), "struct and wrapper have different size!" );
4205
4206 union ClearValue
4207 {
4208 ClearValue( ClearColorValue color_ = ClearColorValue() )
4209 {
4210 color = color_;
4211 }
4212
4213 ClearValue( ClearDepthStencilValue depthStencil_ )
4214 {
4215 depthStencil = depthStencil_;
4216 }
4217
4218 ClearValue& setColor( ClearColorValue color_ )
4219 {
4220 color = color_;
4221 return *this;
4222 }
4223
4224 ClearValue& setDepthStencil( ClearDepthStencilValue depthStencil_ )
4225 {
4226 depthStencil = depthStencil_;
4227 return *this;
4228 }
4229
4230 operator VkClearValue const& () const
4231 {
4232 return *reinterpret_cast<const VkClearValue*>(this);
4233 }
4234
4235#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
4236 ClearColorValue color;
4237 ClearDepthStencilValue depthStencil;
4238#else
4239 VkClearColorValue color;
4240 VkClearDepthStencilValue depthStencil;
4241#endif // VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
4242 };
4243
4244 struct PhysicalDeviceFeatures
4245 {
4246 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 )
4247 : robustBufferAccess( robustBufferAccess_ )
4248 , fullDrawIndexUint32( fullDrawIndexUint32_ )
4249 , imageCubeArray( imageCubeArray_ )
4250 , independentBlend( independentBlend_ )
4251 , geometryShader( geometryShader_ )
4252 , tessellationShader( tessellationShader_ )
4253 , sampleRateShading( sampleRateShading_ )
4254 , dualSrcBlend( dualSrcBlend_ )
4255 , logicOp( logicOp_ )
4256 , multiDrawIndirect( multiDrawIndirect_ )
4257 , drawIndirectFirstInstance( drawIndirectFirstInstance_ )
4258 , depthClamp( depthClamp_ )
4259 , depthBiasClamp( depthBiasClamp_ )
4260 , fillModeNonSolid( fillModeNonSolid_ )
4261 , depthBounds( depthBounds_ )
4262 , wideLines( wideLines_ )
4263 , largePoints( largePoints_ )
4264 , alphaToOne( alphaToOne_ )
4265 , multiViewport( multiViewport_ )
4266 , samplerAnisotropy( samplerAnisotropy_ )
4267 , textureCompressionETC2( textureCompressionETC2_ )
4268 , textureCompressionASTC_LDR( textureCompressionASTC_LDR_ )
4269 , textureCompressionBC( textureCompressionBC_ )
4270 , occlusionQueryPrecise( occlusionQueryPrecise_ )
4271 , pipelineStatisticsQuery( pipelineStatisticsQuery_ )
4272 , vertexPipelineStoresAndAtomics( vertexPipelineStoresAndAtomics_ )
4273 , fragmentStoresAndAtomics( fragmentStoresAndAtomics_ )
4274 , shaderTessellationAndGeometryPointSize( shaderTessellationAndGeometryPointSize_ )
4275 , shaderImageGatherExtended( shaderImageGatherExtended_ )
4276 , shaderStorageImageExtendedFormats( shaderStorageImageExtendedFormats_ )
4277 , shaderStorageImageMultisample( shaderStorageImageMultisample_ )
4278 , shaderStorageImageReadWithoutFormat( shaderStorageImageReadWithoutFormat_ )
4279 , shaderStorageImageWriteWithoutFormat( shaderStorageImageWriteWithoutFormat_ )
4280 , shaderUniformBufferArrayDynamicIndexing( shaderUniformBufferArrayDynamicIndexing_ )
4281 , shaderSampledImageArrayDynamicIndexing( shaderSampledImageArrayDynamicIndexing_ )
4282 , shaderStorageBufferArrayDynamicIndexing( shaderStorageBufferArrayDynamicIndexing_ )
4283 , shaderStorageImageArrayDynamicIndexing( shaderStorageImageArrayDynamicIndexing_ )
4284 , shaderClipDistance( shaderClipDistance_ )
4285 , shaderCullDistance( shaderCullDistance_ )
4286 , shaderFloat64( shaderFloat64_ )
4287 , shaderInt64( shaderInt64_ )
4288 , shaderInt16( shaderInt16_ )
4289 , shaderResourceResidency( shaderResourceResidency_ )
4290 , shaderResourceMinLod( shaderResourceMinLod_ )
4291 , sparseBinding( sparseBinding_ )
4292 , sparseResidencyBuffer( sparseResidencyBuffer_ )
4293 , sparseResidencyImage2D( sparseResidencyImage2D_ )
4294 , sparseResidencyImage3D( sparseResidencyImage3D_ )
4295 , sparseResidency2Samples( sparseResidency2Samples_ )
4296 , sparseResidency4Samples( sparseResidency4Samples_ )
4297 , sparseResidency8Samples( sparseResidency8Samples_ )
4298 , sparseResidency16Samples( sparseResidency16Samples_ )
4299 , sparseResidencyAliased( sparseResidencyAliased_ )
4300 , variableMultisampleRate( variableMultisampleRate_ )
4301 , inheritedQueries( inheritedQueries_ )
4302 {
4303 }
4304
4305 PhysicalDeviceFeatures( VkPhysicalDeviceFeatures const & rhs )
4306 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004307 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004308 }
4309
4310 PhysicalDeviceFeatures& operator=( VkPhysicalDeviceFeatures const & rhs )
4311 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004312 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004313 return *this;
4314 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004315 PhysicalDeviceFeatures& setRobustBufferAccess( Bool32 robustBufferAccess_ )
4316 {
4317 robustBufferAccess = robustBufferAccess_;
4318 return *this;
4319 }
4320
4321 PhysicalDeviceFeatures& setFullDrawIndexUint32( Bool32 fullDrawIndexUint32_ )
4322 {
4323 fullDrawIndexUint32 = fullDrawIndexUint32_;
4324 return *this;
4325 }
4326
4327 PhysicalDeviceFeatures& setImageCubeArray( Bool32 imageCubeArray_ )
4328 {
4329 imageCubeArray = imageCubeArray_;
4330 return *this;
4331 }
4332
4333 PhysicalDeviceFeatures& setIndependentBlend( Bool32 independentBlend_ )
4334 {
4335 independentBlend = independentBlend_;
4336 return *this;
4337 }
4338
4339 PhysicalDeviceFeatures& setGeometryShader( Bool32 geometryShader_ )
4340 {
4341 geometryShader = geometryShader_;
4342 return *this;
4343 }
4344
4345 PhysicalDeviceFeatures& setTessellationShader( Bool32 tessellationShader_ )
4346 {
4347 tessellationShader = tessellationShader_;
4348 return *this;
4349 }
4350
4351 PhysicalDeviceFeatures& setSampleRateShading( Bool32 sampleRateShading_ )
4352 {
4353 sampleRateShading = sampleRateShading_;
4354 return *this;
4355 }
4356
4357 PhysicalDeviceFeatures& setDualSrcBlend( Bool32 dualSrcBlend_ )
4358 {
4359 dualSrcBlend = dualSrcBlend_;
4360 return *this;
4361 }
4362
4363 PhysicalDeviceFeatures& setLogicOp( Bool32 logicOp_ )
4364 {
4365 logicOp = logicOp_;
4366 return *this;
4367 }
4368
4369 PhysicalDeviceFeatures& setMultiDrawIndirect( Bool32 multiDrawIndirect_ )
4370 {
4371 multiDrawIndirect = multiDrawIndirect_;
4372 return *this;
4373 }
4374
4375 PhysicalDeviceFeatures& setDrawIndirectFirstInstance( Bool32 drawIndirectFirstInstance_ )
4376 {
4377 drawIndirectFirstInstance = drawIndirectFirstInstance_;
4378 return *this;
4379 }
4380
4381 PhysicalDeviceFeatures& setDepthClamp( Bool32 depthClamp_ )
4382 {
4383 depthClamp = depthClamp_;
4384 return *this;
4385 }
4386
4387 PhysicalDeviceFeatures& setDepthBiasClamp( Bool32 depthBiasClamp_ )
4388 {
4389 depthBiasClamp = depthBiasClamp_;
4390 return *this;
4391 }
4392
4393 PhysicalDeviceFeatures& setFillModeNonSolid( Bool32 fillModeNonSolid_ )
4394 {
4395 fillModeNonSolid = fillModeNonSolid_;
4396 return *this;
4397 }
4398
4399 PhysicalDeviceFeatures& setDepthBounds( Bool32 depthBounds_ )
4400 {
4401 depthBounds = depthBounds_;
4402 return *this;
4403 }
4404
4405 PhysicalDeviceFeatures& setWideLines( Bool32 wideLines_ )
4406 {
4407 wideLines = wideLines_;
4408 return *this;
4409 }
4410
4411 PhysicalDeviceFeatures& setLargePoints( Bool32 largePoints_ )
4412 {
4413 largePoints = largePoints_;
4414 return *this;
4415 }
4416
4417 PhysicalDeviceFeatures& setAlphaToOne( Bool32 alphaToOne_ )
4418 {
4419 alphaToOne = alphaToOne_;
4420 return *this;
4421 }
4422
4423 PhysicalDeviceFeatures& setMultiViewport( Bool32 multiViewport_ )
4424 {
4425 multiViewport = multiViewport_;
4426 return *this;
4427 }
4428
4429 PhysicalDeviceFeatures& setSamplerAnisotropy( Bool32 samplerAnisotropy_ )
4430 {
4431 samplerAnisotropy = samplerAnisotropy_;
4432 return *this;
4433 }
4434
4435 PhysicalDeviceFeatures& setTextureCompressionETC2( Bool32 textureCompressionETC2_ )
4436 {
4437 textureCompressionETC2 = textureCompressionETC2_;
4438 return *this;
4439 }
4440
4441 PhysicalDeviceFeatures& setTextureCompressionASTC_LDR( Bool32 textureCompressionASTC_LDR_ )
4442 {
4443 textureCompressionASTC_LDR = textureCompressionASTC_LDR_;
4444 return *this;
4445 }
4446
4447 PhysicalDeviceFeatures& setTextureCompressionBC( Bool32 textureCompressionBC_ )
4448 {
4449 textureCompressionBC = textureCompressionBC_;
4450 return *this;
4451 }
4452
4453 PhysicalDeviceFeatures& setOcclusionQueryPrecise( Bool32 occlusionQueryPrecise_ )
4454 {
4455 occlusionQueryPrecise = occlusionQueryPrecise_;
4456 return *this;
4457 }
4458
4459 PhysicalDeviceFeatures& setPipelineStatisticsQuery( Bool32 pipelineStatisticsQuery_ )
4460 {
4461 pipelineStatisticsQuery = pipelineStatisticsQuery_;
4462 return *this;
4463 }
4464
4465 PhysicalDeviceFeatures& setVertexPipelineStoresAndAtomics( Bool32 vertexPipelineStoresAndAtomics_ )
4466 {
4467 vertexPipelineStoresAndAtomics = vertexPipelineStoresAndAtomics_;
4468 return *this;
4469 }
4470
4471 PhysicalDeviceFeatures& setFragmentStoresAndAtomics( Bool32 fragmentStoresAndAtomics_ )
4472 {
4473 fragmentStoresAndAtomics = fragmentStoresAndAtomics_;
4474 return *this;
4475 }
4476
4477 PhysicalDeviceFeatures& setShaderTessellationAndGeometryPointSize( Bool32 shaderTessellationAndGeometryPointSize_ )
4478 {
4479 shaderTessellationAndGeometryPointSize = shaderTessellationAndGeometryPointSize_;
4480 return *this;
4481 }
4482
4483 PhysicalDeviceFeatures& setShaderImageGatherExtended( Bool32 shaderImageGatherExtended_ )
4484 {
4485 shaderImageGatherExtended = shaderImageGatherExtended_;
4486 return *this;
4487 }
4488
4489 PhysicalDeviceFeatures& setShaderStorageImageExtendedFormats( Bool32 shaderStorageImageExtendedFormats_ )
4490 {
4491 shaderStorageImageExtendedFormats = shaderStorageImageExtendedFormats_;
4492 return *this;
4493 }
4494
4495 PhysicalDeviceFeatures& setShaderStorageImageMultisample( Bool32 shaderStorageImageMultisample_ )
4496 {
4497 shaderStorageImageMultisample = shaderStorageImageMultisample_;
4498 return *this;
4499 }
4500
4501 PhysicalDeviceFeatures& setShaderStorageImageReadWithoutFormat( Bool32 shaderStorageImageReadWithoutFormat_ )
4502 {
4503 shaderStorageImageReadWithoutFormat = shaderStorageImageReadWithoutFormat_;
4504 return *this;
4505 }
4506
4507 PhysicalDeviceFeatures& setShaderStorageImageWriteWithoutFormat( Bool32 shaderStorageImageWriteWithoutFormat_ )
4508 {
4509 shaderStorageImageWriteWithoutFormat = shaderStorageImageWriteWithoutFormat_;
4510 return *this;
4511 }
4512
4513 PhysicalDeviceFeatures& setShaderUniformBufferArrayDynamicIndexing( Bool32 shaderUniformBufferArrayDynamicIndexing_ )
4514 {
4515 shaderUniformBufferArrayDynamicIndexing = shaderUniformBufferArrayDynamicIndexing_;
4516 return *this;
4517 }
4518
4519 PhysicalDeviceFeatures& setShaderSampledImageArrayDynamicIndexing( Bool32 shaderSampledImageArrayDynamicIndexing_ )
4520 {
4521 shaderSampledImageArrayDynamicIndexing = shaderSampledImageArrayDynamicIndexing_;
4522 return *this;
4523 }
4524
4525 PhysicalDeviceFeatures& setShaderStorageBufferArrayDynamicIndexing( Bool32 shaderStorageBufferArrayDynamicIndexing_ )
4526 {
4527 shaderStorageBufferArrayDynamicIndexing = shaderStorageBufferArrayDynamicIndexing_;
4528 return *this;
4529 }
4530
4531 PhysicalDeviceFeatures& setShaderStorageImageArrayDynamicIndexing( Bool32 shaderStorageImageArrayDynamicIndexing_ )
4532 {
4533 shaderStorageImageArrayDynamicIndexing = shaderStorageImageArrayDynamicIndexing_;
4534 return *this;
4535 }
4536
4537 PhysicalDeviceFeatures& setShaderClipDistance( Bool32 shaderClipDistance_ )
4538 {
4539 shaderClipDistance = shaderClipDistance_;
4540 return *this;
4541 }
4542
4543 PhysicalDeviceFeatures& setShaderCullDistance( Bool32 shaderCullDistance_ )
4544 {
4545 shaderCullDistance = shaderCullDistance_;
4546 return *this;
4547 }
4548
4549 PhysicalDeviceFeatures& setShaderFloat64( Bool32 shaderFloat64_ )
4550 {
4551 shaderFloat64 = shaderFloat64_;
4552 return *this;
4553 }
4554
4555 PhysicalDeviceFeatures& setShaderInt64( Bool32 shaderInt64_ )
4556 {
4557 shaderInt64 = shaderInt64_;
4558 return *this;
4559 }
4560
4561 PhysicalDeviceFeatures& setShaderInt16( Bool32 shaderInt16_ )
4562 {
4563 shaderInt16 = shaderInt16_;
4564 return *this;
4565 }
4566
4567 PhysicalDeviceFeatures& setShaderResourceResidency( Bool32 shaderResourceResidency_ )
4568 {
4569 shaderResourceResidency = shaderResourceResidency_;
4570 return *this;
4571 }
4572
4573 PhysicalDeviceFeatures& setShaderResourceMinLod( Bool32 shaderResourceMinLod_ )
4574 {
4575 shaderResourceMinLod = shaderResourceMinLod_;
4576 return *this;
4577 }
4578
4579 PhysicalDeviceFeatures& setSparseBinding( Bool32 sparseBinding_ )
4580 {
4581 sparseBinding = sparseBinding_;
4582 return *this;
4583 }
4584
4585 PhysicalDeviceFeatures& setSparseResidencyBuffer( Bool32 sparseResidencyBuffer_ )
4586 {
4587 sparseResidencyBuffer = sparseResidencyBuffer_;
4588 return *this;
4589 }
4590
4591 PhysicalDeviceFeatures& setSparseResidencyImage2D( Bool32 sparseResidencyImage2D_ )
4592 {
4593 sparseResidencyImage2D = sparseResidencyImage2D_;
4594 return *this;
4595 }
4596
4597 PhysicalDeviceFeatures& setSparseResidencyImage3D( Bool32 sparseResidencyImage3D_ )
4598 {
4599 sparseResidencyImage3D = sparseResidencyImage3D_;
4600 return *this;
4601 }
4602
4603 PhysicalDeviceFeatures& setSparseResidency2Samples( Bool32 sparseResidency2Samples_ )
4604 {
4605 sparseResidency2Samples = sparseResidency2Samples_;
4606 return *this;
4607 }
4608
4609 PhysicalDeviceFeatures& setSparseResidency4Samples( Bool32 sparseResidency4Samples_ )
4610 {
4611 sparseResidency4Samples = sparseResidency4Samples_;
4612 return *this;
4613 }
4614
4615 PhysicalDeviceFeatures& setSparseResidency8Samples( Bool32 sparseResidency8Samples_ )
4616 {
4617 sparseResidency8Samples = sparseResidency8Samples_;
4618 return *this;
4619 }
4620
4621 PhysicalDeviceFeatures& setSparseResidency16Samples( Bool32 sparseResidency16Samples_ )
4622 {
4623 sparseResidency16Samples = sparseResidency16Samples_;
4624 return *this;
4625 }
4626
4627 PhysicalDeviceFeatures& setSparseResidencyAliased( Bool32 sparseResidencyAliased_ )
4628 {
4629 sparseResidencyAliased = sparseResidencyAliased_;
4630 return *this;
4631 }
4632
4633 PhysicalDeviceFeatures& setVariableMultisampleRate( Bool32 variableMultisampleRate_ )
4634 {
4635 variableMultisampleRate = variableMultisampleRate_;
4636 return *this;
4637 }
4638
4639 PhysicalDeviceFeatures& setInheritedQueries( Bool32 inheritedQueries_ )
4640 {
4641 inheritedQueries = inheritedQueries_;
4642 return *this;
4643 }
4644
4645 operator const VkPhysicalDeviceFeatures&() const
4646 {
4647 return *reinterpret_cast<const VkPhysicalDeviceFeatures*>(this);
4648 }
4649
4650 bool operator==( PhysicalDeviceFeatures const& rhs ) const
4651 {
4652 return ( robustBufferAccess == rhs.robustBufferAccess )
4653 && ( fullDrawIndexUint32 == rhs.fullDrawIndexUint32 )
4654 && ( imageCubeArray == rhs.imageCubeArray )
4655 && ( independentBlend == rhs.independentBlend )
4656 && ( geometryShader == rhs.geometryShader )
4657 && ( tessellationShader == rhs.tessellationShader )
4658 && ( sampleRateShading == rhs.sampleRateShading )
4659 && ( dualSrcBlend == rhs.dualSrcBlend )
4660 && ( logicOp == rhs.logicOp )
4661 && ( multiDrawIndirect == rhs.multiDrawIndirect )
4662 && ( drawIndirectFirstInstance == rhs.drawIndirectFirstInstance )
4663 && ( depthClamp == rhs.depthClamp )
4664 && ( depthBiasClamp == rhs.depthBiasClamp )
4665 && ( fillModeNonSolid == rhs.fillModeNonSolid )
4666 && ( depthBounds == rhs.depthBounds )
4667 && ( wideLines == rhs.wideLines )
4668 && ( largePoints == rhs.largePoints )
4669 && ( alphaToOne == rhs.alphaToOne )
4670 && ( multiViewport == rhs.multiViewport )
4671 && ( samplerAnisotropy == rhs.samplerAnisotropy )
4672 && ( textureCompressionETC2 == rhs.textureCompressionETC2 )
4673 && ( textureCompressionASTC_LDR == rhs.textureCompressionASTC_LDR )
4674 && ( textureCompressionBC == rhs.textureCompressionBC )
4675 && ( occlusionQueryPrecise == rhs.occlusionQueryPrecise )
4676 && ( pipelineStatisticsQuery == rhs.pipelineStatisticsQuery )
4677 && ( vertexPipelineStoresAndAtomics == rhs.vertexPipelineStoresAndAtomics )
4678 && ( fragmentStoresAndAtomics == rhs.fragmentStoresAndAtomics )
4679 && ( shaderTessellationAndGeometryPointSize == rhs.shaderTessellationAndGeometryPointSize )
4680 && ( shaderImageGatherExtended == rhs.shaderImageGatherExtended )
4681 && ( shaderStorageImageExtendedFormats == rhs.shaderStorageImageExtendedFormats )
4682 && ( shaderStorageImageMultisample == rhs.shaderStorageImageMultisample )
4683 && ( shaderStorageImageReadWithoutFormat == rhs.shaderStorageImageReadWithoutFormat )
4684 && ( shaderStorageImageWriteWithoutFormat == rhs.shaderStorageImageWriteWithoutFormat )
4685 && ( shaderUniformBufferArrayDynamicIndexing == rhs.shaderUniformBufferArrayDynamicIndexing )
4686 && ( shaderSampledImageArrayDynamicIndexing == rhs.shaderSampledImageArrayDynamicIndexing )
4687 && ( shaderStorageBufferArrayDynamicIndexing == rhs.shaderStorageBufferArrayDynamicIndexing )
4688 && ( shaderStorageImageArrayDynamicIndexing == rhs.shaderStorageImageArrayDynamicIndexing )
4689 && ( shaderClipDistance == rhs.shaderClipDistance )
4690 && ( shaderCullDistance == rhs.shaderCullDistance )
4691 && ( shaderFloat64 == rhs.shaderFloat64 )
4692 && ( shaderInt64 == rhs.shaderInt64 )
4693 && ( shaderInt16 == rhs.shaderInt16 )
4694 && ( shaderResourceResidency == rhs.shaderResourceResidency )
4695 && ( shaderResourceMinLod == rhs.shaderResourceMinLod )
4696 && ( sparseBinding == rhs.sparseBinding )
4697 && ( sparseResidencyBuffer == rhs.sparseResidencyBuffer )
4698 && ( sparseResidencyImage2D == rhs.sparseResidencyImage2D )
4699 && ( sparseResidencyImage3D == rhs.sparseResidencyImage3D )
4700 && ( sparseResidency2Samples == rhs.sparseResidency2Samples )
4701 && ( sparseResidency4Samples == rhs.sparseResidency4Samples )
4702 && ( sparseResidency8Samples == rhs.sparseResidency8Samples )
4703 && ( sparseResidency16Samples == rhs.sparseResidency16Samples )
4704 && ( sparseResidencyAliased == rhs.sparseResidencyAliased )
4705 && ( variableMultisampleRate == rhs.variableMultisampleRate )
4706 && ( inheritedQueries == rhs.inheritedQueries );
4707 }
4708
4709 bool operator!=( PhysicalDeviceFeatures const& rhs ) const
4710 {
4711 return !operator==( rhs );
4712 }
4713
4714 Bool32 robustBufferAccess;
4715 Bool32 fullDrawIndexUint32;
4716 Bool32 imageCubeArray;
4717 Bool32 independentBlend;
4718 Bool32 geometryShader;
4719 Bool32 tessellationShader;
4720 Bool32 sampleRateShading;
4721 Bool32 dualSrcBlend;
4722 Bool32 logicOp;
4723 Bool32 multiDrawIndirect;
4724 Bool32 drawIndirectFirstInstance;
4725 Bool32 depthClamp;
4726 Bool32 depthBiasClamp;
4727 Bool32 fillModeNonSolid;
4728 Bool32 depthBounds;
4729 Bool32 wideLines;
4730 Bool32 largePoints;
4731 Bool32 alphaToOne;
4732 Bool32 multiViewport;
4733 Bool32 samplerAnisotropy;
4734 Bool32 textureCompressionETC2;
4735 Bool32 textureCompressionASTC_LDR;
4736 Bool32 textureCompressionBC;
4737 Bool32 occlusionQueryPrecise;
4738 Bool32 pipelineStatisticsQuery;
4739 Bool32 vertexPipelineStoresAndAtomics;
4740 Bool32 fragmentStoresAndAtomics;
4741 Bool32 shaderTessellationAndGeometryPointSize;
4742 Bool32 shaderImageGatherExtended;
4743 Bool32 shaderStorageImageExtendedFormats;
4744 Bool32 shaderStorageImageMultisample;
4745 Bool32 shaderStorageImageReadWithoutFormat;
4746 Bool32 shaderStorageImageWriteWithoutFormat;
4747 Bool32 shaderUniformBufferArrayDynamicIndexing;
4748 Bool32 shaderSampledImageArrayDynamicIndexing;
4749 Bool32 shaderStorageBufferArrayDynamicIndexing;
4750 Bool32 shaderStorageImageArrayDynamicIndexing;
4751 Bool32 shaderClipDistance;
4752 Bool32 shaderCullDistance;
4753 Bool32 shaderFloat64;
4754 Bool32 shaderInt64;
4755 Bool32 shaderInt16;
4756 Bool32 shaderResourceResidency;
4757 Bool32 shaderResourceMinLod;
4758 Bool32 sparseBinding;
4759 Bool32 sparseResidencyBuffer;
4760 Bool32 sparseResidencyImage2D;
4761 Bool32 sparseResidencyImage3D;
4762 Bool32 sparseResidency2Samples;
4763 Bool32 sparseResidency4Samples;
4764 Bool32 sparseResidency8Samples;
4765 Bool32 sparseResidency16Samples;
4766 Bool32 sparseResidencyAliased;
4767 Bool32 variableMultisampleRate;
4768 Bool32 inheritedQueries;
4769 };
4770 static_assert( sizeof( PhysicalDeviceFeatures ) == sizeof( VkPhysicalDeviceFeatures ), "struct and wrapper have different size!" );
4771
4772 struct PhysicalDeviceSparseProperties
4773 {
4774 operator const VkPhysicalDeviceSparseProperties&() const
4775 {
4776 return *reinterpret_cast<const VkPhysicalDeviceSparseProperties*>(this);
4777 }
4778
4779 bool operator==( PhysicalDeviceSparseProperties const& rhs ) const
4780 {
4781 return ( residencyStandard2DBlockShape == rhs.residencyStandard2DBlockShape )
4782 && ( residencyStandard2DMultisampleBlockShape == rhs.residencyStandard2DMultisampleBlockShape )
4783 && ( residencyStandard3DBlockShape == rhs.residencyStandard3DBlockShape )
4784 && ( residencyAlignedMipSize == rhs.residencyAlignedMipSize )
4785 && ( residencyNonResidentStrict == rhs.residencyNonResidentStrict );
4786 }
4787
4788 bool operator!=( PhysicalDeviceSparseProperties const& rhs ) const
4789 {
4790 return !operator==( rhs );
4791 }
4792
4793 Bool32 residencyStandard2DBlockShape;
4794 Bool32 residencyStandard2DMultisampleBlockShape;
4795 Bool32 residencyStandard3DBlockShape;
4796 Bool32 residencyAlignedMipSize;
4797 Bool32 residencyNonResidentStrict;
4798 };
4799 static_assert( sizeof( PhysicalDeviceSparseProperties ) == sizeof( VkPhysicalDeviceSparseProperties ), "struct and wrapper have different size!" );
4800
4801 struct DrawIndirectCommand
4802 {
4803 DrawIndirectCommand( uint32_t vertexCount_ = 0, uint32_t instanceCount_ = 0, uint32_t firstVertex_ = 0, uint32_t firstInstance_ = 0 )
4804 : vertexCount( vertexCount_ )
4805 , instanceCount( instanceCount_ )
4806 , firstVertex( firstVertex_ )
4807 , firstInstance( firstInstance_ )
4808 {
4809 }
4810
4811 DrawIndirectCommand( VkDrawIndirectCommand const & rhs )
4812 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004813 memcpy( this, &rhs, sizeof( DrawIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004814 }
4815
4816 DrawIndirectCommand& operator=( VkDrawIndirectCommand const & rhs )
4817 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004818 memcpy( this, &rhs, sizeof( DrawIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004819 return *this;
4820 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004821 DrawIndirectCommand& setVertexCount( uint32_t vertexCount_ )
4822 {
4823 vertexCount = vertexCount_;
4824 return *this;
4825 }
4826
4827 DrawIndirectCommand& setInstanceCount( uint32_t instanceCount_ )
4828 {
4829 instanceCount = instanceCount_;
4830 return *this;
4831 }
4832
4833 DrawIndirectCommand& setFirstVertex( uint32_t firstVertex_ )
4834 {
4835 firstVertex = firstVertex_;
4836 return *this;
4837 }
4838
4839 DrawIndirectCommand& setFirstInstance( uint32_t firstInstance_ )
4840 {
4841 firstInstance = firstInstance_;
4842 return *this;
4843 }
4844
4845 operator const VkDrawIndirectCommand&() const
4846 {
4847 return *reinterpret_cast<const VkDrawIndirectCommand*>(this);
4848 }
4849
4850 bool operator==( DrawIndirectCommand const& rhs ) const
4851 {
4852 return ( vertexCount == rhs.vertexCount )
4853 && ( instanceCount == rhs.instanceCount )
4854 && ( firstVertex == rhs.firstVertex )
4855 && ( firstInstance == rhs.firstInstance );
4856 }
4857
4858 bool operator!=( DrawIndirectCommand const& rhs ) const
4859 {
4860 return !operator==( rhs );
4861 }
4862
4863 uint32_t vertexCount;
4864 uint32_t instanceCount;
4865 uint32_t firstVertex;
4866 uint32_t firstInstance;
4867 };
4868 static_assert( sizeof( DrawIndirectCommand ) == sizeof( VkDrawIndirectCommand ), "struct and wrapper have different size!" );
4869
4870 struct DrawIndexedIndirectCommand
4871 {
4872 DrawIndexedIndirectCommand( uint32_t indexCount_ = 0, uint32_t instanceCount_ = 0, uint32_t firstIndex_ = 0, int32_t vertexOffset_ = 0, uint32_t firstInstance_ = 0 )
4873 : indexCount( indexCount_ )
4874 , instanceCount( instanceCount_ )
4875 , firstIndex( firstIndex_ )
4876 , vertexOffset( vertexOffset_ )
4877 , firstInstance( firstInstance_ )
4878 {
4879 }
4880
4881 DrawIndexedIndirectCommand( VkDrawIndexedIndirectCommand const & rhs )
4882 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004883 memcpy( this, &rhs, sizeof( DrawIndexedIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004884 }
4885
4886 DrawIndexedIndirectCommand& operator=( VkDrawIndexedIndirectCommand const & rhs )
4887 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004888 memcpy( this, &rhs, sizeof( DrawIndexedIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004889 return *this;
4890 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004891 DrawIndexedIndirectCommand& setIndexCount( uint32_t indexCount_ )
4892 {
4893 indexCount = indexCount_;
4894 return *this;
4895 }
4896
4897 DrawIndexedIndirectCommand& setInstanceCount( uint32_t instanceCount_ )
4898 {
4899 instanceCount = instanceCount_;
4900 return *this;
4901 }
4902
4903 DrawIndexedIndirectCommand& setFirstIndex( uint32_t firstIndex_ )
4904 {
4905 firstIndex = firstIndex_;
4906 return *this;
4907 }
4908
4909 DrawIndexedIndirectCommand& setVertexOffset( int32_t vertexOffset_ )
4910 {
4911 vertexOffset = vertexOffset_;
4912 return *this;
4913 }
4914
4915 DrawIndexedIndirectCommand& setFirstInstance( uint32_t firstInstance_ )
4916 {
4917 firstInstance = firstInstance_;
4918 return *this;
4919 }
4920
4921 operator const VkDrawIndexedIndirectCommand&() const
4922 {
4923 return *reinterpret_cast<const VkDrawIndexedIndirectCommand*>(this);
4924 }
4925
4926 bool operator==( DrawIndexedIndirectCommand const& rhs ) const
4927 {
4928 return ( indexCount == rhs.indexCount )
4929 && ( instanceCount == rhs.instanceCount )
4930 && ( firstIndex == rhs.firstIndex )
4931 && ( vertexOffset == rhs.vertexOffset )
4932 && ( firstInstance == rhs.firstInstance );
4933 }
4934
4935 bool operator!=( DrawIndexedIndirectCommand const& rhs ) const
4936 {
4937 return !operator==( rhs );
4938 }
4939
4940 uint32_t indexCount;
4941 uint32_t instanceCount;
4942 uint32_t firstIndex;
4943 int32_t vertexOffset;
4944 uint32_t firstInstance;
4945 };
4946 static_assert( sizeof( DrawIndexedIndirectCommand ) == sizeof( VkDrawIndexedIndirectCommand ), "struct and wrapper have different size!" );
4947
4948 struct DispatchIndirectCommand
4949 {
4950 DispatchIndirectCommand( uint32_t x_ = 0, uint32_t y_ = 0, uint32_t z_ = 0 )
4951 : x( x_ )
4952 , y( y_ )
4953 , z( z_ )
4954 {
4955 }
4956
4957 DispatchIndirectCommand( VkDispatchIndirectCommand const & rhs )
4958 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004959 memcpy( this, &rhs, sizeof( DispatchIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004960 }
4961
4962 DispatchIndirectCommand& operator=( VkDispatchIndirectCommand const & rhs )
4963 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004964 memcpy( this, &rhs, sizeof( DispatchIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004965 return *this;
4966 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004967 DispatchIndirectCommand& setX( uint32_t x_ )
4968 {
4969 x = x_;
4970 return *this;
4971 }
4972
4973 DispatchIndirectCommand& setY( uint32_t y_ )
4974 {
4975 y = y_;
4976 return *this;
4977 }
4978
4979 DispatchIndirectCommand& setZ( uint32_t z_ )
4980 {
4981 z = z_;
4982 return *this;
4983 }
4984
4985 operator const VkDispatchIndirectCommand&() const
4986 {
4987 return *reinterpret_cast<const VkDispatchIndirectCommand*>(this);
4988 }
4989
4990 bool operator==( DispatchIndirectCommand const& rhs ) const
4991 {
4992 return ( x == rhs.x )
4993 && ( y == rhs.y )
4994 && ( z == rhs.z );
4995 }
4996
4997 bool operator!=( DispatchIndirectCommand const& rhs ) const
4998 {
4999 return !operator==( rhs );
5000 }
5001
5002 uint32_t x;
5003 uint32_t y;
5004 uint32_t z;
5005 };
5006 static_assert( sizeof( DispatchIndirectCommand ) == sizeof( VkDispatchIndirectCommand ), "struct and wrapper have different size!" );
5007
5008 struct DisplayPlanePropertiesKHR
5009 {
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005010 operator const VkDisplayPlanePropertiesKHR&() const
5011 {
5012 return *reinterpret_cast<const VkDisplayPlanePropertiesKHR*>(this);
5013 }
5014
5015 bool operator==( DisplayPlanePropertiesKHR const& rhs ) const
5016 {
5017 return ( currentDisplay == rhs.currentDisplay )
5018 && ( currentStackIndex == rhs.currentStackIndex );
5019 }
5020
5021 bool operator!=( DisplayPlanePropertiesKHR const& rhs ) const
5022 {
5023 return !operator==( rhs );
5024 }
5025
5026 DisplayKHR currentDisplay;
5027 uint32_t currentStackIndex;
5028 };
5029 static_assert( sizeof( DisplayPlanePropertiesKHR ) == sizeof( VkDisplayPlanePropertiesKHR ), "struct and wrapper have different size!" );
5030
5031 struct DisplayModeParametersKHR
5032 {
5033 DisplayModeParametersKHR( Extent2D visibleRegion_ = Extent2D(), uint32_t refreshRate_ = 0 )
5034 : visibleRegion( visibleRegion_ )
5035 , refreshRate( refreshRate_ )
5036 {
5037 }
5038
5039 DisplayModeParametersKHR( VkDisplayModeParametersKHR const & rhs )
5040 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005041 memcpy( this, &rhs, sizeof( DisplayModeParametersKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005042 }
5043
5044 DisplayModeParametersKHR& operator=( VkDisplayModeParametersKHR const & rhs )
5045 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005046 memcpy( this, &rhs, sizeof( DisplayModeParametersKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005047 return *this;
5048 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005049 DisplayModeParametersKHR& setVisibleRegion( Extent2D visibleRegion_ )
5050 {
5051 visibleRegion = visibleRegion_;
5052 return *this;
5053 }
5054
5055 DisplayModeParametersKHR& setRefreshRate( uint32_t refreshRate_ )
5056 {
5057 refreshRate = refreshRate_;
5058 return *this;
5059 }
5060
5061 operator const VkDisplayModeParametersKHR&() const
5062 {
5063 return *reinterpret_cast<const VkDisplayModeParametersKHR*>(this);
5064 }
5065
5066 bool operator==( DisplayModeParametersKHR const& rhs ) const
5067 {
5068 return ( visibleRegion == rhs.visibleRegion )
5069 && ( refreshRate == rhs.refreshRate );
5070 }
5071
5072 bool operator!=( DisplayModeParametersKHR const& rhs ) const
5073 {
5074 return !operator==( rhs );
5075 }
5076
5077 Extent2D visibleRegion;
5078 uint32_t refreshRate;
5079 };
5080 static_assert( sizeof( DisplayModeParametersKHR ) == sizeof( VkDisplayModeParametersKHR ), "struct and wrapper have different size!" );
5081
5082 struct DisplayModePropertiesKHR
5083 {
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005084 operator const VkDisplayModePropertiesKHR&() const
5085 {
5086 return *reinterpret_cast<const VkDisplayModePropertiesKHR*>(this);
5087 }
5088
5089 bool operator==( DisplayModePropertiesKHR const& rhs ) const
5090 {
5091 return ( displayMode == rhs.displayMode )
5092 && ( parameters == rhs.parameters );
5093 }
5094
5095 bool operator!=( DisplayModePropertiesKHR const& rhs ) const
5096 {
5097 return !operator==( rhs );
5098 }
5099
5100 DisplayModeKHR displayMode;
5101 DisplayModeParametersKHR parameters;
5102 };
5103 static_assert( sizeof( DisplayModePropertiesKHR ) == sizeof( VkDisplayModePropertiesKHR ), "struct and wrapper have different size!" );
5104
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005105 struct RectLayerKHR
5106 {
5107 RectLayerKHR( Offset2D offset_ = Offset2D(), Extent2D extent_ = Extent2D(), uint32_t layer_ = 0 )
5108 : offset( offset_ )
5109 , extent( extent_ )
5110 , layer( layer_ )
5111 {
5112 }
5113
5114 RectLayerKHR( VkRectLayerKHR const & rhs )
5115 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005116 memcpy( this, &rhs, sizeof( RectLayerKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005117 }
5118
5119 RectLayerKHR& operator=( VkRectLayerKHR const & rhs )
5120 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005121 memcpy( this, &rhs, sizeof( RectLayerKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005122 return *this;
5123 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005124 RectLayerKHR& setOffset( Offset2D offset_ )
5125 {
5126 offset = offset_;
5127 return *this;
5128 }
5129
5130 RectLayerKHR& setExtent( Extent2D extent_ )
5131 {
5132 extent = extent_;
5133 return *this;
5134 }
5135
5136 RectLayerKHR& setLayer( uint32_t layer_ )
5137 {
5138 layer = layer_;
5139 return *this;
5140 }
5141
5142 operator const VkRectLayerKHR&() const
5143 {
5144 return *reinterpret_cast<const VkRectLayerKHR*>(this);
5145 }
5146
5147 bool operator==( RectLayerKHR const& rhs ) const
5148 {
5149 return ( offset == rhs.offset )
5150 && ( extent == rhs.extent )
5151 && ( layer == rhs.layer );
5152 }
5153
5154 bool operator!=( RectLayerKHR const& rhs ) const
5155 {
5156 return !operator==( rhs );
5157 }
5158
5159 Offset2D offset;
5160 Extent2D extent;
5161 uint32_t layer;
5162 };
5163 static_assert( sizeof( RectLayerKHR ) == sizeof( VkRectLayerKHR ), "struct and wrapper have different size!" );
5164
5165 struct PresentRegionKHR
5166 {
5167 PresentRegionKHR( uint32_t rectangleCount_ = 0, const RectLayerKHR* pRectangles_ = nullptr )
5168 : rectangleCount( rectangleCount_ )
5169 , pRectangles( pRectangles_ )
5170 {
5171 }
5172
5173 PresentRegionKHR( VkPresentRegionKHR const & rhs )
5174 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005175 memcpy( this, &rhs, sizeof( PresentRegionKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005176 }
5177
5178 PresentRegionKHR& operator=( VkPresentRegionKHR const & rhs )
5179 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005180 memcpy( this, &rhs, sizeof( PresentRegionKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005181 return *this;
5182 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005183 PresentRegionKHR& setRectangleCount( uint32_t rectangleCount_ )
5184 {
5185 rectangleCount = rectangleCount_;
5186 return *this;
5187 }
5188
5189 PresentRegionKHR& setPRectangles( const RectLayerKHR* pRectangles_ )
5190 {
5191 pRectangles = pRectangles_;
5192 return *this;
5193 }
5194
5195 operator const VkPresentRegionKHR&() const
5196 {
5197 return *reinterpret_cast<const VkPresentRegionKHR*>(this);
5198 }
5199
5200 bool operator==( PresentRegionKHR const& rhs ) const
5201 {
5202 return ( rectangleCount == rhs.rectangleCount )
5203 && ( pRectangles == rhs.pRectangles );
5204 }
5205
5206 bool operator!=( PresentRegionKHR const& rhs ) const
5207 {
5208 return !operator==( rhs );
5209 }
5210
5211 uint32_t rectangleCount;
5212 const RectLayerKHR* pRectangles;
5213 };
5214 static_assert( sizeof( PresentRegionKHR ) == sizeof( VkPresentRegionKHR ), "struct and wrapper have different size!" );
5215
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005216 struct XYColorEXT
5217 {
5218 XYColorEXT( float x_ = 0, float y_ = 0 )
5219 : x( x_ )
5220 , y( y_ )
5221 {
5222 }
5223
5224 XYColorEXT( VkXYColorEXT const & rhs )
5225 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005226 memcpy( this, &rhs, sizeof( XYColorEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005227 }
5228
5229 XYColorEXT& operator=( VkXYColorEXT const & rhs )
5230 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005231 memcpy( this, &rhs, sizeof( XYColorEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005232 return *this;
5233 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005234 XYColorEXT& setX( float x_ )
5235 {
5236 x = x_;
5237 return *this;
5238 }
5239
5240 XYColorEXT& setY( float y_ )
5241 {
5242 y = y_;
5243 return *this;
5244 }
5245
5246 operator const VkXYColorEXT&() const
5247 {
5248 return *reinterpret_cast<const VkXYColorEXT*>(this);
5249 }
5250
5251 bool operator==( XYColorEXT const& rhs ) const
5252 {
5253 return ( x == rhs.x )
5254 && ( y == rhs.y );
5255 }
5256
5257 bool operator!=( XYColorEXT const& rhs ) const
5258 {
5259 return !operator==( rhs );
5260 }
5261
5262 float x;
5263 float y;
5264 };
5265 static_assert( sizeof( XYColorEXT ) == sizeof( VkXYColorEXT ), "struct and wrapper have different size!" );
5266
5267 struct RefreshCycleDurationGOOGLE
5268 {
5269 RefreshCycleDurationGOOGLE( uint64_t refreshDuration_ = 0 )
5270 : refreshDuration( refreshDuration_ )
5271 {
5272 }
5273
5274 RefreshCycleDurationGOOGLE( VkRefreshCycleDurationGOOGLE const & rhs )
5275 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005276 memcpy( this, &rhs, sizeof( RefreshCycleDurationGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005277 }
5278
5279 RefreshCycleDurationGOOGLE& operator=( VkRefreshCycleDurationGOOGLE const & rhs )
5280 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005281 memcpy( this, &rhs, sizeof( RefreshCycleDurationGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005282 return *this;
5283 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005284 RefreshCycleDurationGOOGLE& setRefreshDuration( uint64_t refreshDuration_ )
5285 {
5286 refreshDuration = refreshDuration_;
5287 return *this;
5288 }
5289
5290 operator const VkRefreshCycleDurationGOOGLE&() const
5291 {
5292 return *reinterpret_cast<const VkRefreshCycleDurationGOOGLE*>(this);
5293 }
5294
5295 bool operator==( RefreshCycleDurationGOOGLE const& rhs ) const
5296 {
5297 return ( refreshDuration == rhs.refreshDuration );
5298 }
5299
5300 bool operator!=( RefreshCycleDurationGOOGLE const& rhs ) const
5301 {
5302 return !operator==( rhs );
5303 }
5304
5305 uint64_t refreshDuration;
5306 };
5307 static_assert( sizeof( RefreshCycleDurationGOOGLE ) == sizeof( VkRefreshCycleDurationGOOGLE ), "struct and wrapper have different size!" );
5308
5309 struct PastPresentationTimingGOOGLE
5310 {
5311 PastPresentationTimingGOOGLE( uint32_t presentID_ = 0, uint64_t desiredPresentTime_ = 0, uint64_t actualPresentTime_ = 0, uint64_t earliestPresentTime_ = 0, uint64_t presentMargin_ = 0 )
5312 : presentID( presentID_ )
5313 , desiredPresentTime( desiredPresentTime_ )
5314 , actualPresentTime( actualPresentTime_ )
5315 , earliestPresentTime( earliestPresentTime_ )
5316 , presentMargin( presentMargin_ )
5317 {
5318 }
5319
5320 PastPresentationTimingGOOGLE( VkPastPresentationTimingGOOGLE const & rhs )
5321 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005322 memcpy( this, &rhs, sizeof( PastPresentationTimingGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005323 }
5324
5325 PastPresentationTimingGOOGLE& operator=( VkPastPresentationTimingGOOGLE const & rhs )
5326 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005327 memcpy( this, &rhs, sizeof( PastPresentationTimingGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005328 return *this;
5329 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005330 PastPresentationTimingGOOGLE& setPresentID( uint32_t presentID_ )
5331 {
5332 presentID = presentID_;
5333 return *this;
5334 }
5335
5336 PastPresentationTimingGOOGLE& setDesiredPresentTime( uint64_t desiredPresentTime_ )
5337 {
5338 desiredPresentTime = desiredPresentTime_;
5339 return *this;
5340 }
5341
5342 PastPresentationTimingGOOGLE& setActualPresentTime( uint64_t actualPresentTime_ )
5343 {
5344 actualPresentTime = actualPresentTime_;
5345 return *this;
5346 }
5347
5348 PastPresentationTimingGOOGLE& setEarliestPresentTime( uint64_t earliestPresentTime_ )
5349 {
5350 earliestPresentTime = earliestPresentTime_;
5351 return *this;
5352 }
5353
5354 PastPresentationTimingGOOGLE& setPresentMargin( uint64_t presentMargin_ )
5355 {
5356 presentMargin = presentMargin_;
5357 return *this;
5358 }
5359
5360 operator const VkPastPresentationTimingGOOGLE&() const
5361 {
5362 return *reinterpret_cast<const VkPastPresentationTimingGOOGLE*>(this);
5363 }
5364
5365 bool operator==( PastPresentationTimingGOOGLE const& rhs ) const
5366 {
5367 return ( presentID == rhs.presentID )
5368 && ( desiredPresentTime == rhs.desiredPresentTime )
5369 && ( actualPresentTime == rhs.actualPresentTime )
5370 && ( earliestPresentTime == rhs.earliestPresentTime )
5371 && ( presentMargin == rhs.presentMargin );
5372 }
5373
5374 bool operator!=( PastPresentationTimingGOOGLE const& rhs ) const
5375 {
5376 return !operator==( rhs );
5377 }
5378
5379 uint32_t presentID;
5380 uint64_t desiredPresentTime;
5381 uint64_t actualPresentTime;
5382 uint64_t earliestPresentTime;
5383 uint64_t presentMargin;
5384 };
5385 static_assert( sizeof( PastPresentationTimingGOOGLE ) == sizeof( VkPastPresentationTimingGOOGLE ), "struct and wrapper have different size!" );
5386
5387 struct PresentTimeGOOGLE
5388 {
5389 PresentTimeGOOGLE( uint32_t presentID_ = 0, uint64_t desiredPresentTime_ = 0 )
5390 : presentID( presentID_ )
5391 , desiredPresentTime( desiredPresentTime_ )
5392 {
5393 }
5394
5395 PresentTimeGOOGLE( VkPresentTimeGOOGLE const & rhs )
5396 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005397 memcpy( this, &rhs, sizeof( PresentTimeGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005398 }
5399
5400 PresentTimeGOOGLE& operator=( VkPresentTimeGOOGLE const & rhs )
5401 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005402 memcpy( this, &rhs, sizeof( PresentTimeGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005403 return *this;
5404 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005405 PresentTimeGOOGLE& setPresentID( uint32_t presentID_ )
5406 {
5407 presentID = presentID_;
5408 return *this;
5409 }
5410
5411 PresentTimeGOOGLE& setDesiredPresentTime( uint64_t desiredPresentTime_ )
5412 {
5413 desiredPresentTime = desiredPresentTime_;
5414 return *this;
5415 }
5416
5417 operator const VkPresentTimeGOOGLE&() const
5418 {
5419 return *reinterpret_cast<const VkPresentTimeGOOGLE*>(this);
5420 }
5421
5422 bool operator==( PresentTimeGOOGLE const& rhs ) const
5423 {
5424 return ( presentID == rhs.presentID )
5425 && ( desiredPresentTime == rhs.desiredPresentTime );
5426 }
5427
5428 bool operator!=( PresentTimeGOOGLE const& rhs ) const
5429 {
5430 return !operator==( rhs );
5431 }
5432
5433 uint32_t presentID;
5434 uint64_t desiredPresentTime;
5435 };
5436 static_assert( sizeof( PresentTimeGOOGLE ) == sizeof( VkPresentTimeGOOGLE ), "struct and wrapper have different size!" );
5437
Mark Young0f183a82017-02-28 09:58:04 -07005438 struct ViewportWScalingNV
5439 {
5440 ViewportWScalingNV( float xcoeff_ = 0, float ycoeff_ = 0 )
5441 : xcoeff( xcoeff_ )
5442 , ycoeff( ycoeff_ )
5443 {
5444 }
5445
5446 ViewportWScalingNV( VkViewportWScalingNV const & rhs )
5447 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005448 memcpy( this, &rhs, sizeof( ViewportWScalingNV ) );
Mark Young0f183a82017-02-28 09:58:04 -07005449 }
5450
5451 ViewportWScalingNV& operator=( VkViewportWScalingNV const & rhs )
5452 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005453 memcpy( this, &rhs, sizeof( ViewportWScalingNV ) );
Mark Young0f183a82017-02-28 09:58:04 -07005454 return *this;
5455 }
Mark Young0f183a82017-02-28 09:58:04 -07005456 ViewportWScalingNV& setXcoeff( float xcoeff_ )
5457 {
5458 xcoeff = xcoeff_;
5459 return *this;
5460 }
5461
5462 ViewportWScalingNV& setYcoeff( float ycoeff_ )
5463 {
5464 ycoeff = ycoeff_;
5465 return *this;
5466 }
5467
5468 operator const VkViewportWScalingNV&() const
5469 {
5470 return *reinterpret_cast<const VkViewportWScalingNV*>(this);
5471 }
5472
5473 bool operator==( ViewportWScalingNV const& rhs ) const
5474 {
5475 return ( xcoeff == rhs.xcoeff )
5476 && ( ycoeff == rhs.ycoeff );
5477 }
5478
5479 bool operator!=( ViewportWScalingNV const& rhs ) const
5480 {
5481 return !operator==( rhs );
5482 }
5483
5484 float xcoeff;
5485 float ycoeff;
5486 };
5487 static_assert( sizeof( ViewportWScalingNV ) == sizeof( VkViewportWScalingNV ), "struct and wrapper have different size!" );
5488
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06005489 struct SampleLocationEXT
5490 {
5491 SampleLocationEXT( float x_ = 0, float y_ = 0 )
5492 : x( x_ )
5493 , y( y_ )
5494 {
5495 }
5496
5497 SampleLocationEXT( VkSampleLocationEXT const & rhs )
5498 {
5499 memcpy( this, &rhs, sizeof( SampleLocationEXT ) );
5500 }
5501
5502 SampleLocationEXT& operator=( VkSampleLocationEXT const & rhs )
5503 {
5504 memcpy( this, &rhs, sizeof( SampleLocationEXT ) );
5505 return *this;
5506 }
5507 SampleLocationEXT& setX( float x_ )
5508 {
5509 x = x_;
5510 return *this;
5511 }
5512
5513 SampleLocationEXT& setY( float y_ )
5514 {
5515 y = y_;
5516 return *this;
5517 }
5518
5519 operator const VkSampleLocationEXT&() const
5520 {
5521 return *reinterpret_cast<const VkSampleLocationEXT*>(this);
5522 }
5523
5524 bool operator==( SampleLocationEXT const& rhs ) const
5525 {
5526 return ( x == rhs.x )
5527 && ( y == rhs.y );
5528 }
5529
5530 bool operator!=( SampleLocationEXT const& rhs ) const
5531 {
5532 return !operator==( rhs );
5533 }
5534
5535 float x;
5536 float y;
5537 };
5538 static_assert( sizeof( SampleLocationEXT ) == sizeof( VkSampleLocationEXT ), "struct and wrapper have different size!" );
5539
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005540 enum class ImageLayout
5541 {
5542 eUndefined = VK_IMAGE_LAYOUT_UNDEFINED,
5543 eGeneral = VK_IMAGE_LAYOUT_GENERAL,
5544 eColorAttachmentOptimal = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
5545 eDepthStencilAttachmentOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
5546 eDepthStencilReadOnlyOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,
5547 eShaderReadOnlyOptimal = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
5548 eTransferSrcOptimal = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
5549 eTransferDstOptimal = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
5550 ePreinitialized = VK_IMAGE_LAYOUT_PREINITIALIZED,
Mark Lobodzinski54385432017-05-15 10:27:52 -06005551 ePresentSrcKHR = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR,
Lenny Komowb79f04a2017-09-18 17:07:00 -06005552 eSharedPresentKHR = VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR,
5553 eDepthReadOnlyStencilAttachmentOptimalKHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR,
5554 eDepthAttachmentStencilReadOnlyOptimalKHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005555 };
5556
5557 struct DescriptorImageInfo
5558 {
5559 DescriptorImageInfo( Sampler sampler_ = Sampler(), ImageView imageView_ = ImageView(), ImageLayout imageLayout_ = ImageLayout::eUndefined )
5560 : sampler( sampler_ )
5561 , imageView( imageView_ )
5562 , imageLayout( imageLayout_ )
5563 {
5564 }
5565
5566 DescriptorImageInfo( VkDescriptorImageInfo const & rhs )
5567 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005568 memcpy( this, &rhs, sizeof( DescriptorImageInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005569 }
5570
5571 DescriptorImageInfo& operator=( VkDescriptorImageInfo const & rhs )
5572 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005573 memcpy( this, &rhs, sizeof( DescriptorImageInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005574 return *this;
5575 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005576 DescriptorImageInfo& setSampler( Sampler sampler_ )
5577 {
5578 sampler = sampler_;
5579 return *this;
5580 }
5581
5582 DescriptorImageInfo& setImageView( ImageView imageView_ )
5583 {
5584 imageView = imageView_;
5585 return *this;
5586 }
5587
5588 DescriptorImageInfo& setImageLayout( ImageLayout imageLayout_ )
5589 {
5590 imageLayout = imageLayout_;
5591 return *this;
5592 }
5593
5594 operator const VkDescriptorImageInfo&() const
5595 {
5596 return *reinterpret_cast<const VkDescriptorImageInfo*>(this);
5597 }
5598
5599 bool operator==( DescriptorImageInfo const& rhs ) const
5600 {
5601 return ( sampler == rhs.sampler )
5602 && ( imageView == rhs.imageView )
5603 && ( imageLayout == rhs.imageLayout );
5604 }
5605
5606 bool operator!=( DescriptorImageInfo const& rhs ) const
5607 {
5608 return !operator==( rhs );
5609 }
5610
5611 Sampler sampler;
5612 ImageView imageView;
5613 ImageLayout imageLayout;
5614 };
5615 static_assert( sizeof( DescriptorImageInfo ) == sizeof( VkDescriptorImageInfo ), "struct and wrapper have different size!" );
5616
5617 struct AttachmentReference
5618 {
5619 AttachmentReference( uint32_t attachment_ = 0, ImageLayout layout_ = ImageLayout::eUndefined )
5620 : attachment( attachment_ )
5621 , layout( layout_ )
5622 {
5623 }
5624
5625 AttachmentReference( VkAttachmentReference const & rhs )
5626 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005627 memcpy( this, &rhs, sizeof( AttachmentReference ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005628 }
5629
5630 AttachmentReference& operator=( VkAttachmentReference const & rhs )
5631 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005632 memcpy( this, &rhs, sizeof( AttachmentReference ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005633 return *this;
5634 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005635 AttachmentReference& setAttachment( uint32_t attachment_ )
5636 {
5637 attachment = attachment_;
5638 return *this;
5639 }
5640
5641 AttachmentReference& setLayout( ImageLayout layout_ )
5642 {
5643 layout = layout_;
5644 return *this;
5645 }
5646
5647 operator const VkAttachmentReference&() const
5648 {
5649 return *reinterpret_cast<const VkAttachmentReference*>(this);
5650 }
5651
5652 bool operator==( AttachmentReference const& rhs ) const
5653 {
5654 return ( attachment == rhs.attachment )
5655 && ( layout == rhs.layout );
5656 }
5657
5658 bool operator!=( AttachmentReference const& rhs ) const
5659 {
5660 return !operator==( rhs );
5661 }
5662
5663 uint32_t attachment;
5664 ImageLayout layout;
5665 };
5666 static_assert( sizeof( AttachmentReference ) == sizeof( VkAttachmentReference ), "struct and wrapper have different size!" );
5667
5668 enum class AttachmentLoadOp
5669 {
5670 eLoad = VK_ATTACHMENT_LOAD_OP_LOAD,
5671 eClear = VK_ATTACHMENT_LOAD_OP_CLEAR,
5672 eDontCare = VK_ATTACHMENT_LOAD_OP_DONT_CARE
5673 };
5674
5675 enum class AttachmentStoreOp
5676 {
5677 eStore = VK_ATTACHMENT_STORE_OP_STORE,
5678 eDontCare = VK_ATTACHMENT_STORE_OP_DONT_CARE
5679 };
5680
5681 enum class ImageType
5682 {
5683 e1D = VK_IMAGE_TYPE_1D,
5684 e2D = VK_IMAGE_TYPE_2D,
5685 e3D = VK_IMAGE_TYPE_3D
5686 };
5687
5688 enum class ImageTiling
5689 {
5690 eOptimal = VK_IMAGE_TILING_OPTIMAL,
5691 eLinear = VK_IMAGE_TILING_LINEAR
5692 };
5693
5694 enum class ImageViewType
5695 {
5696 e1D = VK_IMAGE_VIEW_TYPE_1D,
5697 e2D = VK_IMAGE_VIEW_TYPE_2D,
5698 e3D = VK_IMAGE_VIEW_TYPE_3D,
5699 eCube = VK_IMAGE_VIEW_TYPE_CUBE,
5700 e1DArray = VK_IMAGE_VIEW_TYPE_1D_ARRAY,
5701 e2DArray = VK_IMAGE_VIEW_TYPE_2D_ARRAY,
5702 eCubeArray = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
5703 };
5704
5705 enum class CommandBufferLevel
5706 {
5707 ePrimary = VK_COMMAND_BUFFER_LEVEL_PRIMARY,
5708 eSecondary = VK_COMMAND_BUFFER_LEVEL_SECONDARY
5709 };
5710
5711 enum class ComponentSwizzle
5712 {
5713 eIdentity = VK_COMPONENT_SWIZZLE_IDENTITY,
5714 eZero = VK_COMPONENT_SWIZZLE_ZERO,
5715 eOne = VK_COMPONENT_SWIZZLE_ONE,
5716 eR = VK_COMPONENT_SWIZZLE_R,
5717 eG = VK_COMPONENT_SWIZZLE_G,
5718 eB = VK_COMPONENT_SWIZZLE_B,
5719 eA = VK_COMPONENT_SWIZZLE_A
5720 };
5721
5722 struct ComponentMapping
5723 {
5724 ComponentMapping( ComponentSwizzle r_ = ComponentSwizzle::eIdentity, ComponentSwizzle g_ = ComponentSwizzle::eIdentity, ComponentSwizzle b_ = ComponentSwizzle::eIdentity, ComponentSwizzle a_ = ComponentSwizzle::eIdentity )
5725 : r( r_ )
5726 , g( g_ )
5727 , b( b_ )
5728 , a( a_ )
5729 {
5730 }
5731
5732 ComponentMapping( VkComponentMapping const & rhs )
5733 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005734 memcpy( this, &rhs, sizeof( ComponentMapping ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005735 }
5736
5737 ComponentMapping& operator=( VkComponentMapping const & rhs )
5738 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005739 memcpy( this, &rhs, sizeof( ComponentMapping ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005740 return *this;
5741 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005742 ComponentMapping& setR( ComponentSwizzle r_ )
5743 {
5744 r = r_;
5745 return *this;
5746 }
5747
5748 ComponentMapping& setG( ComponentSwizzle g_ )
5749 {
5750 g = g_;
5751 return *this;
5752 }
5753
5754 ComponentMapping& setB( ComponentSwizzle b_ )
5755 {
5756 b = b_;
5757 return *this;
5758 }
5759
5760 ComponentMapping& setA( ComponentSwizzle a_ )
5761 {
5762 a = a_;
5763 return *this;
5764 }
5765
5766 operator const VkComponentMapping&() const
5767 {
5768 return *reinterpret_cast<const VkComponentMapping*>(this);
5769 }
5770
5771 bool operator==( ComponentMapping const& rhs ) const
5772 {
5773 return ( r == rhs.r )
5774 && ( g == rhs.g )
5775 && ( b == rhs.b )
5776 && ( a == rhs.a );
5777 }
5778
5779 bool operator!=( ComponentMapping const& rhs ) const
5780 {
5781 return !operator==( rhs );
5782 }
5783
5784 ComponentSwizzle r;
5785 ComponentSwizzle g;
5786 ComponentSwizzle b;
5787 ComponentSwizzle a;
5788 };
5789 static_assert( sizeof( ComponentMapping ) == sizeof( VkComponentMapping ), "struct and wrapper have different size!" );
5790
5791 enum class DescriptorType
5792 {
5793 eSampler = VK_DESCRIPTOR_TYPE_SAMPLER,
5794 eCombinedImageSampler = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
5795 eSampledImage = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
5796 eStorageImage = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,
5797 eUniformTexelBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER,
5798 eStorageTexelBuffer = VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER,
5799 eUniformBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
5800 eStorageBuffer = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
5801 eUniformBufferDynamic = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
5802 eStorageBufferDynamic = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC,
5803 eInputAttachment = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
5804 };
5805
5806 struct DescriptorPoolSize
5807 {
5808 DescriptorPoolSize( DescriptorType type_ = DescriptorType::eSampler, uint32_t descriptorCount_ = 0 )
5809 : type( type_ )
5810 , descriptorCount( descriptorCount_ )
5811 {
5812 }
5813
5814 DescriptorPoolSize( VkDescriptorPoolSize const & rhs )
5815 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005816 memcpy( this, &rhs, sizeof( DescriptorPoolSize ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005817 }
5818
5819 DescriptorPoolSize& operator=( VkDescriptorPoolSize const & rhs )
5820 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005821 memcpy( this, &rhs, sizeof( DescriptorPoolSize ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005822 return *this;
5823 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005824 DescriptorPoolSize& setType( DescriptorType type_ )
5825 {
5826 type = type_;
5827 return *this;
5828 }
5829
5830 DescriptorPoolSize& setDescriptorCount( uint32_t descriptorCount_ )
5831 {
5832 descriptorCount = descriptorCount_;
5833 return *this;
5834 }
5835
5836 operator const VkDescriptorPoolSize&() const
5837 {
5838 return *reinterpret_cast<const VkDescriptorPoolSize*>(this);
5839 }
5840
5841 bool operator==( DescriptorPoolSize const& rhs ) const
5842 {
5843 return ( type == rhs.type )
5844 && ( descriptorCount == rhs.descriptorCount );
5845 }
5846
5847 bool operator!=( DescriptorPoolSize const& rhs ) const
5848 {
5849 return !operator==( rhs );
5850 }
5851
5852 DescriptorType type;
5853 uint32_t descriptorCount;
5854 };
5855 static_assert( sizeof( DescriptorPoolSize ) == sizeof( VkDescriptorPoolSize ), "struct and wrapper have different size!" );
5856
Mark Young0f183a82017-02-28 09:58:04 -07005857 struct DescriptorUpdateTemplateEntryKHR
5858 {
5859 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 )
5860 : dstBinding( dstBinding_ )
5861 , dstArrayElement( dstArrayElement_ )
5862 , descriptorCount( descriptorCount_ )
5863 , descriptorType( descriptorType_ )
5864 , offset( offset_ )
5865 , stride( stride_ )
5866 {
5867 }
5868
5869 DescriptorUpdateTemplateEntryKHR( VkDescriptorUpdateTemplateEntryKHR const & rhs )
5870 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005871 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateEntryKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -07005872 }
5873
5874 DescriptorUpdateTemplateEntryKHR& operator=( VkDescriptorUpdateTemplateEntryKHR const & rhs )
5875 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005876 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateEntryKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -07005877 return *this;
5878 }
Mark Young0f183a82017-02-28 09:58:04 -07005879 DescriptorUpdateTemplateEntryKHR& setDstBinding( uint32_t dstBinding_ )
5880 {
5881 dstBinding = dstBinding_;
5882 return *this;
5883 }
5884
5885 DescriptorUpdateTemplateEntryKHR& setDstArrayElement( uint32_t dstArrayElement_ )
5886 {
5887 dstArrayElement = dstArrayElement_;
5888 return *this;
5889 }
5890
5891 DescriptorUpdateTemplateEntryKHR& setDescriptorCount( uint32_t descriptorCount_ )
5892 {
5893 descriptorCount = descriptorCount_;
5894 return *this;
5895 }
5896
5897 DescriptorUpdateTemplateEntryKHR& setDescriptorType( DescriptorType descriptorType_ )
5898 {
5899 descriptorType = descriptorType_;
5900 return *this;
5901 }
5902
5903 DescriptorUpdateTemplateEntryKHR& setOffset( size_t offset_ )
5904 {
5905 offset = offset_;
5906 return *this;
5907 }
5908
5909 DescriptorUpdateTemplateEntryKHR& setStride( size_t stride_ )
5910 {
5911 stride = stride_;
5912 return *this;
5913 }
5914
5915 operator const VkDescriptorUpdateTemplateEntryKHR&() const
5916 {
5917 return *reinterpret_cast<const VkDescriptorUpdateTemplateEntryKHR*>(this);
5918 }
5919
5920 bool operator==( DescriptorUpdateTemplateEntryKHR const& rhs ) const
5921 {
5922 return ( dstBinding == rhs.dstBinding )
5923 && ( dstArrayElement == rhs.dstArrayElement )
5924 && ( descriptorCount == rhs.descriptorCount )
5925 && ( descriptorType == rhs.descriptorType )
5926 && ( offset == rhs.offset )
5927 && ( stride == rhs.stride );
5928 }
5929
5930 bool operator!=( DescriptorUpdateTemplateEntryKHR const& rhs ) const
5931 {
5932 return !operator==( rhs );
5933 }
5934
5935 uint32_t dstBinding;
5936 uint32_t dstArrayElement;
5937 uint32_t descriptorCount;
5938 DescriptorType descriptorType;
5939 size_t offset;
5940 size_t stride;
5941 };
5942 static_assert( sizeof( DescriptorUpdateTemplateEntryKHR ) == sizeof( VkDescriptorUpdateTemplateEntryKHR ), "struct and wrapper have different size!" );
5943
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005944 enum class QueryType
5945 {
5946 eOcclusion = VK_QUERY_TYPE_OCCLUSION,
5947 ePipelineStatistics = VK_QUERY_TYPE_PIPELINE_STATISTICS,
5948 eTimestamp = VK_QUERY_TYPE_TIMESTAMP
5949 };
5950
5951 enum class BorderColor
5952 {
5953 eFloatTransparentBlack = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,
5954 eIntTransparentBlack = VK_BORDER_COLOR_INT_TRANSPARENT_BLACK,
5955 eFloatOpaqueBlack = VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK,
5956 eIntOpaqueBlack = VK_BORDER_COLOR_INT_OPAQUE_BLACK,
5957 eFloatOpaqueWhite = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE,
5958 eIntOpaqueWhite = VK_BORDER_COLOR_INT_OPAQUE_WHITE
5959 };
5960
5961 enum class PipelineBindPoint
5962 {
5963 eGraphics = VK_PIPELINE_BIND_POINT_GRAPHICS,
5964 eCompute = VK_PIPELINE_BIND_POINT_COMPUTE
5965 };
5966
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005967 enum class PipelineCacheHeaderVersion
5968 {
5969 eOne = VK_PIPELINE_CACHE_HEADER_VERSION_ONE
5970 };
5971
5972 enum class PrimitiveTopology
5973 {
5974 ePointList = VK_PRIMITIVE_TOPOLOGY_POINT_LIST,
5975 eLineList = VK_PRIMITIVE_TOPOLOGY_LINE_LIST,
5976 eLineStrip = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP,
5977 eTriangleList = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,
5978 eTriangleStrip = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP,
5979 eTriangleFan = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN,
5980 eLineListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY,
5981 eLineStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY,
5982 eTriangleListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY,
5983 eTriangleStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY,
5984 ePatchList = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
5985 };
5986
5987 enum class SharingMode
5988 {
5989 eExclusive = VK_SHARING_MODE_EXCLUSIVE,
5990 eConcurrent = VK_SHARING_MODE_CONCURRENT
5991 };
5992
5993 enum class IndexType
5994 {
5995 eUint16 = VK_INDEX_TYPE_UINT16,
5996 eUint32 = VK_INDEX_TYPE_UINT32
5997 };
5998
5999 enum class Filter
6000 {
6001 eNearest = VK_FILTER_NEAREST,
6002 eLinear = VK_FILTER_LINEAR,
6003 eCubicIMG = VK_FILTER_CUBIC_IMG
6004 };
6005
6006 enum class SamplerMipmapMode
6007 {
6008 eNearest = VK_SAMPLER_MIPMAP_MODE_NEAREST,
6009 eLinear = VK_SAMPLER_MIPMAP_MODE_LINEAR
6010 };
6011
6012 enum class SamplerAddressMode
6013 {
6014 eRepeat = VK_SAMPLER_ADDRESS_MODE_REPEAT,
6015 eMirroredRepeat = VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT,
6016 eClampToEdge = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
6017 eClampToBorder = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER,
6018 eMirrorClampToEdge = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE
6019 };
6020
6021 enum class CompareOp
6022 {
6023 eNever = VK_COMPARE_OP_NEVER,
6024 eLess = VK_COMPARE_OP_LESS,
6025 eEqual = VK_COMPARE_OP_EQUAL,
6026 eLessOrEqual = VK_COMPARE_OP_LESS_OR_EQUAL,
6027 eGreater = VK_COMPARE_OP_GREATER,
6028 eNotEqual = VK_COMPARE_OP_NOT_EQUAL,
6029 eGreaterOrEqual = VK_COMPARE_OP_GREATER_OR_EQUAL,
6030 eAlways = VK_COMPARE_OP_ALWAYS
6031 };
6032
6033 enum class PolygonMode
6034 {
6035 eFill = VK_POLYGON_MODE_FILL,
6036 eLine = VK_POLYGON_MODE_LINE,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006037 ePoint = VK_POLYGON_MODE_POINT,
6038 eFillRectangleNV = VK_POLYGON_MODE_FILL_RECTANGLE_NV
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006039 };
6040
6041 enum class CullModeFlagBits
6042 {
6043 eNone = VK_CULL_MODE_NONE,
6044 eFront = VK_CULL_MODE_FRONT_BIT,
6045 eBack = VK_CULL_MODE_BACK_BIT,
6046 eFrontAndBack = VK_CULL_MODE_FRONT_AND_BACK
6047 };
6048
6049 using CullModeFlags = Flags<CullModeFlagBits, VkCullModeFlags>;
6050
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006051 VULKAN_HPP_INLINE CullModeFlags operator|( CullModeFlagBits bit0, CullModeFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006052 {
6053 return CullModeFlags( bit0 ) | bit1;
6054 }
6055
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006056 VULKAN_HPP_INLINE CullModeFlags operator~( CullModeFlagBits bits )
6057 {
6058 return ~( CullModeFlags( bits ) );
6059 }
6060
6061 template <> struct FlagTraits<CullModeFlagBits>
6062 {
6063 enum
6064 {
6065 allFlags = VkFlags(CullModeFlagBits::eNone) | VkFlags(CullModeFlagBits::eFront) | VkFlags(CullModeFlagBits::eBack) | VkFlags(CullModeFlagBits::eFrontAndBack)
6066 };
6067 };
6068
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006069 enum class FrontFace
6070 {
6071 eCounterClockwise = VK_FRONT_FACE_COUNTER_CLOCKWISE,
6072 eClockwise = VK_FRONT_FACE_CLOCKWISE
6073 };
6074
6075 enum class BlendFactor
6076 {
6077 eZero = VK_BLEND_FACTOR_ZERO,
6078 eOne = VK_BLEND_FACTOR_ONE,
6079 eSrcColor = VK_BLEND_FACTOR_SRC_COLOR,
6080 eOneMinusSrcColor = VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR,
6081 eDstColor = VK_BLEND_FACTOR_DST_COLOR,
6082 eOneMinusDstColor = VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR,
6083 eSrcAlpha = VK_BLEND_FACTOR_SRC_ALPHA,
6084 eOneMinusSrcAlpha = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA,
6085 eDstAlpha = VK_BLEND_FACTOR_DST_ALPHA,
6086 eOneMinusDstAlpha = VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA,
6087 eConstantColor = VK_BLEND_FACTOR_CONSTANT_COLOR,
6088 eOneMinusConstantColor = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR,
6089 eConstantAlpha = VK_BLEND_FACTOR_CONSTANT_ALPHA,
6090 eOneMinusConstantAlpha = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,
6091 eSrcAlphaSaturate = VK_BLEND_FACTOR_SRC_ALPHA_SATURATE,
6092 eSrc1Color = VK_BLEND_FACTOR_SRC1_COLOR,
6093 eOneMinusSrc1Color = VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,
6094 eSrc1Alpha = VK_BLEND_FACTOR_SRC1_ALPHA,
6095 eOneMinusSrc1Alpha = VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
6096 };
6097
6098 enum class BlendOp
6099 {
6100 eAdd = VK_BLEND_OP_ADD,
6101 eSubtract = VK_BLEND_OP_SUBTRACT,
6102 eReverseSubtract = VK_BLEND_OP_REVERSE_SUBTRACT,
6103 eMin = VK_BLEND_OP_MIN,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006104 eMax = VK_BLEND_OP_MAX,
6105 eZeroEXT = VK_BLEND_OP_ZERO_EXT,
6106 eSrcEXT = VK_BLEND_OP_SRC_EXT,
6107 eDstEXT = VK_BLEND_OP_DST_EXT,
6108 eSrcOverEXT = VK_BLEND_OP_SRC_OVER_EXT,
6109 eDstOverEXT = VK_BLEND_OP_DST_OVER_EXT,
6110 eSrcInEXT = VK_BLEND_OP_SRC_IN_EXT,
6111 eDstInEXT = VK_BLEND_OP_DST_IN_EXT,
6112 eSrcOutEXT = VK_BLEND_OP_SRC_OUT_EXT,
6113 eDstOutEXT = VK_BLEND_OP_DST_OUT_EXT,
6114 eSrcAtopEXT = VK_BLEND_OP_SRC_ATOP_EXT,
6115 eDstAtopEXT = VK_BLEND_OP_DST_ATOP_EXT,
6116 eXorEXT = VK_BLEND_OP_XOR_EXT,
6117 eMultiplyEXT = VK_BLEND_OP_MULTIPLY_EXT,
6118 eScreenEXT = VK_BLEND_OP_SCREEN_EXT,
6119 eOverlayEXT = VK_BLEND_OP_OVERLAY_EXT,
6120 eDarkenEXT = VK_BLEND_OP_DARKEN_EXT,
6121 eLightenEXT = VK_BLEND_OP_LIGHTEN_EXT,
6122 eColordodgeEXT = VK_BLEND_OP_COLORDODGE_EXT,
6123 eColorburnEXT = VK_BLEND_OP_COLORBURN_EXT,
6124 eHardlightEXT = VK_BLEND_OP_HARDLIGHT_EXT,
6125 eSoftlightEXT = VK_BLEND_OP_SOFTLIGHT_EXT,
6126 eDifferenceEXT = VK_BLEND_OP_DIFFERENCE_EXT,
6127 eExclusionEXT = VK_BLEND_OP_EXCLUSION_EXT,
6128 eInvertEXT = VK_BLEND_OP_INVERT_EXT,
6129 eInvertRgbEXT = VK_BLEND_OP_INVERT_RGB_EXT,
6130 eLineardodgeEXT = VK_BLEND_OP_LINEARDODGE_EXT,
6131 eLinearburnEXT = VK_BLEND_OP_LINEARBURN_EXT,
6132 eVividlightEXT = VK_BLEND_OP_VIVIDLIGHT_EXT,
6133 eLinearlightEXT = VK_BLEND_OP_LINEARLIGHT_EXT,
6134 ePinlightEXT = VK_BLEND_OP_PINLIGHT_EXT,
6135 eHardmixEXT = VK_BLEND_OP_HARDMIX_EXT,
6136 eHslHueEXT = VK_BLEND_OP_HSL_HUE_EXT,
6137 eHslSaturationEXT = VK_BLEND_OP_HSL_SATURATION_EXT,
6138 eHslColorEXT = VK_BLEND_OP_HSL_COLOR_EXT,
6139 eHslLuminosityEXT = VK_BLEND_OP_HSL_LUMINOSITY_EXT,
6140 ePlusEXT = VK_BLEND_OP_PLUS_EXT,
6141 ePlusClampedEXT = VK_BLEND_OP_PLUS_CLAMPED_EXT,
6142 ePlusClampedAlphaEXT = VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT,
6143 ePlusDarkerEXT = VK_BLEND_OP_PLUS_DARKER_EXT,
6144 eMinusEXT = VK_BLEND_OP_MINUS_EXT,
6145 eMinusClampedEXT = VK_BLEND_OP_MINUS_CLAMPED_EXT,
6146 eContrastEXT = VK_BLEND_OP_CONTRAST_EXT,
6147 eInvertOvgEXT = VK_BLEND_OP_INVERT_OVG_EXT,
6148 eRedEXT = VK_BLEND_OP_RED_EXT,
6149 eGreenEXT = VK_BLEND_OP_GREEN_EXT,
6150 eBlueEXT = VK_BLEND_OP_BLUE_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006151 };
6152
6153 enum class StencilOp
6154 {
6155 eKeep = VK_STENCIL_OP_KEEP,
6156 eZero = VK_STENCIL_OP_ZERO,
6157 eReplace = VK_STENCIL_OP_REPLACE,
6158 eIncrementAndClamp = VK_STENCIL_OP_INCREMENT_AND_CLAMP,
6159 eDecrementAndClamp = VK_STENCIL_OP_DECREMENT_AND_CLAMP,
6160 eInvert = VK_STENCIL_OP_INVERT,
6161 eIncrementAndWrap = VK_STENCIL_OP_INCREMENT_AND_WRAP,
6162 eDecrementAndWrap = VK_STENCIL_OP_DECREMENT_AND_WRAP
6163 };
6164
6165 struct StencilOpState
6166 {
6167 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 )
6168 : failOp( failOp_ )
6169 , passOp( passOp_ )
6170 , depthFailOp( depthFailOp_ )
6171 , compareOp( compareOp_ )
6172 , compareMask( compareMask_ )
6173 , writeMask( writeMask_ )
6174 , reference( reference_ )
6175 {
6176 }
6177
6178 StencilOpState( VkStencilOpState const & rhs )
6179 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006180 memcpy( this, &rhs, sizeof( StencilOpState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006181 }
6182
6183 StencilOpState& operator=( VkStencilOpState const & rhs )
6184 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006185 memcpy( this, &rhs, sizeof( StencilOpState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006186 return *this;
6187 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006188 StencilOpState& setFailOp( StencilOp failOp_ )
6189 {
6190 failOp = failOp_;
6191 return *this;
6192 }
6193
6194 StencilOpState& setPassOp( StencilOp passOp_ )
6195 {
6196 passOp = passOp_;
6197 return *this;
6198 }
6199
6200 StencilOpState& setDepthFailOp( StencilOp depthFailOp_ )
6201 {
6202 depthFailOp = depthFailOp_;
6203 return *this;
6204 }
6205
6206 StencilOpState& setCompareOp( CompareOp compareOp_ )
6207 {
6208 compareOp = compareOp_;
6209 return *this;
6210 }
6211
6212 StencilOpState& setCompareMask( uint32_t compareMask_ )
6213 {
6214 compareMask = compareMask_;
6215 return *this;
6216 }
6217
6218 StencilOpState& setWriteMask( uint32_t writeMask_ )
6219 {
6220 writeMask = writeMask_;
6221 return *this;
6222 }
6223
6224 StencilOpState& setReference( uint32_t reference_ )
6225 {
6226 reference = reference_;
6227 return *this;
6228 }
6229
6230 operator const VkStencilOpState&() const
6231 {
6232 return *reinterpret_cast<const VkStencilOpState*>(this);
6233 }
6234
6235 bool operator==( StencilOpState const& rhs ) const
6236 {
6237 return ( failOp == rhs.failOp )
6238 && ( passOp == rhs.passOp )
6239 && ( depthFailOp == rhs.depthFailOp )
6240 && ( compareOp == rhs.compareOp )
6241 && ( compareMask == rhs.compareMask )
6242 && ( writeMask == rhs.writeMask )
6243 && ( reference == rhs.reference );
6244 }
6245
6246 bool operator!=( StencilOpState const& rhs ) const
6247 {
6248 return !operator==( rhs );
6249 }
6250
6251 StencilOp failOp;
6252 StencilOp passOp;
6253 StencilOp depthFailOp;
6254 CompareOp compareOp;
6255 uint32_t compareMask;
6256 uint32_t writeMask;
6257 uint32_t reference;
6258 };
6259 static_assert( sizeof( StencilOpState ) == sizeof( VkStencilOpState ), "struct and wrapper have different size!" );
6260
6261 enum class LogicOp
6262 {
6263 eClear = VK_LOGIC_OP_CLEAR,
6264 eAnd = VK_LOGIC_OP_AND,
6265 eAndReverse = VK_LOGIC_OP_AND_REVERSE,
6266 eCopy = VK_LOGIC_OP_COPY,
6267 eAndInverted = VK_LOGIC_OP_AND_INVERTED,
6268 eNoOp = VK_LOGIC_OP_NO_OP,
6269 eXor = VK_LOGIC_OP_XOR,
6270 eOr = VK_LOGIC_OP_OR,
6271 eNor = VK_LOGIC_OP_NOR,
6272 eEquivalent = VK_LOGIC_OP_EQUIVALENT,
6273 eInvert = VK_LOGIC_OP_INVERT,
6274 eOrReverse = VK_LOGIC_OP_OR_REVERSE,
6275 eCopyInverted = VK_LOGIC_OP_COPY_INVERTED,
6276 eOrInverted = VK_LOGIC_OP_OR_INVERTED,
6277 eNand = VK_LOGIC_OP_NAND,
6278 eSet = VK_LOGIC_OP_SET
6279 };
6280
6281 enum class InternalAllocationType
6282 {
6283 eExecutable = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE
6284 };
6285
6286 enum class SystemAllocationScope
6287 {
6288 eCommand = VK_SYSTEM_ALLOCATION_SCOPE_COMMAND,
6289 eObject = VK_SYSTEM_ALLOCATION_SCOPE_OBJECT,
6290 eCache = VK_SYSTEM_ALLOCATION_SCOPE_CACHE,
6291 eDevice = VK_SYSTEM_ALLOCATION_SCOPE_DEVICE,
6292 eInstance = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE
6293 };
6294
6295 enum class PhysicalDeviceType
6296 {
6297 eOther = VK_PHYSICAL_DEVICE_TYPE_OTHER,
6298 eIntegratedGpu = VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU,
6299 eDiscreteGpu = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU,
6300 eVirtualGpu = VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU,
6301 eCpu = VK_PHYSICAL_DEVICE_TYPE_CPU
6302 };
6303
6304 enum class VertexInputRate
6305 {
6306 eVertex = VK_VERTEX_INPUT_RATE_VERTEX,
6307 eInstance = VK_VERTEX_INPUT_RATE_INSTANCE
6308 };
6309
6310 struct VertexInputBindingDescription
6311 {
6312 VertexInputBindingDescription( uint32_t binding_ = 0, uint32_t stride_ = 0, VertexInputRate inputRate_ = VertexInputRate::eVertex )
6313 : binding( binding_ )
6314 , stride( stride_ )
6315 , inputRate( inputRate_ )
6316 {
6317 }
6318
6319 VertexInputBindingDescription( VkVertexInputBindingDescription const & rhs )
6320 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006321 memcpy( this, &rhs, sizeof( VertexInputBindingDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006322 }
6323
6324 VertexInputBindingDescription& operator=( VkVertexInputBindingDescription const & rhs )
6325 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006326 memcpy( this, &rhs, sizeof( VertexInputBindingDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006327 return *this;
6328 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006329 VertexInputBindingDescription& setBinding( uint32_t binding_ )
6330 {
6331 binding = binding_;
6332 return *this;
6333 }
6334
6335 VertexInputBindingDescription& setStride( uint32_t stride_ )
6336 {
6337 stride = stride_;
6338 return *this;
6339 }
6340
6341 VertexInputBindingDescription& setInputRate( VertexInputRate inputRate_ )
6342 {
6343 inputRate = inputRate_;
6344 return *this;
6345 }
6346
6347 operator const VkVertexInputBindingDescription&() const
6348 {
6349 return *reinterpret_cast<const VkVertexInputBindingDescription*>(this);
6350 }
6351
6352 bool operator==( VertexInputBindingDescription const& rhs ) const
6353 {
6354 return ( binding == rhs.binding )
6355 && ( stride == rhs.stride )
6356 && ( inputRate == rhs.inputRate );
6357 }
6358
6359 bool operator!=( VertexInputBindingDescription const& rhs ) const
6360 {
6361 return !operator==( rhs );
6362 }
6363
6364 uint32_t binding;
6365 uint32_t stride;
6366 VertexInputRate inputRate;
6367 };
6368 static_assert( sizeof( VertexInputBindingDescription ) == sizeof( VkVertexInputBindingDescription ), "struct and wrapper have different size!" );
6369
6370 enum class Format
6371 {
6372 eUndefined = VK_FORMAT_UNDEFINED,
6373 eR4G4UnormPack8 = VK_FORMAT_R4G4_UNORM_PACK8,
6374 eR4G4B4A4UnormPack16 = VK_FORMAT_R4G4B4A4_UNORM_PACK16,
6375 eB4G4R4A4UnormPack16 = VK_FORMAT_B4G4R4A4_UNORM_PACK16,
6376 eR5G6B5UnormPack16 = VK_FORMAT_R5G6B5_UNORM_PACK16,
6377 eB5G6R5UnormPack16 = VK_FORMAT_B5G6R5_UNORM_PACK16,
6378 eR5G5B5A1UnormPack16 = VK_FORMAT_R5G5B5A1_UNORM_PACK16,
6379 eB5G5R5A1UnormPack16 = VK_FORMAT_B5G5R5A1_UNORM_PACK16,
6380 eA1R5G5B5UnormPack16 = VK_FORMAT_A1R5G5B5_UNORM_PACK16,
6381 eR8Unorm = VK_FORMAT_R8_UNORM,
6382 eR8Snorm = VK_FORMAT_R8_SNORM,
6383 eR8Uscaled = VK_FORMAT_R8_USCALED,
6384 eR8Sscaled = VK_FORMAT_R8_SSCALED,
6385 eR8Uint = VK_FORMAT_R8_UINT,
6386 eR8Sint = VK_FORMAT_R8_SINT,
6387 eR8Srgb = VK_FORMAT_R8_SRGB,
6388 eR8G8Unorm = VK_FORMAT_R8G8_UNORM,
6389 eR8G8Snorm = VK_FORMAT_R8G8_SNORM,
6390 eR8G8Uscaled = VK_FORMAT_R8G8_USCALED,
6391 eR8G8Sscaled = VK_FORMAT_R8G8_SSCALED,
6392 eR8G8Uint = VK_FORMAT_R8G8_UINT,
6393 eR8G8Sint = VK_FORMAT_R8G8_SINT,
6394 eR8G8Srgb = VK_FORMAT_R8G8_SRGB,
6395 eR8G8B8Unorm = VK_FORMAT_R8G8B8_UNORM,
6396 eR8G8B8Snorm = VK_FORMAT_R8G8B8_SNORM,
6397 eR8G8B8Uscaled = VK_FORMAT_R8G8B8_USCALED,
6398 eR8G8B8Sscaled = VK_FORMAT_R8G8B8_SSCALED,
6399 eR8G8B8Uint = VK_FORMAT_R8G8B8_UINT,
6400 eR8G8B8Sint = VK_FORMAT_R8G8B8_SINT,
6401 eR8G8B8Srgb = VK_FORMAT_R8G8B8_SRGB,
6402 eB8G8R8Unorm = VK_FORMAT_B8G8R8_UNORM,
6403 eB8G8R8Snorm = VK_FORMAT_B8G8R8_SNORM,
6404 eB8G8R8Uscaled = VK_FORMAT_B8G8R8_USCALED,
6405 eB8G8R8Sscaled = VK_FORMAT_B8G8R8_SSCALED,
6406 eB8G8R8Uint = VK_FORMAT_B8G8R8_UINT,
6407 eB8G8R8Sint = VK_FORMAT_B8G8R8_SINT,
6408 eB8G8R8Srgb = VK_FORMAT_B8G8R8_SRGB,
6409 eR8G8B8A8Unorm = VK_FORMAT_R8G8B8A8_UNORM,
6410 eR8G8B8A8Snorm = VK_FORMAT_R8G8B8A8_SNORM,
6411 eR8G8B8A8Uscaled = VK_FORMAT_R8G8B8A8_USCALED,
6412 eR8G8B8A8Sscaled = VK_FORMAT_R8G8B8A8_SSCALED,
6413 eR8G8B8A8Uint = VK_FORMAT_R8G8B8A8_UINT,
6414 eR8G8B8A8Sint = VK_FORMAT_R8G8B8A8_SINT,
6415 eR8G8B8A8Srgb = VK_FORMAT_R8G8B8A8_SRGB,
6416 eB8G8R8A8Unorm = VK_FORMAT_B8G8R8A8_UNORM,
6417 eB8G8R8A8Snorm = VK_FORMAT_B8G8R8A8_SNORM,
6418 eB8G8R8A8Uscaled = VK_FORMAT_B8G8R8A8_USCALED,
6419 eB8G8R8A8Sscaled = VK_FORMAT_B8G8R8A8_SSCALED,
6420 eB8G8R8A8Uint = VK_FORMAT_B8G8R8A8_UINT,
6421 eB8G8R8A8Sint = VK_FORMAT_B8G8R8A8_SINT,
6422 eB8G8R8A8Srgb = VK_FORMAT_B8G8R8A8_SRGB,
6423 eA8B8G8R8UnormPack32 = VK_FORMAT_A8B8G8R8_UNORM_PACK32,
6424 eA8B8G8R8SnormPack32 = VK_FORMAT_A8B8G8R8_SNORM_PACK32,
6425 eA8B8G8R8UscaledPack32 = VK_FORMAT_A8B8G8R8_USCALED_PACK32,
6426 eA8B8G8R8SscaledPack32 = VK_FORMAT_A8B8G8R8_SSCALED_PACK32,
6427 eA8B8G8R8UintPack32 = VK_FORMAT_A8B8G8R8_UINT_PACK32,
6428 eA8B8G8R8SintPack32 = VK_FORMAT_A8B8G8R8_SINT_PACK32,
6429 eA8B8G8R8SrgbPack32 = VK_FORMAT_A8B8G8R8_SRGB_PACK32,
6430 eA2R10G10B10UnormPack32 = VK_FORMAT_A2R10G10B10_UNORM_PACK32,
6431 eA2R10G10B10SnormPack32 = VK_FORMAT_A2R10G10B10_SNORM_PACK32,
6432 eA2R10G10B10UscaledPack32 = VK_FORMAT_A2R10G10B10_USCALED_PACK32,
6433 eA2R10G10B10SscaledPack32 = VK_FORMAT_A2R10G10B10_SSCALED_PACK32,
6434 eA2R10G10B10UintPack32 = VK_FORMAT_A2R10G10B10_UINT_PACK32,
6435 eA2R10G10B10SintPack32 = VK_FORMAT_A2R10G10B10_SINT_PACK32,
6436 eA2B10G10R10UnormPack32 = VK_FORMAT_A2B10G10R10_UNORM_PACK32,
6437 eA2B10G10R10SnormPack32 = VK_FORMAT_A2B10G10R10_SNORM_PACK32,
6438 eA2B10G10R10UscaledPack32 = VK_FORMAT_A2B10G10R10_USCALED_PACK32,
6439 eA2B10G10R10SscaledPack32 = VK_FORMAT_A2B10G10R10_SSCALED_PACK32,
6440 eA2B10G10R10UintPack32 = VK_FORMAT_A2B10G10R10_UINT_PACK32,
6441 eA2B10G10R10SintPack32 = VK_FORMAT_A2B10G10R10_SINT_PACK32,
6442 eR16Unorm = VK_FORMAT_R16_UNORM,
6443 eR16Snorm = VK_FORMAT_R16_SNORM,
6444 eR16Uscaled = VK_FORMAT_R16_USCALED,
6445 eR16Sscaled = VK_FORMAT_R16_SSCALED,
6446 eR16Uint = VK_FORMAT_R16_UINT,
6447 eR16Sint = VK_FORMAT_R16_SINT,
6448 eR16Sfloat = VK_FORMAT_R16_SFLOAT,
6449 eR16G16Unorm = VK_FORMAT_R16G16_UNORM,
6450 eR16G16Snorm = VK_FORMAT_R16G16_SNORM,
6451 eR16G16Uscaled = VK_FORMAT_R16G16_USCALED,
6452 eR16G16Sscaled = VK_FORMAT_R16G16_SSCALED,
6453 eR16G16Uint = VK_FORMAT_R16G16_UINT,
6454 eR16G16Sint = VK_FORMAT_R16G16_SINT,
6455 eR16G16Sfloat = VK_FORMAT_R16G16_SFLOAT,
6456 eR16G16B16Unorm = VK_FORMAT_R16G16B16_UNORM,
6457 eR16G16B16Snorm = VK_FORMAT_R16G16B16_SNORM,
6458 eR16G16B16Uscaled = VK_FORMAT_R16G16B16_USCALED,
6459 eR16G16B16Sscaled = VK_FORMAT_R16G16B16_SSCALED,
6460 eR16G16B16Uint = VK_FORMAT_R16G16B16_UINT,
6461 eR16G16B16Sint = VK_FORMAT_R16G16B16_SINT,
6462 eR16G16B16Sfloat = VK_FORMAT_R16G16B16_SFLOAT,
6463 eR16G16B16A16Unorm = VK_FORMAT_R16G16B16A16_UNORM,
6464 eR16G16B16A16Snorm = VK_FORMAT_R16G16B16A16_SNORM,
6465 eR16G16B16A16Uscaled = VK_FORMAT_R16G16B16A16_USCALED,
6466 eR16G16B16A16Sscaled = VK_FORMAT_R16G16B16A16_SSCALED,
6467 eR16G16B16A16Uint = VK_FORMAT_R16G16B16A16_UINT,
6468 eR16G16B16A16Sint = VK_FORMAT_R16G16B16A16_SINT,
6469 eR16G16B16A16Sfloat = VK_FORMAT_R16G16B16A16_SFLOAT,
6470 eR32Uint = VK_FORMAT_R32_UINT,
6471 eR32Sint = VK_FORMAT_R32_SINT,
6472 eR32Sfloat = VK_FORMAT_R32_SFLOAT,
6473 eR32G32Uint = VK_FORMAT_R32G32_UINT,
6474 eR32G32Sint = VK_FORMAT_R32G32_SINT,
6475 eR32G32Sfloat = VK_FORMAT_R32G32_SFLOAT,
6476 eR32G32B32Uint = VK_FORMAT_R32G32B32_UINT,
6477 eR32G32B32Sint = VK_FORMAT_R32G32B32_SINT,
6478 eR32G32B32Sfloat = VK_FORMAT_R32G32B32_SFLOAT,
6479 eR32G32B32A32Uint = VK_FORMAT_R32G32B32A32_UINT,
6480 eR32G32B32A32Sint = VK_FORMAT_R32G32B32A32_SINT,
6481 eR32G32B32A32Sfloat = VK_FORMAT_R32G32B32A32_SFLOAT,
6482 eR64Uint = VK_FORMAT_R64_UINT,
6483 eR64Sint = VK_FORMAT_R64_SINT,
6484 eR64Sfloat = VK_FORMAT_R64_SFLOAT,
6485 eR64G64Uint = VK_FORMAT_R64G64_UINT,
6486 eR64G64Sint = VK_FORMAT_R64G64_SINT,
6487 eR64G64Sfloat = VK_FORMAT_R64G64_SFLOAT,
6488 eR64G64B64Uint = VK_FORMAT_R64G64B64_UINT,
6489 eR64G64B64Sint = VK_FORMAT_R64G64B64_SINT,
6490 eR64G64B64Sfloat = VK_FORMAT_R64G64B64_SFLOAT,
6491 eR64G64B64A64Uint = VK_FORMAT_R64G64B64A64_UINT,
6492 eR64G64B64A64Sint = VK_FORMAT_R64G64B64A64_SINT,
6493 eR64G64B64A64Sfloat = VK_FORMAT_R64G64B64A64_SFLOAT,
6494 eB10G11R11UfloatPack32 = VK_FORMAT_B10G11R11_UFLOAT_PACK32,
6495 eE5B9G9R9UfloatPack32 = VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,
6496 eD16Unorm = VK_FORMAT_D16_UNORM,
6497 eX8D24UnormPack32 = VK_FORMAT_X8_D24_UNORM_PACK32,
6498 eD32Sfloat = VK_FORMAT_D32_SFLOAT,
6499 eS8Uint = VK_FORMAT_S8_UINT,
6500 eD16UnormS8Uint = VK_FORMAT_D16_UNORM_S8_UINT,
6501 eD24UnormS8Uint = VK_FORMAT_D24_UNORM_S8_UINT,
6502 eD32SfloatS8Uint = VK_FORMAT_D32_SFLOAT_S8_UINT,
6503 eBc1RgbUnormBlock = VK_FORMAT_BC1_RGB_UNORM_BLOCK,
6504 eBc1RgbSrgbBlock = VK_FORMAT_BC1_RGB_SRGB_BLOCK,
6505 eBc1RgbaUnormBlock = VK_FORMAT_BC1_RGBA_UNORM_BLOCK,
6506 eBc1RgbaSrgbBlock = VK_FORMAT_BC1_RGBA_SRGB_BLOCK,
6507 eBc2UnormBlock = VK_FORMAT_BC2_UNORM_BLOCK,
6508 eBc2SrgbBlock = VK_FORMAT_BC2_SRGB_BLOCK,
6509 eBc3UnormBlock = VK_FORMAT_BC3_UNORM_BLOCK,
6510 eBc3SrgbBlock = VK_FORMAT_BC3_SRGB_BLOCK,
6511 eBc4UnormBlock = VK_FORMAT_BC4_UNORM_BLOCK,
6512 eBc4SnormBlock = VK_FORMAT_BC4_SNORM_BLOCK,
6513 eBc5UnormBlock = VK_FORMAT_BC5_UNORM_BLOCK,
6514 eBc5SnormBlock = VK_FORMAT_BC5_SNORM_BLOCK,
6515 eBc6HUfloatBlock = VK_FORMAT_BC6H_UFLOAT_BLOCK,
6516 eBc6HSfloatBlock = VK_FORMAT_BC6H_SFLOAT_BLOCK,
6517 eBc7UnormBlock = VK_FORMAT_BC7_UNORM_BLOCK,
6518 eBc7SrgbBlock = VK_FORMAT_BC7_SRGB_BLOCK,
6519 eEtc2R8G8B8UnormBlock = VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK,
6520 eEtc2R8G8B8SrgbBlock = VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK,
6521 eEtc2R8G8B8A1UnormBlock = VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK,
6522 eEtc2R8G8B8A1SrgbBlock = VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK,
6523 eEtc2R8G8B8A8UnormBlock = VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK,
6524 eEtc2R8G8B8A8SrgbBlock = VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK,
6525 eEacR11UnormBlock = VK_FORMAT_EAC_R11_UNORM_BLOCK,
6526 eEacR11SnormBlock = VK_FORMAT_EAC_R11_SNORM_BLOCK,
6527 eEacR11G11UnormBlock = VK_FORMAT_EAC_R11G11_UNORM_BLOCK,
6528 eEacR11G11SnormBlock = VK_FORMAT_EAC_R11G11_SNORM_BLOCK,
6529 eAstc4x4UnormBlock = VK_FORMAT_ASTC_4x4_UNORM_BLOCK,
6530 eAstc4x4SrgbBlock = VK_FORMAT_ASTC_4x4_SRGB_BLOCK,
6531 eAstc5x4UnormBlock = VK_FORMAT_ASTC_5x4_UNORM_BLOCK,
6532 eAstc5x4SrgbBlock = VK_FORMAT_ASTC_5x4_SRGB_BLOCK,
6533 eAstc5x5UnormBlock = VK_FORMAT_ASTC_5x5_UNORM_BLOCK,
6534 eAstc5x5SrgbBlock = VK_FORMAT_ASTC_5x5_SRGB_BLOCK,
6535 eAstc6x5UnormBlock = VK_FORMAT_ASTC_6x5_UNORM_BLOCK,
6536 eAstc6x5SrgbBlock = VK_FORMAT_ASTC_6x5_SRGB_BLOCK,
6537 eAstc6x6UnormBlock = VK_FORMAT_ASTC_6x6_UNORM_BLOCK,
6538 eAstc6x6SrgbBlock = VK_FORMAT_ASTC_6x6_SRGB_BLOCK,
6539 eAstc8x5UnormBlock = VK_FORMAT_ASTC_8x5_UNORM_BLOCK,
6540 eAstc8x5SrgbBlock = VK_FORMAT_ASTC_8x5_SRGB_BLOCK,
6541 eAstc8x6UnormBlock = VK_FORMAT_ASTC_8x6_UNORM_BLOCK,
6542 eAstc8x6SrgbBlock = VK_FORMAT_ASTC_8x6_SRGB_BLOCK,
6543 eAstc8x8UnormBlock = VK_FORMAT_ASTC_8x8_UNORM_BLOCK,
6544 eAstc8x8SrgbBlock = VK_FORMAT_ASTC_8x8_SRGB_BLOCK,
6545 eAstc10x5UnormBlock = VK_FORMAT_ASTC_10x5_UNORM_BLOCK,
6546 eAstc10x5SrgbBlock = VK_FORMAT_ASTC_10x5_SRGB_BLOCK,
6547 eAstc10x6UnormBlock = VK_FORMAT_ASTC_10x6_UNORM_BLOCK,
6548 eAstc10x6SrgbBlock = VK_FORMAT_ASTC_10x6_SRGB_BLOCK,
6549 eAstc10x8UnormBlock = VK_FORMAT_ASTC_10x8_UNORM_BLOCK,
6550 eAstc10x8SrgbBlock = VK_FORMAT_ASTC_10x8_SRGB_BLOCK,
6551 eAstc10x10UnormBlock = VK_FORMAT_ASTC_10x10_UNORM_BLOCK,
6552 eAstc10x10SrgbBlock = VK_FORMAT_ASTC_10x10_SRGB_BLOCK,
6553 eAstc12x10UnormBlock = VK_FORMAT_ASTC_12x10_UNORM_BLOCK,
6554 eAstc12x10SrgbBlock = VK_FORMAT_ASTC_12x10_SRGB_BLOCK,
6555 eAstc12x12UnormBlock = VK_FORMAT_ASTC_12x12_UNORM_BLOCK,
Lenny Komowebf33162016-08-26 14:10:08 -06006556 eAstc12x12SrgbBlock = VK_FORMAT_ASTC_12x12_SRGB_BLOCK,
6557 ePvrtc12BppUnormBlockIMG = VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG,
6558 ePvrtc14BppUnormBlockIMG = VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG,
6559 ePvrtc22BppUnormBlockIMG = VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG,
6560 ePvrtc24BppUnormBlockIMG = VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG,
6561 ePvrtc12BppSrgbBlockIMG = VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG,
6562 ePvrtc14BppSrgbBlockIMG = VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG,
6563 ePvrtc22BppSrgbBlockIMG = VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG,
Lenny Komowb79f04a2017-09-18 17:07:00 -06006564 ePvrtc24BppSrgbBlockIMG = VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG,
6565 eG8B8G8R8422UnormKHR = VK_FORMAT_G8B8G8R8_422_UNORM_KHR,
6566 eB8G8R8G8422UnormKHR = VK_FORMAT_B8G8R8G8_422_UNORM_KHR,
6567 eG8B8R83Plane420UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR,
6568 eG8B8R82Plane420UnormKHR = VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR,
6569 eG8B8R83Plane422UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR,
6570 eG8B8R82Plane422UnormKHR = VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR,
6571 eG8B8R83Plane444UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR,
6572 eR10X6UnormPack16KHR = VK_FORMAT_R10X6_UNORM_PACK16_KHR,
6573 eR10X6G10X6Unorm2Pack16KHR = VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR,
6574 eR10X6G10X6B10X6A10X6Unorm4Pack16KHR = VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR,
6575 eG10X6B10X6G10X6R10X6422Unorm4Pack16KHR = VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR,
6576 eB10X6G10X6R10X6G10X6422Unorm4Pack16KHR = VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR,
6577 eG10X6B10X6R10X63Plane420Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR,
6578 eG10X6B10X6R10X62Plane420Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR,
6579 eG10X6B10X6R10X63Plane422Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR,
6580 eG10X6B10X6R10X62Plane422Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR,
6581 eG10X6B10X6R10X63Plane444Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR,
6582 eR12X4UnormPack16KHR = VK_FORMAT_R12X4_UNORM_PACK16_KHR,
6583 eR12X4G12X4Unorm2Pack16KHR = VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR,
6584 eR12X4G12X4B12X4A12X4Unorm4Pack16KHR = VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR,
6585 eG12X4B12X4G12X4R12X4422Unorm4Pack16KHR = VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR,
6586 eB12X4G12X4R12X4G12X4422Unorm4Pack16KHR = VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR,
6587 eG12X4B12X4R12X43Plane420Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR,
6588 eG12X4B12X4R12X42Plane420Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR,
6589 eG12X4B12X4R12X43Plane422Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR,
6590 eG12X4B12X4R12X42Plane422Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR,
6591 eG12X4B12X4R12X43Plane444Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR,
6592 eG16B16G16R16422UnormKHR = VK_FORMAT_G16B16G16R16_422_UNORM_KHR,
6593 eB16G16R16G16422UnormKHR = VK_FORMAT_B16G16R16G16_422_UNORM_KHR,
6594 eG16B16R163Plane420UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR,
6595 eG16B16R162Plane420UnormKHR = VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR,
6596 eG16B16R163Plane422UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR,
6597 eG16B16R162Plane422UnormKHR = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR,
6598 eG16B16R163Plane444UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006599 };
6600
6601 struct VertexInputAttributeDescription
6602 {
6603 VertexInputAttributeDescription( uint32_t location_ = 0, uint32_t binding_ = 0, Format format_ = Format::eUndefined, uint32_t offset_ = 0 )
6604 : location( location_ )
6605 , binding( binding_ )
6606 , format( format_ )
6607 , offset( offset_ )
6608 {
6609 }
6610
6611 VertexInputAttributeDescription( VkVertexInputAttributeDescription const & rhs )
6612 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006613 memcpy( this, &rhs, sizeof( VertexInputAttributeDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006614 }
6615
6616 VertexInputAttributeDescription& operator=( VkVertexInputAttributeDescription const & rhs )
6617 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006618 memcpy( this, &rhs, sizeof( VertexInputAttributeDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006619 return *this;
6620 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006621 VertexInputAttributeDescription& setLocation( uint32_t location_ )
6622 {
6623 location = location_;
6624 return *this;
6625 }
6626
6627 VertexInputAttributeDescription& setBinding( uint32_t binding_ )
6628 {
6629 binding = binding_;
6630 return *this;
6631 }
6632
6633 VertexInputAttributeDescription& setFormat( Format format_ )
6634 {
6635 format = format_;
6636 return *this;
6637 }
6638
6639 VertexInputAttributeDescription& setOffset( uint32_t offset_ )
6640 {
6641 offset = offset_;
6642 return *this;
6643 }
6644
6645 operator const VkVertexInputAttributeDescription&() const
6646 {
6647 return *reinterpret_cast<const VkVertexInputAttributeDescription*>(this);
6648 }
6649
6650 bool operator==( VertexInputAttributeDescription const& rhs ) const
6651 {
6652 return ( location == rhs.location )
6653 && ( binding == rhs.binding )
6654 && ( format == rhs.format )
6655 && ( offset == rhs.offset );
6656 }
6657
6658 bool operator!=( VertexInputAttributeDescription const& rhs ) const
6659 {
6660 return !operator==( rhs );
6661 }
6662
6663 uint32_t location;
6664 uint32_t binding;
6665 Format format;
6666 uint32_t offset;
6667 };
6668 static_assert( sizeof( VertexInputAttributeDescription ) == sizeof( VkVertexInputAttributeDescription ), "struct and wrapper have different size!" );
6669
6670 enum class StructureType
6671 {
6672 eApplicationInfo = VK_STRUCTURE_TYPE_APPLICATION_INFO,
6673 eInstanceCreateInfo = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
6674 eDeviceQueueCreateInfo = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO,
6675 eDeviceCreateInfo = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,
6676 eSubmitInfo = VK_STRUCTURE_TYPE_SUBMIT_INFO,
6677 eMemoryAllocateInfo = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
6678 eMappedMemoryRange = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE,
6679 eBindSparseInfo = VK_STRUCTURE_TYPE_BIND_SPARSE_INFO,
6680 eFenceCreateInfo = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO,
6681 eSemaphoreCreateInfo = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO,
6682 eEventCreateInfo = VK_STRUCTURE_TYPE_EVENT_CREATE_INFO,
6683 eQueryPoolCreateInfo = VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO,
6684 eBufferCreateInfo = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO,
6685 eBufferViewCreateInfo = VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO,
6686 eImageCreateInfo = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
6687 eImageViewCreateInfo = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
6688 eShaderModuleCreateInfo = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO,
6689 ePipelineCacheCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO,
6690 ePipelineShaderStageCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
6691 ePipelineVertexInputStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,
6692 ePipelineInputAssemblyStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,
6693 ePipelineTessellationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO,
6694 ePipelineViewportStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO,
6695 ePipelineRasterizationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO,
6696 ePipelineMultisampleStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,
6697 ePipelineDepthStencilStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO,
6698 ePipelineColorBlendStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,
6699 ePipelineDynamicStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO,
6700 eGraphicsPipelineCreateInfo = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO,
6701 eComputePipelineCreateInfo = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO,
6702 ePipelineLayoutCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO,
6703 eSamplerCreateInfo = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO,
6704 eDescriptorSetLayoutCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
6705 eDescriptorPoolCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO,
6706 eDescriptorSetAllocateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO,
6707 eWriteDescriptorSet = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET,
6708 eCopyDescriptorSet = VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET,
6709 eFramebufferCreateInfo = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO,
6710 eRenderPassCreateInfo = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
6711 eCommandPoolCreateInfo = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO,
6712 eCommandBufferAllocateInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO,
6713 eCommandBufferInheritanceInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO,
6714 eCommandBufferBeginInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
6715 eRenderPassBeginInfo = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,
6716 eBufferMemoryBarrier = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,
6717 eImageMemoryBarrier = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
6718 eMemoryBarrier = VK_STRUCTURE_TYPE_MEMORY_BARRIER,
6719 eLoaderInstanceCreateInfo = VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO,
6720 eLoaderDeviceCreateInfo = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
6721 eSwapchainCreateInfoKHR = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR,
6722 ePresentInfoKHR = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR,
6723 eDisplayModeCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR,
6724 eDisplaySurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR,
6725 eDisplayPresentInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR,
6726 eXlibSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR,
6727 eXcbSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR,
6728 eWaylandSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR,
6729 eMirSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR,
6730 eAndroidSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR,
6731 eWin32SurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR,
6732 eDebugReportCallbackCreateInfoEXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
6733 ePipelineRasterizationStateRasterizationOrderAMD = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD,
6734 eDebugMarkerObjectNameInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT,
6735 eDebugMarkerObjectTagInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT,
6736 eDebugMarkerMarkerInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT,
6737 eDedicatedAllocationImageCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,
6738 eDedicatedAllocationBufferCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV,
Lenny Komow6501c122016-08-31 15:03:49 -06006739 eDedicatedAllocationMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006740 eTextureLodGatherFormatPropertiesAMD = VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD,
Mark Young0f183a82017-02-28 09:58:04 -07006741 eRenderPassMultiviewCreateInfoKHX = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX,
6742 ePhysicalDeviceMultiviewFeaturesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHX,
6743 ePhysicalDeviceMultiviewPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHX,
Lenny Komow6501c122016-08-31 15:03:49 -06006744 eExternalMemoryImageCreateInfoNV = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,
6745 eExportMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV,
6746 eImportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV,
6747 eExportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV,
Lenny Komow68432d72016-09-29 14:16:59 -06006748 eWin32KeyedMutexAcquireReleaseInfoNV = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV,
Mark Young39389872017-01-19 21:10:49 -07006749 ePhysicalDeviceFeatures2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR,
6750 ePhysicalDeviceProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR,
6751 eFormatProperties2KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR,
6752 eImageFormatProperties2KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR,
6753 ePhysicalDeviceImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR,
6754 eQueueFamilyProperties2KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR,
6755 ePhysicalDeviceMemoryProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR,
6756 eSparseImageFormatProperties2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR,
6757 ePhysicalDeviceSparseImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006758 eMemoryAllocateFlagsInfoKHX = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHX,
Mark Young0f183a82017-02-28 09:58:04 -07006759 eDeviceGroupRenderPassBeginInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHX,
6760 eDeviceGroupCommandBufferBeginInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX,
6761 eDeviceGroupSubmitInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX,
6762 eDeviceGroupBindSparseInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06006763 eAcquireNextImageInfoKHX = VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX,
Lenny Komowb79f04a2017-09-18 17:07:00 -06006764 eBindBufferMemoryDeviceGroupInfoKHX = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHX,
6765 eBindImageMemoryDeviceGroupInfoKHX = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHX,
Mark Young0f183a82017-02-28 09:58:04 -07006766 eDeviceGroupPresentCapabilitiesKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX,
6767 eImageSwapchainCreateInfoKHX = VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX,
6768 eBindImageMemorySwapchainInfoKHX = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX,
Mark Young0f183a82017-02-28 09:58:04 -07006769 eDeviceGroupPresentInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX,
6770 eDeviceGroupSwapchainCreateInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX,
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006771 eValidationFlagsEXT = VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT,
Mark Young39389872017-01-19 21:10:49 -07006772 eViSurfaceCreateInfoNN = VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN,
Mark Young0f183a82017-02-28 09:58:04 -07006773 ePhysicalDeviceGroupPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHX,
6774 eDeviceGroupDeviceCreateInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHX,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006775 ePhysicalDeviceExternalImageFormatInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR,
6776 eExternalImageFormatPropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR,
6777 ePhysicalDeviceExternalBufferInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR,
6778 eExternalBufferPropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR,
6779 ePhysicalDeviceIdPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR,
6780 eExternalMemoryBufferCreateInfoKHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR,
6781 eExternalMemoryImageCreateInfoKHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR,
6782 eExportMemoryAllocateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR,
6783 eImportMemoryWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
6784 eExportMemoryWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
6785 eMemoryWin32HandlePropertiesKHR = VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR,
6786 eMemoryGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR,
6787 eImportMemoryFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR,
6788 eMemoryFdPropertiesKHR = VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR,
6789 eMemoryGetFdInfoKHR = VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR,
6790 eWin32KeyedMutexAcquireReleaseInfoKHR = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR,
6791 ePhysicalDeviceExternalSemaphoreInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR,
6792 eExternalSemaphorePropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR,
6793 eExportSemaphoreCreateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR,
6794 eImportSemaphoreWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
6795 eExportSemaphoreWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
6796 eD3D12FenceSubmitInfoKHR = VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR,
6797 eSemaphoreGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR,
6798 eImportSemaphoreFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR,
6799 eSemaphoreGetFdInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006800 ePhysicalDevicePushDescriptorPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006801 ePhysicalDevice16BitStorageFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR,
Mark Lobodzinski3289d762017-04-03 08:22:04 -06006802 ePresentRegionsKHR = VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006803 eDescriptorUpdateTemplateCreateInfoKHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR,
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006804 eObjectTableCreateInfoNVX = VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX,
6805 eIndirectCommandsLayoutCreateInfoNVX = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX,
6806 eCmdProcessCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX,
6807 eCmdReserveSpaceForCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX,
6808 eDeviceGeneratedCommandsLimitsNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX,
Mark Young39389872017-01-19 21:10:49 -07006809 eDeviceGeneratedCommandsFeaturesNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX,
Mark Young0f183a82017-02-28 09:58:04 -07006810 ePipelineViewportWScalingStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV,
Mark Lobodzinski11a1a342017-08-21 10:34:38 -06006811 eSurfaceCapabilities2EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT,
Mark Young39389872017-01-19 21:10:49 -07006812 eDisplayPowerInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT,
6813 eDeviceEventInfoEXT = VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT,
6814 eDisplayEventInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT,
Mark Young0f183a82017-02-28 09:58:04 -07006815 eSwapchainCounterCreateInfoEXT = VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT,
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06006816 ePresentTimesInfoGOOGLE = VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE,
Mark Young0f183a82017-02-28 09:58:04 -07006817 ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX,
6818 ePipelineViewportSwizzleStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV,
6819 ePhysicalDeviceDiscardRectanglePropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT,
6820 ePipelineDiscardRectangleStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT,
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06006821 eHdrMetadataEXT = VK_STRUCTURE_TYPE_HDR_METADATA_EXT,
Mark Lobodzinski54385432017-05-15 10:27:52 -06006822 eSharedPresentSurfaceCapabilitiesKHR = VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006823 ePhysicalDeviceExternalFenceInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR,
6824 eExternalFencePropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR,
6825 eExportFenceCreateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR,
6826 eImportFenceWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR,
6827 eExportFenceWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR,
6828 eFenceGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR,
6829 eImportFenceFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR,
6830 eFenceGetFdInfoKHR = VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR,
Lenny Komowb79f04a2017-09-18 17:07:00 -06006831 ePhysicalDevicePointClippingPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR,
6832 eRenderPassInputAttachmentAspectCreateInfoKHR = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR,
6833 eImageViewUsageCreateInfoKHR = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR,
6834 ePipelineTessellationDomainOriginStateCreateInfoKHR = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR,
Mark Lobodzinski54385432017-05-15 10:27:52 -06006835 ePhysicalDeviceSurfaceInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR,
6836 eSurfaceCapabilities2KHR = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR,
6837 eSurfaceFormat2KHR = VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006838 ePhysicalDeviceVariablePointerFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006839 eIosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006840 eMacosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006841 eMemoryDedicatedRequirementsKHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR,
6842 eMemoryDedicatedAllocateInfoKHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006843 ePhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT,
6844 eSamplerReductionModeCreateInfoEXT = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06006845 eSampleLocationsInfoEXT = VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT,
6846 eRenderPassSampleLocationsBeginInfoEXT = VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT,
6847 ePipelineSampleLocationsStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT,
6848 ePhysicalDeviceSampleLocationsPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT,
6849 eMultisamplePropertiesEXT = VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006850 eBufferMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR,
6851 eImageMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR,
6852 eImageSparseMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR,
6853 eMemoryRequirements2KHR = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR,
6854 eSparseImageMemoryRequirements2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR,
Lenny Komowb79f04a2017-09-18 17:07:00 -06006855 eImageFormatListCreateInfoKHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006856 ePhysicalDeviceBlendOperationAdvancedFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT,
6857 ePhysicalDeviceBlendOperationAdvancedPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT,
6858 ePipelineColorBlendAdvancedStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT,
6859 ePipelineCoverageToColorStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06006860 ePipelineCoverageModulationStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV,
Lenny Komowb79f04a2017-09-18 17:07:00 -06006861 eSamplerYcbcrConversionCreateInfoKHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR,
6862 eSamplerYcbcrConversionInfoKHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR,
6863 eBindImagePlaneMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR,
6864 eImagePlaneMemoryRequirementsInfoKHR = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR,
6865 ePhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR,
6866 eSamplerYcbcrConversionImageFormatPropertiesKHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR,
6867 eBindBufferMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR,
6868 eBindImageMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06006869 eValidationCacheCreateInfoEXT = VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT,
6870 eShaderModuleValidationCacheCreateInfoEXT = VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006871 };
6872
6873 struct ApplicationInfo
6874 {
6875 ApplicationInfo( const char* pApplicationName_ = nullptr, uint32_t applicationVersion_ = 0, const char* pEngineName_ = nullptr, uint32_t engineVersion_ = 0, uint32_t apiVersion_ = 0 )
6876 : sType( StructureType::eApplicationInfo )
6877 , pNext( nullptr )
6878 , pApplicationName( pApplicationName_ )
6879 , applicationVersion( applicationVersion_ )
6880 , pEngineName( pEngineName_ )
6881 , engineVersion( engineVersion_ )
6882 , apiVersion( apiVersion_ )
6883 {
6884 }
6885
6886 ApplicationInfo( VkApplicationInfo const & rhs )
6887 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006888 memcpy( this, &rhs, sizeof( ApplicationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006889 }
6890
6891 ApplicationInfo& operator=( VkApplicationInfo const & rhs )
6892 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006893 memcpy( this, &rhs, sizeof( ApplicationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006894 return *this;
6895 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006896 ApplicationInfo& setPNext( const void* pNext_ )
6897 {
6898 pNext = pNext_;
6899 return *this;
6900 }
6901
6902 ApplicationInfo& setPApplicationName( const char* pApplicationName_ )
6903 {
6904 pApplicationName = pApplicationName_;
6905 return *this;
6906 }
6907
6908 ApplicationInfo& setApplicationVersion( uint32_t applicationVersion_ )
6909 {
6910 applicationVersion = applicationVersion_;
6911 return *this;
6912 }
6913
6914 ApplicationInfo& setPEngineName( const char* pEngineName_ )
6915 {
6916 pEngineName = pEngineName_;
6917 return *this;
6918 }
6919
6920 ApplicationInfo& setEngineVersion( uint32_t engineVersion_ )
6921 {
6922 engineVersion = engineVersion_;
6923 return *this;
6924 }
6925
6926 ApplicationInfo& setApiVersion( uint32_t apiVersion_ )
6927 {
6928 apiVersion = apiVersion_;
6929 return *this;
6930 }
6931
6932 operator const VkApplicationInfo&() const
6933 {
6934 return *reinterpret_cast<const VkApplicationInfo*>(this);
6935 }
6936
6937 bool operator==( ApplicationInfo const& rhs ) const
6938 {
6939 return ( sType == rhs.sType )
6940 && ( pNext == rhs.pNext )
6941 && ( pApplicationName == rhs.pApplicationName )
6942 && ( applicationVersion == rhs.applicationVersion )
6943 && ( pEngineName == rhs.pEngineName )
6944 && ( engineVersion == rhs.engineVersion )
6945 && ( apiVersion == rhs.apiVersion );
6946 }
6947
6948 bool operator!=( ApplicationInfo const& rhs ) const
6949 {
6950 return !operator==( rhs );
6951 }
6952
6953 private:
6954 StructureType sType;
6955
6956 public:
6957 const void* pNext;
6958 const char* pApplicationName;
6959 uint32_t applicationVersion;
6960 const char* pEngineName;
6961 uint32_t engineVersion;
6962 uint32_t apiVersion;
6963 };
6964 static_assert( sizeof( ApplicationInfo ) == sizeof( VkApplicationInfo ), "struct and wrapper have different size!" );
6965
6966 struct DeviceQueueCreateInfo
6967 {
6968 DeviceQueueCreateInfo( DeviceQueueCreateFlags flags_ = DeviceQueueCreateFlags(), uint32_t queueFamilyIndex_ = 0, uint32_t queueCount_ = 0, const float* pQueuePriorities_ = nullptr )
6969 : sType( StructureType::eDeviceQueueCreateInfo )
6970 , pNext( nullptr )
6971 , flags( flags_ )
6972 , queueFamilyIndex( queueFamilyIndex_ )
6973 , queueCount( queueCount_ )
6974 , pQueuePriorities( pQueuePriorities_ )
6975 {
6976 }
6977
6978 DeviceQueueCreateInfo( VkDeviceQueueCreateInfo const & rhs )
6979 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006980 memcpy( this, &rhs, sizeof( DeviceQueueCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006981 }
6982
6983 DeviceQueueCreateInfo& operator=( VkDeviceQueueCreateInfo const & rhs )
6984 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006985 memcpy( this, &rhs, sizeof( DeviceQueueCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006986 return *this;
6987 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006988 DeviceQueueCreateInfo& setPNext( const void* pNext_ )
6989 {
6990 pNext = pNext_;
6991 return *this;
6992 }
6993
6994 DeviceQueueCreateInfo& setFlags( DeviceQueueCreateFlags flags_ )
6995 {
6996 flags = flags_;
6997 return *this;
6998 }
6999
7000 DeviceQueueCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
7001 {
7002 queueFamilyIndex = queueFamilyIndex_;
7003 return *this;
7004 }
7005
7006 DeviceQueueCreateInfo& setQueueCount( uint32_t queueCount_ )
7007 {
7008 queueCount = queueCount_;
7009 return *this;
7010 }
7011
7012 DeviceQueueCreateInfo& setPQueuePriorities( const float* pQueuePriorities_ )
7013 {
7014 pQueuePriorities = pQueuePriorities_;
7015 return *this;
7016 }
7017
7018 operator const VkDeviceQueueCreateInfo&() const
7019 {
7020 return *reinterpret_cast<const VkDeviceQueueCreateInfo*>(this);
7021 }
7022
7023 bool operator==( DeviceQueueCreateInfo const& rhs ) const
7024 {
7025 return ( sType == rhs.sType )
7026 && ( pNext == rhs.pNext )
7027 && ( flags == rhs.flags )
7028 && ( queueFamilyIndex == rhs.queueFamilyIndex )
7029 && ( queueCount == rhs.queueCount )
7030 && ( pQueuePriorities == rhs.pQueuePriorities );
7031 }
7032
7033 bool operator!=( DeviceQueueCreateInfo const& rhs ) const
7034 {
7035 return !operator==( rhs );
7036 }
7037
7038 private:
7039 StructureType sType;
7040
7041 public:
7042 const void* pNext;
7043 DeviceQueueCreateFlags flags;
7044 uint32_t queueFamilyIndex;
7045 uint32_t queueCount;
7046 const float* pQueuePriorities;
7047 };
7048 static_assert( sizeof( DeviceQueueCreateInfo ) == sizeof( VkDeviceQueueCreateInfo ), "struct and wrapper have different size!" );
7049
7050 struct DeviceCreateInfo
7051 {
7052 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 )
7053 : sType( StructureType::eDeviceCreateInfo )
7054 , pNext( nullptr )
7055 , flags( flags_ )
7056 , queueCreateInfoCount( queueCreateInfoCount_ )
7057 , pQueueCreateInfos( pQueueCreateInfos_ )
7058 , enabledLayerCount( enabledLayerCount_ )
7059 , ppEnabledLayerNames( ppEnabledLayerNames_ )
7060 , enabledExtensionCount( enabledExtensionCount_ )
7061 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
7062 , pEnabledFeatures( pEnabledFeatures_ )
7063 {
7064 }
7065
7066 DeviceCreateInfo( VkDeviceCreateInfo const & rhs )
7067 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007068 memcpy( this, &rhs, sizeof( DeviceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007069 }
7070
7071 DeviceCreateInfo& operator=( VkDeviceCreateInfo const & rhs )
7072 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007073 memcpy( this, &rhs, sizeof( DeviceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007074 return *this;
7075 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007076 DeviceCreateInfo& setPNext( const void* pNext_ )
7077 {
7078 pNext = pNext_;
7079 return *this;
7080 }
7081
7082 DeviceCreateInfo& setFlags( DeviceCreateFlags flags_ )
7083 {
7084 flags = flags_;
7085 return *this;
7086 }
7087
7088 DeviceCreateInfo& setQueueCreateInfoCount( uint32_t queueCreateInfoCount_ )
7089 {
7090 queueCreateInfoCount = queueCreateInfoCount_;
7091 return *this;
7092 }
7093
7094 DeviceCreateInfo& setPQueueCreateInfos( const DeviceQueueCreateInfo* pQueueCreateInfos_ )
7095 {
7096 pQueueCreateInfos = pQueueCreateInfos_;
7097 return *this;
7098 }
7099
7100 DeviceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
7101 {
7102 enabledLayerCount = enabledLayerCount_;
7103 return *this;
7104 }
7105
7106 DeviceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
7107 {
7108 ppEnabledLayerNames = ppEnabledLayerNames_;
7109 return *this;
7110 }
7111
7112 DeviceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
7113 {
7114 enabledExtensionCount = enabledExtensionCount_;
7115 return *this;
7116 }
7117
7118 DeviceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
7119 {
7120 ppEnabledExtensionNames = ppEnabledExtensionNames_;
7121 return *this;
7122 }
7123
7124 DeviceCreateInfo& setPEnabledFeatures( const PhysicalDeviceFeatures* pEnabledFeatures_ )
7125 {
7126 pEnabledFeatures = pEnabledFeatures_;
7127 return *this;
7128 }
7129
7130 operator const VkDeviceCreateInfo&() const
7131 {
7132 return *reinterpret_cast<const VkDeviceCreateInfo*>(this);
7133 }
7134
7135 bool operator==( DeviceCreateInfo const& rhs ) const
7136 {
7137 return ( sType == rhs.sType )
7138 && ( pNext == rhs.pNext )
7139 && ( flags == rhs.flags )
7140 && ( queueCreateInfoCount == rhs.queueCreateInfoCount )
7141 && ( pQueueCreateInfos == rhs.pQueueCreateInfos )
7142 && ( enabledLayerCount == rhs.enabledLayerCount )
7143 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
7144 && ( enabledExtensionCount == rhs.enabledExtensionCount )
7145 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames )
7146 && ( pEnabledFeatures == rhs.pEnabledFeatures );
7147 }
7148
7149 bool operator!=( DeviceCreateInfo const& rhs ) const
7150 {
7151 return !operator==( rhs );
7152 }
7153
7154 private:
7155 StructureType sType;
7156
7157 public:
7158 const void* pNext;
7159 DeviceCreateFlags flags;
7160 uint32_t queueCreateInfoCount;
7161 const DeviceQueueCreateInfo* pQueueCreateInfos;
7162 uint32_t enabledLayerCount;
7163 const char* const* ppEnabledLayerNames;
7164 uint32_t enabledExtensionCount;
7165 const char* const* ppEnabledExtensionNames;
7166 const PhysicalDeviceFeatures* pEnabledFeatures;
7167 };
7168 static_assert( sizeof( DeviceCreateInfo ) == sizeof( VkDeviceCreateInfo ), "struct and wrapper have different size!" );
7169
7170 struct InstanceCreateInfo
7171 {
7172 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 )
7173 : sType( StructureType::eInstanceCreateInfo )
7174 , pNext( nullptr )
7175 , flags( flags_ )
7176 , pApplicationInfo( pApplicationInfo_ )
7177 , enabledLayerCount( enabledLayerCount_ )
7178 , ppEnabledLayerNames( ppEnabledLayerNames_ )
7179 , enabledExtensionCount( enabledExtensionCount_ )
7180 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
7181 {
7182 }
7183
7184 InstanceCreateInfo( VkInstanceCreateInfo const & rhs )
7185 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007186 memcpy( this, &rhs, sizeof( InstanceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007187 }
7188
7189 InstanceCreateInfo& operator=( VkInstanceCreateInfo const & rhs )
7190 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007191 memcpy( this, &rhs, sizeof( InstanceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007192 return *this;
7193 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007194 InstanceCreateInfo& setPNext( const void* pNext_ )
7195 {
7196 pNext = pNext_;
7197 return *this;
7198 }
7199
7200 InstanceCreateInfo& setFlags( InstanceCreateFlags flags_ )
7201 {
7202 flags = flags_;
7203 return *this;
7204 }
7205
7206 InstanceCreateInfo& setPApplicationInfo( const ApplicationInfo* pApplicationInfo_ )
7207 {
7208 pApplicationInfo = pApplicationInfo_;
7209 return *this;
7210 }
7211
7212 InstanceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
7213 {
7214 enabledLayerCount = enabledLayerCount_;
7215 return *this;
7216 }
7217
7218 InstanceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
7219 {
7220 ppEnabledLayerNames = ppEnabledLayerNames_;
7221 return *this;
7222 }
7223
7224 InstanceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
7225 {
7226 enabledExtensionCount = enabledExtensionCount_;
7227 return *this;
7228 }
7229
7230 InstanceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
7231 {
7232 ppEnabledExtensionNames = ppEnabledExtensionNames_;
7233 return *this;
7234 }
7235
7236 operator const VkInstanceCreateInfo&() const
7237 {
7238 return *reinterpret_cast<const VkInstanceCreateInfo*>(this);
7239 }
7240
7241 bool operator==( InstanceCreateInfo const& rhs ) const
7242 {
7243 return ( sType == rhs.sType )
7244 && ( pNext == rhs.pNext )
7245 && ( flags == rhs.flags )
7246 && ( pApplicationInfo == rhs.pApplicationInfo )
7247 && ( enabledLayerCount == rhs.enabledLayerCount )
7248 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
7249 && ( enabledExtensionCount == rhs.enabledExtensionCount )
7250 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames );
7251 }
7252
7253 bool operator!=( InstanceCreateInfo const& rhs ) const
7254 {
7255 return !operator==( rhs );
7256 }
7257
7258 private:
7259 StructureType sType;
7260
7261 public:
7262 const void* pNext;
7263 InstanceCreateFlags flags;
7264 const ApplicationInfo* pApplicationInfo;
7265 uint32_t enabledLayerCount;
7266 const char* const* ppEnabledLayerNames;
7267 uint32_t enabledExtensionCount;
7268 const char* const* ppEnabledExtensionNames;
7269 };
7270 static_assert( sizeof( InstanceCreateInfo ) == sizeof( VkInstanceCreateInfo ), "struct and wrapper have different size!" );
7271
7272 struct MemoryAllocateInfo
7273 {
7274 MemoryAllocateInfo( DeviceSize allocationSize_ = 0, uint32_t memoryTypeIndex_ = 0 )
7275 : sType( StructureType::eMemoryAllocateInfo )
7276 , pNext( nullptr )
7277 , allocationSize( allocationSize_ )
7278 , memoryTypeIndex( memoryTypeIndex_ )
7279 {
7280 }
7281
7282 MemoryAllocateInfo( VkMemoryAllocateInfo const & rhs )
7283 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007284 memcpy( this, &rhs, sizeof( MemoryAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007285 }
7286
7287 MemoryAllocateInfo& operator=( VkMemoryAllocateInfo const & rhs )
7288 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007289 memcpy( this, &rhs, sizeof( MemoryAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007290 return *this;
7291 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007292 MemoryAllocateInfo& setPNext( const void* pNext_ )
7293 {
7294 pNext = pNext_;
7295 return *this;
7296 }
7297
7298 MemoryAllocateInfo& setAllocationSize( DeviceSize allocationSize_ )
7299 {
7300 allocationSize = allocationSize_;
7301 return *this;
7302 }
7303
7304 MemoryAllocateInfo& setMemoryTypeIndex( uint32_t memoryTypeIndex_ )
7305 {
7306 memoryTypeIndex = memoryTypeIndex_;
7307 return *this;
7308 }
7309
7310 operator const VkMemoryAllocateInfo&() const
7311 {
7312 return *reinterpret_cast<const VkMemoryAllocateInfo*>(this);
7313 }
7314
7315 bool operator==( MemoryAllocateInfo const& rhs ) const
7316 {
7317 return ( sType == rhs.sType )
7318 && ( pNext == rhs.pNext )
7319 && ( allocationSize == rhs.allocationSize )
7320 && ( memoryTypeIndex == rhs.memoryTypeIndex );
7321 }
7322
7323 bool operator!=( MemoryAllocateInfo const& rhs ) const
7324 {
7325 return !operator==( rhs );
7326 }
7327
7328 private:
7329 StructureType sType;
7330
7331 public:
7332 const void* pNext;
7333 DeviceSize allocationSize;
7334 uint32_t memoryTypeIndex;
7335 };
7336 static_assert( sizeof( MemoryAllocateInfo ) == sizeof( VkMemoryAllocateInfo ), "struct and wrapper have different size!" );
7337
7338 struct MappedMemoryRange
7339 {
7340 MappedMemoryRange( DeviceMemory memory_ = DeviceMemory(), DeviceSize offset_ = 0, DeviceSize size_ = 0 )
7341 : sType( StructureType::eMappedMemoryRange )
7342 , pNext( nullptr )
7343 , memory( memory_ )
7344 , offset( offset_ )
7345 , size( size_ )
7346 {
7347 }
7348
7349 MappedMemoryRange( VkMappedMemoryRange const & rhs )
7350 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007351 memcpy( this, &rhs, sizeof( MappedMemoryRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007352 }
7353
7354 MappedMemoryRange& operator=( VkMappedMemoryRange const & rhs )
7355 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007356 memcpy( this, &rhs, sizeof( MappedMemoryRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007357 return *this;
7358 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007359 MappedMemoryRange& setPNext( const void* pNext_ )
7360 {
7361 pNext = pNext_;
7362 return *this;
7363 }
7364
7365 MappedMemoryRange& setMemory( DeviceMemory memory_ )
7366 {
7367 memory = memory_;
7368 return *this;
7369 }
7370
7371 MappedMemoryRange& setOffset( DeviceSize offset_ )
7372 {
7373 offset = offset_;
7374 return *this;
7375 }
7376
7377 MappedMemoryRange& setSize( DeviceSize size_ )
7378 {
7379 size = size_;
7380 return *this;
7381 }
7382
7383 operator const VkMappedMemoryRange&() const
7384 {
7385 return *reinterpret_cast<const VkMappedMemoryRange*>(this);
7386 }
7387
7388 bool operator==( MappedMemoryRange const& rhs ) const
7389 {
7390 return ( sType == rhs.sType )
7391 && ( pNext == rhs.pNext )
7392 && ( memory == rhs.memory )
7393 && ( offset == rhs.offset )
7394 && ( size == rhs.size );
7395 }
7396
7397 bool operator!=( MappedMemoryRange const& rhs ) const
7398 {
7399 return !operator==( rhs );
7400 }
7401
7402 private:
7403 StructureType sType;
7404
7405 public:
7406 const void* pNext;
7407 DeviceMemory memory;
7408 DeviceSize offset;
7409 DeviceSize size;
7410 };
7411 static_assert( sizeof( MappedMemoryRange ) == sizeof( VkMappedMemoryRange ), "struct and wrapper have different size!" );
7412
7413 struct WriteDescriptorSet
7414 {
7415 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 )
7416 : sType( StructureType::eWriteDescriptorSet )
7417 , pNext( nullptr )
7418 , dstSet( dstSet_ )
7419 , dstBinding( dstBinding_ )
7420 , dstArrayElement( dstArrayElement_ )
7421 , descriptorCount( descriptorCount_ )
7422 , descriptorType( descriptorType_ )
7423 , pImageInfo( pImageInfo_ )
7424 , pBufferInfo( pBufferInfo_ )
7425 , pTexelBufferView( pTexelBufferView_ )
7426 {
7427 }
7428
7429 WriteDescriptorSet( VkWriteDescriptorSet const & rhs )
7430 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007431 memcpy( this, &rhs, sizeof( WriteDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007432 }
7433
7434 WriteDescriptorSet& operator=( VkWriteDescriptorSet const & rhs )
7435 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007436 memcpy( this, &rhs, sizeof( WriteDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007437 return *this;
7438 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007439 WriteDescriptorSet& setPNext( const void* pNext_ )
7440 {
7441 pNext = pNext_;
7442 return *this;
7443 }
7444
7445 WriteDescriptorSet& setDstSet( DescriptorSet dstSet_ )
7446 {
7447 dstSet = dstSet_;
7448 return *this;
7449 }
7450
7451 WriteDescriptorSet& setDstBinding( uint32_t dstBinding_ )
7452 {
7453 dstBinding = dstBinding_;
7454 return *this;
7455 }
7456
7457 WriteDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
7458 {
7459 dstArrayElement = dstArrayElement_;
7460 return *this;
7461 }
7462
7463 WriteDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
7464 {
7465 descriptorCount = descriptorCount_;
7466 return *this;
7467 }
7468
7469 WriteDescriptorSet& setDescriptorType( DescriptorType descriptorType_ )
7470 {
7471 descriptorType = descriptorType_;
7472 return *this;
7473 }
7474
7475 WriteDescriptorSet& setPImageInfo( const DescriptorImageInfo* pImageInfo_ )
7476 {
7477 pImageInfo = pImageInfo_;
7478 return *this;
7479 }
7480
7481 WriteDescriptorSet& setPBufferInfo( const DescriptorBufferInfo* pBufferInfo_ )
7482 {
7483 pBufferInfo = pBufferInfo_;
7484 return *this;
7485 }
7486
7487 WriteDescriptorSet& setPTexelBufferView( const BufferView* pTexelBufferView_ )
7488 {
7489 pTexelBufferView = pTexelBufferView_;
7490 return *this;
7491 }
7492
7493 operator const VkWriteDescriptorSet&() const
7494 {
7495 return *reinterpret_cast<const VkWriteDescriptorSet*>(this);
7496 }
7497
7498 bool operator==( WriteDescriptorSet const& rhs ) const
7499 {
7500 return ( sType == rhs.sType )
7501 && ( pNext == rhs.pNext )
7502 && ( dstSet == rhs.dstSet )
7503 && ( dstBinding == rhs.dstBinding )
7504 && ( dstArrayElement == rhs.dstArrayElement )
7505 && ( descriptorCount == rhs.descriptorCount )
7506 && ( descriptorType == rhs.descriptorType )
7507 && ( pImageInfo == rhs.pImageInfo )
7508 && ( pBufferInfo == rhs.pBufferInfo )
7509 && ( pTexelBufferView == rhs.pTexelBufferView );
7510 }
7511
7512 bool operator!=( WriteDescriptorSet const& rhs ) const
7513 {
7514 return !operator==( rhs );
7515 }
7516
7517 private:
7518 StructureType sType;
7519
7520 public:
7521 const void* pNext;
7522 DescriptorSet dstSet;
7523 uint32_t dstBinding;
7524 uint32_t dstArrayElement;
7525 uint32_t descriptorCount;
7526 DescriptorType descriptorType;
7527 const DescriptorImageInfo* pImageInfo;
7528 const DescriptorBufferInfo* pBufferInfo;
7529 const BufferView* pTexelBufferView;
7530 };
7531 static_assert( sizeof( WriteDescriptorSet ) == sizeof( VkWriteDescriptorSet ), "struct and wrapper have different size!" );
7532
7533 struct CopyDescriptorSet
7534 {
7535 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 )
7536 : sType( StructureType::eCopyDescriptorSet )
7537 , pNext( nullptr )
7538 , srcSet( srcSet_ )
7539 , srcBinding( srcBinding_ )
7540 , srcArrayElement( srcArrayElement_ )
7541 , dstSet( dstSet_ )
7542 , dstBinding( dstBinding_ )
7543 , dstArrayElement( dstArrayElement_ )
7544 , descriptorCount( descriptorCount_ )
7545 {
7546 }
7547
7548 CopyDescriptorSet( VkCopyDescriptorSet const & rhs )
7549 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007550 memcpy( this, &rhs, sizeof( CopyDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007551 }
7552
7553 CopyDescriptorSet& operator=( VkCopyDescriptorSet const & rhs )
7554 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007555 memcpy( this, &rhs, sizeof( CopyDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007556 return *this;
7557 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007558 CopyDescriptorSet& setPNext( const void* pNext_ )
7559 {
7560 pNext = pNext_;
7561 return *this;
7562 }
7563
7564 CopyDescriptorSet& setSrcSet( DescriptorSet srcSet_ )
7565 {
7566 srcSet = srcSet_;
7567 return *this;
7568 }
7569
7570 CopyDescriptorSet& setSrcBinding( uint32_t srcBinding_ )
7571 {
7572 srcBinding = srcBinding_;
7573 return *this;
7574 }
7575
7576 CopyDescriptorSet& setSrcArrayElement( uint32_t srcArrayElement_ )
7577 {
7578 srcArrayElement = srcArrayElement_;
7579 return *this;
7580 }
7581
7582 CopyDescriptorSet& setDstSet( DescriptorSet dstSet_ )
7583 {
7584 dstSet = dstSet_;
7585 return *this;
7586 }
7587
7588 CopyDescriptorSet& setDstBinding( uint32_t dstBinding_ )
7589 {
7590 dstBinding = dstBinding_;
7591 return *this;
7592 }
7593
7594 CopyDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
7595 {
7596 dstArrayElement = dstArrayElement_;
7597 return *this;
7598 }
7599
7600 CopyDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
7601 {
7602 descriptorCount = descriptorCount_;
7603 return *this;
7604 }
7605
7606 operator const VkCopyDescriptorSet&() const
7607 {
7608 return *reinterpret_cast<const VkCopyDescriptorSet*>(this);
7609 }
7610
7611 bool operator==( CopyDescriptorSet const& rhs ) const
7612 {
7613 return ( sType == rhs.sType )
7614 && ( pNext == rhs.pNext )
7615 && ( srcSet == rhs.srcSet )
7616 && ( srcBinding == rhs.srcBinding )
7617 && ( srcArrayElement == rhs.srcArrayElement )
7618 && ( dstSet == rhs.dstSet )
7619 && ( dstBinding == rhs.dstBinding )
7620 && ( dstArrayElement == rhs.dstArrayElement )
7621 && ( descriptorCount == rhs.descriptorCount );
7622 }
7623
7624 bool operator!=( CopyDescriptorSet const& rhs ) const
7625 {
7626 return !operator==( rhs );
7627 }
7628
7629 private:
7630 StructureType sType;
7631
7632 public:
7633 const void* pNext;
7634 DescriptorSet srcSet;
7635 uint32_t srcBinding;
7636 uint32_t srcArrayElement;
7637 DescriptorSet dstSet;
7638 uint32_t dstBinding;
7639 uint32_t dstArrayElement;
7640 uint32_t descriptorCount;
7641 };
7642 static_assert( sizeof( CopyDescriptorSet ) == sizeof( VkCopyDescriptorSet ), "struct and wrapper have different size!" );
7643
7644 struct BufferViewCreateInfo
7645 {
7646 BufferViewCreateInfo( BufferViewCreateFlags flags_ = BufferViewCreateFlags(), Buffer buffer_ = Buffer(), Format format_ = Format::eUndefined, DeviceSize offset_ = 0, DeviceSize range_ = 0 )
7647 : sType( StructureType::eBufferViewCreateInfo )
7648 , pNext( nullptr )
7649 , flags( flags_ )
7650 , buffer( buffer_ )
7651 , format( format_ )
7652 , offset( offset_ )
7653 , range( range_ )
7654 {
7655 }
7656
7657 BufferViewCreateInfo( VkBufferViewCreateInfo const & rhs )
7658 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007659 memcpy( this, &rhs, sizeof( BufferViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007660 }
7661
7662 BufferViewCreateInfo& operator=( VkBufferViewCreateInfo const & rhs )
7663 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007664 memcpy( this, &rhs, sizeof( BufferViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007665 return *this;
7666 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007667 BufferViewCreateInfo& setPNext( const void* pNext_ )
7668 {
7669 pNext = pNext_;
7670 return *this;
7671 }
7672
7673 BufferViewCreateInfo& setFlags( BufferViewCreateFlags flags_ )
7674 {
7675 flags = flags_;
7676 return *this;
7677 }
7678
7679 BufferViewCreateInfo& setBuffer( Buffer buffer_ )
7680 {
7681 buffer = buffer_;
7682 return *this;
7683 }
7684
7685 BufferViewCreateInfo& setFormat( Format format_ )
7686 {
7687 format = format_;
7688 return *this;
7689 }
7690
7691 BufferViewCreateInfo& setOffset( DeviceSize offset_ )
7692 {
7693 offset = offset_;
7694 return *this;
7695 }
7696
7697 BufferViewCreateInfo& setRange( DeviceSize range_ )
7698 {
7699 range = range_;
7700 return *this;
7701 }
7702
7703 operator const VkBufferViewCreateInfo&() const
7704 {
7705 return *reinterpret_cast<const VkBufferViewCreateInfo*>(this);
7706 }
7707
7708 bool operator==( BufferViewCreateInfo const& rhs ) const
7709 {
7710 return ( sType == rhs.sType )
7711 && ( pNext == rhs.pNext )
7712 && ( flags == rhs.flags )
7713 && ( buffer == rhs.buffer )
7714 && ( format == rhs.format )
7715 && ( offset == rhs.offset )
7716 && ( range == rhs.range );
7717 }
7718
7719 bool operator!=( BufferViewCreateInfo const& rhs ) const
7720 {
7721 return !operator==( rhs );
7722 }
7723
7724 private:
7725 StructureType sType;
7726
7727 public:
7728 const void* pNext;
7729 BufferViewCreateFlags flags;
7730 Buffer buffer;
7731 Format format;
7732 DeviceSize offset;
7733 DeviceSize range;
7734 };
7735 static_assert( sizeof( BufferViewCreateInfo ) == sizeof( VkBufferViewCreateInfo ), "struct and wrapper have different size!" );
7736
7737 struct ShaderModuleCreateInfo
7738 {
7739 ShaderModuleCreateInfo( ShaderModuleCreateFlags flags_ = ShaderModuleCreateFlags(), size_t codeSize_ = 0, const uint32_t* pCode_ = nullptr )
7740 : sType( StructureType::eShaderModuleCreateInfo )
7741 , pNext( nullptr )
7742 , flags( flags_ )
7743 , codeSize( codeSize_ )
7744 , pCode( pCode_ )
7745 {
7746 }
7747
7748 ShaderModuleCreateInfo( VkShaderModuleCreateInfo const & rhs )
7749 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007750 memcpy( this, &rhs, sizeof( ShaderModuleCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007751 }
7752
7753 ShaderModuleCreateInfo& operator=( VkShaderModuleCreateInfo const & rhs )
7754 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007755 memcpy( this, &rhs, sizeof( ShaderModuleCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007756 return *this;
7757 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007758 ShaderModuleCreateInfo& setPNext( const void* pNext_ )
7759 {
7760 pNext = pNext_;
7761 return *this;
7762 }
7763
7764 ShaderModuleCreateInfo& setFlags( ShaderModuleCreateFlags flags_ )
7765 {
7766 flags = flags_;
7767 return *this;
7768 }
7769
7770 ShaderModuleCreateInfo& setCodeSize( size_t codeSize_ )
7771 {
7772 codeSize = codeSize_;
7773 return *this;
7774 }
7775
7776 ShaderModuleCreateInfo& setPCode( const uint32_t* pCode_ )
7777 {
7778 pCode = pCode_;
7779 return *this;
7780 }
7781
7782 operator const VkShaderModuleCreateInfo&() const
7783 {
7784 return *reinterpret_cast<const VkShaderModuleCreateInfo*>(this);
7785 }
7786
7787 bool operator==( ShaderModuleCreateInfo const& rhs ) const
7788 {
7789 return ( sType == rhs.sType )
7790 && ( pNext == rhs.pNext )
7791 && ( flags == rhs.flags )
7792 && ( codeSize == rhs.codeSize )
7793 && ( pCode == rhs.pCode );
7794 }
7795
7796 bool operator!=( ShaderModuleCreateInfo const& rhs ) const
7797 {
7798 return !operator==( rhs );
7799 }
7800
7801 private:
7802 StructureType sType;
7803
7804 public:
7805 const void* pNext;
7806 ShaderModuleCreateFlags flags;
7807 size_t codeSize;
7808 const uint32_t* pCode;
7809 };
7810 static_assert( sizeof( ShaderModuleCreateInfo ) == sizeof( VkShaderModuleCreateInfo ), "struct and wrapper have different size!" );
7811
7812 struct DescriptorSetAllocateInfo
7813 {
7814 DescriptorSetAllocateInfo( DescriptorPool descriptorPool_ = DescriptorPool(), uint32_t descriptorSetCount_ = 0, const DescriptorSetLayout* pSetLayouts_ = nullptr )
7815 : sType( StructureType::eDescriptorSetAllocateInfo )
7816 , pNext( nullptr )
7817 , descriptorPool( descriptorPool_ )
7818 , descriptorSetCount( descriptorSetCount_ )
7819 , pSetLayouts( pSetLayouts_ )
7820 {
7821 }
7822
7823 DescriptorSetAllocateInfo( VkDescriptorSetAllocateInfo const & rhs )
7824 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007825 memcpy( this, &rhs, sizeof( DescriptorSetAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007826 }
7827
7828 DescriptorSetAllocateInfo& operator=( VkDescriptorSetAllocateInfo const & rhs )
7829 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007830 memcpy( this, &rhs, sizeof( DescriptorSetAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007831 return *this;
7832 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007833 DescriptorSetAllocateInfo& setPNext( const void* pNext_ )
7834 {
7835 pNext = pNext_;
7836 return *this;
7837 }
7838
7839 DescriptorSetAllocateInfo& setDescriptorPool( DescriptorPool descriptorPool_ )
7840 {
7841 descriptorPool = descriptorPool_;
7842 return *this;
7843 }
7844
7845 DescriptorSetAllocateInfo& setDescriptorSetCount( uint32_t descriptorSetCount_ )
7846 {
7847 descriptorSetCount = descriptorSetCount_;
7848 return *this;
7849 }
7850
7851 DescriptorSetAllocateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
7852 {
7853 pSetLayouts = pSetLayouts_;
7854 return *this;
7855 }
7856
7857 operator const VkDescriptorSetAllocateInfo&() const
7858 {
7859 return *reinterpret_cast<const VkDescriptorSetAllocateInfo*>(this);
7860 }
7861
7862 bool operator==( DescriptorSetAllocateInfo const& rhs ) const
7863 {
7864 return ( sType == rhs.sType )
7865 && ( pNext == rhs.pNext )
7866 && ( descriptorPool == rhs.descriptorPool )
7867 && ( descriptorSetCount == rhs.descriptorSetCount )
7868 && ( pSetLayouts == rhs.pSetLayouts );
7869 }
7870
7871 bool operator!=( DescriptorSetAllocateInfo const& rhs ) const
7872 {
7873 return !operator==( rhs );
7874 }
7875
7876 private:
7877 StructureType sType;
7878
7879 public:
7880 const void* pNext;
7881 DescriptorPool descriptorPool;
7882 uint32_t descriptorSetCount;
7883 const DescriptorSetLayout* pSetLayouts;
7884 };
7885 static_assert( sizeof( DescriptorSetAllocateInfo ) == sizeof( VkDescriptorSetAllocateInfo ), "struct and wrapper have different size!" );
7886
7887 struct PipelineVertexInputStateCreateInfo
7888 {
7889 PipelineVertexInputStateCreateInfo( PipelineVertexInputStateCreateFlags flags_ = PipelineVertexInputStateCreateFlags(), uint32_t vertexBindingDescriptionCount_ = 0, const VertexInputBindingDescription* pVertexBindingDescriptions_ = nullptr, uint32_t vertexAttributeDescriptionCount_ = 0, const VertexInputAttributeDescription* pVertexAttributeDescriptions_ = nullptr )
7890 : sType( StructureType::ePipelineVertexInputStateCreateInfo )
7891 , pNext( nullptr )
7892 , flags( flags_ )
7893 , vertexBindingDescriptionCount( vertexBindingDescriptionCount_ )
7894 , pVertexBindingDescriptions( pVertexBindingDescriptions_ )
7895 , vertexAttributeDescriptionCount( vertexAttributeDescriptionCount_ )
7896 , pVertexAttributeDescriptions( pVertexAttributeDescriptions_ )
7897 {
7898 }
7899
7900 PipelineVertexInputStateCreateInfo( VkPipelineVertexInputStateCreateInfo const & rhs )
7901 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007902 memcpy( this, &rhs, sizeof( PipelineVertexInputStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007903 }
7904
7905 PipelineVertexInputStateCreateInfo& operator=( VkPipelineVertexInputStateCreateInfo const & rhs )
7906 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007907 memcpy( this, &rhs, sizeof( PipelineVertexInputStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007908 return *this;
7909 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007910 PipelineVertexInputStateCreateInfo& setPNext( const void* pNext_ )
7911 {
7912 pNext = pNext_;
7913 return *this;
7914 }
7915
7916 PipelineVertexInputStateCreateInfo& setFlags( PipelineVertexInputStateCreateFlags flags_ )
7917 {
7918 flags = flags_;
7919 return *this;
7920 }
7921
7922 PipelineVertexInputStateCreateInfo& setVertexBindingDescriptionCount( uint32_t vertexBindingDescriptionCount_ )
7923 {
7924 vertexBindingDescriptionCount = vertexBindingDescriptionCount_;
7925 return *this;
7926 }
7927
7928 PipelineVertexInputStateCreateInfo& setPVertexBindingDescriptions( const VertexInputBindingDescription* pVertexBindingDescriptions_ )
7929 {
7930 pVertexBindingDescriptions = pVertexBindingDescriptions_;
7931 return *this;
7932 }
7933
7934 PipelineVertexInputStateCreateInfo& setVertexAttributeDescriptionCount( uint32_t vertexAttributeDescriptionCount_ )
7935 {
7936 vertexAttributeDescriptionCount = vertexAttributeDescriptionCount_;
7937 return *this;
7938 }
7939
7940 PipelineVertexInputStateCreateInfo& setPVertexAttributeDescriptions( const VertexInputAttributeDescription* pVertexAttributeDescriptions_ )
7941 {
7942 pVertexAttributeDescriptions = pVertexAttributeDescriptions_;
7943 return *this;
7944 }
7945
7946 operator const VkPipelineVertexInputStateCreateInfo&() const
7947 {
7948 return *reinterpret_cast<const VkPipelineVertexInputStateCreateInfo*>(this);
7949 }
7950
7951 bool operator==( PipelineVertexInputStateCreateInfo const& rhs ) const
7952 {
7953 return ( sType == rhs.sType )
7954 && ( pNext == rhs.pNext )
7955 && ( flags == rhs.flags )
7956 && ( vertexBindingDescriptionCount == rhs.vertexBindingDescriptionCount )
7957 && ( pVertexBindingDescriptions == rhs.pVertexBindingDescriptions )
7958 && ( vertexAttributeDescriptionCount == rhs.vertexAttributeDescriptionCount )
7959 && ( pVertexAttributeDescriptions == rhs.pVertexAttributeDescriptions );
7960 }
7961
7962 bool operator!=( PipelineVertexInputStateCreateInfo const& rhs ) const
7963 {
7964 return !operator==( rhs );
7965 }
7966
7967 private:
7968 StructureType sType;
7969
7970 public:
7971 const void* pNext;
7972 PipelineVertexInputStateCreateFlags flags;
7973 uint32_t vertexBindingDescriptionCount;
7974 const VertexInputBindingDescription* pVertexBindingDescriptions;
7975 uint32_t vertexAttributeDescriptionCount;
7976 const VertexInputAttributeDescription* pVertexAttributeDescriptions;
7977 };
7978 static_assert( sizeof( PipelineVertexInputStateCreateInfo ) == sizeof( VkPipelineVertexInputStateCreateInfo ), "struct and wrapper have different size!" );
7979
7980 struct PipelineInputAssemblyStateCreateInfo
7981 {
7982 PipelineInputAssemblyStateCreateInfo( PipelineInputAssemblyStateCreateFlags flags_ = PipelineInputAssemblyStateCreateFlags(), PrimitiveTopology topology_ = PrimitiveTopology::ePointList, Bool32 primitiveRestartEnable_ = 0 )
7983 : sType( StructureType::ePipelineInputAssemblyStateCreateInfo )
7984 , pNext( nullptr )
7985 , flags( flags_ )
7986 , topology( topology_ )
7987 , primitiveRestartEnable( primitiveRestartEnable_ )
7988 {
7989 }
7990
7991 PipelineInputAssemblyStateCreateInfo( VkPipelineInputAssemblyStateCreateInfo const & rhs )
7992 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007993 memcpy( this, &rhs, sizeof( PipelineInputAssemblyStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007994 }
7995
7996 PipelineInputAssemblyStateCreateInfo& operator=( VkPipelineInputAssemblyStateCreateInfo const & rhs )
7997 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007998 memcpy( this, &rhs, sizeof( PipelineInputAssemblyStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007999 return *this;
8000 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008001 PipelineInputAssemblyStateCreateInfo& setPNext( const void* pNext_ )
8002 {
8003 pNext = pNext_;
8004 return *this;
8005 }
8006
8007 PipelineInputAssemblyStateCreateInfo& setFlags( PipelineInputAssemblyStateCreateFlags flags_ )
8008 {
8009 flags = flags_;
8010 return *this;
8011 }
8012
8013 PipelineInputAssemblyStateCreateInfo& setTopology( PrimitiveTopology topology_ )
8014 {
8015 topology = topology_;
8016 return *this;
8017 }
8018
8019 PipelineInputAssemblyStateCreateInfo& setPrimitiveRestartEnable( Bool32 primitiveRestartEnable_ )
8020 {
8021 primitiveRestartEnable = primitiveRestartEnable_;
8022 return *this;
8023 }
8024
8025 operator const VkPipelineInputAssemblyStateCreateInfo&() const
8026 {
8027 return *reinterpret_cast<const VkPipelineInputAssemblyStateCreateInfo*>(this);
8028 }
8029
8030 bool operator==( PipelineInputAssemblyStateCreateInfo const& rhs ) const
8031 {
8032 return ( sType == rhs.sType )
8033 && ( pNext == rhs.pNext )
8034 && ( flags == rhs.flags )
8035 && ( topology == rhs.topology )
8036 && ( primitiveRestartEnable == rhs.primitiveRestartEnable );
8037 }
8038
8039 bool operator!=( PipelineInputAssemblyStateCreateInfo const& rhs ) const
8040 {
8041 return !operator==( rhs );
8042 }
8043
8044 private:
8045 StructureType sType;
8046
8047 public:
8048 const void* pNext;
8049 PipelineInputAssemblyStateCreateFlags flags;
8050 PrimitiveTopology topology;
8051 Bool32 primitiveRestartEnable;
8052 };
8053 static_assert( sizeof( PipelineInputAssemblyStateCreateInfo ) == sizeof( VkPipelineInputAssemblyStateCreateInfo ), "struct and wrapper have different size!" );
8054
8055 struct PipelineTessellationStateCreateInfo
8056 {
8057 PipelineTessellationStateCreateInfo( PipelineTessellationStateCreateFlags flags_ = PipelineTessellationStateCreateFlags(), uint32_t patchControlPoints_ = 0 )
8058 : sType( StructureType::ePipelineTessellationStateCreateInfo )
8059 , pNext( nullptr )
8060 , flags( flags_ )
8061 , patchControlPoints( patchControlPoints_ )
8062 {
8063 }
8064
8065 PipelineTessellationStateCreateInfo( VkPipelineTessellationStateCreateInfo const & rhs )
8066 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008067 memcpy( this, &rhs, sizeof( PipelineTessellationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008068 }
8069
8070 PipelineTessellationStateCreateInfo& operator=( VkPipelineTessellationStateCreateInfo const & rhs )
8071 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008072 memcpy( this, &rhs, sizeof( PipelineTessellationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008073 return *this;
8074 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008075 PipelineTessellationStateCreateInfo& setPNext( const void* pNext_ )
8076 {
8077 pNext = pNext_;
8078 return *this;
8079 }
8080
8081 PipelineTessellationStateCreateInfo& setFlags( PipelineTessellationStateCreateFlags flags_ )
8082 {
8083 flags = flags_;
8084 return *this;
8085 }
8086
8087 PipelineTessellationStateCreateInfo& setPatchControlPoints( uint32_t patchControlPoints_ )
8088 {
8089 patchControlPoints = patchControlPoints_;
8090 return *this;
8091 }
8092
8093 operator const VkPipelineTessellationStateCreateInfo&() const
8094 {
8095 return *reinterpret_cast<const VkPipelineTessellationStateCreateInfo*>(this);
8096 }
8097
8098 bool operator==( PipelineTessellationStateCreateInfo const& rhs ) const
8099 {
8100 return ( sType == rhs.sType )
8101 && ( pNext == rhs.pNext )
8102 && ( flags == rhs.flags )
8103 && ( patchControlPoints == rhs.patchControlPoints );
8104 }
8105
8106 bool operator!=( PipelineTessellationStateCreateInfo const& rhs ) const
8107 {
8108 return !operator==( rhs );
8109 }
8110
8111 private:
8112 StructureType sType;
8113
8114 public:
8115 const void* pNext;
8116 PipelineTessellationStateCreateFlags flags;
8117 uint32_t patchControlPoints;
8118 };
8119 static_assert( sizeof( PipelineTessellationStateCreateInfo ) == sizeof( VkPipelineTessellationStateCreateInfo ), "struct and wrapper have different size!" );
8120
8121 struct PipelineViewportStateCreateInfo
8122 {
8123 PipelineViewportStateCreateInfo( PipelineViewportStateCreateFlags flags_ = PipelineViewportStateCreateFlags(), uint32_t viewportCount_ = 0, const Viewport* pViewports_ = nullptr, uint32_t scissorCount_ = 0, const Rect2D* pScissors_ = nullptr )
8124 : sType( StructureType::ePipelineViewportStateCreateInfo )
8125 , pNext( nullptr )
8126 , flags( flags_ )
8127 , viewportCount( viewportCount_ )
8128 , pViewports( pViewports_ )
8129 , scissorCount( scissorCount_ )
8130 , pScissors( pScissors_ )
8131 {
8132 }
8133
8134 PipelineViewportStateCreateInfo( VkPipelineViewportStateCreateInfo const & rhs )
8135 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008136 memcpy( this, &rhs, sizeof( PipelineViewportStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008137 }
8138
8139 PipelineViewportStateCreateInfo& operator=( VkPipelineViewportStateCreateInfo const & rhs )
8140 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008141 memcpy( this, &rhs, sizeof( PipelineViewportStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008142 return *this;
8143 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008144 PipelineViewportStateCreateInfo& setPNext( const void* pNext_ )
8145 {
8146 pNext = pNext_;
8147 return *this;
8148 }
8149
8150 PipelineViewportStateCreateInfo& setFlags( PipelineViewportStateCreateFlags flags_ )
8151 {
8152 flags = flags_;
8153 return *this;
8154 }
8155
8156 PipelineViewportStateCreateInfo& setViewportCount( uint32_t viewportCount_ )
8157 {
8158 viewportCount = viewportCount_;
8159 return *this;
8160 }
8161
8162 PipelineViewportStateCreateInfo& setPViewports( const Viewport* pViewports_ )
8163 {
8164 pViewports = pViewports_;
8165 return *this;
8166 }
8167
8168 PipelineViewportStateCreateInfo& setScissorCount( uint32_t scissorCount_ )
8169 {
8170 scissorCount = scissorCount_;
8171 return *this;
8172 }
8173
8174 PipelineViewportStateCreateInfo& setPScissors( const Rect2D* pScissors_ )
8175 {
8176 pScissors = pScissors_;
8177 return *this;
8178 }
8179
8180 operator const VkPipelineViewportStateCreateInfo&() const
8181 {
8182 return *reinterpret_cast<const VkPipelineViewportStateCreateInfo*>(this);
8183 }
8184
8185 bool operator==( PipelineViewportStateCreateInfo const& rhs ) const
8186 {
8187 return ( sType == rhs.sType )
8188 && ( pNext == rhs.pNext )
8189 && ( flags == rhs.flags )
8190 && ( viewportCount == rhs.viewportCount )
8191 && ( pViewports == rhs.pViewports )
8192 && ( scissorCount == rhs.scissorCount )
8193 && ( pScissors == rhs.pScissors );
8194 }
8195
8196 bool operator!=( PipelineViewportStateCreateInfo const& rhs ) const
8197 {
8198 return !operator==( rhs );
8199 }
8200
8201 private:
8202 StructureType sType;
8203
8204 public:
8205 const void* pNext;
8206 PipelineViewportStateCreateFlags flags;
8207 uint32_t viewportCount;
8208 const Viewport* pViewports;
8209 uint32_t scissorCount;
8210 const Rect2D* pScissors;
8211 };
8212 static_assert( sizeof( PipelineViewportStateCreateInfo ) == sizeof( VkPipelineViewportStateCreateInfo ), "struct and wrapper have different size!" );
8213
8214 struct PipelineRasterizationStateCreateInfo
8215 {
8216 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 )
8217 : sType( StructureType::ePipelineRasterizationStateCreateInfo )
8218 , pNext( nullptr )
8219 , flags( flags_ )
8220 , depthClampEnable( depthClampEnable_ )
8221 , rasterizerDiscardEnable( rasterizerDiscardEnable_ )
8222 , polygonMode( polygonMode_ )
8223 , cullMode( cullMode_ )
8224 , frontFace( frontFace_ )
8225 , depthBiasEnable( depthBiasEnable_ )
8226 , depthBiasConstantFactor( depthBiasConstantFactor_ )
8227 , depthBiasClamp( depthBiasClamp_ )
8228 , depthBiasSlopeFactor( depthBiasSlopeFactor_ )
8229 , lineWidth( lineWidth_ )
8230 {
8231 }
8232
8233 PipelineRasterizationStateCreateInfo( VkPipelineRasterizationStateCreateInfo const & rhs )
8234 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008235 memcpy( this, &rhs, sizeof( PipelineRasterizationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008236 }
8237
8238 PipelineRasterizationStateCreateInfo& operator=( VkPipelineRasterizationStateCreateInfo const & rhs )
8239 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008240 memcpy( this, &rhs, sizeof( PipelineRasterizationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008241 return *this;
8242 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008243 PipelineRasterizationStateCreateInfo& setPNext( const void* pNext_ )
8244 {
8245 pNext = pNext_;
8246 return *this;
8247 }
8248
8249 PipelineRasterizationStateCreateInfo& setFlags( PipelineRasterizationStateCreateFlags flags_ )
8250 {
8251 flags = flags_;
8252 return *this;
8253 }
8254
8255 PipelineRasterizationStateCreateInfo& setDepthClampEnable( Bool32 depthClampEnable_ )
8256 {
8257 depthClampEnable = depthClampEnable_;
8258 return *this;
8259 }
8260
8261 PipelineRasterizationStateCreateInfo& setRasterizerDiscardEnable( Bool32 rasterizerDiscardEnable_ )
8262 {
8263 rasterizerDiscardEnable = rasterizerDiscardEnable_;
8264 return *this;
8265 }
8266
8267 PipelineRasterizationStateCreateInfo& setPolygonMode( PolygonMode polygonMode_ )
8268 {
8269 polygonMode = polygonMode_;
8270 return *this;
8271 }
8272
8273 PipelineRasterizationStateCreateInfo& setCullMode( CullModeFlags cullMode_ )
8274 {
8275 cullMode = cullMode_;
8276 return *this;
8277 }
8278
8279 PipelineRasterizationStateCreateInfo& setFrontFace( FrontFace frontFace_ )
8280 {
8281 frontFace = frontFace_;
8282 return *this;
8283 }
8284
8285 PipelineRasterizationStateCreateInfo& setDepthBiasEnable( Bool32 depthBiasEnable_ )
8286 {
8287 depthBiasEnable = depthBiasEnable_;
8288 return *this;
8289 }
8290
8291 PipelineRasterizationStateCreateInfo& setDepthBiasConstantFactor( float depthBiasConstantFactor_ )
8292 {
8293 depthBiasConstantFactor = depthBiasConstantFactor_;
8294 return *this;
8295 }
8296
8297 PipelineRasterizationStateCreateInfo& setDepthBiasClamp( float depthBiasClamp_ )
8298 {
8299 depthBiasClamp = depthBiasClamp_;
8300 return *this;
8301 }
8302
8303 PipelineRasterizationStateCreateInfo& setDepthBiasSlopeFactor( float depthBiasSlopeFactor_ )
8304 {
8305 depthBiasSlopeFactor = depthBiasSlopeFactor_;
8306 return *this;
8307 }
8308
8309 PipelineRasterizationStateCreateInfo& setLineWidth( float lineWidth_ )
8310 {
8311 lineWidth = lineWidth_;
8312 return *this;
8313 }
8314
8315 operator const VkPipelineRasterizationStateCreateInfo&() const
8316 {
8317 return *reinterpret_cast<const VkPipelineRasterizationStateCreateInfo*>(this);
8318 }
8319
8320 bool operator==( PipelineRasterizationStateCreateInfo const& rhs ) const
8321 {
8322 return ( sType == rhs.sType )
8323 && ( pNext == rhs.pNext )
8324 && ( flags == rhs.flags )
8325 && ( depthClampEnable == rhs.depthClampEnable )
8326 && ( rasterizerDiscardEnable == rhs.rasterizerDiscardEnable )
8327 && ( polygonMode == rhs.polygonMode )
8328 && ( cullMode == rhs.cullMode )
8329 && ( frontFace == rhs.frontFace )
8330 && ( depthBiasEnable == rhs.depthBiasEnable )
8331 && ( depthBiasConstantFactor == rhs.depthBiasConstantFactor )
8332 && ( depthBiasClamp == rhs.depthBiasClamp )
8333 && ( depthBiasSlopeFactor == rhs.depthBiasSlopeFactor )
8334 && ( lineWidth == rhs.lineWidth );
8335 }
8336
8337 bool operator!=( PipelineRasterizationStateCreateInfo const& rhs ) const
8338 {
8339 return !operator==( rhs );
8340 }
8341
8342 private:
8343 StructureType sType;
8344
8345 public:
8346 const void* pNext;
8347 PipelineRasterizationStateCreateFlags flags;
8348 Bool32 depthClampEnable;
8349 Bool32 rasterizerDiscardEnable;
8350 PolygonMode polygonMode;
8351 CullModeFlags cullMode;
8352 FrontFace frontFace;
8353 Bool32 depthBiasEnable;
8354 float depthBiasConstantFactor;
8355 float depthBiasClamp;
8356 float depthBiasSlopeFactor;
8357 float lineWidth;
8358 };
8359 static_assert( sizeof( PipelineRasterizationStateCreateInfo ) == sizeof( VkPipelineRasterizationStateCreateInfo ), "struct and wrapper have different size!" );
8360
8361 struct PipelineDepthStencilStateCreateInfo
8362 {
8363 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 )
8364 : sType( StructureType::ePipelineDepthStencilStateCreateInfo )
8365 , pNext( nullptr )
8366 , flags( flags_ )
8367 , depthTestEnable( depthTestEnable_ )
8368 , depthWriteEnable( depthWriteEnable_ )
8369 , depthCompareOp( depthCompareOp_ )
8370 , depthBoundsTestEnable( depthBoundsTestEnable_ )
8371 , stencilTestEnable( stencilTestEnable_ )
8372 , front( front_ )
8373 , back( back_ )
8374 , minDepthBounds( minDepthBounds_ )
8375 , maxDepthBounds( maxDepthBounds_ )
8376 {
8377 }
8378
8379 PipelineDepthStencilStateCreateInfo( VkPipelineDepthStencilStateCreateInfo const & rhs )
8380 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008381 memcpy( this, &rhs, sizeof( PipelineDepthStencilStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008382 }
8383
8384 PipelineDepthStencilStateCreateInfo& operator=( VkPipelineDepthStencilStateCreateInfo const & rhs )
8385 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008386 memcpy( this, &rhs, sizeof( PipelineDepthStencilStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008387 return *this;
8388 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008389 PipelineDepthStencilStateCreateInfo& setPNext( const void* pNext_ )
8390 {
8391 pNext = pNext_;
8392 return *this;
8393 }
8394
8395 PipelineDepthStencilStateCreateInfo& setFlags( PipelineDepthStencilStateCreateFlags flags_ )
8396 {
8397 flags = flags_;
8398 return *this;
8399 }
8400
8401 PipelineDepthStencilStateCreateInfo& setDepthTestEnable( Bool32 depthTestEnable_ )
8402 {
8403 depthTestEnable = depthTestEnable_;
8404 return *this;
8405 }
8406
8407 PipelineDepthStencilStateCreateInfo& setDepthWriteEnable( Bool32 depthWriteEnable_ )
8408 {
8409 depthWriteEnable = depthWriteEnable_;
8410 return *this;
8411 }
8412
8413 PipelineDepthStencilStateCreateInfo& setDepthCompareOp( CompareOp depthCompareOp_ )
8414 {
8415 depthCompareOp = depthCompareOp_;
8416 return *this;
8417 }
8418
8419 PipelineDepthStencilStateCreateInfo& setDepthBoundsTestEnable( Bool32 depthBoundsTestEnable_ )
8420 {
8421 depthBoundsTestEnable = depthBoundsTestEnable_;
8422 return *this;
8423 }
8424
8425 PipelineDepthStencilStateCreateInfo& setStencilTestEnable( Bool32 stencilTestEnable_ )
8426 {
8427 stencilTestEnable = stencilTestEnable_;
8428 return *this;
8429 }
8430
8431 PipelineDepthStencilStateCreateInfo& setFront( StencilOpState front_ )
8432 {
8433 front = front_;
8434 return *this;
8435 }
8436
8437 PipelineDepthStencilStateCreateInfo& setBack( StencilOpState back_ )
8438 {
8439 back = back_;
8440 return *this;
8441 }
8442
8443 PipelineDepthStencilStateCreateInfo& setMinDepthBounds( float minDepthBounds_ )
8444 {
8445 minDepthBounds = minDepthBounds_;
8446 return *this;
8447 }
8448
8449 PipelineDepthStencilStateCreateInfo& setMaxDepthBounds( float maxDepthBounds_ )
8450 {
8451 maxDepthBounds = maxDepthBounds_;
8452 return *this;
8453 }
8454
8455 operator const VkPipelineDepthStencilStateCreateInfo&() const
8456 {
8457 return *reinterpret_cast<const VkPipelineDepthStencilStateCreateInfo*>(this);
8458 }
8459
8460 bool operator==( PipelineDepthStencilStateCreateInfo const& rhs ) const
8461 {
8462 return ( sType == rhs.sType )
8463 && ( pNext == rhs.pNext )
8464 && ( flags == rhs.flags )
8465 && ( depthTestEnable == rhs.depthTestEnable )
8466 && ( depthWriteEnable == rhs.depthWriteEnable )
8467 && ( depthCompareOp == rhs.depthCompareOp )
8468 && ( depthBoundsTestEnable == rhs.depthBoundsTestEnable )
8469 && ( stencilTestEnable == rhs.stencilTestEnable )
8470 && ( front == rhs.front )
8471 && ( back == rhs.back )
8472 && ( minDepthBounds == rhs.minDepthBounds )
8473 && ( maxDepthBounds == rhs.maxDepthBounds );
8474 }
8475
8476 bool operator!=( PipelineDepthStencilStateCreateInfo const& rhs ) const
8477 {
8478 return !operator==( rhs );
8479 }
8480
8481 private:
8482 StructureType sType;
8483
8484 public:
8485 const void* pNext;
8486 PipelineDepthStencilStateCreateFlags flags;
8487 Bool32 depthTestEnable;
8488 Bool32 depthWriteEnable;
8489 CompareOp depthCompareOp;
8490 Bool32 depthBoundsTestEnable;
8491 Bool32 stencilTestEnable;
8492 StencilOpState front;
8493 StencilOpState back;
8494 float minDepthBounds;
8495 float maxDepthBounds;
8496 };
8497 static_assert( sizeof( PipelineDepthStencilStateCreateInfo ) == sizeof( VkPipelineDepthStencilStateCreateInfo ), "struct and wrapper have different size!" );
8498
8499 struct PipelineCacheCreateInfo
8500 {
8501 PipelineCacheCreateInfo( PipelineCacheCreateFlags flags_ = PipelineCacheCreateFlags(), size_t initialDataSize_ = 0, const void* pInitialData_ = nullptr )
8502 : sType( StructureType::ePipelineCacheCreateInfo )
8503 , pNext( nullptr )
8504 , flags( flags_ )
8505 , initialDataSize( initialDataSize_ )
8506 , pInitialData( pInitialData_ )
8507 {
8508 }
8509
8510 PipelineCacheCreateInfo( VkPipelineCacheCreateInfo const & rhs )
8511 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008512 memcpy( this, &rhs, sizeof( PipelineCacheCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008513 }
8514
8515 PipelineCacheCreateInfo& operator=( VkPipelineCacheCreateInfo const & rhs )
8516 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008517 memcpy( this, &rhs, sizeof( PipelineCacheCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008518 return *this;
8519 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008520 PipelineCacheCreateInfo& setPNext( const void* pNext_ )
8521 {
8522 pNext = pNext_;
8523 return *this;
8524 }
8525
8526 PipelineCacheCreateInfo& setFlags( PipelineCacheCreateFlags flags_ )
8527 {
8528 flags = flags_;
8529 return *this;
8530 }
8531
8532 PipelineCacheCreateInfo& setInitialDataSize( size_t initialDataSize_ )
8533 {
8534 initialDataSize = initialDataSize_;
8535 return *this;
8536 }
8537
8538 PipelineCacheCreateInfo& setPInitialData( const void* pInitialData_ )
8539 {
8540 pInitialData = pInitialData_;
8541 return *this;
8542 }
8543
8544 operator const VkPipelineCacheCreateInfo&() const
8545 {
8546 return *reinterpret_cast<const VkPipelineCacheCreateInfo*>(this);
8547 }
8548
8549 bool operator==( PipelineCacheCreateInfo const& rhs ) const
8550 {
8551 return ( sType == rhs.sType )
8552 && ( pNext == rhs.pNext )
8553 && ( flags == rhs.flags )
8554 && ( initialDataSize == rhs.initialDataSize )
8555 && ( pInitialData == rhs.pInitialData );
8556 }
8557
8558 bool operator!=( PipelineCacheCreateInfo const& rhs ) const
8559 {
8560 return !operator==( rhs );
8561 }
8562
8563 private:
8564 StructureType sType;
8565
8566 public:
8567 const void* pNext;
8568 PipelineCacheCreateFlags flags;
8569 size_t initialDataSize;
8570 const void* pInitialData;
8571 };
8572 static_assert( sizeof( PipelineCacheCreateInfo ) == sizeof( VkPipelineCacheCreateInfo ), "struct and wrapper have different size!" );
8573
8574 struct SamplerCreateInfo
8575 {
8576 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 )
8577 : sType( StructureType::eSamplerCreateInfo )
8578 , pNext( nullptr )
8579 , flags( flags_ )
8580 , magFilter( magFilter_ )
8581 , minFilter( minFilter_ )
8582 , mipmapMode( mipmapMode_ )
8583 , addressModeU( addressModeU_ )
8584 , addressModeV( addressModeV_ )
8585 , addressModeW( addressModeW_ )
8586 , mipLodBias( mipLodBias_ )
8587 , anisotropyEnable( anisotropyEnable_ )
8588 , maxAnisotropy( maxAnisotropy_ )
8589 , compareEnable( compareEnable_ )
8590 , compareOp( compareOp_ )
8591 , minLod( minLod_ )
8592 , maxLod( maxLod_ )
8593 , borderColor( borderColor_ )
8594 , unnormalizedCoordinates( unnormalizedCoordinates_ )
8595 {
8596 }
8597
8598 SamplerCreateInfo( VkSamplerCreateInfo const & rhs )
8599 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008600 memcpy( this, &rhs, sizeof( SamplerCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008601 }
8602
8603 SamplerCreateInfo& operator=( VkSamplerCreateInfo const & rhs )
8604 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008605 memcpy( this, &rhs, sizeof( SamplerCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008606 return *this;
8607 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008608 SamplerCreateInfo& setPNext( const void* pNext_ )
8609 {
8610 pNext = pNext_;
8611 return *this;
8612 }
8613
8614 SamplerCreateInfo& setFlags( SamplerCreateFlags flags_ )
8615 {
8616 flags = flags_;
8617 return *this;
8618 }
8619
8620 SamplerCreateInfo& setMagFilter( Filter magFilter_ )
8621 {
8622 magFilter = magFilter_;
8623 return *this;
8624 }
8625
8626 SamplerCreateInfo& setMinFilter( Filter minFilter_ )
8627 {
8628 minFilter = minFilter_;
8629 return *this;
8630 }
8631
8632 SamplerCreateInfo& setMipmapMode( SamplerMipmapMode mipmapMode_ )
8633 {
8634 mipmapMode = mipmapMode_;
8635 return *this;
8636 }
8637
8638 SamplerCreateInfo& setAddressModeU( SamplerAddressMode addressModeU_ )
8639 {
8640 addressModeU = addressModeU_;
8641 return *this;
8642 }
8643
8644 SamplerCreateInfo& setAddressModeV( SamplerAddressMode addressModeV_ )
8645 {
8646 addressModeV = addressModeV_;
8647 return *this;
8648 }
8649
8650 SamplerCreateInfo& setAddressModeW( SamplerAddressMode addressModeW_ )
8651 {
8652 addressModeW = addressModeW_;
8653 return *this;
8654 }
8655
8656 SamplerCreateInfo& setMipLodBias( float mipLodBias_ )
8657 {
8658 mipLodBias = mipLodBias_;
8659 return *this;
8660 }
8661
8662 SamplerCreateInfo& setAnisotropyEnable( Bool32 anisotropyEnable_ )
8663 {
8664 anisotropyEnable = anisotropyEnable_;
8665 return *this;
8666 }
8667
8668 SamplerCreateInfo& setMaxAnisotropy( float maxAnisotropy_ )
8669 {
8670 maxAnisotropy = maxAnisotropy_;
8671 return *this;
8672 }
8673
8674 SamplerCreateInfo& setCompareEnable( Bool32 compareEnable_ )
8675 {
8676 compareEnable = compareEnable_;
8677 return *this;
8678 }
8679
8680 SamplerCreateInfo& setCompareOp( CompareOp compareOp_ )
8681 {
8682 compareOp = compareOp_;
8683 return *this;
8684 }
8685
8686 SamplerCreateInfo& setMinLod( float minLod_ )
8687 {
8688 minLod = minLod_;
8689 return *this;
8690 }
8691
8692 SamplerCreateInfo& setMaxLod( float maxLod_ )
8693 {
8694 maxLod = maxLod_;
8695 return *this;
8696 }
8697
8698 SamplerCreateInfo& setBorderColor( BorderColor borderColor_ )
8699 {
8700 borderColor = borderColor_;
8701 return *this;
8702 }
8703
8704 SamplerCreateInfo& setUnnormalizedCoordinates( Bool32 unnormalizedCoordinates_ )
8705 {
8706 unnormalizedCoordinates = unnormalizedCoordinates_;
8707 return *this;
8708 }
8709
8710 operator const VkSamplerCreateInfo&() const
8711 {
8712 return *reinterpret_cast<const VkSamplerCreateInfo*>(this);
8713 }
8714
8715 bool operator==( SamplerCreateInfo const& rhs ) const
8716 {
8717 return ( sType == rhs.sType )
8718 && ( pNext == rhs.pNext )
8719 && ( flags == rhs.flags )
8720 && ( magFilter == rhs.magFilter )
8721 && ( minFilter == rhs.minFilter )
8722 && ( mipmapMode == rhs.mipmapMode )
8723 && ( addressModeU == rhs.addressModeU )
8724 && ( addressModeV == rhs.addressModeV )
8725 && ( addressModeW == rhs.addressModeW )
8726 && ( mipLodBias == rhs.mipLodBias )
8727 && ( anisotropyEnable == rhs.anisotropyEnable )
8728 && ( maxAnisotropy == rhs.maxAnisotropy )
8729 && ( compareEnable == rhs.compareEnable )
8730 && ( compareOp == rhs.compareOp )
8731 && ( minLod == rhs.minLod )
8732 && ( maxLod == rhs.maxLod )
8733 && ( borderColor == rhs.borderColor )
8734 && ( unnormalizedCoordinates == rhs.unnormalizedCoordinates );
8735 }
8736
8737 bool operator!=( SamplerCreateInfo const& rhs ) const
8738 {
8739 return !operator==( rhs );
8740 }
8741
8742 private:
8743 StructureType sType;
8744
8745 public:
8746 const void* pNext;
8747 SamplerCreateFlags flags;
8748 Filter magFilter;
8749 Filter minFilter;
8750 SamplerMipmapMode mipmapMode;
8751 SamplerAddressMode addressModeU;
8752 SamplerAddressMode addressModeV;
8753 SamplerAddressMode addressModeW;
8754 float mipLodBias;
8755 Bool32 anisotropyEnable;
8756 float maxAnisotropy;
8757 Bool32 compareEnable;
8758 CompareOp compareOp;
8759 float minLod;
8760 float maxLod;
8761 BorderColor borderColor;
8762 Bool32 unnormalizedCoordinates;
8763 };
8764 static_assert( sizeof( SamplerCreateInfo ) == sizeof( VkSamplerCreateInfo ), "struct and wrapper have different size!" );
8765
8766 struct CommandBufferAllocateInfo
8767 {
8768 CommandBufferAllocateInfo( CommandPool commandPool_ = CommandPool(), CommandBufferLevel level_ = CommandBufferLevel::ePrimary, uint32_t commandBufferCount_ = 0 )
8769 : sType( StructureType::eCommandBufferAllocateInfo )
8770 , pNext( nullptr )
8771 , commandPool( commandPool_ )
8772 , level( level_ )
8773 , commandBufferCount( commandBufferCount_ )
8774 {
8775 }
8776
8777 CommandBufferAllocateInfo( VkCommandBufferAllocateInfo const & rhs )
8778 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008779 memcpy( this, &rhs, sizeof( CommandBufferAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008780 }
8781
8782 CommandBufferAllocateInfo& operator=( VkCommandBufferAllocateInfo const & rhs )
8783 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008784 memcpy( this, &rhs, sizeof( CommandBufferAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008785 return *this;
8786 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008787 CommandBufferAllocateInfo& setPNext( const void* pNext_ )
8788 {
8789 pNext = pNext_;
8790 return *this;
8791 }
8792
8793 CommandBufferAllocateInfo& setCommandPool( CommandPool commandPool_ )
8794 {
8795 commandPool = commandPool_;
8796 return *this;
8797 }
8798
8799 CommandBufferAllocateInfo& setLevel( CommandBufferLevel level_ )
8800 {
8801 level = level_;
8802 return *this;
8803 }
8804
8805 CommandBufferAllocateInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
8806 {
8807 commandBufferCount = commandBufferCount_;
8808 return *this;
8809 }
8810
8811 operator const VkCommandBufferAllocateInfo&() const
8812 {
8813 return *reinterpret_cast<const VkCommandBufferAllocateInfo*>(this);
8814 }
8815
8816 bool operator==( CommandBufferAllocateInfo const& rhs ) const
8817 {
8818 return ( sType == rhs.sType )
8819 && ( pNext == rhs.pNext )
8820 && ( commandPool == rhs.commandPool )
8821 && ( level == rhs.level )
8822 && ( commandBufferCount == rhs.commandBufferCount );
8823 }
8824
8825 bool operator!=( CommandBufferAllocateInfo const& rhs ) const
8826 {
8827 return !operator==( rhs );
8828 }
8829
8830 private:
8831 StructureType sType;
8832
8833 public:
8834 const void* pNext;
8835 CommandPool commandPool;
8836 CommandBufferLevel level;
8837 uint32_t commandBufferCount;
8838 };
8839 static_assert( sizeof( CommandBufferAllocateInfo ) == sizeof( VkCommandBufferAllocateInfo ), "struct and wrapper have different size!" );
8840
8841 struct RenderPassBeginInfo
8842 {
8843 RenderPassBeginInfo( RenderPass renderPass_ = RenderPass(), Framebuffer framebuffer_ = Framebuffer(), Rect2D renderArea_ = Rect2D(), uint32_t clearValueCount_ = 0, const ClearValue* pClearValues_ = nullptr )
8844 : sType( StructureType::eRenderPassBeginInfo )
8845 , pNext( nullptr )
8846 , renderPass( renderPass_ )
8847 , framebuffer( framebuffer_ )
8848 , renderArea( renderArea_ )
8849 , clearValueCount( clearValueCount_ )
8850 , pClearValues( pClearValues_ )
8851 {
8852 }
8853
8854 RenderPassBeginInfo( VkRenderPassBeginInfo const & rhs )
8855 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008856 memcpy( this, &rhs, sizeof( RenderPassBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008857 }
8858
8859 RenderPassBeginInfo& operator=( VkRenderPassBeginInfo const & rhs )
8860 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008861 memcpy( this, &rhs, sizeof( RenderPassBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008862 return *this;
8863 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008864 RenderPassBeginInfo& setPNext( const void* pNext_ )
8865 {
8866 pNext = pNext_;
8867 return *this;
8868 }
8869
8870 RenderPassBeginInfo& setRenderPass( RenderPass renderPass_ )
8871 {
8872 renderPass = renderPass_;
8873 return *this;
8874 }
8875
8876 RenderPassBeginInfo& setFramebuffer( Framebuffer framebuffer_ )
8877 {
8878 framebuffer = framebuffer_;
8879 return *this;
8880 }
8881
8882 RenderPassBeginInfo& setRenderArea( Rect2D renderArea_ )
8883 {
8884 renderArea = renderArea_;
8885 return *this;
8886 }
8887
8888 RenderPassBeginInfo& setClearValueCount( uint32_t clearValueCount_ )
8889 {
8890 clearValueCount = clearValueCount_;
8891 return *this;
8892 }
8893
8894 RenderPassBeginInfo& setPClearValues( const ClearValue* pClearValues_ )
8895 {
8896 pClearValues = pClearValues_;
8897 return *this;
8898 }
8899
8900 operator const VkRenderPassBeginInfo&() const
8901 {
8902 return *reinterpret_cast<const VkRenderPassBeginInfo*>(this);
8903 }
8904
8905 bool operator==( RenderPassBeginInfo const& rhs ) const
8906 {
8907 return ( sType == rhs.sType )
8908 && ( pNext == rhs.pNext )
8909 && ( renderPass == rhs.renderPass )
8910 && ( framebuffer == rhs.framebuffer )
8911 && ( renderArea == rhs.renderArea )
8912 && ( clearValueCount == rhs.clearValueCount )
8913 && ( pClearValues == rhs.pClearValues );
8914 }
8915
8916 bool operator!=( RenderPassBeginInfo const& rhs ) const
8917 {
8918 return !operator==( rhs );
8919 }
8920
8921 private:
8922 StructureType sType;
8923
8924 public:
8925 const void* pNext;
8926 RenderPass renderPass;
8927 Framebuffer framebuffer;
8928 Rect2D renderArea;
8929 uint32_t clearValueCount;
8930 const ClearValue* pClearValues;
8931 };
8932 static_assert( sizeof( RenderPassBeginInfo ) == sizeof( VkRenderPassBeginInfo ), "struct and wrapper have different size!" );
8933
8934 struct EventCreateInfo
8935 {
8936 EventCreateInfo( EventCreateFlags flags_ = EventCreateFlags() )
8937 : sType( StructureType::eEventCreateInfo )
8938 , pNext( nullptr )
8939 , flags( flags_ )
8940 {
8941 }
8942
8943 EventCreateInfo( VkEventCreateInfo const & rhs )
8944 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008945 memcpy( this, &rhs, sizeof( EventCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008946 }
8947
8948 EventCreateInfo& operator=( VkEventCreateInfo const & rhs )
8949 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008950 memcpy( this, &rhs, sizeof( EventCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008951 return *this;
8952 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008953 EventCreateInfo& setPNext( const void* pNext_ )
8954 {
8955 pNext = pNext_;
8956 return *this;
8957 }
8958
8959 EventCreateInfo& setFlags( EventCreateFlags flags_ )
8960 {
8961 flags = flags_;
8962 return *this;
8963 }
8964
8965 operator const VkEventCreateInfo&() const
8966 {
8967 return *reinterpret_cast<const VkEventCreateInfo*>(this);
8968 }
8969
8970 bool operator==( EventCreateInfo const& rhs ) const
8971 {
8972 return ( sType == rhs.sType )
8973 && ( pNext == rhs.pNext )
8974 && ( flags == rhs.flags );
8975 }
8976
8977 bool operator!=( EventCreateInfo const& rhs ) const
8978 {
8979 return !operator==( rhs );
8980 }
8981
8982 private:
8983 StructureType sType;
8984
8985 public:
8986 const void* pNext;
8987 EventCreateFlags flags;
8988 };
8989 static_assert( sizeof( EventCreateInfo ) == sizeof( VkEventCreateInfo ), "struct and wrapper have different size!" );
8990
8991 struct SemaphoreCreateInfo
8992 {
8993 SemaphoreCreateInfo( SemaphoreCreateFlags flags_ = SemaphoreCreateFlags() )
8994 : sType( StructureType::eSemaphoreCreateInfo )
8995 , pNext( nullptr )
8996 , flags( flags_ )
8997 {
8998 }
8999
9000 SemaphoreCreateInfo( VkSemaphoreCreateInfo const & rhs )
9001 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009002 memcpy( this, &rhs, sizeof( SemaphoreCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009003 }
9004
9005 SemaphoreCreateInfo& operator=( VkSemaphoreCreateInfo const & rhs )
9006 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009007 memcpy( this, &rhs, sizeof( SemaphoreCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009008 return *this;
9009 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009010 SemaphoreCreateInfo& setPNext( const void* pNext_ )
9011 {
9012 pNext = pNext_;
9013 return *this;
9014 }
9015
9016 SemaphoreCreateInfo& setFlags( SemaphoreCreateFlags flags_ )
9017 {
9018 flags = flags_;
9019 return *this;
9020 }
9021
9022 operator const VkSemaphoreCreateInfo&() const
9023 {
9024 return *reinterpret_cast<const VkSemaphoreCreateInfo*>(this);
9025 }
9026
9027 bool operator==( SemaphoreCreateInfo const& rhs ) const
9028 {
9029 return ( sType == rhs.sType )
9030 && ( pNext == rhs.pNext )
9031 && ( flags == rhs.flags );
9032 }
9033
9034 bool operator!=( SemaphoreCreateInfo const& rhs ) const
9035 {
9036 return !operator==( rhs );
9037 }
9038
9039 private:
9040 StructureType sType;
9041
9042 public:
9043 const void* pNext;
9044 SemaphoreCreateFlags flags;
9045 };
9046 static_assert( sizeof( SemaphoreCreateInfo ) == sizeof( VkSemaphoreCreateInfo ), "struct and wrapper have different size!" );
9047
9048 struct FramebufferCreateInfo
9049 {
9050 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 )
9051 : sType( StructureType::eFramebufferCreateInfo )
9052 , pNext( nullptr )
9053 , flags( flags_ )
9054 , renderPass( renderPass_ )
9055 , attachmentCount( attachmentCount_ )
9056 , pAttachments( pAttachments_ )
9057 , width( width_ )
9058 , height( height_ )
9059 , layers( layers_ )
9060 {
9061 }
9062
9063 FramebufferCreateInfo( VkFramebufferCreateInfo const & rhs )
9064 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009065 memcpy( this, &rhs, sizeof( FramebufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009066 }
9067
9068 FramebufferCreateInfo& operator=( VkFramebufferCreateInfo const & rhs )
9069 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009070 memcpy( this, &rhs, sizeof( FramebufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009071 return *this;
9072 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009073 FramebufferCreateInfo& setPNext( const void* pNext_ )
9074 {
9075 pNext = pNext_;
9076 return *this;
9077 }
9078
9079 FramebufferCreateInfo& setFlags( FramebufferCreateFlags flags_ )
9080 {
9081 flags = flags_;
9082 return *this;
9083 }
9084
9085 FramebufferCreateInfo& setRenderPass( RenderPass renderPass_ )
9086 {
9087 renderPass = renderPass_;
9088 return *this;
9089 }
9090
9091 FramebufferCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
9092 {
9093 attachmentCount = attachmentCount_;
9094 return *this;
9095 }
9096
9097 FramebufferCreateInfo& setPAttachments( const ImageView* pAttachments_ )
9098 {
9099 pAttachments = pAttachments_;
9100 return *this;
9101 }
9102
9103 FramebufferCreateInfo& setWidth( uint32_t width_ )
9104 {
9105 width = width_;
9106 return *this;
9107 }
9108
9109 FramebufferCreateInfo& setHeight( uint32_t height_ )
9110 {
9111 height = height_;
9112 return *this;
9113 }
9114
9115 FramebufferCreateInfo& setLayers( uint32_t layers_ )
9116 {
9117 layers = layers_;
9118 return *this;
9119 }
9120
9121 operator const VkFramebufferCreateInfo&() const
9122 {
9123 return *reinterpret_cast<const VkFramebufferCreateInfo*>(this);
9124 }
9125
9126 bool operator==( FramebufferCreateInfo const& rhs ) const
9127 {
9128 return ( sType == rhs.sType )
9129 && ( pNext == rhs.pNext )
9130 && ( flags == rhs.flags )
9131 && ( renderPass == rhs.renderPass )
9132 && ( attachmentCount == rhs.attachmentCount )
9133 && ( pAttachments == rhs.pAttachments )
9134 && ( width == rhs.width )
9135 && ( height == rhs.height )
9136 && ( layers == rhs.layers );
9137 }
9138
9139 bool operator!=( FramebufferCreateInfo const& rhs ) const
9140 {
9141 return !operator==( rhs );
9142 }
9143
9144 private:
9145 StructureType sType;
9146
9147 public:
9148 const void* pNext;
9149 FramebufferCreateFlags flags;
9150 RenderPass renderPass;
9151 uint32_t attachmentCount;
9152 const ImageView* pAttachments;
9153 uint32_t width;
9154 uint32_t height;
9155 uint32_t layers;
9156 };
9157 static_assert( sizeof( FramebufferCreateInfo ) == sizeof( VkFramebufferCreateInfo ), "struct and wrapper have different size!" );
9158
9159 struct DisplayModeCreateInfoKHR
9160 {
9161 DisplayModeCreateInfoKHR( DisplayModeCreateFlagsKHR flags_ = DisplayModeCreateFlagsKHR(), DisplayModeParametersKHR parameters_ = DisplayModeParametersKHR() )
9162 : sType( StructureType::eDisplayModeCreateInfoKHR )
9163 , pNext( nullptr )
9164 , flags( flags_ )
9165 , parameters( parameters_ )
9166 {
9167 }
9168
9169 DisplayModeCreateInfoKHR( VkDisplayModeCreateInfoKHR const & rhs )
9170 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009171 memcpy( this, &rhs, sizeof( DisplayModeCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009172 }
9173
9174 DisplayModeCreateInfoKHR& operator=( VkDisplayModeCreateInfoKHR const & rhs )
9175 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009176 memcpy( this, &rhs, sizeof( DisplayModeCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009177 return *this;
9178 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009179 DisplayModeCreateInfoKHR& setPNext( const void* pNext_ )
9180 {
9181 pNext = pNext_;
9182 return *this;
9183 }
9184
9185 DisplayModeCreateInfoKHR& setFlags( DisplayModeCreateFlagsKHR flags_ )
9186 {
9187 flags = flags_;
9188 return *this;
9189 }
9190
9191 DisplayModeCreateInfoKHR& setParameters( DisplayModeParametersKHR parameters_ )
9192 {
9193 parameters = parameters_;
9194 return *this;
9195 }
9196
9197 operator const VkDisplayModeCreateInfoKHR&() const
9198 {
9199 return *reinterpret_cast<const VkDisplayModeCreateInfoKHR*>(this);
9200 }
9201
9202 bool operator==( DisplayModeCreateInfoKHR const& rhs ) const
9203 {
9204 return ( sType == rhs.sType )
9205 && ( pNext == rhs.pNext )
9206 && ( flags == rhs.flags )
9207 && ( parameters == rhs.parameters );
9208 }
9209
9210 bool operator!=( DisplayModeCreateInfoKHR const& rhs ) const
9211 {
9212 return !operator==( rhs );
9213 }
9214
9215 private:
9216 StructureType sType;
9217
9218 public:
9219 const void* pNext;
9220 DisplayModeCreateFlagsKHR flags;
9221 DisplayModeParametersKHR parameters;
9222 };
9223 static_assert( sizeof( DisplayModeCreateInfoKHR ) == sizeof( VkDisplayModeCreateInfoKHR ), "struct and wrapper have different size!" );
9224
9225 struct DisplayPresentInfoKHR
9226 {
9227 DisplayPresentInfoKHR( Rect2D srcRect_ = Rect2D(), Rect2D dstRect_ = Rect2D(), Bool32 persistent_ = 0 )
9228 : sType( StructureType::eDisplayPresentInfoKHR )
9229 , pNext( nullptr )
9230 , srcRect( srcRect_ )
9231 , dstRect( dstRect_ )
9232 , persistent( persistent_ )
9233 {
9234 }
9235
9236 DisplayPresentInfoKHR( VkDisplayPresentInfoKHR const & rhs )
9237 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009238 memcpy( this, &rhs, sizeof( DisplayPresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009239 }
9240
9241 DisplayPresentInfoKHR& operator=( VkDisplayPresentInfoKHR const & rhs )
9242 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009243 memcpy( this, &rhs, sizeof( DisplayPresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009244 return *this;
9245 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009246 DisplayPresentInfoKHR& setPNext( const void* pNext_ )
9247 {
9248 pNext = pNext_;
9249 return *this;
9250 }
9251
9252 DisplayPresentInfoKHR& setSrcRect( Rect2D srcRect_ )
9253 {
9254 srcRect = srcRect_;
9255 return *this;
9256 }
9257
9258 DisplayPresentInfoKHR& setDstRect( Rect2D dstRect_ )
9259 {
9260 dstRect = dstRect_;
9261 return *this;
9262 }
9263
9264 DisplayPresentInfoKHR& setPersistent( Bool32 persistent_ )
9265 {
9266 persistent = persistent_;
9267 return *this;
9268 }
9269
9270 operator const VkDisplayPresentInfoKHR&() const
9271 {
9272 return *reinterpret_cast<const VkDisplayPresentInfoKHR*>(this);
9273 }
9274
9275 bool operator==( DisplayPresentInfoKHR const& rhs ) const
9276 {
9277 return ( sType == rhs.sType )
9278 && ( pNext == rhs.pNext )
9279 && ( srcRect == rhs.srcRect )
9280 && ( dstRect == rhs.dstRect )
9281 && ( persistent == rhs.persistent );
9282 }
9283
9284 bool operator!=( DisplayPresentInfoKHR const& rhs ) const
9285 {
9286 return !operator==( rhs );
9287 }
9288
9289 private:
9290 StructureType sType;
9291
9292 public:
9293 const void* pNext;
9294 Rect2D srcRect;
9295 Rect2D dstRect;
9296 Bool32 persistent;
9297 };
9298 static_assert( sizeof( DisplayPresentInfoKHR ) == sizeof( VkDisplayPresentInfoKHR ), "struct and wrapper have different size!" );
9299
9300#ifdef VK_USE_PLATFORM_ANDROID_KHR
9301 struct AndroidSurfaceCreateInfoKHR
9302 {
9303 AndroidSurfaceCreateInfoKHR( AndroidSurfaceCreateFlagsKHR flags_ = AndroidSurfaceCreateFlagsKHR(), ANativeWindow* window_ = nullptr )
9304 : sType( StructureType::eAndroidSurfaceCreateInfoKHR )
9305 , pNext( nullptr )
9306 , flags( flags_ )
9307 , window( window_ )
9308 {
9309 }
9310
9311 AndroidSurfaceCreateInfoKHR( VkAndroidSurfaceCreateInfoKHR const & rhs )
9312 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009313 memcpy( this, &rhs, sizeof( AndroidSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009314 }
9315
9316 AndroidSurfaceCreateInfoKHR& operator=( VkAndroidSurfaceCreateInfoKHR const & rhs )
9317 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009318 memcpy( this, &rhs, sizeof( AndroidSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009319 return *this;
9320 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009321 AndroidSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9322 {
9323 pNext = pNext_;
9324 return *this;
9325 }
9326
9327 AndroidSurfaceCreateInfoKHR& setFlags( AndroidSurfaceCreateFlagsKHR flags_ )
9328 {
9329 flags = flags_;
9330 return *this;
9331 }
9332
9333 AndroidSurfaceCreateInfoKHR& setWindow( ANativeWindow* window_ )
9334 {
9335 window = window_;
9336 return *this;
9337 }
9338
9339 operator const VkAndroidSurfaceCreateInfoKHR&() const
9340 {
9341 return *reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>(this);
9342 }
9343
9344 bool operator==( AndroidSurfaceCreateInfoKHR const& rhs ) const
9345 {
9346 return ( sType == rhs.sType )
9347 && ( pNext == rhs.pNext )
9348 && ( flags == rhs.flags )
9349 && ( window == rhs.window );
9350 }
9351
9352 bool operator!=( AndroidSurfaceCreateInfoKHR const& rhs ) const
9353 {
9354 return !operator==( rhs );
9355 }
9356
9357 private:
9358 StructureType sType;
9359
9360 public:
9361 const void* pNext;
9362 AndroidSurfaceCreateFlagsKHR flags;
9363 ANativeWindow* window;
9364 };
9365 static_assert( sizeof( AndroidSurfaceCreateInfoKHR ) == sizeof( VkAndroidSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9366#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
9367
9368#ifdef VK_USE_PLATFORM_MIR_KHR
9369 struct MirSurfaceCreateInfoKHR
9370 {
9371 MirSurfaceCreateInfoKHR( MirSurfaceCreateFlagsKHR flags_ = MirSurfaceCreateFlagsKHR(), MirConnection* connection_ = nullptr, MirSurface* mirSurface_ = nullptr )
9372 : sType( StructureType::eMirSurfaceCreateInfoKHR )
9373 , pNext( nullptr )
9374 , flags( flags_ )
9375 , connection( connection_ )
9376 , mirSurface( mirSurface_ )
9377 {
9378 }
9379
9380 MirSurfaceCreateInfoKHR( VkMirSurfaceCreateInfoKHR const & rhs )
9381 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009382 memcpy( this, &rhs, sizeof( MirSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009383 }
9384
9385 MirSurfaceCreateInfoKHR& operator=( VkMirSurfaceCreateInfoKHR const & rhs )
9386 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009387 memcpy( this, &rhs, sizeof( MirSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009388 return *this;
9389 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009390 MirSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9391 {
9392 pNext = pNext_;
9393 return *this;
9394 }
9395
9396 MirSurfaceCreateInfoKHR& setFlags( MirSurfaceCreateFlagsKHR flags_ )
9397 {
9398 flags = flags_;
9399 return *this;
9400 }
9401
9402 MirSurfaceCreateInfoKHR& setConnection( MirConnection* connection_ )
9403 {
9404 connection = connection_;
9405 return *this;
9406 }
9407
9408 MirSurfaceCreateInfoKHR& setMirSurface( MirSurface* mirSurface_ )
9409 {
9410 mirSurface = mirSurface_;
9411 return *this;
9412 }
9413
9414 operator const VkMirSurfaceCreateInfoKHR&() const
9415 {
9416 return *reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>(this);
9417 }
9418
9419 bool operator==( MirSurfaceCreateInfoKHR const& rhs ) const
9420 {
9421 return ( sType == rhs.sType )
9422 && ( pNext == rhs.pNext )
9423 && ( flags == rhs.flags )
9424 && ( connection == rhs.connection )
9425 && ( mirSurface == rhs.mirSurface );
9426 }
9427
9428 bool operator!=( MirSurfaceCreateInfoKHR const& rhs ) const
9429 {
9430 return !operator==( rhs );
9431 }
9432
9433 private:
9434 StructureType sType;
9435
9436 public:
9437 const void* pNext;
9438 MirSurfaceCreateFlagsKHR flags;
9439 MirConnection* connection;
9440 MirSurface* mirSurface;
9441 };
9442 static_assert( sizeof( MirSurfaceCreateInfoKHR ) == sizeof( VkMirSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9443#endif /*VK_USE_PLATFORM_MIR_KHR*/
9444
Mark Young39389872017-01-19 21:10:49 -07009445#ifdef VK_USE_PLATFORM_VI_NN
9446 struct ViSurfaceCreateInfoNN
9447 {
9448 ViSurfaceCreateInfoNN( ViSurfaceCreateFlagsNN flags_ = ViSurfaceCreateFlagsNN(), void* window_ = nullptr )
9449 : sType( StructureType::eViSurfaceCreateInfoNN )
9450 , pNext( nullptr )
9451 , flags( flags_ )
9452 , window( window_ )
9453 {
9454 }
9455
9456 ViSurfaceCreateInfoNN( VkViSurfaceCreateInfoNN const & rhs )
9457 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009458 memcpy( this, &rhs, sizeof( ViSurfaceCreateInfoNN ) );
Mark Young39389872017-01-19 21:10:49 -07009459 }
9460
9461 ViSurfaceCreateInfoNN& operator=( VkViSurfaceCreateInfoNN const & rhs )
9462 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009463 memcpy( this, &rhs, sizeof( ViSurfaceCreateInfoNN ) );
Mark Young39389872017-01-19 21:10:49 -07009464 return *this;
9465 }
Mark Young39389872017-01-19 21:10:49 -07009466 ViSurfaceCreateInfoNN& setPNext( const void* pNext_ )
9467 {
9468 pNext = pNext_;
9469 return *this;
9470 }
9471
9472 ViSurfaceCreateInfoNN& setFlags( ViSurfaceCreateFlagsNN flags_ )
9473 {
9474 flags = flags_;
9475 return *this;
9476 }
9477
9478 ViSurfaceCreateInfoNN& setWindow( void* window_ )
9479 {
9480 window = window_;
9481 return *this;
9482 }
9483
9484 operator const VkViSurfaceCreateInfoNN&() const
9485 {
9486 return *reinterpret_cast<const VkViSurfaceCreateInfoNN*>(this);
9487 }
9488
9489 bool operator==( ViSurfaceCreateInfoNN const& rhs ) const
9490 {
9491 return ( sType == rhs.sType )
9492 && ( pNext == rhs.pNext )
9493 && ( flags == rhs.flags )
9494 && ( window == rhs.window );
9495 }
9496
9497 bool operator!=( ViSurfaceCreateInfoNN const& rhs ) const
9498 {
9499 return !operator==( rhs );
9500 }
9501
9502 private:
9503 StructureType sType;
9504
9505 public:
9506 const void* pNext;
9507 ViSurfaceCreateFlagsNN flags;
9508 void* window;
9509 };
9510 static_assert( sizeof( ViSurfaceCreateInfoNN ) == sizeof( VkViSurfaceCreateInfoNN ), "struct and wrapper have different size!" );
9511#endif /*VK_USE_PLATFORM_VI_NN*/
9512
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009513#ifdef VK_USE_PLATFORM_WAYLAND_KHR
9514 struct WaylandSurfaceCreateInfoKHR
9515 {
9516 WaylandSurfaceCreateInfoKHR( WaylandSurfaceCreateFlagsKHR flags_ = WaylandSurfaceCreateFlagsKHR(), struct wl_display* display_ = nullptr, struct wl_surface* surface_ = nullptr )
9517 : sType( StructureType::eWaylandSurfaceCreateInfoKHR )
9518 , pNext( nullptr )
9519 , flags( flags_ )
9520 , display( display_ )
9521 , surface( surface_ )
9522 {
9523 }
9524
9525 WaylandSurfaceCreateInfoKHR( VkWaylandSurfaceCreateInfoKHR const & rhs )
9526 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009527 memcpy( this, &rhs, sizeof( WaylandSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009528 }
9529
9530 WaylandSurfaceCreateInfoKHR& operator=( VkWaylandSurfaceCreateInfoKHR const & rhs )
9531 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009532 memcpy( this, &rhs, sizeof( WaylandSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009533 return *this;
9534 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009535 WaylandSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9536 {
9537 pNext = pNext_;
9538 return *this;
9539 }
9540
9541 WaylandSurfaceCreateInfoKHR& setFlags( WaylandSurfaceCreateFlagsKHR flags_ )
9542 {
9543 flags = flags_;
9544 return *this;
9545 }
9546
9547 WaylandSurfaceCreateInfoKHR& setDisplay( struct wl_display* display_ )
9548 {
9549 display = display_;
9550 return *this;
9551 }
9552
9553 WaylandSurfaceCreateInfoKHR& setSurface( struct wl_surface* surface_ )
9554 {
9555 surface = surface_;
9556 return *this;
9557 }
9558
9559 operator const VkWaylandSurfaceCreateInfoKHR&() const
9560 {
9561 return *reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>(this);
9562 }
9563
9564 bool operator==( WaylandSurfaceCreateInfoKHR const& rhs ) const
9565 {
9566 return ( sType == rhs.sType )
9567 && ( pNext == rhs.pNext )
9568 && ( flags == rhs.flags )
9569 && ( display == rhs.display )
9570 && ( surface == rhs.surface );
9571 }
9572
9573 bool operator!=( WaylandSurfaceCreateInfoKHR const& rhs ) const
9574 {
9575 return !operator==( rhs );
9576 }
9577
9578 private:
9579 StructureType sType;
9580
9581 public:
9582 const void* pNext;
9583 WaylandSurfaceCreateFlagsKHR flags;
9584 struct wl_display* display;
9585 struct wl_surface* surface;
9586 };
9587 static_assert( sizeof( WaylandSurfaceCreateInfoKHR ) == sizeof( VkWaylandSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9588#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
9589
9590#ifdef VK_USE_PLATFORM_WIN32_KHR
9591 struct Win32SurfaceCreateInfoKHR
9592 {
9593 Win32SurfaceCreateInfoKHR( Win32SurfaceCreateFlagsKHR flags_ = Win32SurfaceCreateFlagsKHR(), HINSTANCE hinstance_ = 0, HWND hwnd_ = 0 )
9594 : sType( StructureType::eWin32SurfaceCreateInfoKHR )
9595 , pNext( nullptr )
9596 , flags( flags_ )
9597 , hinstance( hinstance_ )
9598 , hwnd( hwnd_ )
9599 {
9600 }
9601
9602 Win32SurfaceCreateInfoKHR( VkWin32SurfaceCreateInfoKHR const & rhs )
9603 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009604 memcpy( this, &rhs, sizeof( Win32SurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009605 }
9606
9607 Win32SurfaceCreateInfoKHR& operator=( VkWin32SurfaceCreateInfoKHR const & rhs )
9608 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009609 memcpy( this, &rhs, sizeof( Win32SurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009610 return *this;
9611 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009612 Win32SurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9613 {
9614 pNext = pNext_;
9615 return *this;
9616 }
9617
9618 Win32SurfaceCreateInfoKHR& setFlags( Win32SurfaceCreateFlagsKHR flags_ )
9619 {
9620 flags = flags_;
9621 return *this;
9622 }
9623
9624 Win32SurfaceCreateInfoKHR& setHinstance( HINSTANCE hinstance_ )
9625 {
9626 hinstance = hinstance_;
9627 return *this;
9628 }
9629
9630 Win32SurfaceCreateInfoKHR& setHwnd( HWND hwnd_ )
9631 {
9632 hwnd = hwnd_;
9633 return *this;
9634 }
9635
9636 operator const VkWin32SurfaceCreateInfoKHR&() const
9637 {
9638 return *reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>(this);
9639 }
9640
9641 bool operator==( Win32SurfaceCreateInfoKHR const& rhs ) const
9642 {
9643 return ( sType == rhs.sType )
9644 && ( pNext == rhs.pNext )
9645 && ( flags == rhs.flags )
9646 && ( hinstance == rhs.hinstance )
9647 && ( hwnd == rhs.hwnd );
9648 }
9649
9650 bool operator!=( Win32SurfaceCreateInfoKHR const& rhs ) const
9651 {
9652 return !operator==( rhs );
9653 }
9654
9655 private:
9656 StructureType sType;
9657
9658 public:
9659 const void* pNext;
9660 Win32SurfaceCreateFlagsKHR flags;
9661 HINSTANCE hinstance;
9662 HWND hwnd;
9663 };
9664 static_assert( sizeof( Win32SurfaceCreateInfoKHR ) == sizeof( VkWin32SurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9665#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9666
9667#ifdef VK_USE_PLATFORM_XLIB_KHR
9668 struct XlibSurfaceCreateInfoKHR
9669 {
9670 XlibSurfaceCreateInfoKHR( XlibSurfaceCreateFlagsKHR flags_ = XlibSurfaceCreateFlagsKHR(), Display* dpy_ = nullptr, Window window_ = 0 )
9671 : sType( StructureType::eXlibSurfaceCreateInfoKHR )
9672 , pNext( nullptr )
9673 , flags( flags_ )
9674 , dpy( dpy_ )
9675 , window( window_ )
9676 {
9677 }
9678
9679 XlibSurfaceCreateInfoKHR( VkXlibSurfaceCreateInfoKHR const & rhs )
9680 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009681 memcpy( this, &rhs, sizeof( XlibSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009682 }
9683
9684 XlibSurfaceCreateInfoKHR& operator=( VkXlibSurfaceCreateInfoKHR const & rhs )
9685 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009686 memcpy( this, &rhs, sizeof( XlibSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009687 return *this;
9688 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009689 XlibSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9690 {
9691 pNext = pNext_;
9692 return *this;
9693 }
9694
9695 XlibSurfaceCreateInfoKHR& setFlags( XlibSurfaceCreateFlagsKHR flags_ )
9696 {
9697 flags = flags_;
9698 return *this;
9699 }
9700
9701 XlibSurfaceCreateInfoKHR& setDpy( Display* dpy_ )
9702 {
9703 dpy = dpy_;
9704 return *this;
9705 }
9706
9707 XlibSurfaceCreateInfoKHR& setWindow( Window window_ )
9708 {
9709 window = window_;
9710 return *this;
9711 }
9712
9713 operator const VkXlibSurfaceCreateInfoKHR&() const
9714 {
9715 return *reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>(this);
9716 }
9717
9718 bool operator==( XlibSurfaceCreateInfoKHR const& rhs ) const
9719 {
9720 return ( sType == rhs.sType )
9721 && ( pNext == rhs.pNext )
9722 && ( flags == rhs.flags )
9723 && ( dpy == rhs.dpy )
9724 && ( window == rhs.window );
9725 }
9726
9727 bool operator!=( XlibSurfaceCreateInfoKHR const& rhs ) const
9728 {
9729 return !operator==( rhs );
9730 }
9731
9732 private:
9733 StructureType sType;
9734
9735 public:
9736 const void* pNext;
9737 XlibSurfaceCreateFlagsKHR flags;
9738 Display* dpy;
9739 Window window;
9740 };
9741 static_assert( sizeof( XlibSurfaceCreateInfoKHR ) == sizeof( VkXlibSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9742#endif /*VK_USE_PLATFORM_XLIB_KHR*/
9743
9744#ifdef VK_USE_PLATFORM_XCB_KHR
9745 struct XcbSurfaceCreateInfoKHR
9746 {
9747 XcbSurfaceCreateInfoKHR( XcbSurfaceCreateFlagsKHR flags_ = XcbSurfaceCreateFlagsKHR(), xcb_connection_t* connection_ = nullptr, xcb_window_t window_ = 0 )
9748 : sType( StructureType::eXcbSurfaceCreateInfoKHR )
9749 , pNext( nullptr )
9750 , flags( flags_ )
9751 , connection( connection_ )
9752 , window( window_ )
9753 {
9754 }
9755
9756 XcbSurfaceCreateInfoKHR( VkXcbSurfaceCreateInfoKHR const & rhs )
9757 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009758 memcpy( this, &rhs, sizeof( XcbSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009759 }
9760
9761 XcbSurfaceCreateInfoKHR& operator=( VkXcbSurfaceCreateInfoKHR const & rhs )
9762 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009763 memcpy( this, &rhs, sizeof( XcbSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009764 return *this;
9765 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009766 XcbSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9767 {
9768 pNext = pNext_;
9769 return *this;
9770 }
9771
9772 XcbSurfaceCreateInfoKHR& setFlags( XcbSurfaceCreateFlagsKHR flags_ )
9773 {
9774 flags = flags_;
9775 return *this;
9776 }
9777
9778 XcbSurfaceCreateInfoKHR& setConnection( xcb_connection_t* connection_ )
9779 {
9780 connection = connection_;
9781 return *this;
9782 }
9783
9784 XcbSurfaceCreateInfoKHR& setWindow( xcb_window_t window_ )
9785 {
9786 window = window_;
9787 return *this;
9788 }
9789
9790 operator const VkXcbSurfaceCreateInfoKHR&() const
9791 {
9792 return *reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>(this);
9793 }
9794
9795 bool operator==( XcbSurfaceCreateInfoKHR const& rhs ) const
9796 {
9797 return ( sType == rhs.sType )
9798 && ( pNext == rhs.pNext )
9799 && ( flags == rhs.flags )
9800 && ( connection == rhs.connection )
9801 && ( window == rhs.window );
9802 }
9803
9804 bool operator!=( XcbSurfaceCreateInfoKHR const& rhs ) const
9805 {
9806 return !operator==( rhs );
9807 }
9808
9809 private:
9810 StructureType sType;
9811
9812 public:
9813 const void* pNext;
9814 XcbSurfaceCreateFlagsKHR flags;
9815 xcb_connection_t* connection;
9816 xcb_window_t window;
9817 };
9818 static_assert( sizeof( XcbSurfaceCreateInfoKHR ) == sizeof( VkXcbSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9819#endif /*VK_USE_PLATFORM_XCB_KHR*/
9820
9821 struct DebugMarkerMarkerInfoEXT
9822 {
9823 DebugMarkerMarkerInfoEXT( const char* pMarkerName_ = nullptr, std::array<float,4> const& color_ = { { 0, 0, 0, 0 } } )
9824 : sType( StructureType::eDebugMarkerMarkerInfoEXT )
9825 , pNext( nullptr )
9826 , pMarkerName( pMarkerName_ )
9827 {
9828 memcpy( &color, color_.data(), 4 * sizeof( float ) );
9829 }
9830
9831 DebugMarkerMarkerInfoEXT( VkDebugMarkerMarkerInfoEXT const & rhs )
9832 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009833 memcpy( this, &rhs, sizeof( DebugMarkerMarkerInfoEXT ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009834 }
9835
9836 DebugMarkerMarkerInfoEXT& operator=( VkDebugMarkerMarkerInfoEXT const & rhs )
9837 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009838 memcpy( this, &rhs, sizeof( DebugMarkerMarkerInfoEXT ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009839 return *this;
9840 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009841 DebugMarkerMarkerInfoEXT& setPNext( const void* pNext_ )
9842 {
9843 pNext = pNext_;
9844 return *this;
9845 }
9846
9847 DebugMarkerMarkerInfoEXT& setPMarkerName( const char* pMarkerName_ )
9848 {
9849 pMarkerName = pMarkerName_;
9850 return *this;
9851 }
9852
9853 DebugMarkerMarkerInfoEXT& setColor( std::array<float,4> color_ )
9854 {
9855 memcpy( &color, color_.data(), 4 * sizeof( float ) );
9856 return *this;
9857 }
9858
9859 operator const VkDebugMarkerMarkerInfoEXT&() const
9860 {
9861 return *reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>(this);
9862 }
9863
9864 bool operator==( DebugMarkerMarkerInfoEXT const& rhs ) const
9865 {
9866 return ( sType == rhs.sType )
9867 && ( pNext == rhs.pNext )
9868 && ( pMarkerName == rhs.pMarkerName )
9869 && ( memcmp( color, rhs.color, 4 * sizeof( float ) ) == 0 );
9870 }
9871
9872 bool operator!=( DebugMarkerMarkerInfoEXT const& rhs ) const
9873 {
9874 return !operator==( rhs );
9875 }
9876
9877 private:
9878 StructureType sType;
9879
9880 public:
9881 const void* pNext;
9882 const char* pMarkerName;
9883 float color[4];
9884 };
9885 static_assert( sizeof( DebugMarkerMarkerInfoEXT ) == sizeof( VkDebugMarkerMarkerInfoEXT ), "struct and wrapper have different size!" );
9886
9887 struct DedicatedAllocationImageCreateInfoNV
9888 {
9889 DedicatedAllocationImageCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
9890 : sType( StructureType::eDedicatedAllocationImageCreateInfoNV )
9891 , pNext( nullptr )
9892 , dedicatedAllocation( dedicatedAllocation_ )
9893 {
9894 }
9895
9896 DedicatedAllocationImageCreateInfoNV( VkDedicatedAllocationImageCreateInfoNV const & rhs )
9897 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009898 memcpy( this, &rhs, sizeof( DedicatedAllocationImageCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009899 }
9900
9901 DedicatedAllocationImageCreateInfoNV& operator=( VkDedicatedAllocationImageCreateInfoNV const & rhs )
9902 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009903 memcpy( this, &rhs, sizeof( DedicatedAllocationImageCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009904 return *this;
9905 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009906 DedicatedAllocationImageCreateInfoNV& setPNext( const void* pNext_ )
9907 {
9908 pNext = pNext_;
9909 return *this;
9910 }
9911
9912 DedicatedAllocationImageCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
9913 {
9914 dedicatedAllocation = dedicatedAllocation_;
9915 return *this;
9916 }
9917
9918 operator const VkDedicatedAllocationImageCreateInfoNV&() const
9919 {
9920 return *reinterpret_cast<const VkDedicatedAllocationImageCreateInfoNV*>(this);
9921 }
9922
9923 bool operator==( DedicatedAllocationImageCreateInfoNV const& rhs ) const
9924 {
9925 return ( sType == rhs.sType )
9926 && ( pNext == rhs.pNext )
9927 && ( dedicatedAllocation == rhs.dedicatedAllocation );
9928 }
9929
9930 bool operator!=( DedicatedAllocationImageCreateInfoNV const& rhs ) const
9931 {
9932 return !operator==( rhs );
9933 }
9934
9935 private:
9936 StructureType sType;
9937
9938 public:
9939 const void* pNext;
9940 Bool32 dedicatedAllocation;
9941 };
9942 static_assert( sizeof( DedicatedAllocationImageCreateInfoNV ) == sizeof( VkDedicatedAllocationImageCreateInfoNV ), "struct and wrapper have different size!" );
9943
9944 struct DedicatedAllocationBufferCreateInfoNV
9945 {
9946 DedicatedAllocationBufferCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
9947 : sType( StructureType::eDedicatedAllocationBufferCreateInfoNV )
9948 , pNext( nullptr )
9949 , dedicatedAllocation( dedicatedAllocation_ )
9950 {
9951 }
9952
9953 DedicatedAllocationBufferCreateInfoNV( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
9954 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009955 memcpy( this, &rhs, sizeof( DedicatedAllocationBufferCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009956 }
9957
9958 DedicatedAllocationBufferCreateInfoNV& operator=( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
9959 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009960 memcpy( this, &rhs, sizeof( DedicatedAllocationBufferCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009961 return *this;
9962 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009963 DedicatedAllocationBufferCreateInfoNV& setPNext( const void* pNext_ )
9964 {
9965 pNext = pNext_;
9966 return *this;
9967 }
9968
9969 DedicatedAllocationBufferCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
9970 {
9971 dedicatedAllocation = dedicatedAllocation_;
9972 return *this;
9973 }
9974
9975 operator const VkDedicatedAllocationBufferCreateInfoNV&() const
9976 {
9977 return *reinterpret_cast<const VkDedicatedAllocationBufferCreateInfoNV*>(this);
9978 }
9979
9980 bool operator==( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
9981 {
9982 return ( sType == rhs.sType )
9983 && ( pNext == rhs.pNext )
9984 && ( dedicatedAllocation == rhs.dedicatedAllocation );
9985 }
9986
9987 bool operator!=( DedicatedAllocationBufferCreateInfoNV 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( DedicatedAllocationBufferCreateInfoNV ) == sizeof( VkDedicatedAllocationBufferCreateInfoNV ), "struct and wrapper have different size!" );
10000
10001 struct DedicatedAllocationMemoryAllocateInfoNV
10002 {
10003 DedicatedAllocationMemoryAllocateInfoNV( Image image_ = Image(), Buffer buffer_ = Buffer() )
10004 : sType( StructureType::eDedicatedAllocationMemoryAllocateInfoNV )
10005 , pNext( nullptr )
10006 , image( image_ )
10007 , buffer( buffer_ )
10008 {
10009 }
10010
10011 DedicatedAllocationMemoryAllocateInfoNV( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
10012 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010013 memcpy( this, &rhs, sizeof( DedicatedAllocationMemoryAllocateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060010014 }
10015
10016 DedicatedAllocationMemoryAllocateInfoNV& operator=( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
10017 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010018 memcpy( this, &rhs, sizeof( DedicatedAllocationMemoryAllocateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060010019 return *this;
10020 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060010021 DedicatedAllocationMemoryAllocateInfoNV& setPNext( const void* pNext_ )
10022 {
10023 pNext = pNext_;
10024 return *this;
10025 }
10026
10027 DedicatedAllocationMemoryAllocateInfoNV& setImage( Image image_ )
10028 {
10029 image = image_;
10030 return *this;
10031 }
10032
10033 DedicatedAllocationMemoryAllocateInfoNV& setBuffer( Buffer buffer_ )
10034 {
10035 buffer = buffer_;
10036 return *this;
10037 }
10038
10039 operator const VkDedicatedAllocationMemoryAllocateInfoNV&() const
10040 {
10041 return *reinterpret_cast<const VkDedicatedAllocationMemoryAllocateInfoNV*>(this);
10042 }
10043
10044 bool operator==( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
10045 {
10046 return ( sType == rhs.sType )
10047 && ( pNext == rhs.pNext )
10048 && ( image == rhs.image )
10049 && ( buffer == rhs.buffer );
10050 }
10051
10052 bool operator!=( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
10053 {
10054 return !operator==( rhs );
10055 }
10056
10057 private:
10058 StructureType sType;
10059
10060 public:
10061 const void* pNext;
10062 Image image;
10063 Buffer buffer;
10064 };
10065 static_assert( sizeof( DedicatedAllocationMemoryAllocateInfoNV ) == sizeof( VkDedicatedAllocationMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
10066
Lenny Komow6501c122016-08-31 15:03:49 -060010067#ifdef VK_USE_PLATFORM_WIN32_KHR
10068 struct ExportMemoryWin32HandleInfoNV
10069 {
10070 ExportMemoryWin32HandleInfoNV( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0 )
10071 : sType( StructureType::eExportMemoryWin32HandleInfoNV )
10072 , pNext( nullptr )
10073 , pAttributes( pAttributes_ )
10074 , dwAccess( dwAccess_ )
10075 {
10076 }
10077
10078 ExportMemoryWin32HandleInfoNV( VkExportMemoryWin32HandleInfoNV const & rhs )
10079 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010080 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -060010081 }
10082
10083 ExportMemoryWin32HandleInfoNV& operator=( VkExportMemoryWin32HandleInfoNV const & rhs )
10084 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010085 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -060010086 return *this;
10087 }
Lenny Komow6501c122016-08-31 15:03:49 -060010088 ExportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
10089 {
10090 pNext = pNext_;
10091 return *this;
10092 }
10093
10094 ExportMemoryWin32HandleInfoNV& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
10095 {
10096 pAttributes = pAttributes_;
10097 return *this;
10098 }
10099
10100 ExportMemoryWin32HandleInfoNV& setDwAccess( DWORD dwAccess_ )
10101 {
10102 dwAccess = dwAccess_;
10103 return *this;
10104 }
10105
10106 operator const VkExportMemoryWin32HandleInfoNV&() const
10107 {
10108 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoNV*>(this);
10109 }
10110
10111 bool operator==( ExportMemoryWin32HandleInfoNV const& rhs ) const
10112 {
10113 return ( sType == rhs.sType )
10114 && ( pNext == rhs.pNext )
10115 && ( pAttributes == rhs.pAttributes )
10116 && ( dwAccess == rhs.dwAccess );
10117 }
10118
10119 bool operator!=( ExportMemoryWin32HandleInfoNV const& rhs ) const
10120 {
10121 return !operator==( rhs );
10122 }
10123
10124 private:
10125 StructureType sType;
10126
10127 public:
10128 const void* pNext;
10129 const SECURITY_ATTRIBUTES* pAttributes;
10130 DWORD dwAccess;
10131 };
10132 static_assert( sizeof( ExportMemoryWin32HandleInfoNV ) == sizeof( VkExportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
10133#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10134
10135#ifdef VK_USE_PLATFORM_WIN32_KHR
10136 struct Win32KeyedMutexAcquireReleaseInfoNV
10137 {
10138 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 )
10139 : sType( StructureType::eWin32KeyedMutexAcquireReleaseInfoNV )
10140 , pNext( nullptr )
10141 , acquireCount( acquireCount_ )
10142 , pAcquireSyncs( pAcquireSyncs_ )
10143 , pAcquireKeys( pAcquireKeys_ )
10144 , pAcquireTimeoutMilliseconds( pAcquireTimeoutMilliseconds_ )
10145 , releaseCount( releaseCount_ )
10146 , pReleaseSyncs( pReleaseSyncs_ )
10147 , pReleaseKeys( pReleaseKeys_ )
10148 {
10149 }
10150
10151 Win32KeyedMutexAcquireReleaseInfoNV( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
10152 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010153 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -060010154 }
10155
10156 Win32KeyedMutexAcquireReleaseInfoNV& operator=( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
10157 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010158 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -060010159 return *this;
10160 }
Lenny Komow6501c122016-08-31 15:03:49 -060010161 Win32KeyedMutexAcquireReleaseInfoNV& setPNext( const void* pNext_ )
10162 {
10163 pNext = pNext_;
10164 return *this;
10165 }
10166
10167 Win32KeyedMutexAcquireReleaseInfoNV& setAcquireCount( uint32_t acquireCount_ )
10168 {
10169 acquireCount = acquireCount_;
10170 return *this;
10171 }
10172
10173 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
10174 {
10175 pAcquireSyncs = pAcquireSyncs_;
10176 return *this;
10177 }
10178
10179 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
10180 {
10181 pAcquireKeys = pAcquireKeys_;
10182 return *this;
10183 }
10184
10185 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireTimeoutMilliseconds( const uint32_t* pAcquireTimeoutMilliseconds_ )
10186 {
10187 pAcquireTimeoutMilliseconds = pAcquireTimeoutMilliseconds_;
10188 return *this;
10189 }
10190
10191 Win32KeyedMutexAcquireReleaseInfoNV& setReleaseCount( uint32_t releaseCount_ )
10192 {
10193 releaseCount = releaseCount_;
10194 return *this;
10195 }
10196
10197 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
10198 {
10199 pReleaseSyncs = pReleaseSyncs_;
10200 return *this;
10201 }
10202
10203 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
10204 {
10205 pReleaseKeys = pReleaseKeys_;
10206 return *this;
10207 }
10208
10209 operator const VkWin32KeyedMutexAcquireReleaseInfoNV&() const
10210 {
10211 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoNV*>(this);
10212 }
10213
10214 bool operator==( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
10215 {
10216 return ( sType == rhs.sType )
10217 && ( pNext == rhs.pNext )
10218 && ( acquireCount == rhs.acquireCount )
10219 && ( pAcquireSyncs == rhs.pAcquireSyncs )
10220 && ( pAcquireKeys == rhs.pAcquireKeys )
10221 && ( pAcquireTimeoutMilliseconds == rhs.pAcquireTimeoutMilliseconds )
10222 && ( releaseCount == rhs.releaseCount )
10223 && ( pReleaseSyncs == rhs.pReleaseSyncs )
10224 && ( pReleaseKeys == rhs.pReleaseKeys );
10225 }
10226
10227 bool operator!=( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
10228 {
10229 return !operator==( rhs );
10230 }
10231
10232 private:
10233 StructureType sType;
10234
10235 public:
10236 const void* pNext;
10237 uint32_t acquireCount;
10238 const DeviceMemory* pAcquireSyncs;
10239 const uint64_t* pAcquireKeys;
10240 const uint32_t* pAcquireTimeoutMilliseconds;
10241 uint32_t releaseCount;
10242 const DeviceMemory* pReleaseSyncs;
10243 const uint64_t* pReleaseKeys;
10244 };
10245 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoNV ), "struct and wrapper have different size!" );
10246#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10247
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010248 struct DeviceGeneratedCommandsFeaturesNVX
10249 {
10250 DeviceGeneratedCommandsFeaturesNVX( Bool32 computeBindingPointSupport_ = 0 )
10251 : sType( StructureType::eDeviceGeneratedCommandsFeaturesNVX )
10252 , pNext( nullptr )
10253 , computeBindingPointSupport( computeBindingPointSupport_ )
10254 {
10255 }
10256
10257 DeviceGeneratedCommandsFeaturesNVX( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
10258 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010259 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsFeaturesNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010260 }
10261
10262 DeviceGeneratedCommandsFeaturesNVX& operator=( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
10263 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010264 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsFeaturesNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010265 return *this;
10266 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010267 DeviceGeneratedCommandsFeaturesNVX& setPNext( const void* pNext_ )
10268 {
10269 pNext = pNext_;
10270 return *this;
10271 }
10272
10273 DeviceGeneratedCommandsFeaturesNVX& setComputeBindingPointSupport( Bool32 computeBindingPointSupport_ )
10274 {
10275 computeBindingPointSupport = computeBindingPointSupport_;
10276 return *this;
10277 }
10278
10279 operator const VkDeviceGeneratedCommandsFeaturesNVX&() const
10280 {
10281 return *reinterpret_cast<const VkDeviceGeneratedCommandsFeaturesNVX*>(this);
10282 }
10283
10284 bool operator==( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
10285 {
10286 return ( sType == rhs.sType )
10287 && ( pNext == rhs.pNext )
10288 && ( computeBindingPointSupport == rhs.computeBindingPointSupport );
10289 }
10290
10291 bool operator!=( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
10292 {
10293 return !operator==( rhs );
10294 }
10295
10296 private:
10297 StructureType sType;
10298
10299 public:
10300 const void* pNext;
10301 Bool32 computeBindingPointSupport;
10302 };
10303 static_assert( sizeof( DeviceGeneratedCommandsFeaturesNVX ) == sizeof( VkDeviceGeneratedCommandsFeaturesNVX ), "struct and wrapper have different size!" );
10304
10305 struct DeviceGeneratedCommandsLimitsNVX
10306 {
10307 DeviceGeneratedCommandsLimitsNVX( uint32_t maxIndirectCommandsLayoutTokenCount_ = 0, uint32_t maxObjectEntryCounts_ = 0, uint32_t minSequenceCountBufferOffsetAlignment_ = 0, uint32_t minSequenceIndexBufferOffsetAlignment_ = 0, uint32_t minCommandsTokenBufferOffsetAlignment_ = 0 )
10308 : sType( StructureType::eDeviceGeneratedCommandsLimitsNVX )
10309 , pNext( nullptr )
10310 , maxIndirectCommandsLayoutTokenCount( maxIndirectCommandsLayoutTokenCount_ )
10311 , maxObjectEntryCounts( maxObjectEntryCounts_ )
10312 , minSequenceCountBufferOffsetAlignment( minSequenceCountBufferOffsetAlignment_ )
10313 , minSequenceIndexBufferOffsetAlignment( minSequenceIndexBufferOffsetAlignment_ )
10314 , minCommandsTokenBufferOffsetAlignment( minCommandsTokenBufferOffsetAlignment_ )
10315 {
10316 }
10317
10318 DeviceGeneratedCommandsLimitsNVX( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
10319 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010320 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsLimitsNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010321 }
10322
10323 DeviceGeneratedCommandsLimitsNVX& operator=( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
10324 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010325 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsLimitsNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010326 return *this;
10327 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010328 DeviceGeneratedCommandsLimitsNVX& setPNext( const void* pNext_ )
10329 {
10330 pNext = pNext_;
10331 return *this;
10332 }
10333
10334 DeviceGeneratedCommandsLimitsNVX& setMaxIndirectCommandsLayoutTokenCount( uint32_t maxIndirectCommandsLayoutTokenCount_ )
10335 {
10336 maxIndirectCommandsLayoutTokenCount = maxIndirectCommandsLayoutTokenCount_;
10337 return *this;
10338 }
10339
10340 DeviceGeneratedCommandsLimitsNVX& setMaxObjectEntryCounts( uint32_t maxObjectEntryCounts_ )
10341 {
10342 maxObjectEntryCounts = maxObjectEntryCounts_;
10343 return *this;
10344 }
10345
10346 DeviceGeneratedCommandsLimitsNVX& setMinSequenceCountBufferOffsetAlignment( uint32_t minSequenceCountBufferOffsetAlignment_ )
10347 {
10348 minSequenceCountBufferOffsetAlignment = minSequenceCountBufferOffsetAlignment_;
10349 return *this;
10350 }
10351
10352 DeviceGeneratedCommandsLimitsNVX& setMinSequenceIndexBufferOffsetAlignment( uint32_t minSequenceIndexBufferOffsetAlignment_ )
10353 {
10354 minSequenceIndexBufferOffsetAlignment = minSequenceIndexBufferOffsetAlignment_;
10355 return *this;
10356 }
10357
10358 DeviceGeneratedCommandsLimitsNVX& setMinCommandsTokenBufferOffsetAlignment( uint32_t minCommandsTokenBufferOffsetAlignment_ )
10359 {
10360 minCommandsTokenBufferOffsetAlignment = minCommandsTokenBufferOffsetAlignment_;
10361 return *this;
10362 }
10363
10364 operator const VkDeviceGeneratedCommandsLimitsNVX&() const
10365 {
10366 return *reinterpret_cast<const VkDeviceGeneratedCommandsLimitsNVX*>(this);
10367 }
10368
10369 bool operator==( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
10370 {
10371 return ( sType == rhs.sType )
10372 && ( pNext == rhs.pNext )
10373 && ( maxIndirectCommandsLayoutTokenCount == rhs.maxIndirectCommandsLayoutTokenCount )
10374 && ( maxObjectEntryCounts == rhs.maxObjectEntryCounts )
10375 && ( minSequenceCountBufferOffsetAlignment == rhs.minSequenceCountBufferOffsetAlignment )
10376 && ( minSequenceIndexBufferOffsetAlignment == rhs.minSequenceIndexBufferOffsetAlignment )
10377 && ( minCommandsTokenBufferOffsetAlignment == rhs.minCommandsTokenBufferOffsetAlignment );
10378 }
10379
10380 bool operator!=( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
10381 {
10382 return !operator==( rhs );
10383 }
10384
10385 private:
10386 StructureType sType;
10387
10388 public:
10389 const void* pNext;
10390 uint32_t maxIndirectCommandsLayoutTokenCount;
10391 uint32_t maxObjectEntryCounts;
10392 uint32_t minSequenceCountBufferOffsetAlignment;
10393 uint32_t minSequenceIndexBufferOffsetAlignment;
10394 uint32_t minCommandsTokenBufferOffsetAlignment;
10395 };
10396 static_assert( sizeof( DeviceGeneratedCommandsLimitsNVX ) == sizeof( VkDeviceGeneratedCommandsLimitsNVX ), "struct and wrapper have different size!" );
10397
10398 struct CmdReserveSpaceForCommandsInfoNVX
10399 {
10400 CmdReserveSpaceForCommandsInfoNVX( ObjectTableNVX objectTable_ = ObjectTableNVX(), IndirectCommandsLayoutNVX indirectCommandsLayout_ = IndirectCommandsLayoutNVX(), uint32_t maxSequencesCount_ = 0 )
10401 : sType( StructureType::eCmdReserveSpaceForCommandsInfoNVX )
10402 , pNext( nullptr )
10403 , objectTable( objectTable_ )
10404 , indirectCommandsLayout( indirectCommandsLayout_ )
10405 , maxSequencesCount( maxSequencesCount_ )
10406 {
10407 }
10408
10409 CmdReserveSpaceForCommandsInfoNVX( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
10410 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010411 memcpy( this, &rhs, sizeof( CmdReserveSpaceForCommandsInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010412 }
10413
10414 CmdReserveSpaceForCommandsInfoNVX& operator=( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
10415 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010416 memcpy( this, &rhs, sizeof( CmdReserveSpaceForCommandsInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010417 return *this;
10418 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010419 CmdReserveSpaceForCommandsInfoNVX& setPNext( const void* pNext_ )
10420 {
10421 pNext = pNext_;
10422 return *this;
10423 }
10424
10425 CmdReserveSpaceForCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
10426 {
10427 objectTable = objectTable_;
10428 return *this;
10429 }
10430
10431 CmdReserveSpaceForCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
10432 {
10433 indirectCommandsLayout = indirectCommandsLayout_;
10434 return *this;
10435 }
10436
10437 CmdReserveSpaceForCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
10438 {
10439 maxSequencesCount = maxSequencesCount_;
10440 return *this;
10441 }
10442
10443 operator const VkCmdReserveSpaceForCommandsInfoNVX&() const
10444 {
10445 return *reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>(this);
10446 }
10447
10448 bool operator==( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
10449 {
10450 return ( sType == rhs.sType )
10451 && ( pNext == rhs.pNext )
10452 && ( objectTable == rhs.objectTable )
10453 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
10454 && ( maxSequencesCount == rhs.maxSequencesCount );
10455 }
10456
10457 bool operator!=( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
10458 {
10459 return !operator==( rhs );
10460 }
10461
10462 private:
10463 StructureType sType;
10464
10465 public:
10466 const void* pNext;
10467 ObjectTableNVX objectTable;
10468 IndirectCommandsLayoutNVX indirectCommandsLayout;
10469 uint32_t maxSequencesCount;
10470 };
10471 static_assert( sizeof( CmdReserveSpaceForCommandsInfoNVX ) == sizeof( VkCmdReserveSpaceForCommandsInfoNVX ), "struct and wrapper have different size!" );
10472
Mark Young39389872017-01-19 21:10:49 -070010473 struct PhysicalDeviceFeatures2KHR
10474 {
10475 PhysicalDeviceFeatures2KHR( PhysicalDeviceFeatures features_ = PhysicalDeviceFeatures() )
10476 : sType( StructureType::ePhysicalDeviceFeatures2KHR )
10477 , pNext( nullptr )
10478 , features( features_ )
10479 {
10480 }
10481
10482 PhysicalDeviceFeatures2KHR( VkPhysicalDeviceFeatures2KHR const & rhs )
10483 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010484 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070010485 }
10486
10487 PhysicalDeviceFeatures2KHR& operator=( VkPhysicalDeviceFeatures2KHR const & rhs )
10488 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010489 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070010490 return *this;
10491 }
Mark Young39389872017-01-19 21:10:49 -070010492 PhysicalDeviceFeatures2KHR& setPNext( void* pNext_ )
10493 {
10494 pNext = pNext_;
10495 return *this;
10496 }
10497
10498 PhysicalDeviceFeatures2KHR& setFeatures( PhysicalDeviceFeatures features_ )
10499 {
10500 features = features_;
10501 return *this;
10502 }
10503
10504 operator const VkPhysicalDeviceFeatures2KHR&() const
10505 {
10506 return *reinterpret_cast<const VkPhysicalDeviceFeatures2KHR*>(this);
10507 }
10508
10509 bool operator==( PhysicalDeviceFeatures2KHR const& rhs ) const
10510 {
10511 return ( sType == rhs.sType )
10512 && ( pNext == rhs.pNext )
10513 && ( features == rhs.features );
10514 }
10515
10516 bool operator!=( PhysicalDeviceFeatures2KHR const& rhs ) const
10517 {
10518 return !operator==( rhs );
10519 }
10520
10521 private:
10522 StructureType sType;
10523
10524 public:
10525 void* pNext;
10526 PhysicalDeviceFeatures features;
10527 };
10528 static_assert( sizeof( PhysicalDeviceFeatures2KHR ) == sizeof( VkPhysicalDeviceFeatures2KHR ), "struct and wrapper have different size!" );
10529
Mark Young0f183a82017-02-28 09:58:04 -070010530 struct PhysicalDevicePushDescriptorPropertiesKHR
10531 {
10532 PhysicalDevicePushDescriptorPropertiesKHR( uint32_t maxPushDescriptors_ = 0 )
10533 : sType( StructureType::ePhysicalDevicePushDescriptorPropertiesKHR )
10534 , pNext( nullptr )
10535 , maxPushDescriptors( maxPushDescriptors_ )
10536 {
10537 }
10538
10539 PhysicalDevicePushDescriptorPropertiesKHR( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
10540 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010541 memcpy( this, &rhs, sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010542 }
10543
10544 PhysicalDevicePushDescriptorPropertiesKHR& operator=( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
10545 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010546 memcpy( this, &rhs, sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010547 return *this;
10548 }
Mark Young0f183a82017-02-28 09:58:04 -070010549 PhysicalDevicePushDescriptorPropertiesKHR& setPNext( void* pNext_ )
10550 {
10551 pNext = pNext_;
10552 return *this;
10553 }
10554
10555 PhysicalDevicePushDescriptorPropertiesKHR& setMaxPushDescriptors( uint32_t maxPushDescriptors_ )
10556 {
10557 maxPushDescriptors = maxPushDescriptors_;
10558 return *this;
10559 }
10560
10561 operator const VkPhysicalDevicePushDescriptorPropertiesKHR&() const
10562 {
10563 return *reinterpret_cast<const VkPhysicalDevicePushDescriptorPropertiesKHR*>(this);
10564 }
10565
10566 bool operator==( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
10567 {
10568 return ( sType == rhs.sType )
10569 && ( pNext == rhs.pNext )
10570 && ( maxPushDescriptors == rhs.maxPushDescriptors );
10571 }
10572
10573 bool operator!=( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
10574 {
10575 return !operator==( rhs );
10576 }
10577
10578 private:
10579 StructureType sType;
10580
10581 public:
10582 void* pNext;
10583 uint32_t maxPushDescriptors;
10584 };
10585 static_assert( sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) == sizeof( VkPhysicalDevicePushDescriptorPropertiesKHR ), "struct and wrapper have different size!" );
10586
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010587 struct PresentRegionsKHR
10588 {
10589 PresentRegionsKHR( uint32_t swapchainCount_ = 0, const PresentRegionKHR* pRegions_ = nullptr )
10590 : sType( StructureType::ePresentRegionsKHR )
10591 , pNext( nullptr )
10592 , swapchainCount( swapchainCount_ )
10593 , pRegions( pRegions_ )
10594 {
10595 }
10596
10597 PresentRegionsKHR( VkPresentRegionsKHR const & rhs )
10598 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010599 memcpy( this, &rhs, sizeof( PresentRegionsKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010600 }
10601
10602 PresentRegionsKHR& operator=( VkPresentRegionsKHR const & rhs )
10603 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010604 memcpy( this, &rhs, sizeof( PresentRegionsKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010605 return *this;
10606 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010607 PresentRegionsKHR& setPNext( const void* pNext_ )
10608 {
10609 pNext = pNext_;
10610 return *this;
10611 }
10612
10613 PresentRegionsKHR& setSwapchainCount( uint32_t swapchainCount_ )
10614 {
10615 swapchainCount = swapchainCount_;
10616 return *this;
10617 }
10618
10619 PresentRegionsKHR& setPRegions( const PresentRegionKHR* pRegions_ )
10620 {
10621 pRegions = pRegions_;
10622 return *this;
10623 }
10624
10625 operator const VkPresentRegionsKHR&() const
10626 {
10627 return *reinterpret_cast<const VkPresentRegionsKHR*>(this);
10628 }
10629
10630 bool operator==( PresentRegionsKHR const& rhs ) const
10631 {
10632 return ( sType == rhs.sType )
10633 && ( pNext == rhs.pNext )
10634 && ( swapchainCount == rhs.swapchainCount )
10635 && ( pRegions == rhs.pRegions );
10636 }
10637
10638 bool operator!=( PresentRegionsKHR const& rhs ) const
10639 {
10640 return !operator==( rhs );
10641 }
10642
10643 private:
10644 StructureType sType;
10645
10646 public:
10647 const void* pNext;
10648 uint32_t swapchainCount;
10649 const PresentRegionKHR* pRegions;
10650 };
10651 static_assert( sizeof( PresentRegionsKHR ) == sizeof( VkPresentRegionsKHR ), "struct and wrapper have different size!" );
10652
Mark Youngabc2d6e2017-07-07 07:59:56 -060010653 struct PhysicalDeviceVariablePointerFeaturesKHR
Mark Young0f183a82017-02-28 09:58:04 -070010654 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010655 PhysicalDeviceVariablePointerFeaturesKHR( Bool32 variablePointersStorageBuffer_ = 0, Bool32 variablePointers_ = 0 )
10656 : sType( StructureType::ePhysicalDeviceVariablePointerFeaturesKHR )
10657 , pNext( nullptr )
10658 , variablePointersStorageBuffer( variablePointersStorageBuffer_ )
10659 , variablePointers( variablePointers_ )
Mark Young0f183a82017-02-28 09:58:04 -070010660 {
Mark Young0f183a82017-02-28 09:58:04 -070010661 }
10662
Mark Youngabc2d6e2017-07-07 07:59:56 -060010663 PhysicalDeviceVariablePointerFeaturesKHR( VkPhysicalDeviceVariablePointerFeaturesKHR const & rhs )
10664 {
10665 memcpy( this, &rhs, sizeof( PhysicalDeviceVariablePointerFeaturesKHR ) );
10666 }
10667
10668 PhysicalDeviceVariablePointerFeaturesKHR& operator=( VkPhysicalDeviceVariablePointerFeaturesKHR const & rhs )
10669 {
10670 memcpy( this, &rhs, sizeof( PhysicalDeviceVariablePointerFeaturesKHR ) );
10671 return *this;
10672 }
10673 PhysicalDeviceVariablePointerFeaturesKHR& setPNext( void* pNext_ )
10674 {
10675 pNext = pNext_;
10676 return *this;
10677 }
10678
10679 PhysicalDeviceVariablePointerFeaturesKHR& setVariablePointersStorageBuffer( Bool32 variablePointersStorageBuffer_ )
10680 {
10681 variablePointersStorageBuffer = variablePointersStorageBuffer_;
10682 return *this;
10683 }
10684
10685 PhysicalDeviceVariablePointerFeaturesKHR& setVariablePointers( Bool32 variablePointers_ )
10686 {
10687 variablePointers = variablePointers_;
10688 return *this;
10689 }
10690
10691 operator const VkPhysicalDeviceVariablePointerFeaturesKHR&() const
10692 {
10693 return *reinterpret_cast<const VkPhysicalDeviceVariablePointerFeaturesKHR*>(this);
10694 }
10695
10696 bool operator==( PhysicalDeviceVariablePointerFeaturesKHR const& rhs ) const
10697 {
10698 return ( sType == rhs.sType )
10699 && ( pNext == rhs.pNext )
10700 && ( variablePointersStorageBuffer == rhs.variablePointersStorageBuffer )
10701 && ( variablePointers == rhs.variablePointers );
10702 }
10703
10704 bool operator!=( PhysicalDeviceVariablePointerFeaturesKHR const& rhs ) const
10705 {
10706 return !operator==( rhs );
10707 }
10708
10709 private:
10710 StructureType sType;
10711
10712 public:
10713 void* pNext;
10714 Bool32 variablePointersStorageBuffer;
10715 Bool32 variablePointers;
10716 };
10717 static_assert( sizeof( PhysicalDeviceVariablePointerFeaturesKHR ) == sizeof( VkPhysicalDeviceVariablePointerFeaturesKHR ), "struct and wrapper have different size!" );
10718
10719 struct PhysicalDeviceIDPropertiesKHR
10720 {
10721 operator const VkPhysicalDeviceIDPropertiesKHR&() const
10722 {
10723 return *reinterpret_cast<const VkPhysicalDeviceIDPropertiesKHR*>(this);
10724 }
10725
10726 bool operator==( PhysicalDeviceIDPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010727 {
10728 return ( sType == rhs.sType )
10729 && ( pNext == rhs.pNext )
10730 && ( memcmp( deviceUUID, rhs.deviceUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
10731 && ( memcmp( driverUUID, rhs.driverUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
Mark Youngabc2d6e2017-07-07 07:59:56 -060010732 && ( memcmp( deviceLUID, rhs.deviceLUID, VK_LUID_SIZE_KHR * sizeof( uint8_t ) ) == 0 )
10733 && ( deviceNodeMask == rhs.deviceNodeMask )
Mark Young0f183a82017-02-28 09:58:04 -070010734 && ( deviceLUIDValid == rhs.deviceLUIDValid );
10735 }
10736
Mark Youngabc2d6e2017-07-07 07:59:56 -060010737 bool operator!=( PhysicalDeviceIDPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010738 {
10739 return !operator==( rhs );
10740 }
10741
10742 private:
10743 StructureType sType;
10744
10745 public:
10746 void* pNext;
10747 uint8_t deviceUUID[VK_UUID_SIZE];
10748 uint8_t driverUUID[VK_UUID_SIZE];
Mark Youngabc2d6e2017-07-07 07:59:56 -060010749 uint8_t deviceLUID[VK_LUID_SIZE_KHR];
10750 uint32_t deviceNodeMask;
Mark Young0f183a82017-02-28 09:58:04 -070010751 Bool32 deviceLUIDValid;
10752 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060010753 static_assert( sizeof( PhysicalDeviceIDPropertiesKHR ) == sizeof( VkPhysicalDeviceIDPropertiesKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070010754
Mark Youngabc2d6e2017-07-07 07:59:56 -060010755#ifdef VK_USE_PLATFORM_WIN32_KHR
10756 struct ExportMemoryWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070010757 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010758 ExportMemoryWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
10759 : sType( StructureType::eExportMemoryWin32HandleInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070010760 , pNext( nullptr )
10761 , pAttributes( pAttributes_ )
10762 , dwAccess( dwAccess_ )
10763 , name( name_ )
10764 {
10765 }
10766
Mark Youngabc2d6e2017-07-07 07:59:56 -060010767 ExportMemoryWin32HandleInfoKHR( VkExportMemoryWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010768 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010769 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010770 }
10771
Mark Youngabc2d6e2017-07-07 07:59:56 -060010772 ExportMemoryWin32HandleInfoKHR& operator=( VkExportMemoryWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010773 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010774 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010775 return *this;
10776 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060010777 ExportMemoryWin32HandleInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070010778 {
10779 pNext = pNext_;
10780 return *this;
10781 }
10782
Mark Youngabc2d6e2017-07-07 07:59:56 -060010783 ExportMemoryWin32HandleInfoKHR& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
Mark Young0f183a82017-02-28 09:58:04 -070010784 {
10785 pAttributes = pAttributes_;
10786 return *this;
10787 }
10788
Mark Youngabc2d6e2017-07-07 07:59:56 -060010789 ExportMemoryWin32HandleInfoKHR& setDwAccess( DWORD dwAccess_ )
Mark Young0f183a82017-02-28 09:58:04 -070010790 {
10791 dwAccess = dwAccess_;
10792 return *this;
10793 }
10794
Mark Youngabc2d6e2017-07-07 07:59:56 -060010795 ExportMemoryWin32HandleInfoKHR& setName( LPCWSTR name_ )
Mark Young0f183a82017-02-28 09:58:04 -070010796 {
10797 name = name_;
10798 return *this;
10799 }
10800
Mark Youngabc2d6e2017-07-07 07:59:56 -060010801 operator const VkExportMemoryWin32HandleInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070010802 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010803 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070010804 }
10805
Mark Youngabc2d6e2017-07-07 07:59:56 -060010806 bool operator==( ExportMemoryWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010807 {
10808 return ( sType == rhs.sType )
10809 && ( pNext == rhs.pNext )
10810 && ( pAttributes == rhs.pAttributes )
10811 && ( dwAccess == rhs.dwAccess )
10812 && ( name == rhs.name );
10813 }
10814
Mark Youngabc2d6e2017-07-07 07:59:56 -060010815 bool operator!=( ExportMemoryWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010816 {
10817 return !operator==( rhs );
10818 }
10819
10820 private:
10821 StructureType sType;
10822
10823 public:
10824 const void* pNext;
10825 const SECURITY_ATTRIBUTES* pAttributes;
10826 DWORD dwAccess;
10827 LPCWSTR name;
10828 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060010829 static_assert( sizeof( ExportMemoryWin32HandleInfoKHR ) == sizeof( VkExportMemoryWin32HandleInfoKHR ), "struct and wrapper have different size!" );
10830#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070010831
10832#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Youngabc2d6e2017-07-07 07:59:56 -060010833 struct MemoryWin32HandlePropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070010834 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010835 operator const VkMemoryWin32HandlePropertiesKHR&() const
10836 {
10837 return *reinterpret_cast<const VkMemoryWin32HandlePropertiesKHR*>(this);
10838 }
10839
10840 bool operator==( MemoryWin32HandlePropertiesKHR const& rhs ) const
10841 {
10842 return ( sType == rhs.sType )
10843 && ( pNext == rhs.pNext )
10844 && ( memoryTypeBits == rhs.memoryTypeBits );
10845 }
10846
10847 bool operator!=( MemoryWin32HandlePropertiesKHR const& rhs ) const
10848 {
10849 return !operator==( rhs );
10850 }
10851
10852 private:
10853 StructureType sType;
10854
10855 public:
10856 void* pNext;
10857 uint32_t memoryTypeBits;
10858 };
10859 static_assert( sizeof( MemoryWin32HandlePropertiesKHR ) == sizeof( VkMemoryWin32HandlePropertiesKHR ), "struct and wrapper have different size!" );
10860#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10861
10862 struct MemoryFdPropertiesKHR
10863 {
10864 operator const VkMemoryFdPropertiesKHR&() const
10865 {
10866 return *reinterpret_cast<const VkMemoryFdPropertiesKHR*>(this);
10867 }
10868
10869 bool operator==( MemoryFdPropertiesKHR const& rhs ) const
10870 {
10871 return ( sType == rhs.sType )
10872 && ( pNext == rhs.pNext )
10873 && ( memoryTypeBits == rhs.memoryTypeBits );
10874 }
10875
10876 bool operator!=( MemoryFdPropertiesKHR const& rhs ) const
10877 {
10878 return !operator==( rhs );
10879 }
10880
10881 private:
10882 StructureType sType;
10883
10884 public:
10885 void* pNext;
10886 uint32_t memoryTypeBits;
10887 };
10888 static_assert( sizeof( MemoryFdPropertiesKHR ) == sizeof( VkMemoryFdPropertiesKHR ), "struct and wrapper have different size!" );
10889
10890#ifdef VK_USE_PLATFORM_WIN32_KHR
10891 struct Win32KeyedMutexAcquireReleaseInfoKHR
10892 {
10893 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 )
10894 : sType( StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070010895 , pNext( nullptr )
10896 , acquireCount( acquireCount_ )
10897 , pAcquireSyncs( pAcquireSyncs_ )
10898 , pAcquireKeys( pAcquireKeys_ )
10899 , pAcquireTimeouts( pAcquireTimeouts_ )
10900 , releaseCount( releaseCount_ )
10901 , pReleaseSyncs( pReleaseSyncs_ )
10902 , pReleaseKeys( pReleaseKeys_ )
10903 {
10904 }
10905
Mark Youngabc2d6e2017-07-07 07:59:56 -060010906 Win32KeyedMutexAcquireReleaseInfoKHR( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010907 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010908 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010909 }
10910
Mark Youngabc2d6e2017-07-07 07:59:56 -060010911 Win32KeyedMutexAcquireReleaseInfoKHR& operator=( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010912 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010913 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010914 return *this;
10915 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060010916 Win32KeyedMutexAcquireReleaseInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070010917 {
10918 pNext = pNext_;
10919 return *this;
10920 }
10921
Mark Youngabc2d6e2017-07-07 07:59:56 -060010922 Win32KeyedMutexAcquireReleaseInfoKHR& setAcquireCount( uint32_t acquireCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070010923 {
10924 acquireCount = acquireCount_;
10925 return *this;
10926 }
10927
Mark Youngabc2d6e2017-07-07 07:59:56 -060010928 Win32KeyedMutexAcquireReleaseInfoKHR& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
Mark Young0f183a82017-02-28 09:58:04 -070010929 {
10930 pAcquireSyncs = pAcquireSyncs_;
10931 return *this;
10932 }
10933
Mark Youngabc2d6e2017-07-07 07:59:56 -060010934 Win32KeyedMutexAcquireReleaseInfoKHR& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
Mark Young0f183a82017-02-28 09:58:04 -070010935 {
10936 pAcquireKeys = pAcquireKeys_;
10937 return *this;
10938 }
10939
Mark Youngabc2d6e2017-07-07 07:59:56 -060010940 Win32KeyedMutexAcquireReleaseInfoKHR& setPAcquireTimeouts( const uint32_t* pAcquireTimeouts_ )
Mark Young0f183a82017-02-28 09:58:04 -070010941 {
10942 pAcquireTimeouts = pAcquireTimeouts_;
10943 return *this;
10944 }
10945
Mark Youngabc2d6e2017-07-07 07:59:56 -060010946 Win32KeyedMutexAcquireReleaseInfoKHR& setReleaseCount( uint32_t releaseCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070010947 {
10948 releaseCount = releaseCount_;
10949 return *this;
10950 }
10951
Mark Youngabc2d6e2017-07-07 07:59:56 -060010952 Win32KeyedMutexAcquireReleaseInfoKHR& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
Mark Young0f183a82017-02-28 09:58:04 -070010953 {
10954 pReleaseSyncs = pReleaseSyncs_;
10955 return *this;
10956 }
10957
Mark Youngabc2d6e2017-07-07 07:59:56 -060010958 Win32KeyedMutexAcquireReleaseInfoKHR& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
Mark Young0f183a82017-02-28 09:58:04 -070010959 {
10960 pReleaseKeys = pReleaseKeys_;
10961 return *this;
10962 }
10963
Mark Youngabc2d6e2017-07-07 07:59:56 -060010964 operator const VkWin32KeyedMutexAcquireReleaseInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070010965 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010966 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070010967 }
10968
Mark Youngabc2d6e2017-07-07 07:59:56 -060010969 bool operator==( Win32KeyedMutexAcquireReleaseInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010970 {
10971 return ( sType == rhs.sType )
10972 && ( pNext == rhs.pNext )
10973 && ( acquireCount == rhs.acquireCount )
10974 && ( pAcquireSyncs == rhs.pAcquireSyncs )
10975 && ( pAcquireKeys == rhs.pAcquireKeys )
10976 && ( pAcquireTimeouts == rhs.pAcquireTimeouts )
10977 && ( releaseCount == rhs.releaseCount )
10978 && ( pReleaseSyncs == rhs.pReleaseSyncs )
10979 && ( pReleaseKeys == rhs.pReleaseKeys );
10980 }
10981
Mark Youngabc2d6e2017-07-07 07:59:56 -060010982 bool operator!=( Win32KeyedMutexAcquireReleaseInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010983 {
10984 return !operator==( rhs );
10985 }
10986
10987 private:
10988 StructureType sType;
10989
10990 public:
10991 const void* pNext;
10992 uint32_t acquireCount;
10993 const DeviceMemory* pAcquireSyncs;
10994 const uint64_t* pAcquireKeys;
10995 const uint32_t* pAcquireTimeouts;
10996 uint32_t releaseCount;
10997 const DeviceMemory* pReleaseSyncs;
10998 const uint64_t* pReleaseKeys;
10999 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060011000 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070011001#endif /*VK_USE_PLATFORM_WIN32_KHR*/
11002
Mark Youngabc2d6e2017-07-07 07:59:56 -060011003#ifdef VK_USE_PLATFORM_WIN32_KHR
11004 struct ExportSemaphoreWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070011005 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011006 ExportSemaphoreWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
11007 : sType( StructureType::eExportSemaphoreWin32HandleInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070011008 , pNext( nullptr )
11009 , pAttributes( pAttributes_ )
11010 , dwAccess( dwAccess_ )
11011 , name( name_ )
11012 {
11013 }
11014
Mark Youngabc2d6e2017-07-07 07:59:56 -060011015 ExportSemaphoreWin32HandleInfoKHR( VkExportSemaphoreWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011016 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011017 memcpy( this, &rhs, sizeof( ExportSemaphoreWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070011018 }
11019
Mark Youngabc2d6e2017-07-07 07:59:56 -060011020 ExportSemaphoreWin32HandleInfoKHR& operator=( VkExportSemaphoreWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011021 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011022 memcpy( this, &rhs, sizeof( ExportSemaphoreWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070011023 return *this;
11024 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060011025 ExportSemaphoreWin32HandleInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070011026 {
11027 pNext = pNext_;
11028 return *this;
11029 }
11030
Mark Youngabc2d6e2017-07-07 07:59:56 -060011031 ExportSemaphoreWin32HandleInfoKHR& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
Mark Young0f183a82017-02-28 09:58:04 -070011032 {
11033 pAttributes = pAttributes_;
11034 return *this;
11035 }
11036
Mark Youngabc2d6e2017-07-07 07:59:56 -060011037 ExportSemaphoreWin32HandleInfoKHR& setDwAccess( DWORD dwAccess_ )
Mark Young0f183a82017-02-28 09:58:04 -070011038 {
11039 dwAccess = dwAccess_;
11040 return *this;
11041 }
11042
Mark Youngabc2d6e2017-07-07 07:59:56 -060011043 ExportSemaphoreWin32HandleInfoKHR& setName( LPCWSTR name_ )
Mark Young0f183a82017-02-28 09:58:04 -070011044 {
11045 name = name_;
11046 return *this;
11047 }
11048
Mark Youngabc2d6e2017-07-07 07:59:56 -060011049 operator const VkExportSemaphoreWin32HandleInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070011050 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011051 return *reinterpret_cast<const VkExportSemaphoreWin32HandleInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070011052 }
11053
Mark Youngabc2d6e2017-07-07 07:59:56 -060011054 bool operator==( ExportSemaphoreWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011055 {
11056 return ( sType == rhs.sType )
11057 && ( pNext == rhs.pNext )
11058 && ( pAttributes == rhs.pAttributes )
11059 && ( dwAccess == rhs.dwAccess )
11060 && ( name == rhs.name );
11061 }
11062
Mark Youngabc2d6e2017-07-07 07:59:56 -060011063 bool operator!=( ExportSemaphoreWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011064 {
11065 return !operator==( rhs );
11066 }
11067
11068 private:
11069 StructureType sType;
11070
11071 public:
11072 const void* pNext;
11073 const SECURITY_ATTRIBUTES* pAttributes;
11074 DWORD dwAccess;
11075 LPCWSTR name;
11076 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060011077 static_assert( sizeof( ExportSemaphoreWin32HandleInfoKHR ) == sizeof( VkExportSemaphoreWin32HandleInfoKHR ), "struct and wrapper have different size!" );
11078#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070011079
Mark Youngabc2d6e2017-07-07 07:59:56 -060011080#ifdef VK_USE_PLATFORM_WIN32_KHR
11081 struct D3D12FenceSubmitInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070011082 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011083 D3D12FenceSubmitInfoKHR( uint32_t waitSemaphoreValuesCount_ = 0, const uint64_t* pWaitSemaphoreValues_ = nullptr, uint32_t signalSemaphoreValuesCount_ = 0, const uint64_t* pSignalSemaphoreValues_ = nullptr )
11084 : sType( StructureType::eD3D12FenceSubmitInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070011085 , pNext( nullptr )
11086 , waitSemaphoreValuesCount( waitSemaphoreValuesCount_ )
11087 , pWaitSemaphoreValues( pWaitSemaphoreValues_ )
11088 , signalSemaphoreValuesCount( signalSemaphoreValuesCount_ )
11089 , pSignalSemaphoreValues( pSignalSemaphoreValues_ )
11090 {
11091 }
11092
Mark Youngabc2d6e2017-07-07 07:59:56 -060011093 D3D12FenceSubmitInfoKHR( VkD3D12FenceSubmitInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011094 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011095 memcpy( this, &rhs, sizeof( D3D12FenceSubmitInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070011096 }
11097
Mark Youngabc2d6e2017-07-07 07:59:56 -060011098 D3D12FenceSubmitInfoKHR& operator=( VkD3D12FenceSubmitInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011099 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011100 memcpy( this, &rhs, sizeof( D3D12FenceSubmitInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070011101 return *this;
11102 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060011103 D3D12FenceSubmitInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070011104 {
11105 pNext = pNext_;
11106 return *this;
11107 }
11108
Mark Youngabc2d6e2017-07-07 07:59:56 -060011109 D3D12FenceSubmitInfoKHR& setWaitSemaphoreValuesCount( uint32_t waitSemaphoreValuesCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070011110 {
11111 waitSemaphoreValuesCount = waitSemaphoreValuesCount_;
11112 return *this;
11113 }
11114
Mark Youngabc2d6e2017-07-07 07:59:56 -060011115 D3D12FenceSubmitInfoKHR& setPWaitSemaphoreValues( const uint64_t* pWaitSemaphoreValues_ )
Mark Young0f183a82017-02-28 09:58:04 -070011116 {
11117 pWaitSemaphoreValues = pWaitSemaphoreValues_;
11118 return *this;
11119 }
11120
Mark Youngabc2d6e2017-07-07 07:59:56 -060011121 D3D12FenceSubmitInfoKHR& setSignalSemaphoreValuesCount( uint32_t signalSemaphoreValuesCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070011122 {
11123 signalSemaphoreValuesCount = signalSemaphoreValuesCount_;
11124 return *this;
11125 }
11126
Mark Youngabc2d6e2017-07-07 07:59:56 -060011127 D3D12FenceSubmitInfoKHR& setPSignalSemaphoreValues( const uint64_t* pSignalSemaphoreValues_ )
Mark Young0f183a82017-02-28 09:58:04 -070011128 {
11129 pSignalSemaphoreValues = pSignalSemaphoreValues_;
11130 return *this;
11131 }
11132
Mark Youngabc2d6e2017-07-07 07:59:56 -060011133 operator const VkD3D12FenceSubmitInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070011134 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011135 return *reinterpret_cast<const VkD3D12FenceSubmitInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070011136 }
11137
Mark Youngabc2d6e2017-07-07 07:59:56 -060011138 bool operator==( D3D12FenceSubmitInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011139 {
11140 return ( sType == rhs.sType )
11141 && ( pNext == rhs.pNext )
11142 && ( waitSemaphoreValuesCount == rhs.waitSemaphoreValuesCount )
11143 && ( pWaitSemaphoreValues == rhs.pWaitSemaphoreValues )
11144 && ( signalSemaphoreValuesCount == rhs.signalSemaphoreValuesCount )
11145 && ( pSignalSemaphoreValues == rhs.pSignalSemaphoreValues );
11146 }
11147
Mark Youngabc2d6e2017-07-07 07:59:56 -060011148 bool operator!=( D3D12FenceSubmitInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011149 {
11150 return !operator==( rhs );
11151 }
11152
11153 private:
11154 StructureType sType;
11155
11156 public:
11157 const void* pNext;
11158 uint32_t waitSemaphoreValuesCount;
11159 const uint64_t* pWaitSemaphoreValues;
11160 uint32_t signalSemaphoreValuesCount;
11161 const uint64_t* pSignalSemaphoreValues;
11162 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060011163 static_assert( sizeof( D3D12FenceSubmitInfoKHR ) == sizeof( VkD3D12FenceSubmitInfoKHR ), "struct and wrapper have different size!" );
11164#endif /*VK_USE_PLATFORM_WIN32_KHR*/
11165
11166#ifdef VK_USE_PLATFORM_WIN32_KHR
11167 struct ExportFenceWin32HandleInfoKHR
11168 {
11169 ExportFenceWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
11170 : sType( StructureType::eExportFenceWin32HandleInfoKHR )
11171 , pNext( nullptr )
11172 , pAttributes( pAttributes_ )
11173 , dwAccess( dwAccess_ )
11174 , name( name_ )
11175 {
11176 }
11177
11178 ExportFenceWin32HandleInfoKHR( VkExportFenceWin32HandleInfoKHR const & rhs )
11179 {
11180 memcpy( this, &rhs, sizeof( ExportFenceWin32HandleInfoKHR ) );
11181 }
11182
11183 ExportFenceWin32HandleInfoKHR& operator=( VkExportFenceWin32HandleInfoKHR const & rhs )
11184 {
11185 memcpy( this, &rhs, sizeof( ExportFenceWin32HandleInfoKHR ) );
11186 return *this;
11187 }
11188 ExportFenceWin32HandleInfoKHR& setPNext( const void* pNext_ )
11189 {
11190 pNext = pNext_;
11191 return *this;
11192 }
11193
11194 ExportFenceWin32HandleInfoKHR& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
11195 {
11196 pAttributes = pAttributes_;
11197 return *this;
11198 }
11199
11200 ExportFenceWin32HandleInfoKHR& setDwAccess( DWORD dwAccess_ )
11201 {
11202 dwAccess = dwAccess_;
11203 return *this;
11204 }
11205
11206 ExportFenceWin32HandleInfoKHR& setName( LPCWSTR name_ )
11207 {
11208 name = name_;
11209 return *this;
11210 }
11211
11212 operator const VkExportFenceWin32HandleInfoKHR&() const
11213 {
11214 return *reinterpret_cast<const VkExportFenceWin32HandleInfoKHR*>(this);
11215 }
11216
11217 bool operator==( ExportFenceWin32HandleInfoKHR const& rhs ) const
11218 {
11219 return ( sType == rhs.sType )
11220 && ( pNext == rhs.pNext )
11221 && ( pAttributes == rhs.pAttributes )
11222 && ( dwAccess == rhs.dwAccess )
11223 && ( name == rhs.name );
11224 }
11225
11226 bool operator!=( ExportFenceWin32HandleInfoKHR const& rhs ) const
11227 {
11228 return !operator==( rhs );
11229 }
11230
11231 private:
11232 StructureType sType;
11233
11234 public:
11235 const void* pNext;
11236 const SECURITY_ATTRIBUTES* pAttributes;
11237 DWORD dwAccess;
11238 LPCWSTR name;
11239 };
11240 static_assert( sizeof( ExportFenceWin32HandleInfoKHR ) == sizeof( VkExportFenceWin32HandleInfoKHR ), "struct and wrapper have different size!" );
11241#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070011242
11243 struct PhysicalDeviceMultiviewFeaturesKHX
11244 {
11245 PhysicalDeviceMultiviewFeaturesKHX( Bool32 multiview_ = 0, Bool32 multiviewGeometryShader_ = 0, Bool32 multiviewTessellationShader_ = 0 )
11246 : sType( StructureType::ePhysicalDeviceMultiviewFeaturesKHX )
11247 , pNext( nullptr )
11248 , multiview( multiview_ )
11249 , multiviewGeometryShader( multiviewGeometryShader_ )
11250 , multiviewTessellationShader( multiviewTessellationShader_ )
11251 {
11252 }
11253
11254 PhysicalDeviceMultiviewFeaturesKHX( VkPhysicalDeviceMultiviewFeaturesKHX const & rhs )
11255 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011256 memcpy( this, &rhs, sizeof( PhysicalDeviceMultiviewFeaturesKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011257 }
11258
11259 PhysicalDeviceMultiviewFeaturesKHX& operator=( VkPhysicalDeviceMultiviewFeaturesKHX const & rhs )
11260 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011261 memcpy( this, &rhs, sizeof( PhysicalDeviceMultiviewFeaturesKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011262 return *this;
11263 }
Mark Young0f183a82017-02-28 09:58:04 -070011264 PhysicalDeviceMultiviewFeaturesKHX& setPNext( void* pNext_ )
11265 {
11266 pNext = pNext_;
11267 return *this;
11268 }
11269
11270 PhysicalDeviceMultiviewFeaturesKHX& setMultiview( Bool32 multiview_ )
11271 {
11272 multiview = multiview_;
11273 return *this;
11274 }
11275
11276 PhysicalDeviceMultiviewFeaturesKHX& setMultiviewGeometryShader( Bool32 multiviewGeometryShader_ )
11277 {
11278 multiviewGeometryShader = multiviewGeometryShader_;
11279 return *this;
11280 }
11281
11282 PhysicalDeviceMultiviewFeaturesKHX& setMultiviewTessellationShader( Bool32 multiviewTessellationShader_ )
11283 {
11284 multiviewTessellationShader = multiviewTessellationShader_;
11285 return *this;
11286 }
11287
11288 operator const VkPhysicalDeviceMultiviewFeaturesKHX&() const
11289 {
11290 return *reinterpret_cast<const VkPhysicalDeviceMultiviewFeaturesKHX*>(this);
11291 }
11292
11293 bool operator==( PhysicalDeviceMultiviewFeaturesKHX const& rhs ) const
11294 {
11295 return ( sType == rhs.sType )
11296 && ( pNext == rhs.pNext )
11297 && ( multiview == rhs.multiview )
11298 && ( multiviewGeometryShader == rhs.multiviewGeometryShader )
11299 && ( multiviewTessellationShader == rhs.multiviewTessellationShader );
11300 }
11301
11302 bool operator!=( PhysicalDeviceMultiviewFeaturesKHX const& rhs ) const
11303 {
11304 return !operator==( rhs );
11305 }
11306
11307 private:
11308 StructureType sType;
11309
11310 public:
11311 void* pNext;
11312 Bool32 multiview;
11313 Bool32 multiviewGeometryShader;
11314 Bool32 multiviewTessellationShader;
11315 };
11316 static_assert( sizeof( PhysicalDeviceMultiviewFeaturesKHX ) == sizeof( VkPhysicalDeviceMultiviewFeaturesKHX ), "struct and wrapper have different size!" );
11317
11318 struct PhysicalDeviceMultiviewPropertiesKHX
11319 {
11320 operator const VkPhysicalDeviceMultiviewPropertiesKHX&() const
11321 {
11322 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPropertiesKHX*>(this);
11323 }
11324
11325 bool operator==( PhysicalDeviceMultiviewPropertiesKHX const& rhs ) const
11326 {
11327 return ( sType == rhs.sType )
11328 && ( pNext == rhs.pNext )
11329 && ( maxMultiviewViewCount == rhs.maxMultiviewViewCount )
11330 && ( maxMultiviewInstanceIndex == rhs.maxMultiviewInstanceIndex );
11331 }
11332
11333 bool operator!=( PhysicalDeviceMultiviewPropertiesKHX const& rhs ) const
11334 {
11335 return !operator==( rhs );
11336 }
11337
11338 private:
11339 StructureType sType;
11340
11341 public:
11342 void* pNext;
11343 uint32_t maxMultiviewViewCount;
11344 uint32_t maxMultiviewInstanceIndex;
11345 };
11346 static_assert( sizeof( PhysicalDeviceMultiviewPropertiesKHX ) == sizeof( VkPhysicalDeviceMultiviewPropertiesKHX ), "struct and wrapper have different size!" );
11347
11348 struct RenderPassMultiviewCreateInfoKHX
11349 {
11350 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 )
11351 : sType( StructureType::eRenderPassMultiviewCreateInfoKHX )
11352 , pNext( nullptr )
11353 , subpassCount( subpassCount_ )
11354 , pViewMasks( pViewMasks_ )
11355 , dependencyCount( dependencyCount_ )
11356 , pViewOffsets( pViewOffsets_ )
11357 , correlationMaskCount( correlationMaskCount_ )
11358 , pCorrelationMasks( pCorrelationMasks_ )
11359 {
11360 }
11361
11362 RenderPassMultiviewCreateInfoKHX( VkRenderPassMultiviewCreateInfoKHX const & rhs )
11363 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011364 memcpy( this, &rhs, sizeof( RenderPassMultiviewCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011365 }
11366
11367 RenderPassMultiviewCreateInfoKHX& operator=( VkRenderPassMultiviewCreateInfoKHX const & rhs )
11368 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011369 memcpy( this, &rhs, sizeof( RenderPassMultiviewCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011370 return *this;
11371 }
Mark Young0f183a82017-02-28 09:58:04 -070011372 RenderPassMultiviewCreateInfoKHX& setPNext( const void* pNext_ )
11373 {
11374 pNext = pNext_;
11375 return *this;
11376 }
11377
11378 RenderPassMultiviewCreateInfoKHX& setSubpassCount( uint32_t subpassCount_ )
11379 {
11380 subpassCount = subpassCount_;
11381 return *this;
11382 }
11383
11384 RenderPassMultiviewCreateInfoKHX& setPViewMasks( const uint32_t* pViewMasks_ )
11385 {
11386 pViewMasks = pViewMasks_;
11387 return *this;
11388 }
11389
11390 RenderPassMultiviewCreateInfoKHX& setDependencyCount( uint32_t dependencyCount_ )
11391 {
11392 dependencyCount = dependencyCount_;
11393 return *this;
11394 }
11395
11396 RenderPassMultiviewCreateInfoKHX& setPViewOffsets( const int32_t* pViewOffsets_ )
11397 {
11398 pViewOffsets = pViewOffsets_;
11399 return *this;
11400 }
11401
11402 RenderPassMultiviewCreateInfoKHX& setCorrelationMaskCount( uint32_t correlationMaskCount_ )
11403 {
11404 correlationMaskCount = correlationMaskCount_;
11405 return *this;
11406 }
11407
11408 RenderPassMultiviewCreateInfoKHX& setPCorrelationMasks( const uint32_t* pCorrelationMasks_ )
11409 {
11410 pCorrelationMasks = pCorrelationMasks_;
11411 return *this;
11412 }
11413
11414 operator const VkRenderPassMultiviewCreateInfoKHX&() const
11415 {
11416 return *reinterpret_cast<const VkRenderPassMultiviewCreateInfoKHX*>(this);
11417 }
11418
11419 bool operator==( RenderPassMultiviewCreateInfoKHX const& rhs ) const
11420 {
11421 return ( sType == rhs.sType )
11422 && ( pNext == rhs.pNext )
11423 && ( subpassCount == rhs.subpassCount )
11424 && ( pViewMasks == rhs.pViewMasks )
11425 && ( dependencyCount == rhs.dependencyCount )
11426 && ( pViewOffsets == rhs.pViewOffsets )
11427 && ( correlationMaskCount == rhs.correlationMaskCount )
11428 && ( pCorrelationMasks == rhs.pCorrelationMasks );
11429 }
11430
11431 bool operator!=( RenderPassMultiviewCreateInfoKHX const& rhs ) const
11432 {
11433 return !operator==( rhs );
11434 }
11435
11436 private:
11437 StructureType sType;
11438
11439 public:
11440 const void* pNext;
11441 uint32_t subpassCount;
11442 const uint32_t* pViewMasks;
11443 uint32_t dependencyCount;
11444 const int32_t* pViewOffsets;
11445 uint32_t correlationMaskCount;
11446 const uint32_t* pCorrelationMasks;
11447 };
11448 static_assert( sizeof( RenderPassMultiviewCreateInfoKHX ) == sizeof( VkRenderPassMultiviewCreateInfoKHX ), "struct and wrapper have different size!" );
11449
Lenny Komowb79f04a2017-09-18 17:07:00 -060011450 struct BindBufferMemoryInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070011451 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011452 BindBufferMemoryInfoKHR( Buffer buffer_ = Buffer(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0 )
11453 : sType( StructureType::eBindBufferMemoryInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070011454 , pNext( nullptr )
11455 , buffer( buffer_ )
11456 , memory( memory_ )
11457 , memoryOffset( memoryOffset_ )
Mark Young0f183a82017-02-28 09:58:04 -070011458 {
11459 }
11460
Lenny Komowb79f04a2017-09-18 17:07:00 -060011461 BindBufferMemoryInfoKHR( VkBindBufferMemoryInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011462 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011463 memcpy( this, &rhs, sizeof( BindBufferMemoryInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070011464 }
11465
Lenny Komowb79f04a2017-09-18 17:07:00 -060011466 BindBufferMemoryInfoKHR& operator=( VkBindBufferMemoryInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011467 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011468 memcpy( this, &rhs, sizeof( BindBufferMemoryInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070011469 return *this;
11470 }
Lenny Komowb79f04a2017-09-18 17:07:00 -060011471 BindBufferMemoryInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070011472 {
11473 pNext = pNext_;
11474 return *this;
11475 }
11476
Lenny Komowb79f04a2017-09-18 17:07:00 -060011477 BindBufferMemoryInfoKHR& setBuffer( Buffer buffer_ )
Mark Young0f183a82017-02-28 09:58:04 -070011478 {
11479 buffer = buffer_;
11480 return *this;
11481 }
11482
Lenny Komowb79f04a2017-09-18 17:07:00 -060011483 BindBufferMemoryInfoKHR& setMemory( DeviceMemory memory_ )
Mark Young0f183a82017-02-28 09:58:04 -070011484 {
11485 memory = memory_;
11486 return *this;
11487 }
11488
Lenny Komowb79f04a2017-09-18 17:07:00 -060011489 BindBufferMemoryInfoKHR& setMemoryOffset( DeviceSize memoryOffset_ )
Mark Young0f183a82017-02-28 09:58:04 -070011490 {
11491 memoryOffset = memoryOffset_;
11492 return *this;
11493 }
11494
Lenny Komowb79f04a2017-09-18 17:07:00 -060011495 operator const VkBindBufferMemoryInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070011496 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011497 return *reinterpret_cast<const VkBindBufferMemoryInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070011498 }
11499
Lenny Komowb79f04a2017-09-18 17:07:00 -060011500 bool operator==( BindBufferMemoryInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011501 {
11502 return ( sType == rhs.sType )
11503 && ( pNext == rhs.pNext )
11504 && ( buffer == rhs.buffer )
11505 && ( memory == rhs.memory )
Lenny Komowb79f04a2017-09-18 17:07:00 -060011506 && ( memoryOffset == rhs.memoryOffset );
Mark Young0f183a82017-02-28 09:58:04 -070011507 }
11508
Lenny Komowb79f04a2017-09-18 17:07:00 -060011509 bool operator!=( BindBufferMemoryInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011510 {
11511 return !operator==( rhs );
11512 }
11513
11514 private:
11515 StructureType sType;
11516
11517 public:
11518 const void* pNext;
11519 Buffer buffer;
11520 DeviceMemory memory;
11521 DeviceSize memoryOffset;
Mark Young0f183a82017-02-28 09:58:04 -070011522 };
Lenny Komowb79f04a2017-09-18 17:07:00 -060011523 static_assert( sizeof( BindBufferMemoryInfoKHR ) == sizeof( VkBindBufferMemoryInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070011524
Lenny Komowb79f04a2017-09-18 17:07:00 -060011525 struct BindBufferMemoryDeviceGroupInfoKHX
Mark Young0f183a82017-02-28 09:58:04 -070011526 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011527 BindBufferMemoryDeviceGroupInfoKHX( uint32_t deviceIndexCount_ = 0, const uint32_t* pDeviceIndices_ = nullptr )
11528 : sType( StructureType::eBindBufferMemoryDeviceGroupInfoKHX )
Mark Young0f183a82017-02-28 09:58:04 -070011529 , pNext( nullptr )
Mark Young0f183a82017-02-28 09:58:04 -070011530 , deviceIndexCount( deviceIndexCount_ )
11531 , pDeviceIndices( pDeviceIndices_ )
Mark Young0f183a82017-02-28 09:58:04 -070011532 {
11533 }
11534
Lenny Komowb79f04a2017-09-18 17:07:00 -060011535 BindBufferMemoryDeviceGroupInfoKHX( VkBindBufferMemoryDeviceGroupInfoKHX const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011536 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011537 memcpy( this, &rhs, sizeof( BindBufferMemoryDeviceGroupInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011538 }
11539
Lenny Komowb79f04a2017-09-18 17:07:00 -060011540 BindBufferMemoryDeviceGroupInfoKHX& operator=( VkBindBufferMemoryDeviceGroupInfoKHX const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070011541 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011542 memcpy( this, &rhs, sizeof( BindBufferMemoryDeviceGroupInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011543 return *this;
11544 }
Lenny Komowb79f04a2017-09-18 17:07:00 -060011545 BindBufferMemoryDeviceGroupInfoKHX& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070011546 {
11547 pNext = pNext_;
11548 return *this;
11549 }
11550
Lenny Komowb79f04a2017-09-18 17:07:00 -060011551 BindBufferMemoryDeviceGroupInfoKHX& setDeviceIndexCount( uint32_t deviceIndexCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070011552 {
11553 deviceIndexCount = deviceIndexCount_;
11554 return *this;
11555 }
11556
Lenny Komowb79f04a2017-09-18 17:07:00 -060011557 BindBufferMemoryDeviceGroupInfoKHX& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
Mark Young0f183a82017-02-28 09:58:04 -070011558 {
11559 pDeviceIndices = pDeviceIndices_;
11560 return *this;
11561 }
11562
Lenny Komowb79f04a2017-09-18 17:07:00 -060011563 operator const VkBindBufferMemoryDeviceGroupInfoKHX&() const
Mark Young0f183a82017-02-28 09:58:04 -070011564 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011565 return *reinterpret_cast<const VkBindBufferMemoryDeviceGroupInfoKHX*>(this);
11566 }
11567
11568 bool operator==( BindBufferMemoryDeviceGroupInfoKHX const& rhs ) const
11569 {
11570 return ( sType == rhs.sType )
11571 && ( pNext == rhs.pNext )
11572 && ( deviceIndexCount == rhs.deviceIndexCount )
11573 && ( pDeviceIndices == rhs.pDeviceIndices );
11574 }
11575
11576 bool operator!=( BindBufferMemoryDeviceGroupInfoKHX const& rhs ) const
11577 {
11578 return !operator==( rhs );
11579 }
11580
11581 private:
11582 StructureType sType;
11583
11584 public:
11585 const void* pNext;
11586 uint32_t deviceIndexCount;
11587 const uint32_t* pDeviceIndices;
11588 };
11589 static_assert( sizeof( BindBufferMemoryDeviceGroupInfoKHX ) == sizeof( VkBindBufferMemoryDeviceGroupInfoKHX ), "struct and wrapper have different size!" );
11590
11591 struct BindImageMemoryInfoKHR
11592 {
11593 BindImageMemoryInfoKHR( Image image_ = Image(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0 )
11594 : sType( StructureType::eBindImageMemoryInfoKHR )
11595 , pNext( nullptr )
11596 , image( image_ )
11597 , memory( memory_ )
11598 , memoryOffset( memoryOffset_ )
11599 {
11600 }
11601
11602 BindImageMemoryInfoKHR( VkBindImageMemoryInfoKHR const & rhs )
11603 {
11604 memcpy( this, &rhs, sizeof( BindImageMemoryInfoKHR ) );
11605 }
11606
11607 BindImageMemoryInfoKHR& operator=( VkBindImageMemoryInfoKHR const & rhs )
11608 {
11609 memcpy( this, &rhs, sizeof( BindImageMemoryInfoKHR ) );
11610 return *this;
11611 }
11612 BindImageMemoryInfoKHR& setPNext( const void* pNext_ )
11613 {
11614 pNext = pNext_;
Mark Young0f183a82017-02-28 09:58:04 -070011615 return *this;
11616 }
11617
Lenny Komowb79f04a2017-09-18 17:07:00 -060011618 BindImageMemoryInfoKHR& setImage( Image image_ )
Mark Young0f183a82017-02-28 09:58:04 -070011619 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011620 image = image_;
Mark Young0f183a82017-02-28 09:58:04 -070011621 return *this;
11622 }
11623
Lenny Komowb79f04a2017-09-18 17:07:00 -060011624 BindImageMemoryInfoKHR& setMemory( DeviceMemory memory_ )
Mark Young0f183a82017-02-28 09:58:04 -070011625 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060011626 memory = memory_;
11627 return *this;
Mark Young0f183a82017-02-28 09:58:04 -070011628 }
11629
Lenny Komowb79f04a2017-09-18 17:07:00 -060011630 BindImageMemoryInfoKHR& setMemoryOffset( DeviceSize memoryOffset_ )
11631 {
11632 memoryOffset = memoryOffset_;
11633 return *this;
11634 }
11635
11636 operator const VkBindImageMemoryInfoKHR&() const
11637 {
11638 return *reinterpret_cast<const VkBindImageMemoryInfoKHR*>(this);
11639 }
11640
11641 bool operator==( BindImageMemoryInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011642 {
11643 return ( sType == rhs.sType )
11644 && ( pNext == rhs.pNext )
11645 && ( image == rhs.image )
11646 && ( memory == rhs.memory )
Lenny Komowb79f04a2017-09-18 17:07:00 -060011647 && ( memoryOffset == rhs.memoryOffset );
Mark Young0f183a82017-02-28 09:58:04 -070011648 }
11649
Lenny Komowb79f04a2017-09-18 17:07:00 -060011650 bool operator!=( BindImageMemoryInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011651 {
11652 return !operator==( rhs );
11653 }
11654
11655 private:
11656 StructureType sType;
11657
11658 public:
11659 const void* pNext;
11660 Image image;
11661 DeviceMemory memory;
11662 DeviceSize memoryOffset;
Lenny Komowb79f04a2017-09-18 17:07:00 -060011663 };
11664 static_assert( sizeof( BindImageMemoryInfoKHR ) == sizeof( VkBindImageMemoryInfoKHR ), "struct and wrapper have different size!" );
11665
11666 struct BindImageMemoryDeviceGroupInfoKHX
11667 {
11668 BindImageMemoryDeviceGroupInfoKHX( uint32_t deviceIndexCount_ = 0, const uint32_t* pDeviceIndices_ = nullptr, uint32_t SFRRectCount_ = 0, const Rect2D* pSFRRects_ = nullptr )
11669 : sType( StructureType::eBindImageMemoryDeviceGroupInfoKHX )
11670 , pNext( nullptr )
11671 , deviceIndexCount( deviceIndexCount_ )
11672 , pDeviceIndices( pDeviceIndices_ )
11673 , SFRRectCount( SFRRectCount_ )
11674 , pSFRRects( pSFRRects_ )
11675 {
11676 }
11677
11678 BindImageMemoryDeviceGroupInfoKHX( VkBindImageMemoryDeviceGroupInfoKHX const & rhs )
11679 {
11680 memcpy( this, &rhs, sizeof( BindImageMemoryDeviceGroupInfoKHX ) );
11681 }
11682
11683 BindImageMemoryDeviceGroupInfoKHX& operator=( VkBindImageMemoryDeviceGroupInfoKHX const & rhs )
11684 {
11685 memcpy( this, &rhs, sizeof( BindImageMemoryDeviceGroupInfoKHX ) );
11686 return *this;
11687 }
11688 BindImageMemoryDeviceGroupInfoKHX& setPNext( const void* pNext_ )
11689 {
11690 pNext = pNext_;
11691 return *this;
11692 }
11693
11694 BindImageMemoryDeviceGroupInfoKHX& setDeviceIndexCount( uint32_t deviceIndexCount_ )
11695 {
11696 deviceIndexCount = deviceIndexCount_;
11697 return *this;
11698 }
11699
11700 BindImageMemoryDeviceGroupInfoKHX& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
11701 {
11702 pDeviceIndices = pDeviceIndices_;
11703 return *this;
11704 }
11705
11706 BindImageMemoryDeviceGroupInfoKHX& setSFRRectCount( uint32_t SFRRectCount_ )
11707 {
11708 SFRRectCount = SFRRectCount_;
11709 return *this;
11710 }
11711
11712 BindImageMemoryDeviceGroupInfoKHX& setPSFRRects( const Rect2D* pSFRRects_ )
11713 {
11714 pSFRRects = pSFRRects_;
11715 return *this;
11716 }
11717
11718 operator const VkBindImageMemoryDeviceGroupInfoKHX&() const
11719 {
11720 return *reinterpret_cast<const VkBindImageMemoryDeviceGroupInfoKHX*>(this);
11721 }
11722
11723 bool operator==( BindImageMemoryDeviceGroupInfoKHX const& rhs ) const
11724 {
11725 return ( sType == rhs.sType )
11726 && ( pNext == rhs.pNext )
11727 && ( deviceIndexCount == rhs.deviceIndexCount )
11728 && ( pDeviceIndices == rhs.pDeviceIndices )
11729 && ( SFRRectCount == rhs.SFRRectCount )
11730 && ( pSFRRects == rhs.pSFRRects );
11731 }
11732
11733 bool operator!=( BindImageMemoryDeviceGroupInfoKHX const& rhs ) const
11734 {
11735 return !operator==( rhs );
11736 }
11737
11738 private:
11739 StructureType sType;
11740
11741 public:
11742 const void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070011743 uint32_t deviceIndexCount;
11744 const uint32_t* pDeviceIndices;
11745 uint32_t SFRRectCount;
11746 const Rect2D* pSFRRects;
11747 };
Lenny Komowb79f04a2017-09-18 17:07:00 -060011748 static_assert( sizeof( BindImageMemoryDeviceGroupInfoKHX ) == sizeof( VkBindImageMemoryDeviceGroupInfoKHX ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070011749
11750 struct DeviceGroupRenderPassBeginInfoKHX
11751 {
11752 DeviceGroupRenderPassBeginInfoKHX( uint32_t deviceMask_ = 0, uint32_t deviceRenderAreaCount_ = 0, const Rect2D* pDeviceRenderAreas_ = nullptr )
11753 : sType( StructureType::eDeviceGroupRenderPassBeginInfoKHX )
11754 , pNext( nullptr )
11755 , deviceMask( deviceMask_ )
11756 , deviceRenderAreaCount( deviceRenderAreaCount_ )
11757 , pDeviceRenderAreas( pDeviceRenderAreas_ )
11758 {
11759 }
11760
11761 DeviceGroupRenderPassBeginInfoKHX( VkDeviceGroupRenderPassBeginInfoKHX const & rhs )
11762 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011763 memcpy( this, &rhs, sizeof( DeviceGroupRenderPassBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011764 }
11765
11766 DeviceGroupRenderPassBeginInfoKHX& operator=( VkDeviceGroupRenderPassBeginInfoKHX const & rhs )
11767 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011768 memcpy( this, &rhs, sizeof( DeviceGroupRenderPassBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011769 return *this;
11770 }
Mark Young0f183a82017-02-28 09:58:04 -070011771 DeviceGroupRenderPassBeginInfoKHX& setPNext( const void* pNext_ )
11772 {
11773 pNext = pNext_;
11774 return *this;
11775 }
11776
11777 DeviceGroupRenderPassBeginInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11778 {
11779 deviceMask = deviceMask_;
11780 return *this;
11781 }
11782
11783 DeviceGroupRenderPassBeginInfoKHX& setDeviceRenderAreaCount( uint32_t deviceRenderAreaCount_ )
11784 {
11785 deviceRenderAreaCount = deviceRenderAreaCount_;
11786 return *this;
11787 }
11788
11789 DeviceGroupRenderPassBeginInfoKHX& setPDeviceRenderAreas( const Rect2D* pDeviceRenderAreas_ )
11790 {
11791 pDeviceRenderAreas = pDeviceRenderAreas_;
11792 return *this;
11793 }
11794
11795 operator const VkDeviceGroupRenderPassBeginInfoKHX&() const
11796 {
11797 return *reinterpret_cast<const VkDeviceGroupRenderPassBeginInfoKHX*>(this);
11798 }
11799
11800 bool operator==( DeviceGroupRenderPassBeginInfoKHX const& rhs ) const
11801 {
11802 return ( sType == rhs.sType )
11803 && ( pNext == rhs.pNext )
11804 && ( deviceMask == rhs.deviceMask )
11805 && ( deviceRenderAreaCount == rhs.deviceRenderAreaCount )
11806 && ( pDeviceRenderAreas == rhs.pDeviceRenderAreas );
11807 }
11808
11809 bool operator!=( DeviceGroupRenderPassBeginInfoKHX const& rhs ) const
11810 {
11811 return !operator==( rhs );
11812 }
11813
11814 private:
11815 StructureType sType;
11816
11817 public:
11818 const void* pNext;
11819 uint32_t deviceMask;
11820 uint32_t deviceRenderAreaCount;
11821 const Rect2D* pDeviceRenderAreas;
11822 };
11823 static_assert( sizeof( DeviceGroupRenderPassBeginInfoKHX ) == sizeof( VkDeviceGroupRenderPassBeginInfoKHX ), "struct and wrapper have different size!" );
11824
11825 struct DeviceGroupCommandBufferBeginInfoKHX
11826 {
11827 DeviceGroupCommandBufferBeginInfoKHX( uint32_t deviceMask_ = 0 )
11828 : sType( StructureType::eDeviceGroupCommandBufferBeginInfoKHX )
11829 , pNext( nullptr )
11830 , deviceMask( deviceMask_ )
11831 {
11832 }
11833
11834 DeviceGroupCommandBufferBeginInfoKHX( VkDeviceGroupCommandBufferBeginInfoKHX const & rhs )
11835 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011836 memcpy( this, &rhs, sizeof( DeviceGroupCommandBufferBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011837 }
11838
11839 DeviceGroupCommandBufferBeginInfoKHX& operator=( VkDeviceGroupCommandBufferBeginInfoKHX const & rhs )
11840 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011841 memcpy( this, &rhs, sizeof( DeviceGroupCommandBufferBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011842 return *this;
11843 }
Mark Young0f183a82017-02-28 09:58:04 -070011844 DeviceGroupCommandBufferBeginInfoKHX& setPNext( const void* pNext_ )
11845 {
11846 pNext = pNext_;
11847 return *this;
11848 }
11849
11850 DeviceGroupCommandBufferBeginInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11851 {
11852 deviceMask = deviceMask_;
11853 return *this;
11854 }
11855
11856 operator const VkDeviceGroupCommandBufferBeginInfoKHX&() const
11857 {
11858 return *reinterpret_cast<const VkDeviceGroupCommandBufferBeginInfoKHX*>(this);
11859 }
11860
11861 bool operator==( DeviceGroupCommandBufferBeginInfoKHX const& rhs ) const
11862 {
11863 return ( sType == rhs.sType )
11864 && ( pNext == rhs.pNext )
11865 && ( deviceMask == rhs.deviceMask );
11866 }
11867
11868 bool operator!=( DeviceGroupCommandBufferBeginInfoKHX const& rhs ) const
11869 {
11870 return !operator==( rhs );
11871 }
11872
11873 private:
11874 StructureType sType;
11875
11876 public:
11877 const void* pNext;
11878 uint32_t deviceMask;
11879 };
11880 static_assert( sizeof( DeviceGroupCommandBufferBeginInfoKHX ) == sizeof( VkDeviceGroupCommandBufferBeginInfoKHX ), "struct and wrapper have different size!" );
11881
11882 struct DeviceGroupSubmitInfoKHX
11883 {
11884 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 )
11885 : sType( StructureType::eDeviceGroupSubmitInfoKHX )
11886 , pNext( nullptr )
11887 , waitSemaphoreCount( waitSemaphoreCount_ )
11888 , pWaitSemaphoreDeviceIndices( pWaitSemaphoreDeviceIndices_ )
11889 , commandBufferCount( commandBufferCount_ )
11890 , pCommandBufferDeviceMasks( pCommandBufferDeviceMasks_ )
11891 , signalSemaphoreCount( signalSemaphoreCount_ )
11892 , pSignalSemaphoreDeviceIndices( pSignalSemaphoreDeviceIndices_ )
11893 {
11894 }
11895
11896 DeviceGroupSubmitInfoKHX( VkDeviceGroupSubmitInfoKHX const & rhs )
11897 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011898 memcpy( this, &rhs, sizeof( DeviceGroupSubmitInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011899 }
11900
11901 DeviceGroupSubmitInfoKHX& operator=( VkDeviceGroupSubmitInfoKHX const & rhs )
11902 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011903 memcpy( this, &rhs, sizeof( DeviceGroupSubmitInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011904 return *this;
11905 }
Mark Young0f183a82017-02-28 09:58:04 -070011906 DeviceGroupSubmitInfoKHX& setPNext( const void* pNext_ )
11907 {
11908 pNext = pNext_;
11909 return *this;
11910 }
11911
11912 DeviceGroupSubmitInfoKHX& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
11913 {
11914 waitSemaphoreCount = waitSemaphoreCount_;
11915 return *this;
11916 }
11917
11918 DeviceGroupSubmitInfoKHX& setPWaitSemaphoreDeviceIndices( const uint32_t* pWaitSemaphoreDeviceIndices_ )
11919 {
11920 pWaitSemaphoreDeviceIndices = pWaitSemaphoreDeviceIndices_;
11921 return *this;
11922 }
11923
11924 DeviceGroupSubmitInfoKHX& setCommandBufferCount( uint32_t commandBufferCount_ )
11925 {
11926 commandBufferCount = commandBufferCount_;
11927 return *this;
11928 }
11929
11930 DeviceGroupSubmitInfoKHX& setPCommandBufferDeviceMasks( const uint32_t* pCommandBufferDeviceMasks_ )
11931 {
11932 pCommandBufferDeviceMasks = pCommandBufferDeviceMasks_;
11933 return *this;
11934 }
11935
11936 DeviceGroupSubmitInfoKHX& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
11937 {
11938 signalSemaphoreCount = signalSemaphoreCount_;
11939 return *this;
11940 }
11941
11942 DeviceGroupSubmitInfoKHX& setPSignalSemaphoreDeviceIndices( const uint32_t* pSignalSemaphoreDeviceIndices_ )
11943 {
11944 pSignalSemaphoreDeviceIndices = pSignalSemaphoreDeviceIndices_;
11945 return *this;
11946 }
11947
11948 operator const VkDeviceGroupSubmitInfoKHX&() const
11949 {
11950 return *reinterpret_cast<const VkDeviceGroupSubmitInfoKHX*>(this);
11951 }
11952
11953 bool operator==( DeviceGroupSubmitInfoKHX const& rhs ) const
11954 {
11955 return ( sType == rhs.sType )
11956 && ( pNext == rhs.pNext )
11957 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
11958 && ( pWaitSemaphoreDeviceIndices == rhs.pWaitSemaphoreDeviceIndices )
11959 && ( commandBufferCount == rhs.commandBufferCount )
11960 && ( pCommandBufferDeviceMasks == rhs.pCommandBufferDeviceMasks )
11961 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
11962 && ( pSignalSemaphoreDeviceIndices == rhs.pSignalSemaphoreDeviceIndices );
11963 }
11964
11965 bool operator!=( DeviceGroupSubmitInfoKHX const& rhs ) const
11966 {
11967 return !operator==( rhs );
11968 }
11969
11970 private:
11971 StructureType sType;
11972
11973 public:
11974 const void* pNext;
11975 uint32_t waitSemaphoreCount;
11976 const uint32_t* pWaitSemaphoreDeviceIndices;
11977 uint32_t commandBufferCount;
11978 const uint32_t* pCommandBufferDeviceMasks;
11979 uint32_t signalSemaphoreCount;
11980 const uint32_t* pSignalSemaphoreDeviceIndices;
11981 };
11982 static_assert( sizeof( DeviceGroupSubmitInfoKHX ) == sizeof( VkDeviceGroupSubmitInfoKHX ), "struct and wrapper have different size!" );
11983
11984 struct DeviceGroupBindSparseInfoKHX
11985 {
11986 DeviceGroupBindSparseInfoKHX( uint32_t resourceDeviceIndex_ = 0, uint32_t memoryDeviceIndex_ = 0 )
11987 : sType( StructureType::eDeviceGroupBindSparseInfoKHX )
11988 , pNext( nullptr )
11989 , resourceDeviceIndex( resourceDeviceIndex_ )
11990 , memoryDeviceIndex( memoryDeviceIndex_ )
11991 {
11992 }
11993
11994 DeviceGroupBindSparseInfoKHX( VkDeviceGroupBindSparseInfoKHX const & rhs )
11995 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011996 memcpy( this, &rhs, sizeof( DeviceGroupBindSparseInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011997 }
11998
11999 DeviceGroupBindSparseInfoKHX& operator=( VkDeviceGroupBindSparseInfoKHX const & rhs )
12000 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012001 memcpy( this, &rhs, sizeof( DeviceGroupBindSparseInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012002 return *this;
12003 }
Mark Young0f183a82017-02-28 09:58:04 -070012004 DeviceGroupBindSparseInfoKHX& setPNext( const void* pNext_ )
12005 {
12006 pNext = pNext_;
12007 return *this;
12008 }
12009
12010 DeviceGroupBindSparseInfoKHX& setResourceDeviceIndex( uint32_t resourceDeviceIndex_ )
12011 {
12012 resourceDeviceIndex = resourceDeviceIndex_;
12013 return *this;
12014 }
12015
12016 DeviceGroupBindSparseInfoKHX& setMemoryDeviceIndex( uint32_t memoryDeviceIndex_ )
12017 {
12018 memoryDeviceIndex = memoryDeviceIndex_;
12019 return *this;
12020 }
12021
12022 operator const VkDeviceGroupBindSparseInfoKHX&() const
12023 {
12024 return *reinterpret_cast<const VkDeviceGroupBindSparseInfoKHX*>(this);
12025 }
12026
12027 bool operator==( DeviceGroupBindSparseInfoKHX const& rhs ) const
12028 {
12029 return ( sType == rhs.sType )
12030 && ( pNext == rhs.pNext )
12031 && ( resourceDeviceIndex == rhs.resourceDeviceIndex )
12032 && ( memoryDeviceIndex == rhs.memoryDeviceIndex );
12033 }
12034
12035 bool operator!=( DeviceGroupBindSparseInfoKHX const& rhs ) const
12036 {
12037 return !operator==( rhs );
12038 }
12039
12040 private:
12041 StructureType sType;
12042
12043 public:
12044 const void* pNext;
12045 uint32_t resourceDeviceIndex;
12046 uint32_t memoryDeviceIndex;
12047 };
12048 static_assert( sizeof( DeviceGroupBindSparseInfoKHX ) == sizeof( VkDeviceGroupBindSparseInfoKHX ), "struct and wrapper have different size!" );
12049
12050 struct ImageSwapchainCreateInfoKHX
12051 {
12052 ImageSwapchainCreateInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR() )
12053 : sType( StructureType::eImageSwapchainCreateInfoKHX )
12054 , pNext( nullptr )
12055 , swapchain( swapchain_ )
12056 {
12057 }
12058
12059 ImageSwapchainCreateInfoKHX( VkImageSwapchainCreateInfoKHX const & rhs )
12060 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012061 memcpy( this, &rhs, sizeof( ImageSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012062 }
12063
12064 ImageSwapchainCreateInfoKHX& operator=( VkImageSwapchainCreateInfoKHX const & rhs )
12065 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012066 memcpy( this, &rhs, sizeof( ImageSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012067 return *this;
12068 }
Mark Young0f183a82017-02-28 09:58:04 -070012069 ImageSwapchainCreateInfoKHX& setPNext( const void* pNext_ )
12070 {
12071 pNext = pNext_;
12072 return *this;
12073 }
12074
12075 ImageSwapchainCreateInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
12076 {
12077 swapchain = swapchain_;
12078 return *this;
12079 }
12080
12081 operator const VkImageSwapchainCreateInfoKHX&() const
12082 {
12083 return *reinterpret_cast<const VkImageSwapchainCreateInfoKHX*>(this);
12084 }
12085
12086 bool operator==( ImageSwapchainCreateInfoKHX const& rhs ) const
12087 {
12088 return ( sType == rhs.sType )
12089 && ( pNext == rhs.pNext )
12090 && ( swapchain == rhs.swapchain );
12091 }
12092
12093 bool operator!=( ImageSwapchainCreateInfoKHX const& rhs ) const
12094 {
12095 return !operator==( rhs );
12096 }
12097
12098 private:
12099 StructureType sType;
12100
12101 public:
12102 const void* pNext;
12103 SwapchainKHR swapchain;
12104 };
12105 static_assert( sizeof( ImageSwapchainCreateInfoKHX ) == sizeof( VkImageSwapchainCreateInfoKHX ), "struct and wrapper have different size!" );
12106
12107 struct BindImageMemorySwapchainInfoKHX
12108 {
12109 BindImageMemorySwapchainInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR(), uint32_t imageIndex_ = 0 )
12110 : sType( StructureType::eBindImageMemorySwapchainInfoKHX )
12111 , pNext( nullptr )
12112 , swapchain( swapchain_ )
12113 , imageIndex( imageIndex_ )
12114 {
12115 }
12116
12117 BindImageMemorySwapchainInfoKHX( VkBindImageMemorySwapchainInfoKHX const & rhs )
12118 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012119 memcpy( this, &rhs, sizeof( BindImageMemorySwapchainInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012120 }
12121
12122 BindImageMemorySwapchainInfoKHX& operator=( VkBindImageMemorySwapchainInfoKHX const & rhs )
12123 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012124 memcpy( this, &rhs, sizeof( BindImageMemorySwapchainInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012125 return *this;
12126 }
Mark Young0f183a82017-02-28 09:58:04 -070012127 BindImageMemorySwapchainInfoKHX& setPNext( const void* pNext_ )
12128 {
12129 pNext = pNext_;
12130 return *this;
12131 }
12132
12133 BindImageMemorySwapchainInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
12134 {
12135 swapchain = swapchain_;
12136 return *this;
12137 }
12138
12139 BindImageMemorySwapchainInfoKHX& setImageIndex( uint32_t imageIndex_ )
12140 {
12141 imageIndex = imageIndex_;
12142 return *this;
12143 }
12144
12145 operator const VkBindImageMemorySwapchainInfoKHX&() const
12146 {
12147 return *reinterpret_cast<const VkBindImageMemorySwapchainInfoKHX*>(this);
12148 }
12149
12150 bool operator==( BindImageMemorySwapchainInfoKHX const& rhs ) const
12151 {
12152 return ( sType == rhs.sType )
12153 && ( pNext == rhs.pNext )
12154 && ( swapchain == rhs.swapchain )
12155 && ( imageIndex == rhs.imageIndex );
12156 }
12157
12158 bool operator!=( BindImageMemorySwapchainInfoKHX const& rhs ) const
12159 {
12160 return !operator==( rhs );
12161 }
12162
12163 private:
12164 StructureType sType;
12165
12166 public:
12167 const void* pNext;
12168 SwapchainKHR swapchain;
12169 uint32_t imageIndex;
12170 };
12171 static_assert( sizeof( BindImageMemorySwapchainInfoKHX ) == sizeof( VkBindImageMemorySwapchainInfoKHX ), "struct and wrapper have different size!" );
12172
12173 struct AcquireNextImageInfoKHX
12174 {
12175 AcquireNextImageInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR(), uint64_t timeout_ = 0, Semaphore semaphore_ = Semaphore(), Fence fence_ = Fence(), uint32_t deviceMask_ = 0 )
12176 : sType( StructureType::eAcquireNextImageInfoKHX )
12177 , pNext( nullptr )
12178 , swapchain( swapchain_ )
12179 , timeout( timeout_ )
12180 , semaphore( semaphore_ )
12181 , fence( fence_ )
12182 , deviceMask( deviceMask_ )
12183 {
12184 }
12185
12186 AcquireNextImageInfoKHX( VkAcquireNextImageInfoKHX const & rhs )
12187 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012188 memcpy( this, &rhs, sizeof( AcquireNextImageInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012189 }
12190
12191 AcquireNextImageInfoKHX& operator=( VkAcquireNextImageInfoKHX const & rhs )
12192 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012193 memcpy( this, &rhs, sizeof( AcquireNextImageInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070012194 return *this;
12195 }
Mark Young0f183a82017-02-28 09:58:04 -070012196 AcquireNextImageInfoKHX& setPNext( const void* pNext_ )
12197 {
12198 pNext = pNext_;
12199 return *this;
12200 }
12201
12202 AcquireNextImageInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
12203 {
12204 swapchain = swapchain_;
12205 return *this;
12206 }
12207
12208 AcquireNextImageInfoKHX& setTimeout( uint64_t timeout_ )
12209 {
12210 timeout = timeout_;
12211 return *this;
12212 }
12213
12214 AcquireNextImageInfoKHX& setSemaphore( Semaphore semaphore_ )
12215 {
12216 semaphore = semaphore_;
12217 return *this;
12218 }
12219
12220 AcquireNextImageInfoKHX& setFence( Fence fence_ )
12221 {
12222 fence = fence_;
12223 return *this;
12224 }
12225
12226 AcquireNextImageInfoKHX& setDeviceMask( uint32_t deviceMask_ )
12227 {
12228 deviceMask = deviceMask_;
12229 return *this;
12230 }
12231
12232 operator const VkAcquireNextImageInfoKHX&() const
12233 {
12234 return *reinterpret_cast<const VkAcquireNextImageInfoKHX*>(this);
12235 }
12236
12237 bool operator==( AcquireNextImageInfoKHX const& rhs ) const
12238 {
12239 return ( sType == rhs.sType )
12240 && ( pNext == rhs.pNext )
12241 && ( swapchain == rhs.swapchain )
12242 && ( timeout == rhs.timeout )
12243 && ( semaphore == rhs.semaphore )
12244 && ( fence == rhs.fence )
12245 && ( deviceMask == rhs.deviceMask );
12246 }
12247
12248 bool operator!=( AcquireNextImageInfoKHX const& rhs ) const
12249 {
12250 return !operator==( rhs );
12251 }
12252
12253 private:
12254 StructureType sType;
12255
12256 public:
12257 const void* pNext;
12258 SwapchainKHR swapchain;
12259 uint64_t timeout;
12260 Semaphore semaphore;
12261 Fence fence;
12262 uint32_t deviceMask;
12263 };
12264 static_assert( sizeof( AcquireNextImageInfoKHX ) == sizeof( VkAcquireNextImageInfoKHX ), "struct and wrapper have different size!" );
12265
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012266 struct HdrMetadataEXT
12267 {
12268 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 )
12269 : sType( StructureType::eHdrMetadataEXT )
12270 , pNext( nullptr )
12271 , displayPrimaryRed( displayPrimaryRed_ )
12272 , displayPrimaryGreen( displayPrimaryGreen_ )
12273 , displayPrimaryBlue( displayPrimaryBlue_ )
12274 , whitePoint( whitePoint_ )
12275 , maxLuminance( maxLuminance_ )
12276 , minLuminance( minLuminance_ )
12277 , maxContentLightLevel( maxContentLightLevel_ )
12278 , maxFrameAverageLightLevel( maxFrameAverageLightLevel_ )
12279 {
12280 }
12281
12282 HdrMetadataEXT( VkHdrMetadataEXT const & rhs )
12283 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012284 memcpy( this, &rhs, sizeof( HdrMetadataEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012285 }
12286
12287 HdrMetadataEXT& operator=( VkHdrMetadataEXT const & rhs )
12288 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012289 memcpy( this, &rhs, sizeof( HdrMetadataEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012290 return *this;
12291 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012292 HdrMetadataEXT& setPNext( const void* pNext_ )
12293 {
12294 pNext = pNext_;
12295 return *this;
12296 }
12297
12298 HdrMetadataEXT& setDisplayPrimaryRed( XYColorEXT displayPrimaryRed_ )
12299 {
12300 displayPrimaryRed = displayPrimaryRed_;
12301 return *this;
12302 }
12303
12304 HdrMetadataEXT& setDisplayPrimaryGreen( XYColorEXT displayPrimaryGreen_ )
12305 {
12306 displayPrimaryGreen = displayPrimaryGreen_;
12307 return *this;
12308 }
12309
12310 HdrMetadataEXT& setDisplayPrimaryBlue( XYColorEXT displayPrimaryBlue_ )
12311 {
12312 displayPrimaryBlue = displayPrimaryBlue_;
12313 return *this;
12314 }
12315
12316 HdrMetadataEXT& setWhitePoint( XYColorEXT whitePoint_ )
12317 {
12318 whitePoint = whitePoint_;
12319 return *this;
12320 }
12321
12322 HdrMetadataEXT& setMaxLuminance( float maxLuminance_ )
12323 {
12324 maxLuminance = maxLuminance_;
12325 return *this;
12326 }
12327
12328 HdrMetadataEXT& setMinLuminance( float minLuminance_ )
12329 {
12330 minLuminance = minLuminance_;
12331 return *this;
12332 }
12333
12334 HdrMetadataEXT& setMaxContentLightLevel( float maxContentLightLevel_ )
12335 {
12336 maxContentLightLevel = maxContentLightLevel_;
12337 return *this;
12338 }
12339
12340 HdrMetadataEXT& setMaxFrameAverageLightLevel( float maxFrameAverageLightLevel_ )
12341 {
12342 maxFrameAverageLightLevel = maxFrameAverageLightLevel_;
12343 return *this;
12344 }
12345
12346 operator const VkHdrMetadataEXT&() const
12347 {
12348 return *reinterpret_cast<const VkHdrMetadataEXT*>(this);
12349 }
12350
12351 bool operator==( HdrMetadataEXT const& rhs ) const
12352 {
12353 return ( sType == rhs.sType )
12354 && ( pNext == rhs.pNext )
12355 && ( displayPrimaryRed == rhs.displayPrimaryRed )
12356 && ( displayPrimaryGreen == rhs.displayPrimaryGreen )
12357 && ( displayPrimaryBlue == rhs.displayPrimaryBlue )
12358 && ( whitePoint == rhs.whitePoint )
12359 && ( maxLuminance == rhs.maxLuminance )
12360 && ( minLuminance == rhs.minLuminance )
12361 && ( maxContentLightLevel == rhs.maxContentLightLevel )
12362 && ( maxFrameAverageLightLevel == rhs.maxFrameAverageLightLevel );
12363 }
12364
12365 bool operator!=( HdrMetadataEXT const& rhs ) const
12366 {
12367 return !operator==( rhs );
12368 }
12369
12370 private:
12371 StructureType sType;
12372
12373 public:
12374 const void* pNext;
12375 XYColorEXT displayPrimaryRed;
12376 XYColorEXT displayPrimaryGreen;
12377 XYColorEXT displayPrimaryBlue;
12378 XYColorEXT whitePoint;
12379 float maxLuminance;
12380 float minLuminance;
12381 float maxContentLightLevel;
12382 float maxFrameAverageLightLevel;
12383 };
12384 static_assert( sizeof( HdrMetadataEXT ) == sizeof( VkHdrMetadataEXT ), "struct and wrapper have different size!" );
12385
12386 struct PresentTimesInfoGOOGLE
12387 {
12388 PresentTimesInfoGOOGLE( uint32_t swapchainCount_ = 0, const PresentTimeGOOGLE* pTimes_ = nullptr )
12389 : sType( StructureType::ePresentTimesInfoGOOGLE )
12390 , pNext( nullptr )
12391 , swapchainCount( swapchainCount_ )
12392 , pTimes( pTimes_ )
12393 {
12394 }
12395
12396 PresentTimesInfoGOOGLE( VkPresentTimesInfoGOOGLE const & rhs )
12397 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012398 memcpy( this, &rhs, sizeof( PresentTimesInfoGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012399 }
12400
12401 PresentTimesInfoGOOGLE& operator=( VkPresentTimesInfoGOOGLE const & rhs )
12402 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012403 memcpy( this, &rhs, sizeof( PresentTimesInfoGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012404 return *this;
12405 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012406 PresentTimesInfoGOOGLE& setPNext( const void* pNext_ )
12407 {
12408 pNext = pNext_;
12409 return *this;
12410 }
12411
12412 PresentTimesInfoGOOGLE& setSwapchainCount( uint32_t swapchainCount_ )
12413 {
12414 swapchainCount = swapchainCount_;
12415 return *this;
12416 }
12417
12418 PresentTimesInfoGOOGLE& setPTimes( const PresentTimeGOOGLE* pTimes_ )
12419 {
12420 pTimes = pTimes_;
12421 return *this;
12422 }
12423
12424 operator const VkPresentTimesInfoGOOGLE&() const
12425 {
12426 return *reinterpret_cast<const VkPresentTimesInfoGOOGLE*>(this);
12427 }
12428
12429 bool operator==( PresentTimesInfoGOOGLE const& rhs ) const
12430 {
12431 return ( sType == rhs.sType )
12432 && ( pNext == rhs.pNext )
12433 && ( swapchainCount == rhs.swapchainCount )
12434 && ( pTimes == rhs.pTimes );
12435 }
12436
12437 bool operator!=( PresentTimesInfoGOOGLE const& rhs ) const
12438 {
12439 return !operator==( rhs );
12440 }
12441
12442 private:
12443 StructureType sType;
12444
12445 public:
12446 const void* pNext;
12447 uint32_t swapchainCount;
12448 const PresentTimeGOOGLE* pTimes;
12449 };
12450 static_assert( sizeof( PresentTimesInfoGOOGLE ) == sizeof( VkPresentTimesInfoGOOGLE ), "struct and wrapper have different size!" );
12451
Mark Young0f183a82017-02-28 09:58:04 -070012452#ifdef VK_USE_PLATFORM_IOS_MVK
12453 struct IOSSurfaceCreateInfoMVK
12454 {
12455 IOSSurfaceCreateInfoMVK( IOSSurfaceCreateFlagsMVK flags_ = IOSSurfaceCreateFlagsMVK(), const void* pView_ = nullptr )
12456 : sType( StructureType::eIOSSurfaceCreateInfoMVK )
12457 , pNext( nullptr )
12458 , flags( flags_ )
12459 , pView( pView_ )
12460 {
12461 }
12462
12463 IOSSurfaceCreateInfoMVK( VkIOSSurfaceCreateInfoMVK const & rhs )
12464 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012465 memcpy( this, &rhs, sizeof( IOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070012466 }
12467
12468 IOSSurfaceCreateInfoMVK& operator=( VkIOSSurfaceCreateInfoMVK const & rhs )
12469 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012470 memcpy( this, &rhs, sizeof( IOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070012471 return *this;
12472 }
Mark Young0f183a82017-02-28 09:58:04 -070012473 IOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
12474 {
12475 pNext = pNext_;
12476 return *this;
12477 }
12478
12479 IOSSurfaceCreateInfoMVK& setFlags( IOSSurfaceCreateFlagsMVK flags_ )
12480 {
12481 flags = flags_;
12482 return *this;
12483 }
12484
12485 IOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
12486 {
12487 pView = pView_;
12488 return *this;
12489 }
12490
12491 operator const VkIOSSurfaceCreateInfoMVK&() const
12492 {
12493 return *reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>(this);
12494 }
12495
12496 bool operator==( IOSSurfaceCreateInfoMVK const& rhs ) const
12497 {
12498 return ( sType == rhs.sType )
12499 && ( pNext == rhs.pNext )
12500 && ( flags == rhs.flags )
12501 && ( pView == rhs.pView );
12502 }
12503
12504 bool operator!=( IOSSurfaceCreateInfoMVK const& rhs ) const
12505 {
12506 return !operator==( rhs );
12507 }
12508
12509 private:
12510 StructureType sType;
12511
12512 public:
12513 const void* pNext;
12514 IOSSurfaceCreateFlagsMVK flags;
12515 const void* pView;
12516 };
12517 static_assert( sizeof( IOSSurfaceCreateInfoMVK ) == sizeof( VkIOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
12518#endif /*VK_USE_PLATFORM_IOS_MVK*/
12519
12520#ifdef VK_USE_PLATFORM_MACOS_MVK
12521 struct MacOSSurfaceCreateInfoMVK
12522 {
12523 MacOSSurfaceCreateInfoMVK( MacOSSurfaceCreateFlagsMVK flags_ = MacOSSurfaceCreateFlagsMVK(), const void* pView_ = nullptr )
12524 : sType( StructureType::eMacOSSurfaceCreateInfoMVK )
12525 , pNext( nullptr )
12526 , flags( flags_ )
12527 , pView( pView_ )
12528 {
12529 }
12530
12531 MacOSSurfaceCreateInfoMVK( VkMacOSSurfaceCreateInfoMVK const & rhs )
12532 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012533 memcpy( this, &rhs, sizeof( MacOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070012534 }
12535
12536 MacOSSurfaceCreateInfoMVK& operator=( VkMacOSSurfaceCreateInfoMVK const & rhs )
12537 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012538 memcpy( this, &rhs, sizeof( MacOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070012539 return *this;
12540 }
Mark Young0f183a82017-02-28 09:58:04 -070012541 MacOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
12542 {
12543 pNext = pNext_;
12544 return *this;
12545 }
12546
12547 MacOSSurfaceCreateInfoMVK& setFlags( MacOSSurfaceCreateFlagsMVK flags_ )
12548 {
12549 flags = flags_;
12550 return *this;
12551 }
12552
12553 MacOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
12554 {
12555 pView = pView_;
12556 return *this;
12557 }
12558
12559 operator const VkMacOSSurfaceCreateInfoMVK&() const
12560 {
12561 return *reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>(this);
12562 }
12563
12564 bool operator==( MacOSSurfaceCreateInfoMVK const& rhs ) const
12565 {
12566 return ( sType == rhs.sType )
12567 && ( pNext == rhs.pNext )
12568 && ( flags == rhs.flags )
12569 && ( pView == rhs.pView );
12570 }
12571
12572 bool operator!=( MacOSSurfaceCreateInfoMVK const& rhs ) const
12573 {
12574 return !operator==( rhs );
12575 }
12576
12577 private:
12578 StructureType sType;
12579
12580 public:
12581 const void* pNext;
12582 MacOSSurfaceCreateFlagsMVK flags;
12583 const void* pView;
12584 };
12585 static_assert( sizeof( MacOSSurfaceCreateInfoMVK ) == sizeof( VkMacOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
12586#endif /*VK_USE_PLATFORM_MACOS_MVK*/
12587
12588 struct PipelineViewportWScalingStateCreateInfoNV
12589 {
12590 PipelineViewportWScalingStateCreateInfoNV( Bool32 viewportWScalingEnable_ = 0, uint32_t viewportCount_ = 0, const ViewportWScalingNV* pViewportWScalings_ = nullptr )
12591 : sType( StructureType::ePipelineViewportWScalingStateCreateInfoNV )
12592 , pNext( nullptr )
12593 , viewportWScalingEnable( viewportWScalingEnable_ )
12594 , viewportCount( viewportCount_ )
12595 , pViewportWScalings( pViewportWScalings_ )
12596 {
12597 }
12598
12599 PipelineViewportWScalingStateCreateInfoNV( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
12600 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012601 memcpy( this, &rhs, sizeof( PipelineViewportWScalingStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070012602 }
12603
12604 PipelineViewportWScalingStateCreateInfoNV& operator=( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
12605 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012606 memcpy( this, &rhs, sizeof( PipelineViewportWScalingStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070012607 return *this;
12608 }
Mark Young0f183a82017-02-28 09:58:04 -070012609 PipelineViewportWScalingStateCreateInfoNV& setPNext( const void* pNext_ )
12610 {
12611 pNext = pNext_;
12612 return *this;
12613 }
12614
12615 PipelineViewportWScalingStateCreateInfoNV& setViewportWScalingEnable( Bool32 viewportWScalingEnable_ )
12616 {
12617 viewportWScalingEnable = viewportWScalingEnable_;
12618 return *this;
12619 }
12620
12621 PipelineViewportWScalingStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
12622 {
12623 viewportCount = viewportCount_;
12624 return *this;
12625 }
12626
12627 PipelineViewportWScalingStateCreateInfoNV& setPViewportWScalings( const ViewportWScalingNV* pViewportWScalings_ )
12628 {
12629 pViewportWScalings = pViewportWScalings_;
12630 return *this;
12631 }
12632
12633 operator const VkPipelineViewportWScalingStateCreateInfoNV&() const
12634 {
12635 return *reinterpret_cast<const VkPipelineViewportWScalingStateCreateInfoNV*>(this);
12636 }
12637
12638 bool operator==( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
12639 {
12640 return ( sType == rhs.sType )
12641 && ( pNext == rhs.pNext )
12642 && ( viewportWScalingEnable == rhs.viewportWScalingEnable )
12643 && ( viewportCount == rhs.viewportCount )
12644 && ( pViewportWScalings == rhs.pViewportWScalings );
12645 }
12646
12647 bool operator!=( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
12648 {
12649 return !operator==( rhs );
12650 }
12651
12652 private:
12653 StructureType sType;
12654
12655 public:
12656 const void* pNext;
12657 Bool32 viewportWScalingEnable;
12658 uint32_t viewportCount;
12659 const ViewportWScalingNV* pViewportWScalings;
12660 };
12661 static_assert( sizeof( PipelineViewportWScalingStateCreateInfoNV ) == sizeof( VkPipelineViewportWScalingStateCreateInfoNV ), "struct and wrapper have different size!" );
12662
12663 struct PhysicalDeviceDiscardRectanglePropertiesEXT
12664 {
12665 PhysicalDeviceDiscardRectanglePropertiesEXT( uint32_t maxDiscardRectangles_ = 0 )
12666 : sType( StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT )
12667 , pNext( nullptr )
12668 , maxDiscardRectangles( maxDiscardRectangles_ )
12669 {
12670 }
12671
12672 PhysicalDeviceDiscardRectanglePropertiesEXT( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
12673 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012674 memcpy( this, &rhs, sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070012675 }
12676
12677 PhysicalDeviceDiscardRectanglePropertiesEXT& operator=( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
12678 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012679 memcpy( this, &rhs, sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070012680 return *this;
12681 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -060012682 PhysicalDeviceDiscardRectanglePropertiesEXT& setPNext( void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070012683 {
12684 pNext = pNext_;
12685 return *this;
12686 }
12687
12688 PhysicalDeviceDiscardRectanglePropertiesEXT& setMaxDiscardRectangles( uint32_t maxDiscardRectangles_ )
12689 {
12690 maxDiscardRectangles = maxDiscardRectangles_;
12691 return *this;
12692 }
12693
12694 operator const VkPhysicalDeviceDiscardRectanglePropertiesEXT&() const
12695 {
12696 return *reinterpret_cast<const VkPhysicalDeviceDiscardRectanglePropertiesEXT*>(this);
12697 }
12698
12699 bool operator==( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
12700 {
12701 return ( sType == rhs.sType )
12702 && ( pNext == rhs.pNext )
12703 && ( maxDiscardRectangles == rhs.maxDiscardRectangles );
12704 }
12705
12706 bool operator!=( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
12707 {
12708 return !operator==( rhs );
12709 }
12710
12711 private:
12712 StructureType sType;
12713
12714 public:
Mark Lobodzinski3289d762017-04-03 08:22:04 -060012715 void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070012716 uint32_t maxDiscardRectangles;
12717 };
12718 static_assert( sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) == sizeof( VkPhysicalDeviceDiscardRectanglePropertiesEXT ), "struct and wrapper have different size!" );
12719
12720 struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
12721 {
12722 operator const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX&() const
12723 {
12724 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX*>(this);
12725 }
12726
12727 bool operator==( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
12728 {
12729 return ( sType == rhs.sType )
12730 && ( pNext == rhs.pNext )
12731 && ( perViewPositionAllComponents == rhs.perViewPositionAllComponents );
12732 }
12733
12734 bool operator!=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
12735 {
12736 return !operator==( rhs );
12737 }
12738
12739 private:
12740 StructureType sType;
12741
12742 public:
12743 void* pNext;
12744 Bool32 perViewPositionAllComponents;
12745 };
12746 static_assert( sizeof( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ) == sizeof( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ), "struct and wrapper have different size!" );
12747
Mark Lobodzinski54385432017-05-15 10:27:52 -060012748 struct PhysicalDeviceSurfaceInfo2KHR
12749 {
12750 PhysicalDeviceSurfaceInfo2KHR( SurfaceKHR surface_ = SurfaceKHR() )
12751 : sType( StructureType::ePhysicalDeviceSurfaceInfo2KHR )
12752 , pNext( nullptr )
12753 , surface( surface_ )
12754 {
12755 }
12756
12757 PhysicalDeviceSurfaceInfo2KHR( VkPhysicalDeviceSurfaceInfo2KHR const & rhs )
12758 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012759 memcpy( this, &rhs, sizeof( PhysicalDeviceSurfaceInfo2KHR ) );
Mark Lobodzinski54385432017-05-15 10:27:52 -060012760 }
12761
12762 PhysicalDeviceSurfaceInfo2KHR& operator=( VkPhysicalDeviceSurfaceInfo2KHR const & rhs )
12763 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012764 memcpy( this, &rhs, sizeof( PhysicalDeviceSurfaceInfo2KHR ) );
Mark Lobodzinski54385432017-05-15 10:27:52 -060012765 return *this;
12766 }
Mark Lobodzinski54385432017-05-15 10:27:52 -060012767 PhysicalDeviceSurfaceInfo2KHR& setPNext( const void* pNext_ )
12768 {
12769 pNext = pNext_;
12770 return *this;
12771 }
12772
12773 PhysicalDeviceSurfaceInfo2KHR& setSurface( SurfaceKHR surface_ )
12774 {
12775 surface = surface_;
12776 return *this;
12777 }
12778
12779 operator const VkPhysicalDeviceSurfaceInfo2KHR&() const
12780 {
12781 return *reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>(this);
12782 }
12783
12784 bool operator==( PhysicalDeviceSurfaceInfo2KHR const& rhs ) const
12785 {
12786 return ( sType == rhs.sType )
12787 && ( pNext == rhs.pNext )
12788 && ( surface == rhs.surface );
12789 }
12790
12791 bool operator!=( PhysicalDeviceSurfaceInfo2KHR const& rhs ) const
12792 {
12793 return !operator==( rhs );
12794 }
12795
12796 private:
12797 StructureType sType;
12798
12799 public:
12800 const void* pNext;
12801 SurfaceKHR surface;
12802 };
12803 static_assert( sizeof( PhysicalDeviceSurfaceInfo2KHR ) == sizeof( VkPhysicalDeviceSurfaceInfo2KHR ), "struct and wrapper have different size!" );
12804
Mark Youngabc2d6e2017-07-07 07:59:56 -060012805 struct PhysicalDevice16BitStorageFeaturesKHR
12806 {
12807 PhysicalDevice16BitStorageFeaturesKHR( Bool32 storageBuffer16BitAccess_ = 0, Bool32 uniformAndStorageBuffer16BitAccess_ = 0, Bool32 storagePushConstant16_ = 0, Bool32 storageInputOutput16_ = 0 )
12808 : sType( StructureType::ePhysicalDevice16BitStorageFeaturesKHR )
12809 , pNext( nullptr )
12810 , storageBuffer16BitAccess( storageBuffer16BitAccess_ )
12811 , uniformAndStorageBuffer16BitAccess( uniformAndStorageBuffer16BitAccess_ )
12812 , storagePushConstant16( storagePushConstant16_ )
12813 , storageInputOutput16( storageInputOutput16_ )
12814 {
12815 }
12816
12817 PhysicalDevice16BitStorageFeaturesKHR( VkPhysicalDevice16BitStorageFeaturesKHR const & rhs )
12818 {
12819 memcpy( this, &rhs, sizeof( PhysicalDevice16BitStorageFeaturesKHR ) );
12820 }
12821
12822 PhysicalDevice16BitStorageFeaturesKHR& operator=( VkPhysicalDevice16BitStorageFeaturesKHR const & rhs )
12823 {
12824 memcpy( this, &rhs, sizeof( PhysicalDevice16BitStorageFeaturesKHR ) );
12825 return *this;
12826 }
12827 PhysicalDevice16BitStorageFeaturesKHR& setPNext( void* pNext_ )
12828 {
12829 pNext = pNext_;
12830 return *this;
12831 }
12832
12833 PhysicalDevice16BitStorageFeaturesKHR& setStorageBuffer16BitAccess( Bool32 storageBuffer16BitAccess_ )
12834 {
12835 storageBuffer16BitAccess = storageBuffer16BitAccess_;
12836 return *this;
12837 }
12838
12839 PhysicalDevice16BitStorageFeaturesKHR& setUniformAndStorageBuffer16BitAccess( Bool32 uniformAndStorageBuffer16BitAccess_ )
12840 {
12841 uniformAndStorageBuffer16BitAccess = uniformAndStorageBuffer16BitAccess_;
12842 return *this;
12843 }
12844
12845 PhysicalDevice16BitStorageFeaturesKHR& setStoragePushConstant16( Bool32 storagePushConstant16_ )
12846 {
12847 storagePushConstant16 = storagePushConstant16_;
12848 return *this;
12849 }
12850
12851 PhysicalDevice16BitStorageFeaturesKHR& setStorageInputOutput16( Bool32 storageInputOutput16_ )
12852 {
12853 storageInputOutput16 = storageInputOutput16_;
12854 return *this;
12855 }
12856
12857 operator const VkPhysicalDevice16BitStorageFeaturesKHR&() const
12858 {
12859 return *reinterpret_cast<const VkPhysicalDevice16BitStorageFeaturesKHR*>(this);
12860 }
12861
12862 bool operator==( PhysicalDevice16BitStorageFeaturesKHR const& rhs ) const
12863 {
12864 return ( sType == rhs.sType )
12865 && ( pNext == rhs.pNext )
12866 && ( storageBuffer16BitAccess == rhs.storageBuffer16BitAccess )
12867 && ( uniformAndStorageBuffer16BitAccess == rhs.uniformAndStorageBuffer16BitAccess )
12868 && ( storagePushConstant16 == rhs.storagePushConstant16 )
12869 && ( storageInputOutput16 == rhs.storageInputOutput16 );
12870 }
12871
12872 bool operator!=( PhysicalDevice16BitStorageFeaturesKHR const& rhs ) const
12873 {
12874 return !operator==( rhs );
12875 }
12876
12877 private:
12878 StructureType sType;
12879
12880 public:
12881 void* pNext;
12882 Bool32 storageBuffer16BitAccess;
12883 Bool32 uniformAndStorageBuffer16BitAccess;
12884 Bool32 storagePushConstant16;
12885 Bool32 storageInputOutput16;
12886 };
12887 static_assert( sizeof( PhysicalDevice16BitStorageFeaturesKHR ) == sizeof( VkPhysicalDevice16BitStorageFeaturesKHR ), "struct and wrapper have different size!" );
12888
12889 struct BufferMemoryRequirementsInfo2KHR
12890 {
12891 BufferMemoryRequirementsInfo2KHR( Buffer buffer_ = Buffer() )
12892 : sType( StructureType::eBufferMemoryRequirementsInfo2KHR )
12893 , pNext( nullptr )
12894 , buffer( buffer_ )
12895 {
12896 }
12897
12898 BufferMemoryRequirementsInfo2KHR( VkBufferMemoryRequirementsInfo2KHR const & rhs )
12899 {
12900 memcpy( this, &rhs, sizeof( BufferMemoryRequirementsInfo2KHR ) );
12901 }
12902
12903 BufferMemoryRequirementsInfo2KHR& operator=( VkBufferMemoryRequirementsInfo2KHR const & rhs )
12904 {
12905 memcpy( this, &rhs, sizeof( BufferMemoryRequirementsInfo2KHR ) );
12906 return *this;
12907 }
12908 BufferMemoryRequirementsInfo2KHR& setPNext( const void* pNext_ )
12909 {
12910 pNext = pNext_;
12911 return *this;
12912 }
12913
12914 BufferMemoryRequirementsInfo2KHR& setBuffer( Buffer buffer_ )
12915 {
12916 buffer = buffer_;
12917 return *this;
12918 }
12919
12920 operator const VkBufferMemoryRequirementsInfo2KHR&() const
12921 {
12922 return *reinterpret_cast<const VkBufferMemoryRequirementsInfo2KHR*>(this);
12923 }
12924
12925 bool operator==( BufferMemoryRequirementsInfo2KHR const& rhs ) const
12926 {
12927 return ( sType == rhs.sType )
12928 && ( pNext == rhs.pNext )
12929 && ( buffer == rhs.buffer );
12930 }
12931
12932 bool operator!=( BufferMemoryRequirementsInfo2KHR const& rhs ) const
12933 {
12934 return !operator==( rhs );
12935 }
12936
12937 private:
12938 StructureType sType;
12939
12940 public:
12941 const void* pNext;
12942 Buffer buffer;
12943 };
12944 static_assert( sizeof( BufferMemoryRequirementsInfo2KHR ) == sizeof( VkBufferMemoryRequirementsInfo2KHR ), "struct and wrapper have different size!" );
12945
12946 struct ImageMemoryRequirementsInfo2KHR
12947 {
12948 ImageMemoryRequirementsInfo2KHR( Image image_ = Image() )
12949 : sType( StructureType::eImageMemoryRequirementsInfo2KHR )
12950 , pNext( nullptr )
12951 , image( image_ )
12952 {
12953 }
12954
12955 ImageMemoryRequirementsInfo2KHR( VkImageMemoryRequirementsInfo2KHR const & rhs )
12956 {
12957 memcpy( this, &rhs, sizeof( ImageMemoryRequirementsInfo2KHR ) );
12958 }
12959
12960 ImageMemoryRequirementsInfo2KHR& operator=( VkImageMemoryRequirementsInfo2KHR const & rhs )
12961 {
12962 memcpy( this, &rhs, sizeof( ImageMemoryRequirementsInfo2KHR ) );
12963 return *this;
12964 }
12965 ImageMemoryRequirementsInfo2KHR& setPNext( const void* pNext_ )
12966 {
12967 pNext = pNext_;
12968 return *this;
12969 }
12970
12971 ImageMemoryRequirementsInfo2KHR& setImage( Image image_ )
12972 {
12973 image = image_;
12974 return *this;
12975 }
12976
12977 operator const VkImageMemoryRequirementsInfo2KHR&() const
12978 {
12979 return *reinterpret_cast<const VkImageMemoryRequirementsInfo2KHR*>(this);
12980 }
12981
12982 bool operator==( ImageMemoryRequirementsInfo2KHR const& rhs ) const
12983 {
12984 return ( sType == rhs.sType )
12985 && ( pNext == rhs.pNext )
12986 && ( image == rhs.image );
12987 }
12988
12989 bool operator!=( ImageMemoryRequirementsInfo2KHR const& rhs ) const
12990 {
12991 return !operator==( rhs );
12992 }
12993
12994 private:
12995 StructureType sType;
12996
12997 public:
12998 const void* pNext;
12999 Image image;
13000 };
13001 static_assert( sizeof( ImageMemoryRequirementsInfo2KHR ) == sizeof( VkImageMemoryRequirementsInfo2KHR ), "struct and wrapper have different size!" );
13002
13003 struct ImageSparseMemoryRequirementsInfo2KHR
13004 {
13005 ImageSparseMemoryRequirementsInfo2KHR( Image image_ = Image() )
13006 : sType( StructureType::eImageSparseMemoryRequirementsInfo2KHR )
13007 , pNext( nullptr )
13008 , image( image_ )
13009 {
13010 }
13011
13012 ImageSparseMemoryRequirementsInfo2KHR( VkImageSparseMemoryRequirementsInfo2KHR const & rhs )
13013 {
13014 memcpy( this, &rhs, sizeof( ImageSparseMemoryRequirementsInfo2KHR ) );
13015 }
13016
13017 ImageSparseMemoryRequirementsInfo2KHR& operator=( VkImageSparseMemoryRequirementsInfo2KHR const & rhs )
13018 {
13019 memcpy( this, &rhs, sizeof( ImageSparseMemoryRequirementsInfo2KHR ) );
13020 return *this;
13021 }
13022 ImageSparseMemoryRequirementsInfo2KHR& setPNext( const void* pNext_ )
13023 {
13024 pNext = pNext_;
13025 return *this;
13026 }
13027
13028 ImageSparseMemoryRequirementsInfo2KHR& setImage( Image image_ )
13029 {
13030 image = image_;
13031 return *this;
13032 }
13033
13034 operator const VkImageSparseMemoryRequirementsInfo2KHR&() const
13035 {
13036 return *reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2KHR*>(this);
13037 }
13038
13039 bool operator==( ImageSparseMemoryRequirementsInfo2KHR const& rhs ) const
13040 {
13041 return ( sType == rhs.sType )
13042 && ( pNext == rhs.pNext )
13043 && ( image == rhs.image );
13044 }
13045
13046 bool operator!=( ImageSparseMemoryRequirementsInfo2KHR 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( ImageSparseMemoryRequirementsInfo2KHR ) == sizeof( VkImageSparseMemoryRequirementsInfo2KHR ), "struct and wrapper have different size!" );
13059
13060 struct MemoryRequirements2KHR
13061 {
13062 operator const VkMemoryRequirements2KHR&() const
13063 {
13064 return *reinterpret_cast<const VkMemoryRequirements2KHR*>(this);
13065 }
13066
13067 bool operator==( MemoryRequirements2KHR const& rhs ) const
13068 {
13069 return ( sType == rhs.sType )
13070 && ( pNext == rhs.pNext )
13071 && ( memoryRequirements == rhs.memoryRequirements );
13072 }
13073
13074 bool operator!=( MemoryRequirements2KHR const& rhs ) const
13075 {
13076 return !operator==( rhs );
13077 }
13078
13079 private:
13080 StructureType sType;
13081
13082 public:
13083 void* pNext;
13084 MemoryRequirements memoryRequirements;
13085 };
13086 static_assert( sizeof( MemoryRequirements2KHR ) == sizeof( VkMemoryRequirements2KHR ), "struct and wrapper have different size!" );
13087
13088 struct MemoryDedicatedRequirementsKHR
13089 {
13090 operator const VkMemoryDedicatedRequirementsKHR&() const
13091 {
13092 return *reinterpret_cast<const VkMemoryDedicatedRequirementsKHR*>(this);
13093 }
13094
13095 bool operator==( MemoryDedicatedRequirementsKHR const& rhs ) const
13096 {
13097 return ( sType == rhs.sType )
13098 && ( pNext == rhs.pNext )
13099 && ( prefersDedicatedAllocation == rhs.prefersDedicatedAllocation )
13100 && ( requiresDedicatedAllocation == rhs.requiresDedicatedAllocation );
13101 }
13102
13103 bool operator!=( MemoryDedicatedRequirementsKHR const& rhs ) const
13104 {
13105 return !operator==( rhs );
13106 }
13107
13108 private:
13109 StructureType sType;
13110
13111 public:
13112 void* pNext;
13113 Bool32 prefersDedicatedAllocation;
13114 Bool32 requiresDedicatedAllocation;
13115 };
13116 static_assert( sizeof( MemoryDedicatedRequirementsKHR ) == sizeof( VkMemoryDedicatedRequirementsKHR ), "struct and wrapper have different size!" );
13117
13118 struct MemoryDedicatedAllocateInfoKHR
13119 {
13120 MemoryDedicatedAllocateInfoKHR( Image image_ = Image(), Buffer buffer_ = Buffer() )
13121 : sType( StructureType::eMemoryDedicatedAllocateInfoKHR )
13122 , pNext( nullptr )
13123 , image( image_ )
13124 , buffer( buffer_ )
13125 {
13126 }
13127
13128 MemoryDedicatedAllocateInfoKHR( VkMemoryDedicatedAllocateInfoKHR const & rhs )
13129 {
13130 memcpy( this, &rhs, sizeof( MemoryDedicatedAllocateInfoKHR ) );
13131 }
13132
13133 MemoryDedicatedAllocateInfoKHR& operator=( VkMemoryDedicatedAllocateInfoKHR const & rhs )
13134 {
13135 memcpy( this, &rhs, sizeof( MemoryDedicatedAllocateInfoKHR ) );
13136 return *this;
13137 }
13138 MemoryDedicatedAllocateInfoKHR& setPNext( const void* pNext_ )
13139 {
13140 pNext = pNext_;
13141 return *this;
13142 }
13143
13144 MemoryDedicatedAllocateInfoKHR& setImage( Image image_ )
13145 {
13146 image = image_;
13147 return *this;
13148 }
13149
13150 MemoryDedicatedAllocateInfoKHR& setBuffer( Buffer buffer_ )
13151 {
13152 buffer = buffer_;
13153 return *this;
13154 }
13155
13156 operator const VkMemoryDedicatedAllocateInfoKHR&() const
13157 {
13158 return *reinterpret_cast<const VkMemoryDedicatedAllocateInfoKHR*>(this);
13159 }
13160
13161 bool operator==( MemoryDedicatedAllocateInfoKHR const& rhs ) const
13162 {
13163 return ( sType == rhs.sType )
13164 && ( pNext == rhs.pNext )
13165 && ( image == rhs.image )
13166 && ( buffer == rhs.buffer );
13167 }
13168
13169 bool operator!=( MemoryDedicatedAllocateInfoKHR const& rhs ) const
13170 {
13171 return !operator==( rhs );
13172 }
13173
13174 private:
13175 StructureType sType;
13176
13177 public:
13178 const void* pNext;
13179 Image image;
13180 Buffer buffer;
13181 };
13182 static_assert( sizeof( MemoryDedicatedAllocateInfoKHR ) == sizeof( VkMemoryDedicatedAllocateInfoKHR ), "struct and wrapper have different size!" );
13183
Lenny Komowb79f04a2017-09-18 17:07:00 -060013184 struct SamplerYcbcrConversionInfoKHR
13185 {
13186 SamplerYcbcrConversionInfoKHR( SamplerYcbcrConversionKHR conversion_ = SamplerYcbcrConversionKHR() )
13187 : sType( StructureType::eSamplerYcbcrConversionInfoKHR )
13188 , pNext( nullptr )
13189 , conversion( conversion_ )
13190 {
13191 }
13192
13193 SamplerYcbcrConversionInfoKHR( VkSamplerYcbcrConversionInfoKHR const & rhs )
13194 {
13195 memcpy( this, &rhs, sizeof( SamplerYcbcrConversionInfoKHR ) );
13196 }
13197
13198 SamplerYcbcrConversionInfoKHR& operator=( VkSamplerYcbcrConversionInfoKHR const & rhs )
13199 {
13200 memcpy( this, &rhs, sizeof( SamplerYcbcrConversionInfoKHR ) );
13201 return *this;
13202 }
13203 SamplerYcbcrConversionInfoKHR& setPNext( const void* pNext_ )
13204 {
13205 pNext = pNext_;
13206 return *this;
13207 }
13208
13209 SamplerYcbcrConversionInfoKHR& setConversion( SamplerYcbcrConversionKHR conversion_ )
13210 {
13211 conversion = conversion_;
13212 return *this;
13213 }
13214
13215 operator const VkSamplerYcbcrConversionInfoKHR&() const
13216 {
13217 return *reinterpret_cast<const VkSamplerYcbcrConversionInfoKHR*>(this);
13218 }
13219
13220 bool operator==( SamplerYcbcrConversionInfoKHR const& rhs ) const
13221 {
13222 return ( sType == rhs.sType )
13223 && ( pNext == rhs.pNext )
13224 && ( conversion == rhs.conversion );
13225 }
13226
13227 bool operator!=( SamplerYcbcrConversionInfoKHR const& rhs ) const
13228 {
13229 return !operator==( rhs );
13230 }
13231
13232 private:
13233 StructureType sType;
13234
13235 public:
13236 const void* pNext;
13237 SamplerYcbcrConversionKHR conversion;
13238 };
13239 static_assert( sizeof( SamplerYcbcrConversionInfoKHR ) == sizeof( VkSamplerYcbcrConversionInfoKHR ), "struct and wrapper have different size!" );
13240
13241 struct PhysicalDeviceSamplerYcbcrConversionFeaturesKHR
13242 {
13243 PhysicalDeviceSamplerYcbcrConversionFeaturesKHR( Bool32 samplerYcbcrConversion_ = 0 )
13244 : sType( StructureType::ePhysicalDeviceSamplerYcbcrConversionFeaturesKHR )
13245 , pNext( nullptr )
13246 , samplerYcbcrConversion( samplerYcbcrConversion_ )
13247 {
13248 }
13249
13250 PhysicalDeviceSamplerYcbcrConversionFeaturesKHR( VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR const & rhs )
13251 {
13252 memcpy( this, &rhs, sizeof( PhysicalDeviceSamplerYcbcrConversionFeaturesKHR ) );
13253 }
13254
13255 PhysicalDeviceSamplerYcbcrConversionFeaturesKHR& operator=( VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR const & rhs )
13256 {
13257 memcpy( this, &rhs, sizeof( PhysicalDeviceSamplerYcbcrConversionFeaturesKHR ) );
13258 return *this;
13259 }
13260 PhysicalDeviceSamplerYcbcrConversionFeaturesKHR& setPNext( void* pNext_ )
13261 {
13262 pNext = pNext_;
13263 return *this;
13264 }
13265
13266 PhysicalDeviceSamplerYcbcrConversionFeaturesKHR& setSamplerYcbcrConversion( Bool32 samplerYcbcrConversion_ )
13267 {
13268 samplerYcbcrConversion = samplerYcbcrConversion_;
13269 return *this;
13270 }
13271
13272 operator const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR&() const
13273 {
13274 return *reinterpret_cast<const VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR*>(this);
13275 }
13276
13277 bool operator==( PhysicalDeviceSamplerYcbcrConversionFeaturesKHR const& rhs ) const
13278 {
13279 return ( sType == rhs.sType )
13280 && ( pNext == rhs.pNext )
13281 && ( samplerYcbcrConversion == rhs.samplerYcbcrConversion );
13282 }
13283
13284 bool operator!=( PhysicalDeviceSamplerYcbcrConversionFeaturesKHR const& rhs ) const
13285 {
13286 return !operator==( rhs );
13287 }
13288
13289 private:
13290 StructureType sType;
13291
13292 public:
13293 void* pNext;
13294 Bool32 samplerYcbcrConversion;
13295 };
13296 static_assert( sizeof( PhysicalDeviceSamplerYcbcrConversionFeaturesKHR ) == sizeof( VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR ), "struct and wrapper have different size!" );
13297
13298 struct SamplerYcbcrConversionImageFormatPropertiesKHR
13299 {
13300 operator const VkSamplerYcbcrConversionImageFormatPropertiesKHR&() const
13301 {
13302 return *reinterpret_cast<const VkSamplerYcbcrConversionImageFormatPropertiesKHR*>(this);
13303 }
13304
13305 bool operator==( SamplerYcbcrConversionImageFormatPropertiesKHR const& rhs ) const
13306 {
13307 return ( sType == rhs.sType )
13308 && ( pNext == rhs.pNext )
13309 && ( combinedImageSamplerDescriptorCount == rhs.combinedImageSamplerDescriptorCount );
13310 }
13311
13312 bool operator!=( SamplerYcbcrConversionImageFormatPropertiesKHR const& rhs ) const
13313 {
13314 return !operator==( rhs );
13315 }
13316
13317 private:
13318 StructureType sType;
13319
13320 public:
13321 void* pNext;
13322 uint32_t combinedImageSamplerDescriptorCount;
13323 };
13324 static_assert( sizeof( SamplerYcbcrConversionImageFormatPropertiesKHR ) == sizeof( VkSamplerYcbcrConversionImageFormatPropertiesKHR ), "struct and wrapper have different size!" );
13325
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013326 struct TextureLODGatherFormatPropertiesAMD
13327 {
13328 operator const VkTextureLODGatherFormatPropertiesAMD&() const
13329 {
13330 return *reinterpret_cast<const VkTextureLODGatherFormatPropertiesAMD*>(this);
13331 }
13332
13333 bool operator==( TextureLODGatherFormatPropertiesAMD const& rhs ) const
13334 {
13335 return ( sType == rhs.sType )
13336 && ( pNext == rhs.pNext )
13337 && ( supportsTextureGatherLODBiasAMD == rhs.supportsTextureGatherLODBiasAMD );
13338 }
13339
13340 bool operator!=( TextureLODGatherFormatPropertiesAMD const& rhs ) const
13341 {
13342 return !operator==( rhs );
13343 }
13344
13345 private:
13346 StructureType sType;
13347
13348 public:
13349 void* pNext;
13350 Bool32 supportsTextureGatherLODBiasAMD;
13351 };
13352 static_assert( sizeof( TextureLODGatherFormatPropertiesAMD ) == sizeof( VkTextureLODGatherFormatPropertiesAMD ), "struct and wrapper have different size!" );
13353
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060013354 struct PipelineCoverageToColorStateCreateInfoNV
13355 {
13356 PipelineCoverageToColorStateCreateInfoNV( PipelineCoverageToColorStateCreateFlagsNV flags_ = PipelineCoverageToColorStateCreateFlagsNV(), Bool32 coverageToColorEnable_ = 0, uint32_t coverageToColorLocation_ = 0 )
13357 : sType( StructureType::ePipelineCoverageToColorStateCreateInfoNV )
13358 , pNext( nullptr )
13359 , flags( flags_ )
13360 , coverageToColorEnable( coverageToColorEnable_ )
13361 , coverageToColorLocation( coverageToColorLocation_ )
13362 {
13363 }
13364
13365 PipelineCoverageToColorStateCreateInfoNV( VkPipelineCoverageToColorStateCreateInfoNV const & rhs )
13366 {
13367 memcpy( this, &rhs, sizeof( PipelineCoverageToColorStateCreateInfoNV ) );
13368 }
13369
13370 PipelineCoverageToColorStateCreateInfoNV& operator=( VkPipelineCoverageToColorStateCreateInfoNV const & rhs )
13371 {
13372 memcpy( this, &rhs, sizeof( PipelineCoverageToColorStateCreateInfoNV ) );
13373 return *this;
13374 }
13375 PipelineCoverageToColorStateCreateInfoNV& setPNext( const void* pNext_ )
13376 {
13377 pNext = pNext_;
13378 return *this;
13379 }
13380
13381 PipelineCoverageToColorStateCreateInfoNV& setFlags( PipelineCoverageToColorStateCreateFlagsNV flags_ )
13382 {
13383 flags = flags_;
13384 return *this;
13385 }
13386
13387 PipelineCoverageToColorStateCreateInfoNV& setCoverageToColorEnable( Bool32 coverageToColorEnable_ )
13388 {
13389 coverageToColorEnable = coverageToColorEnable_;
13390 return *this;
13391 }
13392
13393 PipelineCoverageToColorStateCreateInfoNV& setCoverageToColorLocation( uint32_t coverageToColorLocation_ )
13394 {
13395 coverageToColorLocation = coverageToColorLocation_;
13396 return *this;
13397 }
13398
13399 operator const VkPipelineCoverageToColorStateCreateInfoNV&() const
13400 {
13401 return *reinterpret_cast<const VkPipelineCoverageToColorStateCreateInfoNV*>(this);
13402 }
13403
13404 bool operator==( PipelineCoverageToColorStateCreateInfoNV const& rhs ) const
13405 {
13406 return ( sType == rhs.sType )
13407 && ( pNext == rhs.pNext )
13408 && ( flags == rhs.flags )
13409 && ( coverageToColorEnable == rhs.coverageToColorEnable )
13410 && ( coverageToColorLocation == rhs.coverageToColorLocation );
13411 }
13412
13413 bool operator!=( PipelineCoverageToColorStateCreateInfoNV const& rhs ) const
13414 {
13415 return !operator==( rhs );
13416 }
13417
13418 private:
13419 StructureType sType;
13420
13421 public:
13422 const void* pNext;
13423 PipelineCoverageToColorStateCreateFlagsNV flags;
13424 Bool32 coverageToColorEnable;
13425 uint32_t coverageToColorLocation;
13426 };
13427 static_assert( sizeof( PipelineCoverageToColorStateCreateInfoNV ) == sizeof( VkPipelineCoverageToColorStateCreateInfoNV ), "struct and wrapper have different size!" );
13428
13429 struct PhysicalDeviceSamplerFilterMinmaxPropertiesEXT
13430 {
13431 operator const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT&() const
13432 {
13433 return *reinterpret_cast<const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT*>(this);
13434 }
13435
13436 bool operator==( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT const& rhs ) const
13437 {
13438 return ( sType == rhs.sType )
13439 && ( pNext == rhs.pNext )
13440 && ( filterMinmaxSingleComponentFormats == rhs.filterMinmaxSingleComponentFormats )
13441 && ( filterMinmaxImageComponentMapping == rhs.filterMinmaxImageComponentMapping );
13442 }
13443
13444 bool operator!=( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT const& rhs ) const
13445 {
13446 return !operator==( rhs );
13447 }
13448
13449 private:
13450 StructureType sType;
13451
13452 public:
13453 void* pNext;
13454 Bool32 filterMinmaxSingleComponentFormats;
13455 Bool32 filterMinmaxImageComponentMapping;
13456 };
13457 static_assert( sizeof( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT ) == sizeof( VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT ), "struct and wrapper have different size!" );
13458
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060013459 struct MultisamplePropertiesEXT
13460 {
13461 operator const VkMultisamplePropertiesEXT&() const
13462 {
13463 return *reinterpret_cast<const VkMultisamplePropertiesEXT*>(this);
13464 }
13465
13466 bool operator==( MultisamplePropertiesEXT const& rhs ) const
13467 {
13468 return ( sType == rhs.sType )
13469 && ( pNext == rhs.pNext )
13470 && ( maxSampleLocationGridSize == rhs.maxSampleLocationGridSize );
13471 }
13472
13473 bool operator!=( MultisamplePropertiesEXT const& rhs ) const
13474 {
13475 return !operator==( rhs );
13476 }
13477
13478 private:
13479 StructureType sType;
13480
13481 public:
13482 void* pNext;
13483 Extent2D maxSampleLocationGridSize;
13484 };
13485 static_assert( sizeof( MultisamplePropertiesEXT ) == sizeof( VkMultisamplePropertiesEXT ), "struct and wrapper have different size!" );
13486
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060013487 struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT
13488 {
13489 PhysicalDeviceBlendOperationAdvancedFeaturesEXT( Bool32 advancedBlendCoherentOperations_ = 0 )
13490 : sType( StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT )
13491 , pNext( nullptr )
13492 , advancedBlendCoherentOperations( advancedBlendCoherentOperations_ )
13493 {
13494 }
13495
13496 PhysicalDeviceBlendOperationAdvancedFeaturesEXT( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs )
13497 {
13498 memcpy( this, &rhs, sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) );
13499 }
13500
13501 PhysicalDeviceBlendOperationAdvancedFeaturesEXT& operator=( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs )
13502 {
13503 memcpy( this, &rhs, sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) );
13504 return *this;
13505 }
13506 PhysicalDeviceBlendOperationAdvancedFeaturesEXT& setPNext( void* pNext_ )
13507 {
13508 pNext = pNext_;
13509 return *this;
13510 }
13511
13512 PhysicalDeviceBlendOperationAdvancedFeaturesEXT& setAdvancedBlendCoherentOperations( Bool32 advancedBlendCoherentOperations_ )
13513 {
13514 advancedBlendCoherentOperations = advancedBlendCoherentOperations_;
13515 return *this;
13516 }
13517
13518 operator const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT&() const
13519 {
13520 return *reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT*>(this);
13521 }
13522
13523 bool operator==( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const& rhs ) const
13524 {
13525 return ( sType == rhs.sType )
13526 && ( pNext == rhs.pNext )
13527 && ( advancedBlendCoherentOperations == rhs.advancedBlendCoherentOperations );
13528 }
13529
13530 bool operator!=( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const& rhs ) const
13531 {
13532 return !operator==( rhs );
13533 }
13534
13535 private:
13536 StructureType sType;
13537
13538 public:
13539 void* pNext;
13540 Bool32 advancedBlendCoherentOperations;
13541 };
13542 static_assert( sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) == sizeof( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT ), "struct and wrapper have different size!" );
13543
13544 struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT
13545 {
13546 operator const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT&() const
13547 {
13548 return *reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT*>(this);
13549 }
13550
13551 bool operator==( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const& rhs ) const
13552 {
13553 return ( sType == rhs.sType )
13554 && ( pNext == rhs.pNext )
13555 && ( advancedBlendMaxColorAttachments == rhs.advancedBlendMaxColorAttachments )
13556 && ( advancedBlendIndependentBlend == rhs.advancedBlendIndependentBlend )
13557 && ( advancedBlendNonPremultipliedSrcColor == rhs.advancedBlendNonPremultipliedSrcColor )
13558 && ( advancedBlendNonPremultipliedDstColor == rhs.advancedBlendNonPremultipliedDstColor )
13559 && ( advancedBlendCorrelatedOverlap == rhs.advancedBlendCorrelatedOverlap )
13560 && ( advancedBlendAllOperations == rhs.advancedBlendAllOperations );
13561 }
13562
13563 bool operator!=( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const& rhs ) const
13564 {
13565 return !operator==( rhs );
13566 }
13567
13568 private:
13569 StructureType sType;
13570
13571 public:
13572 void* pNext;
13573 uint32_t advancedBlendMaxColorAttachments;
13574 Bool32 advancedBlendIndependentBlend;
13575 Bool32 advancedBlendNonPremultipliedSrcColor;
13576 Bool32 advancedBlendNonPremultipliedDstColor;
13577 Bool32 advancedBlendCorrelatedOverlap;
13578 Bool32 advancedBlendAllOperations;
13579 };
13580 static_assert( sizeof( PhysicalDeviceBlendOperationAdvancedPropertiesEXT ) == sizeof( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT ), "struct and wrapper have different size!" );
13581
Lenny Komowb79f04a2017-09-18 17:07:00 -060013582 struct ImageFormatListCreateInfoKHR
13583 {
13584 ImageFormatListCreateInfoKHR( uint32_t viewFormatCount_ = 0, const Format* pViewFormats_ = nullptr )
13585 : sType( StructureType::eImageFormatListCreateInfoKHR )
13586 , pNext( nullptr )
13587 , viewFormatCount( viewFormatCount_ )
13588 , pViewFormats( pViewFormats_ )
13589 {
13590 }
13591
13592 ImageFormatListCreateInfoKHR( VkImageFormatListCreateInfoKHR const & rhs )
13593 {
13594 memcpy( this, &rhs, sizeof( ImageFormatListCreateInfoKHR ) );
13595 }
13596
13597 ImageFormatListCreateInfoKHR& operator=( VkImageFormatListCreateInfoKHR const & rhs )
13598 {
13599 memcpy( this, &rhs, sizeof( ImageFormatListCreateInfoKHR ) );
13600 return *this;
13601 }
13602 ImageFormatListCreateInfoKHR& setPNext( const void* pNext_ )
13603 {
13604 pNext = pNext_;
13605 return *this;
13606 }
13607
13608 ImageFormatListCreateInfoKHR& setViewFormatCount( uint32_t viewFormatCount_ )
13609 {
13610 viewFormatCount = viewFormatCount_;
13611 return *this;
13612 }
13613
13614 ImageFormatListCreateInfoKHR& setPViewFormats( const Format* pViewFormats_ )
13615 {
13616 pViewFormats = pViewFormats_;
13617 return *this;
13618 }
13619
13620 operator const VkImageFormatListCreateInfoKHR&() const
13621 {
13622 return *reinterpret_cast<const VkImageFormatListCreateInfoKHR*>(this);
13623 }
13624
13625 bool operator==( ImageFormatListCreateInfoKHR const& rhs ) const
13626 {
13627 return ( sType == rhs.sType )
13628 && ( pNext == rhs.pNext )
13629 && ( viewFormatCount == rhs.viewFormatCount )
13630 && ( pViewFormats == rhs.pViewFormats );
13631 }
13632
13633 bool operator!=( ImageFormatListCreateInfoKHR const& rhs ) const
13634 {
13635 return !operator==( rhs );
13636 }
13637
13638 private:
13639 StructureType sType;
13640
13641 public:
13642 const void* pNext;
13643 uint32_t viewFormatCount;
13644 const Format* pViewFormats;
13645 };
13646 static_assert( sizeof( ImageFormatListCreateInfoKHR ) == sizeof( VkImageFormatListCreateInfoKHR ), "struct and wrapper have different size!" );
13647
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060013648 struct ValidationCacheCreateInfoEXT
13649 {
13650 ValidationCacheCreateInfoEXT( ValidationCacheCreateFlagsEXT flags_ = ValidationCacheCreateFlagsEXT(), size_t initialDataSize_ = 0, const void* pInitialData_ = nullptr )
13651 : sType( StructureType::eValidationCacheCreateInfoEXT )
13652 , pNext( nullptr )
13653 , flags( flags_ )
13654 , initialDataSize( initialDataSize_ )
13655 , pInitialData( pInitialData_ )
13656 {
13657 }
13658
13659 ValidationCacheCreateInfoEXT( VkValidationCacheCreateInfoEXT const & rhs )
13660 {
13661 memcpy( this, &rhs, sizeof( ValidationCacheCreateInfoEXT ) );
13662 }
13663
13664 ValidationCacheCreateInfoEXT& operator=( VkValidationCacheCreateInfoEXT const & rhs )
13665 {
13666 memcpy( this, &rhs, sizeof( ValidationCacheCreateInfoEXT ) );
13667 return *this;
13668 }
13669 ValidationCacheCreateInfoEXT& setPNext( const void* pNext_ )
13670 {
13671 pNext = pNext_;
13672 return *this;
13673 }
13674
13675 ValidationCacheCreateInfoEXT& setFlags( ValidationCacheCreateFlagsEXT flags_ )
13676 {
13677 flags = flags_;
13678 return *this;
13679 }
13680
13681 ValidationCacheCreateInfoEXT& setInitialDataSize( size_t initialDataSize_ )
13682 {
13683 initialDataSize = initialDataSize_;
13684 return *this;
13685 }
13686
13687 ValidationCacheCreateInfoEXT& setPInitialData( const void* pInitialData_ )
13688 {
13689 pInitialData = pInitialData_;
13690 return *this;
13691 }
13692
13693 operator const VkValidationCacheCreateInfoEXT&() const
13694 {
13695 return *reinterpret_cast<const VkValidationCacheCreateInfoEXT*>(this);
13696 }
13697
13698 bool operator==( ValidationCacheCreateInfoEXT const& rhs ) const
13699 {
13700 return ( sType == rhs.sType )
13701 && ( pNext == rhs.pNext )
13702 && ( flags == rhs.flags )
13703 && ( initialDataSize == rhs.initialDataSize )
13704 && ( pInitialData == rhs.pInitialData );
13705 }
13706
13707 bool operator!=( ValidationCacheCreateInfoEXT const& rhs ) const
13708 {
13709 return !operator==( rhs );
13710 }
13711
13712 private:
13713 StructureType sType;
13714
13715 public:
13716 const void* pNext;
13717 ValidationCacheCreateFlagsEXT flags;
13718 size_t initialDataSize;
13719 const void* pInitialData;
13720 };
13721 static_assert( sizeof( ValidationCacheCreateInfoEXT ) == sizeof( VkValidationCacheCreateInfoEXT ), "struct and wrapper have different size!" );
13722
13723 struct ShaderModuleValidationCacheCreateInfoEXT
13724 {
13725 ShaderModuleValidationCacheCreateInfoEXT( ValidationCacheEXT validationCache_ = ValidationCacheEXT() )
13726 : sType( StructureType::eShaderModuleValidationCacheCreateInfoEXT )
13727 , pNext( nullptr )
13728 , validationCache( validationCache_ )
13729 {
13730 }
13731
13732 ShaderModuleValidationCacheCreateInfoEXT( VkShaderModuleValidationCacheCreateInfoEXT const & rhs )
13733 {
13734 memcpy( this, &rhs, sizeof( ShaderModuleValidationCacheCreateInfoEXT ) );
13735 }
13736
13737 ShaderModuleValidationCacheCreateInfoEXT& operator=( VkShaderModuleValidationCacheCreateInfoEXT const & rhs )
13738 {
13739 memcpy( this, &rhs, sizeof( ShaderModuleValidationCacheCreateInfoEXT ) );
13740 return *this;
13741 }
13742 ShaderModuleValidationCacheCreateInfoEXT& setPNext( const void* pNext_ )
13743 {
13744 pNext = pNext_;
13745 return *this;
13746 }
13747
13748 ShaderModuleValidationCacheCreateInfoEXT& setValidationCache( ValidationCacheEXT validationCache_ )
13749 {
13750 validationCache = validationCache_;
13751 return *this;
13752 }
13753
13754 operator const VkShaderModuleValidationCacheCreateInfoEXT&() const
13755 {
13756 return *reinterpret_cast<const VkShaderModuleValidationCacheCreateInfoEXT*>(this);
13757 }
13758
13759 bool operator==( ShaderModuleValidationCacheCreateInfoEXT const& rhs ) const
13760 {
13761 return ( sType == rhs.sType )
13762 && ( pNext == rhs.pNext )
13763 && ( validationCache == rhs.validationCache );
13764 }
13765
13766 bool operator!=( ShaderModuleValidationCacheCreateInfoEXT const& rhs ) const
13767 {
13768 return !operator==( rhs );
13769 }
13770
13771 private:
13772 StructureType sType;
13773
13774 public:
13775 const void* pNext;
13776 ValidationCacheEXT validationCache;
13777 };
13778 static_assert( sizeof( ShaderModuleValidationCacheCreateInfoEXT ) == sizeof( VkShaderModuleValidationCacheCreateInfoEXT ), "struct and wrapper have different size!" );
13779
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013780 enum class SubpassContents
13781 {
13782 eInline = VK_SUBPASS_CONTENTS_INLINE,
13783 eSecondaryCommandBuffers = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS
13784 };
13785
13786 struct PresentInfoKHR
13787 {
13788 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 )
13789 : sType( StructureType::ePresentInfoKHR )
13790 , pNext( nullptr )
13791 , waitSemaphoreCount( waitSemaphoreCount_ )
13792 , pWaitSemaphores( pWaitSemaphores_ )
13793 , swapchainCount( swapchainCount_ )
13794 , pSwapchains( pSwapchains_ )
13795 , pImageIndices( pImageIndices_ )
13796 , pResults( pResults_ )
13797 {
13798 }
13799
13800 PresentInfoKHR( VkPresentInfoKHR const & rhs )
13801 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013802 memcpy( this, &rhs, sizeof( PresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013803 }
13804
13805 PresentInfoKHR& operator=( VkPresentInfoKHR const & rhs )
13806 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013807 memcpy( this, &rhs, sizeof( PresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013808 return *this;
13809 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013810 PresentInfoKHR& setPNext( const void* pNext_ )
13811 {
13812 pNext = pNext_;
13813 return *this;
13814 }
13815
13816 PresentInfoKHR& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
13817 {
13818 waitSemaphoreCount = waitSemaphoreCount_;
13819 return *this;
13820 }
13821
13822 PresentInfoKHR& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
13823 {
13824 pWaitSemaphores = pWaitSemaphores_;
13825 return *this;
13826 }
13827
13828 PresentInfoKHR& setSwapchainCount( uint32_t swapchainCount_ )
13829 {
13830 swapchainCount = swapchainCount_;
13831 return *this;
13832 }
13833
13834 PresentInfoKHR& setPSwapchains( const SwapchainKHR* pSwapchains_ )
13835 {
13836 pSwapchains = pSwapchains_;
13837 return *this;
13838 }
13839
13840 PresentInfoKHR& setPImageIndices( const uint32_t* pImageIndices_ )
13841 {
13842 pImageIndices = pImageIndices_;
13843 return *this;
13844 }
13845
13846 PresentInfoKHR& setPResults( Result* pResults_ )
13847 {
13848 pResults = pResults_;
13849 return *this;
13850 }
13851
13852 operator const VkPresentInfoKHR&() const
13853 {
13854 return *reinterpret_cast<const VkPresentInfoKHR*>(this);
13855 }
13856
13857 bool operator==( PresentInfoKHR const& rhs ) const
13858 {
13859 return ( sType == rhs.sType )
13860 && ( pNext == rhs.pNext )
13861 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
13862 && ( pWaitSemaphores == rhs.pWaitSemaphores )
13863 && ( swapchainCount == rhs.swapchainCount )
13864 && ( pSwapchains == rhs.pSwapchains )
13865 && ( pImageIndices == rhs.pImageIndices )
13866 && ( pResults == rhs.pResults );
13867 }
13868
13869 bool operator!=( PresentInfoKHR const& rhs ) const
13870 {
13871 return !operator==( rhs );
13872 }
13873
13874 private:
13875 StructureType sType;
13876
13877 public:
13878 const void* pNext;
13879 uint32_t waitSemaphoreCount;
13880 const Semaphore* pWaitSemaphores;
13881 uint32_t swapchainCount;
13882 const SwapchainKHR* pSwapchains;
13883 const uint32_t* pImageIndices;
13884 Result* pResults;
13885 };
13886 static_assert( sizeof( PresentInfoKHR ) == sizeof( VkPresentInfoKHR ), "struct and wrapper have different size!" );
13887
13888 enum class DynamicState
13889 {
13890 eViewport = VK_DYNAMIC_STATE_VIEWPORT,
13891 eScissor = VK_DYNAMIC_STATE_SCISSOR,
13892 eLineWidth = VK_DYNAMIC_STATE_LINE_WIDTH,
13893 eDepthBias = VK_DYNAMIC_STATE_DEPTH_BIAS,
13894 eBlendConstants = VK_DYNAMIC_STATE_BLEND_CONSTANTS,
13895 eDepthBounds = VK_DYNAMIC_STATE_DEPTH_BOUNDS,
13896 eStencilCompareMask = VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK,
13897 eStencilWriteMask = VK_DYNAMIC_STATE_STENCIL_WRITE_MASK,
Mark Young0f183a82017-02-28 09:58:04 -070013898 eStencilReference = VK_DYNAMIC_STATE_STENCIL_REFERENCE,
13899 eViewportWScalingNV = VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060013900 eDiscardRectangleEXT = VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT,
13901 eSampleLocationsEXT = VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013902 };
13903
13904 struct PipelineDynamicStateCreateInfo
13905 {
13906 PipelineDynamicStateCreateInfo( PipelineDynamicStateCreateFlags flags_ = PipelineDynamicStateCreateFlags(), uint32_t dynamicStateCount_ = 0, const DynamicState* pDynamicStates_ = nullptr )
13907 : sType( StructureType::ePipelineDynamicStateCreateInfo )
13908 , pNext( nullptr )
13909 , flags( flags_ )
13910 , dynamicStateCount( dynamicStateCount_ )
13911 , pDynamicStates( pDynamicStates_ )
13912 {
13913 }
13914
13915 PipelineDynamicStateCreateInfo( VkPipelineDynamicStateCreateInfo const & rhs )
13916 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013917 memcpy( this, &rhs, sizeof( PipelineDynamicStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013918 }
13919
13920 PipelineDynamicStateCreateInfo& operator=( VkPipelineDynamicStateCreateInfo const & rhs )
13921 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013922 memcpy( this, &rhs, sizeof( PipelineDynamicStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013923 return *this;
13924 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013925 PipelineDynamicStateCreateInfo& setPNext( const void* pNext_ )
13926 {
13927 pNext = pNext_;
13928 return *this;
13929 }
13930
13931 PipelineDynamicStateCreateInfo& setFlags( PipelineDynamicStateCreateFlags flags_ )
13932 {
13933 flags = flags_;
13934 return *this;
13935 }
13936
13937 PipelineDynamicStateCreateInfo& setDynamicStateCount( uint32_t dynamicStateCount_ )
13938 {
13939 dynamicStateCount = dynamicStateCount_;
13940 return *this;
13941 }
13942
13943 PipelineDynamicStateCreateInfo& setPDynamicStates( const DynamicState* pDynamicStates_ )
13944 {
13945 pDynamicStates = pDynamicStates_;
13946 return *this;
13947 }
13948
13949 operator const VkPipelineDynamicStateCreateInfo&() const
13950 {
13951 return *reinterpret_cast<const VkPipelineDynamicStateCreateInfo*>(this);
13952 }
13953
13954 bool operator==( PipelineDynamicStateCreateInfo const& rhs ) const
13955 {
13956 return ( sType == rhs.sType )
13957 && ( pNext == rhs.pNext )
13958 && ( flags == rhs.flags )
13959 && ( dynamicStateCount == rhs.dynamicStateCount )
13960 && ( pDynamicStates == rhs.pDynamicStates );
13961 }
13962
13963 bool operator!=( PipelineDynamicStateCreateInfo const& rhs ) const
13964 {
13965 return !operator==( rhs );
13966 }
13967
13968 private:
13969 StructureType sType;
13970
13971 public:
13972 const void* pNext;
13973 PipelineDynamicStateCreateFlags flags;
13974 uint32_t dynamicStateCount;
13975 const DynamicState* pDynamicStates;
13976 };
13977 static_assert( sizeof( PipelineDynamicStateCreateInfo ) == sizeof( VkPipelineDynamicStateCreateInfo ), "struct and wrapper have different size!" );
13978
Mark Young0f183a82017-02-28 09:58:04 -070013979 enum class DescriptorUpdateTemplateTypeKHR
13980 {
13981 eDescriptorSet = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR,
13982 ePushDescriptors = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR
13983 };
13984
13985 struct DescriptorUpdateTemplateCreateInfoKHR
13986 {
13987 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 )
13988 : sType( StructureType::eDescriptorUpdateTemplateCreateInfoKHR )
13989 , pNext( nullptr )
13990 , flags( flags_ )
13991 , descriptorUpdateEntryCount( descriptorUpdateEntryCount_ )
13992 , pDescriptorUpdateEntries( pDescriptorUpdateEntries_ )
13993 , templateType( templateType_ )
13994 , descriptorSetLayout( descriptorSetLayout_ )
13995 , pipelineBindPoint( pipelineBindPoint_ )
13996 , pipelineLayout( pipelineLayout_ )
13997 , set( set_ )
13998 {
13999 }
14000
14001 DescriptorUpdateTemplateCreateInfoKHR( VkDescriptorUpdateTemplateCreateInfoKHR const & rhs )
14002 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014003 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070014004 }
14005
14006 DescriptorUpdateTemplateCreateInfoKHR& operator=( VkDescriptorUpdateTemplateCreateInfoKHR const & rhs )
14007 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014008 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070014009 return *this;
14010 }
Mark Young0f183a82017-02-28 09:58:04 -070014011 DescriptorUpdateTemplateCreateInfoKHR& setPNext( void* pNext_ )
14012 {
14013 pNext = pNext_;
14014 return *this;
14015 }
14016
14017 DescriptorUpdateTemplateCreateInfoKHR& setFlags( DescriptorUpdateTemplateCreateFlagsKHR flags_ )
14018 {
14019 flags = flags_;
14020 return *this;
14021 }
14022
14023 DescriptorUpdateTemplateCreateInfoKHR& setDescriptorUpdateEntryCount( uint32_t descriptorUpdateEntryCount_ )
14024 {
14025 descriptorUpdateEntryCount = descriptorUpdateEntryCount_;
14026 return *this;
14027 }
14028
14029 DescriptorUpdateTemplateCreateInfoKHR& setPDescriptorUpdateEntries( const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries_ )
14030 {
14031 pDescriptorUpdateEntries = pDescriptorUpdateEntries_;
14032 return *this;
14033 }
14034
14035 DescriptorUpdateTemplateCreateInfoKHR& setTemplateType( DescriptorUpdateTemplateTypeKHR templateType_ )
14036 {
14037 templateType = templateType_;
14038 return *this;
14039 }
14040
14041 DescriptorUpdateTemplateCreateInfoKHR& setDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout_ )
14042 {
14043 descriptorSetLayout = descriptorSetLayout_;
14044 return *this;
14045 }
14046
14047 DescriptorUpdateTemplateCreateInfoKHR& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
14048 {
14049 pipelineBindPoint = pipelineBindPoint_;
14050 return *this;
14051 }
14052
14053 DescriptorUpdateTemplateCreateInfoKHR& setPipelineLayout( PipelineLayout pipelineLayout_ )
14054 {
14055 pipelineLayout = pipelineLayout_;
14056 return *this;
14057 }
14058
14059 DescriptorUpdateTemplateCreateInfoKHR& setSet( uint32_t set_ )
14060 {
14061 set = set_;
14062 return *this;
14063 }
14064
14065 operator const VkDescriptorUpdateTemplateCreateInfoKHR&() const
14066 {
14067 return *reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>(this);
14068 }
14069
14070 bool operator==( DescriptorUpdateTemplateCreateInfoKHR const& rhs ) const
14071 {
14072 return ( sType == rhs.sType )
14073 && ( pNext == rhs.pNext )
14074 && ( flags == rhs.flags )
14075 && ( descriptorUpdateEntryCount == rhs.descriptorUpdateEntryCount )
14076 && ( pDescriptorUpdateEntries == rhs.pDescriptorUpdateEntries )
14077 && ( templateType == rhs.templateType )
14078 && ( descriptorSetLayout == rhs.descriptorSetLayout )
14079 && ( pipelineBindPoint == rhs.pipelineBindPoint )
14080 && ( pipelineLayout == rhs.pipelineLayout )
14081 && ( set == rhs.set );
14082 }
14083
14084 bool operator!=( DescriptorUpdateTemplateCreateInfoKHR const& rhs ) const
14085 {
14086 return !operator==( rhs );
14087 }
14088
14089 private:
14090 StructureType sType;
14091
14092 public:
14093 void* pNext;
14094 DescriptorUpdateTemplateCreateFlagsKHR flags;
14095 uint32_t descriptorUpdateEntryCount;
14096 const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries;
14097 DescriptorUpdateTemplateTypeKHR templateType;
14098 DescriptorSetLayout descriptorSetLayout;
14099 PipelineBindPoint pipelineBindPoint;
14100 PipelineLayout pipelineLayout;
14101 uint32_t set;
14102 };
14103 static_assert( sizeof( DescriptorUpdateTemplateCreateInfoKHR ) == sizeof( VkDescriptorUpdateTemplateCreateInfoKHR ), "struct and wrapper have different size!" );
14104
Mark Lobodzinski54385432017-05-15 10:27:52 -060014105 enum class ObjectType
14106 {
14107 eUnknown = VK_OBJECT_TYPE_UNKNOWN,
14108 eInstance = VK_OBJECT_TYPE_INSTANCE,
14109 ePhysicalDevice = VK_OBJECT_TYPE_PHYSICAL_DEVICE,
14110 eDevice = VK_OBJECT_TYPE_DEVICE,
14111 eQueue = VK_OBJECT_TYPE_QUEUE,
14112 eSemaphore = VK_OBJECT_TYPE_SEMAPHORE,
14113 eCommandBuffer = VK_OBJECT_TYPE_COMMAND_BUFFER,
14114 eFence = VK_OBJECT_TYPE_FENCE,
14115 eDeviceMemory = VK_OBJECT_TYPE_DEVICE_MEMORY,
14116 eBuffer = VK_OBJECT_TYPE_BUFFER,
14117 eImage = VK_OBJECT_TYPE_IMAGE,
14118 eEvent = VK_OBJECT_TYPE_EVENT,
14119 eQueryPool = VK_OBJECT_TYPE_QUERY_POOL,
14120 eBufferView = VK_OBJECT_TYPE_BUFFER_VIEW,
14121 eImageView = VK_OBJECT_TYPE_IMAGE_VIEW,
14122 eShaderModule = VK_OBJECT_TYPE_SHADER_MODULE,
14123 ePipelineCache = VK_OBJECT_TYPE_PIPELINE_CACHE,
14124 ePipelineLayout = VK_OBJECT_TYPE_PIPELINE_LAYOUT,
14125 eRenderPass = VK_OBJECT_TYPE_RENDER_PASS,
14126 ePipeline = VK_OBJECT_TYPE_PIPELINE,
14127 eDescriptorSetLayout = VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT,
14128 eSampler = VK_OBJECT_TYPE_SAMPLER,
14129 eDescriptorPool = VK_OBJECT_TYPE_DESCRIPTOR_POOL,
14130 eDescriptorSet = VK_OBJECT_TYPE_DESCRIPTOR_SET,
14131 eFramebuffer = VK_OBJECT_TYPE_FRAMEBUFFER,
14132 eCommandPool = VK_OBJECT_TYPE_COMMAND_POOL,
14133 eSurfaceKHR = VK_OBJECT_TYPE_SURFACE_KHR,
14134 eSwapchainKHR = VK_OBJECT_TYPE_SWAPCHAIN_KHR,
14135 eDisplayKHR = VK_OBJECT_TYPE_DISPLAY_KHR,
14136 eDisplayModeKHR = VK_OBJECT_TYPE_DISPLAY_MODE_KHR,
14137 eDebugReportCallbackEXT = VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT,
14138 eDescriptorUpdateTemplateKHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR,
14139 eObjectTableNVX = VK_OBJECT_TYPE_OBJECT_TABLE_NVX,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060014140 eIndirectCommandsLayoutNVX = VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX,
Lenny Komowb79f04a2017-09-18 17:07:00 -060014141 eSamplerYcbcrConversionKHR = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060014142 eValidationCacheEXT = VK_OBJECT_TYPE_VALIDATION_CACHE_EXT
Mark Lobodzinski54385432017-05-15 10:27:52 -060014143 };
14144
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014145 enum class QueueFlagBits
14146 {
14147 eGraphics = VK_QUEUE_GRAPHICS_BIT,
14148 eCompute = VK_QUEUE_COMPUTE_BIT,
14149 eTransfer = VK_QUEUE_TRANSFER_BIT,
14150 eSparseBinding = VK_QUEUE_SPARSE_BINDING_BIT
14151 };
14152
14153 using QueueFlags = Flags<QueueFlagBits, VkQueueFlags>;
14154
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014155 VULKAN_HPP_INLINE QueueFlags operator|( QueueFlagBits bit0, QueueFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014156 {
14157 return QueueFlags( bit0 ) | bit1;
14158 }
14159
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014160 VULKAN_HPP_INLINE QueueFlags operator~( QueueFlagBits bits )
14161 {
14162 return ~( QueueFlags( bits ) );
14163 }
14164
14165 template <> struct FlagTraits<QueueFlagBits>
14166 {
14167 enum
14168 {
14169 allFlags = VkFlags(QueueFlagBits::eGraphics) | VkFlags(QueueFlagBits::eCompute) | VkFlags(QueueFlagBits::eTransfer) | VkFlags(QueueFlagBits::eSparseBinding)
14170 };
14171 };
14172
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014173 struct QueueFamilyProperties
14174 {
14175 operator const VkQueueFamilyProperties&() const
14176 {
14177 return *reinterpret_cast<const VkQueueFamilyProperties*>(this);
14178 }
14179
14180 bool operator==( QueueFamilyProperties const& rhs ) const
14181 {
14182 return ( queueFlags == rhs.queueFlags )
14183 && ( queueCount == rhs.queueCount )
14184 && ( timestampValidBits == rhs.timestampValidBits )
14185 && ( minImageTransferGranularity == rhs.minImageTransferGranularity );
14186 }
14187
14188 bool operator!=( QueueFamilyProperties const& rhs ) const
14189 {
14190 return !operator==( rhs );
14191 }
14192
14193 QueueFlags queueFlags;
14194 uint32_t queueCount;
14195 uint32_t timestampValidBits;
14196 Extent3D minImageTransferGranularity;
14197 };
14198 static_assert( sizeof( QueueFamilyProperties ) == sizeof( VkQueueFamilyProperties ), "struct and wrapper have different size!" );
14199
Mark Young39389872017-01-19 21:10:49 -070014200 struct QueueFamilyProperties2KHR
14201 {
14202 operator const VkQueueFamilyProperties2KHR&() const
14203 {
14204 return *reinterpret_cast<const VkQueueFamilyProperties2KHR*>(this);
14205 }
14206
14207 bool operator==( QueueFamilyProperties2KHR const& rhs ) const
14208 {
14209 return ( sType == rhs.sType )
14210 && ( pNext == rhs.pNext )
14211 && ( queueFamilyProperties == rhs.queueFamilyProperties );
14212 }
14213
14214 bool operator!=( QueueFamilyProperties2KHR const& rhs ) const
14215 {
14216 return !operator==( rhs );
14217 }
14218
14219 private:
14220 StructureType sType;
14221
14222 public:
14223 void* pNext;
14224 QueueFamilyProperties queueFamilyProperties;
14225 };
14226 static_assert( sizeof( QueueFamilyProperties2KHR ) == sizeof( VkQueueFamilyProperties2KHR ), "struct and wrapper have different size!" );
14227
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014228 enum class MemoryPropertyFlagBits
14229 {
14230 eDeviceLocal = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
14231 eHostVisible = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
14232 eHostCoherent = VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
14233 eHostCached = VK_MEMORY_PROPERTY_HOST_CACHED_BIT,
14234 eLazilyAllocated = VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT
14235 };
14236
14237 using MemoryPropertyFlags = Flags<MemoryPropertyFlagBits, VkMemoryPropertyFlags>;
14238
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014239 VULKAN_HPP_INLINE MemoryPropertyFlags operator|( MemoryPropertyFlagBits bit0, MemoryPropertyFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014240 {
14241 return MemoryPropertyFlags( bit0 ) | bit1;
14242 }
14243
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014244 VULKAN_HPP_INLINE MemoryPropertyFlags operator~( MemoryPropertyFlagBits bits )
14245 {
14246 return ~( MemoryPropertyFlags( bits ) );
14247 }
14248
14249 template <> struct FlagTraits<MemoryPropertyFlagBits>
14250 {
14251 enum
14252 {
14253 allFlags = VkFlags(MemoryPropertyFlagBits::eDeviceLocal) | VkFlags(MemoryPropertyFlagBits::eHostVisible) | VkFlags(MemoryPropertyFlagBits::eHostCoherent) | VkFlags(MemoryPropertyFlagBits::eHostCached) | VkFlags(MemoryPropertyFlagBits::eLazilyAllocated)
14254 };
14255 };
14256
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014257 struct MemoryType
14258 {
14259 operator const VkMemoryType&() const
14260 {
14261 return *reinterpret_cast<const VkMemoryType*>(this);
14262 }
14263
14264 bool operator==( MemoryType const& rhs ) const
14265 {
14266 return ( propertyFlags == rhs.propertyFlags )
14267 && ( heapIndex == rhs.heapIndex );
14268 }
14269
14270 bool operator!=( MemoryType const& rhs ) const
14271 {
14272 return !operator==( rhs );
14273 }
14274
14275 MemoryPropertyFlags propertyFlags;
14276 uint32_t heapIndex;
14277 };
14278 static_assert( sizeof( MemoryType ) == sizeof( VkMemoryType ), "struct and wrapper have different size!" );
14279
14280 enum class MemoryHeapFlagBits
14281 {
Mark Young0f183a82017-02-28 09:58:04 -070014282 eDeviceLocal = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,
14283 eMultiInstanceKHX = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014284 };
14285
14286 using MemoryHeapFlags = Flags<MemoryHeapFlagBits, VkMemoryHeapFlags>;
14287
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014288 VULKAN_HPP_INLINE MemoryHeapFlags operator|( MemoryHeapFlagBits bit0, MemoryHeapFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014289 {
14290 return MemoryHeapFlags( bit0 ) | bit1;
14291 }
14292
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014293 VULKAN_HPP_INLINE MemoryHeapFlags operator~( MemoryHeapFlagBits bits )
14294 {
14295 return ~( MemoryHeapFlags( bits ) );
14296 }
14297
14298 template <> struct FlagTraits<MemoryHeapFlagBits>
14299 {
14300 enum
14301 {
Mark Young0f183a82017-02-28 09:58:04 -070014302 allFlags = VkFlags(MemoryHeapFlagBits::eDeviceLocal) | VkFlags(MemoryHeapFlagBits::eMultiInstanceKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014303 };
14304 };
14305
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014306 struct MemoryHeap
14307 {
14308 operator const VkMemoryHeap&() const
14309 {
14310 return *reinterpret_cast<const VkMemoryHeap*>(this);
14311 }
14312
14313 bool operator==( MemoryHeap const& rhs ) const
14314 {
14315 return ( size == rhs.size )
14316 && ( flags == rhs.flags );
14317 }
14318
14319 bool operator!=( MemoryHeap const& rhs ) const
14320 {
14321 return !operator==( rhs );
14322 }
14323
14324 DeviceSize size;
14325 MemoryHeapFlags flags;
14326 };
14327 static_assert( sizeof( MemoryHeap ) == sizeof( VkMemoryHeap ), "struct and wrapper have different size!" );
14328
14329 struct PhysicalDeviceMemoryProperties
14330 {
14331 operator const VkPhysicalDeviceMemoryProperties&() const
14332 {
14333 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties*>(this);
14334 }
14335
14336 bool operator==( PhysicalDeviceMemoryProperties const& rhs ) const
14337 {
14338 return ( memoryTypeCount == rhs.memoryTypeCount )
14339 && ( memcmp( memoryTypes, rhs.memoryTypes, VK_MAX_MEMORY_TYPES * sizeof( MemoryType ) ) == 0 )
14340 && ( memoryHeapCount == rhs.memoryHeapCount )
14341 && ( memcmp( memoryHeaps, rhs.memoryHeaps, VK_MAX_MEMORY_HEAPS * sizeof( MemoryHeap ) ) == 0 );
14342 }
14343
14344 bool operator!=( PhysicalDeviceMemoryProperties const& rhs ) const
14345 {
14346 return !operator==( rhs );
14347 }
14348
14349 uint32_t memoryTypeCount;
14350 MemoryType memoryTypes[VK_MAX_MEMORY_TYPES];
14351 uint32_t memoryHeapCount;
14352 MemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS];
14353 };
14354 static_assert( sizeof( PhysicalDeviceMemoryProperties ) == sizeof( VkPhysicalDeviceMemoryProperties ), "struct and wrapper have different size!" );
14355
Mark Young39389872017-01-19 21:10:49 -070014356 struct PhysicalDeviceMemoryProperties2KHR
14357 {
14358 operator const VkPhysicalDeviceMemoryProperties2KHR&() const
14359 {
14360 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties2KHR*>(this);
14361 }
14362
14363 bool operator==( PhysicalDeviceMemoryProperties2KHR const& rhs ) const
14364 {
14365 return ( sType == rhs.sType )
14366 && ( pNext == rhs.pNext )
14367 && ( memoryProperties == rhs.memoryProperties );
14368 }
14369
14370 bool operator!=( PhysicalDeviceMemoryProperties2KHR const& rhs ) const
14371 {
14372 return !operator==( rhs );
14373 }
14374
14375 private:
14376 StructureType sType;
14377
14378 public:
14379 void* pNext;
14380 PhysicalDeviceMemoryProperties memoryProperties;
14381 };
14382 static_assert( sizeof( PhysicalDeviceMemoryProperties2KHR ) == sizeof( VkPhysicalDeviceMemoryProperties2KHR ), "struct and wrapper have different size!" );
14383
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014384 enum class AccessFlagBits
14385 {
14386 eIndirectCommandRead = VK_ACCESS_INDIRECT_COMMAND_READ_BIT,
14387 eIndexRead = VK_ACCESS_INDEX_READ_BIT,
14388 eVertexAttributeRead = VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,
14389 eUniformRead = VK_ACCESS_UNIFORM_READ_BIT,
14390 eInputAttachmentRead = VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,
14391 eShaderRead = VK_ACCESS_SHADER_READ_BIT,
14392 eShaderWrite = VK_ACCESS_SHADER_WRITE_BIT,
14393 eColorAttachmentRead = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT,
14394 eColorAttachmentWrite = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
14395 eDepthStencilAttachmentRead = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT,
14396 eDepthStencilAttachmentWrite = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
14397 eTransferRead = VK_ACCESS_TRANSFER_READ_BIT,
14398 eTransferWrite = VK_ACCESS_TRANSFER_WRITE_BIT,
14399 eHostRead = VK_ACCESS_HOST_READ_BIT,
14400 eHostWrite = VK_ACCESS_HOST_WRITE_BIT,
14401 eMemoryRead = VK_ACCESS_MEMORY_READ_BIT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014402 eMemoryWrite = VK_ACCESS_MEMORY_WRITE_BIT,
14403 eCommandProcessReadNVX = VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060014404 eCommandProcessWriteNVX = VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX,
14405 eColorAttachmentReadNoncoherentEXT = VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014406 };
14407
14408 using AccessFlags = Flags<AccessFlagBits, VkAccessFlags>;
14409
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014410 VULKAN_HPP_INLINE AccessFlags operator|( AccessFlagBits bit0, AccessFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014411 {
14412 return AccessFlags( bit0 ) | bit1;
14413 }
14414
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014415 VULKAN_HPP_INLINE AccessFlags operator~( AccessFlagBits bits )
14416 {
14417 return ~( AccessFlags( bits ) );
14418 }
14419
14420 template <> struct FlagTraits<AccessFlagBits>
14421 {
14422 enum
14423 {
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060014424 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 -070014425 };
14426 };
14427
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014428 struct MemoryBarrier
14429 {
14430 MemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags() )
14431 : sType( StructureType::eMemoryBarrier )
14432 , pNext( nullptr )
14433 , srcAccessMask( srcAccessMask_ )
14434 , dstAccessMask( dstAccessMask_ )
14435 {
14436 }
14437
14438 MemoryBarrier( VkMemoryBarrier const & rhs )
14439 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014440 memcpy( this, &rhs, sizeof( MemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014441 }
14442
14443 MemoryBarrier& operator=( VkMemoryBarrier const & rhs )
14444 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014445 memcpy( this, &rhs, sizeof( MemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014446 return *this;
14447 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014448 MemoryBarrier& setPNext( const void* pNext_ )
14449 {
14450 pNext = pNext_;
14451 return *this;
14452 }
14453
14454 MemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
14455 {
14456 srcAccessMask = srcAccessMask_;
14457 return *this;
14458 }
14459
14460 MemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
14461 {
14462 dstAccessMask = dstAccessMask_;
14463 return *this;
14464 }
14465
14466 operator const VkMemoryBarrier&() const
14467 {
14468 return *reinterpret_cast<const VkMemoryBarrier*>(this);
14469 }
14470
14471 bool operator==( MemoryBarrier const& rhs ) const
14472 {
14473 return ( sType == rhs.sType )
14474 && ( pNext == rhs.pNext )
14475 && ( srcAccessMask == rhs.srcAccessMask )
14476 && ( dstAccessMask == rhs.dstAccessMask );
14477 }
14478
14479 bool operator!=( MemoryBarrier const& rhs ) const
14480 {
14481 return !operator==( rhs );
14482 }
14483
14484 private:
14485 StructureType sType;
14486
14487 public:
14488 const void* pNext;
14489 AccessFlags srcAccessMask;
14490 AccessFlags dstAccessMask;
14491 };
14492 static_assert( sizeof( MemoryBarrier ) == sizeof( VkMemoryBarrier ), "struct and wrapper have different size!" );
14493
14494 struct BufferMemoryBarrier
14495 {
14496 BufferMemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), uint32_t srcQueueFamilyIndex_ = 0, uint32_t dstQueueFamilyIndex_ = 0, Buffer buffer_ = Buffer(), DeviceSize offset_ = 0, DeviceSize size_ = 0 )
14497 : sType( StructureType::eBufferMemoryBarrier )
14498 , pNext( nullptr )
14499 , srcAccessMask( srcAccessMask_ )
14500 , dstAccessMask( dstAccessMask_ )
14501 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
14502 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
14503 , buffer( buffer_ )
14504 , offset( offset_ )
14505 , size( size_ )
14506 {
14507 }
14508
14509 BufferMemoryBarrier( VkBufferMemoryBarrier const & rhs )
14510 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014511 memcpy( this, &rhs, sizeof( BufferMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014512 }
14513
14514 BufferMemoryBarrier& operator=( VkBufferMemoryBarrier const & rhs )
14515 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014516 memcpy( this, &rhs, sizeof( BufferMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014517 return *this;
14518 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014519 BufferMemoryBarrier& setPNext( const void* pNext_ )
14520 {
14521 pNext = pNext_;
14522 return *this;
14523 }
14524
14525 BufferMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
14526 {
14527 srcAccessMask = srcAccessMask_;
14528 return *this;
14529 }
14530
14531 BufferMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
14532 {
14533 dstAccessMask = dstAccessMask_;
14534 return *this;
14535 }
14536
14537 BufferMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
14538 {
14539 srcQueueFamilyIndex = srcQueueFamilyIndex_;
14540 return *this;
14541 }
14542
14543 BufferMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
14544 {
14545 dstQueueFamilyIndex = dstQueueFamilyIndex_;
14546 return *this;
14547 }
14548
14549 BufferMemoryBarrier& setBuffer( Buffer buffer_ )
14550 {
14551 buffer = buffer_;
14552 return *this;
14553 }
14554
14555 BufferMemoryBarrier& setOffset( DeviceSize offset_ )
14556 {
14557 offset = offset_;
14558 return *this;
14559 }
14560
14561 BufferMemoryBarrier& setSize( DeviceSize size_ )
14562 {
14563 size = size_;
14564 return *this;
14565 }
14566
14567 operator const VkBufferMemoryBarrier&() const
14568 {
14569 return *reinterpret_cast<const VkBufferMemoryBarrier*>(this);
14570 }
14571
14572 bool operator==( BufferMemoryBarrier const& rhs ) const
14573 {
14574 return ( sType == rhs.sType )
14575 && ( pNext == rhs.pNext )
14576 && ( srcAccessMask == rhs.srcAccessMask )
14577 && ( dstAccessMask == rhs.dstAccessMask )
14578 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
14579 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
14580 && ( buffer == rhs.buffer )
14581 && ( offset == rhs.offset )
14582 && ( size == rhs.size );
14583 }
14584
14585 bool operator!=( BufferMemoryBarrier const& rhs ) const
14586 {
14587 return !operator==( rhs );
14588 }
14589
14590 private:
14591 StructureType sType;
14592
14593 public:
14594 const void* pNext;
14595 AccessFlags srcAccessMask;
14596 AccessFlags dstAccessMask;
14597 uint32_t srcQueueFamilyIndex;
14598 uint32_t dstQueueFamilyIndex;
14599 Buffer buffer;
14600 DeviceSize offset;
14601 DeviceSize size;
14602 };
14603 static_assert( sizeof( BufferMemoryBarrier ) == sizeof( VkBufferMemoryBarrier ), "struct and wrapper have different size!" );
14604
14605 enum class BufferUsageFlagBits
14606 {
14607 eTransferSrc = VK_BUFFER_USAGE_TRANSFER_SRC_BIT,
14608 eTransferDst = VK_BUFFER_USAGE_TRANSFER_DST_BIT,
14609 eUniformTexelBuffer = VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT,
14610 eStorageTexelBuffer = VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT,
14611 eUniformBuffer = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
14612 eStorageBuffer = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
14613 eIndexBuffer = VK_BUFFER_USAGE_INDEX_BUFFER_BIT,
14614 eVertexBuffer = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,
14615 eIndirectBuffer = VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
14616 };
14617
14618 using BufferUsageFlags = Flags<BufferUsageFlagBits, VkBufferUsageFlags>;
14619
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014620 VULKAN_HPP_INLINE BufferUsageFlags operator|( BufferUsageFlagBits bit0, BufferUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014621 {
14622 return BufferUsageFlags( bit0 ) | bit1;
14623 }
14624
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014625 VULKAN_HPP_INLINE BufferUsageFlags operator~( BufferUsageFlagBits bits )
14626 {
14627 return ~( BufferUsageFlags( bits ) );
14628 }
14629
14630 template <> struct FlagTraits<BufferUsageFlagBits>
14631 {
14632 enum
14633 {
14634 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)
14635 };
14636 };
14637
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014638 enum class BufferCreateFlagBits
14639 {
14640 eSparseBinding = VK_BUFFER_CREATE_SPARSE_BINDING_BIT,
14641 eSparseResidency = VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT,
14642 eSparseAliased = VK_BUFFER_CREATE_SPARSE_ALIASED_BIT
14643 };
14644
14645 using BufferCreateFlags = Flags<BufferCreateFlagBits, VkBufferCreateFlags>;
14646
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014647 VULKAN_HPP_INLINE BufferCreateFlags operator|( BufferCreateFlagBits bit0, BufferCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014648 {
14649 return BufferCreateFlags( bit0 ) | bit1;
14650 }
14651
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014652 VULKAN_HPP_INLINE BufferCreateFlags operator~( BufferCreateFlagBits bits )
14653 {
14654 return ~( BufferCreateFlags( bits ) );
14655 }
14656
14657 template <> struct FlagTraits<BufferCreateFlagBits>
14658 {
14659 enum
14660 {
14661 allFlags = VkFlags(BufferCreateFlagBits::eSparseBinding) | VkFlags(BufferCreateFlagBits::eSparseResidency) | VkFlags(BufferCreateFlagBits::eSparseAliased)
14662 };
14663 };
14664
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014665 struct BufferCreateInfo
14666 {
14667 BufferCreateInfo( BufferCreateFlags flags_ = BufferCreateFlags(), DeviceSize size_ = 0, BufferUsageFlags usage_ = BufferUsageFlags(), SharingMode sharingMode_ = SharingMode::eExclusive, uint32_t queueFamilyIndexCount_ = 0, const uint32_t* pQueueFamilyIndices_ = nullptr )
14668 : sType( StructureType::eBufferCreateInfo )
14669 , pNext( nullptr )
14670 , flags( flags_ )
14671 , size( size_ )
14672 , usage( usage_ )
14673 , sharingMode( sharingMode_ )
14674 , queueFamilyIndexCount( queueFamilyIndexCount_ )
14675 , pQueueFamilyIndices( pQueueFamilyIndices_ )
14676 {
14677 }
14678
14679 BufferCreateInfo( VkBufferCreateInfo const & rhs )
14680 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014681 memcpy( this, &rhs, sizeof( BufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014682 }
14683
14684 BufferCreateInfo& operator=( VkBufferCreateInfo const & rhs )
14685 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014686 memcpy( this, &rhs, sizeof( BufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014687 return *this;
14688 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014689 BufferCreateInfo& setPNext( const void* pNext_ )
14690 {
14691 pNext = pNext_;
14692 return *this;
14693 }
14694
14695 BufferCreateInfo& setFlags( BufferCreateFlags flags_ )
14696 {
14697 flags = flags_;
14698 return *this;
14699 }
14700
14701 BufferCreateInfo& setSize( DeviceSize size_ )
14702 {
14703 size = size_;
14704 return *this;
14705 }
14706
14707 BufferCreateInfo& setUsage( BufferUsageFlags usage_ )
14708 {
14709 usage = usage_;
14710 return *this;
14711 }
14712
14713 BufferCreateInfo& setSharingMode( SharingMode sharingMode_ )
14714 {
14715 sharingMode = sharingMode_;
14716 return *this;
14717 }
14718
14719 BufferCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
14720 {
14721 queueFamilyIndexCount = queueFamilyIndexCount_;
14722 return *this;
14723 }
14724
14725 BufferCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
14726 {
14727 pQueueFamilyIndices = pQueueFamilyIndices_;
14728 return *this;
14729 }
14730
14731 operator const VkBufferCreateInfo&() const
14732 {
14733 return *reinterpret_cast<const VkBufferCreateInfo*>(this);
14734 }
14735
14736 bool operator==( BufferCreateInfo const& rhs ) const
14737 {
14738 return ( sType == rhs.sType )
14739 && ( pNext == rhs.pNext )
14740 && ( flags == rhs.flags )
14741 && ( size == rhs.size )
14742 && ( usage == rhs.usage )
14743 && ( sharingMode == rhs.sharingMode )
14744 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
14745 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices );
14746 }
14747
14748 bool operator!=( BufferCreateInfo const& rhs ) const
14749 {
14750 return !operator==( rhs );
14751 }
14752
14753 private:
14754 StructureType sType;
14755
14756 public:
14757 const void* pNext;
14758 BufferCreateFlags flags;
14759 DeviceSize size;
14760 BufferUsageFlags usage;
14761 SharingMode sharingMode;
14762 uint32_t queueFamilyIndexCount;
14763 const uint32_t* pQueueFamilyIndices;
14764 };
14765 static_assert( sizeof( BufferCreateInfo ) == sizeof( VkBufferCreateInfo ), "struct and wrapper have different size!" );
14766
14767 enum class ShaderStageFlagBits
14768 {
14769 eVertex = VK_SHADER_STAGE_VERTEX_BIT,
14770 eTessellationControl = VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,
14771 eTessellationEvaluation = VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,
14772 eGeometry = VK_SHADER_STAGE_GEOMETRY_BIT,
14773 eFragment = VK_SHADER_STAGE_FRAGMENT_BIT,
14774 eCompute = VK_SHADER_STAGE_COMPUTE_BIT,
14775 eAllGraphics = VK_SHADER_STAGE_ALL_GRAPHICS,
14776 eAll = VK_SHADER_STAGE_ALL
14777 };
14778
14779 using ShaderStageFlags = Flags<ShaderStageFlagBits, VkShaderStageFlags>;
14780
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014781 VULKAN_HPP_INLINE ShaderStageFlags operator|( ShaderStageFlagBits bit0, ShaderStageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014782 {
14783 return ShaderStageFlags( bit0 ) | bit1;
14784 }
14785
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014786 VULKAN_HPP_INLINE ShaderStageFlags operator~( ShaderStageFlagBits bits )
14787 {
14788 return ~( ShaderStageFlags( bits ) );
14789 }
14790
14791 template <> struct FlagTraits<ShaderStageFlagBits>
14792 {
14793 enum
14794 {
14795 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)
14796 };
14797 };
14798
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014799 struct DescriptorSetLayoutBinding
14800 {
14801 DescriptorSetLayoutBinding( uint32_t binding_ = 0, DescriptorType descriptorType_ = DescriptorType::eSampler, uint32_t descriptorCount_ = 0, ShaderStageFlags stageFlags_ = ShaderStageFlags(), const Sampler* pImmutableSamplers_ = nullptr )
14802 : binding( binding_ )
14803 , descriptorType( descriptorType_ )
14804 , descriptorCount( descriptorCount_ )
14805 , stageFlags( stageFlags_ )
14806 , pImmutableSamplers( pImmutableSamplers_ )
14807 {
14808 }
14809
14810 DescriptorSetLayoutBinding( VkDescriptorSetLayoutBinding const & rhs )
14811 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014812 memcpy( this, &rhs, sizeof( DescriptorSetLayoutBinding ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014813 }
14814
14815 DescriptorSetLayoutBinding& operator=( VkDescriptorSetLayoutBinding const & rhs )
14816 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014817 memcpy( this, &rhs, sizeof( DescriptorSetLayoutBinding ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014818 return *this;
14819 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014820 DescriptorSetLayoutBinding& setBinding( uint32_t binding_ )
14821 {
14822 binding = binding_;
14823 return *this;
14824 }
14825
14826 DescriptorSetLayoutBinding& setDescriptorType( DescriptorType descriptorType_ )
14827 {
14828 descriptorType = descriptorType_;
14829 return *this;
14830 }
14831
14832 DescriptorSetLayoutBinding& setDescriptorCount( uint32_t descriptorCount_ )
14833 {
14834 descriptorCount = descriptorCount_;
14835 return *this;
14836 }
14837
14838 DescriptorSetLayoutBinding& setStageFlags( ShaderStageFlags stageFlags_ )
14839 {
14840 stageFlags = stageFlags_;
14841 return *this;
14842 }
14843
14844 DescriptorSetLayoutBinding& setPImmutableSamplers( const Sampler* pImmutableSamplers_ )
14845 {
14846 pImmutableSamplers = pImmutableSamplers_;
14847 return *this;
14848 }
14849
14850 operator const VkDescriptorSetLayoutBinding&() const
14851 {
14852 return *reinterpret_cast<const VkDescriptorSetLayoutBinding*>(this);
14853 }
14854
14855 bool operator==( DescriptorSetLayoutBinding const& rhs ) const
14856 {
14857 return ( binding == rhs.binding )
14858 && ( descriptorType == rhs.descriptorType )
14859 && ( descriptorCount == rhs.descriptorCount )
14860 && ( stageFlags == rhs.stageFlags )
14861 && ( pImmutableSamplers == rhs.pImmutableSamplers );
14862 }
14863
14864 bool operator!=( DescriptorSetLayoutBinding const& rhs ) const
14865 {
14866 return !operator==( rhs );
14867 }
14868
14869 uint32_t binding;
14870 DescriptorType descriptorType;
14871 uint32_t descriptorCount;
14872 ShaderStageFlags stageFlags;
14873 const Sampler* pImmutableSamplers;
14874 };
14875 static_assert( sizeof( DescriptorSetLayoutBinding ) == sizeof( VkDescriptorSetLayoutBinding ), "struct and wrapper have different size!" );
14876
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014877 struct PipelineShaderStageCreateInfo
14878 {
14879 PipelineShaderStageCreateInfo( PipelineShaderStageCreateFlags flags_ = PipelineShaderStageCreateFlags(), ShaderStageFlagBits stage_ = ShaderStageFlagBits::eVertex, ShaderModule module_ = ShaderModule(), const char* pName_ = nullptr, const SpecializationInfo* pSpecializationInfo_ = nullptr )
14880 : sType( StructureType::ePipelineShaderStageCreateInfo )
14881 , pNext( nullptr )
14882 , flags( flags_ )
14883 , stage( stage_ )
14884 , module( module_ )
14885 , pName( pName_ )
14886 , pSpecializationInfo( pSpecializationInfo_ )
14887 {
14888 }
14889
14890 PipelineShaderStageCreateInfo( VkPipelineShaderStageCreateInfo const & rhs )
14891 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014892 memcpy( this, &rhs, sizeof( PipelineShaderStageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014893 }
14894
14895 PipelineShaderStageCreateInfo& operator=( VkPipelineShaderStageCreateInfo const & rhs )
14896 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014897 memcpy( this, &rhs, sizeof( PipelineShaderStageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014898 return *this;
14899 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014900 PipelineShaderStageCreateInfo& setPNext( const void* pNext_ )
14901 {
14902 pNext = pNext_;
14903 return *this;
14904 }
14905
14906 PipelineShaderStageCreateInfo& setFlags( PipelineShaderStageCreateFlags flags_ )
14907 {
14908 flags = flags_;
14909 return *this;
14910 }
14911
14912 PipelineShaderStageCreateInfo& setStage( ShaderStageFlagBits stage_ )
14913 {
14914 stage = stage_;
14915 return *this;
14916 }
14917
14918 PipelineShaderStageCreateInfo& setModule( ShaderModule module_ )
14919 {
14920 module = module_;
14921 return *this;
14922 }
14923
14924 PipelineShaderStageCreateInfo& setPName( const char* pName_ )
14925 {
14926 pName = pName_;
14927 return *this;
14928 }
14929
14930 PipelineShaderStageCreateInfo& setPSpecializationInfo( const SpecializationInfo* pSpecializationInfo_ )
14931 {
14932 pSpecializationInfo = pSpecializationInfo_;
14933 return *this;
14934 }
14935
14936 operator const VkPipelineShaderStageCreateInfo&() const
14937 {
14938 return *reinterpret_cast<const VkPipelineShaderStageCreateInfo*>(this);
14939 }
14940
14941 bool operator==( PipelineShaderStageCreateInfo const& rhs ) const
14942 {
14943 return ( sType == rhs.sType )
14944 && ( pNext == rhs.pNext )
14945 && ( flags == rhs.flags )
14946 && ( stage == rhs.stage )
14947 && ( module == rhs.module )
14948 && ( pName == rhs.pName )
14949 && ( pSpecializationInfo == rhs.pSpecializationInfo );
14950 }
14951
14952 bool operator!=( PipelineShaderStageCreateInfo const& rhs ) const
14953 {
14954 return !operator==( rhs );
14955 }
14956
14957 private:
14958 StructureType sType;
14959
14960 public:
14961 const void* pNext;
14962 PipelineShaderStageCreateFlags flags;
14963 ShaderStageFlagBits stage;
14964 ShaderModule module;
14965 const char* pName;
14966 const SpecializationInfo* pSpecializationInfo;
14967 };
14968 static_assert( sizeof( PipelineShaderStageCreateInfo ) == sizeof( VkPipelineShaderStageCreateInfo ), "struct and wrapper have different size!" );
14969
14970 struct PushConstantRange
14971 {
14972 PushConstantRange( ShaderStageFlags stageFlags_ = ShaderStageFlags(), uint32_t offset_ = 0, uint32_t size_ = 0 )
14973 : stageFlags( stageFlags_ )
14974 , offset( offset_ )
14975 , size( size_ )
14976 {
14977 }
14978
14979 PushConstantRange( VkPushConstantRange const & rhs )
14980 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014981 memcpy( this, &rhs, sizeof( PushConstantRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014982 }
14983
14984 PushConstantRange& operator=( VkPushConstantRange const & rhs )
14985 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014986 memcpy( this, &rhs, sizeof( PushConstantRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014987 return *this;
14988 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014989 PushConstantRange& setStageFlags( ShaderStageFlags stageFlags_ )
14990 {
14991 stageFlags = stageFlags_;
14992 return *this;
14993 }
14994
14995 PushConstantRange& setOffset( uint32_t offset_ )
14996 {
14997 offset = offset_;
14998 return *this;
14999 }
15000
15001 PushConstantRange& setSize( uint32_t size_ )
15002 {
15003 size = size_;
15004 return *this;
15005 }
15006
15007 operator const VkPushConstantRange&() const
15008 {
15009 return *reinterpret_cast<const VkPushConstantRange*>(this);
15010 }
15011
15012 bool operator==( PushConstantRange const& rhs ) const
15013 {
15014 return ( stageFlags == rhs.stageFlags )
15015 && ( offset == rhs.offset )
15016 && ( size == rhs.size );
15017 }
15018
15019 bool operator!=( PushConstantRange const& rhs ) const
15020 {
15021 return !operator==( rhs );
15022 }
15023
15024 ShaderStageFlags stageFlags;
15025 uint32_t offset;
15026 uint32_t size;
15027 };
15028 static_assert( sizeof( PushConstantRange ) == sizeof( VkPushConstantRange ), "struct and wrapper have different size!" );
15029
15030 struct PipelineLayoutCreateInfo
15031 {
15032 PipelineLayoutCreateInfo( PipelineLayoutCreateFlags flags_ = PipelineLayoutCreateFlags(), uint32_t setLayoutCount_ = 0, const DescriptorSetLayout* pSetLayouts_ = nullptr, uint32_t pushConstantRangeCount_ = 0, const PushConstantRange* pPushConstantRanges_ = nullptr )
15033 : sType( StructureType::ePipelineLayoutCreateInfo )
15034 , pNext( nullptr )
15035 , flags( flags_ )
15036 , setLayoutCount( setLayoutCount_ )
15037 , pSetLayouts( pSetLayouts_ )
15038 , pushConstantRangeCount( pushConstantRangeCount_ )
15039 , pPushConstantRanges( pPushConstantRanges_ )
15040 {
15041 }
15042
15043 PipelineLayoutCreateInfo( VkPipelineLayoutCreateInfo const & rhs )
15044 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015045 memcpy( this, &rhs, sizeof( PipelineLayoutCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015046 }
15047
15048 PipelineLayoutCreateInfo& operator=( VkPipelineLayoutCreateInfo const & rhs )
15049 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015050 memcpy( this, &rhs, sizeof( PipelineLayoutCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015051 return *this;
15052 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015053 PipelineLayoutCreateInfo& setPNext( const void* pNext_ )
15054 {
15055 pNext = pNext_;
15056 return *this;
15057 }
15058
15059 PipelineLayoutCreateInfo& setFlags( PipelineLayoutCreateFlags flags_ )
15060 {
15061 flags = flags_;
15062 return *this;
15063 }
15064
15065 PipelineLayoutCreateInfo& setSetLayoutCount( uint32_t setLayoutCount_ )
15066 {
15067 setLayoutCount = setLayoutCount_;
15068 return *this;
15069 }
15070
15071 PipelineLayoutCreateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
15072 {
15073 pSetLayouts = pSetLayouts_;
15074 return *this;
15075 }
15076
15077 PipelineLayoutCreateInfo& setPushConstantRangeCount( uint32_t pushConstantRangeCount_ )
15078 {
15079 pushConstantRangeCount = pushConstantRangeCount_;
15080 return *this;
15081 }
15082
15083 PipelineLayoutCreateInfo& setPPushConstantRanges( const PushConstantRange* pPushConstantRanges_ )
15084 {
15085 pPushConstantRanges = pPushConstantRanges_;
15086 return *this;
15087 }
15088
15089 operator const VkPipelineLayoutCreateInfo&() const
15090 {
15091 return *reinterpret_cast<const VkPipelineLayoutCreateInfo*>(this);
15092 }
15093
15094 bool operator==( PipelineLayoutCreateInfo const& rhs ) const
15095 {
15096 return ( sType == rhs.sType )
15097 && ( pNext == rhs.pNext )
15098 && ( flags == rhs.flags )
15099 && ( setLayoutCount == rhs.setLayoutCount )
15100 && ( pSetLayouts == rhs.pSetLayouts )
15101 && ( pushConstantRangeCount == rhs.pushConstantRangeCount )
15102 && ( pPushConstantRanges == rhs.pPushConstantRanges );
15103 }
15104
15105 bool operator!=( PipelineLayoutCreateInfo const& rhs ) const
15106 {
15107 return !operator==( rhs );
15108 }
15109
15110 private:
15111 StructureType sType;
15112
15113 public:
15114 const void* pNext;
15115 PipelineLayoutCreateFlags flags;
15116 uint32_t setLayoutCount;
15117 const DescriptorSetLayout* pSetLayouts;
15118 uint32_t pushConstantRangeCount;
15119 const PushConstantRange* pPushConstantRanges;
15120 };
15121 static_assert( sizeof( PipelineLayoutCreateInfo ) == sizeof( VkPipelineLayoutCreateInfo ), "struct and wrapper have different size!" );
15122
15123 enum class ImageUsageFlagBits
15124 {
15125 eTransferSrc = VK_IMAGE_USAGE_TRANSFER_SRC_BIT,
15126 eTransferDst = VK_IMAGE_USAGE_TRANSFER_DST_BIT,
15127 eSampled = VK_IMAGE_USAGE_SAMPLED_BIT,
15128 eStorage = VK_IMAGE_USAGE_STORAGE_BIT,
15129 eColorAttachment = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
15130 eDepthStencilAttachment = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,
15131 eTransientAttachment = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,
15132 eInputAttachment = VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
15133 };
15134
15135 using ImageUsageFlags = Flags<ImageUsageFlagBits, VkImageUsageFlags>;
15136
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015137 VULKAN_HPP_INLINE ImageUsageFlags operator|( ImageUsageFlagBits bit0, ImageUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015138 {
15139 return ImageUsageFlags( bit0 ) | bit1;
15140 }
15141
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015142 VULKAN_HPP_INLINE ImageUsageFlags operator~( ImageUsageFlagBits bits )
15143 {
15144 return ~( ImageUsageFlags( bits ) );
15145 }
15146
15147 template <> struct FlagTraits<ImageUsageFlagBits>
15148 {
15149 enum
15150 {
15151 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)
15152 };
15153 };
15154
Mark Lobodzinski54385432017-05-15 10:27:52 -060015155 struct SharedPresentSurfaceCapabilitiesKHR
15156 {
15157 operator const VkSharedPresentSurfaceCapabilitiesKHR&() const
15158 {
15159 return *reinterpret_cast<const VkSharedPresentSurfaceCapabilitiesKHR*>(this);
15160 }
15161
15162 bool operator==( SharedPresentSurfaceCapabilitiesKHR const& rhs ) const
15163 {
15164 return ( sType == rhs.sType )
15165 && ( pNext == rhs.pNext )
15166 && ( sharedPresentSupportedUsageFlags == rhs.sharedPresentSupportedUsageFlags );
15167 }
15168
15169 bool operator!=( SharedPresentSurfaceCapabilitiesKHR const& rhs ) const
15170 {
15171 return !operator==( rhs );
15172 }
15173
15174 private:
15175 StructureType sType;
15176
15177 public:
15178 void* pNext;
15179 ImageUsageFlags sharedPresentSupportedUsageFlags;
15180 };
15181 static_assert( sizeof( SharedPresentSurfaceCapabilitiesKHR ) == sizeof( VkSharedPresentSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" );
15182
Lenny Komowb79f04a2017-09-18 17:07:00 -060015183 struct ImageViewUsageCreateInfoKHR
15184 {
15185 ImageViewUsageCreateInfoKHR( ImageUsageFlags usage_ = ImageUsageFlags() )
15186 : sType( StructureType::eImageViewUsageCreateInfoKHR )
15187 , pNext( nullptr )
15188 , usage( usage_ )
15189 {
15190 }
15191
15192 ImageViewUsageCreateInfoKHR( VkImageViewUsageCreateInfoKHR const & rhs )
15193 {
15194 memcpy( this, &rhs, sizeof( ImageViewUsageCreateInfoKHR ) );
15195 }
15196
15197 ImageViewUsageCreateInfoKHR& operator=( VkImageViewUsageCreateInfoKHR const & rhs )
15198 {
15199 memcpy( this, &rhs, sizeof( ImageViewUsageCreateInfoKHR ) );
15200 return *this;
15201 }
15202 ImageViewUsageCreateInfoKHR& setPNext( const void* pNext_ )
15203 {
15204 pNext = pNext_;
15205 return *this;
15206 }
15207
15208 ImageViewUsageCreateInfoKHR& setUsage( ImageUsageFlags usage_ )
15209 {
15210 usage = usage_;
15211 return *this;
15212 }
15213
15214 operator const VkImageViewUsageCreateInfoKHR&() const
15215 {
15216 return *reinterpret_cast<const VkImageViewUsageCreateInfoKHR*>(this);
15217 }
15218
15219 bool operator==( ImageViewUsageCreateInfoKHR const& rhs ) const
15220 {
15221 return ( sType == rhs.sType )
15222 && ( pNext == rhs.pNext )
15223 && ( usage == rhs.usage );
15224 }
15225
15226 bool operator!=( ImageViewUsageCreateInfoKHR const& rhs ) const
15227 {
15228 return !operator==( rhs );
15229 }
15230
15231 private:
15232 StructureType sType;
15233
15234 public:
15235 const void* pNext;
15236 ImageUsageFlags usage;
15237 };
15238 static_assert( sizeof( ImageViewUsageCreateInfoKHR ) == sizeof( VkImageViewUsageCreateInfoKHR ), "struct and wrapper have different size!" );
15239
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015240 enum class ImageCreateFlagBits
15241 {
15242 eSparseBinding = VK_IMAGE_CREATE_SPARSE_BINDING_BIT,
15243 eSparseResidency = VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT,
15244 eSparseAliased = VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,
15245 eMutableFormat = VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,
Mark Young39389872017-01-19 21:10:49 -070015246 eCubeCompatible = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,
Mark Young0f183a82017-02-28 09:58:04 -070015247 eBindSfrKHX = VK_IMAGE_CREATE_BIND_SFR_BIT_KHX,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060015248 e2DArrayCompatibleKHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR,
Lenny Komowb79f04a2017-09-18 17:07:00 -060015249 eBlockTexelViewCompatibleKHR = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR,
15250 eExtendedUsageKHR = VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR,
15251 eSampleLocationsCompatibleDepthEXT = VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT,
15252 eDisjointKHR = VK_IMAGE_CREATE_DISJOINT_BIT_KHR,
15253 eAliasKHR = VK_IMAGE_CREATE_ALIAS_BIT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015254 };
15255
15256 using ImageCreateFlags = Flags<ImageCreateFlagBits, VkImageCreateFlags>;
15257
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015258 VULKAN_HPP_INLINE ImageCreateFlags operator|( ImageCreateFlagBits bit0, ImageCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015259 {
15260 return ImageCreateFlags( bit0 ) | bit1;
15261 }
15262
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015263 VULKAN_HPP_INLINE ImageCreateFlags operator~( ImageCreateFlagBits bits )
15264 {
15265 return ~( ImageCreateFlags( bits ) );
15266 }
15267
15268 template <> struct FlagTraits<ImageCreateFlagBits>
15269 {
15270 enum
15271 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060015272 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 -070015273 };
15274 };
15275
Mark Young39389872017-01-19 21:10:49 -070015276 struct PhysicalDeviceImageFormatInfo2KHR
15277 {
15278 PhysicalDeviceImageFormatInfo2KHR( Format format_ = Format::eUndefined, ImageType type_ = ImageType::e1D, ImageTiling tiling_ = ImageTiling::eOptimal, ImageUsageFlags usage_ = ImageUsageFlags(), ImageCreateFlags flags_ = ImageCreateFlags() )
15279 : sType( StructureType::ePhysicalDeviceImageFormatInfo2KHR )
15280 , pNext( nullptr )
15281 , format( format_ )
15282 , type( type_ )
15283 , tiling( tiling_ )
15284 , usage( usage_ )
15285 , flags( flags_ )
15286 {
15287 }
15288
15289 PhysicalDeviceImageFormatInfo2KHR( VkPhysicalDeviceImageFormatInfo2KHR const & rhs )
15290 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015291 memcpy( this, &rhs, sizeof( PhysicalDeviceImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070015292 }
15293
15294 PhysicalDeviceImageFormatInfo2KHR& operator=( VkPhysicalDeviceImageFormatInfo2KHR const & rhs )
15295 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015296 memcpy( this, &rhs, sizeof( PhysicalDeviceImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070015297 return *this;
15298 }
Mark Young39389872017-01-19 21:10:49 -070015299 PhysicalDeviceImageFormatInfo2KHR& setPNext( const void* pNext_ )
15300 {
15301 pNext = pNext_;
15302 return *this;
15303 }
15304
15305 PhysicalDeviceImageFormatInfo2KHR& setFormat( Format format_ )
15306 {
15307 format = format_;
15308 return *this;
15309 }
15310
15311 PhysicalDeviceImageFormatInfo2KHR& setType( ImageType type_ )
15312 {
15313 type = type_;
15314 return *this;
15315 }
15316
15317 PhysicalDeviceImageFormatInfo2KHR& setTiling( ImageTiling tiling_ )
15318 {
15319 tiling = tiling_;
15320 return *this;
15321 }
15322
15323 PhysicalDeviceImageFormatInfo2KHR& setUsage( ImageUsageFlags usage_ )
15324 {
15325 usage = usage_;
15326 return *this;
15327 }
15328
15329 PhysicalDeviceImageFormatInfo2KHR& setFlags( ImageCreateFlags flags_ )
15330 {
15331 flags = flags_;
15332 return *this;
15333 }
15334
15335 operator const VkPhysicalDeviceImageFormatInfo2KHR&() const
15336 {
15337 return *reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>(this);
15338 }
15339
15340 bool operator==( PhysicalDeviceImageFormatInfo2KHR const& rhs ) const
15341 {
15342 return ( sType == rhs.sType )
15343 && ( pNext == rhs.pNext )
15344 && ( format == rhs.format )
15345 && ( type == rhs.type )
15346 && ( tiling == rhs.tiling )
15347 && ( usage == rhs.usage )
15348 && ( flags == rhs.flags );
15349 }
15350
15351 bool operator!=( PhysicalDeviceImageFormatInfo2KHR const& rhs ) const
15352 {
15353 return !operator==( rhs );
15354 }
15355
15356 private:
15357 StructureType sType;
15358
15359 public:
15360 const void* pNext;
15361 Format format;
15362 ImageType type;
15363 ImageTiling tiling;
15364 ImageUsageFlags usage;
15365 ImageCreateFlags flags;
15366 };
15367 static_assert( sizeof( PhysicalDeviceImageFormatInfo2KHR ) == sizeof( VkPhysicalDeviceImageFormatInfo2KHR ), "struct and wrapper have different size!" );
15368
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015369 enum class PipelineCreateFlagBits
15370 {
15371 eDisableOptimization = VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT,
15372 eAllowDerivatives = VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT,
Mark Young0f183a82017-02-28 09:58:04 -070015373 eDerivative = VK_PIPELINE_CREATE_DERIVATIVE_BIT,
15374 eViewIndexFromDeviceIndexKHX = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX,
15375 eDispatchBaseKHX = VK_PIPELINE_CREATE_DISPATCH_BASE_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015376 };
15377
15378 using PipelineCreateFlags = Flags<PipelineCreateFlagBits, VkPipelineCreateFlags>;
15379
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015380 VULKAN_HPP_INLINE PipelineCreateFlags operator|( PipelineCreateFlagBits bit0, PipelineCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015381 {
15382 return PipelineCreateFlags( bit0 ) | bit1;
15383 }
15384
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015385 VULKAN_HPP_INLINE PipelineCreateFlags operator~( PipelineCreateFlagBits bits )
15386 {
15387 return ~( PipelineCreateFlags( bits ) );
15388 }
15389
15390 template <> struct FlagTraits<PipelineCreateFlagBits>
15391 {
15392 enum
15393 {
Mark Young0f183a82017-02-28 09:58:04 -070015394 allFlags = VkFlags(PipelineCreateFlagBits::eDisableOptimization) | VkFlags(PipelineCreateFlagBits::eAllowDerivatives) | VkFlags(PipelineCreateFlagBits::eDerivative) | VkFlags(PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX) | VkFlags(PipelineCreateFlagBits::eDispatchBaseKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015395 };
15396 };
15397
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015398 struct ComputePipelineCreateInfo
15399 {
15400 ComputePipelineCreateInfo( PipelineCreateFlags flags_ = PipelineCreateFlags(), PipelineShaderStageCreateInfo stage_ = PipelineShaderStageCreateInfo(), PipelineLayout layout_ = PipelineLayout(), Pipeline basePipelineHandle_ = Pipeline(), int32_t basePipelineIndex_ = 0 )
15401 : sType( StructureType::eComputePipelineCreateInfo )
15402 , pNext( nullptr )
15403 , flags( flags_ )
15404 , stage( stage_ )
15405 , layout( layout_ )
15406 , basePipelineHandle( basePipelineHandle_ )
15407 , basePipelineIndex( basePipelineIndex_ )
15408 {
15409 }
15410
15411 ComputePipelineCreateInfo( VkComputePipelineCreateInfo const & rhs )
15412 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015413 memcpy( this, &rhs, sizeof( ComputePipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015414 }
15415
15416 ComputePipelineCreateInfo& operator=( VkComputePipelineCreateInfo const & rhs )
15417 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015418 memcpy( this, &rhs, sizeof( ComputePipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015419 return *this;
15420 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015421 ComputePipelineCreateInfo& setPNext( const void* pNext_ )
15422 {
15423 pNext = pNext_;
15424 return *this;
15425 }
15426
15427 ComputePipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
15428 {
15429 flags = flags_;
15430 return *this;
15431 }
15432
15433 ComputePipelineCreateInfo& setStage( PipelineShaderStageCreateInfo stage_ )
15434 {
15435 stage = stage_;
15436 return *this;
15437 }
15438
15439 ComputePipelineCreateInfo& setLayout( PipelineLayout layout_ )
15440 {
15441 layout = layout_;
15442 return *this;
15443 }
15444
15445 ComputePipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
15446 {
15447 basePipelineHandle = basePipelineHandle_;
15448 return *this;
15449 }
15450
15451 ComputePipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
15452 {
15453 basePipelineIndex = basePipelineIndex_;
15454 return *this;
15455 }
15456
15457 operator const VkComputePipelineCreateInfo&() const
15458 {
15459 return *reinterpret_cast<const VkComputePipelineCreateInfo*>(this);
15460 }
15461
15462 bool operator==( ComputePipelineCreateInfo const& rhs ) const
15463 {
15464 return ( sType == rhs.sType )
15465 && ( pNext == rhs.pNext )
15466 && ( flags == rhs.flags )
15467 && ( stage == rhs.stage )
15468 && ( layout == rhs.layout )
15469 && ( basePipelineHandle == rhs.basePipelineHandle )
15470 && ( basePipelineIndex == rhs.basePipelineIndex );
15471 }
15472
15473 bool operator!=( ComputePipelineCreateInfo const& rhs ) const
15474 {
15475 return !operator==( rhs );
15476 }
15477
15478 private:
15479 StructureType sType;
15480
15481 public:
15482 const void* pNext;
15483 PipelineCreateFlags flags;
15484 PipelineShaderStageCreateInfo stage;
15485 PipelineLayout layout;
15486 Pipeline basePipelineHandle;
15487 int32_t basePipelineIndex;
15488 };
15489 static_assert( sizeof( ComputePipelineCreateInfo ) == sizeof( VkComputePipelineCreateInfo ), "struct and wrapper have different size!" );
15490
15491 enum class ColorComponentFlagBits
15492 {
15493 eR = VK_COLOR_COMPONENT_R_BIT,
15494 eG = VK_COLOR_COMPONENT_G_BIT,
15495 eB = VK_COLOR_COMPONENT_B_BIT,
15496 eA = VK_COLOR_COMPONENT_A_BIT
15497 };
15498
15499 using ColorComponentFlags = Flags<ColorComponentFlagBits, VkColorComponentFlags>;
15500
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015501 VULKAN_HPP_INLINE ColorComponentFlags operator|( ColorComponentFlagBits bit0, ColorComponentFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015502 {
15503 return ColorComponentFlags( bit0 ) | bit1;
15504 }
15505
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015506 VULKAN_HPP_INLINE ColorComponentFlags operator~( ColorComponentFlagBits bits )
15507 {
15508 return ~( ColorComponentFlags( bits ) );
15509 }
15510
15511 template <> struct FlagTraits<ColorComponentFlagBits>
15512 {
15513 enum
15514 {
15515 allFlags = VkFlags(ColorComponentFlagBits::eR) | VkFlags(ColorComponentFlagBits::eG) | VkFlags(ColorComponentFlagBits::eB) | VkFlags(ColorComponentFlagBits::eA)
15516 };
15517 };
15518
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015519 struct PipelineColorBlendAttachmentState
15520 {
15521 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() )
15522 : blendEnable( blendEnable_ )
15523 , srcColorBlendFactor( srcColorBlendFactor_ )
15524 , dstColorBlendFactor( dstColorBlendFactor_ )
15525 , colorBlendOp( colorBlendOp_ )
15526 , srcAlphaBlendFactor( srcAlphaBlendFactor_ )
15527 , dstAlphaBlendFactor( dstAlphaBlendFactor_ )
15528 , alphaBlendOp( alphaBlendOp_ )
15529 , colorWriteMask( colorWriteMask_ )
15530 {
15531 }
15532
15533 PipelineColorBlendAttachmentState( VkPipelineColorBlendAttachmentState const & rhs )
15534 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015535 memcpy( this, &rhs, sizeof( PipelineColorBlendAttachmentState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015536 }
15537
15538 PipelineColorBlendAttachmentState& operator=( VkPipelineColorBlendAttachmentState const & rhs )
15539 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015540 memcpy( this, &rhs, sizeof( PipelineColorBlendAttachmentState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015541 return *this;
15542 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015543 PipelineColorBlendAttachmentState& setBlendEnable( Bool32 blendEnable_ )
15544 {
15545 blendEnable = blendEnable_;
15546 return *this;
15547 }
15548
15549 PipelineColorBlendAttachmentState& setSrcColorBlendFactor( BlendFactor srcColorBlendFactor_ )
15550 {
15551 srcColorBlendFactor = srcColorBlendFactor_;
15552 return *this;
15553 }
15554
15555 PipelineColorBlendAttachmentState& setDstColorBlendFactor( BlendFactor dstColorBlendFactor_ )
15556 {
15557 dstColorBlendFactor = dstColorBlendFactor_;
15558 return *this;
15559 }
15560
15561 PipelineColorBlendAttachmentState& setColorBlendOp( BlendOp colorBlendOp_ )
15562 {
15563 colorBlendOp = colorBlendOp_;
15564 return *this;
15565 }
15566
15567 PipelineColorBlendAttachmentState& setSrcAlphaBlendFactor( BlendFactor srcAlphaBlendFactor_ )
15568 {
15569 srcAlphaBlendFactor = srcAlphaBlendFactor_;
15570 return *this;
15571 }
15572
15573 PipelineColorBlendAttachmentState& setDstAlphaBlendFactor( BlendFactor dstAlphaBlendFactor_ )
15574 {
15575 dstAlphaBlendFactor = dstAlphaBlendFactor_;
15576 return *this;
15577 }
15578
15579 PipelineColorBlendAttachmentState& setAlphaBlendOp( BlendOp alphaBlendOp_ )
15580 {
15581 alphaBlendOp = alphaBlendOp_;
15582 return *this;
15583 }
15584
15585 PipelineColorBlendAttachmentState& setColorWriteMask( ColorComponentFlags colorWriteMask_ )
15586 {
15587 colorWriteMask = colorWriteMask_;
15588 return *this;
15589 }
15590
15591 operator const VkPipelineColorBlendAttachmentState&() const
15592 {
15593 return *reinterpret_cast<const VkPipelineColorBlendAttachmentState*>(this);
15594 }
15595
15596 bool operator==( PipelineColorBlendAttachmentState const& rhs ) const
15597 {
15598 return ( blendEnable == rhs.blendEnable )
15599 && ( srcColorBlendFactor == rhs.srcColorBlendFactor )
15600 && ( dstColorBlendFactor == rhs.dstColorBlendFactor )
15601 && ( colorBlendOp == rhs.colorBlendOp )
15602 && ( srcAlphaBlendFactor == rhs.srcAlphaBlendFactor )
15603 && ( dstAlphaBlendFactor == rhs.dstAlphaBlendFactor )
15604 && ( alphaBlendOp == rhs.alphaBlendOp )
15605 && ( colorWriteMask == rhs.colorWriteMask );
15606 }
15607
15608 bool operator!=( PipelineColorBlendAttachmentState const& rhs ) const
15609 {
15610 return !operator==( rhs );
15611 }
15612
15613 Bool32 blendEnable;
15614 BlendFactor srcColorBlendFactor;
15615 BlendFactor dstColorBlendFactor;
15616 BlendOp colorBlendOp;
15617 BlendFactor srcAlphaBlendFactor;
15618 BlendFactor dstAlphaBlendFactor;
15619 BlendOp alphaBlendOp;
15620 ColorComponentFlags colorWriteMask;
15621 };
15622 static_assert( sizeof( PipelineColorBlendAttachmentState ) == sizeof( VkPipelineColorBlendAttachmentState ), "struct and wrapper have different size!" );
15623
15624 struct PipelineColorBlendStateCreateInfo
15625 {
15626 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 } } )
15627 : sType( StructureType::ePipelineColorBlendStateCreateInfo )
15628 , pNext( nullptr )
15629 , flags( flags_ )
15630 , logicOpEnable( logicOpEnable_ )
15631 , logicOp( logicOp_ )
15632 , attachmentCount( attachmentCount_ )
15633 , pAttachments( pAttachments_ )
15634 {
15635 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
15636 }
15637
15638 PipelineColorBlendStateCreateInfo( VkPipelineColorBlendStateCreateInfo const & rhs )
15639 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015640 memcpy( this, &rhs, sizeof( PipelineColorBlendStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015641 }
15642
15643 PipelineColorBlendStateCreateInfo& operator=( VkPipelineColorBlendStateCreateInfo const & rhs )
15644 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015645 memcpy( this, &rhs, sizeof( PipelineColorBlendStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015646 return *this;
15647 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015648 PipelineColorBlendStateCreateInfo& setPNext( const void* pNext_ )
15649 {
15650 pNext = pNext_;
15651 return *this;
15652 }
15653
15654 PipelineColorBlendStateCreateInfo& setFlags( PipelineColorBlendStateCreateFlags flags_ )
15655 {
15656 flags = flags_;
15657 return *this;
15658 }
15659
15660 PipelineColorBlendStateCreateInfo& setLogicOpEnable( Bool32 logicOpEnable_ )
15661 {
15662 logicOpEnable = logicOpEnable_;
15663 return *this;
15664 }
15665
15666 PipelineColorBlendStateCreateInfo& setLogicOp( LogicOp logicOp_ )
15667 {
15668 logicOp = logicOp_;
15669 return *this;
15670 }
15671
15672 PipelineColorBlendStateCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
15673 {
15674 attachmentCount = attachmentCount_;
15675 return *this;
15676 }
15677
15678 PipelineColorBlendStateCreateInfo& setPAttachments( const PipelineColorBlendAttachmentState* pAttachments_ )
15679 {
15680 pAttachments = pAttachments_;
15681 return *this;
15682 }
15683
15684 PipelineColorBlendStateCreateInfo& setBlendConstants( std::array<float,4> blendConstants_ )
15685 {
15686 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
15687 return *this;
15688 }
15689
15690 operator const VkPipelineColorBlendStateCreateInfo&() const
15691 {
15692 return *reinterpret_cast<const VkPipelineColorBlendStateCreateInfo*>(this);
15693 }
15694
15695 bool operator==( PipelineColorBlendStateCreateInfo const& rhs ) const
15696 {
15697 return ( sType == rhs.sType )
15698 && ( pNext == rhs.pNext )
15699 && ( flags == rhs.flags )
15700 && ( logicOpEnable == rhs.logicOpEnable )
15701 && ( logicOp == rhs.logicOp )
15702 && ( attachmentCount == rhs.attachmentCount )
15703 && ( pAttachments == rhs.pAttachments )
15704 && ( memcmp( blendConstants, rhs.blendConstants, 4 * sizeof( float ) ) == 0 );
15705 }
15706
15707 bool operator!=( PipelineColorBlendStateCreateInfo const& rhs ) const
15708 {
15709 return !operator==( rhs );
15710 }
15711
15712 private:
15713 StructureType sType;
15714
15715 public:
15716 const void* pNext;
15717 PipelineColorBlendStateCreateFlags flags;
15718 Bool32 logicOpEnable;
15719 LogicOp logicOp;
15720 uint32_t attachmentCount;
15721 const PipelineColorBlendAttachmentState* pAttachments;
15722 float blendConstants[4];
15723 };
15724 static_assert( sizeof( PipelineColorBlendStateCreateInfo ) == sizeof( VkPipelineColorBlendStateCreateInfo ), "struct and wrapper have different size!" );
15725
15726 enum class FenceCreateFlagBits
15727 {
15728 eSignaled = VK_FENCE_CREATE_SIGNALED_BIT
15729 };
15730
15731 using FenceCreateFlags = Flags<FenceCreateFlagBits, VkFenceCreateFlags>;
15732
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015733 VULKAN_HPP_INLINE FenceCreateFlags operator|( FenceCreateFlagBits bit0, FenceCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015734 {
15735 return FenceCreateFlags( bit0 ) | bit1;
15736 }
15737
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015738 VULKAN_HPP_INLINE FenceCreateFlags operator~( FenceCreateFlagBits bits )
15739 {
15740 return ~( FenceCreateFlags( bits ) );
15741 }
15742
15743 template <> struct FlagTraits<FenceCreateFlagBits>
15744 {
15745 enum
15746 {
15747 allFlags = VkFlags(FenceCreateFlagBits::eSignaled)
15748 };
15749 };
15750
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015751 struct FenceCreateInfo
15752 {
15753 FenceCreateInfo( FenceCreateFlags flags_ = FenceCreateFlags() )
15754 : sType( StructureType::eFenceCreateInfo )
15755 , pNext( nullptr )
15756 , flags( flags_ )
15757 {
15758 }
15759
15760 FenceCreateInfo( VkFenceCreateInfo const & rhs )
15761 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015762 memcpy( this, &rhs, sizeof( FenceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015763 }
15764
15765 FenceCreateInfo& operator=( VkFenceCreateInfo const & rhs )
15766 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015767 memcpy( this, &rhs, sizeof( FenceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015768 return *this;
15769 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015770 FenceCreateInfo& setPNext( const void* pNext_ )
15771 {
15772 pNext = pNext_;
15773 return *this;
15774 }
15775
15776 FenceCreateInfo& setFlags( FenceCreateFlags flags_ )
15777 {
15778 flags = flags_;
15779 return *this;
15780 }
15781
15782 operator const VkFenceCreateInfo&() const
15783 {
15784 return *reinterpret_cast<const VkFenceCreateInfo*>(this);
15785 }
15786
15787 bool operator==( FenceCreateInfo const& rhs ) const
15788 {
15789 return ( sType == rhs.sType )
15790 && ( pNext == rhs.pNext )
15791 && ( flags == rhs.flags );
15792 }
15793
15794 bool operator!=( FenceCreateInfo const& rhs ) const
15795 {
15796 return !operator==( rhs );
15797 }
15798
15799 private:
15800 StructureType sType;
15801
15802 public:
15803 const void* pNext;
15804 FenceCreateFlags flags;
15805 };
15806 static_assert( sizeof( FenceCreateInfo ) == sizeof( VkFenceCreateInfo ), "struct and wrapper have different size!" );
15807
15808 enum class FormatFeatureFlagBits
15809 {
15810 eSampledImage = VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
15811 eStorageImage = VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,
15812 eStorageImageAtomic = VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT,
15813 eUniformTexelBuffer = VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT,
15814 eStorageTexelBuffer = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,
15815 eStorageTexelBufferAtomic = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT,
15816 eVertexBuffer = VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,
15817 eColorAttachment = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,
15818 eColorAttachmentBlend = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
15819 eDepthStencilAttachment = VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,
15820 eBlitSrc = VK_FORMAT_FEATURE_BLIT_SRC_BIT,
15821 eBlitDst = VK_FORMAT_FEATURE_BLIT_DST_BIT,
15822 eSampledImageFilterLinear = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,
Mark Young39389872017-01-19 21:10:49 -070015823 eSampledImageFilterCubicIMG = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG,
15824 eTransferSrcKHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060015825 eTransferDstKHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR,
Lenny Komowb79f04a2017-09-18 17:07:00 -060015826 eSampledImageFilterMinmaxEXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT,
15827 eMidpointChromaSamplesKHR = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR,
15828 eSampledImageYcbcrConversionLinearFilterKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR,
15829 eSampledImageYcbcrConversionSeparateReconstructionFilterKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR,
15830 eSampledImageYcbcrConversionChromaReconstructionExplicitKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR,
15831 eSampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR,
15832 eDisjointKHR = VK_FORMAT_FEATURE_DISJOINT_BIT_KHR,
15833 eCositedChromaSamplesKHR = VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015834 };
15835
15836 using FormatFeatureFlags = Flags<FormatFeatureFlagBits, VkFormatFeatureFlags>;
15837
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015838 VULKAN_HPP_INLINE FormatFeatureFlags operator|( FormatFeatureFlagBits bit0, FormatFeatureFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015839 {
15840 return FormatFeatureFlags( bit0 ) | bit1;
15841 }
15842
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015843 VULKAN_HPP_INLINE FormatFeatureFlags operator~( FormatFeatureFlagBits bits )
15844 {
15845 return ~( FormatFeatureFlags( bits ) );
15846 }
15847
15848 template <> struct FlagTraits<FormatFeatureFlagBits>
15849 {
15850 enum
15851 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060015852 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 -070015853 };
15854 };
15855
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015856 struct FormatProperties
15857 {
15858 operator const VkFormatProperties&() const
15859 {
15860 return *reinterpret_cast<const VkFormatProperties*>(this);
15861 }
15862
15863 bool operator==( FormatProperties const& rhs ) const
15864 {
15865 return ( linearTilingFeatures == rhs.linearTilingFeatures )
15866 && ( optimalTilingFeatures == rhs.optimalTilingFeatures )
15867 && ( bufferFeatures == rhs.bufferFeatures );
15868 }
15869
15870 bool operator!=( FormatProperties const& rhs ) const
15871 {
15872 return !operator==( rhs );
15873 }
15874
15875 FormatFeatureFlags linearTilingFeatures;
15876 FormatFeatureFlags optimalTilingFeatures;
15877 FormatFeatureFlags bufferFeatures;
15878 };
15879 static_assert( sizeof( FormatProperties ) == sizeof( VkFormatProperties ), "struct and wrapper have different size!" );
15880
Mark Young39389872017-01-19 21:10:49 -070015881 struct FormatProperties2KHR
15882 {
15883 operator const VkFormatProperties2KHR&() const
15884 {
15885 return *reinterpret_cast<const VkFormatProperties2KHR*>(this);
15886 }
15887
15888 bool operator==( FormatProperties2KHR const& rhs ) const
15889 {
15890 return ( sType == rhs.sType )
15891 && ( pNext == rhs.pNext )
15892 && ( formatProperties == rhs.formatProperties );
15893 }
15894
15895 bool operator!=( FormatProperties2KHR const& rhs ) const
15896 {
15897 return !operator==( rhs );
15898 }
15899
15900 private:
15901 StructureType sType;
15902
15903 public:
15904 void* pNext;
15905 FormatProperties formatProperties;
15906 };
15907 static_assert( sizeof( FormatProperties2KHR ) == sizeof( VkFormatProperties2KHR ), "struct and wrapper have different size!" );
15908
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015909 enum class QueryControlFlagBits
15910 {
15911 ePrecise = VK_QUERY_CONTROL_PRECISE_BIT
15912 };
15913
15914 using QueryControlFlags = Flags<QueryControlFlagBits, VkQueryControlFlags>;
15915
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015916 VULKAN_HPP_INLINE QueryControlFlags operator|( QueryControlFlagBits bit0, QueryControlFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015917 {
15918 return QueryControlFlags( bit0 ) | bit1;
15919 }
15920
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015921 VULKAN_HPP_INLINE QueryControlFlags operator~( QueryControlFlagBits bits )
15922 {
15923 return ~( QueryControlFlags( bits ) );
15924 }
15925
15926 template <> struct FlagTraits<QueryControlFlagBits>
15927 {
15928 enum
15929 {
15930 allFlags = VkFlags(QueryControlFlagBits::ePrecise)
15931 };
15932 };
15933
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015934 enum class QueryResultFlagBits
15935 {
15936 e64 = VK_QUERY_RESULT_64_BIT,
15937 eWait = VK_QUERY_RESULT_WAIT_BIT,
15938 eWithAvailability = VK_QUERY_RESULT_WITH_AVAILABILITY_BIT,
15939 ePartial = VK_QUERY_RESULT_PARTIAL_BIT
15940 };
15941
15942 using QueryResultFlags = Flags<QueryResultFlagBits, VkQueryResultFlags>;
15943
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015944 VULKAN_HPP_INLINE QueryResultFlags operator|( QueryResultFlagBits bit0, QueryResultFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015945 {
15946 return QueryResultFlags( bit0 ) | bit1;
15947 }
15948
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015949 VULKAN_HPP_INLINE QueryResultFlags operator~( QueryResultFlagBits bits )
15950 {
15951 return ~( QueryResultFlags( bits ) );
15952 }
15953
15954 template <> struct FlagTraits<QueryResultFlagBits>
15955 {
15956 enum
15957 {
15958 allFlags = VkFlags(QueryResultFlagBits::e64) | VkFlags(QueryResultFlagBits::eWait) | VkFlags(QueryResultFlagBits::eWithAvailability) | VkFlags(QueryResultFlagBits::ePartial)
15959 };
15960 };
15961
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015962 enum class CommandBufferUsageFlagBits
15963 {
15964 eOneTimeSubmit = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,
15965 eRenderPassContinue = VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT,
15966 eSimultaneousUse = VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
15967 };
15968
15969 using CommandBufferUsageFlags = Flags<CommandBufferUsageFlagBits, VkCommandBufferUsageFlags>;
15970
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015971 VULKAN_HPP_INLINE CommandBufferUsageFlags operator|( CommandBufferUsageFlagBits bit0, CommandBufferUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015972 {
15973 return CommandBufferUsageFlags( bit0 ) | bit1;
15974 }
15975
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015976 VULKAN_HPP_INLINE CommandBufferUsageFlags operator~( CommandBufferUsageFlagBits bits )
15977 {
15978 return ~( CommandBufferUsageFlags( bits ) );
15979 }
15980
15981 template <> struct FlagTraits<CommandBufferUsageFlagBits>
15982 {
15983 enum
15984 {
15985 allFlags = VkFlags(CommandBufferUsageFlagBits::eOneTimeSubmit) | VkFlags(CommandBufferUsageFlagBits::eRenderPassContinue) | VkFlags(CommandBufferUsageFlagBits::eSimultaneousUse)
15986 };
15987 };
15988
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015989 enum class QueryPipelineStatisticFlagBits
15990 {
15991 eInputAssemblyVertices = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT,
15992 eInputAssemblyPrimitives = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT,
15993 eVertexShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT,
15994 eGeometryShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT,
15995 eGeometryShaderPrimitives = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT,
15996 eClippingInvocations = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT,
15997 eClippingPrimitives = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT,
15998 eFragmentShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT,
15999 eTessellationControlShaderPatches = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT,
16000 eTessellationEvaluationShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT,
16001 eComputeShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT
16002 };
16003
16004 using QueryPipelineStatisticFlags = Flags<QueryPipelineStatisticFlagBits, VkQueryPipelineStatisticFlags>;
16005
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016006 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator|( QueryPipelineStatisticFlagBits bit0, QueryPipelineStatisticFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016007 {
16008 return QueryPipelineStatisticFlags( bit0 ) | bit1;
16009 }
16010
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016011 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator~( QueryPipelineStatisticFlagBits bits )
16012 {
16013 return ~( QueryPipelineStatisticFlags( bits ) );
16014 }
16015
16016 template <> struct FlagTraits<QueryPipelineStatisticFlagBits>
16017 {
16018 enum
16019 {
16020 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)
16021 };
16022 };
16023
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016024 struct CommandBufferInheritanceInfo
16025 {
16026 CommandBufferInheritanceInfo( RenderPass renderPass_ = RenderPass(), uint32_t subpass_ = 0, Framebuffer framebuffer_ = Framebuffer(), Bool32 occlusionQueryEnable_ = 0, QueryControlFlags queryFlags_ = QueryControlFlags(), QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
16027 : sType( StructureType::eCommandBufferInheritanceInfo )
16028 , pNext( nullptr )
16029 , renderPass( renderPass_ )
16030 , subpass( subpass_ )
16031 , framebuffer( framebuffer_ )
16032 , occlusionQueryEnable( occlusionQueryEnable_ )
16033 , queryFlags( queryFlags_ )
16034 , pipelineStatistics( pipelineStatistics_ )
16035 {
16036 }
16037
16038 CommandBufferInheritanceInfo( VkCommandBufferInheritanceInfo const & rhs )
16039 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016040 memcpy( this, &rhs, sizeof( CommandBufferInheritanceInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016041 }
16042
16043 CommandBufferInheritanceInfo& operator=( VkCommandBufferInheritanceInfo const & rhs )
16044 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016045 memcpy( this, &rhs, sizeof( CommandBufferInheritanceInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016046 return *this;
16047 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016048 CommandBufferInheritanceInfo& setPNext( const void* pNext_ )
16049 {
16050 pNext = pNext_;
16051 return *this;
16052 }
16053
16054 CommandBufferInheritanceInfo& setRenderPass( RenderPass renderPass_ )
16055 {
16056 renderPass = renderPass_;
16057 return *this;
16058 }
16059
16060 CommandBufferInheritanceInfo& setSubpass( uint32_t subpass_ )
16061 {
16062 subpass = subpass_;
16063 return *this;
16064 }
16065
16066 CommandBufferInheritanceInfo& setFramebuffer( Framebuffer framebuffer_ )
16067 {
16068 framebuffer = framebuffer_;
16069 return *this;
16070 }
16071
16072 CommandBufferInheritanceInfo& setOcclusionQueryEnable( Bool32 occlusionQueryEnable_ )
16073 {
16074 occlusionQueryEnable = occlusionQueryEnable_;
16075 return *this;
16076 }
16077
16078 CommandBufferInheritanceInfo& setQueryFlags( QueryControlFlags queryFlags_ )
16079 {
16080 queryFlags = queryFlags_;
16081 return *this;
16082 }
16083
16084 CommandBufferInheritanceInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
16085 {
16086 pipelineStatistics = pipelineStatistics_;
16087 return *this;
16088 }
16089
16090 operator const VkCommandBufferInheritanceInfo&() const
16091 {
16092 return *reinterpret_cast<const VkCommandBufferInheritanceInfo*>(this);
16093 }
16094
16095 bool operator==( CommandBufferInheritanceInfo const& rhs ) const
16096 {
16097 return ( sType == rhs.sType )
16098 && ( pNext == rhs.pNext )
16099 && ( renderPass == rhs.renderPass )
16100 && ( subpass == rhs.subpass )
16101 && ( framebuffer == rhs.framebuffer )
16102 && ( occlusionQueryEnable == rhs.occlusionQueryEnable )
16103 && ( queryFlags == rhs.queryFlags )
16104 && ( pipelineStatistics == rhs.pipelineStatistics );
16105 }
16106
16107 bool operator!=( CommandBufferInheritanceInfo const& rhs ) const
16108 {
16109 return !operator==( rhs );
16110 }
16111
16112 private:
16113 StructureType sType;
16114
16115 public:
16116 const void* pNext;
16117 RenderPass renderPass;
16118 uint32_t subpass;
16119 Framebuffer framebuffer;
16120 Bool32 occlusionQueryEnable;
16121 QueryControlFlags queryFlags;
16122 QueryPipelineStatisticFlags pipelineStatistics;
16123 };
16124 static_assert( sizeof( CommandBufferInheritanceInfo ) == sizeof( VkCommandBufferInheritanceInfo ), "struct and wrapper have different size!" );
16125
16126 struct CommandBufferBeginInfo
16127 {
16128 CommandBufferBeginInfo( CommandBufferUsageFlags flags_ = CommandBufferUsageFlags(), const CommandBufferInheritanceInfo* pInheritanceInfo_ = nullptr )
16129 : sType( StructureType::eCommandBufferBeginInfo )
16130 , pNext( nullptr )
16131 , flags( flags_ )
16132 , pInheritanceInfo( pInheritanceInfo_ )
16133 {
16134 }
16135
16136 CommandBufferBeginInfo( VkCommandBufferBeginInfo const & rhs )
16137 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016138 memcpy( this, &rhs, sizeof( CommandBufferBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016139 }
16140
16141 CommandBufferBeginInfo& operator=( VkCommandBufferBeginInfo const & rhs )
16142 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016143 memcpy( this, &rhs, sizeof( CommandBufferBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016144 return *this;
16145 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016146 CommandBufferBeginInfo& setPNext( const void* pNext_ )
16147 {
16148 pNext = pNext_;
16149 return *this;
16150 }
16151
16152 CommandBufferBeginInfo& setFlags( CommandBufferUsageFlags flags_ )
16153 {
16154 flags = flags_;
16155 return *this;
16156 }
16157
16158 CommandBufferBeginInfo& setPInheritanceInfo( const CommandBufferInheritanceInfo* pInheritanceInfo_ )
16159 {
16160 pInheritanceInfo = pInheritanceInfo_;
16161 return *this;
16162 }
16163
16164 operator const VkCommandBufferBeginInfo&() const
16165 {
16166 return *reinterpret_cast<const VkCommandBufferBeginInfo*>(this);
16167 }
16168
16169 bool operator==( CommandBufferBeginInfo const& rhs ) const
16170 {
16171 return ( sType == rhs.sType )
16172 && ( pNext == rhs.pNext )
16173 && ( flags == rhs.flags )
16174 && ( pInheritanceInfo == rhs.pInheritanceInfo );
16175 }
16176
16177 bool operator!=( CommandBufferBeginInfo const& rhs ) const
16178 {
16179 return !operator==( rhs );
16180 }
16181
16182 private:
16183 StructureType sType;
16184
16185 public:
16186 const void* pNext;
16187 CommandBufferUsageFlags flags;
16188 const CommandBufferInheritanceInfo* pInheritanceInfo;
16189 };
16190 static_assert( sizeof( CommandBufferBeginInfo ) == sizeof( VkCommandBufferBeginInfo ), "struct and wrapper have different size!" );
16191
16192 struct QueryPoolCreateInfo
16193 {
16194 QueryPoolCreateInfo( QueryPoolCreateFlags flags_ = QueryPoolCreateFlags(), QueryType queryType_ = QueryType::eOcclusion, uint32_t queryCount_ = 0, QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
16195 : sType( StructureType::eQueryPoolCreateInfo )
16196 , pNext( nullptr )
16197 , flags( flags_ )
16198 , queryType( queryType_ )
16199 , queryCount( queryCount_ )
16200 , pipelineStatistics( pipelineStatistics_ )
16201 {
16202 }
16203
16204 QueryPoolCreateInfo( VkQueryPoolCreateInfo const & rhs )
16205 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016206 memcpy( this, &rhs, sizeof( QueryPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016207 }
16208
16209 QueryPoolCreateInfo& operator=( VkQueryPoolCreateInfo const & rhs )
16210 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016211 memcpy( this, &rhs, sizeof( QueryPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016212 return *this;
16213 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016214 QueryPoolCreateInfo& setPNext( const void* pNext_ )
16215 {
16216 pNext = pNext_;
16217 return *this;
16218 }
16219
16220 QueryPoolCreateInfo& setFlags( QueryPoolCreateFlags flags_ )
16221 {
16222 flags = flags_;
16223 return *this;
16224 }
16225
16226 QueryPoolCreateInfo& setQueryType( QueryType queryType_ )
16227 {
16228 queryType = queryType_;
16229 return *this;
16230 }
16231
16232 QueryPoolCreateInfo& setQueryCount( uint32_t queryCount_ )
16233 {
16234 queryCount = queryCount_;
16235 return *this;
16236 }
16237
16238 QueryPoolCreateInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
16239 {
16240 pipelineStatistics = pipelineStatistics_;
16241 return *this;
16242 }
16243
16244 operator const VkQueryPoolCreateInfo&() const
16245 {
16246 return *reinterpret_cast<const VkQueryPoolCreateInfo*>(this);
16247 }
16248
16249 bool operator==( QueryPoolCreateInfo const& rhs ) const
16250 {
16251 return ( sType == rhs.sType )
16252 && ( pNext == rhs.pNext )
16253 && ( flags == rhs.flags )
16254 && ( queryType == rhs.queryType )
16255 && ( queryCount == rhs.queryCount )
16256 && ( pipelineStatistics == rhs.pipelineStatistics );
16257 }
16258
16259 bool operator!=( QueryPoolCreateInfo const& rhs ) const
16260 {
16261 return !operator==( rhs );
16262 }
16263
16264 private:
16265 StructureType sType;
16266
16267 public:
16268 const void* pNext;
16269 QueryPoolCreateFlags flags;
16270 QueryType queryType;
16271 uint32_t queryCount;
16272 QueryPipelineStatisticFlags pipelineStatistics;
16273 };
16274 static_assert( sizeof( QueryPoolCreateInfo ) == sizeof( VkQueryPoolCreateInfo ), "struct and wrapper have different size!" );
16275
16276 enum class ImageAspectFlagBits
16277 {
16278 eColor = VK_IMAGE_ASPECT_COLOR_BIT,
16279 eDepth = VK_IMAGE_ASPECT_DEPTH_BIT,
16280 eStencil = VK_IMAGE_ASPECT_STENCIL_BIT,
Lenny Komowb79f04a2017-09-18 17:07:00 -060016281 eMetadata = VK_IMAGE_ASPECT_METADATA_BIT,
16282 ePlane0KHR = VK_IMAGE_ASPECT_PLANE_0_BIT_KHR,
16283 ePlane1KHR = VK_IMAGE_ASPECT_PLANE_1_BIT_KHR,
16284 ePlane2KHR = VK_IMAGE_ASPECT_PLANE_2_BIT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016285 };
16286
16287 using ImageAspectFlags = Flags<ImageAspectFlagBits, VkImageAspectFlags>;
16288
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016289 VULKAN_HPP_INLINE ImageAspectFlags operator|( ImageAspectFlagBits bit0, ImageAspectFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016290 {
16291 return ImageAspectFlags( bit0 ) | bit1;
16292 }
16293
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016294 VULKAN_HPP_INLINE ImageAspectFlags operator~( ImageAspectFlagBits bits )
16295 {
16296 return ~( ImageAspectFlags( bits ) );
16297 }
16298
16299 template <> struct FlagTraits<ImageAspectFlagBits>
16300 {
16301 enum
16302 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060016303 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 -070016304 };
16305 };
16306
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016307 struct ImageSubresource
16308 {
16309 ImageSubresource( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t mipLevel_ = 0, uint32_t arrayLayer_ = 0 )
16310 : aspectMask( aspectMask_ )
16311 , mipLevel( mipLevel_ )
16312 , arrayLayer( arrayLayer_ )
16313 {
16314 }
16315
16316 ImageSubresource( VkImageSubresource const & rhs )
16317 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016318 memcpy( this, &rhs, sizeof( ImageSubresource ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016319 }
16320
16321 ImageSubresource& operator=( VkImageSubresource const & rhs )
16322 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016323 memcpy( this, &rhs, sizeof( ImageSubresource ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016324 return *this;
16325 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016326 ImageSubresource& setAspectMask( ImageAspectFlags aspectMask_ )
16327 {
16328 aspectMask = aspectMask_;
16329 return *this;
16330 }
16331
16332 ImageSubresource& setMipLevel( uint32_t mipLevel_ )
16333 {
16334 mipLevel = mipLevel_;
16335 return *this;
16336 }
16337
16338 ImageSubresource& setArrayLayer( uint32_t arrayLayer_ )
16339 {
16340 arrayLayer = arrayLayer_;
16341 return *this;
16342 }
16343
16344 operator const VkImageSubresource&() const
16345 {
16346 return *reinterpret_cast<const VkImageSubresource*>(this);
16347 }
16348
16349 bool operator==( ImageSubresource const& rhs ) const
16350 {
16351 return ( aspectMask == rhs.aspectMask )
16352 && ( mipLevel == rhs.mipLevel )
16353 && ( arrayLayer == rhs.arrayLayer );
16354 }
16355
16356 bool operator!=( ImageSubresource const& rhs ) const
16357 {
16358 return !operator==( rhs );
16359 }
16360
16361 ImageAspectFlags aspectMask;
16362 uint32_t mipLevel;
16363 uint32_t arrayLayer;
16364 };
16365 static_assert( sizeof( ImageSubresource ) == sizeof( VkImageSubresource ), "struct and wrapper have different size!" );
16366
16367 struct ImageSubresourceLayers
16368 {
16369 ImageSubresourceLayers( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t mipLevel_ = 0, uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
16370 : aspectMask( aspectMask_ )
16371 , mipLevel( mipLevel_ )
16372 , baseArrayLayer( baseArrayLayer_ )
16373 , layerCount( layerCount_ )
16374 {
16375 }
16376
16377 ImageSubresourceLayers( VkImageSubresourceLayers const & rhs )
16378 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016379 memcpy( this, &rhs, sizeof( ImageSubresourceLayers ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016380 }
16381
16382 ImageSubresourceLayers& operator=( VkImageSubresourceLayers const & rhs )
16383 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016384 memcpy( this, &rhs, sizeof( ImageSubresourceLayers ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016385 return *this;
16386 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016387 ImageSubresourceLayers& setAspectMask( ImageAspectFlags aspectMask_ )
16388 {
16389 aspectMask = aspectMask_;
16390 return *this;
16391 }
16392
16393 ImageSubresourceLayers& setMipLevel( uint32_t mipLevel_ )
16394 {
16395 mipLevel = mipLevel_;
16396 return *this;
16397 }
16398
16399 ImageSubresourceLayers& setBaseArrayLayer( uint32_t baseArrayLayer_ )
16400 {
16401 baseArrayLayer = baseArrayLayer_;
16402 return *this;
16403 }
16404
16405 ImageSubresourceLayers& setLayerCount( uint32_t layerCount_ )
16406 {
16407 layerCount = layerCount_;
16408 return *this;
16409 }
16410
16411 operator const VkImageSubresourceLayers&() const
16412 {
16413 return *reinterpret_cast<const VkImageSubresourceLayers*>(this);
16414 }
16415
16416 bool operator==( ImageSubresourceLayers const& rhs ) const
16417 {
16418 return ( aspectMask == rhs.aspectMask )
16419 && ( mipLevel == rhs.mipLevel )
16420 && ( baseArrayLayer == rhs.baseArrayLayer )
16421 && ( layerCount == rhs.layerCount );
16422 }
16423
16424 bool operator!=( ImageSubresourceLayers const& rhs ) const
16425 {
16426 return !operator==( rhs );
16427 }
16428
16429 ImageAspectFlags aspectMask;
16430 uint32_t mipLevel;
16431 uint32_t baseArrayLayer;
16432 uint32_t layerCount;
16433 };
16434 static_assert( sizeof( ImageSubresourceLayers ) == sizeof( VkImageSubresourceLayers ), "struct and wrapper have different size!" );
16435
16436 struct ImageSubresourceRange
16437 {
16438 ImageSubresourceRange( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t baseMipLevel_ = 0, uint32_t levelCount_ = 0, uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
16439 : aspectMask( aspectMask_ )
16440 , baseMipLevel( baseMipLevel_ )
16441 , levelCount( levelCount_ )
16442 , baseArrayLayer( baseArrayLayer_ )
16443 , layerCount( layerCount_ )
16444 {
16445 }
16446
16447 ImageSubresourceRange( VkImageSubresourceRange const & rhs )
16448 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016449 memcpy( this, &rhs, sizeof( ImageSubresourceRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016450 }
16451
16452 ImageSubresourceRange& operator=( VkImageSubresourceRange const & rhs )
16453 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016454 memcpy( this, &rhs, sizeof( ImageSubresourceRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016455 return *this;
16456 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016457 ImageSubresourceRange& setAspectMask( ImageAspectFlags aspectMask_ )
16458 {
16459 aspectMask = aspectMask_;
16460 return *this;
16461 }
16462
16463 ImageSubresourceRange& setBaseMipLevel( uint32_t baseMipLevel_ )
16464 {
16465 baseMipLevel = baseMipLevel_;
16466 return *this;
16467 }
16468
16469 ImageSubresourceRange& setLevelCount( uint32_t levelCount_ )
16470 {
16471 levelCount = levelCount_;
16472 return *this;
16473 }
16474
16475 ImageSubresourceRange& setBaseArrayLayer( uint32_t baseArrayLayer_ )
16476 {
16477 baseArrayLayer = baseArrayLayer_;
16478 return *this;
16479 }
16480
16481 ImageSubresourceRange& setLayerCount( uint32_t layerCount_ )
16482 {
16483 layerCount = layerCount_;
16484 return *this;
16485 }
16486
16487 operator const VkImageSubresourceRange&() const
16488 {
16489 return *reinterpret_cast<const VkImageSubresourceRange*>(this);
16490 }
16491
16492 bool operator==( ImageSubresourceRange const& rhs ) const
16493 {
16494 return ( aspectMask == rhs.aspectMask )
16495 && ( baseMipLevel == rhs.baseMipLevel )
16496 && ( levelCount == rhs.levelCount )
16497 && ( baseArrayLayer == rhs.baseArrayLayer )
16498 && ( layerCount == rhs.layerCount );
16499 }
16500
16501 bool operator!=( ImageSubresourceRange const& rhs ) const
16502 {
16503 return !operator==( rhs );
16504 }
16505
16506 ImageAspectFlags aspectMask;
16507 uint32_t baseMipLevel;
16508 uint32_t levelCount;
16509 uint32_t baseArrayLayer;
16510 uint32_t layerCount;
16511 };
16512 static_assert( sizeof( ImageSubresourceRange ) == sizeof( VkImageSubresourceRange ), "struct and wrapper have different size!" );
16513
16514 struct ImageMemoryBarrier
16515 {
16516 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() )
16517 : sType( StructureType::eImageMemoryBarrier )
16518 , pNext( nullptr )
16519 , srcAccessMask( srcAccessMask_ )
16520 , dstAccessMask( dstAccessMask_ )
16521 , oldLayout( oldLayout_ )
16522 , newLayout( newLayout_ )
16523 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
16524 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
16525 , image( image_ )
16526 , subresourceRange( subresourceRange_ )
16527 {
16528 }
16529
16530 ImageMemoryBarrier( VkImageMemoryBarrier const & rhs )
16531 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016532 memcpy( this, &rhs, sizeof( ImageMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016533 }
16534
16535 ImageMemoryBarrier& operator=( VkImageMemoryBarrier const & rhs )
16536 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016537 memcpy( this, &rhs, sizeof( ImageMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016538 return *this;
16539 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016540 ImageMemoryBarrier& setPNext( const void* pNext_ )
16541 {
16542 pNext = pNext_;
16543 return *this;
16544 }
16545
16546 ImageMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
16547 {
16548 srcAccessMask = srcAccessMask_;
16549 return *this;
16550 }
16551
16552 ImageMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
16553 {
16554 dstAccessMask = dstAccessMask_;
16555 return *this;
16556 }
16557
16558 ImageMemoryBarrier& setOldLayout( ImageLayout oldLayout_ )
16559 {
16560 oldLayout = oldLayout_;
16561 return *this;
16562 }
16563
16564 ImageMemoryBarrier& setNewLayout( ImageLayout newLayout_ )
16565 {
16566 newLayout = newLayout_;
16567 return *this;
16568 }
16569
16570 ImageMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
16571 {
16572 srcQueueFamilyIndex = srcQueueFamilyIndex_;
16573 return *this;
16574 }
16575
16576 ImageMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
16577 {
16578 dstQueueFamilyIndex = dstQueueFamilyIndex_;
16579 return *this;
16580 }
16581
16582 ImageMemoryBarrier& setImage( Image image_ )
16583 {
16584 image = image_;
16585 return *this;
16586 }
16587
16588 ImageMemoryBarrier& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
16589 {
16590 subresourceRange = subresourceRange_;
16591 return *this;
16592 }
16593
16594 operator const VkImageMemoryBarrier&() const
16595 {
16596 return *reinterpret_cast<const VkImageMemoryBarrier*>(this);
16597 }
16598
16599 bool operator==( ImageMemoryBarrier const& rhs ) const
16600 {
16601 return ( sType == rhs.sType )
16602 && ( pNext == rhs.pNext )
16603 && ( srcAccessMask == rhs.srcAccessMask )
16604 && ( dstAccessMask == rhs.dstAccessMask )
16605 && ( oldLayout == rhs.oldLayout )
16606 && ( newLayout == rhs.newLayout )
16607 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
16608 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
16609 && ( image == rhs.image )
16610 && ( subresourceRange == rhs.subresourceRange );
16611 }
16612
16613 bool operator!=( ImageMemoryBarrier const& rhs ) const
16614 {
16615 return !operator==( rhs );
16616 }
16617
16618 private:
16619 StructureType sType;
16620
16621 public:
16622 const void* pNext;
16623 AccessFlags srcAccessMask;
16624 AccessFlags dstAccessMask;
16625 ImageLayout oldLayout;
16626 ImageLayout newLayout;
16627 uint32_t srcQueueFamilyIndex;
16628 uint32_t dstQueueFamilyIndex;
16629 Image image;
16630 ImageSubresourceRange subresourceRange;
16631 };
16632 static_assert( sizeof( ImageMemoryBarrier ) == sizeof( VkImageMemoryBarrier ), "struct and wrapper have different size!" );
16633
16634 struct ImageViewCreateInfo
16635 {
16636 ImageViewCreateInfo( ImageViewCreateFlags flags_ = ImageViewCreateFlags(), Image image_ = Image(), ImageViewType viewType_ = ImageViewType::e1D, Format format_ = Format::eUndefined, ComponentMapping components_ = ComponentMapping(), ImageSubresourceRange subresourceRange_ = ImageSubresourceRange() )
16637 : sType( StructureType::eImageViewCreateInfo )
16638 , pNext( nullptr )
16639 , flags( flags_ )
16640 , image( image_ )
16641 , viewType( viewType_ )
16642 , format( format_ )
16643 , components( components_ )
16644 , subresourceRange( subresourceRange_ )
16645 {
16646 }
16647
16648 ImageViewCreateInfo( VkImageViewCreateInfo const & rhs )
16649 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016650 memcpy( this, &rhs, sizeof( ImageViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016651 }
16652
16653 ImageViewCreateInfo& operator=( VkImageViewCreateInfo const & rhs )
16654 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016655 memcpy( this, &rhs, sizeof( ImageViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016656 return *this;
16657 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016658 ImageViewCreateInfo& setPNext( const void* pNext_ )
16659 {
16660 pNext = pNext_;
16661 return *this;
16662 }
16663
16664 ImageViewCreateInfo& setFlags( ImageViewCreateFlags flags_ )
16665 {
16666 flags = flags_;
16667 return *this;
16668 }
16669
16670 ImageViewCreateInfo& setImage( Image image_ )
16671 {
16672 image = image_;
16673 return *this;
16674 }
16675
16676 ImageViewCreateInfo& setViewType( ImageViewType viewType_ )
16677 {
16678 viewType = viewType_;
16679 return *this;
16680 }
16681
16682 ImageViewCreateInfo& setFormat( Format format_ )
16683 {
16684 format = format_;
16685 return *this;
16686 }
16687
16688 ImageViewCreateInfo& setComponents( ComponentMapping components_ )
16689 {
16690 components = components_;
16691 return *this;
16692 }
16693
16694 ImageViewCreateInfo& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
16695 {
16696 subresourceRange = subresourceRange_;
16697 return *this;
16698 }
16699
16700 operator const VkImageViewCreateInfo&() const
16701 {
16702 return *reinterpret_cast<const VkImageViewCreateInfo*>(this);
16703 }
16704
16705 bool operator==( ImageViewCreateInfo const& rhs ) const
16706 {
16707 return ( sType == rhs.sType )
16708 && ( pNext == rhs.pNext )
16709 && ( flags == rhs.flags )
16710 && ( image == rhs.image )
16711 && ( viewType == rhs.viewType )
16712 && ( format == rhs.format )
16713 && ( components == rhs.components )
16714 && ( subresourceRange == rhs.subresourceRange );
16715 }
16716
16717 bool operator!=( ImageViewCreateInfo const& rhs ) const
16718 {
16719 return !operator==( rhs );
16720 }
16721
16722 private:
16723 StructureType sType;
16724
16725 public:
16726 const void* pNext;
16727 ImageViewCreateFlags flags;
16728 Image image;
16729 ImageViewType viewType;
16730 Format format;
16731 ComponentMapping components;
16732 ImageSubresourceRange subresourceRange;
16733 };
16734 static_assert( sizeof( ImageViewCreateInfo ) == sizeof( VkImageViewCreateInfo ), "struct and wrapper have different size!" );
16735
16736 struct ImageCopy
16737 {
16738 ImageCopy( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), Offset3D srcOffset_ = Offset3D(), ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), Offset3D dstOffset_ = Offset3D(), Extent3D extent_ = Extent3D() )
16739 : srcSubresource( srcSubresource_ )
16740 , srcOffset( srcOffset_ )
16741 , dstSubresource( dstSubresource_ )
16742 , dstOffset( dstOffset_ )
16743 , extent( extent_ )
16744 {
16745 }
16746
16747 ImageCopy( VkImageCopy const & rhs )
16748 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016749 memcpy( this, &rhs, sizeof( ImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016750 }
16751
16752 ImageCopy& operator=( VkImageCopy const & rhs )
16753 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016754 memcpy( this, &rhs, sizeof( ImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016755 return *this;
16756 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016757 ImageCopy& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
16758 {
16759 srcSubresource = srcSubresource_;
16760 return *this;
16761 }
16762
16763 ImageCopy& setSrcOffset( Offset3D srcOffset_ )
16764 {
16765 srcOffset = srcOffset_;
16766 return *this;
16767 }
16768
16769 ImageCopy& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
16770 {
16771 dstSubresource = dstSubresource_;
16772 return *this;
16773 }
16774
16775 ImageCopy& setDstOffset( Offset3D dstOffset_ )
16776 {
16777 dstOffset = dstOffset_;
16778 return *this;
16779 }
16780
16781 ImageCopy& setExtent( Extent3D extent_ )
16782 {
16783 extent = extent_;
16784 return *this;
16785 }
16786
16787 operator const VkImageCopy&() const
16788 {
16789 return *reinterpret_cast<const VkImageCopy*>(this);
16790 }
16791
16792 bool operator==( ImageCopy const& rhs ) const
16793 {
16794 return ( srcSubresource == rhs.srcSubresource )
16795 && ( srcOffset == rhs.srcOffset )
16796 && ( dstSubresource == rhs.dstSubresource )
16797 && ( dstOffset == rhs.dstOffset )
16798 && ( extent == rhs.extent );
16799 }
16800
16801 bool operator!=( ImageCopy const& rhs ) const
16802 {
16803 return !operator==( rhs );
16804 }
16805
16806 ImageSubresourceLayers srcSubresource;
16807 Offset3D srcOffset;
16808 ImageSubresourceLayers dstSubresource;
16809 Offset3D dstOffset;
16810 Extent3D extent;
16811 };
16812 static_assert( sizeof( ImageCopy ) == sizeof( VkImageCopy ), "struct and wrapper have different size!" );
16813
16814 struct ImageBlit
16815 {
16816 ImageBlit( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), std::array<Offset3D,2> const& srcOffsets_ = { { Offset3D(), Offset3D() } }, ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), std::array<Offset3D,2> const& dstOffsets_ = { { Offset3D(), Offset3D() } } )
16817 : srcSubresource( srcSubresource_ )
16818 , dstSubresource( dstSubresource_ )
16819 {
16820 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
16821 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
16822 }
16823
16824 ImageBlit( VkImageBlit const & rhs )
16825 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016826 memcpy( this, &rhs, sizeof( ImageBlit ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016827 }
16828
16829 ImageBlit& operator=( VkImageBlit const & rhs )
16830 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016831 memcpy( this, &rhs, sizeof( ImageBlit ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016832 return *this;
16833 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016834 ImageBlit& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
16835 {
16836 srcSubresource = srcSubresource_;
16837 return *this;
16838 }
16839
16840 ImageBlit& setSrcOffsets( std::array<Offset3D,2> srcOffsets_ )
16841 {
16842 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
16843 return *this;
16844 }
16845
16846 ImageBlit& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
16847 {
16848 dstSubresource = dstSubresource_;
16849 return *this;
16850 }
16851
16852 ImageBlit& setDstOffsets( std::array<Offset3D,2> dstOffsets_ )
16853 {
16854 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
16855 return *this;
16856 }
16857
16858 operator const VkImageBlit&() const
16859 {
16860 return *reinterpret_cast<const VkImageBlit*>(this);
16861 }
16862
16863 bool operator==( ImageBlit const& rhs ) const
16864 {
16865 return ( srcSubresource == rhs.srcSubresource )
16866 && ( memcmp( srcOffsets, rhs.srcOffsets, 2 * sizeof( Offset3D ) ) == 0 )
16867 && ( dstSubresource == rhs.dstSubresource )
16868 && ( memcmp( dstOffsets, rhs.dstOffsets, 2 * sizeof( Offset3D ) ) == 0 );
16869 }
16870
16871 bool operator!=( ImageBlit const& rhs ) const
16872 {
16873 return !operator==( rhs );
16874 }
16875
16876 ImageSubresourceLayers srcSubresource;
16877 Offset3D srcOffsets[2];
16878 ImageSubresourceLayers dstSubresource;
16879 Offset3D dstOffsets[2];
16880 };
16881 static_assert( sizeof( ImageBlit ) == sizeof( VkImageBlit ), "struct and wrapper have different size!" );
16882
16883 struct BufferImageCopy
16884 {
16885 BufferImageCopy( DeviceSize bufferOffset_ = 0, uint32_t bufferRowLength_ = 0, uint32_t bufferImageHeight_ = 0, ImageSubresourceLayers imageSubresource_ = ImageSubresourceLayers(), Offset3D imageOffset_ = Offset3D(), Extent3D imageExtent_ = Extent3D() )
16886 : bufferOffset( bufferOffset_ )
16887 , bufferRowLength( bufferRowLength_ )
16888 , bufferImageHeight( bufferImageHeight_ )
16889 , imageSubresource( imageSubresource_ )
16890 , imageOffset( imageOffset_ )
16891 , imageExtent( imageExtent_ )
16892 {
16893 }
16894
16895 BufferImageCopy( VkBufferImageCopy const & rhs )
16896 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016897 memcpy( this, &rhs, sizeof( BufferImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016898 }
16899
16900 BufferImageCopy& operator=( VkBufferImageCopy const & rhs )
16901 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016902 memcpy( this, &rhs, sizeof( BufferImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016903 return *this;
16904 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016905 BufferImageCopy& setBufferOffset( DeviceSize bufferOffset_ )
16906 {
16907 bufferOffset = bufferOffset_;
16908 return *this;
16909 }
16910
16911 BufferImageCopy& setBufferRowLength( uint32_t bufferRowLength_ )
16912 {
16913 bufferRowLength = bufferRowLength_;
16914 return *this;
16915 }
16916
16917 BufferImageCopy& setBufferImageHeight( uint32_t bufferImageHeight_ )
16918 {
16919 bufferImageHeight = bufferImageHeight_;
16920 return *this;
16921 }
16922
16923 BufferImageCopy& setImageSubresource( ImageSubresourceLayers imageSubresource_ )
16924 {
16925 imageSubresource = imageSubresource_;
16926 return *this;
16927 }
16928
16929 BufferImageCopy& setImageOffset( Offset3D imageOffset_ )
16930 {
16931 imageOffset = imageOffset_;
16932 return *this;
16933 }
16934
16935 BufferImageCopy& setImageExtent( Extent3D imageExtent_ )
16936 {
16937 imageExtent = imageExtent_;
16938 return *this;
16939 }
16940
16941 operator const VkBufferImageCopy&() const
16942 {
16943 return *reinterpret_cast<const VkBufferImageCopy*>(this);
16944 }
16945
16946 bool operator==( BufferImageCopy const& rhs ) const
16947 {
16948 return ( bufferOffset == rhs.bufferOffset )
16949 && ( bufferRowLength == rhs.bufferRowLength )
16950 && ( bufferImageHeight == rhs.bufferImageHeight )
16951 && ( imageSubresource == rhs.imageSubresource )
16952 && ( imageOffset == rhs.imageOffset )
16953 && ( imageExtent == rhs.imageExtent );
16954 }
16955
16956 bool operator!=( BufferImageCopy const& rhs ) const
16957 {
16958 return !operator==( rhs );
16959 }
16960
16961 DeviceSize bufferOffset;
16962 uint32_t bufferRowLength;
16963 uint32_t bufferImageHeight;
16964 ImageSubresourceLayers imageSubresource;
16965 Offset3D imageOffset;
16966 Extent3D imageExtent;
16967 };
16968 static_assert( sizeof( BufferImageCopy ) == sizeof( VkBufferImageCopy ), "struct and wrapper have different size!" );
16969
16970 struct ImageResolve
16971 {
16972 ImageResolve( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), Offset3D srcOffset_ = Offset3D(), ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), Offset3D dstOffset_ = Offset3D(), Extent3D extent_ = Extent3D() )
16973 : srcSubresource( srcSubresource_ )
16974 , srcOffset( srcOffset_ )
16975 , dstSubresource( dstSubresource_ )
16976 , dstOffset( dstOffset_ )
16977 , extent( extent_ )
16978 {
16979 }
16980
16981 ImageResolve( VkImageResolve const & rhs )
16982 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016983 memcpy( this, &rhs, sizeof( ImageResolve ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016984 }
16985
16986 ImageResolve& operator=( VkImageResolve const & rhs )
16987 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016988 memcpy( this, &rhs, sizeof( ImageResolve ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016989 return *this;
16990 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016991 ImageResolve& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
16992 {
16993 srcSubresource = srcSubresource_;
16994 return *this;
16995 }
16996
16997 ImageResolve& setSrcOffset( Offset3D srcOffset_ )
16998 {
16999 srcOffset = srcOffset_;
17000 return *this;
17001 }
17002
17003 ImageResolve& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
17004 {
17005 dstSubresource = dstSubresource_;
17006 return *this;
17007 }
17008
17009 ImageResolve& setDstOffset( Offset3D dstOffset_ )
17010 {
17011 dstOffset = dstOffset_;
17012 return *this;
17013 }
17014
17015 ImageResolve& setExtent( Extent3D extent_ )
17016 {
17017 extent = extent_;
17018 return *this;
17019 }
17020
17021 operator const VkImageResolve&() const
17022 {
17023 return *reinterpret_cast<const VkImageResolve*>(this);
17024 }
17025
17026 bool operator==( ImageResolve const& rhs ) const
17027 {
17028 return ( srcSubresource == rhs.srcSubresource )
17029 && ( srcOffset == rhs.srcOffset )
17030 && ( dstSubresource == rhs.dstSubresource )
17031 && ( dstOffset == rhs.dstOffset )
17032 && ( extent == rhs.extent );
17033 }
17034
17035 bool operator!=( ImageResolve const& rhs ) const
17036 {
17037 return !operator==( rhs );
17038 }
17039
17040 ImageSubresourceLayers srcSubresource;
17041 Offset3D srcOffset;
17042 ImageSubresourceLayers dstSubresource;
17043 Offset3D dstOffset;
17044 Extent3D extent;
17045 };
17046 static_assert( sizeof( ImageResolve ) == sizeof( VkImageResolve ), "struct and wrapper have different size!" );
17047
17048 struct ClearAttachment
17049 {
17050 ClearAttachment( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t colorAttachment_ = 0, ClearValue clearValue_ = ClearValue() )
17051 : aspectMask( aspectMask_ )
17052 , colorAttachment( colorAttachment_ )
17053 , clearValue( clearValue_ )
17054 {
17055 }
17056
17057 ClearAttachment( VkClearAttachment const & rhs )
17058 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017059 memcpy( this, &rhs, sizeof( ClearAttachment ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017060 }
17061
17062 ClearAttachment& operator=( VkClearAttachment const & rhs )
17063 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017064 memcpy( this, &rhs, sizeof( ClearAttachment ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017065 return *this;
17066 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017067 ClearAttachment& setAspectMask( ImageAspectFlags aspectMask_ )
17068 {
17069 aspectMask = aspectMask_;
17070 return *this;
17071 }
17072
17073 ClearAttachment& setColorAttachment( uint32_t colorAttachment_ )
17074 {
17075 colorAttachment = colorAttachment_;
17076 return *this;
17077 }
17078
17079 ClearAttachment& setClearValue( ClearValue clearValue_ )
17080 {
17081 clearValue = clearValue_;
17082 return *this;
17083 }
17084
17085 operator const VkClearAttachment&() const
17086 {
17087 return *reinterpret_cast<const VkClearAttachment*>(this);
17088 }
17089
17090 ImageAspectFlags aspectMask;
17091 uint32_t colorAttachment;
17092 ClearValue clearValue;
17093 };
17094 static_assert( sizeof( ClearAttachment ) == sizeof( VkClearAttachment ), "struct and wrapper have different size!" );
17095
Lenny Komowb79f04a2017-09-18 17:07:00 -060017096 struct InputAttachmentAspectReferenceKHR
17097 {
17098 InputAttachmentAspectReferenceKHR( uint32_t subpass_ = 0, uint32_t inputAttachmentIndex_ = 0, ImageAspectFlags aspectMask_ = ImageAspectFlags() )
17099 : subpass( subpass_ )
17100 , inputAttachmentIndex( inputAttachmentIndex_ )
17101 , aspectMask( aspectMask_ )
17102 {
17103 }
17104
17105 InputAttachmentAspectReferenceKHR( VkInputAttachmentAspectReferenceKHR const & rhs )
17106 {
17107 memcpy( this, &rhs, sizeof( InputAttachmentAspectReferenceKHR ) );
17108 }
17109
17110 InputAttachmentAspectReferenceKHR& operator=( VkInputAttachmentAspectReferenceKHR const & rhs )
17111 {
17112 memcpy( this, &rhs, sizeof( InputAttachmentAspectReferenceKHR ) );
17113 return *this;
17114 }
17115 InputAttachmentAspectReferenceKHR& setSubpass( uint32_t subpass_ )
17116 {
17117 subpass = subpass_;
17118 return *this;
17119 }
17120
17121 InputAttachmentAspectReferenceKHR& setInputAttachmentIndex( uint32_t inputAttachmentIndex_ )
17122 {
17123 inputAttachmentIndex = inputAttachmentIndex_;
17124 return *this;
17125 }
17126
17127 InputAttachmentAspectReferenceKHR& setAspectMask( ImageAspectFlags aspectMask_ )
17128 {
17129 aspectMask = aspectMask_;
17130 return *this;
17131 }
17132
17133 operator const VkInputAttachmentAspectReferenceKHR&() const
17134 {
17135 return *reinterpret_cast<const VkInputAttachmentAspectReferenceKHR*>(this);
17136 }
17137
17138 bool operator==( InputAttachmentAspectReferenceKHR const& rhs ) const
17139 {
17140 return ( subpass == rhs.subpass )
17141 && ( inputAttachmentIndex == rhs.inputAttachmentIndex )
17142 && ( aspectMask == rhs.aspectMask );
17143 }
17144
17145 bool operator!=( InputAttachmentAspectReferenceKHR const& rhs ) const
17146 {
17147 return !operator==( rhs );
17148 }
17149
17150 uint32_t subpass;
17151 uint32_t inputAttachmentIndex;
17152 ImageAspectFlags aspectMask;
17153 };
17154 static_assert( sizeof( InputAttachmentAspectReferenceKHR ) == sizeof( VkInputAttachmentAspectReferenceKHR ), "struct and wrapper have different size!" );
17155
17156 struct RenderPassInputAttachmentAspectCreateInfoKHR
17157 {
17158 RenderPassInputAttachmentAspectCreateInfoKHR( uint32_t aspectReferenceCount_ = 0, const InputAttachmentAspectReferenceKHR* pAspectReferences_ = nullptr )
17159 : sType( StructureType::eRenderPassInputAttachmentAspectCreateInfoKHR )
17160 , pNext( nullptr )
17161 , aspectReferenceCount( aspectReferenceCount_ )
17162 , pAspectReferences( pAspectReferences_ )
17163 {
17164 }
17165
17166 RenderPassInputAttachmentAspectCreateInfoKHR( VkRenderPassInputAttachmentAspectCreateInfoKHR const & rhs )
17167 {
17168 memcpy( this, &rhs, sizeof( RenderPassInputAttachmentAspectCreateInfoKHR ) );
17169 }
17170
17171 RenderPassInputAttachmentAspectCreateInfoKHR& operator=( VkRenderPassInputAttachmentAspectCreateInfoKHR const & rhs )
17172 {
17173 memcpy( this, &rhs, sizeof( RenderPassInputAttachmentAspectCreateInfoKHR ) );
17174 return *this;
17175 }
17176 RenderPassInputAttachmentAspectCreateInfoKHR& setPNext( const void* pNext_ )
17177 {
17178 pNext = pNext_;
17179 return *this;
17180 }
17181
17182 RenderPassInputAttachmentAspectCreateInfoKHR& setAspectReferenceCount( uint32_t aspectReferenceCount_ )
17183 {
17184 aspectReferenceCount = aspectReferenceCount_;
17185 return *this;
17186 }
17187
17188 RenderPassInputAttachmentAspectCreateInfoKHR& setPAspectReferences( const InputAttachmentAspectReferenceKHR* pAspectReferences_ )
17189 {
17190 pAspectReferences = pAspectReferences_;
17191 return *this;
17192 }
17193
17194 operator const VkRenderPassInputAttachmentAspectCreateInfoKHR&() const
17195 {
17196 return *reinterpret_cast<const VkRenderPassInputAttachmentAspectCreateInfoKHR*>(this);
17197 }
17198
17199 bool operator==( RenderPassInputAttachmentAspectCreateInfoKHR const& rhs ) const
17200 {
17201 return ( sType == rhs.sType )
17202 && ( pNext == rhs.pNext )
17203 && ( aspectReferenceCount == rhs.aspectReferenceCount )
17204 && ( pAspectReferences == rhs.pAspectReferences );
17205 }
17206
17207 bool operator!=( RenderPassInputAttachmentAspectCreateInfoKHR const& rhs ) const
17208 {
17209 return !operator==( rhs );
17210 }
17211
17212 private:
17213 StructureType sType;
17214
17215 public:
17216 const void* pNext;
17217 uint32_t aspectReferenceCount;
17218 const InputAttachmentAspectReferenceKHR* pAspectReferences;
17219 };
17220 static_assert( sizeof( RenderPassInputAttachmentAspectCreateInfoKHR ) == sizeof( VkRenderPassInputAttachmentAspectCreateInfoKHR ), "struct and wrapper have different size!" );
17221
17222 struct BindImagePlaneMemoryInfoKHR
17223 {
17224 BindImagePlaneMemoryInfoKHR( ImageAspectFlagBits planeAspect_ = ImageAspectFlagBits::eColor )
17225 : sType( StructureType::eBindImagePlaneMemoryInfoKHR )
17226 , pNext( nullptr )
17227 , planeAspect( planeAspect_ )
17228 {
17229 }
17230
17231 BindImagePlaneMemoryInfoKHR( VkBindImagePlaneMemoryInfoKHR const & rhs )
17232 {
17233 memcpy( this, &rhs, sizeof( BindImagePlaneMemoryInfoKHR ) );
17234 }
17235
17236 BindImagePlaneMemoryInfoKHR& operator=( VkBindImagePlaneMemoryInfoKHR const & rhs )
17237 {
17238 memcpy( this, &rhs, sizeof( BindImagePlaneMemoryInfoKHR ) );
17239 return *this;
17240 }
17241 BindImagePlaneMemoryInfoKHR& setPNext( const void* pNext_ )
17242 {
17243 pNext = pNext_;
17244 return *this;
17245 }
17246
17247 BindImagePlaneMemoryInfoKHR& setPlaneAspect( ImageAspectFlagBits planeAspect_ )
17248 {
17249 planeAspect = planeAspect_;
17250 return *this;
17251 }
17252
17253 operator const VkBindImagePlaneMemoryInfoKHR&() const
17254 {
17255 return *reinterpret_cast<const VkBindImagePlaneMemoryInfoKHR*>(this);
17256 }
17257
17258 bool operator==( BindImagePlaneMemoryInfoKHR const& rhs ) const
17259 {
17260 return ( sType == rhs.sType )
17261 && ( pNext == rhs.pNext )
17262 && ( planeAspect == rhs.planeAspect );
17263 }
17264
17265 bool operator!=( BindImagePlaneMemoryInfoKHR const& rhs ) const
17266 {
17267 return !operator==( rhs );
17268 }
17269
17270 private:
17271 StructureType sType;
17272
17273 public:
17274 const void* pNext;
17275 ImageAspectFlagBits planeAspect;
17276 };
17277 static_assert( sizeof( BindImagePlaneMemoryInfoKHR ) == sizeof( VkBindImagePlaneMemoryInfoKHR ), "struct and wrapper have different size!" );
17278
17279 struct ImagePlaneMemoryRequirementsInfoKHR
17280 {
17281 ImagePlaneMemoryRequirementsInfoKHR( ImageAspectFlagBits planeAspect_ = ImageAspectFlagBits::eColor )
17282 : sType( StructureType::eImagePlaneMemoryRequirementsInfoKHR )
17283 , pNext( nullptr )
17284 , planeAspect( planeAspect_ )
17285 {
17286 }
17287
17288 ImagePlaneMemoryRequirementsInfoKHR( VkImagePlaneMemoryRequirementsInfoKHR const & rhs )
17289 {
17290 memcpy( this, &rhs, sizeof( ImagePlaneMemoryRequirementsInfoKHR ) );
17291 }
17292
17293 ImagePlaneMemoryRequirementsInfoKHR& operator=( VkImagePlaneMemoryRequirementsInfoKHR const & rhs )
17294 {
17295 memcpy( this, &rhs, sizeof( ImagePlaneMemoryRequirementsInfoKHR ) );
17296 return *this;
17297 }
17298 ImagePlaneMemoryRequirementsInfoKHR& setPNext( const void* pNext_ )
17299 {
17300 pNext = pNext_;
17301 return *this;
17302 }
17303
17304 ImagePlaneMemoryRequirementsInfoKHR& setPlaneAspect( ImageAspectFlagBits planeAspect_ )
17305 {
17306 planeAspect = planeAspect_;
17307 return *this;
17308 }
17309
17310 operator const VkImagePlaneMemoryRequirementsInfoKHR&() const
17311 {
17312 return *reinterpret_cast<const VkImagePlaneMemoryRequirementsInfoKHR*>(this);
17313 }
17314
17315 bool operator==( ImagePlaneMemoryRequirementsInfoKHR const& rhs ) const
17316 {
17317 return ( sType == rhs.sType )
17318 && ( pNext == rhs.pNext )
17319 && ( planeAspect == rhs.planeAspect );
17320 }
17321
17322 bool operator!=( ImagePlaneMemoryRequirementsInfoKHR const& rhs ) const
17323 {
17324 return !operator==( rhs );
17325 }
17326
17327 private:
17328 StructureType sType;
17329
17330 public:
17331 const void* pNext;
17332 ImageAspectFlagBits planeAspect;
17333 };
17334 static_assert( sizeof( ImagePlaneMemoryRequirementsInfoKHR ) == sizeof( VkImagePlaneMemoryRequirementsInfoKHR ), "struct and wrapper have different size!" );
17335
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017336 enum class SparseImageFormatFlagBits
17337 {
17338 eSingleMiptail = VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT,
17339 eAlignedMipSize = VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT,
17340 eNonstandardBlockSize = VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT
17341 };
17342
17343 using SparseImageFormatFlags = Flags<SparseImageFormatFlagBits, VkSparseImageFormatFlags>;
17344
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017345 VULKAN_HPP_INLINE SparseImageFormatFlags operator|( SparseImageFormatFlagBits bit0, SparseImageFormatFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017346 {
17347 return SparseImageFormatFlags( bit0 ) | bit1;
17348 }
17349
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017350 VULKAN_HPP_INLINE SparseImageFormatFlags operator~( SparseImageFormatFlagBits bits )
17351 {
17352 return ~( SparseImageFormatFlags( bits ) );
17353 }
17354
17355 template <> struct FlagTraits<SparseImageFormatFlagBits>
17356 {
17357 enum
17358 {
17359 allFlags = VkFlags(SparseImageFormatFlagBits::eSingleMiptail) | VkFlags(SparseImageFormatFlagBits::eAlignedMipSize) | VkFlags(SparseImageFormatFlagBits::eNonstandardBlockSize)
17360 };
17361 };
17362
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017363 struct SparseImageFormatProperties
17364 {
17365 operator const VkSparseImageFormatProperties&() const
17366 {
17367 return *reinterpret_cast<const VkSparseImageFormatProperties*>(this);
17368 }
17369
17370 bool operator==( SparseImageFormatProperties const& rhs ) const
17371 {
17372 return ( aspectMask == rhs.aspectMask )
17373 && ( imageGranularity == rhs.imageGranularity )
17374 && ( flags == rhs.flags );
17375 }
17376
17377 bool operator!=( SparseImageFormatProperties const& rhs ) const
17378 {
17379 return !operator==( rhs );
17380 }
17381
17382 ImageAspectFlags aspectMask;
17383 Extent3D imageGranularity;
17384 SparseImageFormatFlags flags;
17385 };
17386 static_assert( sizeof( SparseImageFormatProperties ) == sizeof( VkSparseImageFormatProperties ), "struct and wrapper have different size!" );
17387
17388 struct SparseImageMemoryRequirements
17389 {
17390 operator const VkSparseImageMemoryRequirements&() const
17391 {
17392 return *reinterpret_cast<const VkSparseImageMemoryRequirements*>(this);
17393 }
17394
17395 bool operator==( SparseImageMemoryRequirements const& rhs ) const
17396 {
17397 return ( formatProperties == rhs.formatProperties )
17398 && ( imageMipTailFirstLod == rhs.imageMipTailFirstLod )
17399 && ( imageMipTailSize == rhs.imageMipTailSize )
17400 && ( imageMipTailOffset == rhs.imageMipTailOffset )
17401 && ( imageMipTailStride == rhs.imageMipTailStride );
17402 }
17403
17404 bool operator!=( SparseImageMemoryRequirements const& rhs ) const
17405 {
17406 return !operator==( rhs );
17407 }
17408
17409 SparseImageFormatProperties formatProperties;
17410 uint32_t imageMipTailFirstLod;
17411 DeviceSize imageMipTailSize;
17412 DeviceSize imageMipTailOffset;
17413 DeviceSize imageMipTailStride;
17414 };
17415 static_assert( sizeof( SparseImageMemoryRequirements ) == sizeof( VkSparseImageMemoryRequirements ), "struct and wrapper have different size!" );
17416
Mark Young39389872017-01-19 21:10:49 -070017417 struct SparseImageFormatProperties2KHR
17418 {
17419 operator const VkSparseImageFormatProperties2KHR&() const
17420 {
17421 return *reinterpret_cast<const VkSparseImageFormatProperties2KHR*>(this);
17422 }
17423
17424 bool operator==( SparseImageFormatProperties2KHR const& rhs ) const
17425 {
17426 return ( sType == rhs.sType )
17427 && ( pNext == rhs.pNext )
17428 && ( properties == rhs.properties );
17429 }
17430
17431 bool operator!=( SparseImageFormatProperties2KHR const& rhs ) const
17432 {
17433 return !operator==( rhs );
17434 }
17435
17436 private:
17437 StructureType sType;
17438
17439 public:
17440 void* pNext;
17441 SparseImageFormatProperties properties;
17442 };
17443 static_assert( sizeof( SparseImageFormatProperties2KHR ) == sizeof( VkSparseImageFormatProperties2KHR ), "struct and wrapper have different size!" );
17444
Mark Youngabc2d6e2017-07-07 07:59:56 -060017445 struct SparseImageMemoryRequirements2KHR
17446 {
17447 operator const VkSparseImageMemoryRequirements2KHR&() const
17448 {
17449 return *reinterpret_cast<const VkSparseImageMemoryRequirements2KHR*>(this);
17450 }
17451
17452 bool operator==( SparseImageMemoryRequirements2KHR const& rhs ) const
17453 {
17454 return ( sType == rhs.sType )
17455 && ( pNext == rhs.pNext )
17456 && ( memoryRequirements == rhs.memoryRequirements );
17457 }
17458
17459 bool operator!=( SparseImageMemoryRequirements2KHR const& rhs ) const
17460 {
17461 return !operator==( rhs );
17462 }
17463
17464 private:
17465 StructureType sType;
17466
17467 public:
17468 void* pNext;
17469 SparseImageMemoryRequirements memoryRequirements;
17470 };
17471 static_assert( sizeof( SparseImageMemoryRequirements2KHR ) == sizeof( VkSparseImageMemoryRequirements2KHR ), "struct and wrapper have different size!" );
17472
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017473 enum class SparseMemoryBindFlagBits
17474 {
17475 eMetadata = VK_SPARSE_MEMORY_BIND_METADATA_BIT
17476 };
17477
17478 using SparseMemoryBindFlags = Flags<SparseMemoryBindFlagBits, VkSparseMemoryBindFlags>;
17479
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017480 VULKAN_HPP_INLINE SparseMemoryBindFlags operator|( SparseMemoryBindFlagBits bit0, SparseMemoryBindFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017481 {
17482 return SparseMemoryBindFlags( bit0 ) | bit1;
17483 }
17484
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017485 VULKAN_HPP_INLINE SparseMemoryBindFlags operator~( SparseMemoryBindFlagBits bits )
17486 {
17487 return ~( SparseMemoryBindFlags( bits ) );
17488 }
17489
17490 template <> struct FlagTraits<SparseMemoryBindFlagBits>
17491 {
17492 enum
17493 {
17494 allFlags = VkFlags(SparseMemoryBindFlagBits::eMetadata)
17495 };
17496 };
17497
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017498 struct SparseMemoryBind
17499 {
17500 SparseMemoryBind( DeviceSize resourceOffset_ = 0, DeviceSize size_ = 0, DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
17501 : resourceOffset( resourceOffset_ )
17502 , size( size_ )
17503 , memory( memory_ )
17504 , memoryOffset( memoryOffset_ )
17505 , flags( flags_ )
17506 {
17507 }
17508
17509 SparseMemoryBind( VkSparseMemoryBind const & rhs )
17510 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017511 memcpy( this, &rhs, sizeof( SparseMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017512 }
17513
17514 SparseMemoryBind& operator=( VkSparseMemoryBind const & rhs )
17515 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017516 memcpy( this, &rhs, sizeof( SparseMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017517 return *this;
17518 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017519 SparseMemoryBind& setResourceOffset( DeviceSize resourceOffset_ )
17520 {
17521 resourceOffset = resourceOffset_;
17522 return *this;
17523 }
17524
17525 SparseMemoryBind& setSize( DeviceSize size_ )
17526 {
17527 size = size_;
17528 return *this;
17529 }
17530
17531 SparseMemoryBind& setMemory( DeviceMemory memory_ )
17532 {
17533 memory = memory_;
17534 return *this;
17535 }
17536
17537 SparseMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
17538 {
17539 memoryOffset = memoryOffset_;
17540 return *this;
17541 }
17542
17543 SparseMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
17544 {
17545 flags = flags_;
17546 return *this;
17547 }
17548
17549 operator const VkSparseMemoryBind&() const
17550 {
17551 return *reinterpret_cast<const VkSparseMemoryBind*>(this);
17552 }
17553
17554 bool operator==( SparseMemoryBind const& rhs ) const
17555 {
17556 return ( resourceOffset == rhs.resourceOffset )
17557 && ( size == rhs.size )
17558 && ( memory == rhs.memory )
17559 && ( memoryOffset == rhs.memoryOffset )
17560 && ( flags == rhs.flags );
17561 }
17562
17563 bool operator!=( SparseMemoryBind const& rhs ) const
17564 {
17565 return !operator==( rhs );
17566 }
17567
17568 DeviceSize resourceOffset;
17569 DeviceSize size;
17570 DeviceMemory memory;
17571 DeviceSize memoryOffset;
17572 SparseMemoryBindFlags flags;
17573 };
17574 static_assert( sizeof( SparseMemoryBind ) == sizeof( VkSparseMemoryBind ), "struct and wrapper have different size!" );
17575
17576 struct SparseImageMemoryBind
17577 {
17578 SparseImageMemoryBind( ImageSubresource subresource_ = ImageSubresource(), Offset3D offset_ = Offset3D(), Extent3D extent_ = Extent3D(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
17579 : subresource( subresource_ )
17580 , offset( offset_ )
17581 , extent( extent_ )
17582 , memory( memory_ )
17583 , memoryOffset( memoryOffset_ )
17584 , flags( flags_ )
17585 {
17586 }
17587
17588 SparseImageMemoryBind( VkSparseImageMemoryBind const & rhs )
17589 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017590 memcpy( this, &rhs, sizeof( SparseImageMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017591 }
17592
17593 SparseImageMemoryBind& operator=( VkSparseImageMemoryBind const & rhs )
17594 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017595 memcpy( this, &rhs, sizeof( SparseImageMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017596 return *this;
17597 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017598 SparseImageMemoryBind& setSubresource( ImageSubresource subresource_ )
17599 {
17600 subresource = subresource_;
17601 return *this;
17602 }
17603
17604 SparseImageMemoryBind& setOffset( Offset3D offset_ )
17605 {
17606 offset = offset_;
17607 return *this;
17608 }
17609
17610 SparseImageMemoryBind& setExtent( Extent3D extent_ )
17611 {
17612 extent = extent_;
17613 return *this;
17614 }
17615
17616 SparseImageMemoryBind& setMemory( DeviceMemory memory_ )
17617 {
17618 memory = memory_;
17619 return *this;
17620 }
17621
17622 SparseImageMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
17623 {
17624 memoryOffset = memoryOffset_;
17625 return *this;
17626 }
17627
17628 SparseImageMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
17629 {
17630 flags = flags_;
17631 return *this;
17632 }
17633
17634 operator const VkSparseImageMemoryBind&() const
17635 {
17636 return *reinterpret_cast<const VkSparseImageMemoryBind*>(this);
17637 }
17638
17639 bool operator==( SparseImageMemoryBind const& rhs ) const
17640 {
17641 return ( subresource == rhs.subresource )
17642 && ( offset == rhs.offset )
17643 && ( extent == rhs.extent )
17644 && ( memory == rhs.memory )
17645 && ( memoryOffset == rhs.memoryOffset )
17646 && ( flags == rhs.flags );
17647 }
17648
17649 bool operator!=( SparseImageMemoryBind const& rhs ) const
17650 {
17651 return !operator==( rhs );
17652 }
17653
17654 ImageSubresource subresource;
17655 Offset3D offset;
17656 Extent3D extent;
17657 DeviceMemory memory;
17658 DeviceSize memoryOffset;
17659 SparseMemoryBindFlags flags;
17660 };
17661 static_assert( sizeof( SparseImageMemoryBind ) == sizeof( VkSparseImageMemoryBind ), "struct and wrapper have different size!" );
17662
17663 struct SparseBufferMemoryBindInfo
17664 {
17665 SparseBufferMemoryBindInfo( Buffer buffer_ = Buffer(), uint32_t bindCount_ = 0, const SparseMemoryBind* pBinds_ = nullptr )
17666 : buffer( buffer_ )
17667 , bindCount( bindCount_ )
17668 , pBinds( pBinds_ )
17669 {
17670 }
17671
17672 SparseBufferMemoryBindInfo( VkSparseBufferMemoryBindInfo const & rhs )
17673 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017674 memcpy( this, &rhs, sizeof( SparseBufferMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017675 }
17676
17677 SparseBufferMemoryBindInfo& operator=( VkSparseBufferMemoryBindInfo const & rhs )
17678 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017679 memcpy( this, &rhs, sizeof( SparseBufferMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017680 return *this;
17681 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017682 SparseBufferMemoryBindInfo& setBuffer( Buffer buffer_ )
17683 {
17684 buffer = buffer_;
17685 return *this;
17686 }
17687
17688 SparseBufferMemoryBindInfo& setBindCount( uint32_t bindCount_ )
17689 {
17690 bindCount = bindCount_;
17691 return *this;
17692 }
17693
17694 SparseBufferMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
17695 {
17696 pBinds = pBinds_;
17697 return *this;
17698 }
17699
17700 operator const VkSparseBufferMemoryBindInfo&() const
17701 {
17702 return *reinterpret_cast<const VkSparseBufferMemoryBindInfo*>(this);
17703 }
17704
17705 bool operator==( SparseBufferMemoryBindInfo const& rhs ) const
17706 {
17707 return ( buffer == rhs.buffer )
17708 && ( bindCount == rhs.bindCount )
17709 && ( pBinds == rhs.pBinds );
17710 }
17711
17712 bool operator!=( SparseBufferMemoryBindInfo const& rhs ) const
17713 {
17714 return !operator==( rhs );
17715 }
17716
17717 Buffer buffer;
17718 uint32_t bindCount;
17719 const SparseMemoryBind* pBinds;
17720 };
17721 static_assert( sizeof( SparseBufferMemoryBindInfo ) == sizeof( VkSparseBufferMemoryBindInfo ), "struct and wrapper have different size!" );
17722
17723 struct SparseImageOpaqueMemoryBindInfo
17724 {
17725 SparseImageOpaqueMemoryBindInfo( Image image_ = Image(), uint32_t bindCount_ = 0, const SparseMemoryBind* pBinds_ = nullptr )
17726 : image( image_ )
17727 , bindCount( bindCount_ )
17728 , pBinds( pBinds_ )
17729 {
17730 }
17731
17732 SparseImageOpaqueMemoryBindInfo( VkSparseImageOpaqueMemoryBindInfo const & rhs )
17733 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017734 memcpy( this, &rhs, sizeof( SparseImageOpaqueMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017735 }
17736
17737 SparseImageOpaqueMemoryBindInfo& operator=( VkSparseImageOpaqueMemoryBindInfo const & rhs )
17738 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017739 memcpy( this, &rhs, sizeof( SparseImageOpaqueMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017740 return *this;
17741 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017742 SparseImageOpaqueMemoryBindInfo& setImage( Image image_ )
17743 {
17744 image = image_;
17745 return *this;
17746 }
17747
17748 SparseImageOpaqueMemoryBindInfo& setBindCount( uint32_t bindCount_ )
17749 {
17750 bindCount = bindCount_;
17751 return *this;
17752 }
17753
17754 SparseImageOpaqueMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
17755 {
17756 pBinds = pBinds_;
17757 return *this;
17758 }
17759
17760 operator const VkSparseImageOpaqueMemoryBindInfo&() const
17761 {
17762 return *reinterpret_cast<const VkSparseImageOpaqueMemoryBindInfo*>(this);
17763 }
17764
17765 bool operator==( SparseImageOpaqueMemoryBindInfo const& rhs ) const
17766 {
17767 return ( image == rhs.image )
17768 && ( bindCount == rhs.bindCount )
17769 && ( pBinds == rhs.pBinds );
17770 }
17771
17772 bool operator!=( SparseImageOpaqueMemoryBindInfo const& rhs ) const
17773 {
17774 return !operator==( rhs );
17775 }
17776
17777 Image image;
17778 uint32_t bindCount;
17779 const SparseMemoryBind* pBinds;
17780 };
17781 static_assert( sizeof( SparseImageOpaqueMemoryBindInfo ) == sizeof( VkSparseImageOpaqueMemoryBindInfo ), "struct and wrapper have different size!" );
17782
17783 struct SparseImageMemoryBindInfo
17784 {
17785 SparseImageMemoryBindInfo( Image image_ = Image(), uint32_t bindCount_ = 0, const SparseImageMemoryBind* pBinds_ = nullptr )
17786 : image( image_ )
17787 , bindCount( bindCount_ )
17788 , pBinds( pBinds_ )
17789 {
17790 }
17791
17792 SparseImageMemoryBindInfo( VkSparseImageMemoryBindInfo const & rhs )
17793 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017794 memcpy( this, &rhs, sizeof( SparseImageMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017795 }
17796
17797 SparseImageMemoryBindInfo& operator=( VkSparseImageMemoryBindInfo const & rhs )
17798 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017799 memcpy( this, &rhs, sizeof( SparseImageMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017800 return *this;
17801 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017802 SparseImageMemoryBindInfo& setImage( Image image_ )
17803 {
17804 image = image_;
17805 return *this;
17806 }
17807
17808 SparseImageMemoryBindInfo& setBindCount( uint32_t bindCount_ )
17809 {
17810 bindCount = bindCount_;
17811 return *this;
17812 }
17813
17814 SparseImageMemoryBindInfo& setPBinds( const SparseImageMemoryBind* pBinds_ )
17815 {
17816 pBinds = pBinds_;
17817 return *this;
17818 }
17819
17820 operator const VkSparseImageMemoryBindInfo&() const
17821 {
17822 return *reinterpret_cast<const VkSparseImageMemoryBindInfo*>(this);
17823 }
17824
17825 bool operator==( SparseImageMemoryBindInfo const& rhs ) const
17826 {
17827 return ( image == rhs.image )
17828 && ( bindCount == rhs.bindCount )
17829 && ( pBinds == rhs.pBinds );
17830 }
17831
17832 bool operator!=( SparseImageMemoryBindInfo const& rhs ) const
17833 {
17834 return !operator==( rhs );
17835 }
17836
17837 Image image;
17838 uint32_t bindCount;
17839 const SparseImageMemoryBind* pBinds;
17840 };
17841 static_assert( sizeof( SparseImageMemoryBindInfo ) == sizeof( VkSparseImageMemoryBindInfo ), "struct and wrapper have different size!" );
17842
17843 struct BindSparseInfo
17844 {
17845 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 )
17846 : sType( StructureType::eBindSparseInfo )
17847 , pNext( nullptr )
17848 , waitSemaphoreCount( waitSemaphoreCount_ )
17849 , pWaitSemaphores( pWaitSemaphores_ )
17850 , bufferBindCount( bufferBindCount_ )
17851 , pBufferBinds( pBufferBinds_ )
17852 , imageOpaqueBindCount( imageOpaqueBindCount_ )
17853 , pImageOpaqueBinds( pImageOpaqueBinds_ )
17854 , imageBindCount( imageBindCount_ )
17855 , pImageBinds( pImageBinds_ )
17856 , signalSemaphoreCount( signalSemaphoreCount_ )
17857 , pSignalSemaphores( pSignalSemaphores_ )
17858 {
17859 }
17860
17861 BindSparseInfo( VkBindSparseInfo const & rhs )
17862 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017863 memcpy( this, &rhs, sizeof( BindSparseInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017864 }
17865
17866 BindSparseInfo& operator=( VkBindSparseInfo const & rhs )
17867 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017868 memcpy( this, &rhs, sizeof( BindSparseInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017869 return *this;
17870 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017871 BindSparseInfo& setPNext( const void* pNext_ )
17872 {
17873 pNext = pNext_;
17874 return *this;
17875 }
17876
17877 BindSparseInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
17878 {
17879 waitSemaphoreCount = waitSemaphoreCount_;
17880 return *this;
17881 }
17882
17883 BindSparseInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
17884 {
17885 pWaitSemaphores = pWaitSemaphores_;
17886 return *this;
17887 }
17888
17889 BindSparseInfo& setBufferBindCount( uint32_t bufferBindCount_ )
17890 {
17891 bufferBindCount = bufferBindCount_;
17892 return *this;
17893 }
17894
17895 BindSparseInfo& setPBufferBinds( const SparseBufferMemoryBindInfo* pBufferBinds_ )
17896 {
17897 pBufferBinds = pBufferBinds_;
17898 return *this;
17899 }
17900
17901 BindSparseInfo& setImageOpaqueBindCount( uint32_t imageOpaqueBindCount_ )
17902 {
17903 imageOpaqueBindCount = imageOpaqueBindCount_;
17904 return *this;
17905 }
17906
17907 BindSparseInfo& setPImageOpaqueBinds( const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds_ )
17908 {
17909 pImageOpaqueBinds = pImageOpaqueBinds_;
17910 return *this;
17911 }
17912
17913 BindSparseInfo& setImageBindCount( uint32_t imageBindCount_ )
17914 {
17915 imageBindCount = imageBindCount_;
17916 return *this;
17917 }
17918
17919 BindSparseInfo& setPImageBinds( const SparseImageMemoryBindInfo* pImageBinds_ )
17920 {
17921 pImageBinds = pImageBinds_;
17922 return *this;
17923 }
17924
17925 BindSparseInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
17926 {
17927 signalSemaphoreCount = signalSemaphoreCount_;
17928 return *this;
17929 }
17930
17931 BindSparseInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
17932 {
17933 pSignalSemaphores = pSignalSemaphores_;
17934 return *this;
17935 }
17936
17937 operator const VkBindSparseInfo&() const
17938 {
17939 return *reinterpret_cast<const VkBindSparseInfo*>(this);
17940 }
17941
17942 bool operator==( BindSparseInfo const& rhs ) const
17943 {
17944 return ( sType == rhs.sType )
17945 && ( pNext == rhs.pNext )
17946 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
17947 && ( pWaitSemaphores == rhs.pWaitSemaphores )
17948 && ( bufferBindCount == rhs.bufferBindCount )
17949 && ( pBufferBinds == rhs.pBufferBinds )
17950 && ( imageOpaqueBindCount == rhs.imageOpaqueBindCount )
17951 && ( pImageOpaqueBinds == rhs.pImageOpaqueBinds )
17952 && ( imageBindCount == rhs.imageBindCount )
17953 && ( pImageBinds == rhs.pImageBinds )
17954 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
17955 && ( pSignalSemaphores == rhs.pSignalSemaphores );
17956 }
17957
17958 bool operator!=( BindSparseInfo const& rhs ) const
17959 {
17960 return !operator==( rhs );
17961 }
17962
17963 private:
17964 StructureType sType;
17965
17966 public:
17967 const void* pNext;
17968 uint32_t waitSemaphoreCount;
17969 const Semaphore* pWaitSemaphores;
17970 uint32_t bufferBindCount;
17971 const SparseBufferMemoryBindInfo* pBufferBinds;
17972 uint32_t imageOpaqueBindCount;
17973 const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds;
17974 uint32_t imageBindCount;
17975 const SparseImageMemoryBindInfo* pImageBinds;
17976 uint32_t signalSemaphoreCount;
17977 const Semaphore* pSignalSemaphores;
17978 };
17979 static_assert( sizeof( BindSparseInfo ) == sizeof( VkBindSparseInfo ), "struct and wrapper have different size!" );
17980
17981 enum class PipelineStageFlagBits
17982 {
17983 eTopOfPipe = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
17984 eDrawIndirect = VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,
17985 eVertexInput = VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,
17986 eVertexShader = VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,
17987 eTessellationControlShader = VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,
17988 eTessellationEvaluationShader = VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT,
17989 eGeometryShader = VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT,
17990 eFragmentShader = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
17991 eEarlyFragmentTests = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,
17992 eLateFragmentTests = VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
17993 eColorAttachmentOutput = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
17994 eComputeShader = VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
17995 eTransfer = VK_PIPELINE_STAGE_TRANSFER_BIT,
17996 eBottomOfPipe = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
17997 eHost = VK_PIPELINE_STAGE_HOST_BIT,
17998 eAllGraphics = VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017999 eAllCommands = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,
18000 eCommandProcessNVX = VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018001 };
18002
18003 using PipelineStageFlags = Flags<PipelineStageFlagBits, VkPipelineStageFlags>;
18004
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018005 VULKAN_HPP_INLINE PipelineStageFlags operator|( PipelineStageFlagBits bit0, PipelineStageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018006 {
18007 return PipelineStageFlags( bit0 ) | bit1;
18008 }
18009
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018010 VULKAN_HPP_INLINE PipelineStageFlags operator~( PipelineStageFlagBits bits )
18011 {
18012 return ~( PipelineStageFlags( bits ) );
18013 }
18014
18015 template <> struct FlagTraits<PipelineStageFlagBits>
18016 {
18017 enum
18018 {
18019 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)
18020 };
18021 };
18022
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018023 enum class CommandPoolCreateFlagBits
18024 {
18025 eTransient = VK_COMMAND_POOL_CREATE_TRANSIENT_BIT,
18026 eResetCommandBuffer = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT
18027 };
18028
18029 using CommandPoolCreateFlags = Flags<CommandPoolCreateFlagBits, VkCommandPoolCreateFlags>;
18030
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018031 VULKAN_HPP_INLINE CommandPoolCreateFlags operator|( CommandPoolCreateFlagBits bit0, CommandPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018032 {
18033 return CommandPoolCreateFlags( bit0 ) | bit1;
18034 }
18035
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018036 VULKAN_HPP_INLINE CommandPoolCreateFlags operator~( CommandPoolCreateFlagBits bits )
18037 {
18038 return ~( CommandPoolCreateFlags( bits ) );
18039 }
18040
18041 template <> struct FlagTraits<CommandPoolCreateFlagBits>
18042 {
18043 enum
18044 {
18045 allFlags = VkFlags(CommandPoolCreateFlagBits::eTransient) | VkFlags(CommandPoolCreateFlagBits::eResetCommandBuffer)
18046 };
18047 };
18048
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018049 struct CommandPoolCreateInfo
18050 {
18051 CommandPoolCreateInfo( CommandPoolCreateFlags flags_ = CommandPoolCreateFlags(), uint32_t queueFamilyIndex_ = 0 )
18052 : sType( StructureType::eCommandPoolCreateInfo )
18053 , pNext( nullptr )
18054 , flags( flags_ )
18055 , queueFamilyIndex( queueFamilyIndex_ )
18056 {
18057 }
18058
18059 CommandPoolCreateInfo( VkCommandPoolCreateInfo const & rhs )
18060 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018061 memcpy( this, &rhs, sizeof( CommandPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018062 }
18063
18064 CommandPoolCreateInfo& operator=( VkCommandPoolCreateInfo const & rhs )
18065 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018066 memcpy( this, &rhs, sizeof( CommandPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018067 return *this;
18068 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018069 CommandPoolCreateInfo& setPNext( const void* pNext_ )
18070 {
18071 pNext = pNext_;
18072 return *this;
18073 }
18074
18075 CommandPoolCreateInfo& setFlags( CommandPoolCreateFlags flags_ )
18076 {
18077 flags = flags_;
18078 return *this;
18079 }
18080
18081 CommandPoolCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
18082 {
18083 queueFamilyIndex = queueFamilyIndex_;
18084 return *this;
18085 }
18086
18087 operator const VkCommandPoolCreateInfo&() const
18088 {
18089 return *reinterpret_cast<const VkCommandPoolCreateInfo*>(this);
18090 }
18091
18092 bool operator==( CommandPoolCreateInfo const& rhs ) const
18093 {
18094 return ( sType == rhs.sType )
18095 && ( pNext == rhs.pNext )
18096 && ( flags == rhs.flags )
18097 && ( queueFamilyIndex == rhs.queueFamilyIndex );
18098 }
18099
18100 bool operator!=( CommandPoolCreateInfo const& rhs ) const
18101 {
18102 return !operator==( rhs );
18103 }
18104
18105 private:
18106 StructureType sType;
18107
18108 public:
18109 const void* pNext;
18110 CommandPoolCreateFlags flags;
18111 uint32_t queueFamilyIndex;
18112 };
18113 static_assert( sizeof( CommandPoolCreateInfo ) == sizeof( VkCommandPoolCreateInfo ), "struct and wrapper have different size!" );
18114
18115 enum class CommandPoolResetFlagBits
18116 {
18117 eReleaseResources = VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT
18118 };
18119
18120 using CommandPoolResetFlags = Flags<CommandPoolResetFlagBits, VkCommandPoolResetFlags>;
18121
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018122 VULKAN_HPP_INLINE CommandPoolResetFlags operator|( CommandPoolResetFlagBits bit0, CommandPoolResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018123 {
18124 return CommandPoolResetFlags( bit0 ) | bit1;
18125 }
18126
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018127 VULKAN_HPP_INLINE CommandPoolResetFlags operator~( CommandPoolResetFlagBits bits )
18128 {
18129 return ~( CommandPoolResetFlags( bits ) );
18130 }
18131
18132 template <> struct FlagTraits<CommandPoolResetFlagBits>
18133 {
18134 enum
18135 {
18136 allFlags = VkFlags(CommandPoolResetFlagBits::eReleaseResources)
18137 };
18138 };
18139
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018140 enum class CommandBufferResetFlagBits
18141 {
18142 eReleaseResources = VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT
18143 };
18144
18145 using CommandBufferResetFlags = Flags<CommandBufferResetFlagBits, VkCommandBufferResetFlags>;
18146
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018147 VULKAN_HPP_INLINE CommandBufferResetFlags operator|( CommandBufferResetFlagBits bit0, CommandBufferResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018148 {
18149 return CommandBufferResetFlags( bit0 ) | bit1;
18150 }
18151
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018152 VULKAN_HPP_INLINE CommandBufferResetFlags operator~( CommandBufferResetFlagBits bits )
18153 {
18154 return ~( CommandBufferResetFlags( bits ) );
18155 }
18156
18157 template <> struct FlagTraits<CommandBufferResetFlagBits>
18158 {
18159 enum
18160 {
18161 allFlags = VkFlags(CommandBufferResetFlagBits::eReleaseResources)
18162 };
18163 };
18164
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018165 enum class SampleCountFlagBits
18166 {
18167 e1 = VK_SAMPLE_COUNT_1_BIT,
18168 e2 = VK_SAMPLE_COUNT_2_BIT,
18169 e4 = VK_SAMPLE_COUNT_4_BIT,
18170 e8 = VK_SAMPLE_COUNT_8_BIT,
18171 e16 = VK_SAMPLE_COUNT_16_BIT,
18172 e32 = VK_SAMPLE_COUNT_32_BIT,
18173 e64 = VK_SAMPLE_COUNT_64_BIT
18174 };
18175
18176 using SampleCountFlags = Flags<SampleCountFlagBits, VkSampleCountFlags>;
18177
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018178 VULKAN_HPP_INLINE SampleCountFlags operator|( SampleCountFlagBits bit0, SampleCountFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018179 {
18180 return SampleCountFlags( bit0 ) | bit1;
18181 }
18182
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018183 VULKAN_HPP_INLINE SampleCountFlags operator~( SampleCountFlagBits bits )
18184 {
18185 return ~( SampleCountFlags( bits ) );
18186 }
18187
18188 template <> struct FlagTraits<SampleCountFlagBits>
18189 {
18190 enum
18191 {
18192 allFlags = VkFlags(SampleCountFlagBits::e1) | VkFlags(SampleCountFlagBits::e2) | VkFlags(SampleCountFlagBits::e4) | VkFlags(SampleCountFlagBits::e8) | VkFlags(SampleCountFlagBits::e16) | VkFlags(SampleCountFlagBits::e32) | VkFlags(SampleCountFlagBits::e64)
18193 };
18194 };
18195
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018196 struct ImageFormatProperties
18197 {
18198 operator const VkImageFormatProperties&() const
18199 {
18200 return *reinterpret_cast<const VkImageFormatProperties*>(this);
18201 }
18202
18203 bool operator==( ImageFormatProperties const& rhs ) const
18204 {
18205 return ( maxExtent == rhs.maxExtent )
18206 && ( maxMipLevels == rhs.maxMipLevels )
18207 && ( maxArrayLayers == rhs.maxArrayLayers )
18208 && ( sampleCounts == rhs.sampleCounts )
18209 && ( maxResourceSize == rhs.maxResourceSize );
18210 }
18211
18212 bool operator!=( ImageFormatProperties const& rhs ) const
18213 {
18214 return !operator==( rhs );
18215 }
18216
18217 Extent3D maxExtent;
18218 uint32_t maxMipLevels;
18219 uint32_t maxArrayLayers;
18220 SampleCountFlags sampleCounts;
18221 DeviceSize maxResourceSize;
18222 };
18223 static_assert( sizeof( ImageFormatProperties ) == sizeof( VkImageFormatProperties ), "struct and wrapper have different size!" );
18224
18225 struct ImageCreateInfo
18226 {
18227 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 )
18228 : sType( StructureType::eImageCreateInfo )
18229 , pNext( nullptr )
18230 , flags( flags_ )
18231 , imageType( imageType_ )
18232 , format( format_ )
18233 , extent( extent_ )
18234 , mipLevels( mipLevels_ )
18235 , arrayLayers( arrayLayers_ )
18236 , samples( samples_ )
18237 , tiling( tiling_ )
18238 , usage( usage_ )
18239 , sharingMode( sharingMode_ )
18240 , queueFamilyIndexCount( queueFamilyIndexCount_ )
18241 , pQueueFamilyIndices( pQueueFamilyIndices_ )
18242 , initialLayout( initialLayout_ )
18243 {
18244 }
18245
18246 ImageCreateInfo( VkImageCreateInfo const & rhs )
18247 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018248 memcpy( this, &rhs, sizeof( ImageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018249 }
18250
18251 ImageCreateInfo& operator=( VkImageCreateInfo const & rhs )
18252 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018253 memcpy( this, &rhs, sizeof( ImageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018254 return *this;
18255 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018256 ImageCreateInfo& setPNext( const void* pNext_ )
18257 {
18258 pNext = pNext_;
18259 return *this;
18260 }
18261
18262 ImageCreateInfo& setFlags( ImageCreateFlags flags_ )
18263 {
18264 flags = flags_;
18265 return *this;
18266 }
18267
18268 ImageCreateInfo& setImageType( ImageType imageType_ )
18269 {
18270 imageType = imageType_;
18271 return *this;
18272 }
18273
18274 ImageCreateInfo& setFormat( Format format_ )
18275 {
18276 format = format_;
18277 return *this;
18278 }
18279
18280 ImageCreateInfo& setExtent( Extent3D extent_ )
18281 {
18282 extent = extent_;
18283 return *this;
18284 }
18285
18286 ImageCreateInfo& setMipLevels( uint32_t mipLevels_ )
18287 {
18288 mipLevels = mipLevels_;
18289 return *this;
18290 }
18291
18292 ImageCreateInfo& setArrayLayers( uint32_t arrayLayers_ )
18293 {
18294 arrayLayers = arrayLayers_;
18295 return *this;
18296 }
18297
18298 ImageCreateInfo& setSamples( SampleCountFlagBits samples_ )
18299 {
18300 samples = samples_;
18301 return *this;
18302 }
18303
18304 ImageCreateInfo& setTiling( ImageTiling tiling_ )
18305 {
18306 tiling = tiling_;
18307 return *this;
18308 }
18309
18310 ImageCreateInfo& setUsage( ImageUsageFlags usage_ )
18311 {
18312 usage = usage_;
18313 return *this;
18314 }
18315
18316 ImageCreateInfo& setSharingMode( SharingMode sharingMode_ )
18317 {
18318 sharingMode = sharingMode_;
18319 return *this;
18320 }
18321
18322 ImageCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
18323 {
18324 queueFamilyIndexCount = queueFamilyIndexCount_;
18325 return *this;
18326 }
18327
18328 ImageCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
18329 {
18330 pQueueFamilyIndices = pQueueFamilyIndices_;
18331 return *this;
18332 }
18333
18334 ImageCreateInfo& setInitialLayout( ImageLayout initialLayout_ )
18335 {
18336 initialLayout = initialLayout_;
18337 return *this;
18338 }
18339
18340 operator const VkImageCreateInfo&() const
18341 {
18342 return *reinterpret_cast<const VkImageCreateInfo*>(this);
18343 }
18344
18345 bool operator==( ImageCreateInfo const& rhs ) const
18346 {
18347 return ( sType == rhs.sType )
18348 && ( pNext == rhs.pNext )
18349 && ( flags == rhs.flags )
18350 && ( imageType == rhs.imageType )
18351 && ( format == rhs.format )
18352 && ( extent == rhs.extent )
18353 && ( mipLevels == rhs.mipLevels )
18354 && ( arrayLayers == rhs.arrayLayers )
18355 && ( samples == rhs.samples )
18356 && ( tiling == rhs.tiling )
18357 && ( usage == rhs.usage )
18358 && ( sharingMode == rhs.sharingMode )
18359 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
18360 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
18361 && ( initialLayout == rhs.initialLayout );
18362 }
18363
18364 bool operator!=( ImageCreateInfo const& rhs ) const
18365 {
18366 return !operator==( rhs );
18367 }
18368
18369 private:
18370 StructureType sType;
18371
18372 public:
18373 const void* pNext;
18374 ImageCreateFlags flags;
18375 ImageType imageType;
18376 Format format;
18377 Extent3D extent;
18378 uint32_t mipLevels;
18379 uint32_t arrayLayers;
18380 SampleCountFlagBits samples;
18381 ImageTiling tiling;
18382 ImageUsageFlags usage;
18383 SharingMode sharingMode;
18384 uint32_t queueFamilyIndexCount;
18385 const uint32_t* pQueueFamilyIndices;
18386 ImageLayout initialLayout;
18387 };
18388 static_assert( sizeof( ImageCreateInfo ) == sizeof( VkImageCreateInfo ), "struct and wrapper have different size!" );
18389
18390 struct PipelineMultisampleStateCreateInfo
18391 {
18392 PipelineMultisampleStateCreateInfo( PipelineMultisampleStateCreateFlags flags_ = PipelineMultisampleStateCreateFlags(), SampleCountFlagBits rasterizationSamples_ = SampleCountFlagBits::e1, Bool32 sampleShadingEnable_ = 0, float minSampleShading_ = 0, const SampleMask* pSampleMask_ = nullptr, Bool32 alphaToCoverageEnable_ = 0, Bool32 alphaToOneEnable_ = 0 )
18393 : sType( StructureType::ePipelineMultisampleStateCreateInfo )
18394 , pNext( nullptr )
18395 , flags( flags_ )
18396 , rasterizationSamples( rasterizationSamples_ )
18397 , sampleShadingEnable( sampleShadingEnable_ )
18398 , minSampleShading( minSampleShading_ )
18399 , pSampleMask( pSampleMask_ )
18400 , alphaToCoverageEnable( alphaToCoverageEnable_ )
18401 , alphaToOneEnable( alphaToOneEnable_ )
18402 {
18403 }
18404
18405 PipelineMultisampleStateCreateInfo( VkPipelineMultisampleStateCreateInfo const & rhs )
18406 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018407 memcpy( this, &rhs, sizeof( PipelineMultisampleStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018408 }
18409
18410 PipelineMultisampleStateCreateInfo& operator=( VkPipelineMultisampleStateCreateInfo const & rhs )
18411 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018412 memcpy( this, &rhs, sizeof( PipelineMultisampleStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018413 return *this;
18414 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018415 PipelineMultisampleStateCreateInfo& setPNext( const void* pNext_ )
18416 {
18417 pNext = pNext_;
18418 return *this;
18419 }
18420
18421 PipelineMultisampleStateCreateInfo& setFlags( PipelineMultisampleStateCreateFlags flags_ )
18422 {
18423 flags = flags_;
18424 return *this;
18425 }
18426
18427 PipelineMultisampleStateCreateInfo& setRasterizationSamples( SampleCountFlagBits rasterizationSamples_ )
18428 {
18429 rasterizationSamples = rasterizationSamples_;
18430 return *this;
18431 }
18432
18433 PipelineMultisampleStateCreateInfo& setSampleShadingEnable( Bool32 sampleShadingEnable_ )
18434 {
18435 sampleShadingEnable = sampleShadingEnable_;
18436 return *this;
18437 }
18438
18439 PipelineMultisampleStateCreateInfo& setMinSampleShading( float minSampleShading_ )
18440 {
18441 minSampleShading = minSampleShading_;
18442 return *this;
18443 }
18444
18445 PipelineMultisampleStateCreateInfo& setPSampleMask( const SampleMask* pSampleMask_ )
18446 {
18447 pSampleMask = pSampleMask_;
18448 return *this;
18449 }
18450
18451 PipelineMultisampleStateCreateInfo& setAlphaToCoverageEnable( Bool32 alphaToCoverageEnable_ )
18452 {
18453 alphaToCoverageEnable = alphaToCoverageEnable_;
18454 return *this;
18455 }
18456
18457 PipelineMultisampleStateCreateInfo& setAlphaToOneEnable( Bool32 alphaToOneEnable_ )
18458 {
18459 alphaToOneEnable = alphaToOneEnable_;
18460 return *this;
18461 }
18462
18463 operator const VkPipelineMultisampleStateCreateInfo&() const
18464 {
18465 return *reinterpret_cast<const VkPipelineMultisampleStateCreateInfo*>(this);
18466 }
18467
18468 bool operator==( PipelineMultisampleStateCreateInfo const& rhs ) const
18469 {
18470 return ( sType == rhs.sType )
18471 && ( pNext == rhs.pNext )
18472 && ( flags == rhs.flags )
18473 && ( rasterizationSamples == rhs.rasterizationSamples )
18474 && ( sampleShadingEnable == rhs.sampleShadingEnable )
18475 && ( minSampleShading == rhs.minSampleShading )
18476 && ( pSampleMask == rhs.pSampleMask )
18477 && ( alphaToCoverageEnable == rhs.alphaToCoverageEnable )
18478 && ( alphaToOneEnable == rhs.alphaToOneEnable );
18479 }
18480
18481 bool operator!=( PipelineMultisampleStateCreateInfo const& rhs ) const
18482 {
18483 return !operator==( rhs );
18484 }
18485
18486 private:
18487 StructureType sType;
18488
18489 public:
18490 const void* pNext;
18491 PipelineMultisampleStateCreateFlags flags;
18492 SampleCountFlagBits rasterizationSamples;
18493 Bool32 sampleShadingEnable;
18494 float minSampleShading;
18495 const SampleMask* pSampleMask;
18496 Bool32 alphaToCoverageEnable;
18497 Bool32 alphaToOneEnable;
18498 };
18499 static_assert( sizeof( PipelineMultisampleStateCreateInfo ) == sizeof( VkPipelineMultisampleStateCreateInfo ), "struct and wrapper have different size!" );
18500
18501 struct GraphicsPipelineCreateInfo
18502 {
18503 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 )
18504 : sType( StructureType::eGraphicsPipelineCreateInfo )
18505 , pNext( nullptr )
18506 , flags( flags_ )
18507 , stageCount( stageCount_ )
18508 , pStages( pStages_ )
18509 , pVertexInputState( pVertexInputState_ )
18510 , pInputAssemblyState( pInputAssemblyState_ )
18511 , pTessellationState( pTessellationState_ )
18512 , pViewportState( pViewportState_ )
18513 , pRasterizationState( pRasterizationState_ )
18514 , pMultisampleState( pMultisampleState_ )
18515 , pDepthStencilState( pDepthStencilState_ )
18516 , pColorBlendState( pColorBlendState_ )
18517 , pDynamicState( pDynamicState_ )
18518 , layout( layout_ )
18519 , renderPass( renderPass_ )
18520 , subpass( subpass_ )
18521 , basePipelineHandle( basePipelineHandle_ )
18522 , basePipelineIndex( basePipelineIndex_ )
18523 {
18524 }
18525
18526 GraphicsPipelineCreateInfo( VkGraphicsPipelineCreateInfo const & rhs )
18527 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018528 memcpy( this, &rhs, sizeof( GraphicsPipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018529 }
18530
18531 GraphicsPipelineCreateInfo& operator=( VkGraphicsPipelineCreateInfo const & rhs )
18532 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018533 memcpy( this, &rhs, sizeof( GraphicsPipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018534 return *this;
18535 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018536 GraphicsPipelineCreateInfo& setPNext( const void* pNext_ )
18537 {
18538 pNext = pNext_;
18539 return *this;
18540 }
18541
18542 GraphicsPipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
18543 {
18544 flags = flags_;
18545 return *this;
18546 }
18547
18548 GraphicsPipelineCreateInfo& setStageCount( uint32_t stageCount_ )
18549 {
18550 stageCount = stageCount_;
18551 return *this;
18552 }
18553
18554 GraphicsPipelineCreateInfo& setPStages( const PipelineShaderStageCreateInfo* pStages_ )
18555 {
18556 pStages = pStages_;
18557 return *this;
18558 }
18559
18560 GraphicsPipelineCreateInfo& setPVertexInputState( const PipelineVertexInputStateCreateInfo* pVertexInputState_ )
18561 {
18562 pVertexInputState = pVertexInputState_;
18563 return *this;
18564 }
18565
18566 GraphicsPipelineCreateInfo& setPInputAssemblyState( const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState_ )
18567 {
18568 pInputAssemblyState = pInputAssemblyState_;
18569 return *this;
18570 }
18571
18572 GraphicsPipelineCreateInfo& setPTessellationState( const PipelineTessellationStateCreateInfo* pTessellationState_ )
18573 {
18574 pTessellationState = pTessellationState_;
18575 return *this;
18576 }
18577
18578 GraphicsPipelineCreateInfo& setPViewportState( const PipelineViewportStateCreateInfo* pViewportState_ )
18579 {
18580 pViewportState = pViewportState_;
18581 return *this;
18582 }
18583
18584 GraphicsPipelineCreateInfo& setPRasterizationState( const PipelineRasterizationStateCreateInfo* pRasterizationState_ )
18585 {
18586 pRasterizationState = pRasterizationState_;
18587 return *this;
18588 }
18589
18590 GraphicsPipelineCreateInfo& setPMultisampleState( const PipelineMultisampleStateCreateInfo* pMultisampleState_ )
18591 {
18592 pMultisampleState = pMultisampleState_;
18593 return *this;
18594 }
18595
18596 GraphicsPipelineCreateInfo& setPDepthStencilState( const PipelineDepthStencilStateCreateInfo* pDepthStencilState_ )
18597 {
18598 pDepthStencilState = pDepthStencilState_;
18599 return *this;
18600 }
18601
18602 GraphicsPipelineCreateInfo& setPColorBlendState( const PipelineColorBlendStateCreateInfo* pColorBlendState_ )
18603 {
18604 pColorBlendState = pColorBlendState_;
18605 return *this;
18606 }
18607
18608 GraphicsPipelineCreateInfo& setPDynamicState( const PipelineDynamicStateCreateInfo* pDynamicState_ )
18609 {
18610 pDynamicState = pDynamicState_;
18611 return *this;
18612 }
18613
18614 GraphicsPipelineCreateInfo& setLayout( PipelineLayout layout_ )
18615 {
18616 layout = layout_;
18617 return *this;
18618 }
18619
18620 GraphicsPipelineCreateInfo& setRenderPass( RenderPass renderPass_ )
18621 {
18622 renderPass = renderPass_;
18623 return *this;
18624 }
18625
18626 GraphicsPipelineCreateInfo& setSubpass( uint32_t subpass_ )
18627 {
18628 subpass = subpass_;
18629 return *this;
18630 }
18631
18632 GraphicsPipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
18633 {
18634 basePipelineHandle = basePipelineHandle_;
18635 return *this;
18636 }
18637
18638 GraphicsPipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
18639 {
18640 basePipelineIndex = basePipelineIndex_;
18641 return *this;
18642 }
18643
18644 operator const VkGraphicsPipelineCreateInfo&() const
18645 {
18646 return *reinterpret_cast<const VkGraphicsPipelineCreateInfo*>(this);
18647 }
18648
18649 bool operator==( GraphicsPipelineCreateInfo const& rhs ) const
18650 {
18651 return ( sType == rhs.sType )
18652 && ( pNext == rhs.pNext )
18653 && ( flags == rhs.flags )
18654 && ( stageCount == rhs.stageCount )
18655 && ( pStages == rhs.pStages )
18656 && ( pVertexInputState == rhs.pVertexInputState )
18657 && ( pInputAssemblyState == rhs.pInputAssemblyState )
18658 && ( pTessellationState == rhs.pTessellationState )
18659 && ( pViewportState == rhs.pViewportState )
18660 && ( pRasterizationState == rhs.pRasterizationState )
18661 && ( pMultisampleState == rhs.pMultisampleState )
18662 && ( pDepthStencilState == rhs.pDepthStencilState )
18663 && ( pColorBlendState == rhs.pColorBlendState )
18664 && ( pDynamicState == rhs.pDynamicState )
18665 && ( layout == rhs.layout )
18666 && ( renderPass == rhs.renderPass )
18667 && ( subpass == rhs.subpass )
18668 && ( basePipelineHandle == rhs.basePipelineHandle )
18669 && ( basePipelineIndex == rhs.basePipelineIndex );
18670 }
18671
18672 bool operator!=( GraphicsPipelineCreateInfo const& rhs ) const
18673 {
18674 return !operator==( rhs );
18675 }
18676
18677 private:
18678 StructureType sType;
18679
18680 public:
18681 const void* pNext;
18682 PipelineCreateFlags flags;
18683 uint32_t stageCount;
18684 const PipelineShaderStageCreateInfo* pStages;
18685 const PipelineVertexInputStateCreateInfo* pVertexInputState;
18686 const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState;
18687 const PipelineTessellationStateCreateInfo* pTessellationState;
18688 const PipelineViewportStateCreateInfo* pViewportState;
18689 const PipelineRasterizationStateCreateInfo* pRasterizationState;
18690 const PipelineMultisampleStateCreateInfo* pMultisampleState;
18691 const PipelineDepthStencilStateCreateInfo* pDepthStencilState;
18692 const PipelineColorBlendStateCreateInfo* pColorBlendState;
18693 const PipelineDynamicStateCreateInfo* pDynamicState;
18694 PipelineLayout layout;
18695 RenderPass renderPass;
18696 uint32_t subpass;
18697 Pipeline basePipelineHandle;
18698 int32_t basePipelineIndex;
18699 };
18700 static_assert( sizeof( GraphicsPipelineCreateInfo ) == sizeof( VkGraphicsPipelineCreateInfo ), "struct and wrapper have different size!" );
18701
18702 struct PhysicalDeviceLimits
18703 {
18704 operator const VkPhysicalDeviceLimits&() const
18705 {
18706 return *reinterpret_cast<const VkPhysicalDeviceLimits*>(this);
18707 }
18708
18709 bool operator==( PhysicalDeviceLimits const& rhs ) const
18710 {
18711 return ( maxImageDimension1D == rhs.maxImageDimension1D )
18712 && ( maxImageDimension2D == rhs.maxImageDimension2D )
18713 && ( maxImageDimension3D == rhs.maxImageDimension3D )
18714 && ( maxImageDimensionCube == rhs.maxImageDimensionCube )
18715 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
18716 && ( maxTexelBufferElements == rhs.maxTexelBufferElements )
18717 && ( maxUniformBufferRange == rhs.maxUniformBufferRange )
18718 && ( maxStorageBufferRange == rhs.maxStorageBufferRange )
18719 && ( maxPushConstantsSize == rhs.maxPushConstantsSize )
18720 && ( maxMemoryAllocationCount == rhs.maxMemoryAllocationCount )
18721 && ( maxSamplerAllocationCount == rhs.maxSamplerAllocationCount )
18722 && ( bufferImageGranularity == rhs.bufferImageGranularity )
18723 && ( sparseAddressSpaceSize == rhs.sparseAddressSpaceSize )
18724 && ( maxBoundDescriptorSets == rhs.maxBoundDescriptorSets )
18725 && ( maxPerStageDescriptorSamplers == rhs.maxPerStageDescriptorSamplers )
18726 && ( maxPerStageDescriptorUniformBuffers == rhs.maxPerStageDescriptorUniformBuffers )
18727 && ( maxPerStageDescriptorStorageBuffers == rhs.maxPerStageDescriptorStorageBuffers )
18728 && ( maxPerStageDescriptorSampledImages == rhs.maxPerStageDescriptorSampledImages )
18729 && ( maxPerStageDescriptorStorageImages == rhs.maxPerStageDescriptorStorageImages )
18730 && ( maxPerStageDescriptorInputAttachments == rhs.maxPerStageDescriptorInputAttachments )
18731 && ( maxPerStageResources == rhs.maxPerStageResources )
18732 && ( maxDescriptorSetSamplers == rhs.maxDescriptorSetSamplers )
18733 && ( maxDescriptorSetUniformBuffers == rhs.maxDescriptorSetUniformBuffers )
18734 && ( maxDescriptorSetUniformBuffersDynamic == rhs.maxDescriptorSetUniformBuffersDynamic )
18735 && ( maxDescriptorSetStorageBuffers == rhs.maxDescriptorSetStorageBuffers )
18736 && ( maxDescriptorSetStorageBuffersDynamic == rhs.maxDescriptorSetStorageBuffersDynamic )
18737 && ( maxDescriptorSetSampledImages == rhs.maxDescriptorSetSampledImages )
18738 && ( maxDescriptorSetStorageImages == rhs.maxDescriptorSetStorageImages )
18739 && ( maxDescriptorSetInputAttachments == rhs.maxDescriptorSetInputAttachments )
18740 && ( maxVertexInputAttributes == rhs.maxVertexInputAttributes )
18741 && ( maxVertexInputBindings == rhs.maxVertexInputBindings )
18742 && ( maxVertexInputAttributeOffset == rhs.maxVertexInputAttributeOffset )
18743 && ( maxVertexInputBindingStride == rhs.maxVertexInputBindingStride )
18744 && ( maxVertexOutputComponents == rhs.maxVertexOutputComponents )
18745 && ( maxTessellationGenerationLevel == rhs.maxTessellationGenerationLevel )
18746 && ( maxTessellationPatchSize == rhs.maxTessellationPatchSize )
18747 && ( maxTessellationControlPerVertexInputComponents == rhs.maxTessellationControlPerVertexInputComponents )
18748 && ( maxTessellationControlPerVertexOutputComponents == rhs.maxTessellationControlPerVertexOutputComponents )
18749 && ( maxTessellationControlPerPatchOutputComponents == rhs.maxTessellationControlPerPatchOutputComponents )
18750 && ( maxTessellationControlTotalOutputComponents == rhs.maxTessellationControlTotalOutputComponents )
18751 && ( maxTessellationEvaluationInputComponents == rhs.maxTessellationEvaluationInputComponents )
18752 && ( maxTessellationEvaluationOutputComponents == rhs.maxTessellationEvaluationOutputComponents )
18753 && ( maxGeometryShaderInvocations == rhs.maxGeometryShaderInvocations )
18754 && ( maxGeometryInputComponents == rhs.maxGeometryInputComponents )
18755 && ( maxGeometryOutputComponents == rhs.maxGeometryOutputComponents )
18756 && ( maxGeometryOutputVertices == rhs.maxGeometryOutputVertices )
18757 && ( maxGeometryTotalOutputComponents == rhs.maxGeometryTotalOutputComponents )
18758 && ( maxFragmentInputComponents == rhs.maxFragmentInputComponents )
18759 && ( maxFragmentOutputAttachments == rhs.maxFragmentOutputAttachments )
18760 && ( maxFragmentDualSrcAttachments == rhs.maxFragmentDualSrcAttachments )
18761 && ( maxFragmentCombinedOutputResources == rhs.maxFragmentCombinedOutputResources )
18762 && ( maxComputeSharedMemorySize == rhs.maxComputeSharedMemorySize )
18763 && ( memcmp( maxComputeWorkGroupCount, rhs.maxComputeWorkGroupCount, 3 * sizeof( uint32_t ) ) == 0 )
18764 && ( maxComputeWorkGroupInvocations == rhs.maxComputeWorkGroupInvocations )
18765 && ( memcmp( maxComputeWorkGroupSize, rhs.maxComputeWorkGroupSize, 3 * sizeof( uint32_t ) ) == 0 )
18766 && ( subPixelPrecisionBits == rhs.subPixelPrecisionBits )
18767 && ( subTexelPrecisionBits == rhs.subTexelPrecisionBits )
18768 && ( mipmapPrecisionBits == rhs.mipmapPrecisionBits )
18769 && ( maxDrawIndexedIndexValue == rhs.maxDrawIndexedIndexValue )
18770 && ( maxDrawIndirectCount == rhs.maxDrawIndirectCount )
18771 && ( maxSamplerLodBias == rhs.maxSamplerLodBias )
18772 && ( maxSamplerAnisotropy == rhs.maxSamplerAnisotropy )
18773 && ( maxViewports == rhs.maxViewports )
18774 && ( memcmp( maxViewportDimensions, rhs.maxViewportDimensions, 2 * sizeof( uint32_t ) ) == 0 )
18775 && ( memcmp( viewportBoundsRange, rhs.viewportBoundsRange, 2 * sizeof( float ) ) == 0 )
18776 && ( viewportSubPixelBits == rhs.viewportSubPixelBits )
18777 && ( minMemoryMapAlignment == rhs.minMemoryMapAlignment )
18778 && ( minTexelBufferOffsetAlignment == rhs.minTexelBufferOffsetAlignment )
18779 && ( minUniformBufferOffsetAlignment == rhs.minUniformBufferOffsetAlignment )
18780 && ( minStorageBufferOffsetAlignment == rhs.minStorageBufferOffsetAlignment )
18781 && ( minTexelOffset == rhs.minTexelOffset )
18782 && ( maxTexelOffset == rhs.maxTexelOffset )
18783 && ( minTexelGatherOffset == rhs.minTexelGatherOffset )
18784 && ( maxTexelGatherOffset == rhs.maxTexelGatherOffset )
18785 && ( minInterpolationOffset == rhs.minInterpolationOffset )
18786 && ( maxInterpolationOffset == rhs.maxInterpolationOffset )
18787 && ( subPixelInterpolationOffsetBits == rhs.subPixelInterpolationOffsetBits )
18788 && ( maxFramebufferWidth == rhs.maxFramebufferWidth )
18789 && ( maxFramebufferHeight == rhs.maxFramebufferHeight )
18790 && ( maxFramebufferLayers == rhs.maxFramebufferLayers )
18791 && ( framebufferColorSampleCounts == rhs.framebufferColorSampleCounts )
18792 && ( framebufferDepthSampleCounts == rhs.framebufferDepthSampleCounts )
18793 && ( framebufferStencilSampleCounts == rhs.framebufferStencilSampleCounts )
18794 && ( framebufferNoAttachmentsSampleCounts == rhs.framebufferNoAttachmentsSampleCounts )
18795 && ( maxColorAttachments == rhs.maxColorAttachments )
18796 && ( sampledImageColorSampleCounts == rhs.sampledImageColorSampleCounts )
18797 && ( sampledImageIntegerSampleCounts == rhs.sampledImageIntegerSampleCounts )
18798 && ( sampledImageDepthSampleCounts == rhs.sampledImageDepthSampleCounts )
18799 && ( sampledImageStencilSampleCounts == rhs.sampledImageStencilSampleCounts )
18800 && ( storageImageSampleCounts == rhs.storageImageSampleCounts )
18801 && ( maxSampleMaskWords == rhs.maxSampleMaskWords )
18802 && ( timestampComputeAndGraphics == rhs.timestampComputeAndGraphics )
18803 && ( timestampPeriod == rhs.timestampPeriod )
18804 && ( maxClipDistances == rhs.maxClipDistances )
18805 && ( maxCullDistances == rhs.maxCullDistances )
18806 && ( maxCombinedClipAndCullDistances == rhs.maxCombinedClipAndCullDistances )
18807 && ( discreteQueuePriorities == rhs.discreteQueuePriorities )
18808 && ( memcmp( pointSizeRange, rhs.pointSizeRange, 2 * sizeof( float ) ) == 0 )
18809 && ( memcmp( lineWidthRange, rhs.lineWidthRange, 2 * sizeof( float ) ) == 0 )
18810 && ( pointSizeGranularity == rhs.pointSizeGranularity )
18811 && ( lineWidthGranularity == rhs.lineWidthGranularity )
18812 && ( strictLines == rhs.strictLines )
18813 && ( standardSampleLocations == rhs.standardSampleLocations )
18814 && ( optimalBufferCopyOffsetAlignment == rhs.optimalBufferCopyOffsetAlignment )
18815 && ( optimalBufferCopyRowPitchAlignment == rhs.optimalBufferCopyRowPitchAlignment )
18816 && ( nonCoherentAtomSize == rhs.nonCoherentAtomSize );
18817 }
18818
18819 bool operator!=( PhysicalDeviceLimits const& rhs ) const
18820 {
18821 return !operator==( rhs );
18822 }
18823
18824 uint32_t maxImageDimension1D;
18825 uint32_t maxImageDimension2D;
18826 uint32_t maxImageDimension3D;
18827 uint32_t maxImageDimensionCube;
18828 uint32_t maxImageArrayLayers;
18829 uint32_t maxTexelBufferElements;
18830 uint32_t maxUniformBufferRange;
18831 uint32_t maxStorageBufferRange;
18832 uint32_t maxPushConstantsSize;
18833 uint32_t maxMemoryAllocationCount;
18834 uint32_t maxSamplerAllocationCount;
18835 DeviceSize bufferImageGranularity;
18836 DeviceSize sparseAddressSpaceSize;
18837 uint32_t maxBoundDescriptorSets;
18838 uint32_t maxPerStageDescriptorSamplers;
18839 uint32_t maxPerStageDescriptorUniformBuffers;
18840 uint32_t maxPerStageDescriptorStorageBuffers;
18841 uint32_t maxPerStageDescriptorSampledImages;
18842 uint32_t maxPerStageDescriptorStorageImages;
18843 uint32_t maxPerStageDescriptorInputAttachments;
18844 uint32_t maxPerStageResources;
18845 uint32_t maxDescriptorSetSamplers;
18846 uint32_t maxDescriptorSetUniformBuffers;
18847 uint32_t maxDescriptorSetUniformBuffersDynamic;
18848 uint32_t maxDescriptorSetStorageBuffers;
18849 uint32_t maxDescriptorSetStorageBuffersDynamic;
18850 uint32_t maxDescriptorSetSampledImages;
18851 uint32_t maxDescriptorSetStorageImages;
18852 uint32_t maxDescriptorSetInputAttachments;
18853 uint32_t maxVertexInputAttributes;
18854 uint32_t maxVertexInputBindings;
18855 uint32_t maxVertexInputAttributeOffset;
18856 uint32_t maxVertexInputBindingStride;
18857 uint32_t maxVertexOutputComponents;
18858 uint32_t maxTessellationGenerationLevel;
18859 uint32_t maxTessellationPatchSize;
18860 uint32_t maxTessellationControlPerVertexInputComponents;
18861 uint32_t maxTessellationControlPerVertexOutputComponents;
18862 uint32_t maxTessellationControlPerPatchOutputComponents;
18863 uint32_t maxTessellationControlTotalOutputComponents;
18864 uint32_t maxTessellationEvaluationInputComponents;
18865 uint32_t maxTessellationEvaluationOutputComponents;
18866 uint32_t maxGeometryShaderInvocations;
18867 uint32_t maxGeometryInputComponents;
18868 uint32_t maxGeometryOutputComponents;
18869 uint32_t maxGeometryOutputVertices;
18870 uint32_t maxGeometryTotalOutputComponents;
18871 uint32_t maxFragmentInputComponents;
18872 uint32_t maxFragmentOutputAttachments;
18873 uint32_t maxFragmentDualSrcAttachments;
18874 uint32_t maxFragmentCombinedOutputResources;
18875 uint32_t maxComputeSharedMemorySize;
18876 uint32_t maxComputeWorkGroupCount[3];
18877 uint32_t maxComputeWorkGroupInvocations;
18878 uint32_t maxComputeWorkGroupSize[3];
18879 uint32_t subPixelPrecisionBits;
18880 uint32_t subTexelPrecisionBits;
18881 uint32_t mipmapPrecisionBits;
18882 uint32_t maxDrawIndexedIndexValue;
18883 uint32_t maxDrawIndirectCount;
18884 float maxSamplerLodBias;
18885 float maxSamplerAnisotropy;
18886 uint32_t maxViewports;
18887 uint32_t maxViewportDimensions[2];
18888 float viewportBoundsRange[2];
18889 uint32_t viewportSubPixelBits;
18890 size_t minMemoryMapAlignment;
18891 DeviceSize minTexelBufferOffsetAlignment;
18892 DeviceSize minUniformBufferOffsetAlignment;
18893 DeviceSize minStorageBufferOffsetAlignment;
18894 int32_t minTexelOffset;
18895 uint32_t maxTexelOffset;
18896 int32_t minTexelGatherOffset;
18897 uint32_t maxTexelGatherOffset;
18898 float minInterpolationOffset;
18899 float maxInterpolationOffset;
18900 uint32_t subPixelInterpolationOffsetBits;
18901 uint32_t maxFramebufferWidth;
18902 uint32_t maxFramebufferHeight;
18903 uint32_t maxFramebufferLayers;
18904 SampleCountFlags framebufferColorSampleCounts;
18905 SampleCountFlags framebufferDepthSampleCounts;
18906 SampleCountFlags framebufferStencilSampleCounts;
18907 SampleCountFlags framebufferNoAttachmentsSampleCounts;
18908 uint32_t maxColorAttachments;
18909 SampleCountFlags sampledImageColorSampleCounts;
18910 SampleCountFlags sampledImageIntegerSampleCounts;
18911 SampleCountFlags sampledImageDepthSampleCounts;
18912 SampleCountFlags sampledImageStencilSampleCounts;
18913 SampleCountFlags storageImageSampleCounts;
18914 uint32_t maxSampleMaskWords;
18915 Bool32 timestampComputeAndGraphics;
18916 float timestampPeriod;
18917 uint32_t maxClipDistances;
18918 uint32_t maxCullDistances;
18919 uint32_t maxCombinedClipAndCullDistances;
18920 uint32_t discreteQueuePriorities;
18921 float pointSizeRange[2];
18922 float lineWidthRange[2];
18923 float pointSizeGranularity;
18924 float lineWidthGranularity;
18925 Bool32 strictLines;
18926 Bool32 standardSampleLocations;
18927 DeviceSize optimalBufferCopyOffsetAlignment;
18928 DeviceSize optimalBufferCopyRowPitchAlignment;
18929 DeviceSize nonCoherentAtomSize;
18930 };
18931 static_assert( sizeof( PhysicalDeviceLimits ) == sizeof( VkPhysicalDeviceLimits ), "struct and wrapper have different size!" );
18932
18933 struct PhysicalDeviceProperties
18934 {
18935 operator const VkPhysicalDeviceProperties&() const
18936 {
18937 return *reinterpret_cast<const VkPhysicalDeviceProperties*>(this);
18938 }
18939
18940 bool operator==( PhysicalDeviceProperties const& rhs ) const
18941 {
18942 return ( apiVersion == rhs.apiVersion )
18943 && ( driverVersion == rhs.driverVersion )
18944 && ( vendorID == rhs.vendorID )
18945 && ( deviceID == rhs.deviceID )
18946 && ( deviceType == rhs.deviceType )
18947 && ( memcmp( deviceName, rhs.deviceName, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE * sizeof( char ) ) == 0 )
18948 && ( memcmp( pipelineCacheUUID, rhs.pipelineCacheUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
18949 && ( limits == rhs.limits )
18950 && ( sparseProperties == rhs.sparseProperties );
18951 }
18952
18953 bool operator!=( PhysicalDeviceProperties const& rhs ) const
18954 {
18955 return !operator==( rhs );
18956 }
18957
18958 uint32_t apiVersion;
18959 uint32_t driverVersion;
18960 uint32_t vendorID;
18961 uint32_t deviceID;
18962 PhysicalDeviceType deviceType;
18963 char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
18964 uint8_t pipelineCacheUUID[VK_UUID_SIZE];
18965 PhysicalDeviceLimits limits;
18966 PhysicalDeviceSparseProperties sparseProperties;
18967 };
18968 static_assert( sizeof( PhysicalDeviceProperties ) == sizeof( VkPhysicalDeviceProperties ), "struct and wrapper have different size!" );
18969
Mark Young39389872017-01-19 21:10:49 -070018970 struct PhysicalDeviceProperties2KHR
18971 {
18972 operator const VkPhysicalDeviceProperties2KHR&() const
18973 {
18974 return *reinterpret_cast<const VkPhysicalDeviceProperties2KHR*>(this);
18975 }
18976
18977 bool operator==( PhysicalDeviceProperties2KHR const& rhs ) const
18978 {
18979 return ( sType == rhs.sType )
18980 && ( pNext == rhs.pNext )
18981 && ( properties == rhs.properties );
18982 }
18983
18984 bool operator!=( PhysicalDeviceProperties2KHR const& rhs ) const
18985 {
18986 return !operator==( rhs );
18987 }
18988
18989 private:
18990 StructureType sType;
18991
18992 public:
18993 void* pNext;
18994 PhysicalDeviceProperties properties;
18995 };
18996 static_assert( sizeof( PhysicalDeviceProperties2KHR ) == sizeof( VkPhysicalDeviceProperties2KHR ), "struct and wrapper have different size!" );
18997
18998 struct ImageFormatProperties2KHR
18999 {
19000 operator const VkImageFormatProperties2KHR&() const
19001 {
19002 return *reinterpret_cast<const VkImageFormatProperties2KHR*>(this);
19003 }
19004
19005 bool operator==( ImageFormatProperties2KHR const& rhs ) const
19006 {
19007 return ( sType == rhs.sType )
19008 && ( pNext == rhs.pNext )
19009 && ( imageFormatProperties == rhs.imageFormatProperties );
19010 }
19011
19012 bool operator!=( ImageFormatProperties2KHR const& rhs ) const
19013 {
19014 return !operator==( rhs );
19015 }
19016
19017 private:
19018 StructureType sType;
19019
19020 public:
19021 void* pNext;
19022 ImageFormatProperties imageFormatProperties;
19023 };
19024 static_assert( sizeof( ImageFormatProperties2KHR ) == sizeof( VkImageFormatProperties2KHR ), "struct and wrapper have different size!" );
19025
19026 struct PhysicalDeviceSparseImageFormatInfo2KHR
19027 {
19028 PhysicalDeviceSparseImageFormatInfo2KHR( Format format_ = Format::eUndefined, ImageType type_ = ImageType::e1D, SampleCountFlagBits samples_ = SampleCountFlagBits::e1, ImageUsageFlags usage_ = ImageUsageFlags(), ImageTiling tiling_ = ImageTiling::eOptimal )
19029 : sType( StructureType::ePhysicalDeviceSparseImageFormatInfo2KHR )
19030 , pNext( nullptr )
19031 , format( format_ )
19032 , type( type_ )
19033 , samples( samples_ )
19034 , usage( usage_ )
19035 , tiling( tiling_ )
19036 {
19037 }
19038
19039 PhysicalDeviceSparseImageFormatInfo2KHR( VkPhysicalDeviceSparseImageFormatInfo2KHR const & rhs )
19040 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019041 memcpy( this, &rhs, sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070019042 }
19043
19044 PhysicalDeviceSparseImageFormatInfo2KHR& operator=( VkPhysicalDeviceSparseImageFormatInfo2KHR const & rhs )
19045 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019046 memcpy( this, &rhs, sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070019047 return *this;
19048 }
Mark Young39389872017-01-19 21:10:49 -070019049 PhysicalDeviceSparseImageFormatInfo2KHR& setPNext( const void* pNext_ )
19050 {
19051 pNext = pNext_;
19052 return *this;
19053 }
19054
19055 PhysicalDeviceSparseImageFormatInfo2KHR& setFormat( Format format_ )
19056 {
19057 format = format_;
19058 return *this;
19059 }
19060
19061 PhysicalDeviceSparseImageFormatInfo2KHR& setType( ImageType type_ )
19062 {
19063 type = type_;
19064 return *this;
19065 }
19066
19067 PhysicalDeviceSparseImageFormatInfo2KHR& setSamples( SampleCountFlagBits samples_ )
19068 {
19069 samples = samples_;
19070 return *this;
19071 }
19072
19073 PhysicalDeviceSparseImageFormatInfo2KHR& setUsage( ImageUsageFlags usage_ )
19074 {
19075 usage = usage_;
19076 return *this;
19077 }
19078
19079 PhysicalDeviceSparseImageFormatInfo2KHR& setTiling( ImageTiling tiling_ )
19080 {
19081 tiling = tiling_;
19082 return *this;
19083 }
19084
19085 operator const VkPhysicalDeviceSparseImageFormatInfo2KHR&() const
19086 {
19087 return *reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>(this);
19088 }
19089
19090 bool operator==( PhysicalDeviceSparseImageFormatInfo2KHR const& rhs ) const
19091 {
19092 return ( sType == rhs.sType )
19093 && ( pNext == rhs.pNext )
19094 && ( format == rhs.format )
19095 && ( type == rhs.type )
19096 && ( samples == rhs.samples )
19097 && ( usage == rhs.usage )
19098 && ( tiling == rhs.tiling );
19099 }
19100
19101 bool operator!=( PhysicalDeviceSparseImageFormatInfo2KHR const& rhs ) const
19102 {
19103 return !operator==( rhs );
19104 }
19105
19106 private:
19107 StructureType sType;
19108
19109 public:
19110 const void* pNext;
19111 Format format;
19112 ImageType type;
19113 SampleCountFlagBits samples;
19114 ImageUsageFlags usage;
19115 ImageTiling tiling;
19116 };
19117 static_assert( sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) == sizeof( VkPhysicalDeviceSparseImageFormatInfo2KHR ), "struct and wrapper have different size!" );
19118
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019119 struct SampleLocationsInfoEXT
19120 {
19121 SampleLocationsInfoEXT( SampleCountFlagBits sampleLocationsPerPixel_ = SampleCountFlagBits::e1, Extent2D sampleLocationGridSize_ = Extent2D(), uint32_t sampleLocationsCount_ = 0, const SampleLocationEXT* pSampleLocations_ = nullptr )
19122 : sType( StructureType::eSampleLocationsInfoEXT )
19123 , pNext( nullptr )
19124 , sampleLocationsPerPixel( sampleLocationsPerPixel_ )
19125 , sampleLocationGridSize( sampleLocationGridSize_ )
19126 , sampleLocationsCount( sampleLocationsCount_ )
19127 , pSampleLocations( pSampleLocations_ )
19128 {
19129 }
19130
19131 SampleLocationsInfoEXT( VkSampleLocationsInfoEXT const & rhs )
19132 {
19133 memcpy( this, &rhs, sizeof( SampleLocationsInfoEXT ) );
19134 }
19135
19136 SampleLocationsInfoEXT& operator=( VkSampleLocationsInfoEXT const & rhs )
19137 {
19138 memcpy( this, &rhs, sizeof( SampleLocationsInfoEXT ) );
19139 return *this;
19140 }
19141 SampleLocationsInfoEXT& setPNext( const void* pNext_ )
19142 {
19143 pNext = pNext_;
19144 return *this;
19145 }
19146
19147 SampleLocationsInfoEXT& setSampleLocationsPerPixel( SampleCountFlagBits sampleLocationsPerPixel_ )
19148 {
19149 sampleLocationsPerPixel = sampleLocationsPerPixel_;
19150 return *this;
19151 }
19152
19153 SampleLocationsInfoEXT& setSampleLocationGridSize( Extent2D sampleLocationGridSize_ )
19154 {
19155 sampleLocationGridSize = sampleLocationGridSize_;
19156 return *this;
19157 }
19158
19159 SampleLocationsInfoEXT& setSampleLocationsCount( uint32_t sampleLocationsCount_ )
19160 {
19161 sampleLocationsCount = sampleLocationsCount_;
19162 return *this;
19163 }
19164
19165 SampleLocationsInfoEXT& setPSampleLocations( const SampleLocationEXT* pSampleLocations_ )
19166 {
19167 pSampleLocations = pSampleLocations_;
19168 return *this;
19169 }
19170
19171 operator const VkSampleLocationsInfoEXT&() const
19172 {
19173 return *reinterpret_cast<const VkSampleLocationsInfoEXT*>(this);
19174 }
19175
19176 bool operator==( SampleLocationsInfoEXT const& rhs ) const
19177 {
19178 return ( sType == rhs.sType )
19179 && ( pNext == rhs.pNext )
19180 && ( sampleLocationsPerPixel == rhs.sampleLocationsPerPixel )
19181 && ( sampleLocationGridSize == rhs.sampleLocationGridSize )
19182 && ( sampleLocationsCount == rhs.sampleLocationsCount )
19183 && ( pSampleLocations == rhs.pSampleLocations );
19184 }
19185
19186 bool operator!=( SampleLocationsInfoEXT const& rhs ) const
19187 {
19188 return !operator==( rhs );
19189 }
19190
19191 private:
19192 StructureType sType;
19193
19194 public:
19195 const void* pNext;
19196 SampleCountFlagBits sampleLocationsPerPixel;
19197 Extent2D sampleLocationGridSize;
19198 uint32_t sampleLocationsCount;
19199 const SampleLocationEXT* pSampleLocations;
19200 };
19201 static_assert( sizeof( SampleLocationsInfoEXT ) == sizeof( VkSampleLocationsInfoEXT ), "struct and wrapper have different size!" );
19202
19203 struct AttachmentSampleLocationsEXT
19204 {
19205 AttachmentSampleLocationsEXT( uint32_t attachmentIndex_ = 0, SampleLocationsInfoEXT sampleLocationsInfo_ = SampleLocationsInfoEXT() )
19206 : attachmentIndex( attachmentIndex_ )
19207 , sampleLocationsInfo( sampleLocationsInfo_ )
19208 {
19209 }
19210
19211 AttachmentSampleLocationsEXT( VkAttachmentSampleLocationsEXT const & rhs )
19212 {
19213 memcpy( this, &rhs, sizeof( AttachmentSampleLocationsEXT ) );
19214 }
19215
19216 AttachmentSampleLocationsEXT& operator=( VkAttachmentSampleLocationsEXT const & rhs )
19217 {
19218 memcpy( this, &rhs, sizeof( AttachmentSampleLocationsEXT ) );
19219 return *this;
19220 }
19221 AttachmentSampleLocationsEXT& setAttachmentIndex( uint32_t attachmentIndex_ )
19222 {
19223 attachmentIndex = attachmentIndex_;
19224 return *this;
19225 }
19226
19227 AttachmentSampleLocationsEXT& setSampleLocationsInfo( SampleLocationsInfoEXT sampleLocationsInfo_ )
19228 {
19229 sampleLocationsInfo = sampleLocationsInfo_;
19230 return *this;
19231 }
19232
19233 operator const VkAttachmentSampleLocationsEXT&() const
19234 {
19235 return *reinterpret_cast<const VkAttachmentSampleLocationsEXT*>(this);
19236 }
19237
19238 bool operator==( AttachmentSampleLocationsEXT const& rhs ) const
19239 {
19240 return ( attachmentIndex == rhs.attachmentIndex )
19241 && ( sampleLocationsInfo == rhs.sampleLocationsInfo );
19242 }
19243
19244 bool operator!=( AttachmentSampleLocationsEXT const& rhs ) const
19245 {
19246 return !operator==( rhs );
19247 }
19248
19249 uint32_t attachmentIndex;
19250 SampleLocationsInfoEXT sampleLocationsInfo;
19251 };
19252 static_assert( sizeof( AttachmentSampleLocationsEXT ) == sizeof( VkAttachmentSampleLocationsEXT ), "struct and wrapper have different size!" );
19253
19254 struct SubpassSampleLocationsEXT
19255 {
19256 SubpassSampleLocationsEXT( uint32_t subpassIndex_ = 0, SampleLocationsInfoEXT sampleLocationsInfo_ = SampleLocationsInfoEXT() )
19257 : subpassIndex( subpassIndex_ )
19258 , sampleLocationsInfo( sampleLocationsInfo_ )
19259 {
19260 }
19261
19262 SubpassSampleLocationsEXT( VkSubpassSampleLocationsEXT const & rhs )
19263 {
19264 memcpy( this, &rhs, sizeof( SubpassSampleLocationsEXT ) );
19265 }
19266
19267 SubpassSampleLocationsEXT& operator=( VkSubpassSampleLocationsEXT const & rhs )
19268 {
19269 memcpy( this, &rhs, sizeof( SubpassSampleLocationsEXT ) );
19270 return *this;
19271 }
19272 SubpassSampleLocationsEXT& setSubpassIndex( uint32_t subpassIndex_ )
19273 {
19274 subpassIndex = subpassIndex_;
19275 return *this;
19276 }
19277
19278 SubpassSampleLocationsEXT& setSampleLocationsInfo( SampleLocationsInfoEXT sampleLocationsInfo_ )
19279 {
19280 sampleLocationsInfo = sampleLocationsInfo_;
19281 return *this;
19282 }
19283
19284 operator const VkSubpassSampleLocationsEXT&() const
19285 {
19286 return *reinterpret_cast<const VkSubpassSampleLocationsEXT*>(this);
19287 }
19288
19289 bool operator==( SubpassSampleLocationsEXT const& rhs ) const
19290 {
19291 return ( subpassIndex == rhs.subpassIndex )
19292 && ( sampleLocationsInfo == rhs.sampleLocationsInfo );
19293 }
19294
19295 bool operator!=( SubpassSampleLocationsEXT const& rhs ) const
19296 {
19297 return !operator==( rhs );
19298 }
19299
19300 uint32_t subpassIndex;
19301 SampleLocationsInfoEXT sampleLocationsInfo;
19302 };
19303 static_assert( sizeof( SubpassSampleLocationsEXT ) == sizeof( VkSubpassSampleLocationsEXT ), "struct and wrapper have different size!" );
19304
19305 struct RenderPassSampleLocationsBeginInfoEXT
19306 {
19307 RenderPassSampleLocationsBeginInfoEXT( uint32_t attachmentInitialSampleLocationsCount_ = 0, const AttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations_ = nullptr, uint32_t postSubpassSampleLocationsCount_ = 0, const SubpassSampleLocationsEXT* pSubpassSampleLocations_ = nullptr )
19308 : sType( StructureType::eRenderPassSampleLocationsBeginInfoEXT )
19309 , pNext( nullptr )
19310 , attachmentInitialSampleLocationsCount( attachmentInitialSampleLocationsCount_ )
19311 , pAttachmentInitialSampleLocations( pAttachmentInitialSampleLocations_ )
19312 , postSubpassSampleLocationsCount( postSubpassSampleLocationsCount_ )
19313 , pSubpassSampleLocations( pSubpassSampleLocations_ )
19314 {
19315 }
19316
19317 RenderPassSampleLocationsBeginInfoEXT( VkRenderPassSampleLocationsBeginInfoEXT const & rhs )
19318 {
19319 memcpy( this, &rhs, sizeof( RenderPassSampleLocationsBeginInfoEXT ) );
19320 }
19321
19322 RenderPassSampleLocationsBeginInfoEXT& operator=( VkRenderPassSampleLocationsBeginInfoEXT const & rhs )
19323 {
19324 memcpy( this, &rhs, sizeof( RenderPassSampleLocationsBeginInfoEXT ) );
19325 return *this;
19326 }
19327 RenderPassSampleLocationsBeginInfoEXT& setPNext( const void* pNext_ )
19328 {
19329 pNext = pNext_;
19330 return *this;
19331 }
19332
19333 RenderPassSampleLocationsBeginInfoEXT& setAttachmentInitialSampleLocationsCount( uint32_t attachmentInitialSampleLocationsCount_ )
19334 {
19335 attachmentInitialSampleLocationsCount = attachmentInitialSampleLocationsCount_;
19336 return *this;
19337 }
19338
19339 RenderPassSampleLocationsBeginInfoEXT& setPAttachmentInitialSampleLocations( const AttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations_ )
19340 {
19341 pAttachmentInitialSampleLocations = pAttachmentInitialSampleLocations_;
19342 return *this;
19343 }
19344
19345 RenderPassSampleLocationsBeginInfoEXT& setPostSubpassSampleLocationsCount( uint32_t postSubpassSampleLocationsCount_ )
19346 {
19347 postSubpassSampleLocationsCount = postSubpassSampleLocationsCount_;
19348 return *this;
19349 }
19350
19351 RenderPassSampleLocationsBeginInfoEXT& setPSubpassSampleLocations( const SubpassSampleLocationsEXT* pSubpassSampleLocations_ )
19352 {
19353 pSubpassSampleLocations = pSubpassSampleLocations_;
19354 return *this;
19355 }
19356
19357 operator const VkRenderPassSampleLocationsBeginInfoEXT&() const
19358 {
19359 return *reinterpret_cast<const VkRenderPassSampleLocationsBeginInfoEXT*>(this);
19360 }
19361
19362 bool operator==( RenderPassSampleLocationsBeginInfoEXT const& rhs ) const
19363 {
19364 return ( sType == rhs.sType )
19365 && ( pNext == rhs.pNext )
19366 && ( attachmentInitialSampleLocationsCount == rhs.attachmentInitialSampleLocationsCount )
19367 && ( pAttachmentInitialSampleLocations == rhs.pAttachmentInitialSampleLocations )
19368 && ( postSubpassSampleLocationsCount == rhs.postSubpassSampleLocationsCount )
19369 && ( pSubpassSampleLocations == rhs.pSubpassSampleLocations );
19370 }
19371
19372 bool operator!=( RenderPassSampleLocationsBeginInfoEXT const& rhs ) const
19373 {
19374 return !operator==( rhs );
19375 }
19376
19377 private:
19378 StructureType sType;
19379
19380 public:
19381 const void* pNext;
19382 uint32_t attachmentInitialSampleLocationsCount;
19383 const AttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations;
19384 uint32_t postSubpassSampleLocationsCount;
19385 const SubpassSampleLocationsEXT* pSubpassSampleLocations;
19386 };
19387 static_assert( sizeof( RenderPassSampleLocationsBeginInfoEXT ) == sizeof( VkRenderPassSampleLocationsBeginInfoEXT ), "struct and wrapper have different size!" );
19388
19389 struct PipelineSampleLocationsStateCreateInfoEXT
19390 {
19391 PipelineSampleLocationsStateCreateInfoEXT( Bool32 sampleLocationsEnable_ = 0, SampleLocationsInfoEXT sampleLocationsInfo_ = SampleLocationsInfoEXT() )
19392 : sType( StructureType::ePipelineSampleLocationsStateCreateInfoEXT )
19393 , pNext( nullptr )
19394 , sampleLocationsEnable( sampleLocationsEnable_ )
19395 , sampleLocationsInfo( sampleLocationsInfo_ )
19396 {
19397 }
19398
19399 PipelineSampleLocationsStateCreateInfoEXT( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs )
19400 {
19401 memcpy( this, &rhs, sizeof( PipelineSampleLocationsStateCreateInfoEXT ) );
19402 }
19403
19404 PipelineSampleLocationsStateCreateInfoEXT& operator=( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs )
19405 {
19406 memcpy( this, &rhs, sizeof( PipelineSampleLocationsStateCreateInfoEXT ) );
19407 return *this;
19408 }
19409 PipelineSampleLocationsStateCreateInfoEXT& setPNext( const void* pNext_ )
19410 {
19411 pNext = pNext_;
19412 return *this;
19413 }
19414
19415 PipelineSampleLocationsStateCreateInfoEXT& setSampleLocationsEnable( Bool32 sampleLocationsEnable_ )
19416 {
19417 sampleLocationsEnable = sampleLocationsEnable_;
19418 return *this;
19419 }
19420
19421 PipelineSampleLocationsStateCreateInfoEXT& setSampleLocationsInfo( SampleLocationsInfoEXT sampleLocationsInfo_ )
19422 {
19423 sampleLocationsInfo = sampleLocationsInfo_;
19424 return *this;
19425 }
19426
19427 operator const VkPipelineSampleLocationsStateCreateInfoEXT&() const
19428 {
19429 return *reinterpret_cast<const VkPipelineSampleLocationsStateCreateInfoEXT*>(this);
19430 }
19431
19432 bool operator==( PipelineSampleLocationsStateCreateInfoEXT const& rhs ) const
19433 {
19434 return ( sType == rhs.sType )
19435 && ( pNext == rhs.pNext )
19436 && ( sampleLocationsEnable == rhs.sampleLocationsEnable )
19437 && ( sampleLocationsInfo == rhs.sampleLocationsInfo );
19438 }
19439
19440 bool operator!=( PipelineSampleLocationsStateCreateInfoEXT const& rhs ) const
19441 {
19442 return !operator==( rhs );
19443 }
19444
19445 private:
19446 StructureType sType;
19447
19448 public:
19449 const void* pNext;
19450 Bool32 sampleLocationsEnable;
19451 SampleLocationsInfoEXT sampleLocationsInfo;
19452 };
19453 static_assert( sizeof( PipelineSampleLocationsStateCreateInfoEXT ) == sizeof( VkPipelineSampleLocationsStateCreateInfoEXT ), "struct and wrapper have different size!" );
19454
19455 struct PhysicalDeviceSampleLocationsPropertiesEXT
19456 {
19457 operator const VkPhysicalDeviceSampleLocationsPropertiesEXT&() const
19458 {
19459 return *reinterpret_cast<const VkPhysicalDeviceSampleLocationsPropertiesEXT*>(this);
19460 }
19461
19462 bool operator==( PhysicalDeviceSampleLocationsPropertiesEXT const& rhs ) const
19463 {
19464 return ( sType == rhs.sType )
19465 && ( pNext == rhs.pNext )
19466 && ( sampleLocationSampleCounts == rhs.sampleLocationSampleCounts )
19467 && ( maxSampleLocationGridSize == rhs.maxSampleLocationGridSize )
19468 && ( memcmp( sampleLocationCoordinateRange, rhs.sampleLocationCoordinateRange, 2 * sizeof( float ) ) == 0 )
19469 && ( sampleLocationSubPixelBits == rhs.sampleLocationSubPixelBits )
19470 && ( variableSampleLocations == rhs.variableSampleLocations );
19471 }
19472
19473 bool operator!=( PhysicalDeviceSampleLocationsPropertiesEXT const& rhs ) const
19474 {
19475 return !operator==( rhs );
19476 }
19477
19478 private:
19479 StructureType sType;
19480
19481 public:
19482 void* pNext;
19483 SampleCountFlags sampleLocationSampleCounts;
19484 Extent2D maxSampleLocationGridSize;
19485 float sampleLocationCoordinateRange[2];
19486 uint32_t sampleLocationSubPixelBits;
19487 Bool32 variableSampleLocations;
19488 };
19489 static_assert( sizeof( PhysicalDeviceSampleLocationsPropertiesEXT ) == sizeof( VkPhysicalDeviceSampleLocationsPropertiesEXT ), "struct and wrapper have different size!" );
19490
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019491 enum class AttachmentDescriptionFlagBits
19492 {
19493 eMayAlias = VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT
19494 };
19495
19496 using AttachmentDescriptionFlags = Flags<AttachmentDescriptionFlagBits, VkAttachmentDescriptionFlags>;
19497
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019498 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator|( AttachmentDescriptionFlagBits bit0, AttachmentDescriptionFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019499 {
19500 return AttachmentDescriptionFlags( bit0 ) | bit1;
19501 }
19502
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019503 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator~( AttachmentDescriptionFlagBits bits )
19504 {
19505 return ~( AttachmentDescriptionFlags( bits ) );
19506 }
19507
19508 template <> struct FlagTraits<AttachmentDescriptionFlagBits>
19509 {
19510 enum
19511 {
19512 allFlags = VkFlags(AttachmentDescriptionFlagBits::eMayAlias)
19513 };
19514 };
19515
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019516 struct AttachmentDescription
19517 {
19518 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 )
19519 : flags( flags_ )
19520 , format( format_ )
19521 , samples( samples_ )
19522 , loadOp( loadOp_ )
19523 , storeOp( storeOp_ )
19524 , stencilLoadOp( stencilLoadOp_ )
19525 , stencilStoreOp( stencilStoreOp_ )
19526 , initialLayout( initialLayout_ )
19527 , finalLayout( finalLayout_ )
19528 {
19529 }
19530
19531 AttachmentDescription( VkAttachmentDescription const & rhs )
19532 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019533 memcpy( this, &rhs, sizeof( AttachmentDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019534 }
19535
19536 AttachmentDescription& operator=( VkAttachmentDescription const & rhs )
19537 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019538 memcpy( this, &rhs, sizeof( AttachmentDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019539 return *this;
19540 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019541 AttachmentDescription& setFlags( AttachmentDescriptionFlags flags_ )
19542 {
19543 flags = flags_;
19544 return *this;
19545 }
19546
19547 AttachmentDescription& setFormat( Format format_ )
19548 {
19549 format = format_;
19550 return *this;
19551 }
19552
19553 AttachmentDescription& setSamples( SampleCountFlagBits samples_ )
19554 {
19555 samples = samples_;
19556 return *this;
19557 }
19558
19559 AttachmentDescription& setLoadOp( AttachmentLoadOp loadOp_ )
19560 {
19561 loadOp = loadOp_;
19562 return *this;
19563 }
19564
19565 AttachmentDescription& setStoreOp( AttachmentStoreOp storeOp_ )
19566 {
19567 storeOp = storeOp_;
19568 return *this;
19569 }
19570
19571 AttachmentDescription& setStencilLoadOp( AttachmentLoadOp stencilLoadOp_ )
19572 {
19573 stencilLoadOp = stencilLoadOp_;
19574 return *this;
19575 }
19576
19577 AttachmentDescription& setStencilStoreOp( AttachmentStoreOp stencilStoreOp_ )
19578 {
19579 stencilStoreOp = stencilStoreOp_;
19580 return *this;
19581 }
19582
19583 AttachmentDescription& setInitialLayout( ImageLayout initialLayout_ )
19584 {
19585 initialLayout = initialLayout_;
19586 return *this;
19587 }
19588
19589 AttachmentDescription& setFinalLayout( ImageLayout finalLayout_ )
19590 {
19591 finalLayout = finalLayout_;
19592 return *this;
19593 }
19594
19595 operator const VkAttachmentDescription&() const
19596 {
19597 return *reinterpret_cast<const VkAttachmentDescription*>(this);
19598 }
19599
19600 bool operator==( AttachmentDescription const& rhs ) const
19601 {
19602 return ( flags == rhs.flags )
19603 && ( format == rhs.format )
19604 && ( samples == rhs.samples )
19605 && ( loadOp == rhs.loadOp )
19606 && ( storeOp == rhs.storeOp )
19607 && ( stencilLoadOp == rhs.stencilLoadOp )
19608 && ( stencilStoreOp == rhs.stencilStoreOp )
19609 && ( initialLayout == rhs.initialLayout )
19610 && ( finalLayout == rhs.finalLayout );
19611 }
19612
19613 bool operator!=( AttachmentDescription const& rhs ) const
19614 {
19615 return !operator==( rhs );
19616 }
19617
19618 AttachmentDescriptionFlags flags;
19619 Format format;
19620 SampleCountFlagBits samples;
19621 AttachmentLoadOp loadOp;
19622 AttachmentStoreOp storeOp;
19623 AttachmentLoadOp stencilLoadOp;
19624 AttachmentStoreOp stencilStoreOp;
19625 ImageLayout initialLayout;
19626 ImageLayout finalLayout;
19627 };
19628 static_assert( sizeof( AttachmentDescription ) == sizeof( VkAttachmentDescription ), "struct and wrapper have different size!" );
19629
19630 enum class StencilFaceFlagBits
19631 {
19632 eFront = VK_STENCIL_FACE_FRONT_BIT,
19633 eBack = VK_STENCIL_FACE_BACK_BIT,
19634 eVkStencilFrontAndBack = VK_STENCIL_FRONT_AND_BACK
19635 };
19636
19637 using StencilFaceFlags = Flags<StencilFaceFlagBits, VkStencilFaceFlags>;
19638
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019639 VULKAN_HPP_INLINE StencilFaceFlags operator|( StencilFaceFlagBits bit0, StencilFaceFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019640 {
19641 return StencilFaceFlags( bit0 ) | bit1;
19642 }
19643
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019644 VULKAN_HPP_INLINE StencilFaceFlags operator~( StencilFaceFlagBits bits )
19645 {
19646 return ~( StencilFaceFlags( bits ) );
19647 }
19648
19649 template <> struct FlagTraits<StencilFaceFlagBits>
19650 {
19651 enum
19652 {
19653 allFlags = VkFlags(StencilFaceFlagBits::eFront) | VkFlags(StencilFaceFlagBits::eBack) | VkFlags(StencilFaceFlagBits::eVkStencilFrontAndBack)
19654 };
19655 };
19656
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019657 enum class DescriptorPoolCreateFlagBits
19658 {
19659 eFreeDescriptorSet = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT
19660 };
19661
19662 using DescriptorPoolCreateFlags = Flags<DescriptorPoolCreateFlagBits, VkDescriptorPoolCreateFlags>;
19663
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019664 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator|( DescriptorPoolCreateFlagBits bit0, DescriptorPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019665 {
19666 return DescriptorPoolCreateFlags( bit0 ) | bit1;
19667 }
19668
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019669 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator~( DescriptorPoolCreateFlagBits bits )
19670 {
19671 return ~( DescriptorPoolCreateFlags( bits ) );
19672 }
19673
19674 template <> struct FlagTraits<DescriptorPoolCreateFlagBits>
19675 {
19676 enum
19677 {
19678 allFlags = VkFlags(DescriptorPoolCreateFlagBits::eFreeDescriptorSet)
19679 };
19680 };
19681
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019682 struct DescriptorPoolCreateInfo
19683 {
19684 DescriptorPoolCreateInfo( DescriptorPoolCreateFlags flags_ = DescriptorPoolCreateFlags(), uint32_t maxSets_ = 0, uint32_t poolSizeCount_ = 0, const DescriptorPoolSize* pPoolSizes_ = nullptr )
19685 : sType( StructureType::eDescriptorPoolCreateInfo )
19686 , pNext( nullptr )
19687 , flags( flags_ )
19688 , maxSets( maxSets_ )
19689 , poolSizeCount( poolSizeCount_ )
19690 , pPoolSizes( pPoolSizes_ )
19691 {
19692 }
19693
19694 DescriptorPoolCreateInfo( VkDescriptorPoolCreateInfo const & rhs )
19695 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019696 memcpy( this, &rhs, sizeof( DescriptorPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019697 }
19698
19699 DescriptorPoolCreateInfo& operator=( VkDescriptorPoolCreateInfo const & rhs )
19700 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019701 memcpy( this, &rhs, sizeof( DescriptorPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019702 return *this;
19703 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019704 DescriptorPoolCreateInfo& setPNext( const void* pNext_ )
19705 {
19706 pNext = pNext_;
19707 return *this;
19708 }
19709
19710 DescriptorPoolCreateInfo& setFlags( DescriptorPoolCreateFlags flags_ )
19711 {
19712 flags = flags_;
19713 return *this;
19714 }
19715
19716 DescriptorPoolCreateInfo& setMaxSets( uint32_t maxSets_ )
19717 {
19718 maxSets = maxSets_;
19719 return *this;
19720 }
19721
19722 DescriptorPoolCreateInfo& setPoolSizeCount( uint32_t poolSizeCount_ )
19723 {
19724 poolSizeCount = poolSizeCount_;
19725 return *this;
19726 }
19727
19728 DescriptorPoolCreateInfo& setPPoolSizes( const DescriptorPoolSize* pPoolSizes_ )
19729 {
19730 pPoolSizes = pPoolSizes_;
19731 return *this;
19732 }
19733
19734 operator const VkDescriptorPoolCreateInfo&() const
19735 {
19736 return *reinterpret_cast<const VkDescriptorPoolCreateInfo*>(this);
19737 }
19738
19739 bool operator==( DescriptorPoolCreateInfo const& rhs ) const
19740 {
19741 return ( sType == rhs.sType )
19742 && ( pNext == rhs.pNext )
19743 && ( flags == rhs.flags )
19744 && ( maxSets == rhs.maxSets )
19745 && ( poolSizeCount == rhs.poolSizeCount )
19746 && ( pPoolSizes == rhs.pPoolSizes );
19747 }
19748
19749 bool operator!=( DescriptorPoolCreateInfo const& rhs ) const
19750 {
19751 return !operator==( rhs );
19752 }
19753
19754 private:
19755 StructureType sType;
19756
19757 public:
19758 const void* pNext;
19759 DescriptorPoolCreateFlags flags;
19760 uint32_t maxSets;
19761 uint32_t poolSizeCount;
19762 const DescriptorPoolSize* pPoolSizes;
19763 };
19764 static_assert( sizeof( DescriptorPoolCreateInfo ) == sizeof( VkDescriptorPoolCreateInfo ), "struct and wrapper have different size!" );
19765
19766 enum class DependencyFlagBits
19767 {
Mark Young0f183a82017-02-28 09:58:04 -070019768 eByRegion = VK_DEPENDENCY_BY_REGION_BIT,
19769 eViewLocalKHX = VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX,
19770 eDeviceGroupKHX = VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019771 };
19772
19773 using DependencyFlags = Flags<DependencyFlagBits, VkDependencyFlags>;
19774
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019775 VULKAN_HPP_INLINE DependencyFlags operator|( DependencyFlagBits bit0, DependencyFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019776 {
19777 return DependencyFlags( bit0 ) | bit1;
19778 }
19779
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019780 VULKAN_HPP_INLINE DependencyFlags operator~( DependencyFlagBits bits )
19781 {
19782 return ~( DependencyFlags( bits ) );
19783 }
19784
19785 template <> struct FlagTraits<DependencyFlagBits>
19786 {
19787 enum
19788 {
Mark Young0f183a82017-02-28 09:58:04 -070019789 allFlags = VkFlags(DependencyFlagBits::eByRegion) | VkFlags(DependencyFlagBits::eViewLocalKHX) | VkFlags(DependencyFlagBits::eDeviceGroupKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019790 };
19791 };
19792
19793 struct SubpassDependency
19794 {
19795 SubpassDependency( uint32_t srcSubpass_ = 0, uint32_t dstSubpass_ = 0, PipelineStageFlags srcStageMask_ = PipelineStageFlags(), PipelineStageFlags dstStageMask_ = PipelineStageFlags(), AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), DependencyFlags dependencyFlags_ = DependencyFlags() )
19796 : srcSubpass( srcSubpass_ )
19797 , dstSubpass( dstSubpass_ )
19798 , srcStageMask( srcStageMask_ )
19799 , dstStageMask( dstStageMask_ )
19800 , srcAccessMask( srcAccessMask_ )
19801 , dstAccessMask( dstAccessMask_ )
19802 , dependencyFlags( dependencyFlags_ )
19803 {
19804 }
19805
19806 SubpassDependency( VkSubpassDependency const & rhs )
19807 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019808 memcpy( this, &rhs, sizeof( SubpassDependency ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019809 }
19810
19811 SubpassDependency& operator=( VkSubpassDependency const & rhs )
19812 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019813 memcpy( this, &rhs, sizeof( SubpassDependency ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019814 return *this;
19815 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019816 SubpassDependency& setSrcSubpass( uint32_t srcSubpass_ )
19817 {
19818 srcSubpass = srcSubpass_;
19819 return *this;
19820 }
19821
19822 SubpassDependency& setDstSubpass( uint32_t dstSubpass_ )
19823 {
19824 dstSubpass = dstSubpass_;
19825 return *this;
19826 }
19827
19828 SubpassDependency& setSrcStageMask( PipelineStageFlags srcStageMask_ )
19829 {
19830 srcStageMask = srcStageMask_;
19831 return *this;
19832 }
19833
19834 SubpassDependency& setDstStageMask( PipelineStageFlags dstStageMask_ )
19835 {
19836 dstStageMask = dstStageMask_;
19837 return *this;
19838 }
19839
19840 SubpassDependency& setSrcAccessMask( AccessFlags srcAccessMask_ )
19841 {
19842 srcAccessMask = srcAccessMask_;
19843 return *this;
19844 }
19845
19846 SubpassDependency& setDstAccessMask( AccessFlags dstAccessMask_ )
19847 {
19848 dstAccessMask = dstAccessMask_;
19849 return *this;
19850 }
19851
19852 SubpassDependency& setDependencyFlags( DependencyFlags dependencyFlags_ )
19853 {
19854 dependencyFlags = dependencyFlags_;
19855 return *this;
19856 }
19857
19858 operator const VkSubpassDependency&() const
19859 {
19860 return *reinterpret_cast<const VkSubpassDependency*>(this);
19861 }
19862
19863 bool operator==( SubpassDependency const& rhs ) const
19864 {
19865 return ( srcSubpass == rhs.srcSubpass )
19866 && ( dstSubpass == rhs.dstSubpass )
19867 && ( srcStageMask == rhs.srcStageMask )
19868 && ( dstStageMask == rhs.dstStageMask )
19869 && ( srcAccessMask == rhs.srcAccessMask )
19870 && ( dstAccessMask == rhs.dstAccessMask )
19871 && ( dependencyFlags == rhs.dependencyFlags );
19872 }
19873
19874 bool operator!=( SubpassDependency const& rhs ) const
19875 {
19876 return !operator==( rhs );
19877 }
19878
19879 uint32_t srcSubpass;
19880 uint32_t dstSubpass;
19881 PipelineStageFlags srcStageMask;
19882 PipelineStageFlags dstStageMask;
19883 AccessFlags srcAccessMask;
19884 AccessFlags dstAccessMask;
19885 DependencyFlags dependencyFlags;
19886 };
19887 static_assert( sizeof( SubpassDependency ) == sizeof( VkSubpassDependency ), "struct and wrapper have different size!" );
19888
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019889 enum class PresentModeKHR
19890 {
19891 eImmediate = VK_PRESENT_MODE_IMMEDIATE_KHR,
19892 eMailbox = VK_PRESENT_MODE_MAILBOX_KHR,
19893 eFifo = VK_PRESENT_MODE_FIFO_KHR,
Mark Lobodzinski54385432017-05-15 10:27:52 -060019894 eFifoRelaxed = VK_PRESENT_MODE_FIFO_RELAXED_KHR,
19895 eSharedDemandRefresh = VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR,
19896 eSharedContinuousRefresh = VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019897 };
19898
19899 enum class ColorSpaceKHR
19900 {
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060019901 eSrgbNonlinear = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
19902 eDisplayP3NonlinearEXT = VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT,
19903 eExtendedSrgbLinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT,
19904 eDciP3LinearEXT = VK_COLOR_SPACE_DCI_P3_LINEAR_EXT,
19905 eDciP3NonlinearEXT = VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT,
19906 eBt709LinearEXT = VK_COLOR_SPACE_BT709_LINEAR_EXT,
19907 eBt709NonlinearEXT = VK_COLOR_SPACE_BT709_NONLINEAR_EXT,
19908 eBt2020LinearEXT = VK_COLOR_SPACE_BT2020_LINEAR_EXT,
19909 eHdr10St2084EXT = VK_COLOR_SPACE_HDR10_ST2084_EXT,
19910 eDolbyvisionEXT = VK_COLOR_SPACE_DOLBYVISION_EXT,
19911 eHdr10HlgEXT = VK_COLOR_SPACE_HDR10_HLG_EXT,
19912 eAdobergbLinearEXT = VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT,
19913 eAdobergbNonlinearEXT = VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT,
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060019914 ePassThroughEXT = VK_COLOR_SPACE_PASS_THROUGH_EXT,
19915 eExtendedSrgbNonlinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019916 };
19917
19918 struct SurfaceFormatKHR
19919 {
19920 operator const VkSurfaceFormatKHR&() const
19921 {
19922 return *reinterpret_cast<const VkSurfaceFormatKHR*>(this);
19923 }
19924
19925 bool operator==( SurfaceFormatKHR const& rhs ) const
19926 {
19927 return ( format == rhs.format )
19928 && ( colorSpace == rhs.colorSpace );
19929 }
19930
19931 bool operator!=( SurfaceFormatKHR const& rhs ) const
19932 {
19933 return !operator==( rhs );
19934 }
19935
19936 Format format;
19937 ColorSpaceKHR colorSpace;
19938 };
19939 static_assert( sizeof( SurfaceFormatKHR ) == sizeof( VkSurfaceFormatKHR ), "struct and wrapper have different size!" );
19940
Mark Lobodzinski54385432017-05-15 10:27:52 -060019941 struct SurfaceFormat2KHR
19942 {
19943 operator const VkSurfaceFormat2KHR&() const
19944 {
19945 return *reinterpret_cast<const VkSurfaceFormat2KHR*>(this);
19946 }
19947
19948 bool operator==( SurfaceFormat2KHR const& rhs ) const
19949 {
19950 return ( sType == rhs.sType )
19951 && ( pNext == rhs.pNext )
19952 && ( surfaceFormat == rhs.surfaceFormat );
19953 }
19954
19955 bool operator!=( SurfaceFormat2KHR const& rhs ) const
19956 {
19957 return !operator==( rhs );
19958 }
19959
19960 private:
19961 StructureType sType;
19962
19963 public:
19964 void* pNext;
19965 SurfaceFormatKHR surfaceFormat;
19966 };
19967 static_assert( sizeof( SurfaceFormat2KHR ) == sizeof( VkSurfaceFormat2KHR ), "struct and wrapper have different size!" );
19968
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019969 enum class DisplayPlaneAlphaFlagBitsKHR
19970 {
19971 eOpaque = VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR,
19972 eGlobal = VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR,
19973 ePerPixel = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR,
19974 ePerPixelPremultiplied = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR
19975 };
19976
19977 using DisplayPlaneAlphaFlagsKHR = Flags<DisplayPlaneAlphaFlagBitsKHR, VkDisplayPlaneAlphaFlagsKHR>;
19978
19979 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator|( DisplayPlaneAlphaFlagBitsKHR bit0, DisplayPlaneAlphaFlagBitsKHR bit1 )
19980 {
19981 return DisplayPlaneAlphaFlagsKHR( bit0 ) | bit1;
19982 }
19983
19984 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator~( DisplayPlaneAlphaFlagBitsKHR bits )
19985 {
19986 return ~( DisplayPlaneAlphaFlagsKHR( bits ) );
19987 }
19988
19989 template <> struct FlagTraits<DisplayPlaneAlphaFlagBitsKHR>
19990 {
19991 enum
19992 {
19993 allFlags = VkFlags(DisplayPlaneAlphaFlagBitsKHR::eOpaque) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::eGlobal) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixel) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied)
19994 };
19995 };
19996
19997 struct DisplayPlaneCapabilitiesKHR
19998 {
19999 operator const VkDisplayPlaneCapabilitiesKHR&() const
20000 {
20001 return *reinterpret_cast<const VkDisplayPlaneCapabilitiesKHR*>(this);
20002 }
20003
20004 bool operator==( DisplayPlaneCapabilitiesKHR const& rhs ) const
20005 {
20006 return ( supportedAlpha == rhs.supportedAlpha )
20007 && ( minSrcPosition == rhs.minSrcPosition )
20008 && ( maxSrcPosition == rhs.maxSrcPosition )
20009 && ( minSrcExtent == rhs.minSrcExtent )
20010 && ( maxSrcExtent == rhs.maxSrcExtent )
20011 && ( minDstPosition == rhs.minDstPosition )
20012 && ( maxDstPosition == rhs.maxDstPosition )
20013 && ( minDstExtent == rhs.minDstExtent )
20014 && ( maxDstExtent == rhs.maxDstExtent );
20015 }
20016
20017 bool operator!=( DisplayPlaneCapabilitiesKHR const& rhs ) const
20018 {
20019 return !operator==( rhs );
20020 }
20021
20022 DisplayPlaneAlphaFlagsKHR supportedAlpha;
20023 Offset2D minSrcPosition;
20024 Offset2D maxSrcPosition;
20025 Extent2D minSrcExtent;
20026 Extent2D maxSrcExtent;
20027 Offset2D minDstPosition;
20028 Offset2D maxDstPosition;
20029 Extent2D minDstExtent;
20030 Extent2D maxDstExtent;
20031 };
20032 static_assert( sizeof( DisplayPlaneCapabilitiesKHR ) == sizeof( VkDisplayPlaneCapabilitiesKHR ), "struct and wrapper have different size!" );
20033
20034 enum class CompositeAlphaFlagBitsKHR
20035 {
20036 eOpaque = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,
20037 ePreMultiplied = VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR,
20038 ePostMultiplied = VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR,
20039 eInherit = VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR
20040 };
20041
20042 using CompositeAlphaFlagsKHR = Flags<CompositeAlphaFlagBitsKHR, VkCompositeAlphaFlagsKHR>;
20043
20044 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator|( CompositeAlphaFlagBitsKHR bit0, CompositeAlphaFlagBitsKHR bit1 )
20045 {
20046 return CompositeAlphaFlagsKHR( bit0 ) | bit1;
20047 }
20048
20049 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator~( CompositeAlphaFlagBitsKHR bits )
20050 {
20051 return ~( CompositeAlphaFlagsKHR( bits ) );
20052 }
20053
20054 template <> struct FlagTraits<CompositeAlphaFlagBitsKHR>
20055 {
20056 enum
20057 {
20058 allFlags = VkFlags(CompositeAlphaFlagBitsKHR::eOpaque) | VkFlags(CompositeAlphaFlagBitsKHR::ePreMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::ePostMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::eInherit)
20059 };
20060 };
20061
20062 enum class SurfaceTransformFlagBitsKHR
20063 {
20064 eIdentity = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,
20065 eRotate90 = VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,
20066 eRotate180 = VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,
20067 eRotate270 = VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,
20068 eHorizontalMirror = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR,
20069 eHorizontalMirrorRotate90 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR,
20070 eHorizontalMirrorRotate180 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR,
20071 eHorizontalMirrorRotate270 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR,
20072 eInherit = VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR
20073 };
20074
20075 using SurfaceTransformFlagsKHR = Flags<SurfaceTransformFlagBitsKHR, VkSurfaceTransformFlagsKHR>;
20076
20077 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator|( SurfaceTransformFlagBitsKHR bit0, SurfaceTransformFlagBitsKHR bit1 )
20078 {
20079 return SurfaceTransformFlagsKHR( bit0 ) | bit1;
20080 }
20081
20082 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator~( SurfaceTransformFlagBitsKHR bits )
20083 {
20084 return ~( SurfaceTransformFlagsKHR( bits ) );
20085 }
20086
20087 template <> struct FlagTraits<SurfaceTransformFlagBitsKHR>
20088 {
20089 enum
20090 {
20091 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)
20092 };
20093 };
20094
20095 struct DisplayPropertiesKHR
20096 {
20097 operator const VkDisplayPropertiesKHR&() const
20098 {
20099 return *reinterpret_cast<const VkDisplayPropertiesKHR*>(this);
20100 }
20101
20102 bool operator==( DisplayPropertiesKHR const& rhs ) const
20103 {
20104 return ( display == rhs.display )
20105 && ( displayName == rhs.displayName )
20106 && ( physicalDimensions == rhs.physicalDimensions )
20107 && ( physicalResolution == rhs.physicalResolution )
20108 && ( supportedTransforms == rhs.supportedTransforms )
20109 && ( planeReorderPossible == rhs.planeReorderPossible )
20110 && ( persistentContent == rhs.persistentContent );
20111 }
20112
20113 bool operator!=( DisplayPropertiesKHR const& rhs ) const
20114 {
20115 return !operator==( rhs );
20116 }
20117
20118 DisplayKHR display;
20119 const char* displayName;
20120 Extent2D physicalDimensions;
20121 Extent2D physicalResolution;
20122 SurfaceTransformFlagsKHR supportedTransforms;
20123 Bool32 planeReorderPossible;
20124 Bool32 persistentContent;
20125 };
20126 static_assert( sizeof( DisplayPropertiesKHR ) == sizeof( VkDisplayPropertiesKHR ), "struct and wrapper have different size!" );
20127
20128 struct DisplaySurfaceCreateInfoKHR
20129 {
20130 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() )
20131 : sType( StructureType::eDisplaySurfaceCreateInfoKHR )
20132 , pNext( nullptr )
20133 , flags( flags_ )
20134 , displayMode( displayMode_ )
20135 , planeIndex( planeIndex_ )
20136 , planeStackIndex( planeStackIndex_ )
20137 , transform( transform_ )
20138 , globalAlpha( globalAlpha_ )
20139 , alphaMode( alphaMode_ )
20140 , imageExtent( imageExtent_ )
20141 {
20142 }
20143
20144 DisplaySurfaceCreateInfoKHR( VkDisplaySurfaceCreateInfoKHR const & rhs )
20145 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020146 memcpy( this, &rhs, sizeof( DisplaySurfaceCreateInfoKHR ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020147 }
20148
20149 DisplaySurfaceCreateInfoKHR& operator=( VkDisplaySurfaceCreateInfoKHR const & rhs )
20150 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020151 memcpy( this, &rhs, sizeof( DisplaySurfaceCreateInfoKHR ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020152 return *this;
20153 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020154 DisplaySurfaceCreateInfoKHR& setPNext( const void* pNext_ )
20155 {
20156 pNext = pNext_;
20157 return *this;
20158 }
20159
20160 DisplaySurfaceCreateInfoKHR& setFlags( DisplaySurfaceCreateFlagsKHR flags_ )
20161 {
20162 flags = flags_;
20163 return *this;
20164 }
20165
20166 DisplaySurfaceCreateInfoKHR& setDisplayMode( DisplayModeKHR displayMode_ )
20167 {
20168 displayMode = displayMode_;
20169 return *this;
20170 }
20171
20172 DisplaySurfaceCreateInfoKHR& setPlaneIndex( uint32_t planeIndex_ )
20173 {
20174 planeIndex = planeIndex_;
20175 return *this;
20176 }
20177
20178 DisplaySurfaceCreateInfoKHR& setPlaneStackIndex( uint32_t planeStackIndex_ )
20179 {
20180 planeStackIndex = planeStackIndex_;
20181 return *this;
20182 }
20183
20184 DisplaySurfaceCreateInfoKHR& setTransform( SurfaceTransformFlagBitsKHR transform_ )
20185 {
20186 transform = transform_;
20187 return *this;
20188 }
20189
20190 DisplaySurfaceCreateInfoKHR& setGlobalAlpha( float globalAlpha_ )
20191 {
20192 globalAlpha = globalAlpha_;
20193 return *this;
20194 }
20195
20196 DisplaySurfaceCreateInfoKHR& setAlphaMode( DisplayPlaneAlphaFlagBitsKHR alphaMode_ )
20197 {
20198 alphaMode = alphaMode_;
20199 return *this;
20200 }
20201
20202 DisplaySurfaceCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
20203 {
20204 imageExtent = imageExtent_;
20205 return *this;
20206 }
20207
20208 operator const VkDisplaySurfaceCreateInfoKHR&() const
20209 {
20210 return *reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>(this);
20211 }
20212
20213 bool operator==( DisplaySurfaceCreateInfoKHR const& rhs ) const
20214 {
20215 return ( sType == rhs.sType )
20216 && ( pNext == rhs.pNext )
20217 && ( flags == rhs.flags )
20218 && ( displayMode == rhs.displayMode )
20219 && ( planeIndex == rhs.planeIndex )
20220 && ( planeStackIndex == rhs.planeStackIndex )
20221 && ( transform == rhs.transform )
20222 && ( globalAlpha == rhs.globalAlpha )
20223 && ( alphaMode == rhs.alphaMode )
20224 && ( imageExtent == rhs.imageExtent );
20225 }
20226
20227 bool operator!=( DisplaySurfaceCreateInfoKHR const& rhs ) const
20228 {
20229 return !operator==( rhs );
20230 }
20231
20232 private:
20233 StructureType sType;
20234
20235 public:
20236 const void* pNext;
20237 DisplaySurfaceCreateFlagsKHR flags;
20238 DisplayModeKHR displayMode;
20239 uint32_t planeIndex;
20240 uint32_t planeStackIndex;
20241 SurfaceTransformFlagBitsKHR transform;
20242 float globalAlpha;
20243 DisplayPlaneAlphaFlagBitsKHR alphaMode;
20244 Extent2D imageExtent;
20245 };
20246 static_assert( sizeof( DisplaySurfaceCreateInfoKHR ) == sizeof( VkDisplaySurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
20247
20248 struct SurfaceCapabilitiesKHR
20249 {
20250 operator const VkSurfaceCapabilitiesKHR&() const
20251 {
20252 return *reinterpret_cast<const VkSurfaceCapabilitiesKHR*>(this);
20253 }
20254
20255 bool operator==( SurfaceCapabilitiesKHR const& rhs ) const
20256 {
20257 return ( minImageCount == rhs.minImageCount )
20258 && ( maxImageCount == rhs.maxImageCount )
20259 && ( currentExtent == rhs.currentExtent )
20260 && ( minImageExtent == rhs.minImageExtent )
20261 && ( maxImageExtent == rhs.maxImageExtent )
20262 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
20263 && ( supportedTransforms == rhs.supportedTransforms )
20264 && ( currentTransform == rhs.currentTransform )
20265 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
20266 && ( supportedUsageFlags == rhs.supportedUsageFlags );
20267 }
20268
20269 bool operator!=( SurfaceCapabilitiesKHR const& rhs ) const
20270 {
20271 return !operator==( rhs );
20272 }
20273
20274 uint32_t minImageCount;
20275 uint32_t maxImageCount;
20276 Extent2D currentExtent;
20277 Extent2D minImageExtent;
20278 Extent2D maxImageExtent;
20279 uint32_t maxImageArrayLayers;
20280 SurfaceTransformFlagsKHR supportedTransforms;
20281 SurfaceTransformFlagBitsKHR currentTransform;
20282 CompositeAlphaFlagsKHR supportedCompositeAlpha;
20283 ImageUsageFlags supportedUsageFlags;
20284 };
20285 static_assert( sizeof( SurfaceCapabilitiesKHR ) == sizeof( VkSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" );
20286
Mark Lobodzinski54385432017-05-15 10:27:52 -060020287 struct SurfaceCapabilities2KHR
20288 {
20289 operator const VkSurfaceCapabilities2KHR&() const
20290 {
20291 return *reinterpret_cast<const VkSurfaceCapabilities2KHR*>(this);
20292 }
20293
20294 bool operator==( SurfaceCapabilities2KHR const& rhs ) const
20295 {
20296 return ( sType == rhs.sType )
20297 && ( pNext == rhs.pNext )
20298 && ( surfaceCapabilities == rhs.surfaceCapabilities );
20299 }
20300
20301 bool operator!=( SurfaceCapabilities2KHR const& rhs ) const
20302 {
20303 return !operator==( rhs );
20304 }
20305
20306 private:
20307 StructureType sType;
20308
20309 public:
20310 void* pNext;
20311 SurfaceCapabilitiesKHR surfaceCapabilities;
20312 };
20313 static_assert( sizeof( SurfaceCapabilities2KHR ) == sizeof( VkSurfaceCapabilities2KHR ), "struct and wrapper have different size!" );
20314
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020315 enum class DebugReportFlagBitsEXT
20316 {
20317 eInformation = VK_DEBUG_REPORT_INFORMATION_BIT_EXT,
20318 eWarning = VK_DEBUG_REPORT_WARNING_BIT_EXT,
20319 ePerformanceWarning = VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT,
20320 eError = VK_DEBUG_REPORT_ERROR_BIT_EXT,
20321 eDebug = VK_DEBUG_REPORT_DEBUG_BIT_EXT
20322 };
20323
20324 using DebugReportFlagsEXT = Flags<DebugReportFlagBitsEXT, VkDebugReportFlagsEXT>;
20325
20326 VULKAN_HPP_INLINE DebugReportFlagsEXT operator|( DebugReportFlagBitsEXT bit0, DebugReportFlagBitsEXT bit1 )
20327 {
20328 return DebugReportFlagsEXT( bit0 ) | bit1;
20329 }
20330
20331 VULKAN_HPP_INLINE DebugReportFlagsEXT operator~( DebugReportFlagBitsEXT bits )
20332 {
20333 return ~( DebugReportFlagsEXT( bits ) );
20334 }
20335
20336 template <> struct FlagTraits<DebugReportFlagBitsEXT>
20337 {
20338 enum
20339 {
20340 allFlags = VkFlags(DebugReportFlagBitsEXT::eInformation) | VkFlags(DebugReportFlagBitsEXT::eWarning) | VkFlags(DebugReportFlagBitsEXT::ePerformanceWarning) | VkFlags(DebugReportFlagBitsEXT::eError) | VkFlags(DebugReportFlagBitsEXT::eDebug)
20341 };
20342 };
20343
20344 struct DebugReportCallbackCreateInfoEXT
20345 {
20346 DebugReportCallbackCreateInfoEXT( DebugReportFlagsEXT flags_ = DebugReportFlagsEXT(), PFN_vkDebugReportCallbackEXT pfnCallback_ = nullptr, void* pUserData_ = nullptr )
20347 : sType( StructureType::eDebugReportCallbackCreateInfoEXT )
20348 , pNext( nullptr )
20349 , flags( flags_ )
20350 , pfnCallback( pfnCallback_ )
20351 , pUserData( pUserData_ )
20352 {
20353 }
20354
20355 DebugReportCallbackCreateInfoEXT( VkDebugReportCallbackCreateInfoEXT const & rhs )
20356 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020357 memcpy( this, &rhs, sizeof( DebugReportCallbackCreateInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020358 }
20359
20360 DebugReportCallbackCreateInfoEXT& operator=( VkDebugReportCallbackCreateInfoEXT const & rhs )
20361 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020362 memcpy( this, &rhs, sizeof( DebugReportCallbackCreateInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020363 return *this;
20364 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020365 DebugReportCallbackCreateInfoEXT& setPNext( const void* pNext_ )
20366 {
20367 pNext = pNext_;
20368 return *this;
20369 }
20370
20371 DebugReportCallbackCreateInfoEXT& setFlags( DebugReportFlagsEXT flags_ )
20372 {
20373 flags = flags_;
20374 return *this;
20375 }
20376
20377 DebugReportCallbackCreateInfoEXT& setPfnCallback( PFN_vkDebugReportCallbackEXT pfnCallback_ )
20378 {
20379 pfnCallback = pfnCallback_;
20380 return *this;
20381 }
20382
20383 DebugReportCallbackCreateInfoEXT& setPUserData( void* pUserData_ )
20384 {
20385 pUserData = pUserData_;
20386 return *this;
20387 }
20388
20389 operator const VkDebugReportCallbackCreateInfoEXT&() const
20390 {
20391 return *reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>(this);
20392 }
20393
20394 bool operator==( DebugReportCallbackCreateInfoEXT const& rhs ) const
20395 {
20396 return ( sType == rhs.sType )
20397 && ( pNext == rhs.pNext )
20398 && ( flags == rhs.flags )
20399 && ( pfnCallback == rhs.pfnCallback )
20400 && ( pUserData == rhs.pUserData );
20401 }
20402
20403 bool operator!=( DebugReportCallbackCreateInfoEXT const& rhs ) const
20404 {
20405 return !operator==( rhs );
20406 }
20407
20408 private:
20409 StructureType sType;
20410
20411 public:
20412 const void* pNext;
20413 DebugReportFlagsEXT flags;
20414 PFN_vkDebugReportCallbackEXT pfnCallback;
20415 void* pUserData;
20416 };
20417 static_assert( sizeof( DebugReportCallbackCreateInfoEXT ) == sizeof( VkDebugReportCallbackCreateInfoEXT ), "struct and wrapper have different size!" );
20418
20419 enum class DebugReportObjectTypeEXT
20420 {
20421 eUnknown = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT,
20422 eInstance = VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT,
20423 ePhysicalDevice = VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT,
20424 eDevice = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
20425 eQueue = VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT,
20426 eSemaphore = VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT,
20427 eCommandBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT,
20428 eFence = VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT,
20429 eDeviceMemory = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT,
20430 eBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT,
20431 eImage = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT,
20432 eEvent = VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT,
20433 eQueryPool = VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT,
20434 eBufferView = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT,
20435 eImageView = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT,
20436 eShaderModule = VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT,
20437 ePipelineCache = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT,
20438 ePipelineLayout = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT,
20439 eRenderPass = VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT,
20440 ePipeline = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT,
20441 eDescriptorSetLayout = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT,
20442 eSampler = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT,
20443 eDescriptorPool = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT,
20444 eDescriptorSet = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT,
20445 eFramebuffer = VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT,
20446 eCommandPool = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT,
20447 eSurfaceKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT,
20448 eSwapchainKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT,
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020449 eDebugReportCallbackExt = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020450 eDisplayKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT,
20451 eDisplayModeKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT,
20452 eObjectTableNvx = VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT,
Mark Lobodzinski3289d762017-04-03 08:22:04 -060020453 eIndirectCommandsLayoutNvx = VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060020454 eValidationCache = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT,
Lenny Komowb79f04a2017-09-18 17:07:00 -060020455 eDescriptorUpdateTemplateKHR = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT,
20456 eSamplerYcbcrConversionKHR = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020457 };
20458
20459 struct DebugMarkerObjectNameInfoEXT
20460 {
20461 DebugMarkerObjectNameInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = 0, const char* pObjectName_ = nullptr )
20462 : sType( StructureType::eDebugMarkerObjectNameInfoEXT )
20463 , pNext( nullptr )
20464 , objectType( objectType_ )
20465 , object( object_ )
20466 , pObjectName( pObjectName_ )
20467 {
20468 }
20469
20470 DebugMarkerObjectNameInfoEXT( VkDebugMarkerObjectNameInfoEXT const & rhs )
20471 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020472 memcpy( this, &rhs, sizeof( DebugMarkerObjectNameInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020473 }
20474
20475 DebugMarkerObjectNameInfoEXT& operator=( VkDebugMarkerObjectNameInfoEXT const & rhs )
20476 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020477 memcpy( this, &rhs, sizeof( DebugMarkerObjectNameInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020478 return *this;
20479 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020480 DebugMarkerObjectNameInfoEXT& setPNext( const void* pNext_ )
20481 {
20482 pNext = pNext_;
20483 return *this;
20484 }
20485
20486 DebugMarkerObjectNameInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
20487 {
20488 objectType = objectType_;
20489 return *this;
20490 }
20491
20492 DebugMarkerObjectNameInfoEXT& setObject( uint64_t object_ )
20493 {
20494 object = object_;
20495 return *this;
20496 }
20497
20498 DebugMarkerObjectNameInfoEXT& setPObjectName( const char* pObjectName_ )
20499 {
20500 pObjectName = pObjectName_;
20501 return *this;
20502 }
20503
20504 operator const VkDebugMarkerObjectNameInfoEXT&() const
20505 {
20506 return *reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>(this);
20507 }
20508
20509 bool operator==( DebugMarkerObjectNameInfoEXT const& rhs ) const
20510 {
20511 return ( sType == rhs.sType )
20512 && ( pNext == rhs.pNext )
20513 && ( objectType == rhs.objectType )
20514 && ( object == rhs.object )
20515 && ( pObjectName == rhs.pObjectName );
20516 }
20517
20518 bool operator!=( DebugMarkerObjectNameInfoEXT const& rhs ) const
20519 {
20520 return !operator==( rhs );
20521 }
20522
20523 private:
20524 StructureType sType;
20525
20526 public:
20527 const void* pNext;
20528 DebugReportObjectTypeEXT objectType;
20529 uint64_t object;
20530 const char* pObjectName;
20531 };
20532 static_assert( sizeof( DebugMarkerObjectNameInfoEXT ) == sizeof( VkDebugMarkerObjectNameInfoEXT ), "struct and wrapper have different size!" );
20533
20534 struct DebugMarkerObjectTagInfoEXT
20535 {
20536 DebugMarkerObjectTagInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = 0, uint64_t tagName_ = 0, size_t tagSize_ = 0, const void* pTag_ = nullptr )
20537 : sType( StructureType::eDebugMarkerObjectTagInfoEXT )
20538 , pNext( nullptr )
20539 , objectType( objectType_ )
20540 , object( object_ )
20541 , tagName( tagName_ )
20542 , tagSize( tagSize_ )
20543 , pTag( pTag_ )
20544 {
20545 }
20546
20547 DebugMarkerObjectTagInfoEXT( VkDebugMarkerObjectTagInfoEXT const & rhs )
20548 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020549 memcpy( this, &rhs, sizeof( DebugMarkerObjectTagInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020550 }
20551
20552 DebugMarkerObjectTagInfoEXT& operator=( VkDebugMarkerObjectTagInfoEXT const & rhs )
20553 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020554 memcpy( this, &rhs, sizeof( DebugMarkerObjectTagInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020555 return *this;
20556 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020557 DebugMarkerObjectTagInfoEXT& setPNext( const void* pNext_ )
20558 {
20559 pNext = pNext_;
20560 return *this;
20561 }
20562
20563 DebugMarkerObjectTagInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
20564 {
20565 objectType = objectType_;
20566 return *this;
20567 }
20568
20569 DebugMarkerObjectTagInfoEXT& setObject( uint64_t object_ )
20570 {
20571 object = object_;
20572 return *this;
20573 }
20574
20575 DebugMarkerObjectTagInfoEXT& setTagName( uint64_t tagName_ )
20576 {
20577 tagName = tagName_;
20578 return *this;
20579 }
20580
20581 DebugMarkerObjectTagInfoEXT& setTagSize( size_t tagSize_ )
20582 {
20583 tagSize = tagSize_;
20584 return *this;
20585 }
20586
20587 DebugMarkerObjectTagInfoEXT& setPTag( const void* pTag_ )
20588 {
20589 pTag = pTag_;
20590 return *this;
20591 }
20592
20593 operator const VkDebugMarkerObjectTagInfoEXT&() const
20594 {
20595 return *reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>(this);
20596 }
20597
20598 bool operator==( DebugMarkerObjectTagInfoEXT const& rhs ) const
20599 {
20600 return ( sType == rhs.sType )
20601 && ( pNext == rhs.pNext )
20602 && ( objectType == rhs.objectType )
20603 && ( object == rhs.object )
20604 && ( tagName == rhs.tagName )
20605 && ( tagSize == rhs.tagSize )
20606 && ( pTag == rhs.pTag );
20607 }
20608
20609 bool operator!=( DebugMarkerObjectTagInfoEXT const& rhs ) const
20610 {
20611 return !operator==( rhs );
20612 }
20613
20614 private:
20615 StructureType sType;
20616
20617 public:
20618 const void* pNext;
20619 DebugReportObjectTypeEXT objectType;
20620 uint64_t object;
20621 uint64_t tagName;
20622 size_t tagSize;
20623 const void* pTag;
20624 };
20625 static_assert( sizeof( DebugMarkerObjectTagInfoEXT ) == sizeof( VkDebugMarkerObjectTagInfoEXT ), "struct and wrapper have different size!" );
20626
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020627 enum class RasterizationOrderAMD
20628 {
20629 eStrict = VK_RASTERIZATION_ORDER_STRICT_AMD,
20630 eRelaxed = VK_RASTERIZATION_ORDER_RELAXED_AMD
20631 };
20632
20633 struct PipelineRasterizationStateRasterizationOrderAMD
20634 {
20635 PipelineRasterizationStateRasterizationOrderAMD( RasterizationOrderAMD rasterizationOrder_ = RasterizationOrderAMD::eStrict )
20636 : sType( StructureType::ePipelineRasterizationStateRasterizationOrderAMD )
20637 , pNext( nullptr )
20638 , rasterizationOrder( rasterizationOrder_ )
20639 {
20640 }
20641
20642 PipelineRasterizationStateRasterizationOrderAMD( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
20643 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020644 memcpy( this, &rhs, sizeof( PipelineRasterizationStateRasterizationOrderAMD ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020645 }
20646
20647 PipelineRasterizationStateRasterizationOrderAMD& operator=( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
20648 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020649 memcpy( this, &rhs, sizeof( PipelineRasterizationStateRasterizationOrderAMD ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020650 return *this;
20651 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020652 PipelineRasterizationStateRasterizationOrderAMD& setPNext( const void* pNext_ )
20653 {
20654 pNext = pNext_;
20655 return *this;
20656 }
20657
20658 PipelineRasterizationStateRasterizationOrderAMD& setRasterizationOrder( RasterizationOrderAMD rasterizationOrder_ )
20659 {
20660 rasterizationOrder = rasterizationOrder_;
20661 return *this;
20662 }
20663
20664 operator const VkPipelineRasterizationStateRasterizationOrderAMD&() const
20665 {
20666 return *reinterpret_cast<const VkPipelineRasterizationStateRasterizationOrderAMD*>(this);
20667 }
20668
20669 bool operator==( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
20670 {
20671 return ( sType == rhs.sType )
20672 && ( pNext == rhs.pNext )
20673 && ( rasterizationOrder == rhs.rasterizationOrder );
20674 }
20675
20676 bool operator!=( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
20677 {
20678 return !operator==( rhs );
20679 }
20680
20681 private:
20682 StructureType sType;
20683
20684 public:
20685 const void* pNext;
20686 RasterizationOrderAMD rasterizationOrder;
20687 };
20688 static_assert( sizeof( PipelineRasterizationStateRasterizationOrderAMD ) == sizeof( VkPipelineRasterizationStateRasterizationOrderAMD ), "struct and wrapper have different size!" );
20689
20690 enum class ExternalMemoryHandleTypeFlagBitsNV
20691 {
20692 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV,
20693 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV,
20694 eD3D11Image = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV,
20695 eD3D11ImageKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV
20696 };
20697
20698 using ExternalMemoryHandleTypeFlagsNV = Flags<ExternalMemoryHandleTypeFlagBitsNV, VkExternalMemoryHandleTypeFlagsNV>;
20699
20700 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator|( ExternalMemoryHandleTypeFlagBitsNV bit0, ExternalMemoryHandleTypeFlagBitsNV bit1 )
20701 {
20702 return ExternalMemoryHandleTypeFlagsNV( bit0 ) | bit1;
20703 }
20704
20705 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator~( ExternalMemoryHandleTypeFlagBitsNV bits )
20706 {
20707 return ~( ExternalMemoryHandleTypeFlagsNV( bits ) );
20708 }
20709
20710 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsNV>
20711 {
20712 enum
20713 {
20714 allFlags = VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt)
20715 };
20716 };
20717
20718 struct ExternalMemoryImageCreateInfoNV
20719 {
20720 ExternalMemoryImageCreateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
20721 : sType( StructureType::eExternalMemoryImageCreateInfoNV )
20722 , pNext( nullptr )
20723 , handleTypes( handleTypes_ )
20724 {
20725 }
20726
20727 ExternalMemoryImageCreateInfoNV( VkExternalMemoryImageCreateInfoNV const & rhs )
20728 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020729 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020730 }
20731
20732 ExternalMemoryImageCreateInfoNV& operator=( VkExternalMemoryImageCreateInfoNV const & rhs )
20733 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020734 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020735 return *this;
20736 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020737 ExternalMemoryImageCreateInfoNV& setPNext( const void* pNext_ )
20738 {
20739 pNext = pNext_;
20740 return *this;
20741 }
20742
20743 ExternalMemoryImageCreateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
20744 {
20745 handleTypes = handleTypes_;
20746 return *this;
20747 }
20748
20749 operator const VkExternalMemoryImageCreateInfoNV&() const
20750 {
20751 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoNV*>(this);
20752 }
20753
20754 bool operator==( ExternalMemoryImageCreateInfoNV const& rhs ) const
20755 {
20756 return ( sType == rhs.sType )
20757 && ( pNext == rhs.pNext )
20758 && ( handleTypes == rhs.handleTypes );
20759 }
20760
20761 bool operator!=( ExternalMemoryImageCreateInfoNV const& rhs ) const
20762 {
20763 return !operator==( rhs );
20764 }
20765
20766 private:
20767 StructureType sType;
20768
20769 public:
20770 const void* pNext;
20771 ExternalMemoryHandleTypeFlagsNV handleTypes;
20772 };
20773 static_assert( sizeof( ExternalMemoryImageCreateInfoNV ) == sizeof( VkExternalMemoryImageCreateInfoNV ), "struct and wrapper have different size!" );
20774
20775 struct ExportMemoryAllocateInfoNV
20776 {
20777 ExportMemoryAllocateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
20778 : sType( StructureType::eExportMemoryAllocateInfoNV )
20779 , pNext( nullptr )
20780 , handleTypes( handleTypes_ )
20781 {
20782 }
20783
20784 ExportMemoryAllocateInfoNV( VkExportMemoryAllocateInfoNV const & rhs )
20785 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020786 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020787 }
20788
20789 ExportMemoryAllocateInfoNV& operator=( VkExportMemoryAllocateInfoNV const & rhs )
20790 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020791 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020792 return *this;
20793 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020794 ExportMemoryAllocateInfoNV& setPNext( const void* pNext_ )
20795 {
20796 pNext = pNext_;
20797 return *this;
20798 }
20799
20800 ExportMemoryAllocateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
20801 {
20802 handleTypes = handleTypes_;
20803 return *this;
20804 }
20805
20806 operator const VkExportMemoryAllocateInfoNV&() const
20807 {
20808 return *reinterpret_cast<const VkExportMemoryAllocateInfoNV*>(this);
20809 }
20810
20811 bool operator==( ExportMemoryAllocateInfoNV const& rhs ) const
20812 {
20813 return ( sType == rhs.sType )
20814 && ( pNext == rhs.pNext )
20815 && ( handleTypes == rhs.handleTypes );
20816 }
20817
20818 bool operator!=( ExportMemoryAllocateInfoNV const& rhs ) const
20819 {
20820 return !operator==( rhs );
20821 }
20822
20823 private:
20824 StructureType sType;
20825
20826 public:
20827 const void* pNext;
20828 ExternalMemoryHandleTypeFlagsNV handleTypes;
20829 };
20830 static_assert( sizeof( ExportMemoryAllocateInfoNV ) == sizeof( VkExportMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
20831
20832#ifdef VK_USE_PLATFORM_WIN32_KHR
20833 struct ImportMemoryWin32HandleInfoNV
20834 {
20835 ImportMemoryWin32HandleInfoNV( ExternalMemoryHandleTypeFlagsNV handleType_ = ExternalMemoryHandleTypeFlagsNV(), HANDLE handle_ = 0 )
20836 : sType( StructureType::eImportMemoryWin32HandleInfoNV )
20837 , pNext( nullptr )
20838 , handleType( handleType_ )
20839 , handle( handle_ )
20840 {
20841 }
20842
20843 ImportMemoryWin32HandleInfoNV( VkImportMemoryWin32HandleInfoNV const & rhs )
20844 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020845 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020846 }
20847
20848 ImportMemoryWin32HandleInfoNV& operator=( VkImportMemoryWin32HandleInfoNV const & rhs )
20849 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020850 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020851 return *this;
20852 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020853 ImportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
20854 {
20855 pNext = pNext_;
20856 return *this;
20857 }
20858
20859 ImportMemoryWin32HandleInfoNV& setHandleType( ExternalMemoryHandleTypeFlagsNV handleType_ )
20860 {
20861 handleType = handleType_;
20862 return *this;
20863 }
20864
20865 ImportMemoryWin32HandleInfoNV& setHandle( HANDLE handle_ )
20866 {
20867 handle = handle_;
20868 return *this;
20869 }
20870
20871 operator const VkImportMemoryWin32HandleInfoNV&() const
20872 {
20873 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoNV*>(this);
20874 }
20875
20876 bool operator==( ImportMemoryWin32HandleInfoNV const& rhs ) const
20877 {
20878 return ( sType == rhs.sType )
20879 && ( pNext == rhs.pNext )
20880 && ( handleType == rhs.handleType )
20881 && ( handle == rhs.handle );
20882 }
20883
20884 bool operator!=( ImportMemoryWin32HandleInfoNV const& rhs ) const
20885 {
20886 return !operator==( rhs );
20887 }
20888
20889 private:
20890 StructureType sType;
20891
20892 public:
20893 const void* pNext;
20894 ExternalMemoryHandleTypeFlagsNV handleType;
20895 HANDLE handle;
20896 };
20897 static_assert( sizeof( ImportMemoryWin32HandleInfoNV ) == sizeof( VkImportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
20898#endif /*VK_USE_PLATFORM_WIN32_KHR*/
20899
20900 enum class ExternalMemoryFeatureFlagBitsNV
20901 {
20902 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV,
20903 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV,
20904 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV
20905 };
20906
20907 using ExternalMemoryFeatureFlagsNV = Flags<ExternalMemoryFeatureFlagBitsNV, VkExternalMemoryFeatureFlagsNV>;
20908
20909 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator|( ExternalMemoryFeatureFlagBitsNV bit0, ExternalMemoryFeatureFlagBitsNV bit1 )
20910 {
20911 return ExternalMemoryFeatureFlagsNV( bit0 ) | bit1;
20912 }
20913
20914 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator~( ExternalMemoryFeatureFlagBitsNV bits )
20915 {
20916 return ~( ExternalMemoryFeatureFlagsNV( bits ) );
20917 }
20918
20919 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsNV>
20920 {
20921 enum
20922 {
20923 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eImportable)
20924 };
20925 };
20926
20927 struct ExternalImageFormatPropertiesNV
20928 {
20929 operator const VkExternalImageFormatPropertiesNV&() const
20930 {
20931 return *reinterpret_cast<const VkExternalImageFormatPropertiesNV*>(this);
20932 }
20933
20934 bool operator==( ExternalImageFormatPropertiesNV const& rhs ) const
20935 {
20936 return ( imageFormatProperties == rhs.imageFormatProperties )
20937 && ( externalMemoryFeatures == rhs.externalMemoryFeatures )
20938 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
20939 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
20940 }
20941
20942 bool operator!=( ExternalImageFormatPropertiesNV const& rhs ) const
20943 {
20944 return !operator==( rhs );
20945 }
20946
20947 ImageFormatProperties imageFormatProperties;
20948 ExternalMemoryFeatureFlagsNV externalMemoryFeatures;
20949 ExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes;
20950 ExternalMemoryHandleTypeFlagsNV compatibleHandleTypes;
20951 };
20952 static_assert( sizeof( ExternalImageFormatPropertiesNV ) == sizeof( VkExternalImageFormatPropertiesNV ), "struct and wrapper have different size!" );
20953
20954 enum class ValidationCheckEXT
20955 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020956 eAll = VK_VALIDATION_CHECK_ALL_EXT,
20957 eShaders = VK_VALIDATION_CHECK_SHADERS_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020958 };
20959
20960 struct ValidationFlagsEXT
20961 {
20962 ValidationFlagsEXT( uint32_t disabledValidationCheckCount_ = 0, ValidationCheckEXT* pDisabledValidationChecks_ = nullptr )
20963 : sType( StructureType::eValidationFlagsEXT )
20964 , pNext( nullptr )
20965 , disabledValidationCheckCount( disabledValidationCheckCount_ )
20966 , pDisabledValidationChecks( pDisabledValidationChecks_ )
20967 {
20968 }
20969
20970 ValidationFlagsEXT( VkValidationFlagsEXT const & rhs )
20971 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020972 memcpy( this, &rhs, sizeof( ValidationFlagsEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020973 }
20974
20975 ValidationFlagsEXT& operator=( VkValidationFlagsEXT const & rhs )
20976 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020977 memcpy( this, &rhs, sizeof( ValidationFlagsEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020978 return *this;
20979 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020980 ValidationFlagsEXT& setPNext( const void* pNext_ )
20981 {
20982 pNext = pNext_;
20983 return *this;
20984 }
20985
20986 ValidationFlagsEXT& setDisabledValidationCheckCount( uint32_t disabledValidationCheckCount_ )
20987 {
20988 disabledValidationCheckCount = disabledValidationCheckCount_;
20989 return *this;
20990 }
20991
20992 ValidationFlagsEXT& setPDisabledValidationChecks( ValidationCheckEXT* pDisabledValidationChecks_ )
20993 {
20994 pDisabledValidationChecks = pDisabledValidationChecks_;
20995 return *this;
20996 }
20997
20998 operator const VkValidationFlagsEXT&() const
20999 {
21000 return *reinterpret_cast<const VkValidationFlagsEXT*>(this);
21001 }
21002
21003 bool operator==( ValidationFlagsEXT const& rhs ) const
21004 {
21005 return ( sType == rhs.sType )
21006 && ( pNext == rhs.pNext )
21007 && ( disabledValidationCheckCount == rhs.disabledValidationCheckCount )
21008 && ( pDisabledValidationChecks == rhs.pDisabledValidationChecks );
21009 }
21010
21011 bool operator!=( ValidationFlagsEXT const& rhs ) const
21012 {
21013 return !operator==( rhs );
21014 }
21015
21016 private:
21017 StructureType sType;
21018
21019 public:
21020 const void* pNext;
21021 uint32_t disabledValidationCheckCount;
21022 ValidationCheckEXT* pDisabledValidationChecks;
21023 };
21024 static_assert( sizeof( ValidationFlagsEXT ) == sizeof( VkValidationFlagsEXT ), "struct and wrapper have different size!" );
21025
21026 enum class IndirectCommandsLayoutUsageFlagBitsNVX
21027 {
21028 eUnorderedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX,
21029 eSparseSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX,
21030 eEmptyExecutions = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX,
21031 eIndexedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX
21032 };
21033
21034 using IndirectCommandsLayoutUsageFlagsNVX = Flags<IndirectCommandsLayoutUsageFlagBitsNVX, VkIndirectCommandsLayoutUsageFlagsNVX>;
21035
21036 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator|( IndirectCommandsLayoutUsageFlagBitsNVX bit0, IndirectCommandsLayoutUsageFlagBitsNVX bit1 )
21037 {
21038 return IndirectCommandsLayoutUsageFlagsNVX( bit0 ) | bit1;
21039 }
21040
21041 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator~( IndirectCommandsLayoutUsageFlagBitsNVX bits )
21042 {
21043 return ~( IndirectCommandsLayoutUsageFlagsNVX( bits ) );
21044 }
21045
21046 template <> struct FlagTraits<IndirectCommandsLayoutUsageFlagBitsNVX>
21047 {
21048 enum
21049 {
21050 allFlags = VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences)
21051 };
21052 };
21053
21054 enum class ObjectEntryUsageFlagBitsNVX
21055 {
21056 eGraphics = VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX,
21057 eCompute = VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX
21058 };
21059
21060 using ObjectEntryUsageFlagsNVX = Flags<ObjectEntryUsageFlagBitsNVX, VkObjectEntryUsageFlagsNVX>;
21061
21062 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator|( ObjectEntryUsageFlagBitsNVX bit0, ObjectEntryUsageFlagBitsNVX bit1 )
21063 {
21064 return ObjectEntryUsageFlagsNVX( bit0 ) | bit1;
21065 }
21066
21067 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator~( ObjectEntryUsageFlagBitsNVX bits )
21068 {
21069 return ~( ObjectEntryUsageFlagsNVX( bits ) );
21070 }
21071
21072 template <> struct FlagTraits<ObjectEntryUsageFlagBitsNVX>
21073 {
21074 enum
21075 {
21076 allFlags = VkFlags(ObjectEntryUsageFlagBitsNVX::eGraphics) | VkFlags(ObjectEntryUsageFlagBitsNVX::eCompute)
21077 };
21078 };
21079
21080 enum class IndirectCommandsTokenTypeNVX
21081 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021082 ePipeline = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX,
21083 eDescriptorSet = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX,
21084 eIndexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX,
21085 eVertexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX,
21086 ePushConstant = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX,
21087 eDrawIndexed = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX,
21088 eDraw = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX,
21089 eDispatch = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021090 };
21091
21092 struct IndirectCommandsTokenNVX
21093 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021094 IndirectCommandsTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::ePipeline, Buffer buffer_ = Buffer(), DeviceSize offset_ = 0 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021095 : tokenType( tokenType_ )
21096 , buffer( buffer_ )
21097 , offset( offset_ )
21098 {
21099 }
21100
21101 IndirectCommandsTokenNVX( VkIndirectCommandsTokenNVX const & rhs )
21102 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021103 memcpy( this, &rhs, sizeof( IndirectCommandsTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021104 }
21105
21106 IndirectCommandsTokenNVX& operator=( VkIndirectCommandsTokenNVX const & rhs )
21107 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021108 memcpy( this, &rhs, sizeof( IndirectCommandsTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021109 return *this;
21110 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021111 IndirectCommandsTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
21112 {
21113 tokenType = tokenType_;
21114 return *this;
21115 }
21116
21117 IndirectCommandsTokenNVX& setBuffer( Buffer buffer_ )
21118 {
21119 buffer = buffer_;
21120 return *this;
21121 }
21122
21123 IndirectCommandsTokenNVX& setOffset( DeviceSize offset_ )
21124 {
21125 offset = offset_;
21126 return *this;
21127 }
21128
21129 operator const VkIndirectCommandsTokenNVX&() const
21130 {
21131 return *reinterpret_cast<const VkIndirectCommandsTokenNVX*>(this);
21132 }
21133
21134 bool operator==( IndirectCommandsTokenNVX const& rhs ) const
21135 {
21136 return ( tokenType == rhs.tokenType )
21137 && ( buffer == rhs.buffer )
21138 && ( offset == rhs.offset );
21139 }
21140
21141 bool operator!=( IndirectCommandsTokenNVX const& rhs ) const
21142 {
21143 return !operator==( rhs );
21144 }
21145
21146 IndirectCommandsTokenTypeNVX tokenType;
21147 Buffer buffer;
21148 DeviceSize offset;
21149 };
21150 static_assert( sizeof( IndirectCommandsTokenNVX ) == sizeof( VkIndirectCommandsTokenNVX ), "struct and wrapper have different size!" );
21151
21152 struct IndirectCommandsLayoutTokenNVX
21153 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021154 IndirectCommandsLayoutTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::ePipeline, uint32_t bindingUnit_ = 0, uint32_t dynamicCount_ = 0, uint32_t divisor_ = 0 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021155 : tokenType( tokenType_ )
21156 , bindingUnit( bindingUnit_ )
21157 , dynamicCount( dynamicCount_ )
21158 , divisor( divisor_ )
21159 {
21160 }
21161
21162 IndirectCommandsLayoutTokenNVX( VkIndirectCommandsLayoutTokenNVX const & rhs )
21163 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021164 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021165 }
21166
21167 IndirectCommandsLayoutTokenNVX& operator=( VkIndirectCommandsLayoutTokenNVX const & rhs )
21168 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021169 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021170 return *this;
21171 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021172 IndirectCommandsLayoutTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
21173 {
21174 tokenType = tokenType_;
21175 return *this;
21176 }
21177
21178 IndirectCommandsLayoutTokenNVX& setBindingUnit( uint32_t bindingUnit_ )
21179 {
21180 bindingUnit = bindingUnit_;
21181 return *this;
21182 }
21183
21184 IndirectCommandsLayoutTokenNVX& setDynamicCount( uint32_t dynamicCount_ )
21185 {
21186 dynamicCount = dynamicCount_;
21187 return *this;
21188 }
21189
21190 IndirectCommandsLayoutTokenNVX& setDivisor( uint32_t divisor_ )
21191 {
21192 divisor = divisor_;
21193 return *this;
21194 }
21195
21196 operator const VkIndirectCommandsLayoutTokenNVX&() const
21197 {
21198 return *reinterpret_cast<const VkIndirectCommandsLayoutTokenNVX*>(this);
21199 }
21200
21201 bool operator==( IndirectCommandsLayoutTokenNVX const& rhs ) const
21202 {
21203 return ( tokenType == rhs.tokenType )
21204 && ( bindingUnit == rhs.bindingUnit )
21205 && ( dynamicCount == rhs.dynamicCount )
21206 && ( divisor == rhs.divisor );
21207 }
21208
21209 bool operator!=( IndirectCommandsLayoutTokenNVX const& rhs ) const
21210 {
21211 return !operator==( rhs );
21212 }
21213
21214 IndirectCommandsTokenTypeNVX tokenType;
21215 uint32_t bindingUnit;
21216 uint32_t dynamicCount;
21217 uint32_t divisor;
21218 };
21219 static_assert( sizeof( IndirectCommandsLayoutTokenNVX ) == sizeof( VkIndirectCommandsLayoutTokenNVX ), "struct and wrapper have different size!" );
21220
21221 struct IndirectCommandsLayoutCreateInfoNVX
21222 {
21223 IndirectCommandsLayoutCreateInfoNVX( PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics, IndirectCommandsLayoutUsageFlagsNVX flags_ = IndirectCommandsLayoutUsageFlagsNVX(), uint32_t tokenCount_ = 0, const IndirectCommandsLayoutTokenNVX* pTokens_ = nullptr )
21224 : sType( StructureType::eIndirectCommandsLayoutCreateInfoNVX )
21225 , pNext( nullptr )
21226 , pipelineBindPoint( pipelineBindPoint_ )
21227 , flags( flags_ )
21228 , tokenCount( tokenCount_ )
21229 , pTokens( pTokens_ )
21230 {
21231 }
21232
21233 IndirectCommandsLayoutCreateInfoNVX( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
21234 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021235 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021236 }
21237
21238 IndirectCommandsLayoutCreateInfoNVX& operator=( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
21239 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021240 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021241 return *this;
21242 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021243 IndirectCommandsLayoutCreateInfoNVX& setPNext( const void* pNext_ )
21244 {
21245 pNext = pNext_;
21246 return *this;
21247 }
21248
21249 IndirectCommandsLayoutCreateInfoNVX& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
21250 {
21251 pipelineBindPoint = pipelineBindPoint_;
21252 return *this;
21253 }
21254
21255 IndirectCommandsLayoutCreateInfoNVX& setFlags( IndirectCommandsLayoutUsageFlagsNVX flags_ )
21256 {
21257 flags = flags_;
21258 return *this;
21259 }
21260
21261 IndirectCommandsLayoutCreateInfoNVX& setTokenCount( uint32_t tokenCount_ )
21262 {
21263 tokenCount = tokenCount_;
21264 return *this;
21265 }
21266
21267 IndirectCommandsLayoutCreateInfoNVX& setPTokens( const IndirectCommandsLayoutTokenNVX* pTokens_ )
21268 {
21269 pTokens = pTokens_;
21270 return *this;
21271 }
21272
21273 operator const VkIndirectCommandsLayoutCreateInfoNVX&() const
21274 {
21275 return *reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>(this);
21276 }
21277
21278 bool operator==( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
21279 {
21280 return ( sType == rhs.sType )
21281 && ( pNext == rhs.pNext )
21282 && ( pipelineBindPoint == rhs.pipelineBindPoint )
21283 && ( flags == rhs.flags )
21284 && ( tokenCount == rhs.tokenCount )
21285 && ( pTokens == rhs.pTokens );
21286 }
21287
21288 bool operator!=( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
21289 {
21290 return !operator==( rhs );
21291 }
21292
21293 private:
21294 StructureType sType;
21295
21296 public:
21297 const void* pNext;
21298 PipelineBindPoint pipelineBindPoint;
21299 IndirectCommandsLayoutUsageFlagsNVX flags;
21300 uint32_t tokenCount;
21301 const IndirectCommandsLayoutTokenNVX* pTokens;
21302 };
21303 static_assert( sizeof( IndirectCommandsLayoutCreateInfoNVX ) == sizeof( VkIndirectCommandsLayoutCreateInfoNVX ), "struct and wrapper have different size!" );
21304
21305 enum class ObjectEntryTypeNVX
21306 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021307 eDescriptorSet = VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX,
21308 ePipeline = VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX,
21309 eIndexBuffer = VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX,
21310 eVertexBuffer = VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX,
21311 ePushConstant = VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021312 };
21313
21314 struct ObjectTableCreateInfoNVX
21315 {
21316 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 )
21317 : sType( StructureType::eObjectTableCreateInfoNVX )
21318 , pNext( nullptr )
21319 , objectCount( objectCount_ )
21320 , pObjectEntryTypes( pObjectEntryTypes_ )
21321 , pObjectEntryCounts( pObjectEntryCounts_ )
21322 , pObjectEntryUsageFlags( pObjectEntryUsageFlags_ )
21323 , maxUniformBuffersPerDescriptor( maxUniformBuffersPerDescriptor_ )
21324 , maxStorageBuffersPerDescriptor( maxStorageBuffersPerDescriptor_ )
21325 , maxStorageImagesPerDescriptor( maxStorageImagesPerDescriptor_ )
21326 , maxSampledImagesPerDescriptor( maxSampledImagesPerDescriptor_ )
21327 , maxPipelineLayouts( maxPipelineLayouts_ )
21328 {
21329 }
21330
21331 ObjectTableCreateInfoNVX( VkObjectTableCreateInfoNVX const & rhs )
21332 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021333 memcpy( this, &rhs, sizeof( ObjectTableCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021334 }
21335
21336 ObjectTableCreateInfoNVX& operator=( VkObjectTableCreateInfoNVX const & rhs )
21337 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021338 memcpy( this, &rhs, sizeof( ObjectTableCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021339 return *this;
21340 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021341 ObjectTableCreateInfoNVX& setPNext( const void* pNext_ )
21342 {
21343 pNext = pNext_;
21344 return *this;
21345 }
21346
21347 ObjectTableCreateInfoNVX& setObjectCount( uint32_t objectCount_ )
21348 {
21349 objectCount = objectCount_;
21350 return *this;
21351 }
21352
21353 ObjectTableCreateInfoNVX& setPObjectEntryTypes( const ObjectEntryTypeNVX* pObjectEntryTypes_ )
21354 {
21355 pObjectEntryTypes = pObjectEntryTypes_;
21356 return *this;
21357 }
21358
21359 ObjectTableCreateInfoNVX& setPObjectEntryCounts( const uint32_t* pObjectEntryCounts_ )
21360 {
21361 pObjectEntryCounts = pObjectEntryCounts_;
21362 return *this;
21363 }
21364
21365 ObjectTableCreateInfoNVX& setPObjectEntryUsageFlags( const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags_ )
21366 {
21367 pObjectEntryUsageFlags = pObjectEntryUsageFlags_;
21368 return *this;
21369 }
21370
21371 ObjectTableCreateInfoNVX& setMaxUniformBuffersPerDescriptor( uint32_t maxUniformBuffersPerDescriptor_ )
21372 {
21373 maxUniformBuffersPerDescriptor = maxUniformBuffersPerDescriptor_;
21374 return *this;
21375 }
21376
21377 ObjectTableCreateInfoNVX& setMaxStorageBuffersPerDescriptor( uint32_t maxStorageBuffersPerDescriptor_ )
21378 {
21379 maxStorageBuffersPerDescriptor = maxStorageBuffersPerDescriptor_;
21380 return *this;
21381 }
21382
21383 ObjectTableCreateInfoNVX& setMaxStorageImagesPerDescriptor( uint32_t maxStorageImagesPerDescriptor_ )
21384 {
21385 maxStorageImagesPerDescriptor = maxStorageImagesPerDescriptor_;
21386 return *this;
21387 }
21388
21389 ObjectTableCreateInfoNVX& setMaxSampledImagesPerDescriptor( uint32_t maxSampledImagesPerDescriptor_ )
21390 {
21391 maxSampledImagesPerDescriptor = maxSampledImagesPerDescriptor_;
21392 return *this;
21393 }
21394
21395 ObjectTableCreateInfoNVX& setMaxPipelineLayouts( uint32_t maxPipelineLayouts_ )
21396 {
21397 maxPipelineLayouts = maxPipelineLayouts_;
21398 return *this;
21399 }
21400
21401 operator const VkObjectTableCreateInfoNVX&() const
21402 {
21403 return *reinterpret_cast<const VkObjectTableCreateInfoNVX*>(this);
21404 }
21405
21406 bool operator==( ObjectTableCreateInfoNVX const& rhs ) const
21407 {
21408 return ( sType == rhs.sType )
21409 && ( pNext == rhs.pNext )
21410 && ( objectCount == rhs.objectCount )
21411 && ( pObjectEntryTypes == rhs.pObjectEntryTypes )
21412 && ( pObjectEntryCounts == rhs.pObjectEntryCounts )
21413 && ( pObjectEntryUsageFlags == rhs.pObjectEntryUsageFlags )
21414 && ( maxUniformBuffersPerDescriptor == rhs.maxUniformBuffersPerDescriptor )
21415 && ( maxStorageBuffersPerDescriptor == rhs.maxStorageBuffersPerDescriptor )
21416 && ( maxStorageImagesPerDescriptor == rhs.maxStorageImagesPerDescriptor )
21417 && ( maxSampledImagesPerDescriptor == rhs.maxSampledImagesPerDescriptor )
21418 && ( maxPipelineLayouts == rhs.maxPipelineLayouts );
21419 }
21420
21421 bool operator!=( ObjectTableCreateInfoNVX const& rhs ) const
21422 {
21423 return !operator==( rhs );
21424 }
21425
21426 private:
21427 StructureType sType;
21428
21429 public:
21430 const void* pNext;
21431 uint32_t objectCount;
21432 const ObjectEntryTypeNVX* pObjectEntryTypes;
21433 const uint32_t* pObjectEntryCounts;
21434 const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags;
21435 uint32_t maxUniformBuffersPerDescriptor;
21436 uint32_t maxStorageBuffersPerDescriptor;
21437 uint32_t maxStorageImagesPerDescriptor;
21438 uint32_t maxSampledImagesPerDescriptor;
21439 uint32_t maxPipelineLayouts;
21440 };
21441 static_assert( sizeof( ObjectTableCreateInfoNVX ) == sizeof( VkObjectTableCreateInfoNVX ), "struct and wrapper have different size!" );
21442
21443 struct ObjectTableEntryNVX
21444 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021445 ObjectTableEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021446 : type( type_ )
21447 , flags( flags_ )
21448 {
21449 }
21450
21451 ObjectTableEntryNVX( VkObjectTableEntryNVX const & rhs )
21452 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021453 memcpy( this, &rhs, sizeof( ObjectTableEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021454 }
21455
21456 ObjectTableEntryNVX& operator=( VkObjectTableEntryNVX const & rhs )
21457 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021458 memcpy( this, &rhs, sizeof( ObjectTableEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021459 return *this;
21460 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021461 ObjectTableEntryNVX& setType( ObjectEntryTypeNVX type_ )
21462 {
21463 type = type_;
21464 return *this;
21465 }
21466
21467 ObjectTableEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
21468 {
21469 flags = flags_;
21470 return *this;
21471 }
21472
21473 operator const VkObjectTableEntryNVX&() const
21474 {
21475 return *reinterpret_cast<const VkObjectTableEntryNVX*>(this);
21476 }
21477
21478 bool operator==( ObjectTableEntryNVX const& rhs ) const
21479 {
21480 return ( type == rhs.type )
21481 && ( flags == rhs.flags );
21482 }
21483
21484 bool operator!=( ObjectTableEntryNVX const& rhs ) const
21485 {
21486 return !operator==( rhs );
21487 }
21488
21489 ObjectEntryTypeNVX type;
21490 ObjectEntryUsageFlagsNVX flags;
21491 };
21492 static_assert( sizeof( ObjectTableEntryNVX ) == sizeof( VkObjectTableEntryNVX ), "struct and wrapper have different size!" );
21493
21494 struct ObjectTablePipelineEntryNVX
21495 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021496 ObjectTablePipelineEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Pipeline pipeline_ = Pipeline() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021497 : type( type_ )
21498 , flags( flags_ )
21499 , pipeline( pipeline_ )
21500 {
21501 }
21502
21503 ObjectTablePipelineEntryNVX( VkObjectTablePipelineEntryNVX const & rhs )
21504 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021505 memcpy( this, &rhs, sizeof( ObjectTablePipelineEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021506 }
21507
21508 ObjectTablePipelineEntryNVX& operator=( VkObjectTablePipelineEntryNVX const & rhs )
21509 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021510 memcpy( this, &rhs, sizeof( ObjectTablePipelineEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021511 return *this;
21512 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021513 ObjectTablePipelineEntryNVX& setType( ObjectEntryTypeNVX type_ )
21514 {
21515 type = type_;
21516 return *this;
21517 }
21518
21519 ObjectTablePipelineEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
21520 {
21521 flags = flags_;
21522 return *this;
21523 }
21524
21525 ObjectTablePipelineEntryNVX& setPipeline( Pipeline pipeline_ )
21526 {
21527 pipeline = pipeline_;
21528 return *this;
21529 }
21530
21531 operator const VkObjectTablePipelineEntryNVX&() const
21532 {
21533 return *reinterpret_cast<const VkObjectTablePipelineEntryNVX*>(this);
21534 }
21535
21536 bool operator==( ObjectTablePipelineEntryNVX const& rhs ) const
21537 {
21538 return ( type == rhs.type )
21539 && ( flags == rhs.flags )
21540 && ( pipeline == rhs.pipeline );
21541 }
21542
21543 bool operator!=( ObjectTablePipelineEntryNVX const& rhs ) const
21544 {
21545 return !operator==( rhs );
21546 }
21547
21548 ObjectEntryTypeNVX type;
21549 ObjectEntryUsageFlagsNVX flags;
21550 Pipeline pipeline;
21551 };
21552 static_assert( sizeof( ObjectTablePipelineEntryNVX ) == sizeof( VkObjectTablePipelineEntryNVX ), "struct and wrapper have different size!" );
21553
21554 struct ObjectTableDescriptorSetEntryNVX
21555 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021556 ObjectTableDescriptorSetEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), PipelineLayout pipelineLayout_ = PipelineLayout(), DescriptorSet descriptorSet_ = DescriptorSet() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021557 : type( type_ )
21558 , flags( flags_ )
21559 , pipelineLayout( pipelineLayout_ )
21560 , descriptorSet( descriptorSet_ )
21561 {
21562 }
21563
21564 ObjectTableDescriptorSetEntryNVX( VkObjectTableDescriptorSetEntryNVX const & rhs )
21565 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021566 memcpy( this, &rhs, sizeof( ObjectTableDescriptorSetEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021567 }
21568
21569 ObjectTableDescriptorSetEntryNVX& operator=( VkObjectTableDescriptorSetEntryNVX const & rhs )
21570 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021571 memcpy( this, &rhs, sizeof( ObjectTableDescriptorSetEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021572 return *this;
21573 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021574 ObjectTableDescriptorSetEntryNVX& setType( ObjectEntryTypeNVX type_ )
21575 {
21576 type = type_;
21577 return *this;
21578 }
21579
21580 ObjectTableDescriptorSetEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
21581 {
21582 flags = flags_;
21583 return *this;
21584 }
21585
21586 ObjectTableDescriptorSetEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
21587 {
21588 pipelineLayout = pipelineLayout_;
21589 return *this;
21590 }
21591
21592 ObjectTableDescriptorSetEntryNVX& setDescriptorSet( DescriptorSet descriptorSet_ )
21593 {
21594 descriptorSet = descriptorSet_;
21595 return *this;
21596 }
21597
21598 operator const VkObjectTableDescriptorSetEntryNVX&() const
21599 {
21600 return *reinterpret_cast<const VkObjectTableDescriptorSetEntryNVX*>(this);
21601 }
21602
21603 bool operator==( ObjectTableDescriptorSetEntryNVX const& rhs ) const
21604 {
21605 return ( type == rhs.type )
21606 && ( flags == rhs.flags )
21607 && ( pipelineLayout == rhs.pipelineLayout )
21608 && ( descriptorSet == rhs.descriptorSet );
21609 }
21610
21611 bool operator!=( ObjectTableDescriptorSetEntryNVX const& rhs ) const
21612 {
21613 return !operator==( rhs );
21614 }
21615
21616 ObjectEntryTypeNVX type;
21617 ObjectEntryUsageFlagsNVX flags;
21618 PipelineLayout pipelineLayout;
21619 DescriptorSet descriptorSet;
21620 };
21621 static_assert( sizeof( ObjectTableDescriptorSetEntryNVX ) == sizeof( VkObjectTableDescriptorSetEntryNVX ), "struct and wrapper have different size!" );
21622
21623 struct ObjectTableVertexBufferEntryNVX
21624 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021625 ObjectTableVertexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Buffer buffer_ = Buffer() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021626 : type( type_ )
21627 , flags( flags_ )
21628 , buffer( buffer_ )
21629 {
21630 }
21631
21632 ObjectTableVertexBufferEntryNVX( VkObjectTableVertexBufferEntryNVX const & rhs )
21633 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021634 memcpy( this, &rhs, sizeof( ObjectTableVertexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021635 }
21636
21637 ObjectTableVertexBufferEntryNVX& operator=( VkObjectTableVertexBufferEntryNVX const & rhs )
21638 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021639 memcpy( this, &rhs, sizeof( ObjectTableVertexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021640 return *this;
21641 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021642 ObjectTableVertexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
21643 {
21644 type = type_;
21645 return *this;
21646 }
21647
21648 ObjectTableVertexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
21649 {
21650 flags = flags_;
21651 return *this;
21652 }
21653
21654 ObjectTableVertexBufferEntryNVX& setBuffer( Buffer buffer_ )
21655 {
21656 buffer = buffer_;
21657 return *this;
21658 }
21659
21660 operator const VkObjectTableVertexBufferEntryNVX&() const
21661 {
21662 return *reinterpret_cast<const VkObjectTableVertexBufferEntryNVX*>(this);
21663 }
21664
21665 bool operator==( ObjectTableVertexBufferEntryNVX const& rhs ) const
21666 {
21667 return ( type == rhs.type )
21668 && ( flags == rhs.flags )
21669 && ( buffer == rhs.buffer );
21670 }
21671
21672 bool operator!=( ObjectTableVertexBufferEntryNVX const& rhs ) const
21673 {
21674 return !operator==( rhs );
21675 }
21676
21677 ObjectEntryTypeNVX type;
21678 ObjectEntryUsageFlagsNVX flags;
21679 Buffer buffer;
21680 };
21681 static_assert( sizeof( ObjectTableVertexBufferEntryNVX ) == sizeof( VkObjectTableVertexBufferEntryNVX ), "struct and wrapper have different size!" );
21682
21683 struct ObjectTableIndexBufferEntryNVX
21684 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021685 ObjectTableIndexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Buffer buffer_ = Buffer(), IndexType indexType_ = IndexType::eUint16 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021686 : type( type_ )
21687 , flags( flags_ )
21688 , buffer( buffer_ )
Mark Young39389872017-01-19 21:10:49 -070021689 , indexType( indexType_ )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021690 {
21691 }
21692
21693 ObjectTableIndexBufferEntryNVX( VkObjectTableIndexBufferEntryNVX const & rhs )
21694 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021695 memcpy( this, &rhs, sizeof( ObjectTableIndexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021696 }
21697
21698 ObjectTableIndexBufferEntryNVX& operator=( VkObjectTableIndexBufferEntryNVX const & rhs )
21699 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021700 memcpy( this, &rhs, sizeof( ObjectTableIndexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021701 return *this;
21702 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021703 ObjectTableIndexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
21704 {
21705 type = type_;
21706 return *this;
21707 }
21708
21709 ObjectTableIndexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
21710 {
21711 flags = flags_;
21712 return *this;
21713 }
21714
21715 ObjectTableIndexBufferEntryNVX& setBuffer( Buffer buffer_ )
21716 {
21717 buffer = buffer_;
21718 return *this;
21719 }
21720
Mark Young39389872017-01-19 21:10:49 -070021721 ObjectTableIndexBufferEntryNVX& setIndexType( IndexType indexType_ )
21722 {
21723 indexType = indexType_;
21724 return *this;
21725 }
21726
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021727 operator const VkObjectTableIndexBufferEntryNVX&() const
21728 {
21729 return *reinterpret_cast<const VkObjectTableIndexBufferEntryNVX*>(this);
21730 }
21731
21732 bool operator==( ObjectTableIndexBufferEntryNVX const& rhs ) const
21733 {
21734 return ( type == rhs.type )
21735 && ( flags == rhs.flags )
Mark Young39389872017-01-19 21:10:49 -070021736 && ( buffer == rhs.buffer )
21737 && ( indexType == rhs.indexType );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021738 }
21739
21740 bool operator!=( ObjectTableIndexBufferEntryNVX const& rhs ) const
21741 {
21742 return !operator==( rhs );
21743 }
21744
21745 ObjectEntryTypeNVX type;
21746 ObjectEntryUsageFlagsNVX flags;
21747 Buffer buffer;
Mark Young39389872017-01-19 21:10:49 -070021748 IndexType indexType;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021749 };
21750 static_assert( sizeof( ObjectTableIndexBufferEntryNVX ) == sizeof( VkObjectTableIndexBufferEntryNVX ), "struct and wrapper have different size!" );
21751
21752 struct ObjectTablePushConstantEntryNVX
21753 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021754 ObjectTablePushConstantEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), PipelineLayout pipelineLayout_ = PipelineLayout(), ShaderStageFlags stageFlags_ = ShaderStageFlags() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021755 : type( type_ )
21756 , flags( flags_ )
21757 , pipelineLayout( pipelineLayout_ )
21758 , stageFlags( stageFlags_ )
21759 {
21760 }
21761
21762 ObjectTablePushConstantEntryNVX( VkObjectTablePushConstantEntryNVX const & rhs )
21763 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021764 memcpy( this, &rhs, sizeof( ObjectTablePushConstantEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021765 }
21766
21767 ObjectTablePushConstantEntryNVX& operator=( VkObjectTablePushConstantEntryNVX const & rhs )
21768 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021769 memcpy( this, &rhs, sizeof( ObjectTablePushConstantEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021770 return *this;
21771 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021772 ObjectTablePushConstantEntryNVX& setType( ObjectEntryTypeNVX type_ )
21773 {
21774 type = type_;
21775 return *this;
21776 }
21777
21778 ObjectTablePushConstantEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
21779 {
21780 flags = flags_;
21781 return *this;
21782 }
21783
21784 ObjectTablePushConstantEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
21785 {
21786 pipelineLayout = pipelineLayout_;
21787 return *this;
21788 }
21789
21790 ObjectTablePushConstantEntryNVX& setStageFlags( ShaderStageFlags stageFlags_ )
21791 {
21792 stageFlags = stageFlags_;
21793 return *this;
21794 }
21795
21796 operator const VkObjectTablePushConstantEntryNVX&() const
21797 {
21798 return *reinterpret_cast<const VkObjectTablePushConstantEntryNVX*>(this);
21799 }
21800
21801 bool operator==( ObjectTablePushConstantEntryNVX const& rhs ) const
21802 {
21803 return ( type == rhs.type )
21804 && ( flags == rhs.flags )
21805 && ( pipelineLayout == rhs.pipelineLayout )
21806 && ( stageFlags == rhs.stageFlags );
21807 }
21808
21809 bool operator!=( ObjectTablePushConstantEntryNVX const& rhs ) const
21810 {
21811 return !operator==( rhs );
21812 }
21813
21814 ObjectEntryTypeNVX type;
21815 ObjectEntryUsageFlagsNVX flags;
21816 PipelineLayout pipelineLayout;
21817 ShaderStageFlags stageFlags;
21818 };
21819 static_assert( sizeof( ObjectTablePushConstantEntryNVX ) == sizeof( VkObjectTablePushConstantEntryNVX ), "struct and wrapper have different size!" );
21820
Mark Young0f183a82017-02-28 09:58:04 -070021821 enum class DescriptorSetLayoutCreateFlagBits
21822 {
21823 ePushDescriptorKHR = VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
21824 };
21825
21826 using DescriptorSetLayoutCreateFlags = Flags<DescriptorSetLayoutCreateFlagBits, VkDescriptorSetLayoutCreateFlags>;
21827
21828 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator|( DescriptorSetLayoutCreateFlagBits bit0, DescriptorSetLayoutCreateFlagBits bit1 )
21829 {
21830 return DescriptorSetLayoutCreateFlags( bit0 ) | bit1;
21831 }
21832
21833 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator~( DescriptorSetLayoutCreateFlagBits bits )
21834 {
21835 return ~( DescriptorSetLayoutCreateFlags( bits ) );
21836 }
21837
21838 template <> struct FlagTraits<DescriptorSetLayoutCreateFlagBits>
21839 {
21840 enum
21841 {
21842 allFlags = VkFlags(DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR)
21843 };
21844 };
21845
21846 struct DescriptorSetLayoutCreateInfo
21847 {
21848 DescriptorSetLayoutCreateInfo( DescriptorSetLayoutCreateFlags flags_ = DescriptorSetLayoutCreateFlags(), uint32_t bindingCount_ = 0, const DescriptorSetLayoutBinding* pBindings_ = nullptr )
21849 : sType( StructureType::eDescriptorSetLayoutCreateInfo )
21850 , pNext( nullptr )
21851 , flags( flags_ )
21852 , bindingCount( bindingCount_ )
21853 , pBindings( pBindings_ )
21854 {
21855 }
21856
21857 DescriptorSetLayoutCreateInfo( VkDescriptorSetLayoutCreateInfo const & rhs )
21858 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021859 memcpy( this, &rhs, sizeof( DescriptorSetLayoutCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070021860 }
21861
21862 DescriptorSetLayoutCreateInfo& operator=( VkDescriptorSetLayoutCreateInfo const & rhs )
21863 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021864 memcpy( this, &rhs, sizeof( DescriptorSetLayoutCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070021865 return *this;
21866 }
Mark Young0f183a82017-02-28 09:58:04 -070021867 DescriptorSetLayoutCreateInfo& setPNext( const void* pNext_ )
21868 {
21869 pNext = pNext_;
21870 return *this;
21871 }
21872
21873 DescriptorSetLayoutCreateInfo& setFlags( DescriptorSetLayoutCreateFlags flags_ )
21874 {
21875 flags = flags_;
21876 return *this;
21877 }
21878
21879 DescriptorSetLayoutCreateInfo& setBindingCount( uint32_t bindingCount_ )
21880 {
21881 bindingCount = bindingCount_;
21882 return *this;
21883 }
21884
21885 DescriptorSetLayoutCreateInfo& setPBindings( const DescriptorSetLayoutBinding* pBindings_ )
21886 {
21887 pBindings = pBindings_;
21888 return *this;
21889 }
21890
21891 operator const VkDescriptorSetLayoutCreateInfo&() const
21892 {
21893 return *reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>(this);
21894 }
21895
21896 bool operator==( DescriptorSetLayoutCreateInfo const& rhs ) const
21897 {
21898 return ( sType == rhs.sType )
21899 && ( pNext == rhs.pNext )
21900 && ( flags == rhs.flags )
21901 && ( bindingCount == rhs.bindingCount )
21902 && ( pBindings == rhs.pBindings );
21903 }
21904
21905 bool operator!=( DescriptorSetLayoutCreateInfo const& rhs ) const
21906 {
21907 return !operator==( rhs );
21908 }
21909
21910 private:
21911 StructureType sType;
21912
21913 public:
21914 const void* pNext;
21915 DescriptorSetLayoutCreateFlags flags;
21916 uint32_t bindingCount;
21917 const DescriptorSetLayoutBinding* pBindings;
21918 };
21919 static_assert( sizeof( DescriptorSetLayoutCreateInfo ) == sizeof( VkDescriptorSetLayoutCreateInfo ), "struct and wrapper have different size!" );
21920
Mark Youngabc2d6e2017-07-07 07:59:56 -060021921 enum class ExternalMemoryHandleTypeFlagBitsKHR
Mark Young0f183a82017-02-28 09:58:04 -070021922 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021923 eOpaqueFd = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
21924 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
21925 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
21926 eD3D11Texture = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR,
21927 eD3D11TextureKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR,
21928 eD3D12Heap = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR,
21929 eD3D12Resource = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR
Mark Young0f183a82017-02-28 09:58:04 -070021930 };
21931
Mark Youngabc2d6e2017-07-07 07:59:56 -060021932 using ExternalMemoryHandleTypeFlagsKHR = Flags<ExternalMemoryHandleTypeFlagBitsKHR, VkExternalMemoryHandleTypeFlagsKHR>;
Mark Young0f183a82017-02-28 09:58:04 -070021933
Mark Youngabc2d6e2017-07-07 07:59:56 -060021934 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsKHR operator|( ExternalMemoryHandleTypeFlagBitsKHR bit0, ExternalMemoryHandleTypeFlagBitsKHR bit1 )
Mark Young0f183a82017-02-28 09:58:04 -070021935 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021936 return ExternalMemoryHandleTypeFlagsKHR( bit0 ) | bit1;
Mark Young0f183a82017-02-28 09:58:04 -070021937 }
21938
Mark Youngabc2d6e2017-07-07 07:59:56 -060021939 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsKHR operator~( ExternalMemoryHandleTypeFlagBitsKHR bits )
Mark Young0f183a82017-02-28 09:58:04 -070021940 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021941 return ~( ExternalMemoryHandleTypeFlagsKHR( bits ) );
Mark Young0f183a82017-02-28 09:58:04 -070021942 }
21943
Mark Youngabc2d6e2017-07-07 07:59:56 -060021944 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsKHR>
Mark Young0f183a82017-02-28 09:58:04 -070021945 {
21946 enum
21947 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021948 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 -070021949 };
21950 };
21951
Mark Youngabc2d6e2017-07-07 07:59:56 -060021952 struct PhysicalDeviceExternalImageFormatInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070021953 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021954 PhysicalDeviceExternalImageFormatInfoKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd )
21955 : sType( StructureType::ePhysicalDeviceExternalImageFormatInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070021956 , pNext( nullptr )
21957 , handleType( handleType_ )
21958 {
21959 }
21960
Mark Youngabc2d6e2017-07-07 07:59:56 -060021961 PhysicalDeviceExternalImageFormatInfoKHR( VkPhysicalDeviceExternalImageFormatInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021962 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021963 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalImageFormatInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021964 }
21965
Mark Youngabc2d6e2017-07-07 07:59:56 -060021966 PhysicalDeviceExternalImageFormatInfoKHR& operator=( VkPhysicalDeviceExternalImageFormatInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021967 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021968 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalImageFormatInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021969 return *this;
21970 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060021971 PhysicalDeviceExternalImageFormatInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070021972 {
21973 pNext = pNext_;
21974 return *this;
21975 }
21976
Mark Youngabc2d6e2017-07-07 07:59:56 -060021977 PhysicalDeviceExternalImageFormatInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070021978 {
21979 handleType = handleType_;
21980 return *this;
21981 }
21982
Mark Youngabc2d6e2017-07-07 07:59:56 -060021983 operator const VkPhysicalDeviceExternalImageFormatInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070021984 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021985 return *reinterpret_cast<const VkPhysicalDeviceExternalImageFormatInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070021986 }
21987
Mark Youngabc2d6e2017-07-07 07:59:56 -060021988 bool operator==( PhysicalDeviceExternalImageFormatInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021989 {
21990 return ( sType == rhs.sType )
21991 && ( pNext == rhs.pNext )
21992 && ( handleType == rhs.handleType );
21993 }
21994
Mark Youngabc2d6e2017-07-07 07:59:56 -060021995 bool operator!=( PhysicalDeviceExternalImageFormatInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021996 {
21997 return !operator==( rhs );
21998 }
21999
22000 private:
22001 StructureType sType;
22002
22003 public:
22004 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022005 ExternalMemoryHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022006 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022007 static_assert( sizeof( PhysicalDeviceExternalImageFormatInfoKHR ) == sizeof( VkPhysicalDeviceExternalImageFormatInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022008
Mark Youngabc2d6e2017-07-07 07:59:56 -060022009 struct PhysicalDeviceExternalBufferInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022010 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022011 PhysicalDeviceExternalBufferInfoKHR( BufferCreateFlags flags_ = BufferCreateFlags(), BufferUsageFlags usage_ = BufferUsageFlags(), ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd )
22012 : sType( StructureType::ePhysicalDeviceExternalBufferInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022013 , pNext( nullptr )
22014 , flags( flags_ )
22015 , usage( usage_ )
22016 , handleType( handleType_ )
22017 {
22018 }
22019
Mark Youngabc2d6e2017-07-07 07:59:56 -060022020 PhysicalDeviceExternalBufferInfoKHR( VkPhysicalDeviceExternalBufferInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022021 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022022 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalBufferInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022023 }
22024
Mark Youngabc2d6e2017-07-07 07:59:56 -060022025 PhysicalDeviceExternalBufferInfoKHR& operator=( VkPhysicalDeviceExternalBufferInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022026 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022027 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalBufferInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022028 return *this;
22029 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022030 PhysicalDeviceExternalBufferInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022031 {
22032 pNext = pNext_;
22033 return *this;
22034 }
22035
Mark Youngabc2d6e2017-07-07 07:59:56 -060022036 PhysicalDeviceExternalBufferInfoKHR& setFlags( BufferCreateFlags flags_ )
Mark Young0f183a82017-02-28 09:58:04 -070022037 {
22038 flags = flags_;
22039 return *this;
22040 }
22041
Mark Youngabc2d6e2017-07-07 07:59:56 -060022042 PhysicalDeviceExternalBufferInfoKHR& setUsage( BufferUsageFlags usage_ )
Mark Young0f183a82017-02-28 09:58:04 -070022043 {
22044 usage = usage_;
22045 return *this;
22046 }
22047
Mark Youngabc2d6e2017-07-07 07:59:56 -060022048 PhysicalDeviceExternalBufferInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022049 {
22050 handleType = handleType_;
22051 return *this;
22052 }
22053
Mark Youngabc2d6e2017-07-07 07:59:56 -060022054 operator const VkPhysicalDeviceExternalBufferInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022055 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022056 return *reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022057 }
22058
Mark Youngabc2d6e2017-07-07 07:59:56 -060022059 bool operator==( PhysicalDeviceExternalBufferInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022060 {
22061 return ( sType == rhs.sType )
22062 && ( pNext == rhs.pNext )
22063 && ( flags == rhs.flags )
22064 && ( usage == rhs.usage )
22065 && ( handleType == rhs.handleType );
22066 }
22067
Mark Youngabc2d6e2017-07-07 07:59:56 -060022068 bool operator!=( PhysicalDeviceExternalBufferInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022069 {
22070 return !operator==( rhs );
22071 }
22072
22073 private:
22074 StructureType sType;
22075
22076 public:
22077 const void* pNext;
22078 BufferCreateFlags flags;
22079 BufferUsageFlags usage;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022080 ExternalMemoryHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022081 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022082 static_assert( sizeof( PhysicalDeviceExternalBufferInfoKHR ) == sizeof( VkPhysicalDeviceExternalBufferInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022083
Mark Youngabc2d6e2017-07-07 07:59:56 -060022084 struct ExternalMemoryImageCreateInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022085 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022086 ExternalMemoryImageCreateInfoKHR( ExternalMemoryHandleTypeFlagsKHR handleTypes_ = ExternalMemoryHandleTypeFlagsKHR() )
22087 : sType( StructureType::eExternalMemoryImageCreateInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022088 , pNext( nullptr )
22089 , handleTypes( handleTypes_ )
22090 {
22091 }
22092
Mark Youngabc2d6e2017-07-07 07:59:56 -060022093 ExternalMemoryImageCreateInfoKHR( VkExternalMemoryImageCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022094 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022095 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022096 }
22097
Mark Youngabc2d6e2017-07-07 07:59:56 -060022098 ExternalMemoryImageCreateInfoKHR& operator=( VkExternalMemoryImageCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022099 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022100 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022101 return *this;
22102 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022103 ExternalMemoryImageCreateInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022104 {
22105 pNext = pNext_;
22106 return *this;
22107 }
22108
Mark Youngabc2d6e2017-07-07 07:59:56 -060022109 ExternalMemoryImageCreateInfoKHR& setHandleTypes( ExternalMemoryHandleTypeFlagsKHR handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070022110 {
22111 handleTypes = handleTypes_;
22112 return *this;
22113 }
22114
Mark Youngabc2d6e2017-07-07 07:59:56 -060022115 operator const VkExternalMemoryImageCreateInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022116 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022117 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022118 }
22119
Mark Youngabc2d6e2017-07-07 07:59:56 -060022120 bool operator==( ExternalMemoryImageCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022121 {
22122 return ( sType == rhs.sType )
22123 && ( pNext == rhs.pNext )
22124 && ( handleTypes == rhs.handleTypes );
22125 }
22126
Mark Youngabc2d6e2017-07-07 07:59:56 -060022127 bool operator!=( ExternalMemoryImageCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022128 {
22129 return !operator==( rhs );
22130 }
22131
22132 private:
22133 StructureType sType;
22134
22135 public:
22136 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022137 ExternalMemoryHandleTypeFlagsKHR handleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070022138 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022139 static_assert( sizeof( ExternalMemoryImageCreateInfoKHR ) == sizeof( VkExternalMemoryImageCreateInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022140
Mark Youngabc2d6e2017-07-07 07:59:56 -060022141 struct ExternalMemoryBufferCreateInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022142 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022143 ExternalMemoryBufferCreateInfoKHR( ExternalMemoryHandleTypeFlagsKHR handleTypes_ = ExternalMemoryHandleTypeFlagsKHR() )
22144 : sType( StructureType::eExternalMemoryBufferCreateInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022145 , pNext( nullptr )
22146 , handleTypes( handleTypes_ )
22147 {
22148 }
22149
Mark Youngabc2d6e2017-07-07 07:59:56 -060022150 ExternalMemoryBufferCreateInfoKHR( VkExternalMemoryBufferCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022151 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022152 memcpy( this, &rhs, sizeof( ExternalMemoryBufferCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022153 }
22154
Mark Youngabc2d6e2017-07-07 07:59:56 -060022155 ExternalMemoryBufferCreateInfoKHR& operator=( VkExternalMemoryBufferCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022156 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022157 memcpy( this, &rhs, sizeof( ExternalMemoryBufferCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022158 return *this;
22159 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022160 ExternalMemoryBufferCreateInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022161 {
22162 pNext = pNext_;
22163 return *this;
22164 }
22165
Mark Youngabc2d6e2017-07-07 07:59:56 -060022166 ExternalMemoryBufferCreateInfoKHR& setHandleTypes( ExternalMemoryHandleTypeFlagsKHR handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070022167 {
22168 handleTypes = handleTypes_;
22169 return *this;
22170 }
22171
Mark Youngabc2d6e2017-07-07 07:59:56 -060022172 operator const VkExternalMemoryBufferCreateInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022173 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022174 return *reinterpret_cast<const VkExternalMemoryBufferCreateInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022175 }
22176
Mark Youngabc2d6e2017-07-07 07:59:56 -060022177 bool operator==( ExternalMemoryBufferCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022178 {
22179 return ( sType == rhs.sType )
22180 && ( pNext == rhs.pNext )
22181 && ( handleTypes == rhs.handleTypes );
22182 }
22183
Mark Youngabc2d6e2017-07-07 07:59:56 -060022184 bool operator!=( ExternalMemoryBufferCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022185 {
22186 return !operator==( rhs );
22187 }
22188
22189 private:
22190 StructureType sType;
22191
22192 public:
22193 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022194 ExternalMemoryHandleTypeFlagsKHR handleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070022195 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022196 static_assert( sizeof( ExternalMemoryBufferCreateInfoKHR ) == sizeof( VkExternalMemoryBufferCreateInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022197
Mark Youngabc2d6e2017-07-07 07:59:56 -060022198 struct ExportMemoryAllocateInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022199 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022200 ExportMemoryAllocateInfoKHR( ExternalMemoryHandleTypeFlagsKHR handleTypes_ = ExternalMemoryHandleTypeFlagsKHR() )
22201 : sType( StructureType::eExportMemoryAllocateInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022202 , pNext( nullptr )
22203 , handleTypes( handleTypes_ )
22204 {
22205 }
22206
Mark Youngabc2d6e2017-07-07 07:59:56 -060022207 ExportMemoryAllocateInfoKHR( VkExportMemoryAllocateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022208 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022209 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022210 }
22211
Mark Youngabc2d6e2017-07-07 07:59:56 -060022212 ExportMemoryAllocateInfoKHR& operator=( VkExportMemoryAllocateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022213 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022214 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022215 return *this;
22216 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022217 ExportMemoryAllocateInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022218 {
22219 pNext = pNext_;
22220 return *this;
22221 }
22222
Mark Youngabc2d6e2017-07-07 07:59:56 -060022223 ExportMemoryAllocateInfoKHR& setHandleTypes( ExternalMemoryHandleTypeFlagsKHR handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070022224 {
22225 handleTypes = handleTypes_;
22226 return *this;
22227 }
22228
Mark Youngabc2d6e2017-07-07 07:59:56 -060022229 operator const VkExportMemoryAllocateInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022230 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022231 return *reinterpret_cast<const VkExportMemoryAllocateInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022232 }
22233
Mark Youngabc2d6e2017-07-07 07:59:56 -060022234 bool operator==( ExportMemoryAllocateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022235 {
22236 return ( sType == rhs.sType )
22237 && ( pNext == rhs.pNext )
22238 && ( handleTypes == rhs.handleTypes );
22239 }
22240
Mark Youngabc2d6e2017-07-07 07:59:56 -060022241 bool operator!=( ExportMemoryAllocateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022242 {
22243 return !operator==( rhs );
22244 }
22245
22246 private:
22247 StructureType sType;
22248
22249 public:
22250 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022251 ExternalMemoryHandleTypeFlagsKHR handleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070022252 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022253 static_assert( sizeof( ExportMemoryAllocateInfoKHR ) == sizeof( VkExportMemoryAllocateInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022254
Mark Youngabc2d6e2017-07-07 07:59:56 -060022255#ifdef VK_USE_PLATFORM_WIN32_KHR
22256 struct ImportMemoryWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022257 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022258 ImportMemoryWin32HandleInfoKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd, HANDLE handle_ = 0, LPCWSTR name_ = 0 )
22259 : sType( StructureType::eImportMemoryWin32HandleInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022260 , pNext( nullptr )
22261 , handleType( handleType_ )
22262 , handle( handle_ )
Mark Youngabc2d6e2017-07-07 07:59:56 -060022263 , name( name_ )
Mark Young0f183a82017-02-28 09:58:04 -070022264 {
22265 }
22266
Mark Youngabc2d6e2017-07-07 07:59:56 -060022267 ImportMemoryWin32HandleInfoKHR( VkImportMemoryWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022268 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022269 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022270 }
22271
Mark Youngabc2d6e2017-07-07 07:59:56 -060022272 ImportMemoryWin32HandleInfoKHR& operator=( VkImportMemoryWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022273 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022274 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022275 return *this;
22276 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022277 ImportMemoryWin32HandleInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022278 {
22279 pNext = pNext_;
22280 return *this;
22281 }
22282
Mark Youngabc2d6e2017-07-07 07:59:56 -060022283 ImportMemoryWin32HandleInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022284 {
22285 handleType = handleType_;
22286 return *this;
22287 }
22288
Mark Youngabc2d6e2017-07-07 07:59:56 -060022289 ImportMemoryWin32HandleInfoKHR& setHandle( HANDLE handle_ )
Mark Young0f183a82017-02-28 09:58:04 -070022290 {
22291 handle = handle_;
22292 return *this;
22293 }
22294
Mark Youngabc2d6e2017-07-07 07:59:56 -060022295 ImportMemoryWin32HandleInfoKHR& setName( LPCWSTR name_ )
Mark Young0f183a82017-02-28 09:58:04 -070022296 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022297 name = name_;
22298 return *this;
Mark Young0f183a82017-02-28 09:58:04 -070022299 }
22300
Mark Youngabc2d6e2017-07-07 07:59:56 -060022301 operator const VkImportMemoryWin32HandleInfoKHR&() const
22302 {
22303 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoKHR*>(this);
22304 }
22305
22306 bool operator==( ImportMemoryWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022307 {
22308 return ( sType == rhs.sType )
22309 && ( pNext == rhs.pNext )
22310 && ( handleType == rhs.handleType )
Mark Youngabc2d6e2017-07-07 07:59:56 -060022311 && ( handle == rhs.handle )
22312 && ( name == rhs.name );
Mark Young0f183a82017-02-28 09:58:04 -070022313 }
22314
Mark Youngabc2d6e2017-07-07 07:59:56 -060022315 bool operator!=( ImportMemoryWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022316 {
22317 return !operator==( rhs );
22318 }
22319
22320 private:
22321 StructureType sType;
22322
22323 public:
22324 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022325 ExternalMemoryHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022326 HANDLE handle;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022327 LPCWSTR name;
Mark Young0f183a82017-02-28 09:58:04 -070022328 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022329 static_assert( sizeof( ImportMemoryWin32HandleInfoKHR ) == sizeof( VkImportMemoryWin32HandleInfoKHR ), "struct and wrapper have different size!" );
22330#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070022331
Mark Youngabc2d6e2017-07-07 07:59:56 -060022332#ifdef VK_USE_PLATFORM_WIN32_KHR
22333 struct MemoryGetWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022334 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022335 MemoryGetWin32HandleInfoKHR( DeviceMemory memory_ = DeviceMemory(), ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd )
22336 : sType( StructureType::eMemoryGetWin32HandleInfoKHR )
22337 , pNext( nullptr )
22338 , memory( memory_ )
22339 , handleType( handleType_ )
22340 {
22341 }
22342
22343 MemoryGetWin32HandleInfoKHR( VkMemoryGetWin32HandleInfoKHR const & rhs )
22344 {
22345 memcpy( this, &rhs, sizeof( MemoryGetWin32HandleInfoKHR ) );
22346 }
22347
22348 MemoryGetWin32HandleInfoKHR& operator=( VkMemoryGetWin32HandleInfoKHR const & rhs )
22349 {
22350 memcpy( this, &rhs, sizeof( MemoryGetWin32HandleInfoKHR ) );
22351 return *this;
22352 }
22353 MemoryGetWin32HandleInfoKHR& setPNext( const void* pNext_ )
22354 {
22355 pNext = pNext_;
22356 return *this;
22357 }
22358
22359 MemoryGetWin32HandleInfoKHR& setMemory( DeviceMemory memory_ )
22360 {
22361 memory = memory_;
22362 return *this;
22363 }
22364
22365 MemoryGetWin32HandleInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
22366 {
22367 handleType = handleType_;
22368 return *this;
22369 }
22370
22371 operator const VkMemoryGetWin32HandleInfoKHR&() const
22372 {
22373 return *reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR*>(this);
22374 }
22375
22376 bool operator==( MemoryGetWin32HandleInfoKHR const& rhs ) const
22377 {
22378 return ( sType == rhs.sType )
22379 && ( pNext == rhs.pNext )
22380 && ( memory == rhs.memory )
22381 && ( handleType == rhs.handleType );
22382 }
22383
22384 bool operator!=( MemoryGetWin32HandleInfoKHR const& rhs ) const
22385 {
22386 return !operator==( rhs );
22387 }
22388
22389 private:
22390 StructureType sType;
22391
22392 public:
22393 const void* pNext;
22394 DeviceMemory memory;
22395 ExternalMemoryHandleTypeFlagBitsKHR handleType;
22396 };
22397 static_assert( sizeof( MemoryGetWin32HandleInfoKHR ) == sizeof( VkMemoryGetWin32HandleInfoKHR ), "struct and wrapper have different size!" );
22398#endif /*VK_USE_PLATFORM_WIN32_KHR*/
22399
22400 struct ImportMemoryFdInfoKHR
22401 {
22402 ImportMemoryFdInfoKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd, int fd_ = 0 )
22403 : sType( StructureType::eImportMemoryFdInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022404 , pNext( nullptr )
22405 , handleType( handleType_ )
22406 , fd( fd_ )
22407 {
22408 }
22409
Mark Youngabc2d6e2017-07-07 07:59:56 -060022410 ImportMemoryFdInfoKHR( VkImportMemoryFdInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022411 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022412 memcpy( this, &rhs, sizeof( ImportMemoryFdInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022413 }
22414
Mark Youngabc2d6e2017-07-07 07:59:56 -060022415 ImportMemoryFdInfoKHR& operator=( VkImportMemoryFdInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022416 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022417 memcpy( this, &rhs, sizeof( ImportMemoryFdInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022418 return *this;
22419 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022420 ImportMemoryFdInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022421 {
22422 pNext = pNext_;
22423 return *this;
22424 }
22425
Mark Youngabc2d6e2017-07-07 07:59:56 -060022426 ImportMemoryFdInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022427 {
22428 handleType = handleType_;
22429 return *this;
22430 }
22431
Mark Youngabc2d6e2017-07-07 07:59:56 -060022432 ImportMemoryFdInfoKHR& setFd( int fd_ )
Mark Young0f183a82017-02-28 09:58:04 -070022433 {
22434 fd = fd_;
22435 return *this;
22436 }
22437
Mark Youngabc2d6e2017-07-07 07:59:56 -060022438 operator const VkImportMemoryFdInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022439 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022440 return *reinterpret_cast<const VkImportMemoryFdInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022441 }
22442
Mark Youngabc2d6e2017-07-07 07:59:56 -060022443 bool operator==( ImportMemoryFdInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022444 {
22445 return ( sType == rhs.sType )
22446 && ( pNext == rhs.pNext )
22447 && ( handleType == rhs.handleType )
22448 && ( fd == rhs.fd );
22449 }
22450
Mark Youngabc2d6e2017-07-07 07:59:56 -060022451 bool operator!=( ImportMemoryFdInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022452 {
22453 return !operator==( rhs );
22454 }
22455
22456 private:
22457 StructureType sType;
22458
22459 public:
22460 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022461 ExternalMemoryHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022462 int fd;
22463 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022464 static_assert( sizeof( ImportMemoryFdInfoKHR ) == sizeof( VkImportMemoryFdInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022465
Mark Youngabc2d6e2017-07-07 07:59:56 -060022466 struct MemoryGetFdInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022467 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022468 MemoryGetFdInfoKHR( DeviceMemory memory_ = DeviceMemory(), ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd )
22469 : sType( StructureType::eMemoryGetFdInfoKHR )
22470 , pNext( nullptr )
22471 , memory( memory_ )
22472 , handleType( handleType_ )
22473 {
22474 }
22475
22476 MemoryGetFdInfoKHR( VkMemoryGetFdInfoKHR const & rhs )
22477 {
22478 memcpy( this, &rhs, sizeof( MemoryGetFdInfoKHR ) );
22479 }
22480
22481 MemoryGetFdInfoKHR& operator=( VkMemoryGetFdInfoKHR const & rhs )
22482 {
22483 memcpy( this, &rhs, sizeof( MemoryGetFdInfoKHR ) );
22484 return *this;
22485 }
22486 MemoryGetFdInfoKHR& setPNext( const void* pNext_ )
22487 {
22488 pNext = pNext_;
22489 return *this;
22490 }
22491
22492 MemoryGetFdInfoKHR& setMemory( DeviceMemory memory_ )
22493 {
22494 memory = memory_;
22495 return *this;
22496 }
22497
22498 MemoryGetFdInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
22499 {
22500 handleType = handleType_;
22501 return *this;
22502 }
22503
22504 operator const VkMemoryGetFdInfoKHR&() const
22505 {
22506 return *reinterpret_cast<const VkMemoryGetFdInfoKHR*>(this);
22507 }
22508
22509 bool operator==( MemoryGetFdInfoKHR const& rhs ) const
22510 {
22511 return ( sType == rhs.sType )
22512 && ( pNext == rhs.pNext )
22513 && ( memory == rhs.memory )
22514 && ( handleType == rhs.handleType );
22515 }
22516
22517 bool operator!=( MemoryGetFdInfoKHR const& rhs ) const
22518 {
22519 return !operator==( rhs );
22520 }
22521
22522 private:
22523 StructureType sType;
22524
22525 public:
22526 const void* pNext;
22527 DeviceMemory memory;
22528 ExternalMemoryHandleTypeFlagBitsKHR handleType;
22529 };
22530 static_assert( sizeof( MemoryGetFdInfoKHR ) == sizeof( VkMemoryGetFdInfoKHR ), "struct and wrapper have different size!" );
22531
22532 enum class ExternalMemoryFeatureFlagBitsKHR
22533 {
22534 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR,
22535 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR,
22536 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR
Mark Young0f183a82017-02-28 09:58:04 -070022537 };
22538
Mark Youngabc2d6e2017-07-07 07:59:56 -060022539 using ExternalMemoryFeatureFlagsKHR = Flags<ExternalMemoryFeatureFlagBitsKHR, VkExternalMemoryFeatureFlagsKHR>;
Mark Young0f183a82017-02-28 09:58:04 -070022540
Mark Youngabc2d6e2017-07-07 07:59:56 -060022541 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsKHR operator|( ExternalMemoryFeatureFlagBitsKHR bit0, ExternalMemoryFeatureFlagBitsKHR bit1 )
Mark Young0f183a82017-02-28 09:58:04 -070022542 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022543 return ExternalMemoryFeatureFlagsKHR( bit0 ) | bit1;
Mark Young0f183a82017-02-28 09:58:04 -070022544 }
22545
Mark Youngabc2d6e2017-07-07 07:59:56 -060022546 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsKHR operator~( ExternalMemoryFeatureFlagBitsKHR bits )
Mark Young0f183a82017-02-28 09:58:04 -070022547 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022548 return ~( ExternalMemoryFeatureFlagsKHR( bits ) );
Mark Young0f183a82017-02-28 09:58:04 -070022549 }
22550
Mark Youngabc2d6e2017-07-07 07:59:56 -060022551 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsKHR>
Mark Young0f183a82017-02-28 09:58:04 -070022552 {
22553 enum
22554 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022555 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsKHR::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsKHR::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsKHR::eImportable)
Mark Young0f183a82017-02-28 09:58:04 -070022556 };
22557 };
22558
Mark Youngabc2d6e2017-07-07 07:59:56 -060022559 struct ExternalMemoryPropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070022560 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022561 operator const VkExternalMemoryPropertiesKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022562 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022563 return *reinterpret_cast<const VkExternalMemoryPropertiesKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022564 }
22565
Mark Youngabc2d6e2017-07-07 07:59:56 -060022566 bool operator==( ExternalMemoryPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022567 {
22568 return ( externalMemoryFeatures == rhs.externalMemoryFeatures )
22569 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
22570 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
22571 }
22572
Mark Youngabc2d6e2017-07-07 07:59:56 -060022573 bool operator!=( ExternalMemoryPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022574 {
22575 return !operator==( rhs );
22576 }
22577
Mark Youngabc2d6e2017-07-07 07:59:56 -060022578 ExternalMemoryFeatureFlagsKHR externalMemoryFeatures;
22579 ExternalMemoryHandleTypeFlagsKHR exportFromImportedHandleTypes;
22580 ExternalMemoryHandleTypeFlagsKHR compatibleHandleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070022581 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022582 static_assert( sizeof( ExternalMemoryPropertiesKHR ) == sizeof( VkExternalMemoryPropertiesKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022583
Mark Youngabc2d6e2017-07-07 07:59:56 -060022584 struct ExternalImageFormatPropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070022585 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022586 operator const VkExternalImageFormatPropertiesKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022587 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022588 return *reinterpret_cast<const VkExternalImageFormatPropertiesKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022589 }
22590
Mark Youngabc2d6e2017-07-07 07:59:56 -060022591 bool operator==( ExternalImageFormatPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022592 {
22593 return ( sType == rhs.sType )
22594 && ( pNext == rhs.pNext )
22595 && ( externalMemoryProperties == rhs.externalMemoryProperties );
22596 }
22597
Mark Youngabc2d6e2017-07-07 07:59:56 -060022598 bool operator!=( ExternalImageFormatPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022599 {
22600 return !operator==( rhs );
22601 }
22602
22603 private:
22604 StructureType sType;
22605
22606 public:
22607 void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022608 ExternalMemoryPropertiesKHR externalMemoryProperties;
Mark Young0f183a82017-02-28 09:58:04 -070022609 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022610 static_assert( sizeof( ExternalImageFormatPropertiesKHR ) == sizeof( VkExternalImageFormatPropertiesKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022611
Mark Youngabc2d6e2017-07-07 07:59:56 -060022612 struct ExternalBufferPropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070022613 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022614 operator const VkExternalBufferPropertiesKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022615 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022616 return *reinterpret_cast<const VkExternalBufferPropertiesKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022617 }
22618
Mark Youngabc2d6e2017-07-07 07:59:56 -060022619 bool operator==( ExternalBufferPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022620 {
22621 return ( sType == rhs.sType )
22622 && ( pNext == rhs.pNext )
22623 && ( externalMemoryProperties == rhs.externalMemoryProperties );
22624 }
22625
Mark Youngabc2d6e2017-07-07 07:59:56 -060022626 bool operator!=( ExternalBufferPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022627 {
22628 return !operator==( rhs );
22629 }
22630
22631 private:
22632 StructureType sType;
22633
22634 public:
22635 void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022636 ExternalMemoryPropertiesKHR externalMemoryProperties;
Mark Young0f183a82017-02-28 09:58:04 -070022637 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022638 static_assert( sizeof( ExternalBufferPropertiesKHR ) == sizeof( VkExternalBufferPropertiesKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022639
Mark Youngabc2d6e2017-07-07 07:59:56 -060022640 enum class ExternalSemaphoreHandleTypeFlagBitsKHR
Mark Young0f183a82017-02-28 09:58:04 -070022641 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022642 eOpaqueFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
22643 eOpaqueWin32 = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
22644 eOpaqueWin32Kmt = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
22645 eD3D12Fence = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR,
22646 eSyncFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR
Mark Young0f183a82017-02-28 09:58:04 -070022647 };
22648
Mark Youngabc2d6e2017-07-07 07:59:56 -060022649 using ExternalSemaphoreHandleTypeFlagsKHR = Flags<ExternalSemaphoreHandleTypeFlagBitsKHR, VkExternalSemaphoreHandleTypeFlagsKHR>;
Mark Young0f183a82017-02-28 09:58:04 -070022650
Mark Youngabc2d6e2017-07-07 07:59:56 -060022651 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlagsKHR operator|( ExternalSemaphoreHandleTypeFlagBitsKHR bit0, ExternalSemaphoreHandleTypeFlagBitsKHR bit1 )
Mark Young0f183a82017-02-28 09:58:04 -070022652 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022653 return ExternalSemaphoreHandleTypeFlagsKHR( bit0 ) | bit1;
Mark Young0f183a82017-02-28 09:58:04 -070022654 }
22655
Mark Youngabc2d6e2017-07-07 07:59:56 -060022656 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlagsKHR operator~( ExternalSemaphoreHandleTypeFlagBitsKHR bits )
Mark Young0f183a82017-02-28 09:58:04 -070022657 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022658 return ~( ExternalSemaphoreHandleTypeFlagsKHR( bits ) );
Mark Young0f183a82017-02-28 09:58:04 -070022659 }
22660
Mark Youngabc2d6e2017-07-07 07:59:56 -060022661 template <> struct FlagTraits<ExternalSemaphoreHandleTypeFlagBitsKHR>
Mark Young0f183a82017-02-28 09:58:04 -070022662 {
22663 enum
22664 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022665 allFlags = VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eD3D12Fence) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eSyncFd)
Mark Young0f183a82017-02-28 09:58:04 -070022666 };
22667 };
22668
Mark Youngabc2d6e2017-07-07 07:59:56 -060022669 struct PhysicalDeviceExternalSemaphoreInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022670 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022671 PhysicalDeviceExternalSemaphoreInfoKHR( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd )
22672 : sType( StructureType::ePhysicalDeviceExternalSemaphoreInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022673 , pNext( nullptr )
22674 , handleType( handleType_ )
22675 {
22676 }
22677
Mark Youngabc2d6e2017-07-07 07:59:56 -060022678 PhysicalDeviceExternalSemaphoreInfoKHR( VkPhysicalDeviceExternalSemaphoreInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022679 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022680 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalSemaphoreInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022681 }
22682
Mark Youngabc2d6e2017-07-07 07:59:56 -060022683 PhysicalDeviceExternalSemaphoreInfoKHR& operator=( VkPhysicalDeviceExternalSemaphoreInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022684 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022685 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalSemaphoreInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022686 return *this;
22687 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022688 PhysicalDeviceExternalSemaphoreInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022689 {
22690 pNext = pNext_;
22691 return *this;
22692 }
22693
Mark Youngabc2d6e2017-07-07 07:59:56 -060022694 PhysicalDeviceExternalSemaphoreInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022695 {
22696 handleType = handleType_;
22697 return *this;
22698 }
22699
Mark Youngabc2d6e2017-07-07 07:59:56 -060022700 operator const VkPhysicalDeviceExternalSemaphoreInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022701 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022702 return *reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022703 }
22704
Mark Youngabc2d6e2017-07-07 07:59:56 -060022705 bool operator==( PhysicalDeviceExternalSemaphoreInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022706 {
22707 return ( sType == rhs.sType )
22708 && ( pNext == rhs.pNext )
22709 && ( handleType == rhs.handleType );
22710 }
22711
Mark Youngabc2d6e2017-07-07 07:59:56 -060022712 bool operator!=( PhysicalDeviceExternalSemaphoreInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022713 {
22714 return !operator==( rhs );
22715 }
22716
22717 private:
22718 StructureType sType;
22719
22720 public:
22721 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022722 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022723 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022724 static_assert( sizeof( PhysicalDeviceExternalSemaphoreInfoKHR ) == sizeof( VkPhysicalDeviceExternalSemaphoreInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022725
Mark Youngabc2d6e2017-07-07 07:59:56 -060022726 struct ExportSemaphoreCreateInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022727 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022728 ExportSemaphoreCreateInfoKHR( ExternalSemaphoreHandleTypeFlagsKHR handleTypes_ = ExternalSemaphoreHandleTypeFlagsKHR() )
22729 : sType( StructureType::eExportSemaphoreCreateInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022730 , pNext( nullptr )
22731 , handleTypes( handleTypes_ )
22732 {
22733 }
22734
Mark Youngabc2d6e2017-07-07 07:59:56 -060022735 ExportSemaphoreCreateInfoKHR( VkExportSemaphoreCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022736 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022737 memcpy( this, &rhs, sizeof( ExportSemaphoreCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022738 }
22739
Mark Youngabc2d6e2017-07-07 07:59:56 -060022740 ExportSemaphoreCreateInfoKHR& operator=( VkExportSemaphoreCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022741 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022742 memcpy( this, &rhs, sizeof( ExportSemaphoreCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022743 return *this;
22744 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022745 ExportSemaphoreCreateInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022746 {
22747 pNext = pNext_;
22748 return *this;
22749 }
22750
Mark Youngabc2d6e2017-07-07 07:59:56 -060022751 ExportSemaphoreCreateInfoKHR& setHandleTypes( ExternalSemaphoreHandleTypeFlagsKHR handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070022752 {
22753 handleTypes = handleTypes_;
22754 return *this;
22755 }
22756
Mark Youngabc2d6e2017-07-07 07:59:56 -060022757 operator const VkExportSemaphoreCreateInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022758 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022759 return *reinterpret_cast<const VkExportSemaphoreCreateInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022760 }
22761
Mark Youngabc2d6e2017-07-07 07:59:56 -060022762 bool operator==( ExportSemaphoreCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022763 {
22764 return ( sType == rhs.sType )
22765 && ( pNext == rhs.pNext )
22766 && ( handleTypes == rhs.handleTypes );
22767 }
22768
Mark Youngabc2d6e2017-07-07 07:59:56 -060022769 bool operator!=( ExportSemaphoreCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022770 {
22771 return !operator==( rhs );
22772 }
22773
22774 private:
22775 StructureType sType;
22776
22777 public:
22778 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022779 ExternalSemaphoreHandleTypeFlagsKHR handleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070022780 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022781 static_assert( sizeof( ExportSemaphoreCreateInfoKHR ) == sizeof( VkExportSemaphoreCreateInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022782
Mark Youngabc2d6e2017-07-07 07:59:56 -060022783#ifdef VK_USE_PLATFORM_WIN32_KHR
22784 struct SemaphoreGetWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022785 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022786 SemaphoreGetWin32HandleInfoKHR( Semaphore semaphore_ = Semaphore(), ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd )
22787 : sType( StructureType::eSemaphoreGetWin32HandleInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022788 , pNext( nullptr )
22789 , semaphore( semaphore_ )
22790 , handleType( handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022791 {
22792 }
22793
Mark Youngabc2d6e2017-07-07 07:59:56 -060022794 SemaphoreGetWin32HandleInfoKHR( VkSemaphoreGetWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022795 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022796 memcpy( this, &rhs, sizeof( SemaphoreGetWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022797 }
22798
Mark Youngabc2d6e2017-07-07 07:59:56 -060022799 SemaphoreGetWin32HandleInfoKHR& operator=( VkSemaphoreGetWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022800 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022801 memcpy( this, &rhs, sizeof( SemaphoreGetWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022802 return *this;
22803 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022804 SemaphoreGetWin32HandleInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022805 {
22806 pNext = pNext_;
22807 return *this;
22808 }
22809
Mark Youngabc2d6e2017-07-07 07:59:56 -060022810 SemaphoreGetWin32HandleInfoKHR& setSemaphore( Semaphore semaphore_ )
Mark Young0f183a82017-02-28 09:58:04 -070022811 {
22812 semaphore = semaphore_;
22813 return *this;
22814 }
22815
Mark Youngabc2d6e2017-07-07 07:59:56 -060022816 SemaphoreGetWin32HandleInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022817 {
22818 handleType = handleType_;
22819 return *this;
22820 }
22821
Mark Youngabc2d6e2017-07-07 07:59:56 -060022822 operator const VkSemaphoreGetWin32HandleInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022823 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022824 return *reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022825 }
22826
Mark Youngabc2d6e2017-07-07 07:59:56 -060022827 bool operator==( SemaphoreGetWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022828 {
22829 return ( sType == rhs.sType )
22830 && ( pNext == rhs.pNext )
22831 && ( semaphore == rhs.semaphore )
Mark Youngabc2d6e2017-07-07 07:59:56 -060022832 && ( handleType == rhs.handleType );
Mark Young0f183a82017-02-28 09:58:04 -070022833 }
22834
Mark Youngabc2d6e2017-07-07 07:59:56 -060022835 bool operator!=( SemaphoreGetWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022836 {
22837 return !operator==( rhs );
22838 }
22839
22840 private:
22841 StructureType sType;
22842
22843 public:
22844 const void* pNext;
22845 Semaphore semaphore;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022846 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022847 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022848 static_assert( sizeof( SemaphoreGetWin32HandleInfoKHR ) == sizeof( VkSemaphoreGetWin32HandleInfoKHR ), "struct and wrapper have different size!" );
22849#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070022850
Mark Youngabc2d6e2017-07-07 07:59:56 -060022851 struct SemaphoreGetFdInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022852 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022853 SemaphoreGetFdInfoKHR( Semaphore semaphore_ = Semaphore(), ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd )
22854 : sType( StructureType::eSemaphoreGetFdInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022855 , pNext( nullptr )
22856 , semaphore( semaphore_ )
22857 , handleType( handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022858 {
22859 }
22860
Mark Youngabc2d6e2017-07-07 07:59:56 -060022861 SemaphoreGetFdInfoKHR( VkSemaphoreGetFdInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022862 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022863 memcpy( this, &rhs, sizeof( SemaphoreGetFdInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022864 }
22865
Mark Youngabc2d6e2017-07-07 07:59:56 -060022866 SemaphoreGetFdInfoKHR& operator=( VkSemaphoreGetFdInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022867 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022868 memcpy( this, &rhs, sizeof( SemaphoreGetFdInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022869 return *this;
22870 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022871 SemaphoreGetFdInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022872 {
22873 pNext = pNext_;
22874 return *this;
22875 }
22876
Mark Youngabc2d6e2017-07-07 07:59:56 -060022877 SemaphoreGetFdInfoKHR& setSemaphore( Semaphore semaphore_ )
Mark Young0f183a82017-02-28 09:58:04 -070022878 {
22879 semaphore = semaphore_;
22880 return *this;
22881 }
22882
Mark Youngabc2d6e2017-07-07 07:59:56 -060022883 SemaphoreGetFdInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022884 {
22885 handleType = handleType_;
22886 return *this;
22887 }
22888
Mark Youngabc2d6e2017-07-07 07:59:56 -060022889 operator const VkSemaphoreGetFdInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022890 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022891 return *reinterpret_cast<const VkSemaphoreGetFdInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022892 }
22893
Mark Youngabc2d6e2017-07-07 07:59:56 -060022894 bool operator==( SemaphoreGetFdInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022895 {
22896 return ( sType == rhs.sType )
22897 && ( pNext == rhs.pNext )
22898 && ( semaphore == rhs.semaphore )
Mark Youngabc2d6e2017-07-07 07:59:56 -060022899 && ( handleType == rhs.handleType );
Mark Young0f183a82017-02-28 09:58:04 -070022900 }
22901
Mark Youngabc2d6e2017-07-07 07:59:56 -060022902 bool operator!=( SemaphoreGetFdInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022903 {
22904 return !operator==( rhs );
22905 }
22906
22907 private:
22908 StructureType sType;
22909
22910 public:
22911 const void* pNext;
22912 Semaphore semaphore;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022913 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022914 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022915 static_assert( sizeof( SemaphoreGetFdInfoKHR ) == sizeof( VkSemaphoreGetFdInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022916
Mark Youngabc2d6e2017-07-07 07:59:56 -060022917 enum class ExternalSemaphoreFeatureFlagBitsKHR
Mark Young0f183a82017-02-28 09:58:04 -070022918 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022919 eExportable = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR,
22920 eImportable = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR
Mark Young0f183a82017-02-28 09:58:04 -070022921 };
22922
Mark Youngabc2d6e2017-07-07 07:59:56 -060022923 using ExternalSemaphoreFeatureFlagsKHR = Flags<ExternalSemaphoreFeatureFlagBitsKHR, VkExternalSemaphoreFeatureFlagsKHR>;
Mark Young0f183a82017-02-28 09:58:04 -070022924
Mark Youngabc2d6e2017-07-07 07:59:56 -060022925 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlagsKHR operator|( ExternalSemaphoreFeatureFlagBitsKHR bit0, ExternalSemaphoreFeatureFlagBitsKHR bit1 )
Mark Young0f183a82017-02-28 09:58:04 -070022926 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022927 return ExternalSemaphoreFeatureFlagsKHR( bit0 ) | bit1;
Mark Young0f183a82017-02-28 09:58:04 -070022928 }
22929
Mark Youngabc2d6e2017-07-07 07:59:56 -060022930 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlagsKHR operator~( ExternalSemaphoreFeatureFlagBitsKHR bits )
Mark Young0f183a82017-02-28 09:58:04 -070022931 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022932 return ~( ExternalSemaphoreFeatureFlagsKHR( bits ) );
Mark Young0f183a82017-02-28 09:58:04 -070022933 }
22934
Mark Youngabc2d6e2017-07-07 07:59:56 -060022935 template <> struct FlagTraits<ExternalSemaphoreFeatureFlagBitsKHR>
Mark Young0f183a82017-02-28 09:58:04 -070022936 {
22937 enum
22938 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022939 allFlags = VkFlags(ExternalSemaphoreFeatureFlagBitsKHR::eExportable) | VkFlags(ExternalSemaphoreFeatureFlagBitsKHR::eImportable)
Mark Young0f183a82017-02-28 09:58:04 -070022940 };
22941 };
22942
Mark Youngabc2d6e2017-07-07 07:59:56 -060022943 struct ExternalSemaphorePropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070022944 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022945 operator const VkExternalSemaphorePropertiesKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022946 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022947 return *reinterpret_cast<const VkExternalSemaphorePropertiesKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022948 }
22949
Mark Youngabc2d6e2017-07-07 07:59:56 -060022950 bool operator==( ExternalSemaphorePropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022951 {
22952 return ( sType == rhs.sType )
22953 && ( pNext == rhs.pNext )
22954 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
22955 && ( compatibleHandleTypes == rhs.compatibleHandleTypes )
22956 && ( externalSemaphoreFeatures == rhs.externalSemaphoreFeatures );
22957 }
22958
Mark Youngabc2d6e2017-07-07 07:59:56 -060022959 bool operator!=( ExternalSemaphorePropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022960 {
22961 return !operator==( rhs );
22962 }
22963
22964 private:
22965 StructureType sType;
22966
22967 public:
22968 void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022969 ExternalSemaphoreHandleTypeFlagsKHR exportFromImportedHandleTypes;
22970 ExternalSemaphoreHandleTypeFlagsKHR compatibleHandleTypes;
22971 ExternalSemaphoreFeatureFlagsKHR externalSemaphoreFeatures;
Mark Young0f183a82017-02-28 09:58:04 -070022972 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022973 static_assert( sizeof( ExternalSemaphorePropertiesKHR ) == sizeof( VkExternalSemaphorePropertiesKHR ), "struct and wrapper have different size!" );
22974
22975 enum class SemaphoreImportFlagBitsKHR
22976 {
22977 eTemporary = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR
22978 };
22979
22980 using SemaphoreImportFlagsKHR = Flags<SemaphoreImportFlagBitsKHR, VkSemaphoreImportFlagsKHR>;
22981
22982 VULKAN_HPP_INLINE SemaphoreImportFlagsKHR operator|( SemaphoreImportFlagBitsKHR bit0, SemaphoreImportFlagBitsKHR bit1 )
22983 {
22984 return SemaphoreImportFlagsKHR( bit0 ) | bit1;
22985 }
22986
22987 VULKAN_HPP_INLINE SemaphoreImportFlagsKHR operator~( SemaphoreImportFlagBitsKHR bits )
22988 {
22989 return ~( SemaphoreImportFlagsKHR( bits ) );
22990 }
22991
22992 template <> struct FlagTraits<SemaphoreImportFlagBitsKHR>
22993 {
22994 enum
22995 {
22996 allFlags = VkFlags(SemaphoreImportFlagBitsKHR::eTemporary)
22997 };
22998 };
22999
23000#ifdef VK_USE_PLATFORM_WIN32_KHR
23001 struct ImportSemaphoreWin32HandleInfoKHR
23002 {
23003 ImportSemaphoreWin32HandleInfoKHR( Semaphore semaphore_ = Semaphore(), SemaphoreImportFlagsKHR flags_ = SemaphoreImportFlagsKHR(), ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd, HANDLE handle_ = 0, LPCWSTR name_ = 0 )
23004 : sType( StructureType::eImportSemaphoreWin32HandleInfoKHR )
23005 , pNext( nullptr )
23006 , semaphore( semaphore_ )
23007 , flags( flags_ )
23008 , handleType( handleType_ )
23009 , handle( handle_ )
23010 , name( name_ )
23011 {
23012 }
23013
23014 ImportSemaphoreWin32HandleInfoKHR( VkImportSemaphoreWin32HandleInfoKHR const & rhs )
23015 {
23016 memcpy( this, &rhs, sizeof( ImportSemaphoreWin32HandleInfoKHR ) );
23017 }
23018
23019 ImportSemaphoreWin32HandleInfoKHR& operator=( VkImportSemaphoreWin32HandleInfoKHR const & rhs )
23020 {
23021 memcpy( this, &rhs, sizeof( ImportSemaphoreWin32HandleInfoKHR ) );
23022 return *this;
23023 }
23024 ImportSemaphoreWin32HandleInfoKHR& setPNext( const void* pNext_ )
23025 {
23026 pNext = pNext_;
23027 return *this;
23028 }
23029
23030 ImportSemaphoreWin32HandleInfoKHR& setSemaphore( Semaphore semaphore_ )
23031 {
23032 semaphore = semaphore_;
23033 return *this;
23034 }
23035
23036 ImportSemaphoreWin32HandleInfoKHR& setFlags( SemaphoreImportFlagsKHR flags_ )
23037 {
23038 flags = flags_;
23039 return *this;
23040 }
23041
23042 ImportSemaphoreWin32HandleInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
23043 {
23044 handleType = handleType_;
23045 return *this;
23046 }
23047
23048 ImportSemaphoreWin32HandleInfoKHR& setHandle( HANDLE handle_ )
23049 {
23050 handle = handle_;
23051 return *this;
23052 }
23053
23054 ImportSemaphoreWin32HandleInfoKHR& setName( LPCWSTR name_ )
23055 {
23056 name = name_;
23057 return *this;
23058 }
23059
23060 operator const VkImportSemaphoreWin32HandleInfoKHR&() const
23061 {
23062 return *reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR*>(this);
23063 }
23064
23065 bool operator==( ImportSemaphoreWin32HandleInfoKHR const& rhs ) const
23066 {
23067 return ( sType == rhs.sType )
23068 && ( pNext == rhs.pNext )
23069 && ( semaphore == rhs.semaphore )
23070 && ( flags == rhs.flags )
23071 && ( handleType == rhs.handleType )
23072 && ( handle == rhs.handle )
23073 && ( name == rhs.name );
23074 }
23075
23076 bool operator!=( ImportSemaphoreWin32HandleInfoKHR const& rhs ) const
23077 {
23078 return !operator==( rhs );
23079 }
23080
23081 private:
23082 StructureType sType;
23083
23084 public:
23085 const void* pNext;
23086 Semaphore semaphore;
23087 SemaphoreImportFlagsKHR flags;
23088 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
23089 HANDLE handle;
23090 LPCWSTR name;
23091 };
23092 static_assert( sizeof( ImportSemaphoreWin32HandleInfoKHR ) == sizeof( VkImportSemaphoreWin32HandleInfoKHR ), "struct and wrapper have different size!" );
23093#endif /*VK_USE_PLATFORM_WIN32_KHR*/
23094
23095 struct ImportSemaphoreFdInfoKHR
23096 {
23097 ImportSemaphoreFdInfoKHR( Semaphore semaphore_ = Semaphore(), SemaphoreImportFlagsKHR flags_ = SemaphoreImportFlagsKHR(), ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd, int fd_ = 0 )
23098 : sType( StructureType::eImportSemaphoreFdInfoKHR )
23099 , pNext( nullptr )
23100 , semaphore( semaphore_ )
23101 , flags( flags_ )
23102 , handleType( handleType_ )
23103 , fd( fd_ )
23104 {
23105 }
23106
23107 ImportSemaphoreFdInfoKHR( VkImportSemaphoreFdInfoKHR const & rhs )
23108 {
23109 memcpy( this, &rhs, sizeof( ImportSemaphoreFdInfoKHR ) );
23110 }
23111
23112 ImportSemaphoreFdInfoKHR& operator=( VkImportSemaphoreFdInfoKHR const & rhs )
23113 {
23114 memcpy( this, &rhs, sizeof( ImportSemaphoreFdInfoKHR ) );
23115 return *this;
23116 }
23117 ImportSemaphoreFdInfoKHR& setPNext( const void* pNext_ )
23118 {
23119 pNext = pNext_;
23120 return *this;
23121 }
23122
23123 ImportSemaphoreFdInfoKHR& setSemaphore( Semaphore semaphore_ )
23124 {
23125 semaphore = semaphore_;
23126 return *this;
23127 }
23128
23129 ImportSemaphoreFdInfoKHR& setFlags( SemaphoreImportFlagsKHR flags_ )
23130 {
23131 flags = flags_;
23132 return *this;
23133 }
23134
23135 ImportSemaphoreFdInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
23136 {
23137 handleType = handleType_;
23138 return *this;
23139 }
23140
23141 ImportSemaphoreFdInfoKHR& setFd( int fd_ )
23142 {
23143 fd = fd_;
23144 return *this;
23145 }
23146
23147 operator const VkImportSemaphoreFdInfoKHR&() const
23148 {
23149 return *reinterpret_cast<const VkImportSemaphoreFdInfoKHR*>(this);
23150 }
23151
23152 bool operator==( ImportSemaphoreFdInfoKHR const& rhs ) const
23153 {
23154 return ( sType == rhs.sType )
23155 && ( pNext == rhs.pNext )
23156 && ( semaphore == rhs.semaphore )
23157 && ( flags == rhs.flags )
23158 && ( handleType == rhs.handleType )
23159 && ( fd == rhs.fd );
23160 }
23161
23162 bool operator!=( ImportSemaphoreFdInfoKHR const& rhs ) const
23163 {
23164 return !operator==( rhs );
23165 }
23166
23167 private:
23168 StructureType sType;
23169
23170 public:
23171 const void* pNext;
23172 Semaphore semaphore;
23173 SemaphoreImportFlagsKHR flags;
23174 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
23175 int fd;
23176 };
23177 static_assert( sizeof( ImportSemaphoreFdInfoKHR ) == sizeof( VkImportSemaphoreFdInfoKHR ), "struct and wrapper have different size!" );
23178
23179 enum class ExternalFenceHandleTypeFlagBitsKHR
23180 {
23181 eOpaqueFd = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
23182 eOpaqueWin32 = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
23183 eOpaqueWin32Kmt = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
23184 eSyncFd = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR
23185 };
23186
23187 using ExternalFenceHandleTypeFlagsKHR = Flags<ExternalFenceHandleTypeFlagBitsKHR, VkExternalFenceHandleTypeFlagsKHR>;
23188
23189 VULKAN_HPP_INLINE ExternalFenceHandleTypeFlagsKHR operator|( ExternalFenceHandleTypeFlagBitsKHR bit0, ExternalFenceHandleTypeFlagBitsKHR bit1 )
23190 {
23191 return ExternalFenceHandleTypeFlagsKHR( bit0 ) | bit1;
23192 }
23193
23194 VULKAN_HPP_INLINE ExternalFenceHandleTypeFlagsKHR operator~( ExternalFenceHandleTypeFlagBitsKHR bits )
23195 {
23196 return ~( ExternalFenceHandleTypeFlagsKHR( bits ) );
23197 }
23198
23199 template <> struct FlagTraits<ExternalFenceHandleTypeFlagBitsKHR>
23200 {
23201 enum
23202 {
23203 allFlags = VkFlags(ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd) | VkFlags(ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32) | VkFlags(ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) | VkFlags(ExternalFenceHandleTypeFlagBitsKHR::eSyncFd)
23204 };
23205 };
23206
23207 struct PhysicalDeviceExternalFenceInfoKHR
23208 {
23209 PhysicalDeviceExternalFenceInfoKHR( ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd )
23210 : sType( StructureType::ePhysicalDeviceExternalFenceInfoKHR )
23211 , pNext( nullptr )
23212 , handleType( handleType_ )
23213 {
23214 }
23215
23216 PhysicalDeviceExternalFenceInfoKHR( VkPhysicalDeviceExternalFenceInfoKHR const & rhs )
23217 {
23218 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalFenceInfoKHR ) );
23219 }
23220
23221 PhysicalDeviceExternalFenceInfoKHR& operator=( VkPhysicalDeviceExternalFenceInfoKHR const & rhs )
23222 {
23223 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalFenceInfoKHR ) );
23224 return *this;
23225 }
23226 PhysicalDeviceExternalFenceInfoKHR& setPNext( const void* pNext_ )
23227 {
23228 pNext = pNext_;
23229 return *this;
23230 }
23231
23232 PhysicalDeviceExternalFenceInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
23233 {
23234 handleType = handleType_;
23235 return *this;
23236 }
23237
23238 operator const VkPhysicalDeviceExternalFenceInfoKHR&() const
23239 {
23240 return *reinterpret_cast<const VkPhysicalDeviceExternalFenceInfoKHR*>(this);
23241 }
23242
23243 bool operator==( PhysicalDeviceExternalFenceInfoKHR const& rhs ) const
23244 {
23245 return ( sType == rhs.sType )
23246 && ( pNext == rhs.pNext )
23247 && ( handleType == rhs.handleType );
23248 }
23249
23250 bool operator!=( PhysicalDeviceExternalFenceInfoKHR const& rhs ) const
23251 {
23252 return !operator==( rhs );
23253 }
23254
23255 private:
23256 StructureType sType;
23257
23258 public:
23259 const void* pNext;
23260 ExternalFenceHandleTypeFlagBitsKHR handleType;
23261 };
23262 static_assert( sizeof( PhysicalDeviceExternalFenceInfoKHR ) == sizeof( VkPhysicalDeviceExternalFenceInfoKHR ), "struct and wrapper have different size!" );
23263
23264 struct ExportFenceCreateInfoKHR
23265 {
23266 ExportFenceCreateInfoKHR( ExternalFenceHandleTypeFlagsKHR handleTypes_ = ExternalFenceHandleTypeFlagsKHR() )
23267 : sType( StructureType::eExportFenceCreateInfoKHR )
23268 , pNext( nullptr )
23269 , handleTypes( handleTypes_ )
23270 {
23271 }
23272
23273 ExportFenceCreateInfoKHR( VkExportFenceCreateInfoKHR const & rhs )
23274 {
23275 memcpy( this, &rhs, sizeof( ExportFenceCreateInfoKHR ) );
23276 }
23277
23278 ExportFenceCreateInfoKHR& operator=( VkExportFenceCreateInfoKHR const & rhs )
23279 {
23280 memcpy( this, &rhs, sizeof( ExportFenceCreateInfoKHR ) );
23281 return *this;
23282 }
23283 ExportFenceCreateInfoKHR& setPNext( const void* pNext_ )
23284 {
23285 pNext = pNext_;
23286 return *this;
23287 }
23288
23289 ExportFenceCreateInfoKHR& setHandleTypes( ExternalFenceHandleTypeFlagsKHR handleTypes_ )
23290 {
23291 handleTypes = handleTypes_;
23292 return *this;
23293 }
23294
23295 operator const VkExportFenceCreateInfoKHR&() const
23296 {
23297 return *reinterpret_cast<const VkExportFenceCreateInfoKHR*>(this);
23298 }
23299
23300 bool operator==( ExportFenceCreateInfoKHR const& rhs ) const
23301 {
23302 return ( sType == rhs.sType )
23303 && ( pNext == rhs.pNext )
23304 && ( handleTypes == rhs.handleTypes );
23305 }
23306
23307 bool operator!=( ExportFenceCreateInfoKHR const& rhs ) const
23308 {
23309 return !operator==( rhs );
23310 }
23311
23312 private:
23313 StructureType sType;
23314
23315 public:
23316 const void* pNext;
23317 ExternalFenceHandleTypeFlagsKHR handleTypes;
23318 };
23319 static_assert( sizeof( ExportFenceCreateInfoKHR ) == sizeof( VkExportFenceCreateInfoKHR ), "struct and wrapper have different size!" );
23320
23321#ifdef VK_USE_PLATFORM_WIN32_KHR
23322 struct FenceGetWin32HandleInfoKHR
23323 {
23324 FenceGetWin32HandleInfoKHR( Fence fence_ = Fence(), ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd )
23325 : sType( StructureType::eFenceGetWin32HandleInfoKHR )
23326 , pNext( nullptr )
23327 , fence( fence_ )
23328 , handleType( handleType_ )
23329 {
23330 }
23331
23332 FenceGetWin32HandleInfoKHR( VkFenceGetWin32HandleInfoKHR const & rhs )
23333 {
23334 memcpy( this, &rhs, sizeof( FenceGetWin32HandleInfoKHR ) );
23335 }
23336
23337 FenceGetWin32HandleInfoKHR& operator=( VkFenceGetWin32HandleInfoKHR const & rhs )
23338 {
23339 memcpy( this, &rhs, sizeof( FenceGetWin32HandleInfoKHR ) );
23340 return *this;
23341 }
23342 FenceGetWin32HandleInfoKHR& setPNext( const void* pNext_ )
23343 {
23344 pNext = pNext_;
23345 return *this;
23346 }
23347
23348 FenceGetWin32HandleInfoKHR& setFence( Fence fence_ )
23349 {
23350 fence = fence_;
23351 return *this;
23352 }
23353
23354 FenceGetWin32HandleInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
23355 {
23356 handleType = handleType_;
23357 return *this;
23358 }
23359
23360 operator const VkFenceGetWin32HandleInfoKHR&() const
23361 {
23362 return *reinterpret_cast<const VkFenceGetWin32HandleInfoKHR*>(this);
23363 }
23364
23365 bool operator==( FenceGetWin32HandleInfoKHR const& rhs ) const
23366 {
23367 return ( sType == rhs.sType )
23368 && ( pNext == rhs.pNext )
23369 && ( fence == rhs.fence )
23370 && ( handleType == rhs.handleType );
23371 }
23372
23373 bool operator!=( FenceGetWin32HandleInfoKHR const& rhs ) const
23374 {
23375 return !operator==( rhs );
23376 }
23377
23378 private:
23379 StructureType sType;
23380
23381 public:
23382 const void* pNext;
23383 Fence fence;
23384 ExternalFenceHandleTypeFlagBitsKHR handleType;
23385 };
23386 static_assert( sizeof( FenceGetWin32HandleInfoKHR ) == sizeof( VkFenceGetWin32HandleInfoKHR ), "struct and wrapper have different size!" );
23387#endif /*VK_USE_PLATFORM_WIN32_KHR*/
23388
23389 struct FenceGetFdInfoKHR
23390 {
23391 FenceGetFdInfoKHR( Fence fence_ = Fence(), ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd )
23392 : sType( StructureType::eFenceGetFdInfoKHR )
23393 , pNext( nullptr )
23394 , fence( fence_ )
23395 , handleType( handleType_ )
23396 {
23397 }
23398
23399 FenceGetFdInfoKHR( VkFenceGetFdInfoKHR const & rhs )
23400 {
23401 memcpy( this, &rhs, sizeof( FenceGetFdInfoKHR ) );
23402 }
23403
23404 FenceGetFdInfoKHR& operator=( VkFenceGetFdInfoKHR const & rhs )
23405 {
23406 memcpy( this, &rhs, sizeof( FenceGetFdInfoKHR ) );
23407 return *this;
23408 }
23409 FenceGetFdInfoKHR& setPNext( const void* pNext_ )
23410 {
23411 pNext = pNext_;
23412 return *this;
23413 }
23414
23415 FenceGetFdInfoKHR& setFence( Fence fence_ )
23416 {
23417 fence = fence_;
23418 return *this;
23419 }
23420
23421 FenceGetFdInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
23422 {
23423 handleType = handleType_;
23424 return *this;
23425 }
23426
23427 operator const VkFenceGetFdInfoKHR&() const
23428 {
23429 return *reinterpret_cast<const VkFenceGetFdInfoKHR*>(this);
23430 }
23431
23432 bool operator==( FenceGetFdInfoKHR const& rhs ) const
23433 {
23434 return ( sType == rhs.sType )
23435 && ( pNext == rhs.pNext )
23436 && ( fence == rhs.fence )
23437 && ( handleType == rhs.handleType );
23438 }
23439
23440 bool operator!=( FenceGetFdInfoKHR const& rhs ) const
23441 {
23442 return !operator==( rhs );
23443 }
23444
23445 private:
23446 StructureType sType;
23447
23448 public:
23449 const void* pNext;
23450 Fence fence;
23451 ExternalFenceHandleTypeFlagBitsKHR handleType;
23452 };
23453 static_assert( sizeof( FenceGetFdInfoKHR ) == sizeof( VkFenceGetFdInfoKHR ), "struct and wrapper have different size!" );
23454
23455 enum class ExternalFenceFeatureFlagBitsKHR
23456 {
23457 eExportable = VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR,
23458 eImportable = VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR
23459 };
23460
23461 using ExternalFenceFeatureFlagsKHR = Flags<ExternalFenceFeatureFlagBitsKHR, VkExternalFenceFeatureFlagsKHR>;
23462
23463 VULKAN_HPP_INLINE ExternalFenceFeatureFlagsKHR operator|( ExternalFenceFeatureFlagBitsKHR bit0, ExternalFenceFeatureFlagBitsKHR bit1 )
23464 {
23465 return ExternalFenceFeatureFlagsKHR( bit0 ) | bit1;
23466 }
23467
23468 VULKAN_HPP_INLINE ExternalFenceFeatureFlagsKHR operator~( ExternalFenceFeatureFlagBitsKHR bits )
23469 {
23470 return ~( ExternalFenceFeatureFlagsKHR( bits ) );
23471 }
23472
23473 template <> struct FlagTraits<ExternalFenceFeatureFlagBitsKHR>
23474 {
23475 enum
23476 {
23477 allFlags = VkFlags(ExternalFenceFeatureFlagBitsKHR::eExportable) | VkFlags(ExternalFenceFeatureFlagBitsKHR::eImportable)
23478 };
23479 };
23480
23481 struct ExternalFencePropertiesKHR
23482 {
23483 operator const VkExternalFencePropertiesKHR&() const
23484 {
23485 return *reinterpret_cast<const VkExternalFencePropertiesKHR*>(this);
23486 }
23487
23488 bool operator==( ExternalFencePropertiesKHR const& rhs ) const
23489 {
23490 return ( sType == rhs.sType )
23491 && ( pNext == rhs.pNext )
23492 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
23493 && ( compatibleHandleTypes == rhs.compatibleHandleTypes )
23494 && ( externalFenceFeatures == rhs.externalFenceFeatures );
23495 }
23496
23497 bool operator!=( ExternalFencePropertiesKHR const& rhs ) const
23498 {
23499 return !operator==( rhs );
23500 }
23501
23502 private:
23503 StructureType sType;
23504
23505 public:
23506 void* pNext;
23507 ExternalFenceHandleTypeFlagsKHR exportFromImportedHandleTypes;
23508 ExternalFenceHandleTypeFlagsKHR compatibleHandleTypes;
23509 ExternalFenceFeatureFlagsKHR externalFenceFeatures;
23510 };
23511 static_assert( sizeof( ExternalFencePropertiesKHR ) == sizeof( VkExternalFencePropertiesKHR ), "struct and wrapper have different size!" );
23512
23513 enum class FenceImportFlagBitsKHR
23514 {
23515 eTemporary = VK_FENCE_IMPORT_TEMPORARY_BIT_KHR
23516 };
23517
23518 using FenceImportFlagsKHR = Flags<FenceImportFlagBitsKHR, VkFenceImportFlagsKHR>;
23519
23520 VULKAN_HPP_INLINE FenceImportFlagsKHR operator|( FenceImportFlagBitsKHR bit0, FenceImportFlagBitsKHR bit1 )
23521 {
23522 return FenceImportFlagsKHR( bit0 ) | bit1;
23523 }
23524
23525 VULKAN_HPP_INLINE FenceImportFlagsKHR operator~( FenceImportFlagBitsKHR bits )
23526 {
23527 return ~( FenceImportFlagsKHR( bits ) );
23528 }
23529
23530 template <> struct FlagTraits<FenceImportFlagBitsKHR>
23531 {
23532 enum
23533 {
23534 allFlags = VkFlags(FenceImportFlagBitsKHR::eTemporary)
23535 };
23536 };
23537
23538#ifdef VK_USE_PLATFORM_WIN32_KHR
23539 struct ImportFenceWin32HandleInfoKHR
23540 {
23541 ImportFenceWin32HandleInfoKHR( Fence fence_ = Fence(), FenceImportFlagsKHR flags_ = FenceImportFlagsKHR(), ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd, HANDLE handle_ = 0, LPCWSTR name_ = 0 )
23542 : sType( StructureType::eImportFenceWin32HandleInfoKHR )
23543 , pNext( nullptr )
23544 , fence( fence_ )
23545 , flags( flags_ )
23546 , handleType( handleType_ )
23547 , handle( handle_ )
23548 , name( name_ )
23549 {
23550 }
23551
23552 ImportFenceWin32HandleInfoKHR( VkImportFenceWin32HandleInfoKHR const & rhs )
23553 {
23554 memcpy( this, &rhs, sizeof( ImportFenceWin32HandleInfoKHR ) );
23555 }
23556
23557 ImportFenceWin32HandleInfoKHR& operator=( VkImportFenceWin32HandleInfoKHR const & rhs )
23558 {
23559 memcpy( this, &rhs, sizeof( ImportFenceWin32HandleInfoKHR ) );
23560 return *this;
23561 }
23562 ImportFenceWin32HandleInfoKHR& setPNext( const void* pNext_ )
23563 {
23564 pNext = pNext_;
23565 return *this;
23566 }
23567
23568 ImportFenceWin32HandleInfoKHR& setFence( Fence fence_ )
23569 {
23570 fence = fence_;
23571 return *this;
23572 }
23573
23574 ImportFenceWin32HandleInfoKHR& setFlags( FenceImportFlagsKHR flags_ )
23575 {
23576 flags = flags_;
23577 return *this;
23578 }
23579
23580 ImportFenceWin32HandleInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
23581 {
23582 handleType = handleType_;
23583 return *this;
23584 }
23585
23586 ImportFenceWin32HandleInfoKHR& setHandle( HANDLE handle_ )
23587 {
23588 handle = handle_;
23589 return *this;
23590 }
23591
23592 ImportFenceWin32HandleInfoKHR& setName( LPCWSTR name_ )
23593 {
23594 name = name_;
23595 return *this;
23596 }
23597
23598 operator const VkImportFenceWin32HandleInfoKHR&() const
23599 {
23600 return *reinterpret_cast<const VkImportFenceWin32HandleInfoKHR*>(this);
23601 }
23602
23603 bool operator==( ImportFenceWin32HandleInfoKHR const& rhs ) const
23604 {
23605 return ( sType == rhs.sType )
23606 && ( pNext == rhs.pNext )
23607 && ( fence == rhs.fence )
23608 && ( flags == rhs.flags )
23609 && ( handleType == rhs.handleType )
23610 && ( handle == rhs.handle )
23611 && ( name == rhs.name );
23612 }
23613
23614 bool operator!=( ImportFenceWin32HandleInfoKHR const& rhs ) const
23615 {
23616 return !operator==( rhs );
23617 }
23618
23619 private:
23620 StructureType sType;
23621
23622 public:
23623 const void* pNext;
23624 Fence fence;
23625 FenceImportFlagsKHR flags;
23626 ExternalFenceHandleTypeFlagBitsKHR handleType;
23627 HANDLE handle;
23628 LPCWSTR name;
23629 };
23630 static_assert( sizeof( ImportFenceWin32HandleInfoKHR ) == sizeof( VkImportFenceWin32HandleInfoKHR ), "struct and wrapper have different size!" );
23631#endif /*VK_USE_PLATFORM_WIN32_KHR*/
23632
23633 struct ImportFenceFdInfoKHR
23634 {
23635 ImportFenceFdInfoKHR( Fence fence_ = Fence(), FenceImportFlagsKHR flags_ = FenceImportFlagsKHR(), ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd, int fd_ = 0 )
23636 : sType( StructureType::eImportFenceFdInfoKHR )
23637 , pNext( nullptr )
23638 , fence( fence_ )
23639 , flags( flags_ )
23640 , handleType( handleType_ )
23641 , fd( fd_ )
23642 {
23643 }
23644
23645 ImportFenceFdInfoKHR( VkImportFenceFdInfoKHR const & rhs )
23646 {
23647 memcpy( this, &rhs, sizeof( ImportFenceFdInfoKHR ) );
23648 }
23649
23650 ImportFenceFdInfoKHR& operator=( VkImportFenceFdInfoKHR const & rhs )
23651 {
23652 memcpy( this, &rhs, sizeof( ImportFenceFdInfoKHR ) );
23653 return *this;
23654 }
23655 ImportFenceFdInfoKHR& setPNext( const void* pNext_ )
23656 {
23657 pNext = pNext_;
23658 return *this;
23659 }
23660
23661 ImportFenceFdInfoKHR& setFence( Fence fence_ )
23662 {
23663 fence = fence_;
23664 return *this;
23665 }
23666
23667 ImportFenceFdInfoKHR& setFlags( FenceImportFlagsKHR flags_ )
23668 {
23669 flags = flags_;
23670 return *this;
23671 }
23672
23673 ImportFenceFdInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
23674 {
23675 handleType = handleType_;
23676 return *this;
23677 }
23678
23679 ImportFenceFdInfoKHR& setFd( int fd_ )
23680 {
23681 fd = fd_;
23682 return *this;
23683 }
23684
23685 operator const VkImportFenceFdInfoKHR&() const
23686 {
23687 return *reinterpret_cast<const VkImportFenceFdInfoKHR*>(this);
23688 }
23689
23690 bool operator==( ImportFenceFdInfoKHR const& rhs ) const
23691 {
23692 return ( sType == rhs.sType )
23693 && ( pNext == rhs.pNext )
23694 && ( fence == rhs.fence )
23695 && ( flags == rhs.flags )
23696 && ( handleType == rhs.handleType )
23697 && ( fd == rhs.fd );
23698 }
23699
23700 bool operator!=( ImportFenceFdInfoKHR const& rhs ) const
23701 {
23702 return !operator==( rhs );
23703 }
23704
23705 private:
23706 StructureType sType;
23707
23708 public:
23709 const void* pNext;
23710 Fence fence;
23711 FenceImportFlagsKHR flags;
23712 ExternalFenceHandleTypeFlagBitsKHR handleType;
23713 int fd;
23714 };
23715 static_assert( sizeof( ImportFenceFdInfoKHR ) == sizeof( VkImportFenceFdInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070023716
Mark Young39389872017-01-19 21:10:49 -070023717 enum class SurfaceCounterFlagBitsEXT
23718 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060023719 eVblank = VK_SURFACE_COUNTER_VBLANK_EXT
Mark Young39389872017-01-19 21:10:49 -070023720 };
23721
23722 using SurfaceCounterFlagsEXT = Flags<SurfaceCounterFlagBitsEXT, VkSurfaceCounterFlagsEXT>;
23723
23724 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator|( SurfaceCounterFlagBitsEXT bit0, SurfaceCounterFlagBitsEXT bit1 )
23725 {
23726 return SurfaceCounterFlagsEXT( bit0 ) | bit1;
23727 }
23728
23729 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator~( SurfaceCounterFlagBitsEXT bits )
23730 {
23731 return ~( SurfaceCounterFlagsEXT( bits ) );
23732 }
23733
23734 template <> struct FlagTraits<SurfaceCounterFlagBitsEXT>
23735 {
23736 enum
23737 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060023738 allFlags = VkFlags(SurfaceCounterFlagBitsEXT::eVblank)
Mark Young39389872017-01-19 21:10:49 -070023739 };
23740 };
23741
23742 struct SurfaceCapabilities2EXT
23743 {
23744 operator const VkSurfaceCapabilities2EXT&() const
23745 {
23746 return *reinterpret_cast<const VkSurfaceCapabilities2EXT*>(this);
23747 }
23748
23749 bool operator==( SurfaceCapabilities2EXT const& rhs ) const
23750 {
23751 return ( sType == rhs.sType )
23752 && ( pNext == rhs.pNext )
23753 && ( minImageCount == rhs.minImageCount )
23754 && ( maxImageCount == rhs.maxImageCount )
23755 && ( currentExtent == rhs.currentExtent )
23756 && ( minImageExtent == rhs.minImageExtent )
23757 && ( maxImageExtent == rhs.maxImageExtent )
23758 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
23759 && ( supportedTransforms == rhs.supportedTransforms )
23760 && ( currentTransform == rhs.currentTransform )
23761 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
23762 && ( supportedUsageFlags == rhs.supportedUsageFlags )
23763 && ( supportedSurfaceCounters == rhs.supportedSurfaceCounters );
23764 }
23765
23766 bool operator!=( SurfaceCapabilities2EXT const& rhs ) const
23767 {
23768 return !operator==( rhs );
23769 }
23770
23771 private:
23772 StructureType sType;
23773
23774 public:
23775 void* pNext;
23776 uint32_t minImageCount;
23777 uint32_t maxImageCount;
23778 Extent2D currentExtent;
23779 Extent2D minImageExtent;
23780 Extent2D maxImageExtent;
23781 uint32_t maxImageArrayLayers;
23782 SurfaceTransformFlagsKHR supportedTransforms;
23783 SurfaceTransformFlagBitsKHR currentTransform;
23784 CompositeAlphaFlagsKHR supportedCompositeAlpha;
23785 ImageUsageFlags supportedUsageFlags;
23786 SurfaceCounterFlagsEXT supportedSurfaceCounters;
23787 };
23788 static_assert( sizeof( SurfaceCapabilities2EXT ) == sizeof( VkSurfaceCapabilities2EXT ), "struct and wrapper have different size!" );
23789
23790 struct SwapchainCounterCreateInfoEXT
23791 {
23792 SwapchainCounterCreateInfoEXT( SurfaceCounterFlagsEXT surfaceCounters_ = SurfaceCounterFlagsEXT() )
23793 : sType( StructureType::eSwapchainCounterCreateInfoEXT )
23794 , pNext( nullptr )
23795 , surfaceCounters( surfaceCounters_ )
23796 {
23797 }
23798
23799 SwapchainCounterCreateInfoEXT( VkSwapchainCounterCreateInfoEXT const & rhs )
23800 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023801 memcpy( this, &rhs, sizeof( SwapchainCounterCreateInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070023802 }
23803
23804 SwapchainCounterCreateInfoEXT& operator=( VkSwapchainCounterCreateInfoEXT const & rhs )
23805 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023806 memcpy( this, &rhs, sizeof( SwapchainCounterCreateInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070023807 return *this;
23808 }
Mark Young39389872017-01-19 21:10:49 -070023809 SwapchainCounterCreateInfoEXT& setPNext( const void* pNext_ )
23810 {
23811 pNext = pNext_;
23812 return *this;
23813 }
23814
23815 SwapchainCounterCreateInfoEXT& setSurfaceCounters( SurfaceCounterFlagsEXT surfaceCounters_ )
23816 {
23817 surfaceCounters = surfaceCounters_;
23818 return *this;
23819 }
23820
23821 operator const VkSwapchainCounterCreateInfoEXT&() const
23822 {
23823 return *reinterpret_cast<const VkSwapchainCounterCreateInfoEXT*>(this);
23824 }
23825
23826 bool operator==( SwapchainCounterCreateInfoEXT const& rhs ) const
23827 {
23828 return ( sType == rhs.sType )
23829 && ( pNext == rhs.pNext )
23830 && ( surfaceCounters == rhs.surfaceCounters );
23831 }
23832
23833 bool operator!=( SwapchainCounterCreateInfoEXT const& rhs ) const
23834 {
23835 return !operator==( rhs );
23836 }
23837
23838 private:
23839 StructureType sType;
23840
23841 public:
23842 const void* pNext;
23843 SurfaceCounterFlagsEXT surfaceCounters;
23844 };
23845 static_assert( sizeof( SwapchainCounterCreateInfoEXT ) == sizeof( VkSwapchainCounterCreateInfoEXT ), "struct and wrapper have different size!" );
23846
23847 enum class DisplayPowerStateEXT
23848 {
23849 eOff = VK_DISPLAY_POWER_STATE_OFF_EXT,
23850 eSuspend = VK_DISPLAY_POWER_STATE_SUSPEND_EXT,
23851 eOn = VK_DISPLAY_POWER_STATE_ON_EXT
23852 };
23853
23854 struct DisplayPowerInfoEXT
23855 {
23856 DisplayPowerInfoEXT( DisplayPowerStateEXT powerState_ = DisplayPowerStateEXT::eOff )
23857 : sType( StructureType::eDisplayPowerInfoEXT )
23858 , pNext( nullptr )
23859 , powerState( powerState_ )
23860 {
23861 }
23862
23863 DisplayPowerInfoEXT( VkDisplayPowerInfoEXT const & rhs )
23864 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023865 memcpy( this, &rhs, sizeof( DisplayPowerInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070023866 }
23867
23868 DisplayPowerInfoEXT& operator=( VkDisplayPowerInfoEXT const & rhs )
23869 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023870 memcpy( this, &rhs, sizeof( DisplayPowerInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070023871 return *this;
23872 }
Mark Young39389872017-01-19 21:10:49 -070023873 DisplayPowerInfoEXT& setPNext( const void* pNext_ )
23874 {
23875 pNext = pNext_;
23876 return *this;
23877 }
23878
23879 DisplayPowerInfoEXT& setPowerState( DisplayPowerStateEXT powerState_ )
23880 {
23881 powerState = powerState_;
23882 return *this;
23883 }
23884
23885 operator const VkDisplayPowerInfoEXT&() const
23886 {
23887 return *reinterpret_cast<const VkDisplayPowerInfoEXT*>(this);
23888 }
23889
23890 bool operator==( DisplayPowerInfoEXT const& rhs ) const
23891 {
23892 return ( sType == rhs.sType )
23893 && ( pNext == rhs.pNext )
23894 && ( powerState == rhs.powerState );
23895 }
23896
23897 bool operator!=( DisplayPowerInfoEXT const& rhs ) const
23898 {
23899 return !operator==( rhs );
23900 }
23901
23902 private:
23903 StructureType sType;
23904
23905 public:
23906 const void* pNext;
23907 DisplayPowerStateEXT powerState;
23908 };
23909 static_assert( sizeof( DisplayPowerInfoEXT ) == sizeof( VkDisplayPowerInfoEXT ), "struct and wrapper have different size!" );
23910
23911 enum class DeviceEventTypeEXT
23912 {
23913 eDisplayHotplug = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT
23914 };
23915
23916 struct DeviceEventInfoEXT
23917 {
23918 DeviceEventInfoEXT( DeviceEventTypeEXT deviceEvent_ = DeviceEventTypeEXT::eDisplayHotplug )
23919 : sType( StructureType::eDeviceEventInfoEXT )
23920 , pNext( nullptr )
23921 , deviceEvent( deviceEvent_ )
23922 {
23923 }
23924
23925 DeviceEventInfoEXT( VkDeviceEventInfoEXT const & rhs )
23926 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023927 memcpy( this, &rhs, sizeof( DeviceEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070023928 }
23929
23930 DeviceEventInfoEXT& operator=( VkDeviceEventInfoEXT const & rhs )
23931 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023932 memcpy( this, &rhs, sizeof( DeviceEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070023933 return *this;
23934 }
Mark Young39389872017-01-19 21:10:49 -070023935 DeviceEventInfoEXT& setPNext( const void* pNext_ )
23936 {
23937 pNext = pNext_;
23938 return *this;
23939 }
23940
23941 DeviceEventInfoEXT& setDeviceEvent( DeviceEventTypeEXT deviceEvent_ )
23942 {
23943 deviceEvent = deviceEvent_;
23944 return *this;
23945 }
23946
23947 operator const VkDeviceEventInfoEXT&() const
23948 {
23949 return *reinterpret_cast<const VkDeviceEventInfoEXT*>(this);
23950 }
23951
23952 bool operator==( DeviceEventInfoEXT const& rhs ) const
23953 {
23954 return ( sType == rhs.sType )
23955 && ( pNext == rhs.pNext )
23956 && ( deviceEvent == rhs.deviceEvent );
23957 }
23958
23959 bool operator!=( DeviceEventInfoEXT const& rhs ) const
23960 {
23961 return !operator==( rhs );
23962 }
23963
23964 private:
23965 StructureType sType;
23966
23967 public:
23968 const void* pNext;
23969 DeviceEventTypeEXT deviceEvent;
23970 };
23971 static_assert( sizeof( DeviceEventInfoEXT ) == sizeof( VkDeviceEventInfoEXT ), "struct and wrapper have different size!" );
23972
23973 enum class DisplayEventTypeEXT
23974 {
23975 eFirstPixelOut = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT
23976 };
23977
23978 struct DisplayEventInfoEXT
23979 {
23980 DisplayEventInfoEXT( DisplayEventTypeEXT displayEvent_ = DisplayEventTypeEXT::eFirstPixelOut )
23981 : sType( StructureType::eDisplayEventInfoEXT )
23982 , pNext( nullptr )
23983 , displayEvent( displayEvent_ )
23984 {
23985 }
23986
23987 DisplayEventInfoEXT( VkDisplayEventInfoEXT const & rhs )
23988 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023989 memcpy( this, &rhs, sizeof( DisplayEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070023990 }
23991
23992 DisplayEventInfoEXT& operator=( VkDisplayEventInfoEXT const & rhs )
23993 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023994 memcpy( this, &rhs, sizeof( DisplayEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070023995 return *this;
23996 }
Mark Young39389872017-01-19 21:10:49 -070023997 DisplayEventInfoEXT& setPNext( const void* pNext_ )
23998 {
23999 pNext = pNext_;
24000 return *this;
24001 }
24002
24003 DisplayEventInfoEXT& setDisplayEvent( DisplayEventTypeEXT displayEvent_ )
24004 {
24005 displayEvent = displayEvent_;
24006 return *this;
24007 }
24008
24009 operator const VkDisplayEventInfoEXT&() const
24010 {
24011 return *reinterpret_cast<const VkDisplayEventInfoEXT*>(this);
24012 }
24013
24014 bool operator==( DisplayEventInfoEXT const& rhs ) const
24015 {
24016 return ( sType == rhs.sType )
24017 && ( pNext == rhs.pNext )
24018 && ( displayEvent == rhs.displayEvent );
24019 }
24020
24021 bool operator!=( DisplayEventInfoEXT const& rhs ) const
24022 {
24023 return !operator==( rhs );
24024 }
24025
24026 private:
24027 StructureType sType;
24028
24029 public:
24030 const void* pNext;
24031 DisplayEventTypeEXT displayEvent;
24032 };
24033 static_assert( sizeof( DisplayEventInfoEXT ) == sizeof( VkDisplayEventInfoEXT ), "struct and wrapper have different size!" );
24034
Mark Young0f183a82017-02-28 09:58:04 -070024035 enum class PeerMemoryFeatureFlagBitsKHX
24036 {
24037 eCopySrc = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX,
24038 eCopyDst = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX,
24039 eGenericSrc = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX,
24040 eGenericDst = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX
24041 };
24042
24043 using PeerMemoryFeatureFlagsKHX = Flags<PeerMemoryFeatureFlagBitsKHX, VkPeerMemoryFeatureFlagsKHX>;
24044
24045 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX operator|( PeerMemoryFeatureFlagBitsKHX bit0, PeerMemoryFeatureFlagBitsKHX bit1 )
24046 {
24047 return PeerMemoryFeatureFlagsKHX( bit0 ) | bit1;
24048 }
24049
24050 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX operator~( PeerMemoryFeatureFlagBitsKHX bits )
24051 {
24052 return ~( PeerMemoryFeatureFlagsKHX( bits ) );
24053 }
24054
24055 template <> struct FlagTraits<PeerMemoryFeatureFlagBitsKHX>
24056 {
24057 enum
24058 {
24059 allFlags = VkFlags(PeerMemoryFeatureFlagBitsKHX::eCopySrc) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eCopyDst) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eGenericSrc) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eGenericDst)
24060 };
24061 };
24062
24063 enum class MemoryAllocateFlagBitsKHX
24064 {
24065 eDeviceMask = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX
24066 };
24067
24068 using MemoryAllocateFlagsKHX = Flags<MemoryAllocateFlagBitsKHX, VkMemoryAllocateFlagsKHX>;
24069
24070 VULKAN_HPP_INLINE MemoryAllocateFlagsKHX operator|( MemoryAllocateFlagBitsKHX bit0, MemoryAllocateFlagBitsKHX bit1 )
24071 {
24072 return MemoryAllocateFlagsKHX( bit0 ) | bit1;
24073 }
24074
24075 VULKAN_HPP_INLINE MemoryAllocateFlagsKHX operator~( MemoryAllocateFlagBitsKHX bits )
24076 {
24077 return ~( MemoryAllocateFlagsKHX( bits ) );
24078 }
24079
24080 template <> struct FlagTraits<MemoryAllocateFlagBitsKHX>
24081 {
24082 enum
24083 {
24084 allFlags = VkFlags(MemoryAllocateFlagBitsKHX::eDeviceMask)
24085 };
24086 };
24087
24088 struct MemoryAllocateFlagsInfoKHX
24089 {
24090 MemoryAllocateFlagsInfoKHX( MemoryAllocateFlagsKHX flags_ = MemoryAllocateFlagsKHX(), uint32_t deviceMask_ = 0 )
24091 : sType( StructureType::eMemoryAllocateFlagsInfoKHX )
24092 , pNext( nullptr )
24093 , flags( flags_ )
24094 , deviceMask( deviceMask_ )
24095 {
24096 }
24097
24098 MemoryAllocateFlagsInfoKHX( VkMemoryAllocateFlagsInfoKHX const & rhs )
24099 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024100 memcpy( this, &rhs, sizeof( MemoryAllocateFlagsInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070024101 }
24102
24103 MemoryAllocateFlagsInfoKHX& operator=( VkMemoryAllocateFlagsInfoKHX const & rhs )
24104 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024105 memcpy( this, &rhs, sizeof( MemoryAllocateFlagsInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070024106 return *this;
24107 }
Mark Young0f183a82017-02-28 09:58:04 -070024108 MemoryAllocateFlagsInfoKHX& setPNext( const void* pNext_ )
24109 {
24110 pNext = pNext_;
24111 return *this;
24112 }
24113
24114 MemoryAllocateFlagsInfoKHX& setFlags( MemoryAllocateFlagsKHX flags_ )
24115 {
24116 flags = flags_;
24117 return *this;
24118 }
24119
24120 MemoryAllocateFlagsInfoKHX& setDeviceMask( uint32_t deviceMask_ )
24121 {
24122 deviceMask = deviceMask_;
24123 return *this;
24124 }
24125
24126 operator const VkMemoryAllocateFlagsInfoKHX&() const
24127 {
24128 return *reinterpret_cast<const VkMemoryAllocateFlagsInfoKHX*>(this);
24129 }
24130
24131 bool operator==( MemoryAllocateFlagsInfoKHX const& rhs ) const
24132 {
24133 return ( sType == rhs.sType )
24134 && ( pNext == rhs.pNext )
24135 && ( flags == rhs.flags )
24136 && ( deviceMask == rhs.deviceMask );
24137 }
24138
24139 bool operator!=( MemoryAllocateFlagsInfoKHX const& rhs ) const
24140 {
24141 return !operator==( rhs );
24142 }
24143
24144 private:
24145 StructureType sType;
24146
24147 public:
24148 const void* pNext;
24149 MemoryAllocateFlagsKHX flags;
24150 uint32_t deviceMask;
24151 };
24152 static_assert( sizeof( MemoryAllocateFlagsInfoKHX ) == sizeof( VkMemoryAllocateFlagsInfoKHX ), "struct and wrapper have different size!" );
24153
24154 enum class DeviceGroupPresentModeFlagBitsKHX
24155 {
24156 eLocal = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX,
24157 eRemote = VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX,
24158 eSum = VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX,
24159 eLocalMultiDevice = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX
24160 };
24161
24162 using DeviceGroupPresentModeFlagsKHX = Flags<DeviceGroupPresentModeFlagBitsKHX, VkDeviceGroupPresentModeFlagsKHX>;
24163
24164 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHX operator|( DeviceGroupPresentModeFlagBitsKHX bit0, DeviceGroupPresentModeFlagBitsKHX bit1 )
24165 {
24166 return DeviceGroupPresentModeFlagsKHX( bit0 ) | bit1;
24167 }
24168
24169 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHX operator~( DeviceGroupPresentModeFlagBitsKHX bits )
24170 {
24171 return ~( DeviceGroupPresentModeFlagsKHX( bits ) );
24172 }
24173
24174 template <> struct FlagTraits<DeviceGroupPresentModeFlagBitsKHX>
24175 {
24176 enum
24177 {
24178 allFlags = VkFlags(DeviceGroupPresentModeFlagBitsKHX::eLocal) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eRemote) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eSum) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice)
24179 };
24180 };
24181
24182 struct DeviceGroupPresentCapabilitiesKHX
24183 {
24184 operator const VkDeviceGroupPresentCapabilitiesKHX&() const
24185 {
24186 return *reinterpret_cast<const VkDeviceGroupPresentCapabilitiesKHX*>(this);
24187 }
24188
24189 bool operator==( DeviceGroupPresentCapabilitiesKHX const& rhs ) const
24190 {
24191 return ( sType == rhs.sType )
24192 && ( pNext == rhs.pNext )
24193 && ( memcmp( presentMask, rhs.presentMask, VK_MAX_DEVICE_GROUP_SIZE_KHX * sizeof( uint32_t ) ) == 0 )
24194 && ( modes == rhs.modes );
24195 }
24196
24197 bool operator!=( DeviceGroupPresentCapabilitiesKHX const& rhs ) const
24198 {
24199 return !operator==( rhs );
24200 }
24201
24202 private:
24203 StructureType sType;
24204
24205 public:
24206 const void* pNext;
24207 uint32_t presentMask[VK_MAX_DEVICE_GROUP_SIZE_KHX];
24208 DeviceGroupPresentModeFlagsKHX modes;
24209 };
24210 static_assert( sizeof( DeviceGroupPresentCapabilitiesKHX ) == sizeof( VkDeviceGroupPresentCapabilitiesKHX ), "struct and wrapper have different size!" );
24211
24212 struct DeviceGroupPresentInfoKHX
24213 {
24214 DeviceGroupPresentInfoKHX( uint32_t swapchainCount_ = 0, const uint32_t* pDeviceMasks_ = nullptr, DeviceGroupPresentModeFlagBitsKHX mode_ = DeviceGroupPresentModeFlagBitsKHX::eLocal )
24215 : sType( StructureType::eDeviceGroupPresentInfoKHX )
24216 , pNext( nullptr )
24217 , swapchainCount( swapchainCount_ )
24218 , pDeviceMasks( pDeviceMasks_ )
24219 , mode( mode_ )
24220 {
24221 }
24222
24223 DeviceGroupPresentInfoKHX( VkDeviceGroupPresentInfoKHX const & rhs )
24224 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024225 memcpy( this, &rhs, sizeof( DeviceGroupPresentInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070024226 }
24227
24228 DeviceGroupPresentInfoKHX& operator=( VkDeviceGroupPresentInfoKHX const & rhs )
24229 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024230 memcpy( this, &rhs, sizeof( DeviceGroupPresentInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070024231 return *this;
24232 }
Mark Young0f183a82017-02-28 09:58:04 -070024233 DeviceGroupPresentInfoKHX& setPNext( const void* pNext_ )
24234 {
24235 pNext = pNext_;
24236 return *this;
24237 }
24238
24239 DeviceGroupPresentInfoKHX& setSwapchainCount( uint32_t swapchainCount_ )
24240 {
24241 swapchainCount = swapchainCount_;
24242 return *this;
24243 }
24244
24245 DeviceGroupPresentInfoKHX& setPDeviceMasks( const uint32_t* pDeviceMasks_ )
24246 {
24247 pDeviceMasks = pDeviceMasks_;
24248 return *this;
24249 }
24250
24251 DeviceGroupPresentInfoKHX& setMode( DeviceGroupPresentModeFlagBitsKHX mode_ )
24252 {
24253 mode = mode_;
24254 return *this;
24255 }
24256
24257 operator const VkDeviceGroupPresentInfoKHX&() const
24258 {
24259 return *reinterpret_cast<const VkDeviceGroupPresentInfoKHX*>(this);
24260 }
24261
24262 bool operator==( DeviceGroupPresentInfoKHX const& rhs ) const
24263 {
24264 return ( sType == rhs.sType )
24265 && ( pNext == rhs.pNext )
24266 && ( swapchainCount == rhs.swapchainCount )
24267 && ( pDeviceMasks == rhs.pDeviceMasks )
24268 && ( mode == rhs.mode );
24269 }
24270
24271 bool operator!=( DeviceGroupPresentInfoKHX const& rhs ) const
24272 {
24273 return !operator==( rhs );
24274 }
24275
24276 private:
24277 StructureType sType;
24278
24279 public:
24280 const void* pNext;
24281 uint32_t swapchainCount;
24282 const uint32_t* pDeviceMasks;
24283 DeviceGroupPresentModeFlagBitsKHX mode;
24284 };
24285 static_assert( sizeof( DeviceGroupPresentInfoKHX ) == sizeof( VkDeviceGroupPresentInfoKHX ), "struct and wrapper have different size!" );
24286
24287 struct DeviceGroupSwapchainCreateInfoKHX
24288 {
24289 DeviceGroupSwapchainCreateInfoKHX( DeviceGroupPresentModeFlagsKHX modes_ = DeviceGroupPresentModeFlagsKHX() )
24290 : sType( StructureType::eDeviceGroupSwapchainCreateInfoKHX )
24291 , pNext( nullptr )
24292 , modes( modes_ )
24293 {
24294 }
24295
24296 DeviceGroupSwapchainCreateInfoKHX( VkDeviceGroupSwapchainCreateInfoKHX const & rhs )
24297 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024298 memcpy( this, &rhs, sizeof( DeviceGroupSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070024299 }
24300
24301 DeviceGroupSwapchainCreateInfoKHX& operator=( VkDeviceGroupSwapchainCreateInfoKHX const & rhs )
24302 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024303 memcpy( this, &rhs, sizeof( DeviceGroupSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070024304 return *this;
24305 }
Mark Young0f183a82017-02-28 09:58:04 -070024306 DeviceGroupSwapchainCreateInfoKHX& setPNext( const void* pNext_ )
24307 {
24308 pNext = pNext_;
24309 return *this;
24310 }
24311
24312 DeviceGroupSwapchainCreateInfoKHX& setModes( DeviceGroupPresentModeFlagsKHX modes_ )
24313 {
24314 modes = modes_;
24315 return *this;
24316 }
24317
24318 operator const VkDeviceGroupSwapchainCreateInfoKHX&() const
24319 {
24320 return *reinterpret_cast<const VkDeviceGroupSwapchainCreateInfoKHX*>(this);
24321 }
24322
24323 bool operator==( DeviceGroupSwapchainCreateInfoKHX const& rhs ) const
24324 {
24325 return ( sType == rhs.sType )
24326 && ( pNext == rhs.pNext )
24327 && ( modes == rhs.modes );
24328 }
24329
24330 bool operator!=( DeviceGroupSwapchainCreateInfoKHX const& rhs ) const
24331 {
24332 return !operator==( rhs );
24333 }
24334
24335 private:
24336 StructureType sType;
24337
24338 public:
24339 const void* pNext;
24340 DeviceGroupPresentModeFlagsKHX modes;
24341 };
24342 static_assert( sizeof( DeviceGroupSwapchainCreateInfoKHX ) == sizeof( VkDeviceGroupSwapchainCreateInfoKHX ), "struct and wrapper have different size!" );
24343
24344 enum class SwapchainCreateFlagBitsKHR
24345 {
24346 eBindSfrKHX = VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX
24347 };
24348
24349 using SwapchainCreateFlagsKHR = Flags<SwapchainCreateFlagBitsKHR, VkSwapchainCreateFlagsKHR>;
24350
24351 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator|( SwapchainCreateFlagBitsKHR bit0, SwapchainCreateFlagBitsKHR bit1 )
24352 {
24353 return SwapchainCreateFlagsKHR( bit0 ) | bit1;
24354 }
24355
24356 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator~( SwapchainCreateFlagBitsKHR bits )
24357 {
24358 return ~( SwapchainCreateFlagsKHR( bits ) );
24359 }
24360
24361 template <> struct FlagTraits<SwapchainCreateFlagBitsKHR>
24362 {
24363 enum
24364 {
24365 allFlags = VkFlags(SwapchainCreateFlagBitsKHR::eBindSfrKHX)
24366 };
24367 };
24368
24369 struct SwapchainCreateInfoKHR
24370 {
24371 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() )
24372 : sType( StructureType::eSwapchainCreateInfoKHR )
24373 , pNext( nullptr )
24374 , flags( flags_ )
24375 , surface( surface_ )
24376 , minImageCount( minImageCount_ )
24377 , imageFormat( imageFormat_ )
24378 , imageColorSpace( imageColorSpace_ )
24379 , imageExtent( imageExtent_ )
24380 , imageArrayLayers( imageArrayLayers_ )
24381 , imageUsage( imageUsage_ )
24382 , imageSharingMode( imageSharingMode_ )
24383 , queueFamilyIndexCount( queueFamilyIndexCount_ )
24384 , pQueueFamilyIndices( pQueueFamilyIndices_ )
24385 , preTransform( preTransform_ )
24386 , compositeAlpha( compositeAlpha_ )
24387 , presentMode( presentMode_ )
24388 , clipped( clipped_ )
24389 , oldSwapchain( oldSwapchain_ )
24390 {
24391 }
24392
24393 SwapchainCreateInfoKHR( VkSwapchainCreateInfoKHR const & rhs )
24394 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024395 memcpy( this, &rhs, sizeof( SwapchainCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070024396 }
24397
24398 SwapchainCreateInfoKHR& operator=( VkSwapchainCreateInfoKHR const & rhs )
24399 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024400 memcpy( this, &rhs, sizeof( SwapchainCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070024401 return *this;
24402 }
Mark Young0f183a82017-02-28 09:58:04 -070024403 SwapchainCreateInfoKHR& setPNext( const void* pNext_ )
24404 {
24405 pNext = pNext_;
24406 return *this;
24407 }
24408
24409 SwapchainCreateInfoKHR& setFlags( SwapchainCreateFlagsKHR flags_ )
24410 {
24411 flags = flags_;
24412 return *this;
24413 }
24414
24415 SwapchainCreateInfoKHR& setSurface( SurfaceKHR surface_ )
24416 {
24417 surface = surface_;
24418 return *this;
24419 }
24420
24421 SwapchainCreateInfoKHR& setMinImageCount( uint32_t minImageCount_ )
24422 {
24423 minImageCount = minImageCount_;
24424 return *this;
24425 }
24426
24427 SwapchainCreateInfoKHR& setImageFormat( Format imageFormat_ )
24428 {
24429 imageFormat = imageFormat_;
24430 return *this;
24431 }
24432
24433 SwapchainCreateInfoKHR& setImageColorSpace( ColorSpaceKHR imageColorSpace_ )
24434 {
24435 imageColorSpace = imageColorSpace_;
24436 return *this;
24437 }
24438
24439 SwapchainCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
24440 {
24441 imageExtent = imageExtent_;
24442 return *this;
24443 }
24444
24445 SwapchainCreateInfoKHR& setImageArrayLayers( uint32_t imageArrayLayers_ )
24446 {
24447 imageArrayLayers = imageArrayLayers_;
24448 return *this;
24449 }
24450
24451 SwapchainCreateInfoKHR& setImageUsage( ImageUsageFlags imageUsage_ )
24452 {
24453 imageUsage = imageUsage_;
24454 return *this;
24455 }
24456
24457 SwapchainCreateInfoKHR& setImageSharingMode( SharingMode imageSharingMode_ )
24458 {
24459 imageSharingMode = imageSharingMode_;
24460 return *this;
24461 }
24462
24463 SwapchainCreateInfoKHR& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
24464 {
24465 queueFamilyIndexCount = queueFamilyIndexCount_;
24466 return *this;
24467 }
24468
24469 SwapchainCreateInfoKHR& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
24470 {
24471 pQueueFamilyIndices = pQueueFamilyIndices_;
24472 return *this;
24473 }
24474
24475 SwapchainCreateInfoKHR& setPreTransform( SurfaceTransformFlagBitsKHR preTransform_ )
24476 {
24477 preTransform = preTransform_;
24478 return *this;
24479 }
24480
24481 SwapchainCreateInfoKHR& setCompositeAlpha( CompositeAlphaFlagBitsKHR compositeAlpha_ )
24482 {
24483 compositeAlpha = compositeAlpha_;
24484 return *this;
24485 }
24486
24487 SwapchainCreateInfoKHR& setPresentMode( PresentModeKHR presentMode_ )
24488 {
24489 presentMode = presentMode_;
24490 return *this;
24491 }
24492
24493 SwapchainCreateInfoKHR& setClipped( Bool32 clipped_ )
24494 {
24495 clipped = clipped_;
24496 return *this;
24497 }
24498
24499 SwapchainCreateInfoKHR& setOldSwapchain( SwapchainKHR oldSwapchain_ )
24500 {
24501 oldSwapchain = oldSwapchain_;
24502 return *this;
24503 }
24504
24505 operator const VkSwapchainCreateInfoKHR&() const
24506 {
24507 return *reinterpret_cast<const VkSwapchainCreateInfoKHR*>(this);
24508 }
24509
24510 bool operator==( SwapchainCreateInfoKHR const& rhs ) const
24511 {
24512 return ( sType == rhs.sType )
24513 && ( pNext == rhs.pNext )
24514 && ( flags == rhs.flags )
24515 && ( surface == rhs.surface )
24516 && ( minImageCount == rhs.minImageCount )
24517 && ( imageFormat == rhs.imageFormat )
24518 && ( imageColorSpace == rhs.imageColorSpace )
24519 && ( imageExtent == rhs.imageExtent )
24520 && ( imageArrayLayers == rhs.imageArrayLayers )
24521 && ( imageUsage == rhs.imageUsage )
24522 && ( imageSharingMode == rhs.imageSharingMode )
24523 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
24524 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
24525 && ( preTransform == rhs.preTransform )
24526 && ( compositeAlpha == rhs.compositeAlpha )
24527 && ( presentMode == rhs.presentMode )
24528 && ( clipped == rhs.clipped )
24529 && ( oldSwapchain == rhs.oldSwapchain );
24530 }
24531
24532 bool operator!=( SwapchainCreateInfoKHR const& rhs ) const
24533 {
24534 return !operator==( rhs );
24535 }
24536
24537 private:
24538 StructureType sType;
24539
24540 public:
24541 const void* pNext;
24542 SwapchainCreateFlagsKHR flags;
24543 SurfaceKHR surface;
24544 uint32_t minImageCount;
24545 Format imageFormat;
24546 ColorSpaceKHR imageColorSpace;
24547 Extent2D imageExtent;
24548 uint32_t imageArrayLayers;
24549 ImageUsageFlags imageUsage;
24550 SharingMode imageSharingMode;
24551 uint32_t queueFamilyIndexCount;
24552 const uint32_t* pQueueFamilyIndices;
24553 SurfaceTransformFlagBitsKHR preTransform;
24554 CompositeAlphaFlagBitsKHR compositeAlpha;
24555 PresentModeKHR presentMode;
24556 Bool32 clipped;
24557 SwapchainKHR oldSwapchain;
24558 };
24559 static_assert( sizeof( SwapchainCreateInfoKHR ) == sizeof( VkSwapchainCreateInfoKHR ), "struct and wrapper have different size!" );
24560
24561 enum class ViewportCoordinateSwizzleNV
24562 {
24563 ePositiveX = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV,
24564 eNegativeX = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV,
24565 ePositiveY = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV,
24566 eNegativeY = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV,
24567 ePositiveZ = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV,
24568 eNegativeZ = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV,
24569 ePositiveW = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV,
24570 eNegativeW = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV
24571 };
24572
24573 struct ViewportSwizzleNV
24574 {
24575 ViewportSwizzleNV( ViewportCoordinateSwizzleNV x_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV y_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV z_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV w_ = ViewportCoordinateSwizzleNV::ePositiveX )
24576 : x( x_ )
24577 , y( y_ )
24578 , z( z_ )
24579 , w( w_ )
24580 {
24581 }
24582
24583 ViewportSwizzleNV( VkViewportSwizzleNV const & rhs )
24584 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024585 memcpy( this, &rhs, sizeof( ViewportSwizzleNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070024586 }
24587
24588 ViewportSwizzleNV& operator=( VkViewportSwizzleNV const & rhs )
24589 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024590 memcpy( this, &rhs, sizeof( ViewportSwizzleNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070024591 return *this;
24592 }
Mark Young0f183a82017-02-28 09:58:04 -070024593 ViewportSwizzleNV& setX( ViewportCoordinateSwizzleNV x_ )
24594 {
24595 x = x_;
24596 return *this;
24597 }
24598
24599 ViewportSwizzleNV& setY( ViewportCoordinateSwizzleNV y_ )
24600 {
24601 y = y_;
24602 return *this;
24603 }
24604
24605 ViewportSwizzleNV& setZ( ViewportCoordinateSwizzleNV z_ )
24606 {
24607 z = z_;
24608 return *this;
24609 }
24610
24611 ViewportSwizzleNV& setW( ViewportCoordinateSwizzleNV w_ )
24612 {
24613 w = w_;
24614 return *this;
24615 }
24616
24617 operator const VkViewportSwizzleNV&() const
24618 {
24619 return *reinterpret_cast<const VkViewportSwizzleNV*>(this);
24620 }
24621
24622 bool operator==( ViewportSwizzleNV const& rhs ) const
24623 {
24624 return ( x == rhs.x )
24625 && ( y == rhs.y )
24626 && ( z == rhs.z )
24627 && ( w == rhs.w );
24628 }
24629
24630 bool operator!=( ViewportSwizzleNV const& rhs ) const
24631 {
24632 return !operator==( rhs );
24633 }
24634
24635 ViewportCoordinateSwizzleNV x;
24636 ViewportCoordinateSwizzleNV y;
24637 ViewportCoordinateSwizzleNV z;
24638 ViewportCoordinateSwizzleNV w;
24639 };
24640 static_assert( sizeof( ViewportSwizzleNV ) == sizeof( VkViewportSwizzleNV ), "struct and wrapper have different size!" );
24641
24642 struct PipelineViewportSwizzleStateCreateInfoNV
24643 {
24644 PipelineViewportSwizzleStateCreateInfoNV( PipelineViewportSwizzleStateCreateFlagsNV flags_ = PipelineViewportSwizzleStateCreateFlagsNV(), uint32_t viewportCount_ = 0, const ViewportSwizzleNV* pViewportSwizzles_ = nullptr )
24645 : sType( StructureType::ePipelineViewportSwizzleStateCreateInfoNV )
24646 , pNext( nullptr )
24647 , flags( flags_ )
24648 , viewportCount( viewportCount_ )
24649 , pViewportSwizzles( pViewportSwizzles_ )
24650 {
24651 }
24652
24653 PipelineViewportSwizzleStateCreateInfoNV( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
24654 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024655 memcpy( this, &rhs, sizeof( PipelineViewportSwizzleStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070024656 }
24657
24658 PipelineViewportSwizzleStateCreateInfoNV& operator=( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
24659 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024660 memcpy( this, &rhs, sizeof( PipelineViewportSwizzleStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070024661 return *this;
24662 }
Mark Young0f183a82017-02-28 09:58:04 -070024663 PipelineViewportSwizzleStateCreateInfoNV& setPNext( const void* pNext_ )
24664 {
24665 pNext = pNext_;
24666 return *this;
24667 }
24668
24669 PipelineViewportSwizzleStateCreateInfoNV& setFlags( PipelineViewportSwizzleStateCreateFlagsNV flags_ )
24670 {
24671 flags = flags_;
24672 return *this;
24673 }
24674
24675 PipelineViewportSwizzleStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
24676 {
24677 viewportCount = viewportCount_;
24678 return *this;
24679 }
24680
24681 PipelineViewportSwizzleStateCreateInfoNV& setPViewportSwizzles( const ViewportSwizzleNV* pViewportSwizzles_ )
24682 {
24683 pViewportSwizzles = pViewportSwizzles_;
24684 return *this;
24685 }
24686
24687 operator const VkPipelineViewportSwizzleStateCreateInfoNV&() const
24688 {
24689 return *reinterpret_cast<const VkPipelineViewportSwizzleStateCreateInfoNV*>(this);
24690 }
24691
24692 bool operator==( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
24693 {
24694 return ( sType == rhs.sType )
24695 && ( pNext == rhs.pNext )
24696 && ( flags == rhs.flags )
24697 && ( viewportCount == rhs.viewportCount )
24698 && ( pViewportSwizzles == rhs.pViewportSwizzles );
24699 }
24700
24701 bool operator!=( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
24702 {
24703 return !operator==( rhs );
24704 }
24705
24706 private:
24707 StructureType sType;
24708
24709 public:
24710 const void* pNext;
24711 PipelineViewportSwizzleStateCreateFlagsNV flags;
24712 uint32_t viewportCount;
24713 const ViewportSwizzleNV* pViewportSwizzles;
24714 };
24715 static_assert( sizeof( PipelineViewportSwizzleStateCreateInfoNV ) == sizeof( VkPipelineViewportSwizzleStateCreateInfoNV ), "struct and wrapper have different size!" );
24716
24717 enum class DiscardRectangleModeEXT
24718 {
24719 eInclusive = VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT,
24720 eExclusive = VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT
24721 };
24722
24723 struct PipelineDiscardRectangleStateCreateInfoEXT
24724 {
24725 PipelineDiscardRectangleStateCreateInfoEXT( PipelineDiscardRectangleStateCreateFlagsEXT flags_ = PipelineDiscardRectangleStateCreateFlagsEXT(), DiscardRectangleModeEXT discardRectangleMode_ = DiscardRectangleModeEXT::eInclusive, uint32_t discardRectangleCount_ = 0, const Rect2D* pDiscardRectangles_ = nullptr )
24726 : sType( StructureType::ePipelineDiscardRectangleStateCreateInfoEXT )
24727 , pNext( nullptr )
24728 , flags( flags_ )
24729 , discardRectangleMode( discardRectangleMode_ )
24730 , discardRectangleCount( discardRectangleCount_ )
24731 , pDiscardRectangles( pDiscardRectangles_ )
24732 {
24733 }
24734
24735 PipelineDiscardRectangleStateCreateInfoEXT( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
24736 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024737 memcpy( this, &rhs, sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070024738 }
24739
24740 PipelineDiscardRectangleStateCreateInfoEXT& operator=( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
24741 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024742 memcpy( this, &rhs, sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070024743 return *this;
24744 }
Mark Young0f183a82017-02-28 09:58:04 -070024745 PipelineDiscardRectangleStateCreateInfoEXT& setPNext( const void* pNext_ )
24746 {
24747 pNext = pNext_;
24748 return *this;
24749 }
24750
24751 PipelineDiscardRectangleStateCreateInfoEXT& setFlags( PipelineDiscardRectangleStateCreateFlagsEXT flags_ )
24752 {
24753 flags = flags_;
24754 return *this;
24755 }
24756
24757 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleMode( DiscardRectangleModeEXT discardRectangleMode_ )
24758 {
24759 discardRectangleMode = discardRectangleMode_;
24760 return *this;
24761 }
24762
24763 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleCount( uint32_t discardRectangleCount_ )
24764 {
24765 discardRectangleCount = discardRectangleCount_;
24766 return *this;
24767 }
24768
24769 PipelineDiscardRectangleStateCreateInfoEXT& setPDiscardRectangles( const Rect2D* pDiscardRectangles_ )
24770 {
24771 pDiscardRectangles = pDiscardRectangles_;
24772 return *this;
24773 }
24774
24775 operator const VkPipelineDiscardRectangleStateCreateInfoEXT&() const
24776 {
24777 return *reinterpret_cast<const VkPipelineDiscardRectangleStateCreateInfoEXT*>(this);
24778 }
24779
24780 bool operator==( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
24781 {
24782 return ( sType == rhs.sType )
24783 && ( pNext == rhs.pNext )
24784 && ( flags == rhs.flags )
24785 && ( discardRectangleMode == rhs.discardRectangleMode )
24786 && ( discardRectangleCount == rhs.discardRectangleCount )
24787 && ( pDiscardRectangles == rhs.pDiscardRectangles );
24788 }
24789
24790 bool operator!=( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
24791 {
24792 return !operator==( rhs );
24793 }
24794
24795 private:
24796 StructureType sType;
24797
24798 public:
24799 const void* pNext;
24800 PipelineDiscardRectangleStateCreateFlagsEXT flags;
24801 DiscardRectangleModeEXT discardRectangleMode;
24802 uint32_t discardRectangleCount;
24803 const Rect2D* pDiscardRectangles;
24804 };
24805 static_assert( sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) == sizeof( VkPipelineDiscardRectangleStateCreateInfoEXT ), "struct and wrapper have different size!" );
24806
24807 enum class SubpassDescriptionFlagBits
24808 {
24809 ePerViewAttributesNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX,
24810 ePerViewPositionXOnlyNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX
24811 };
24812
24813 using SubpassDescriptionFlags = Flags<SubpassDescriptionFlagBits, VkSubpassDescriptionFlags>;
24814
24815 VULKAN_HPP_INLINE SubpassDescriptionFlags operator|( SubpassDescriptionFlagBits bit0, SubpassDescriptionFlagBits bit1 )
24816 {
24817 return SubpassDescriptionFlags( bit0 ) | bit1;
24818 }
24819
24820 VULKAN_HPP_INLINE SubpassDescriptionFlags operator~( SubpassDescriptionFlagBits bits )
24821 {
24822 return ~( SubpassDescriptionFlags( bits ) );
24823 }
24824
24825 template <> struct FlagTraits<SubpassDescriptionFlagBits>
24826 {
24827 enum
24828 {
24829 allFlags = VkFlags(SubpassDescriptionFlagBits::ePerViewAttributesNVX) | VkFlags(SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX)
24830 };
24831 };
24832
24833 struct SubpassDescription
24834 {
24835 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 )
24836 : flags( flags_ )
24837 , pipelineBindPoint( pipelineBindPoint_ )
24838 , inputAttachmentCount( inputAttachmentCount_ )
24839 , pInputAttachments( pInputAttachments_ )
24840 , colorAttachmentCount( colorAttachmentCount_ )
24841 , pColorAttachments( pColorAttachments_ )
24842 , pResolveAttachments( pResolveAttachments_ )
24843 , pDepthStencilAttachment( pDepthStencilAttachment_ )
24844 , preserveAttachmentCount( preserveAttachmentCount_ )
24845 , pPreserveAttachments( pPreserveAttachments_ )
24846 {
24847 }
24848
24849 SubpassDescription( VkSubpassDescription const & rhs )
24850 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024851 memcpy( this, &rhs, sizeof( SubpassDescription ) );
Mark Young0f183a82017-02-28 09:58:04 -070024852 }
24853
24854 SubpassDescription& operator=( VkSubpassDescription const & rhs )
24855 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024856 memcpy( this, &rhs, sizeof( SubpassDescription ) );
Mark Young0f183a82017-02-28 09:58:04 -070024857 return *this;
24858 }
Mark Young0f183a82017-02-28 09:58:04 -070024859 SubpassDescription& setFlags( SubpassDescriptionFlags flags_ )
24860 {
24861 flags = flags_;
24862 return *this;
24863 }
24864
24865 SubpassDescription& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
24866 {
24867 pipelineBindPoint = pipelineBindPoint_;
24868 return *this;
24869 }
24870
24871 SubpassDescription& setInputAttachmentCount( uint32_t inputAttachmentCount_ )
24872 {
24873 inputAttachmentCount = inputAttachmentCount_;
24874 return *this;
24875 }
24876
24877 SubpassDescription& setPInputAttachments( const AttachmentReference* pInputAttachments_ )
24878 {
24879 pInputAttachments = pInputAttachments_;
24880 return *this;
24881 }
24882
24883 SubpassDescription& setColorAttachmentCount( uint32_t colorAttachmentCount_ )
24884 {
24885 colorAttachmentCount = colorAttachmentCount_;
24886 return *this;
24887 }
24888
24889 SubpassDescription& setPColorAttachments( const AttachmentReference* pColorAttachments_ )
24890 {
24891 pColorAttachments = pColorAttachments_;
24892 return *this;
24893 }
24894
24895 SubpassDescription& setPResolveAttachments( const AttachmentReference* pResolveAttachments_ )
24896 {
24897 pResolveAttachments = pResolveAttachments_;
24898 return *this;
24899 }
24900
24901 SubpassDescription& setPDepthStencilAttachment( const AttachmentReference* pDepthStencilAttachment_ )
24902 {
24903 pDepthStencilAttachment = pDepthStencilAttachment_;
24904 return *this;
24905 }
24906
24907 SubpassDescription& setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ )
24908 {
24909 preserveAttachmentCount = preserveAttachmentCount_;
24910 return *this;
24911 }
24912
24913 SubpassDescription& setPPreserveAttachments( const uint32_t* pPreserveAttachments_ )
24914 {
24915 pPreserveAttachments = pPreserveAttachments_;
24916 return *this;
24917 }
24918
24919 operator const VkSubpassDescription&() const
24920 {
24921 return *reinterpret_cast<const VkSubpassDescription*>(this);
24922 }
24923
24924 bool operator==( SubpassDescription const& rhs ) const
24925 {
24926 return ( flags == rhs.flags )
24927 && ( pipelineBindPoint == rhs.pipelineBindPoint )
24928 && ( inputAttachmentCount == rhs.inputAttachmentCount )
24929 && ( pInputAttachments == rhs.pInputAttachments )
24930 && ( colorAttachmentCount == rhs.colorAttachmentCount )
24931 && ( pColorAttachments == rhs.pColorAttachments )
24932 && ( pResolveAttachments == rhs.pResolveAttachments )
24933 && ( pDepthStencilAttachment == rhs.pDepthStencilAttachment )
24934 && ( preserveAttachmentCount == rhs.preserveAttachmentCount )
24935 && ( pPreserveAttachments == rhs.pPreserveAttachments );
24936 }
24937
24938 bool operator!=( SubpassDescription const& rhs ) const
24939 {
24940 return !operator==( rhs );
24941 }
24942
24943 SubpassDescriptionFlags flags;
24944 PipelineBindPoint pipelineBindPoint;
24945 uint32_t inputAttachmentCount;
24946 const AttachmentReference* pInputAttachments;
24947 uint32_t colorAttachmentCount;
24948 const AttachmentReference* pColorAttachments;
24949 const AttachmentReference* pResolveAttachments;
24950 const AttachmentReference* pDepthStencilAttachment;
24951 uint32_t preserveAttachmentCount;
24952 const uint32_t* pPreserveAttachments;
24953 };
24954 static_assert( sizeof( SubpassDescription ) == sizeof( VkSubpassDescription ), "struct and wrapper have different size!" );
24955
24956 struct RenderPassCreateInfo
24957 {
24958 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 )
24959 : sType( StructureType::eRenderPassCreateInfo )
24960 , pNext( nullptr )
24961 , flags( flags_ )
24962 , attachmentCount( attachmentCount_ )
24963 , pAttachments( pAttachments_ )
24964 , subpassCount( subpassCount_ )
24965 , pSubpasses( pSubpasses_ )
24966 , dependencyCount( dependencyCount_ )
24967 , pDependencies( pDependencies_ )
24968 {
24969 }
24970
24971 RenderPassCreateInfo( VkRenderPassCreateInfo const & rhs )
24972 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024973 memcpy( this, &rhs, sizeof( RenderPassCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070024974 }
24975
24976 RenderPassCreateInfo& operator=( VkRenderPassCreateInfo const & rhs )
24977 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024978 memcpy( this, &rhs, sizeof( RenderPassCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070024979 return *this;
24980 }
Mark Young0f183a82017-02-28 09:58:04 -070024981 RenderPassCreateInfo& setPNext( const void* pNext_ )
24982 {
24983 pNext = pNext_;
24984 return *this;
24985 }
24986
24987 RenderPassCreateInfo& setFlags( RenderPassCreateFlags flags_ )
24988 {
24989 flags = flags_;
24990 return *this;
24991 }
24992
24993 RenderPassCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
24994 {
24995 attachmentCount = attachmentCount_;
24996 return *this;
24997 }
24998
24999 RenderPassCreateInfo& setPAttachments( const AttachmentDescription* pAttachments_ )
25000 {
25001 pAttachments = pAttachments_;
25002 return *this;
25003 }
25004
25005 RenderPassCreateInfo& setSubpassCount( uint32_t subpassCount_ )
25006 {
25007 subpassCount = subpassCount_;
25008 return *this;
25009 }
25010
25011 RenderPassCreateInfo& setPSubpasses( const SubpassDescription* pSubpasses_ )
25012 {
25013 pSubpasses = pSubpasses_;
25014 return *this;
25015 }
25016
25017 RenderPassCreateInfo& setDependencyCount( uint32_t dependencyCount_ )
25018 {
25019 dependencyCount = dependencyCount_;
25020 return *this;
25021 }
25022
25023 RenderPassCreateInfo& setPDependencies( const SubpassDependency* pDependencies_ )
25024 {
25025 pDependencies = pDependencies_;
25026 return *this;
25027 }
25028
25029 operator const VkRenderPassCreateInfo&() const
25030 {
25031 return *reinterpret_cast<const VkRenderPassCreateInfo*>(this);
25032 }
25033
25034 bool operator==( RenderPassCreateInfo const& rhs ) const
25035 {
25036 return ( sType == rhs.sType )
25037 && ( pNext == rhs.pNext )
25038 && ( flags == rhs.flags )
25039 && ( attachmentCount == rhs.attachmentCount )
25040 && ( pAttachments == rhs.pAttachments )
25041 && ( subpassCount == rhs.subpassCount )
25042 && ( pSubpasses == rhs.pSubpasses )
25043 && ( dependencyCount == rhs.dependencyCount )
25044 && ( pDependencies == rhs.pDependencies );
25045 }
25046
25047 bool operator!=( RenderPassCreateInfo const& rhs ) const
25048 {
25049 return !operator==( rhs );
25050 }
25051
25052 private:
25053 StructureType sType;
25054
25055 public:
25056 const void* pNext;
25057 RenderPassCreateFlags flags;
25058 uint32_t attachmentCount;
25059 const AttachmentDescription* pAttachments;
25060 uint32_t subpassCount;
25061 const SubpassDescription* pSubpasses;
25062 uint32_t dependencyCount;
25063 const SubpassDependency* pDependencies;
25064 };
25065 static_assert( sizeof( RenderPassCreateInfo ) == sizeof( VkRenderPassCreateInfo ), "struct and wrapper have different size!" );
25066
Lenny Komowb79f04a2017-09-18 17:07:00 -060025067 enum class PointClippingBehaviorKHR
25068 {
25069 eAllClipPlanes = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR,
25070 eUserClipPlanesOnly = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR
25071 };
25072
25073 struct PhysicalDevicePointClippingPropertiesKHR
25074 {
25075 operator const VkPhysicalDevicePointClippingPropertiesKHR&() const
25076 {
25077 return *reinterpret_cast<const VkPhysicalDevicePointClippingPropertiesKHR*>(this);
25078 }
25079
25080 bool operator==( PhysicalDevicePointClippingPropertiesKHR const& rhs ) const
25081 {
25082 return ( sType == rhs.sType )
25083 && ( pNext == rhs.pNext )
25084 && ( pointClippingBehavior == rhs.pointClippingBehavior );
25085 }
25086
25087 bool operator!=( PhysicalDevicePointClippingPropertiesKHR const& rhs ) const
25088 {
25089 return !operator==( rhs );
25090 }
25091
25092 private:
25093 StructureType sType;
25094
25095 public:
25096 void* pNext;
25097 PointClippingBehaviorKHR pointClippingBehavior;
25098 };
25099 static_assert( sizeof( PhysicalDevicePointClippingPropertiesKHR ) == sizeof( VkPhysicalDevicePointClippingPropertiesKHR ), "struct and wrapper have different size!" );
25100
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060025101 enum class SamplerReductionModeEXT
25102 {
25103 eWeightedAverage = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT,
25104 eMin = VK_SAMPLER_REDUCTION_MODE_MIN_EXT,
25105 eMax = VK_SAMPLER_REDUCTION_MODE_MAX_EXT
25106 };
25107
25108 struct SamplerReductionModeCreateInfoEXT
25109 {
25110 SamplerReductionModeCreateInfoEXT( SamplerReductionModeEXT reductionMode_ = SamplerReductionModeEXT::eWeightedAverage )
25111 : sType( StructureType::eSamplerReductionModeCreateInfoEXT )
25112 , pNext( nullptr )
25113 , reductionMode( reductionMode_ )
25114 {
25115 }
25116
25117 SamplerReductionModeCreateInfoEXT( VkSamplerReductionModeCreateInfoEXT const & rhs )
25118 {
25119 memcpy( this, &rhs, sizeof( SamplerReductionModeCreateInfoEXT ) );
25120 }
25121
25122 SamplerReductionModeCreateInfoEXT& operator=( VkSamplerReductionModeCreateInfoEXT const & rhs )
25123 {
25124 memcpy( this, &rhs, sizeof( SamplerReductionModeCreateInfoEXT ) );
25125 return *this;
25126 }
25127 SamplerReductionModeCreateInfoEXT& setPNext( const void* pNext_ )
25128 {
25129 pNext = pNext_;
25130 return *this;
25131 }
25132
25133 SamplerReductionModeCreateInfoEXT& setReductionMode( SamplerReductionModeEXT reductionMode_ )
25134 {
25135 reductionMode = reductionMode_;
25136 return *this;
25137 }
25138
25139 operator const VkSamplerReductionModeCreateInfoEXT&() const
25140 {
25141 return *reinterpret_cast<const VkSamplerReductionModeCreateInfoEXT*>(this);
25142 }
25143
25144 bool operator==( SamplerReductionModeCreateInfoEXT const& rhs ) const
25145 {
25146 return ( sType == rhs.sType )
25147 && ( pNext == rhs.pNext )
25148 && ( reductionMode == rhs.reductionMode );
25149 }
25150
25151 bool operator!=( SamplerReductionModeCreateInfoEXT const& rhs ) const
25152 {
25153 return !operator==( rhs );
25154 }
25155
25156 private:
25157 StructureType sType;
25158
25159 public:
25160 const void* pNext;
25161 SamplerReductionModeEXT reductionMode;
25162 };
25163 static_assert( sizeof( SamplerReductionModeCreateInfoEXT ) == sizeof( VkSamplerReductionModeCreateInfoEXT ), "struct and wrapper have different size!" );
25164
Lenny Komowb79f04a2017-09-18 17:07:00 -060025165 enum class TessellationDomainOriginKHR
25166 {
25167 eUpperLeft = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR,
25168 eLowerLeft = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR
25169 };
25170
25171 struct PipelineTessellationDomainOriginStateCreateInfoKHR
25172 {
25173 PipelineTessellationDomainOriginStateCreateInfoKHR( TessellationDomainOriginKHR domainOrigin_ = TessellationDomainOriginKHR::eUpperLeft )
25174 : sType( StructureType::ePipelineTessellationDomainOriginStateCreateInfoKHR )
25175 , pNext( nullptr )
25176 , domainOrigin( domainOrigin_ )
25177 {
25178 }
25179
25180 PipelineTessellationDomainOriginStateCreateInfoKHR( VkPipelineTessellationDomainOriginStateCreateInfoKHR const & rhs )
25181 {
25182 memcpy( this, &rhs, sizeof( PipelineTessellationDomainOriginStateCreateInfoKHR ) );
25183 }
25184
25185 PipelineTessellationDomainOriginStateCreateInfoKHR& operator=( VkPipelineTessellationDomainOriginStateCreateInfoKHR const & rhs )
25186 {
25187 memcpy( this, &rhs, sizeof( PipelineTessellationDomainOriginStateCreateInfoKHR ) );
25188 return *this;
25189 }
25190 PipelineTessellationDomainOriginStateCreateInfoKHR& setPNext( const void* pNext_ )
25191 {
25192 pNext = pNext_;
25193 return *this;
25194 }
25195
25196 PipelineTessellationDomainOriginStateCreateInfoKHR& setDomainOrigin( TessellationDomainOriginKHR domainOrigin_ )
25197 {
25198 domainOrigin = domainOrigin_;
25199 return *this;
25200 }
25201
25202 operator const VkPipelineTessellationDomainOriginStateCreateInfoKHR&() const
25203 {
25204 return *reinterpret_cast<const VkPipelineTessellationDomainOriginStateCreateInfoKHR*>(this);
25205 }
25206
25207 bool operator==( PipelineTessellationDomainOriginStateCreateInfoKHR const& rhs ) const
25208 {
25209 return ( sType == rhs.sType )
25210 && ( pNext == rhs.pNext )
25211 && ( domainOrigin == rhs.domainOrigin );
25212 }
25213
25214 bool operator!=( PipelineTessellationDomainOriginStateCreateInfoKHR const& rhs ) const
25215 {
25216 return !operator==( rhs );
25217 }
25218
25219 private:
25220 StructureType sType;
25221
25222 public:
25223 const void* pNext;
25224 TessellationDomainOriginKHR domainOrigin;
25225 };
25226 static_assert( sizeof( PipelineTessellationDomainOriginStateCreateInfoKHR ) == sizeof( VkPipelineTessellationDomainOriginStateCreateInfoKHR ), "struct and wrapper have different size!" );
25227
25228 enum class SamplerYcbcrModelConversionKHR
25229 {
25230 eRgbIdentity = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR,
25231 eYcbcrIdentity = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR,
25232 eYcbcr709 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR,
25233 eYcbcr601 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR,
25234 eYcbcr2020 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR
25235 };
25236
25237 enum class SamplerYcbcrRangeKHR
25238 {
25239 eItuFull = VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR,
25240 eItuNarrow = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR
25241 };
25242
25243 enum class ChromaLocationKHR
25244 {
25245 eCositedEven = VK_CHROMA_LOCATION_COSITED_EVEN_KHR,
25246 eMidpoint = VK_CHROMA_LOCATION_MIDPOINT_KHR
25247 };
25248
25249 struct SamplerYcbcrConversionCreateInfoKHR
25250 {
25251 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 )
25252 : sType( StructureType::eSamplerYcbcrConversionCreateInfoKHR )
25253 , pNext( nullptr )
25254 , format( format_ )
25255 , ycbcrModel( ycbcrModel_ )
25256 , ycbcrRange( ycbcrRange_ )
25257 , components( components_ )
25258 , xChromaOffset( xChromaOffset_ )
25259 , yChromaOffset( yChromaOffset_ )
25260 , chromaFilter( chromaFilter_ )
25261 , forceExplicitReconstruction( forceExplicitReconstruction_ )
25262 {
25263 }
25264
25265 SamplerYcbcrConversionCreateInfoKHR( VkSamplerYcbcrConversionCreateInfoKHR const & rhs )
25266 {
25267 memcpy( this, &rhs, sizeof( SamplerYcbcrConversionCreateInfoKHR ) );
25268 }
25269
25270 SamplerYcbcrConversionCreateInfoKHR& operator=( VkSamplerYcbcrConversionCreateInfoKHR const & rhs )
25271 {
25272 memcpy( this, &rhs, sizeof( SamplerYcbcrConversionCreateInfoKHR ) );
25273 return *this;
25274 }
25275 SamplerYcbcrConversionCreateInfoKHR& setPNext( const void* pNext_ )
25276 {
25277 pNext = pNext_;
25278 return *this;
25279 }
25280
25281 SamplerYcbcrConversionCreateInfoKHR& setFormat( Format format_ )
25282 {
25283 format = format_;
25284 return *this;
25285 }
25286
25287 SamplerYcbcrConversionCreateInfoKHR& setYcbcrModel( SamplerYcbcrModelConversionKHR ycbcrModel_ )
25288 {
25289 ycbcrModel = ycbcrModel_;
25290 return *this;
25291 }
25292
25293 SamplerYcbcrConversionCreateInfoKHR& setYcbcrRange( SamplerYcbcrRangeKHR ycbcrRange_ )
25294 {
25295 ycbcrRange = ycbcrRange_;
25296 return *this;
25297 }
25298
25299 SamplerYcbcrConversionCreateInfoKHR& setComponents( ComponentMapping components_ )
25300 {
25301 components = components_;
25302 return *this;
25303 }
25304
25305 SamplerYcbcrConversionCreateInfoKHR& setXChromaOffset( ChromaLocationKHR xChromaOffset_ )
25306 {
25307 xChromaOffset = xChromaOffset_;
25308 return *this;
25309 }
25310
25311 SamplerYcbcrConversionCreateInfoKHR& setYChromaOffset( ChromaLocationKHR yChromaOffset_ )
25312 {
25313 yChromaOffset = yChromaOffset_;
25314 return *this;
25315 }
25316
25317 SamplerYcbcrConversionCreateInfoKHR& setChromaFilter( Filter chromaFilter_ )
25318 {
25319 chromaFilter = chromaFilter_;
25320 return *this;
25321 }
25322
25323 SamplerYcbcrConversionCreateInfoKHR& setForceExplicitReconstruction( Bool32 forceExplicitReconstruction_ )
25324 {
25325 forceExplicitReconstruction = forceExplicitReconstruction_;
25326 return *this;
25327 }
25328
25329 operator const VkSamplerYcbcrConversionCreateInfoKHR&() const
25330 {
25331 return *reinterpret_cast<const VkSamplerYcbcrConversionCreateInfoKHR*>(this);
25332 }
25333
25334 bool operator==( SamplerYcbcrConversionCreateInfoKHR const& rhs ) const
25335 {
25336 return ( sType == rhs.sType )
25337 && ( pNext == rhs.pNext )
25338 && ( format == rhs.format )
25339 && ( ycbcrModel == rhs.ycbcrModel )
25340 && ( ycbcrRange == rhs.ycbcrRange )
25341 && ( components == rhs.components )
25342 && ( xChromaOffset == rhs.xChromaOffset )
25343 && ( yChromaOffset == rhs.yChromaOffset )
25344 && ( chromaFilter == rhs.chromaFilter )
25345 && ( forceExplicitReconstruction == rhs.forceExplicitReconstruction );
25346 }
25347
25348 bool operator!=( SamplerYcbcrConversionCreateInfoKHR const& rhs ) const
25349 {
25350 return !operator==( rhs );
25351 }
25352
25353 private:
25354 StructureType sType;
25355
25356 public:
25357 const void* pNext;
25358 Format format;
25359 SamplerYcbcrModelConversionKHR ycbcrModel;
25360 SamplerYcbcrRangeKHR ycbcrRange;
25361 ComponentMapping components;
25362 ChromaLocationKHR xChromaOffset;
25363 ChromaLocationKHR yChromaOffset;
25364 Filter chromaFilter;
25365 Bool32 forceExplicitReconstruction;
25366 };
25367 static_assert( sizeof( SamplerYcbcrConversionCreateInfoKHR ) == sizeof( VkSamplerYcbcrConversionCreateInfoKHR ), "struct and wrapper have different size!" );
25368
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060025369 enum class BlendOverlapEXT
25370 {
25371 eUncorrelated = VK_BLEND_OVERLAP_UNCORRELATED_EXT,
25372 eDisjoint = VK_BLEND_OVERLAP_DISJOINT_EXT,
25373 eConjoint = VK_BLEND_OVERLAP_CONJOINT_EXT
25374 };
25375
25376 struct PipelineColorBlendAdvancedStateCreateInfoEXT
25377 {
25378 PipelineColorBlendAdvancedStateCreateInfoEXT( Bool32 srcPremultiplied_ = 0, Bool32 dstPremultiplied_ = 0, BlendOverlapEXT blendOverlap_ = BlendOverlapEXT::eUncorrelated )
25379 : sType( StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT )
25380 , pNext( nullptr )
25381 , srcPremultiplied( srcPremultiplied_ )
25382 , dstPremultiplied( dstPremultiplied_ )
25383 , blendOverlap( blendOverlap_ )
25384 {
25385 }
25386
25387 PipelineColorBlendAdvancedStateCreateInfoEXT( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs )
25388 {
25389 memcpy( this, &rhs, sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) );
25390 }
25391
25392 PipelineColorBlendAdvancedStateCreateInfoEXT& operator=( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs )
25393 {
25394 memcpy( this, &rhs, sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) );
25395 return *this;
25396 }
25397 PipelineColorBlendAdvancedStateCreateInfoEXT& setPNext( const void* pNext_ )
25398 {
25399 pNext = pNext_;
25400 return *this;
25401 }
25402
25403 PipelineColorBlendAdvancedStateCreateInfoEXT& setSrcPremultiplied( Bool32 srcPremultiplied_ )
25404 {
25405 srcPremultiplied = srcPremultiplied_;
25406 return *this;
25407 }
25408
25409 PipelineColorBlendAdvancedStateCreateInfoEXT& setDstPremultiplied( Bool32 dstPremultiplied_ )
25410 {
25411 dstPremultiplied = dstPremultiplied_;
25412 return *this;
25413 }
25414
25415 PipelineColorBlendAdvancedStateCreateInfoEXT& setBlendOverlap( BlendOverlapEXT blendOverlap_ )
25416 {
25417 blendOverlap = blendOverlap_;
25418 return *this;
25419 }
25420
25421 operator const VkPipelineColorBlendAdvancedStateCreateInfoEXT&() const
25422 {
25423 return *reinterpret_cast<const VkPipelineColorBlendAdvancedStateCreateInfoEXT*>(this);
25424 }
25425
25426 bool operator==( PipelineColorBlendAdvancedStateCreateInfoEXT const& rhs ) const
25427 {
25428 return ( sType == rhs.sType )
25429 && ( pNext == rhs.pNext )
25430 && ( srcPremultiplied == rhs.srcPremultiplied )
25431 && ( dstPremultiplied == rhs.dstPremultiplied )
25432 && ( blendOverlap == rhs.blendOverlap );
25433 }
25434
25435 bool operator!=( PipelineColorBlendAdvancedStateCreateInfoEXT const& rhs ) const
25436 {
25437 return !operator==( rhs );
25438 }
25439
25440 private:
25441 StructureType sType;
25442
25443 public:
25444 const void* pNext;
25445 Bool32 srcPremultiplied;
25446 Bool32 dstPremultiplied;
25447 BlendOverlapEXT blendOverlap;
25448 };
25449 static_assert( sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) == sizeof( VkPipelineColorBlendAdvancedStateCreateInfoEXT ), "struct and wrapper have different size!" );
25450
25451 enum class CoverageModulationModeNV
25452 {
25453 eNone = VK_COVERAGE_MODULATION_MODE_NONE_NV,
25454 eRgb = VK_COVERAGE_MODULATION_MODE_RGB_NV,
25455 eAlpha = VK_COVERAGE_MODULATION_MODE_ALPHA_NV,
25456 eRgba = VK_COVERAGE_MODULATION_MODE_RGBA_NV
25457 };
25458
25459 struct PipelineCoverageModulationStateCreateInfoNV
25460 {
25461 PipelineCoverageModulationStateCreateInfoNV( PipelineCoverageModulationStateCreateFlagsNV flags_ = PipelineCoverageModulationStateCreateFlagsNV(), CoverageModulationModeNV coverageModulationMode_ = CoverageModulationModeNV::eNone, Bool32 coverageModulationTableEnable_ = 0, uint32_t coverageModulationTableCount_ = 0, const float* pCoverageModulationTable_ = nullptr )
25462 : sType( StructureType::ePipelineCoverageModulationStateCreateInfoNV )
25463 , pNext( nullptr )
25464 , flags( flags_ )
25465 , coverageModulationMode( coverageModulationMode_ )
25466 , coverageModulationTableEnable( coverageModulationTableEnable_ )
25467 , coverageModulationTableCount( coverageModulationTableCount_ )
25468 , pCoverageModulationTable( pCoverageModulationTable_ )
25469 {
25470 }
25471
25472 PipelineCoverageModulationStateCreateInfoNV( VkPipelineCoverageModulationStateCreateInfoNV const & rhs )
25473 {
25474 memcpy( this, &rhs, sizeof( PipelineCoverageModulationStateCreateInfoNV ) );
25475 }
25476
25477 PipelineCoverageModulationStateCreateInfoNV& operator=( VkPipelineCoverageModulationStateCreateInfoNV const & rhs )
25478 {
25479 memcpy( this, &rhs, sizeof( PipelineCoverageModulationStateCreateInfoNV ) );
25480 return *this;
25481 }
25482 PipelineCoverageModulationStateCreateInfoNV& setPNext( const void* pNext_ )
25483 {
25484 pNext = pNext_;
25485 return *this;
25486 }
25487
25488 PipelineCoverageModulationStateCreateInfoNV& setFlags( PipelineCoverageModulationStateCreateFlagsNV flags_ )
25489 {
25490 flags = flags_;
25491 return *this;
25492 }
25493
25494 PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationMode( CoverageModulationModeNV coverageModulationMode_ )
25495 {
25496 coverageModulationMode = coverageModulationMode_;
25497 return *this;
25498 }
25499
25500 PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationTableEnable( Bool32 coverageModulationTableEnable_ )
25501 {
25502 coverageModulationTableEnable = coverageModulationTableEnable_;
25503 return *this;
25504 }
25505
25506 PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationTableCount( uint32_t coverageModulationTableCount_ )
25507 {
25508 coverageModulationTableCount = coverageModulationTableCount_;
25509 return *this;
25510 }
25511
25512 PipelineCoverageModulationStateCreateInfoNV& setPCoverageModulationTable( const float* pCoverageModulationTable_ )
25513 {
25514 pCoverageModulationTable = pCoverageModulationTable_;
25515 return *this;
25516 }
25517
25518 operator const VkPipelineCoverageModulationStateCreateInfoNV&() const
25519 {
25520 return *reinterpret_cast<const VkPipelineCoverageModulationStateCreateInfoNV*>(this);
25521 }
25522
25523 bool operator==( PipelineCoverageModulationStateCreateInfoNV const& rhs ) const
25524 {
25525 return ( sType == rhs.sType )
25526 && ( pNext == rhs.pNext )
25527 && ( flags == rhs.flags )
25528 && ( coverageModulationMode == rhs.coverageModulationMode )
25529 && ( coverageModulationTableEnable == rhs.coverageModulationTableEnable )
25530 && ( coverageModulationTableCount == rhs.coverageModulationTableCount )
25531 && ( pCoverageModulationTable == rhs.pCoverageModulationTable );
25532 }
25533
25534 bool operator!=( PipelineCoverageModulationStateCreateInfoNV const& rhs ) const
25535 {
25536 return !operator==( rhs );
25537 }
25538
25539 private:
25540 StructureType sType;
25541
25542 public:
25543 const void* pNext;
25544 PipelineCoverageModulationStateCreateFlagsNV flags;
25545 CoverageModulationModeNV coverageModulationMode;
25546 Bool32 coverageModulationTableEnable;
25547 uint32_t coverageModulationTableCount;
25548 const float* pCoverageModulationTable;
25549 };
25550 static_assert( sizeof( PipelineCoverageModulationStateCreateInfoNV ) == sizeof( VkPipelineCoverageModulationStateCreateInfoNV ), "struct and wrapper have different size!" );
25551
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060025552 enum class ValidationCacheHeaderVersionEXT
25553 {
25554 eOne = VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT
25555 };
25556
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025557 Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025558#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025559 template <typename Allocator = std::allocator<LayerProperties>>
25560 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties();
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025561#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25562
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025563 VULKAN_HPP_INLINE Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties )
25564 {
25565 return static_cast<Result>( vkEnumerateInstanceLayerProperties( pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
25566 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025567#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025568 template <typename Allocator>
25569 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties()
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025570 {
25571 std::vector<LayerProperties,Allocator> properties;
25572 uint32_t propertyCount;
25573 Result result;
25574 do
25575 {
25576 result = static_cast<Result>( vkEnumerateInstanceLayerProperties( &propertyCount, nullptr ) );
25577 if ( ( result == Result::eSuccess ) && propertyCount )
25578 {
25579 properties.resize( propertyCount );
25580 result = static_cast<Result>( vkEnumerateInstanceLayerProperties( &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
25581 }
25582 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025583 assert( propertyCount <= properties.size() );
25584 properties.resize( propertyCount );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025585 return createResultValue( result, properties, "vk::enumerateInstanceLayerProperties" );
25586 }
25587#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25588
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025589
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025590 Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025591#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025592 template <typename Allocator = std::allocator<ExtensionProperties>>
25593 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName = nullptr );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025594#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25595
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025596 VULKAN_HPP_INLINE Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties )
25597 {
25598 return static_cast<Result>( vkEnumerateInstanceExtensionProperties( pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
25599 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025600#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025601 template <typename Allocator>
25602 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025603 {
25604 std::vector<ExtensionProperties,Allocator> properties;
25605 uint32_t propertyCount;
25606 Result result;
25607 do
25608 {
25609 result = static_cast<Result>( vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
25610 if ( ( result == Result::eSuccess ) && propertyCount )
25611 {
25612 properties.resize( propertyCount );
25613 result = static_cast<Result>( vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
25614 }
25615 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025616 assert( propertyCount <= properties.size() );
25617 properties.resize( propertyCount );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025618 return createResultValue( result, properties, "vk::enumerateInstanceExtensionProperties" );
25619 }
25620#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25621
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025622
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025623 // forward declarations
25624 struct CmdProcessCommandsInfoNVX;
25625
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025626 class CommandBuffer
25627 {
25628 public:
25629 CommandBuffer()
25630 : m_commandBuffer(VK_NULL_HANDLE)
25631 {}
25632
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070025633 CommandBuffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025634 : m_commandBuffer(VK_NULL_HANDLE)
25635 {}
25636
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025637 VULKAN_HPP_TYPESAFE_EXPLICIT CommandBuffer( VkCommandBuffer commandBuffer )
25638 : m_commandBuffer( commandBuffer )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025639 {}
25640
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070025641#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025642 CommandBuffer & operator=(VkCommandBuffer commandBuffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025643 {
25644 m_commandBuffer = commandBuffer;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025645 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025646 }
25647#endif
25648
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025649 CommandBuffer & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025650 {
25651 m_commandBuffer = VK_NULL_HANDLE;
25652 return *this;
25653 }
25654
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025655 bool operator==( CommandBuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060025656 {
25657 return m_commandBuffer == rhs.m_commandBuffer;
25658 }
25659
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025660 bool operator!=(CommandBuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060025661 {
25662 return m_commandBuffer != rhs.m_commandBuffer;
25663 }
25664
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025665 bool operator<(CommandBuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060025666 {
25667 return m_commandBuffer < rhs.m_commandBuffer;
25668 }
25669
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025670 Result begin( const CommandBufferBeginInfo* pBeginInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025671#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025672 ResultValueType<void>::type begin( const CommandBufferBeginInfo & beginInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025673#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25674
25675#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025676 Result end() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025677#else
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025678 ResultValueType<void>::type end() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025679#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25680
25681#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025682 Result reset( CommandBufferResetFlags flags ) const;
25683#else
25684 ResultValueType<void>::type reset( CommandBufferResetFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025685#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25686
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025687 void bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025688
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025689 void setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025690#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025691 void setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025692#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25693
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025694 void setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025695#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025696 void setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025697#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25698
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025699 void setLineWidth( float lineWidth ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025700
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025701 void setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const;
25702
25703 void setBlendConstants( const float blendConstants[4] ) const;
25704
25705 void setDepthBounds( float minDepthBounds, float maxDepthBounds ) const;
25706
25707 void setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const;
25708
25709 void setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const;
25710
25711 void setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const;
25712
25713 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 -060025714#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025715 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 -060025716#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25717
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025718 void bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025719
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025720 void bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025721#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025722 void bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025723#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25724
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025725 void draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025726
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025727 void drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const;
25728
25729 void drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const;
25730
25731 void drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const;
25732
Mark Young0f183a82017-02-28 09:58:04 -070025733 void dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025734
25735 void dispatchIndirect( Buffer buffer, DeviceSize offset ) const;
25736
25737 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025738#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025739 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025740#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25741
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025742 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025743#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025744 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025745#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25746
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025747 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 -060025748#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025749 void blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025750#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25751
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025752 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025753#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025754 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025755#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25756
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025757 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025758#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025759 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025760#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25761
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025762 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025763#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25764 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025765 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025766#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25767
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025768 void fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025769
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025770 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025771#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025772 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025773#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25774
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025775 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025776#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025777 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025778#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25779
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025780 void clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025781#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025782 void clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025783#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25784
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025785 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025786#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025787 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025788#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25789
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025790 void setEvent( Event event, PipelineStageFlags stageMask ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025791
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025792 void resetEvent( Event event, PipelineStageFlags stageMask ) const;
25793
25794 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 -060025795#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025796 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 -060025797#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25798
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025799 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 -060025800#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025801 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 -060025802#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25803
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025804 void beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025805
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025806 void endQuery( QueryPool queryPool, uint32_t query ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025807
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025808 void resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025809
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025810 void writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025811
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025812 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 -060025813
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025814 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025815#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25816 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025817 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025818#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25819
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025820 void beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025821#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025822 void beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025823#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25824
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025825 void nextSubpass( SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025826
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025827 void endRenderPass() const;
25828
25829 void executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025830#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025831 void executeCommands( ArrayProxy<const CommandBuffer> commandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025832#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25833
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060025834 void debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025835#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060025836 void debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025837#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25838
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025839 void debugMarkerEndEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025840
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060025841 void debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025842#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060025843 void debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025844#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25845
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025846 void drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025847
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025848 void drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const;
25849
25850 void processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025851#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025852 void processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025853#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25854
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025855 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025856#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025857 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070025858#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25859
Mark Young0f183a82017-02-28 09:58:04 -070025860 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites ) const;
25861#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25862 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites ) const;
25863#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25864
25865 void setDeviceMaskKHX( uint32_t deviceMask ) const;
25866
25867 void dispatchBaseKHX( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const;
25868
25869 void pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData ) const;
25870
25871 void setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings ) const;
25872#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25873 void setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings ) const;
25874#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25875
25876 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles ) const;
25877#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25878 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles ) const;
25879#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25880
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060025881 void setSampleLocationsEXT( const SampleLocationsInfoEXT* pSampleLocationsInfo ) const;
25882#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25883 void setSampleLocationsEXT( const SampleLocationsInfoEXT & sampleLocationsInfo ) const;
25884#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25885
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025886
25887
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070025888 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandBuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025889 {
25890 return m_commandBuffer;
25891 }
25892
25893 explicit operator bool() const
25894 {
25895 return m_commandBuffer != VK_NULL_HANDLE;
25896 }
25897
25898 bool operator!() const
25899 {
25900 return m_commandBuffer == VK_NULL_HANDLE;
25901 }
25902
25903 private:
25904 VkCommandBuffer m_commandBuffer;
25905 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025906
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025907 static_assert( sizeof( CommandBuffer ) == sizeof( VkCommandBuffer ), "handle and wrapper have different size!" );
25908
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025909 VULKAN_HPP_INLINE Result CommandBuffer::begin( const CommandBufferBeginInfo* pBeginInfo ) const
25910 {
25911 return static_cast<Result>( vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( pBeginInfo ) ) );
25912 }
25913#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25914 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::begin( const CommandBufferBeginInfo & beginInfo ) const
25915 {
25916 Result result = static_cast<Result>( vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( &beginInfo ) ) );
25917 return createResultValue( result, "vk::CommandBuffer::begin" );
25918 }
25919#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25920
25921#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
25922 VULKAN_HPP_INLINE Result CommandBuffer::end() const
25923 {
25924 return static_cast<Result>( vkEndCommandBuffer( m_commandBuffer ) );
25925 }
25926#else
25927 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::end() const
25928 {
25929 Result result = static_cast<Result>( vkEndCommandBuffer( m_commandBuffer ) );
25930 return createResultValue( result, "vk::CommandBuffer::end" );
25931 }
25932#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25933
25934#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
25935 VULKAN_HPP_INLINE Result CommandBuffer::reset( CommandBufferResetFlags flags ) const
25936 {
25937 return static_cast<Result>( vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
25938 }
25939#else
25940 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::reset( CommandBufferResetFlags flags ) const
25941 {
25942 Result result = static_cast<Result>( vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
25943 return createResultValue( result, "vk::CommandBuffer::reset" );
25944 }
25945#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25946
25947 VULKAN_HPP_INLINE void CommandBuffer::bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline ) const
25948 {
25949 vkCmdBindPipeline( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipeline>( pipeline ) );
25950 }
25951
25952 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports ) const
25953 {
25954 vkCmdSetViewport( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewport*>( pViewports ) );
25955 }
25956#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25957 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports ) const
25958 {
25959 vkCmdSetViewport( m_commandBuffer, firstViewport, viewports.size() , reinterpret_cast<const VkViewport*>( viewports.data() ) );
25960 }
25961#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25962
25963 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors ) const
25964 {
25965 vkCmdSetScissor( m_commandBuffer, firstScissor, scissorCount, reinterpret_cast<const VkRect2D*>( pScissors ) );
25966 }
25967#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25968 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors ) const
25969 {
25970 vkCmdSetScissor( m_commandBuffer, firstScissor, scissors.size() , reinterpret_cast<const VkRect2D*>( scissors.data() ) );
25971 }
25972#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25973
25974 VULKAN_HPP_INLINE void CommandBuffer::setLineWidth( float lineWidth ) const
25975 {
25976 vkCmdSetLineWidth( m_commandBuffer, lineWidth );
25977 }
25978
25979 VULKAN_HPP_INLINE void CommandBuffer::setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const
25980 {
25981 vkCmdSetDepthBias( m_commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor );
25982 }
25983
25984 VULKAN_HPP_INLINE void CommandBuffer::setBlendConstants( const float blendConstants[4] ) const
25985 {
25986 vkCmdSetBlendConstants( m_commandBuffer, blendConstants );
25987 }
25988
25989 VULKAN_HPP_INLINE void CommandBuffer::setDepthBounds( float minDepthBounds, float maxDepthBounds ) const
25990 {
25991 vkCmdSetDepthBounds( m_commandBuffer, minDepthBounds, maxDepthBounds );
25992 }
25993
25994 VULKAN_HPP_INLINE void CommandBuffer::setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const
25995 {
25996 vkCmdSetStencilCompareMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), compareMask );
25997 }
25998
25999 VULKAN_HPP_INLINE void CommandBuffer::setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const
26000 {
26001 vkCmdSetStencilWriteMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), writeMask );
26002 }
26003
26004 VULKAN_HPP_INLINE void CommandBuffer::setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const
26005 {
26006 vkCmdSetStencilReference( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), reference );
26007 }
26008
26009 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
26010 {
26011 vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ), dynamicOffsetCount, pDynamicOffsets );
26012 }
26013#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26014 VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t firstSet, ArrayProxy<const DescriptorSet> descriptorSets, ArrayProxy<const uint32_t> dynamicOffsets ) const
26015 {
26016 vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ), dynamicOffsets.size() , dynamicOffsets.data() );
26017 }
26018#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26019
26020 VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType ) const
26021 {
26022 vkCmdBindIndexBuffer( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkIndexType>( indexType ) );
26023 }
26024
26025 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets ) const
26026 {
26027 vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, bindingCount, reinterpret_cast<const VkBuffer*>( pBuffers ), pOffsets );
26028 }
26029#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26030 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets ) const
26031 {
26032#ifdef VULKAN_HPP_NO_EXCEPTIONS
26033 assert( buffers.size() == offsets.size() );
26034#else
26035 if ( buffers.size() != offsets.size() )
26036 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026037 throw LogicError( "vk::CommandBuffer::bindVertexBuffers: buffers.size() != offsets.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026038 }
26039#endif // VULKAN_HPP_NO_EXCEPTIONS
26040 vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, buffers.size() , reinterpret_cast<const VkBuffer*>( buffers.data() ), offsets.data() );
26041 }
26042#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26043
26044 VULKAN_HPP_INLINE void CommandBuffer::draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const
26045 {
26046 vkCmdDraw( m_commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance );
26047 }
26048
26049 VULKAN_HPP_INLINE void CommandBuffer::drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const
26050 {
26051 vkCmdDrawIndexed( m_commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance );
26052 }
26053
26054 VULKAN_HPP_INLINE void CommandBuffer::drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const
26055 {
26056 vkCmdDrawIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
26057 }
26058
26059 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const
26060 {
26061 vkCmdDrawIndexedIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
26062 }
26063
Mark Young0f183a82017-02-28 09:58:04 -070026064 VULKAN_HPP_INLINE void CommandBuffer::dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026065 {
Mark Young0f183a82017-02-28 09:58:04 -070026066 vkCmdDispatch( m_commandBuffer, groupCountX, groupCountY, groupCountZ );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026067 }
26068
26069 VULKAN_HPP_INLINE void CommandBuffer::dispatchIndirect( Buffer buffer, DeviceSize offset ) const
26070 {
26071 vkCmdDispatchIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset );
26072 }
26073
26074 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions ) const
26075 {
26076 vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferCopy*>( pRegions ) );
26077 }
26078#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26079 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions ) const
26080 {
26081 vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferCopy*>( regions.data() ) );
26082 }
26083#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26084
26085 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions ) const
26086 {
26087 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 ) );
26088 }
26089#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26090 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions ) const
26091 {
26092 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() ) );
26093 }
26094#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26095
26096 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageBlit* pRegions, Filter filter ) const
26097 {
26098 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 ) );
26099 }
26100#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26101 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter ) const
26102 {
26103 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 ) );
26104 }
26105#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26106
26107 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions ) const
26108 {
26109 vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
26110 }
26111#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26112 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions ) const
26113 {
26114 vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
26115 }
26116#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26117
26118 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions ) const
26119 {
26120 vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
26121 }
26122#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26123 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions ) const
26124 {
26125 vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
26126 }
26127#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26128
26129 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData ) const
26130 {
26131 vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, dataSize, pData );
26132 }
26133#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26134 template <typename T>
26135 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data ) const
26136 {
26137 vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, data.size() * sizeof( T ) , reinterpret_cast<const void*>( data.data() ) );
26138 }
26139#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26140
26141 VULKAN_HPP_INLINE void CommandBuffer::fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const
26142 {
26143 vkCmdFillBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, size, data );
26144 }
26145
26146 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const
26147 {
26148 vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( pColor ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
26149 }
26150#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26151 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges ) const
26152 {
26153 vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( &color ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
26154 }
26155#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26156
26157 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const
26158 {
26159 vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( pDepthStencil ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
26160 }
26161#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26162 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges ) const
26163 {
26164 vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( &depthStencil ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
26165 }
26166#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26167
26168 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects ) const
26169 {
26170 vkCmdClearAttachments( m_commandBuffer, attachmentCount, reinterpret_cast<const VkClearAttachment*>( pAttachments ), rectCount, reinterpret_cast<const VkClearRect*>( pRects ) );
26171 }
26172#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26173 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects ) const
26174 {
26175 vkCmdClearAttachments( m_commandBuffer, attachments.size() , reinterpret_cast<const VkClearAttachment*>( attachments.data() ), rects.size() , reinterpret_cast<const VkClearRect*>( rects.data() ) );
26176 }
26177#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26178
26179 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions ) const
26180 {
26181 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 ) );
26182 }
26183#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26184 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions ) const
26185 {
26186 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() ) );
26187 }
26188#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26189
26190 VULKAN_HPP_INLINE void CommandBuffer::setEvent( Event event, PipelineStageFlags stageMask ) const
26191 {
26192 vkCmdSetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
26193 }
26194
26195 VULKAN_HPP_INLINE void CommandBuffer::resetEvent( Event event, PipelineStageFlags stageMask ) const
26196 {
26197 vkCmdResetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
26198 }
26199
26200 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
26201 {
26202 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 ) );
26203 }
26204#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26205 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
26206 {
26207 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() ) );
26208 }
26209#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26210
26211 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
26212 {
26213 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 ) );
26214 }
26215#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26216 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
26217 {
26218 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() ) );
26219 }
26220#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26221
26222 VULKAN_HPP_INLINE void CommandBuffer::beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const
26223 {
26224 vkCmdBeginQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query, static_cast<VkQueryControlFlags>( flags ) );
26225 }
26226
26227 VULKAN_HPP_INLINE void CommandBuffer::endQuery( QueryPool queryPool, uint32_t query ) const
26228 {
26229 vkCmdEndQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query );
26230 }
26231
26232 VULKAN_HPP_INLINE void CommandBuffer::resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const
26233 {
26234 vkCmdResetQueryPool( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount );
26235 }
26236
26237 VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query ) const
26238 {
26239 vkCmdWriteTimestamp( m_commandBuffer, static_cast<VkPipelineStageFlagBits>( pipelineStage ), static_cast<VkQueryPool>( queryPool ), query );
26240 }
26241
26242 VULKAN_HPP_INLINE void CommandBuffer::copyQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Buffer dstBuffer, DeviceSize dstOffset, DeviceSize stride, QueryResultFlags flags ) const
26243 {
26244 vkCmdCopyQueryPoolResults( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, static_cast<VkBuffer>( dstBuffer ), dstOffset, stride, static_cast<VkQueryResultFlags>( flags ) );
26245 }
26246
26247 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const
26248 {
26249 vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, size, pValues );
26250 }
26251#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26252 template <typename T>
26253 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values ) const
26254 {
26255 vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, values.size() * sizeof( T ) , reinterpret_cast<const void*>( values.data() ) );
26256 }
26257#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26258
26259 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents ) const
26260 {
26261 vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( pRenderPassBegin ), static_cast<VkSubpassContents>( contents ) );
26262 }
26263#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26264 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const
26265 {
26266 vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( &renderPassBegin ), static_cast<VkSubpassContents>( contents ) );
26267 }
26268#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26269
26270 VULKAN_HPP_INLINE void CommandBuffer::nextSubpass( SubpassContents contents ) const
26271 {
26272 vkCmdNextSubpass( m_commandBuffer, static_cast<VkSubpassContents>( contents ) );
26273 }
26274
26275 VULKAN_HPP_INLINE void CommandBuffer::endRenderPass() const
26276 {
26277 vkCmdEndRenderPass( m_commandBuffer );
26278 }
26279
26280 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const
26281 {
26282 vkCmdExecuteCommands( m_commandBuffer, commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
26283 }
26284#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26285 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( ArrayProxy<const CommandBuffer> commandBuffers ) const
26286 {
26287 vkCmdExecuteCommands( m_commandBuffer, commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
26288 }
26289#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26290
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026291 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026292 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026293 vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026294 }
26295#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026296 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026297 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026298 vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026299 }
26300#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26301
26302 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerEndEXT() const
26303 {
26304 vkCmdDebugMarkerEndEXT( m_commandBuffer );
26305 }
26306
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026307 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026308 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026309 vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026310 }
26311#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026312 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026313 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026314 vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026315 }
26316#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26317
26318 VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
26319 {
26320 vkCmdDrawIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
26321 }
26322
26323 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
26324 {
26325 vkCmdDrawIndexedIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
26326 }
26327
26328 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const
26329 {
26330 vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( pProcessCommandsInfo ) );
26331 }
26332#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26333 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo ) const
26334 {
26335 vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( &processCommandsInfo ) );
26336 }
26337#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26338
26339 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const
26340 {
26341 vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( pReserveSpaceInfo ) );
26342 }
26343#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26344 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo ) const
26345 {
26346 vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( &reserveSpaceInfo ) );
26347 }
26348#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070026349
26350 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites ) const
26351 {
26352 vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ) );
26353 }
26354#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26355 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites ) const
26356 {
26357 vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ) );
26358 }
26359#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26360
26361 VULKAN_HPP_INLINE void CommandBuffer::setDeviceMaskKHX( uint32_t deviceMask ) const
26362 {
26363 vkCmdSetDeviceMaskKHX( m_commandBuffer, deviceMask );
26364 }
26365
26366 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
26367 {
26368 vkCmdDispatchBaseKHX( m_commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ );
26369 }
26370
26371 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData ) const
26372 {
26373 vkCmdPushDescriptorSetWithTemplateKHR( m_commandBuffer, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), static_cast<VkPipelineLayout>( layout ), set, pData );
26374 }
26375
26376 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings ) const
26377 {
26378 vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewportWScalingNV*>( pViewportWScalings ) );
26379 }
26380#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26381 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings ) const
26382 {
26383 vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportWScalings.size() , reinterpret_cast<const VkViewportWScalingNV*>( viewportWScalings.data() ) );
26384 }
26385#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26386
26387 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles ) const
26388 {
26389 vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangleCount, reinterpret_cast<const VkRect2D*>( pDiscardRectangles ) );
26390 }
26391#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26392 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles ) const
26393 {
26394 vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangles.size() , reinterpret_cast<const VkRect2D*>( discardRectangles.data() ) );
26395 }
26396#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026397
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060026398 VULKAN_HPP_INLINE void CommandBuffer::setSampleLocationsEXT( const SampleLocationsInfoEXT* pSampleLocationsInfo ) const
26399 {
26400 vkCmdSetSampleLocationsEXT( m_commandBuffer, reinterpret_cast<const VkSampleLocationsInfoEXT*>( pSampleLocationsInfo ) );
26401 }
26402#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26403 VULKAN_HPP_INLINE void CommandBuffer::setSampleLocationsEXT( const SampleLocationsInfoEXT & sampleLocationsInfo ) const
26404 {
26405 vkCmdSetSampleLocationsEXT( m_commandBuffer, reinterpret_cast<const VkSampleLocationsInfoEXT*>( &sampleLocationsInfo ) );
26406 }
26407#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26408
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026409 struct SubmitInfo
26410 {
26411 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 )
26412 : sType( StructureType::eSubmitInfo )
26413 , pNext( nullptr )
26414 , waitSemaphoreCount( waitSemaphoreCount_ )
26415 , pWaitSemaphores( pWaitSemaphores_ )
26416 , pWaitDstStageMask( pWaitDstStageMask_ )
26417 , commandBufferCount( commandBufferCount_ )
26418 , pCommandBuffers( pCommandBuffers_ )
26419 , signalSemaphoreCount( signalSemaphoreCount_ )
26420 , pSignalSemaphores( pSignalSemaphores_ )
26421 {
26422 }
26423
26424 SubmitInfo( VkSubmitInfo const & rhs )
26425 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026426 memcpy( this, &rhs, sizeof( SubmitInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026427 }
26428
26429 SubmitInfo& operator=( VkSubmitInfo const & rhs )
26430 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026431 memcpy( this, &rhs, sizeof( SubmitInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026432 return *this;
26433 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026434 SubmitInfo& setPNext( const void* pNext_ )
26435 {
26436 pNext = pNext_;
26437 return *this;
26438 }
26439
26440 SubmitInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
26441 {
26442 waitSemaphoreCount = waitSemaphoreCount_;
26443 return *this;
26444 }
26445
26446 SubmitInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
26447 {
26448 pWaitSemaphores = pWaitSemaphores_;
26449 return *this;
26450 }
26451
26452 SubmitInfo& setPWaitDstStageMask( const PipelineStageFlags* pWaitDstStageMask_ )
26453 {
26454 pWaitDstStageMask = pWaitDstStageMask_;
26455 return *this;
26456 }
26457
26458 SubmitInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
26459 {
26460 commandBufferCount = commandBufferCount_;
26461 return *this;
26462 }
26463
26464 SubmitInfo& setPCommandBuffers( const CommandBuffer* pCommandBuffers_ )
26465 {
26466 pCommandBuffers = pCommandBuffers_;
26467 return *this;
26468 }
26469
26470 SubmitInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
26471 {
26472 signalSemaphoreCount = signalSemaphoreCount_;
26473 return *this;
26474 }
26475
26476 SubmitInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
26477 {
26478 pSignalSemaphores = pSignalSemaphores_;
26479 return *this;
26480 }
26481
26482 operator const VkSubmitInfo&() const
26483 {
26484 return *reinterpret_cast<const VkSubmitInfo*>(this);
26485 }
26486
26487 bool operator==( SubmitInfo const& rhs ) const
26488 {
26489 return ( sType == rhs.sType )
26490 && ( pNext == rhs.pNext )
26491 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
26492 && ( pWaitSemaphores == rhs.pWaitSemaphores )
26493 && ( pWaitDstStageMask == rhs.pWaitDstStageMask )
26494 && ( commandBufferCount == rhs.commandBufferCount )
26495 && ( pCommandBuffers == rhs.pCommandBuffers )
26496 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
26497 && ( pSignalSemaphores == rhs.pSignalSemaphores );
26498 }
26499
26500 bool operator!=( SubmitInfo const& rhs ) const
26501 {
26502 return !operator==( rhs );
26503 }
26504
26505 private:
26506 StructureType sType;
26507
26508 public:
26509 const void* pNext;
26510 uint32_t waitSemaphoreCount;
26511 const Semaphore* pWaitSemaphores;
26512 const PipelineStageFlags* pWaitDstStageMask;
26513 uint32_t commandBufferCount;
26514 const CommandBuffer* pCommandBuffers;
26515 uint32_t signalSemaphoreCount;
26516 const Semaphore* pSignalSemaphores;
26517 };
26518 static_assert( sizeof( SubmitInfo ) == sizeof( VkSubmitInfo ), "struct and wrapper have different size!" );
26519
26520 class Queue
26521 {
26522 public:
26523 Queue()
26524 : m_queue(VK_NULL_HANDLE)
26525 {}
26526
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070026527 Queue( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026528 : m_queue(VK_NULL_HANDLE)
26529 {}
26530
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026531 VULKAN_HPP_TYPESAFE_EXPLICIT Queue( VkQueue queue )
26532 : m_queue( queue )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026533 {}
26534
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026535#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026536 Queue & operator=(VkQueue queue)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026537 {
26538 m_queue = queue;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026539 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026540 }
26541#endif
26542
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026543 Queue & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026544 {
26545 m_queue = VK_NULL_HANDLE;
26546 return *this;
26547 }
26548
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026549 bool operator==( Queue const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026550 {
26551 return m_queue == rhs.m_queue;
26552 }
26553
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026554 bool operator!=(Queue const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026555 {
26556 return m_queue != rhs.m_queue;
26557 }
26558
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026559 bool operator<(Queue const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026560 {
26561 return m_queue < rhs.m_queue;
26562 }
26563
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026564 Result submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026565#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026566 ResultValueType<void>::type submit( ArrayProxy<const SubmitInfo> submits, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026567#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26568
26569#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026570 Result waitIdle() const;
26571#else
26572 ResultValueType<void>::type waitIdle() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026573#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26574
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026575 Result bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026576#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026577 ResultValueType<void>::type bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026578#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26579
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026580 Result presentKHR( const PresentInfoKHR* pPresentInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026581#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026582 Result presentKHR( const PresentInfoKHR & presentInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026583#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26584
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026585
26586
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026587 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueue() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026588 {
26589 return m_queue;
26590 }
26591
26592 explicit operator bool() const
26593 {
26594 return m_queue != VK_NULL_HANDLE;
26595 }
26596
26597 bool operator!() const
26598 {
26599 return m_queue == VK_NULL_HANDLE;
26600 }
26601
26602 private:
26603 VkQueue m_queue;
26604 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026605
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026606 static_assert( sizeof( Queue ) == sizeof( VkQueue ), "handle and wrapper have different size!" );
26607
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026608 VULKAN_HPP_INLINE Result Queue::submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence ) const
26609 {
26610 return static_cast<Result>( vkQueueSubmit( m_queue, submitCount, reinterpret_cast<const VkSubmitInfo*>( pSubmits ), static_cast<VkFence>( fence ) ) );
26611 }
26612#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26613 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::submit( ArrayProxy<const SubmitInfo> submits, Fence fence ) const
26614 {
26615 Result result = static_cast<Result>( vkQueueSubmit( m_queue, submits.size() , reinterpret_cast<const VkSubmitInfo*>( submits.data() ), static_cast<VkFence>( fence ) ) );
26616 return createResultValue( result, "vk::Queue::submit" );
26617 }
26618#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26619
26620#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
26621 VULKAN_HPP_INLINE Result Queue::waitIdle() const
26622 {
26623 return static_cast<Result>( vkQueueWaitIdle( m_queue ) );
26624 }
26625#else
26626 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::waitIdle() const
26627 {
26628 Result result = static_cast<Result>( vkQueueWaitIdle( m_queue ) );
26629 return createResultValue( result, "vk::Queue::waitIdle" );
26630 }
26631#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26632
26633 VULKAN_HPP_INLINE Result Queue::bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence ) const
26634 {
26635 return static_cast<Result>( vkQueueBindSparse( m_queue, bindInfoCount, reinterpret_cast<const VkBindSparseInfo*>( pBindInfo ), static_cast<VkFence>( fence ) ) );
26636 }
26637#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26638 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence ) const
26639 {
26640 Result result = static_cast<Result>( vkQueueBindSparse( m_queue, bindInfo.size() , reinterpret_cast<const VkBindSparseInfo*>( bindInfo.data() ), static_cast<VkFence>( fence ) ) );
26641 return createResultValue( result, "vk::Queue::bindSparse" );
26642 }
26643#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26644
26645 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR* pPresentInfo ) const
26646 {
26647 return static_cast<Result>( vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( pPresentInfo ) ) );
26648 }
26649#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26650 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR & presentInfo ) const
26651 {
26652 Result result = static_cast<Result>( vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( &presentInfo ) ) );
26653 return createResultValue( result, "vk::Queue::presentKHR", { Result::eSuccess, Result::eSuboptimalKHR } );
26654 }
26655#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026656
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026657#ifndef VULKAN_HPP_NO_SMART_HANDLE
26658 class BufferDeleter;
26659 using UniqueBuffer = UniqueHandle<Buffer, BufferDeleter>;
26660 class BufferViewDeleter;
26661 using UniqueBufferView = UniqueHandle<BufferView, BufferViewDeleter>;
26662 class CommandBufferDeleter;
26663 using UniqueCommandBuffer = UniqueHandle<CommandBuffer, CommandBufferDeleter>;
26664 class CommandPoolDeleter;
26665 using UniqueCommandPool = UniqueHandle<CommandPool, CommandPoolDeleter>;
26666 class DescriptorPoolDeleter;
26667 using UniqueDescriptorPool = UniqueHandle<DescriptorPool, DescriptorPoolDeleter>;
26668 class DescriptorSetDeleter;
26669 using UniqueDescriptorSet = UniqueHandle<DescriptorSet, DescriptorSetDeleter>;
26670 class DescriptorSetLayoutDeleter;
26671 using UniqueDescriptorSetLayout = UniqueHandle<DescriptorSetLayout, DescriptorSetLayoutDeleter>;
Mark Young0f183a82017-02-28 09:58:04 -070026672 class DescriptorUpdateTemplateKHRDeleter;
26673 using UniqueDescriptorUpdateTemplateKHR = UniqueHandle<DescriptorUpdateTemplateKHR, DescriptorUpdateTemplateKHRDeleter>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026674 class DeviceMemoryDeleter;
26675 using UniqueDeviceMemory = UniqueHandle<DeviceMemory, DeviceMemoryDeleter>;
26676 class EventDeleter;
26677 using UniqueEvent = UniqueHandle<Event, EventDeleter>;
26678 class FenceDeleter;
26679 using UniqueFence = UniqueHandle<Fence, FenceDeleter>;
26680 class FramebufferDeleter;
26681 using UniqueFramebuffer = UniqueHandle<Framebuffer, FramebufferDeleter>;
26682 class ImageDeleter;
26683 using UniqueImage = UniqueHandle<Image, ImageDeleter>;
26684 class ImageViewDeleter;
26685 using UniqueImageView = UniqueHandle<ImageView, ImageViewDeleter>;
26686 class IndirectCommandsLayoutNVXDeleter;
26687 using UniqueIndirectCommandsLayoutNVX = UniqueHandle<IndirectCommandsLayoutNVX, IndirectCommandsLayoutNVXDeleter>;
26688 class ObjectTableNVXDeleter;
26689 using UniqueObjectTableNVX = UniqueHandle<ObjectTableNVX, ObjectTableNVXDeleter>;
26690 class PipelineDeleter;
26691 using UniquePipeline = UniqueHandle<Pipeline, PipelineDeleter>;
26692 class PipelineCacheDeleter;
26693 using UniquePipelineCache = UniqueHandle<PipelineCache, PipelineCacheDeleter>;
26694 class PipelineLayoutDeleter;
26695 using UniquePipelineLayout = UniqueHandle<PipelineLayout, PipelineLayoutDeleter>;
26696 class QueryPoolDeleter;
26697 using UniqueQueryPool = UniqueHandle<QueryPool, QueryPoolDeleter>;
26698 class RenderPassDeleter;
26699 using UniqueRenderPass = UniqueHandle<RenderPass, RenderPassDeleter>;
26700 class SamplerDeleter;
26701 using UniqueSampler = UniqueHandle<Sampler, SamplerDeleter>;
Lenny Komowb79f04a2017-09-18 17:07:00 -060026702 class SamplerYcbcrConversionKHRDeleter;
26703 using UniqueSamplerYcbcrConversionKHR = UniqueHandle<SamplerYcbcrConversionKHR, SamplerYcbcrConversionKHRDeleter>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026704 class SemaphoreDeleter;
26705 using UniqueSemaphore = UniqueHandle<Semaphore, SemaphoreDeleter>;
26706 class ShaderModuleDeleter;
26707 using UniqueShaderModule = UniqueHandle<ShaderModule, ShaderModuleDeleter>;
26708 class SwapchainKHRDeleter;
26709 using UniqueSwapchainKHR = UniqueHandle<SwapchainKHR, SwapchainKHRDeleter>;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060026710 class ValidationCacheEXTDeleter;
26711 using UniqueValidationCacheEXT = UniqueHandle<ValidationCacheEXT, ValidationCacheEXTDeleter>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026712#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26713
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026714 class Device
26715 {
26716 public:
26717 Device()
26718 : m_device(VK_NULL_HANDLE)
26719 {}
26720
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070026721 Device( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026722 : m_device(VK_NULL_HANDLE)
26723 {}
26724
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026725 VULKAN_HPP_TYPESAFE_EXPLICIT Device( VkDevice device )
26726 : m_device( device )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026727 {}
26728
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026729#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026730 Device & operator=(VkDevice device)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026731 {
26732 m_device = device;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026733 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026734 }
26735#endif
26736
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026737 Device & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026738 {
26739 m_device = VK_NULL_HANDLE;
26740 return *this;
26741 }
26742
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026743 bool operator==( Device const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026744 {
26745 return m_device == rhs.m_device;
26746 }
26747
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026748 bool operator!=(Device const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026749 {
26750 return m_device != rhs.m_device;
26751 }
26752
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026753 bool operator<(Device const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060026754 {
26755 return m_device < rhs.m_device;
26756 }
26757
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026758 PFN_vkVoidFunction getProcAddr( const char* pName ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026759#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026760 PFN_vkVoidFunction getProcAddr( const std::string & name ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026761#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26762
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026763 void destroy( const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026764#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026765 void destroy( Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026766#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26767
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026768 void getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026769#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026770 Queue getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026771#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26772
26773#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026774 Result waitIdle() const;
26775#else
26776 ResultValueType<void>::type waitIdle() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026777#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26778
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026779 Result allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026780#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026781 ResultValueType<DeviceMemory>::type allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26782#ifndef VULKAN_HPP_NO_SMART_HANDLE
26783 UniqueDeviceMemory allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26784#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026785#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26786
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026787 void freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026788#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026789 void freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26790#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26791
26792 Result mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData ) const;
26793#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26794 ResultValueType<void*>::type mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags = MemoryMapFlags() ) const;
26795#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26796
26797 void unmapMemory( DeviceMemory memory ) const;
26798
26799 Result flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const;
26800#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26801 ResultValueType<void>::type flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const;
26802#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26803
26804 Result invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const;
26805#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26806 ResultValueType<void>::type invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const;
26807#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26808
26809 void getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes ) const;
26810#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26811 DeviceSize getMemoryCommitment( DeviceMemory memory ) const;
26812#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26813
26814 void getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements ) const;
26815#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26816 MemoryRequirements getBufferMemoryRequirements( Buffer buffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026817#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26818
26819#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026820 Result bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const;
26821#else
26822 ResultValueType<void>::type bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const;
26823#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026824
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026825 void getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026826#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026827 MemoryRequirements getImageMemoryRequirements( Image image ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026828#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26829
26830#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026831 Result bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const;
26832#else
26833 ResultValueType<void>::type bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026834#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26835
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026836 void getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026837#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026838 template <typename Allocator = std::allocator<SparseImageMemoryRequirements>>
26839 std::vector<SparseImageMemoryRequirements,Allocator> getImageSparseMemoryRequirements( Image image ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026840#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26841
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026842 Result createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026843#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026844 ResultValueType<Fence>::type createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26845#ifndef VULKAN_HPP_NO_SMART_HANDLE
26846 UniqueFence createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26847#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026848#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26849
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026850 void destroyFence( Fence fence, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026851#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026852 void destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026853#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26854
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026855 Result resetFences( uint32_t fenceCount, const Fence* pFences ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026856#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026857 ResultValueType<void>::type resetFences( ArrayProxy<const Fence> fences ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026858#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26859
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026860 Result getFenceStatus( Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026861
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026862 Result waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026863#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026864 Result waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout ) const;
26865#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26866
26867 Result createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore ) const;
26868#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26869 ResultValueType<Semaphore>::type createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26870#ifndef VULKAN_HPP_NO_SMART_HANDLE
26871 UniqueSemaphore createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26872#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26873#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26874
26875 void destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator ) const;
26876#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26877 void destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26878#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26879
26880 Result createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent ) const;
26881#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26882 ResultValueType<Event>::type createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26883#ifndef VULKAN_HPP_NO_SMART_HANDLE
26884 UniqueEvent createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26885#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26886#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26887
26888 void destroyEvent( Event event, const AllocationCallbacks* pAllocator ) const;
26889#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26890 void destroyEvent( Event event, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026891#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26892
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026893 Result getEventStatus( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026894
26895#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026896 Result setEvent( Event event ) const;
26897#else
26898 ResultValueType<void>::type setEvent( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026899#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26900
26901#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026902 Result resetEvent( Event event ) const;
26903#else
26904 ResultValueType<void>::type resetEvent( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026905#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26906
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026907 Result createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026908#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026909 ResultValueType<QueryPool>::type createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26910#ifndef VULKAN_HPP_NO_SMART_HANDLE
26911 UniqueQueryPool createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26912#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026913#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26914
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026915 void destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026916#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026917 void destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026918#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26919
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026920 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 -060026921#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26922 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026923 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 -060026924#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26925
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026926 Result createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026927#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026928 ResultValueType<Buffer>::type createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26929#ifndef VULKAN_HPP_NO_SMART_HANDLE
26930 UniqueBuffer createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26931#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026932#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26933
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026934 void destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026935#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026936 void destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026937#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26938
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026939 Result createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026940#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026941 ResultValueType<BufferView>::type createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26942#ifndef VULKAN_HPP_NO_SMART_HANDLE
26943 UniqueBufferView createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26944#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026945#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26946
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026947 void destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026948#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026949 void destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026950#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26951
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026952 Result createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026953#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026954 ResultValueType<Image>::type createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26955#ifndef VULKAN_HPP_NO_SMART_HANDLE
26956 UniqueImage createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26957#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026958#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26959
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026960 void destroyImage( Image image, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026961#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026962 void destroyImage( Image image, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026963#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26964
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026965 void getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026966#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026967 SubresourceLayout getImageSubresourceLayout( Image image, const ImageSubresource & subresource ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026968#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26969
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026970 Result createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026971#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026972 ResultValueType<ImageView>::type createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26973#ifndef VULKAN_HPP_NO_SMART_HANDLE
26974 UniqueImageView createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26975#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026976#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26977
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026978 void destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026979#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026980 void destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026981#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26982
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026983 Result createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026984#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026985 ResultValueType<ShaderModule>::type createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26986#ifndef VULKAN_HPP_NO_SMART_HANDLE
26987 UniqueShaderModule createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26988#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026989#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26990
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026991 void destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026992#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026993 void destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026994#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26995
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026996 Result createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026997#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026998 ResultValueType<PipelineCache>::type createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26999#ifndef VULKAN_HPP_NO_SMART_HANDLE
27000 UniquePipelineCache createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27001#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027002#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27003
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027004 void destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027005#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027006 void destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027007#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27008
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027009 Result getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027010#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027011 template <typename Allocator = std::allocator<uint8_t>>
27012 typename ResultValueType<std::vector<uint8_t,Allocator>>::type getPipelineCacheData( PipelineCache pipelineCache ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027013#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27014
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027015 Result mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027016#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027017 ResultValueType<void>::type mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027018#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27019
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027020 Result createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027021#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027022 template <typename Allocator = std::allocator<Pipeline>>
27023 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27024 ResultValueType<Pipeline>::type createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27025#ifndef VULKAN_HPP_NO_SMART_HANDLE
27026 template <typename Allocator = std::allocator<Pipeline>>
27027 std::vector<UniquePipeline> createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27028 UniquePipeline createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27029#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027030#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27031
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027032 Result createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027033#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027034 template <typename Allocator = std::allocator<Pipeline>>
27035 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27036 ResultValueType<Pipeline>::type createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27037#ifndef VULKAN_HPP_NO_SMART_HANDLE
27038 template <typename Allocator = std::allocator<Pipeline>>
27039 std::vector<UniquePipeline> createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27040 UniquePipeline createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27041#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027042#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27043
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027044 void destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027045#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027046 void destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027047#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27048
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027049 Result createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027050#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027051 ResultValueType<PipelineLayout>::type createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27052#ifndef VULKAN_HPP_NO_SMART_HANDLE
27053 UniquePipelineLayout createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27054#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027055#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27056
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027057 void destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027058#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027059 void destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027060#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27061
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027062 Result createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027063#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027064 ResultValueType<Sampler>::type createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27065#ifndef VULKAN_HPP_NO_SMART_HANDLE
27066 UniqueSampler createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27067#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027068#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27069
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027070 void destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027071#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027072 void destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027073#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27074
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027075 Result createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027076#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027077 ResultValueType<DescriptorSetLayout>::type createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27078#ifndef VULKAN_HPP_NO_SMART_HANDLE
27079 UniqueDescriptorSetLayout createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27080#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027081#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27082
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027083 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027084#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027085 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator = nullptr ) 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 createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027089#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027090 ResultValueType<DescriptorPool>::type createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27091#ifndef VULKAN_HPP_NO_SMART_HANDLE
27092 UniqueDescriptorPool createDescriptorPoolUnique( const DescriptorPoolCreateInfo & 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 destroyDescriptorPool( DescriptorPool descriptorPool, 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 destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027099#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27100
27101#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027102 Result resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const;
27103#else
27104 ResultValueType<void>::type resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags = DescriptorPoolResetFlags() ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027105#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27106
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027107 Result allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027108#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027109 template <typename Allocator = std::allocator<DescriptorSet>>
27110 typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo ) const;
27111#ifndef VULKAN_HPP_NO_SMART_HANDLE
27112 template <typename Allocator = std::allocator<DescriptorSet>>
27113 std::vector<UniqueDescriptorSet> allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo ) const;
27114#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027115#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27116
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027117 Result freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027118#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027119 ResultValueType<void>::type freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027120#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27121
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027122 void updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027123#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027124 void updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027125#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27126
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027127 Result createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027128#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027129 ResultValueType<Framebuffer>::type createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27130#ifndef VULKAN_HPP_NO_SMART_HANDLE
27131 UniqueFramebuffer createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27132#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027133#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27134
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027135 void destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027136#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027137 void destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027138#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27139
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027140 Result createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027141#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027142 ResultValueType<RenderPass>::type createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27143#ifndef VULKAN_HPP_NO_SMART_HANDLE
27144 UniqueRenderPass createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27145#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027146#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27147
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027148 void destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027149#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027150 void destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027151#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27152
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027153 void getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027154#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027155 Extent2D getRenderAreaGranularity( RenderPass renderPass ) 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 createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027159#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027160 ResultValueType<CommandPool>::type createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27161#ifndef VULKAN_HPP_NO_SMART_HANDLE
27162 UniqueCommandPool createCommandPoolUnique( const CommandPoolCreateInfo & 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 destroyCommandPool( CommandPool commandPool, 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 destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027169#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27170
27171#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027172 Result resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const;
27173#else
27174 ResultValueType<void>::type resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) 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 allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027178#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027179 template <typename Allocator = std::allocator<CommandBuffer>>
27180 typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo ) const;
27181#ifndef VULKAN_HPP_NO_SMART_HANDLE
27182 template <typename Allocator = std::allocator<CommandBuffer>>
27183 std::vector<UniqueCommandBuffer> allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo ) const;
27184#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027185#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27186
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027187 void freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027188#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027189 void freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027190#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27191
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027192 Result createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027193#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027194 template <typename Allocator = std::allocator<SwapchainKHR>>
27195 typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27196 ResultValueType<SwapchainKHR>::type createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27197#ifndef VULKAN_HPP_NO_SMART_HANDLE
27198 template <typename Allocator = std::allocator<SwapchainKHR>>
27199 std::vector<UniqueSwapchainKHR> createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27200 UniqueSwapchainKHR createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27201#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027202#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27203
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027204 Result createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027205#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027206 ResultValueType<SwapchainKHR>::type createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27207#ifndef VULKAN_HPP_NO_SMART_HANDLE
27208 UniqueSwapchainKHR createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27209#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027210#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27211
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027212 void destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027213#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027214 void destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027215#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27216
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027217 Result getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027218#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027219 template <typename Allocator = std::allocator<Image>>
27220 typename ResultValueType<std::vector<Image,Allocator>>::type getSwapchainImagesKHR( SwapchainKHR swapchain ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027221#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27222
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027223 Result acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027224#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027225 ResultValue<uint32_t> acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027226#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27227
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060027228 Result debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT* pNameInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027229#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060027230 ResultValueType<void>::type debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT & nameInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027231#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27232
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060027233 Result debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT* pTagInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027234#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060027235 ResultValueType<void>::type debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT & tagInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027236#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27237
Lenny Komow6501c122016-08-31 15:03:49 -060027238#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027239 Result getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const;
27240#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27241 ResultValueType<HANDLE>::type getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType ) const;
27242#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komow6501c122016-08-31 15:03:49 -060027243#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27244
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027245 Result createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const;
Lenny Komow6501c122016-08-31 15:03:49 -060027246#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027247 ResultValueType<IndirectCommandsLayoutNVX>::type createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27248#ifndef VULKAN_HPP_NO_SMART_HANDLE
27249 UniqueIndirectCommandsLayoutNVX createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27250#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komow6501c122016-08-31 15:03:49 -060027251#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27252
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027253 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027254#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027255 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027256#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27257
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027258 Result createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027259#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027260 ResultValueType<ObjectTableNVX>::type createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27261#ifndef VULKAN_HPP_NO_SMART_HANDLE
27262 UniqueObjectTableNVX createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27263#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027264#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27265
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027266 void destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027267#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027268 void destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027269#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27270
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027271 Result registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027272#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027273 ResultValueType<void>::type registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027274#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27275
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027276 Result unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027277#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027278 ResultValueType<void>::type unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027279#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27280
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027281#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027282 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags ) const;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027283#else
27284 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags = CommandPoolTrimFlagsKHR() ) const;
27285#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027286
Mark Youngabc2d6e2017-07-07 07:59:56 -060027287#ifdef VK_USE_PLATFORM_WIN32_KHR
27288 Result getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027289#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027290 ResultValueType<HANDLE>::type getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027291#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060027292#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070027293
Mark Youngabc2d6e2017-07-07 07:59:56 -060027294#ifdef VK_USE_PLATFORM_WIN32_KHR
27295 Result getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle, MemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027296#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027297 ResultValueType<MemoryWin32HandlePropertiesKHR>::type getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027298#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060027299#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070027300
Mark Youngabc2d6e2017-07-07 07:59:56 -060027301 Result getMemoryFdKHR( const MemoryGetFdInfoKHR* pGetFdInfo, int* pFd ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027302#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027303 ResultValueType<int>::type getMemoryFdKHR( const MemoryGetFdInfoKHR & getFdInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027304#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27305
Mark Youngabc2d6e2017-07-07 07:59:56 -060027306 Result getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, int fd, MemoryFdPropertiesKHR* pMemoryFdProperties ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027307#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027308 ResultValueType<MemoryFdPropertiesKHR>::type getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, int fd ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027309#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27310
Mark Youngabc2d6e2017-07-07 07:59:56 -060027311#ifdef VK_USE_PLATFORM_WIN32_KHR
27312 Result getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027313#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027314 ResultValueType<HANDLE>::type getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027315#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060027316#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070027317
Mark Youngabc2d6e2017-07-07 07:59:56 -060027318#ifdef VK_USE_PLATFORM_WIN32_KHR
27319 Result importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027320#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027321 ResultValueType<void>::type importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027322#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060027323#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070027324
Mark Youngabc2d6e2017-07-07 07:59:56 -060027325 Result getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027326#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027327 ResultValueType<int>::type getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR & getFdInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027328#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27329
Mark Youngabc2d6e2017-07-07 07:59:56 -060027330 Result importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027331#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060027332 ResultValueType<void>::type importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo ) const;
27333#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27334
27335#ifdef VK_USE_PLATFORM_WIN32_KHR
27336 Result getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const;
27337#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27338 ResultValueType<HANDLE>::type getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
27339#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27340#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27341
27342#ifdef VK_USE_PLATFORM_WIN32_KHR
27343 Result importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo ) const;
27344#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27345 ResultValueType<void>::type importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo ) const;
27346#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27347#endif /*VK_USE_PLATFORM_WIN32_KHR*/
27348
27349 Result getFenceFdKHR( const FenceGetFdInfoKHR* pGetFdInfo, int* pFd ) const;
27350#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27351 ResultValueType<int>::type getFenceFdKHR( const FenceGetFdInfoKHR & getFdInfo ) const;
27352#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27353
27354 Result importFenceFdKHR( const ImportFenceFdInfoKHR* pImportFenceFdInfo ) const;
27355#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27356 ResultValueType<void>::type importFenceFdKHR( const ImportFenceFdInfoKHR & importFenceFdInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027357#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27358
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027359 Result displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027360#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027361 ResultValueType<void>::type displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070027362#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27363
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027364 Result registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Mark Young39389872017-01-19 21:10:49 -070027365#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060027366 ResultValueType<Fence>::type registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Young39389872017-01-19 21:10:49 -070027367#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27368
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027369 Result registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Mark Young39389872017-01-19 21:10:49 -070027370#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060027371 ResultValueType<Fence>::type registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Young39389872017-01-19 21:10:49 -070027372#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27373
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027374 Result getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const;
Mark Young39389872017-01-19 21:10:49 -070027375#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027376 ResultValue<uint64_t> getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter ) const;
Mark Young39389872017-01-19 21:10:49 -070027377#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27378
Mark Young0f183a82017-02-28 09:58:04 -070027379 void getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ) const;
27380#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27381 PeerMemoryFeatureFlagsKHX getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const;
27382#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27383
Lenny Komowb79f04a2017-09-18 17:07:00 -060027384 Result bindBufferMemory2KHR( uint32_t bindInfoCount, const BindBufferMemoryInfoKHR* pBindInfos ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027385#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060027386 ResultValueType<void>::type bindBufferMemory2KHR( ArrayProxy<const BindBufferMemoryInfoKHR> bindInfos ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027387#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27388
Lenny Komowb79f04a2017-09-18 17:07:00 -060027389 Result bindImageMemory2KHR( uint32_t bindInfoCount, const BindImageMemoryInfoKHR* pBindInfos ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027390#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060027391 ResultValueType<void>::type bindImageMemory2KHR( ArrayProxy<const BindImageMemoryInfoKHR> bindInfos ) const;
Mark Young0f183a82017-02-28 09:58:04 -070027392#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27393
27394 Result getGroupPresentCapabilitiesKHX( DeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ) const;
27395#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27396 ResultValueType<DeviceGroupPresentCapabilitiesKHX>::type getGroupPresentCapabilitiesKHX() const;
27397#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27398
27399 Result getGroupSurfacePresentModesKHX( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHX* pModes ) const;
27400#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27401 ResultValueType<DeviceGroupPresentModeFlagsKHX>::type getGroupSurfacePresentModesKHX( SurfaceKHR surface ) const;
27402#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27403
27404 Result acquireNextImage2KHX( const AcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex ) const;
27405#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27406 ResultValue<uint32_t> acquireNextImage2KHX( const AcquireNextImageInfoKHX & acquireInfo ) const;
27407#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27408
27409 Result createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) const;
27410#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27411 ResultValueType<DescriptorUpdateTemplateKHR>::type createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27412#ifndef VULKAN_HPP_NO_SMART_HANDLE
27413 UniqueDescriptorUpdateTemplateKHR createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27414#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27415#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27416
27417 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const AllocationCallbacks* pAllocator ) const;
27418#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27419 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27420#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27421
27422 void updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData ) const;
27423
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027424 void setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata ) const;
27425#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27426 void setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata ) const;
27427#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27428
Mark Lobodzinski54385432017-05-15 10:27:52 -060027429 Result getSwapchainStatusKHR( SwapchainKHR swapchain ) const;
27430
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027431 Result getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const;
27432#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27433 ResultValueType<RefreshCycleDurationGOOGLE>::type getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain ) const;
27434#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27435
27436 Result getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings ) const;
27437#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27438 template <typename Allocator = std::allocator<PastPresentationTimingGOOGLE>>
27439 typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type getPastPresentationTimingGOOGLE( SwapchainKHR swapchain ) const;
27440#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27441
Mark Youngabc2d6e2017-07-07 07:59:56 -060027442 void getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR* pInfo, MemoryRequirements2KHR* pMemoryRequirements ) const;
27443#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27444 MemoryRequirements2KHR getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR & info ) const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060027445 template <typename ...T>
27446 StructureChain<T...> getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR & info ) const;
Mark Youngabc2d6e2017-07-07 07:59:56 -060027447#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27448
27449 void getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR* pInfo, MemoryRequirements2KHR* pMemoryRequirements ) const;
27450#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27451 MemoryRequirements2KHR getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR & info ) const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060027452 template <typename ...T>
27453 StructureChain<T...> getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR & info ) const;
Mark Youngabc2d6e2017-07-07 07:59:56 -060027454#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27455
27456 void getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2KHR* pInfo, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements2KHR* pSparseMemoryRequirements ) const;
27457#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27458 template <typename Allocator = std::allocator<SparseImageMemoryRequirements2KHR>>
27459 std::vector<SparseImageMemoryRequirements2KHR,Allocator> getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2KHR & info ) const;
27460#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27461
Lenny Komowb79f04a2017-09-18 17:07:00 -060027462 Result createSamplerYcbcrConversionKHR( const SamplerYcbcrConversionCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SamplerYcbcrConversionKHR* pYcbcrConversion ) const;
27463#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27464 ResultValueType<SamplerYcbcrConversionKHR>::type createSamplerYcbcrConversionKHR( const SamplerYcbcrConversionCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27465#ifndef VULKAN_HPP_NO_SMART_HANDLE
27466 UniqueSamplerYcbcrConversionKHR createSamplerYcbcrConversionKHRUnique( const SamplerYcbcrConversionCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27467#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27468#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27469
27470 void destroySamplerYcbcrConversionKHR( SamplerYcbcrConversionKHR ycbcrConversion, const AllocationCallbacks* pAllocator ) const;
27471#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27472 void destroySamplerYcbcrConversionKHR( SamplerYcbcrConversionKHR ycbcrConversion, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27473#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27474
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060027475 Result createValidationCacheEXT( const ValidationCacheCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, ValidationCacheEXT* pValidationCache ) const;
27476#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27477 ResultValueType<ValidationCacheEXT>::type createValidationCacheEXT( const ValidationCacheCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27478#ifndef VULKAN_HPP_NO_SMART_HANDLE
27479 UniqueValidationCacheEXT createValidationCacheEXTUnique( const ValidationCacheCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27480#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27481#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27482
27483 void destroyValidationCacheEXT( ValidationCacheEXT validationCache, const AllocationCallbacks* pAllocator ) const;
27484#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27485 void destroyValidationCacheEXT( ValidationCacheEXT validationCache, Optional<const AllocationCallbacks> allocator = nullptr ) const;
27486#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27487
27488 Result getValidationCacheDataEXT( ValidationCacheEXT validationCache, size_t* pDataSize, void* pData ) const;
27489#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27490 template <typename Allocator = std::allocator<uint8_t>>
27491 typename ResultValueType<std::vector<uint8_t,Allocator>>::type getValidationCacheDataEXT( ValidationCacheEXT validationCache ) const;
27492#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27493
27494 Result mergeValidationCachesEXT( ValidationCacheEXT dstCache, uint32_t srcCacheCount, const ValidationCacheEXT* pSrcCaches ) const;
27495#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27496 ResultValueType<void>::type mergeValidationCachesEXT( ValidationCacheEXT dstCache, ArrayProxy<const ValidationCacheEXT> srcCaches ) const;
27497#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27498
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027499
27500
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070027501 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDevice() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027502 {
27503 return m_device;
27504 }
27505
27506 explicit operator bool() const
27507 {
27508 return m_device != VK_NULL_HANDLE;
27509 }
27510
27511 bool operator!() const
27512 {
27513 return m_device == VK_NULL_HANDLE;
27514 }
27515
27516 private:
27517 VkDevice m_device;
27518 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027519
Lenny Komowbed9b5c2016-08-11 11:23:15 -060027520 static_assert( sizeof( Device ) == sizeof( VkDevice ), "handle and wrapper have different size!" );
27521
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027522#ifndef VULKAN_HPP_NO_SMART_HANDLE
27523 class BufferDeleter
27524 {
27525 public:
27526 BufferDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27527 : m_device( device )
27528 , m_allocator( allocator )
27529 {}
27530
27531 void operator()( Buffer buffer )
27532 {
27533 m_device.destroyBuffer( buffer, m_allocator );
27534 }
27535
27536 private:
27537 Device m_device;
27538 Optional<const AllocationCallbacks> m_allocator;
27539 };
27540
27541 class BufferViewDeleter
27542 {
27543 public:
27544 BufferViewDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27545 : m_device( device )
27546 , m_allocator( allocator )
27547 {}
27548
27549 void operator()( BufferView bufferView )
27550 {
27551 m_device.destroyBufferView( bufferView, m_allocator );
27552 }
27553
27554 private:
27555 Device m_device;
27556 Optional<const AllocationCallbacks> m_allocator;
27557 };
27558
27559 class CommandBufferDeleter
27560 {
27561 public:
27562 CommandBufferDeleter( Device device = Device(), CommandPool commandPool = CommandPool() )
27563 : m_device( device )
27564 , m_commandPool( commandPool )
27565 {}
27566
27567 void operator()( CommandBuffer commandBuffer )
27568 {
27569 m_device.freeCommandBuffers( m_commandPool, commandBuffer );
27570 }
27571
27572 private:
27573 Device m_device;
27574 CommandPool m_commandPool;
27575 };
27576
27577 class CommandPoolDeleter
27578 {
27579 public:
27580 CommandPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27581 : m_device( device )
27582 , m_allocator( allocator )
27583 {}
27584
27585 void operator()( CommandPool commandPool )
27586 {
27587 m_device.destroyCommandPool( commandPool, m_allocator );
27588 }
27589
27590 private:
27591 Device m_device;
27592 Optional<const AllocationCallbacks> m_allocator;
27593 };
27594
27595 class DescriptorPoolDeleter
27596 {
27597 public:
27598 DescriptorPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27599 : m_device( device )
27600 , m_allocator( allocator )
27601 {}
27602
27603 void operator()( DescriptorPool descriptorPool )
27604 {
27605 m_device.destroyDescriptorPool( descriptorPool, m_allocator );
27606 }
27607
27608 private:
27609 Device m_device;
27610 Optional<const AllocationCallbacks> m_allocator;
27611 };
27612
27613 class DescriptorSetDeleter
27614 {
27615 public:
27616 DescriptorSetDeleter( Device device = Device(), DescriptorPool descriptorPool = DescriptorPool() )
27617 : m_device( device )
27618 , m_descriptorPool( descriptorPool )
27619 {}
27620
27621 void operator()( DescriptorSet descriptorSet )
27622 {
27623 m_device.freeDescriptorSets( m_descriptorPool, descriptorSet );
27624 }
27625
27626 private:
27627 Device m_device;
27628 DescriptorPool m_descriptorPool;
27629 };
27630
27631 class DescriptorSetLayoutDeleter
27632 {
27633 public:
27634 DescriptorSetLayoutDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27635 : m_device( device )
27636 , m_allocator( allocator )
27637 {}
27638
27639 void operator()( DescriptorSetLayout descriptorSetLayout )
27640 {
27641 m_device.destroyDescriptorSetLayout( descriptorSetLayout, m_allocator );
27642 }
27643
27644 private:
27645 Device m_device;
27646 Optional<const AllocationCallbacks> m_allocator;
27647 };
27648
Mark Young0f183a82017-02-28 09:58:04 -070027649 class DescriptorUpdateTemplateKHRDeleter
27650 {
27651 public:
27652 DescriptorUpdateTemplateKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27653 : m_device( device )
27654 , m_allocator( allocator )
27655 {}
27656
27657 void operator()( DescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR )
27658 {
27659 m_device.destroyDescriptorUpdateTemplateKHR( descriptorUpdateTemplateKHR, m_allocator );
27660 }
27661
27662 private:
27663 Device m_device;
27664 Optional<const AllocationCallbacks> m_allocator;
27665 };
27666
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027667 class DeviceMemoryDeleter
27668 {
27669 public:
27670 DeviceMemoryDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27671 : m_device( device )
27672 , m_allocator( allocator )
27673 {}
27674
27675 void operator()( DeviceMemory deviceMemory )
27676 {
27677 m_device.freeMemory( deviceMemory, m_allocator );
27678 }
27679
27680 private:
27681 Device m_device;
27682 Optional<const AllocationCallbacks> m_allocator;
27683 };
27684
27685 class EventDeleter
27686 {
27687 public:
27688 EventDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27689 : m_device( device )
27690 , m_allocator( allocator )
27691 {}
27692
27693 void operator()( Event event )
27694 {
27695 m_device.destroyEvent( event, m_allocator );
27696 }
27697
27698 private:
27699 Device m_device;
27700 Optional<const AllocationCallbacks> m_allocator;
27701 };
27702
27703 class FenceDeleter
27704 {
27705 public:
27706 FenceDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27707 : m_device( device )
27708 , m_allocator( allocator )
27709 {}
27710
27711 void operator()( Fence fence )
27712 {
27713 m_device.destroyFence( fence, m_allocator );
27714 }
27715
27716 private:
27717 Device m_device;
27718 Optional<const AllocationCallbacks> m_allocator;
27719 };
27720
27721 class FramebufferDeleter
27722 {
27723 public:
27724 FramebufferDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27725 : m_device( device )
27726 , m_allocator( allocator )
27727 {}
27728
27729 void operator()( Framebuffer framebuffer )
27730 {
27731 m_device.destroyFramebuffer( framebuffer, m_allocator );
27732 }
27733
27734 private:
27735 Device m_device;
27736 Optional<const AllocationCallbacks> m_allocator;
27737 };
27738
27739 class ImageDeleter
27740 {
27741 public:
27742 ImageDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27743 : m_device( device )
27744 , m_allocator( allocator )
27745 {}
27746
27747 void operator()( Image image )
27748 {
27749 m_device.destroyImage( image, m_allocator );
27750 }
27751
27752 private:
27753 Device m_device;
27754 Optional<const AllocationCallbacks> m_allocator;
27755 };
27756
27757 class ImageViewDeleter
27758 {
27759 public:
27760 ImageViewDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27761 : m_device( device )
27762 , m_allocator( allocator )
27763 {}
27764
27765 void operator()( ImageView imageView )
27766 {
27767 m_device.destroyImageView( imageView, m_allocator );
27768 }
27769
27770 private:
27771 Device m_device;
27772 Optional<const AllocationCallbacks> m_allocator;
27773 };
27774
27775 class IndirectCommandsLayoutNVXDeleter
27776 {
27777 public:
27778 IndirectCommandsLayoutNVXDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27779 : m_device( device )
27780 , m_allocator( allocator )
27781 {}
27782
27783 void operator()( IndirectCommandsLayoutNVX indirectCommandsLayoutNVX )
27784 {
27785 m_device.destroyIndirectCommandsLayoutNVX( indirectCommandsLayoutNVX, m_allocator );
27786 }
27787
27788 private:
27789 Device m_device;
27790 Optional<const AllocationCallbacks> m_allocator;
27791 };
27792
27793 class ObjectTableNVXDeleter
27794 {
27795 public:
27796 ObjectTableNVXDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27797 : m_device( device )
27798 , m_allocator( allocator )
27799 {}
27800
27801 void operator()( ObjectTableNVX objectTableNVX )
27802 {
27803 m_device.destroyObjectTableNVX( objectTableNVX, m_allocator );
27804 }
27805
27806 private:
27807 Device m_device;
27808 Optional<const AllocationCallbacks> m_allocator;
27809 };
27810
27811 class PipelineDeleter
27812 {
27813 public:
27814 PipelineDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27815 : m_device( device )
27816 , m_allocator( allocator )
27817 {}
27818
27819 void operator()( Pipeline pipeline )
27820 {
27821 m_device.destroyPipeline( pipeline, m_allocator );
27822 }
27823
27824 private:
27825 Device m_device;
27826 Optional<const AllocationCallbacks> m_allocator;
27827 };
27828
27829 class PipelineCacheDeleter
27830 {
27831 public:
27832 PipelineCacheDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27833 : m_device( device )
27834 , m_allocator( allocator )
27835 {}
27836
27837 void operator()( PipelineCache pipelineCache )
27838 {
27839 m_device.destroyPipelineCache( pipelineCache, m_allocator );
27840 }
27841
27842 private:
27843 Device m_device;
27844 Optional<const AllocationCallbacks> m_allocator;
27845 };
27846
27847 class PipelineLayoutDeleter
27848 {
27849 public:
27850 PipelineLayoutDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27851 : m_device( device )
27852 , m_allocator( allocator )
27853 {}
27854
27855 void operator()( PipelineLayout pipelineLayout )
27856 {
27857 m_device.destroyPipelineLayout( pipelineLayout, m_allocator );
27858 }
27859
27860 private:
27861 Device m_device;
27862 Optional<const AllocationCallbacks> m_allocator;
27863 };
27864
27865 class QueryPoolDeleter
27866 {
27867 public:
27868 QueryPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27869 : m_device( device )
27870 , m_allocator( allocator )
27871 {}
27872
27873 void operator()( QueryPool queryPool )
27874 {
27875 m_device.destroyQueryPool( queryPool, m_allocator );
27876 }
27877
27878 private:
27879 Device m_device;
27880 Optional<const AllocationCallbacks> m_allocator;
27881 };
27882
27883 class RenderPassDeleter
27884 {
27885 public:
27886 RenderPassDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27887 : m_device( device )
27888 , m_allocator( allocator )
27889 {}
27890
27891 void operator()( RenderPass renderPass )
27892 {
27893 m_device.destroyRenderPass( renderPass, m_allocator );
27894 }
27895
27896 private:
27897 Device m_device;
27898 Optional<const AllocationCallbacks> m_allocator;
27899 };
27900
27901 class SamplerDeleter
27902 {
27903 public:
27904 SamplerDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27905 : m_device( device )
27906 , m_allocator( allocator )
27907 {}
27908
27909 void operator()( Sampler sampler )
27910 {
27911 m_device.destroySampler( sampler, m_allocator );
27912 }
27913
27914 private:
27915 Device m_device;
27916 Optional<const AllocationCallbacks> m_allocator;
27917 };
27918
Lenny Komowb79f04a2017-09-18 17:07:00 -060027919 class SamplerYcbcrConversionKHRDeleter
27920 {
27921 public:
27922 SamplerYcbcrConversionKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27923 : m_device( device )
27924 , m_allocator( allocator )
27925 {}
27926
27927 void operator()( SamplerYcbcrConversionKHR samplerYcbcrConversionKHR )
27928 {
27929 m_device.destroySamplerYcbcrConversionKHR( samplerYcbcrConversionKHR, m_allocator );
27930 }
27931
27932 private:
27933 Device m_device;
27934 Optional<const AllocationCallbacks> m_allocator;
27935 };
27936
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027937 class SemaphoreDeleter
27938 {
27939 public:
27940 SemaphoreDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27941 : m_device( device )
27942 , m_allocator( allocator )
27943 {}
27944
27945 void operator()( Semaphore semaphore )
27946 {
27947 m_device.destroySemaphore( semaphore, m_allocator );
27948 }
27949
27950 private:
27951 Device m_device;
27952 Optional<const AllocationCallbacks> m_allocator;
27953 };
27954
27955 class ShaderModuleDeleter
27956 {
27957 public:
27958 ShaderModuleDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27959 : m_device( device )
27960 , m_allocator( allocator )
27961 {}
27962
27963 void operator()( ShaderModule shaderModule )
27964 {
27965 m_device.destroyShaderModule( shaderModule, m_allocator );
27966 }
27967
27968 private:
27969 Device m_device;
27970 Optional<const AllocationCallbacks> m_allocator;
27971 };
27972
27973 class SwapchainKHRDeleter
27974 {
27975 public:
27976 SwapchainKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27977 : m_device( device )
27978 , m_allocator( allocator )
27979 {}
27980
27981 void operator()( SwapchainKHR swapchainKHR )
27982 {
27983 m_device.destroySwapchainKHR( swapchainKHR, m_allocator );
27984 }
27985
27986 private:
27987 Device m_device;
27988 Optional<const AllocationCallbacks> m_allocator;
27989 };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060027990
27991 class ValidationCacheEXTDeleter
27992 {
27993 public:
27994 ValidationCacheEXTDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
27995 : m_device( device )
27996 , m_allocator( allocator )
27997 {}
27998
27999 void operator()( ValidationCacheEXT validationCacheEXT )
28000 {
28001 m_device.destroyValidationCacheEXT( validationCacheEXT, m_allocator );
28002 }
28003
28004 private:
28005 Device m_device;
28006 Optional<const AllocationCallbacks> m_allocator;
28007 };
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028008#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28009
28010 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const char* pName ) const
28011 {
28012 return vkGetDeviceProcAddr( m_device, pName );
28013 }
28014#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28015 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const std::string & name ) const
28016 {
28017 return vkGetDeviceProcAddr( m_device, name.c_str() );
28018 }
28019#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28020
28021 VULKAN_HPP_INLINE void Device::destroy( const AllocationCallbacks* pAllocator ) const
28022 {
28023 vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28024 }
28025#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28026 VULKAN_HPP_INLINE void Device::destroy( Optional<const AllocationCallbacks> allocator ) const
28027 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028028 vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028029 }
28030#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28031
28032 VULKAN_HPP_INLINE void Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue ) const
28033 {
28034 vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( pQueue ) );
28035 }
28036#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28037 VULKAN_HPP_INLINE Queue Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const
28038 {
28039 Queue queue;
28040 vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( &queue ) );
28041 return queue;
28042 }
28043#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28044
28045#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28046 VULKAN_HPP_INLINE Result Device::waitIdle() const
28047 {
28048 return static_cast<Result>( vkDeviceWaitIdle( m_device ) );
28049 }
28050#else
28051 VULKAN_HPP_INLINE ResultValueType<void>::type Device::waitIdle() const
28052 {
28053 Result result = static_cast<Result>( vkDeviceWaitIdle( m_device ) );
28054 return createResultValue( result, "vk::Device::waitIdle" );
28055 }
28056#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28057
28058 VULKAN_HPP_INLINE Result Device::allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory ) const
28059 {
28060 return static_cast<Result>( vkAllocateMemory( m_device, reinterpret_cast<const VkMemoryAllocateInfo*>( pAllocateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDeviceMemory*>( pMemory ) ) );
28061 }
28062#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28063 VULKAN_HPP_INLINE ResultValueType<DeviceMemory>::type Device::allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator ) const
28064 {
28065 DeviceMemory memory;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028066 Result result = static_cast<Result>( vkAllocateMemory( m_device, reinterpret_cast<const VkMemoryAllocateInfo*>( &allocateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDeviceMemory*>( &memory ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028067 return createResultValue( result, memory, "vk::Device::allocateMemory" );
28068 }
28069#ifndef VULKAN_HPP_NO_SMART_HANDLE
28070 VULKAN_HPP_INLINE UniqueDeviceMemory Device::allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator ) const
28071 {
28072 DeviceMemoryDeleter deleter( *this, allocator );
28073 return UniqueDeviceMemory( allocateMemory( allocateInfo, allocator ), deleter );
28074 }
28075#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28076#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28077
28078 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator ) const
28079 {
28080 vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28081 }
28082#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28083 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator ) const
28084 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028085 vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028086 }
28087#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28088
28089 VULKAN_HPP_INLINE Result Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData ) const
28090 {
28091 return static_cast<Result>( vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), ppData ) );
28092 }
28093#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28094 VULKAN_HPP_INLINE ResultValueType<void*>::type Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags ) const
28095 {
28096 void* pData;
28097 Result result = static_cast<Result>( vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), &pData ) );
28098 return createResultValue( result, pData, "vk::Device::mapMemory" );
28099 }
28100#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28101
28102 VULKAN_HPP_INLINE void Device::unmapMemory( DeviceMemory memory ) const
28103 {
28104 vkUnmapMemory( m_device, static_cast<VkDeviceMemory>( memory ) );
28105 }
28106
28107 VULKAN_HPP_INLINE Result Device::flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const
28108 {
28109 return static_cast<Result>( vkFlushMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
28110 }
28111#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28112 VULKAN_HPP_INLINE ResultValueType<void>::type Device::flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const
28113 {
28114 Result result = static_cast<Result>( vkFlushMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
28115 return createResultValue( result, "vk::Device::flushMappedMemoryRanges" );
28116 }
28117#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28118
28119 VULKAN_HPP_INLINE Result Device::invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const
28120 {
28121 return static_cast<Result>( vkInvalidateMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
28122 }
28123#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28124 VULKAN_HPP_INLINE ResultValueType<void>::type Device::invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const
28125 {
28126 Result result = static_cast<Result>( vkInvalidateMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
28127 return createResultValue( result, "vk::Device::invalidateMappedMemoryRanges" );
28128 }
28129#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28130
28131 VULKAN_HPP_INLINE void Device::getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes ) const
28132 {
28133 vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), pCommittedMemoryInBytes );
28134 }
28135#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28136 VULKAN_HPP_INLINE DeviceSize Device::getMemoryCommitment( DeviceMemory memory ) const
28137 {
28138 DeviceSize committedMemoryInBytes;
28139 vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), &committedMemoryInBytes );
28140 return committedMemoryInBytes;
28141 }
28142#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28143
28144 VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements ) const
28145 {
28146 vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
28147 }
28148#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28149 VULKAN_HPP_INLINE MemoryRequirements Device::getBufferMemoryRequirements( Buffer buffer ) const
28150 {
28151 MemoryRequirements memoryRequirements;
28152 vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
28153 return memoryRequirements;
28154 }
28155#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28156
28157#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28158 VULKAN_HPP_INLINE Result Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const
28159 {
28160 return static_cast<Result>( vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
28161 }
28162#else
28163 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const
28164 {
28165 Result result = static_cast<Result>( vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
28166 return createResultValue( result, "vk::Device::bindBufferMemory" );
28167 }
28168#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28169
28170 VULKAN_HPP_INLINE void Device::getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements ) const
28171 {
28172 vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
28173 }
28174#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28175 VULKAN_HPP_INLINE MemoryRequirements Device::getImageMemoryRequirements( Image image ) const
28176 {
28177 MemoryRequirements memoryRequirements;
28178 vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
28179 return memoryRequirements;
28180 }
28181#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28182
28183#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28184 VULKAN_HPP_INLINE Result Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const
28185 {
28186 return static_cast<Result>( vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
28187 }
28188#else
28189 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const
28190 {
28191 Result result = static_cast<Result>( vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
28192 return createResultValue( result, "vk::Device::bindImageMemory" );
28193 }
28194#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28195
28196 VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements ) const
28197 {
28198 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), pSparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( pSparseMemoryRequirements ) );
28199 }
28200#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28201 template <typename Allocator>
28202 VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements,Allocator> Device::getImageSparseMemoryRequirements( Image image ) const
28203 {
28204 std::vector<SparseImageMemoryRequirements,Allocator> sparseMemoryRequirements;
28205 uint32_t sparseMemoryRequirementCount;
28206 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, nullptr );
28207 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
28208 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( sparseMemoryRequirements.data() ) );
28209 return sparseMemoryRequirements;
28210 }
28211#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28212
28213 VULKAN_HPP_INLINE Result Device::createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
28214 {
28215 return static_cast<Result>( vkCreateFence( m_device, reinterpret_cast<const VkFenceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
28216 }
28217#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28218 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28219 {
28220 Fence fence;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028221 Result result = static_cast<Result>( vkCreateFence( m_device, reinterpret_cast<const VkFenceCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkFence*>( &fence ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028222 return createResultValue( result, fence, "vk::Device::createFence" );
28223 }
28224#ifndef VULKAN_HPP_NO_SMART_HANDLE
28225 VULKAN_HPP_INLINE UniqueFence Device::createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28226 {
28227 FenceDeleter deleter( *this, allocator );
28228 return UniqueFence( createFence( createInfo, allocator ), deleter );
28229 }
28230#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28231#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28232
28233 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, const AllocationCallbacks* pAllocator ) const
28234 {
28235 vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28236 }
28237#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28238 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator ) const
28239 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028240 vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028241 }
28242#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28243
28244 VULKAN_HPP_INLINE Result Device::resetFences( uint32_t fenceCount, const Fence* pFences ) const
28245 {
28246 return static_cast<Result>( vkResetFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ) ) );
28247 }
28248#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28249 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetFences( ArrayProxy<const Fence> fences ) const
28250 {
28251 Result result = static_cast<Result>( vkResetFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ) ) );
28252 return createResultValue( result, "vk::Device::resetFences" );
28253 }
28254#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28255
28256#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28257 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence ) const
28258 {
28259 return static_cast<Result>( vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
28260 }
28261#else
28262 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence ) const
28263 {
28264 Result result = static_cast<Result>( vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
28265 return createResultValue( result, "vk::Device::getFenceStatus", { Result::eSuccess, Result::eNotReady } );
28266 }
28267#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28268
28269 VULKAN_HPP_INLINE Result Device::waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout ) const
28270 {
28271 return static_cast<Result>( vkWaitForFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ), waitAll, timeout ) );
28272 }
28273#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28274 VULKAN_HPP_INLINE Result Device::waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout ) const
28275 {
28276 Result result = static_cast<Result>( vkWaitForFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ), waitAll, timeout ) );
28277 return createResultValue( result, "vk::Device::waitForFences", { Result::eSuccess, Result::eTimeout } );
28278 }
28279#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28280
28281 VULKAN_HPP_INLINE Result Device::createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore ) const
28282 {
28283 return static_cast<Result>( vkCreateSemaphore( m_device, reinterpret_cast<const VkSemaphoreCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSemaphore*>( pSemaphore ) ) );
28284 }
28285#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28286 VULKAN_HPP_INLINE ResultValueType<Semaphore>::type Device::createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28287 {
28288 Semaphore semaphore;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028289 Result result = static_cast<Result>( vkCreateSemaphore( m_device, reinterpret_cast<const VkSemaphoreCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSemaphore*>( &semaphore ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028290 return createResultValue( result, semaphore, "vk::Device::createSemaphore" );
28291 }
28292#ifndef VULKAN_HPP_NO_SMART_HANDLE
28293 VULKAN_HPP_INLINE UniqueSemaphore Device::createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28294 {
28295 SemaphoreDeleter deleter( *this, allocator );
28296 return UniqueSemaphore( createSemaphore( createInfo, allocator ), deleter );
28297 }
28298#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28299#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28300
28301 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator ) const
28302 {
28303 vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28304 }
28305#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28306 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator ) const
28307 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028308 vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028309 }
28310#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28311
28312 VULKAN_HPP_INLINE Result Device::createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent ) const
28313 {
28314 return static_cast<Result>( vkCreateEvent( m_device, reinterpret_cast<const VkEventCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkEvent*>( pEvent ) ) );
28315 }
28316#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28317 VULKAN_HPP_INLINE ResultValueType<Event>::type Device::createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28318 {
28319 Event event;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028320 Result result = static_cast<Result>( vkCreateEvent( m_device, reinterpret_cast<const VkEventCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkEvent*>( &event ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028321 return createResultValue( result, event, "vk::Device::createEvent" );
28322 }
28323#ifndef VULKAN_HPP_NO_SMART_HANDLE
28324 VULKAN_HPP_INLINE UniqueEvent Device::createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28325 {
28326 EventDeleter deleter( *this, allocator );
28327 return UniqueEvent( createEvent( createInfo, allocator ), deleter );
28328 }
28329#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28330#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28331
28332 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, const AllocationCallbacks* pAllocator ) const
28333 {
28334 vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28335 }
28336#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28337 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, Optional<const AllocationCallbacks> allocator ) const
28338 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028339 vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028340 }
28341#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28342
28343#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28344 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event ) const
28345 {
28346 return static_cast<Result>( vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
28347 }
28348#else
28349 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event ) const
28350 {
28351 Result result = static_cast<Result>( vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
28352 return createResultValue( result, "vk::Device::getEventStatus", { Result::eEventSet, Result::eEventReset } );
28353 }
28354#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28355
28356#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28357 VULKAN_HPP_INLINE Result Device::setEvent( Event event ) const
28358 {
28359 return static_cast<Result>( vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
28360 }
28361#else
28362 VULKAN_HPP_INLINE ResultValueType<void>::type Device::setEvent( Event event ) const
28363 {
28364 Result result = static_cast<Result>( vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
28365 return createResultValue( result, "vk::Device::setEvent" );
28366 }
28367#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28368
28369#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28370 VULKAN_HPP_INLINE Result Device::resetEvent( Event event ) const
28371 {
28372 return static_cast<Result>( vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
28373 }
28374#else
28375 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetEvent( Event event ) const
28376 {
28377 Result result = static_cast<Result>( vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
28378 return createResultValue( result, "vk::Device::resetEvent" );
28379 }
28380#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28381
28382 VULKAN_HPP_INLINE Result Device::createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool ) const
28383 {
28384 return static_cast<Result>( vkCreateQueryPool( m_device, reinterpret_cast<const VkQueryPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkQueryPool*>( pQueryPool ) ) );
28385 }
28386#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28387 VULKAN_HPP_INLINE ResultValueType<QueryPool>::type Device::createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28388 {
28389 QueryPool queryPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028390 Result result = static_cast<Result>( vkCreateQueryPool( m_device, reinterpret_cast<const VkQueryPoolCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkQueryPool*>( &queryPool ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028391 return createResultValue( result, queryPool, "vk::Device::createQueryPool" );
28392 }
28393#ifndef VULKAN_HPP_NO_SMART_HANDLE
28394 VULKAN_HPP_INLINE UniqueQueryPool Device::createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28395 {
28396 QueryPoolDeleter deleter( *this, allocator );
28397 return UniqueQueryPool( createQueryPool( createInfo, allocator ), deleter );
28398 }
28399#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28400#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28401
28402 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator ) const
28403 {
28404 vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28405 }
28406#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28407 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator ) const
28408 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028409 vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028410 }
28411#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28412
28413 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, DeviceSize stride, QueryResultFlags flags ) const
28414 {
28415 return static_cast<Result>( vkGetQueryPoolResults( m_device, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, dataSize, pData, stride, static_cast<VkQueryResultFlags>( flags ) ) );
28416 }
28417#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28418 template <typename T>
28419 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, ArrayProxy<T> data, DeviceSize stride, QueryResultFlags flags ) const
28420 {
28421 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 ) ) );
28422 return createResultValue( result, "vk::Device::getQueryPoolResults", { Result::eSuccess, Result::eNotReady } );
28423 }
28424#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28425
28426 VULKAN_HPP_INLINE Result Device::createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer ) const
28427 {
28428 return static_cast<Result>( vkCreateBuffer( m_device, reinterpret_cast<const VkBufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBuffer*>( pBuffer ) ) );
28429 }
28430#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28431 VULKAN_HPP_INLINE ResultValueType<Buffer>::type Device::createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28432 {
28433 Buffer buffer;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028434 Result result = static_cast<Result>( vkCreateBuffer( m_device, reinterpret_cast<const VkBufferCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkBuffer*>( &buffer ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028435 return createResultValue( result, buffer, "vk::Device::createBuffer" );
28436 }
28437#ifndef VULKAN_HPP_NO_SMART_HANDLE
28438 VULKAN_HPP_INLINE UniqueBuffer Device::createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28439 {
28440 BufferDeleter deleter( *this, allocator );
28441 return UniqueBuffer( createBuffer( createInfo, allocator ), deleter );
28442 }
28443#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28444#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28445
28446 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator ) const
28447 {
28448 vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28449 }
28450#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28451 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator ) const
28452 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028453 vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028454 }
28455#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28456
28457 VULKAN_HPP_INLINE Result Device::createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView ) const
28458 {
28459 return static_cast<Result>( vkCreateBufferView( m_device, reinterpret_cast<const VkBufferViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBufferView*>( pView ) ) );
28460 }
28461#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28462 VULKAN_HPP_INLINE ResultValueType<BufferView>::type Device::createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28463 {
28464 BufferView view;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028465 Result result = static_cast<Result>( vkCreateBufferView( m_device, reinterpret_cast<const VkBufferViewCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkBufferView*>( &view ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028466 return createResultValue( result, view, "vk::Device::createBufferView" );
28467 }
28468#ifndef VULKAN_HPP_NO_SMART_HANDLE
28469 VULKAN_HPP_INLINE UniqueBufferView Device::createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28470 {
28471 BufferViewDeleter deleter( *this, allocator );
28472 return UniqueBufferView( createBufferView( createInfo, allocator ), deleter );
28473 }
28474#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28475#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28476
28477 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator ) const
28478 {
28479 vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28480 }
28481#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28482 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator ) const
28483 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028484 vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028485 }
28486#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28487
28488 VULKAN_HPP_INLINE Result Device::createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage ) const
28489 {
28490 return static_cast<Result>( vkCreateImage( m_device, reinterpret_cast<const VkImageCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImage*>( pImage ) ) );
28491 }
28492#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28493 VULKAN_HPP_INLINE ResultValueType<Image>::type Device::createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28494 {
28495 Image image;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028496 Result result = static_cast<Result>( vkCreateImage( m_device, reinterpret_cast<const VkImageCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkImage*>( &image ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028497 return createResultValue( result, image, "vk::Device::createImage" );
28498 }
28499#ifndef VULKAN_HPP_NO_SMART_HANDLE
28500 VULKAN_HPP_INLINE UniqueImage Device::createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28501 {
28502 ImageDeleter deleter( *this, allocator );
28503 return UniqueImage( createImage( createInfo, allocator ), deleter );
28504 }
28505#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28506#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28507
28508 VULKAN_HPP_INLINE void Device::destroyImage( Image image, const AllocationCallbacks* pAllocator ) const
28509 {
28510 vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28511 }
28512#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28513 VULKAN_HPP_INLINE void Device::destroyImage( Image image, Optional<const AllocationCallbacks> allocator ) const
28514 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028515 vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028516 }
28517#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28518
28519 VULKAN_HPP_INLINE void Device::getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout ) const
28520 {
28521 vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( pSubresource ), reinterpret_cast<VkSubresourceLayout*>( pLayout ) );
28522 }
28523#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28524 VULKAN_HPP_INLINE SubresourceLayout Device::getImageSubresourceLayout( Image image, const ImageSubresource & subresource ) const
28525 {
28526 SubresourceLayout layout;
28527 vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( &subresource ), reinterpret_cast<VkSubresourceLayout*>( &layout ) );
28528 return layout;
28529 }
28530#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28531
28532 VULKAN_HPP_INLINE Result Device::createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView ) const
28533 {
28534 return static_cast<Result>( vkCreateImageView( m_device, reinterpret_cast<const VkImageViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImageView*>( pView ) ) );
28535 }
28536#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28537 VULKAN_HPP_INLINE ResultValueType<ImageView>::type Device::createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28538 {
28539 ImageView view;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028540 Result result = static_cast<Result>( vkCreateImageView( m_device, reinterpret_cast<const VkImageViewCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkImageView*>( &view ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028541 return createResultValue( result, view, "vk::Device::createImageView" );
28542 }
28543#ifndef VULKAN_HPP_NO_SMART_HANDLE
28544 VULKAN_HPP_INLINE UniqueImageView Device::createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28545 {
28546 ImageViewDeleter deleter( *this, allocator );
28547 return UniqueImageView( createImageView( createInfo, allocator ), deleter );
28548 }
28549#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28550#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28551
28552 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator ) const
28553 {
28554 vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28555 }
28556#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28557 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator ) const
28558 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028559 vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028560 }
28561#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28562
28563 VULKAN_HPP_INLINE Result Device::createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule ) const
28564 {
28565 return static_cast<Result>( vkCreateShaderModule( m_device, reinterpret_cast<const VkShaderModuleCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkShaderModule*>( pShaderModule ) ) );
28566 }
28567#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28568 VULKAN_HPP_INLINE ResultValueType<ShaderModule>::type Device::createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28569 {
28570 ShaderModule shaderModule;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028571 Result result = static_cast<Result>( vkCreateShaderModule( m_device, reinterpret_cast<const VkShaderModuleCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkShaderModule*>( &shaderModule ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028572 return createResultValue( result, shaderModule, "vk::Device::createShaderModule" );
28573 }
28574#ifndef VULKAN_HPP_NO_SMART_HANDLE
28575 VULKAN_HPP_INLINE UniqueShaderModule Device::createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28576 {
28577 ShaderModuleDeleter deleter( *this, allocator );
28578 return UniqueShaderModule( createShaderModule( createInfo, allocator ), deleter );
28579 }
28580#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28581#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28582
28583 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator ) const
28584 {
28585 vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28586 }
28587#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28588 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator ) const
28589 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028590 vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028591 }
28592#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28593
28594 VULKAN_HPP_INLINE Result Device::createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache ) const
28595 {
28596 return static_cast<Result>( vkCreatePipelineCache( m_device, reinterpret_cast<const VkPipelineCacheCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineCache*>( pPipelineCache ) ) );
28597 }
28598#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28599 VULKAN_HPP_INLINE ResultValueType<PipelineCache>::type Device::createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28600 {
28601 PipelineCache pipelineCache;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028602 Result result = static_cast<Result>( vkCreatePipelineCache( m_device, reinterpret_cast<const VkPipelineCacheCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkPipelineCache*>( &pipelineCache ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028603 return createResultValue( result, pipelineCache, "vk::Device::createPipelineCache" );
28604 }
28605#ifndef VULKAN_HPP_NO_SMART_HANDLE
28606 VULKAN_HPP_INLINE UniquePipelineCache Device::createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28607 {
28608 PipelineCacheDeleter deleter( *this, allocator );
28609 return UniquePipelineCache( createPipelineCache( 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::destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator ) const
28615 {
28616 vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28617 }
28618#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28619 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator ) const
28620 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028621 vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), 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::getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData ) const
28626 {
28627 return static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), pDataSize, pData ) );
28628 }
28629#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28630 template <typename Allocator>
28631 VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getPipelineCacheData( PipelineCache pipelineCache ) const
28632 {
28633 std::vector<uint8_t,Allocator> data;
28634 size_t dataSize;
28635 Result result;
28636 do
28637 {
28638 result = static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, nullptr ) );
28639 if ( ( result == Result::eSuccess ) && dataSize )
28640 {
28641 data.resize( dataSize );
28642 result = static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, reinterpret_cast<void*>( data.data() ) ) );
28643 }
28644 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028645 assert( dataSize <= data.size() );
28646 data.resize( dataSize );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028647 return createResultValue( result, data, "vk::Device::getPipelineCacheData" );
28648 }
28649#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28650
28651 VULKAN_HPP_INLINE Result Device::mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches ) const
28652 {
28653 return static_cast<Result>( vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCacheCount, reinterpret_cast<const VkPipelineCache*>( pSrcCaches ) ) );
28654 }
28655#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28656 VULKAN_HPP_INLINE ResultValueType<void>::type Device::mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches ) const
28657 {
28658 Result result = static_cast<Result>( vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCaches.size() , reinterpret_cast<const VkPipelineCache*>( srcCaches.data() ) ) );
28659 return createResultValue( result, "vk::Device::mergePipelineCaches" );
28660 }
28661#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28662
28663 VULKAN_HPP_INLINE Result Device::createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const
28664 {
28665 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 ) ) );
28666 }
28667#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28668 template <typename Allocator>
28669 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
28670 {
28671 std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028672 Result result = static_cast<Result>( vkCreateGraphicsPipelines( m_device, static_cast<VkPipelineCache>( pipelineCache ), createInfos.size() , reinterpret_cast<const VkGraphicsPipelineCreateInfo*>( createInfos.data() ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkPipeline*>( pipelines.data() ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028673 return createResultValue( result, pipelines, "vk::Device::createGraphicsPipelines" );
28674 }
28675 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28676 {
28677 Pipeline pipeline;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028678 Result result = static_cast<Result>( vkCreateGraphicsPipelines( m_device, static_cast<VkPipelineCache>( pipelineCache ), 1 , reinterpret_cast<const VkGraphicsPipelineCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkPipeline*>( &pipeline ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028679 return createResultValue( result, pipeline, "vk::Device::createGraphicsPipeline" );
28680 }
28681#ifndef VULKAN_HPP_NO_SMART_HANDLE
28682 template <typename Allocator>
28683 VULKAN_HPP_INLINE std::vector<UniquePipeline> Device::createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
28684 {
28685 PipelineDeleter deleter( *this, allocator );
28686 std::vector<Pipeline,Allocator> pipelines = createGraphicsPipelines( pipelineCache, createInfos, allocator );
28687 std::vector<UniquePipeline> uniquePipelines;
28688 uniquePipelines.reserve( pipelines.size() );
28689 for ( auto pipeline : pipelines )
28690 {
28691 uniquePipelines.push_back( UniquePipeline( pipeline, deleter ) );
28692 }
28693 return uniquePipelines;
28694 }
28695 VULKAN_HPP_INLINE UniquePipeline Device::createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28696 {
28697 PipelineDeleter deleter( *this, allocator );
28698 return UniquePipeline( createGraphicsPipeline( pipelineCache, createInfo, allocator ), deleter );
28699 }
28700#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28701#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28702
28703 VULKAN_HPP_INLINE Result Device::createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const
28704 {
28705 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 ) ) );
28706 }
28707#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28708 template <typename Allocator>
28709 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
28710 {
28711 std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028712 Result result = static_cast<Result>( vkCreateComputePipelines( m_device, static_cast<VkPipelineCache>( pipelineCache ), createInfos.size() , reinterpret_cast<const VkComputePipelineCreateInfo*>( createInfos.data() ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkPipeline*>( pipelines.data() ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028713 return createResultValue( result, pipelines, "vk::Device::createComputePipelines" );
28714 }
28715 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28716 {
28717 Pipeline pipeline;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028718 Result result = static_cast<Result>( vkCreateComputePipelines( m_device, static_cast<VkPipelineCache>( pipelineCache ), 1 , reinterpret_cast<const VkComputePipelineCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkPipeline*>( &pipeline ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028719 return createResultValue( result, pipeline, "vk::Device::createComputePipeline" );
28720 }
28721#ifndef VULKAN_HPP_NO_SMART_HANDLE
28722 template <typename Allocator>
28723 VULKAN_HPP_INLINE std::vector<UniquePipeline> Device::createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
28724 {
28725 PipelineDeleter deleter( *this, allocator );
28726 std::vector<Pipeline,Allocator> pipelines = createComputePipelines( pipelineCache, createInfos, allocator );
28727 std::vector<UniquePipeline> uniquePipelines;
28728 uniquePipelines.reserve( pipelines.size() );
28729 for ( auto pipeline : pipelines )
28730 {
28731 uniquePipelines.push_back( UniquePipeline( pipeline, deleter ) );
28732 }
28733 return uniquePipelines;
28734 }
28735 VULKAN_HPP_INLINE UniquePipeline Device::createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28736 {
28737 PipelineDeleter deleter( *this, allocator );
28738 return UniquePipeline( createComputePipeline( pipelineCache, createInfo, allocator ), deleter );
28739 }
28740#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28741#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28742
28743 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator ) const
28744 {
28745 vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28746 }
28747#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28748 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator ) const
28749 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028750 vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028751 }
28752#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28753
28754 VULKAN_HPP_INLINE Result Device::createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout ) const
28755 {
28756 return static_cast<Result>( vkCreatePipelineLayout( m_device, reinterpret_cast<const VkPipelineLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineLayout*>( pPipelineLayout ) ) );
28757 }
28758#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28759 VULKAN_HPP_INLINE ResultValueType<PipelineLayout>::type Device::createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28760 {
28761 PipelineLayout pipelineLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028762 Result result = static_cast<Result>( vkCreatePipelineLayout( m_device, reinterpret_cast<const VkPipelineLayoutCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkPipelineLayout*>( &pipelineLayout ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028763 return createResultValue( result, pipelineLayout, "vk::Device::createPipelineLayout" );
28764 }
28765#ifndef VULKAN_HPP_NO_SMART_HANDLE
28766 VULKAN_HPP_INLINE UniquePipelineLayout Device::createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28767 {
28768 PipelineLayoutDeleter deleter( *this, allocator );
28769 return UniquePipelineLayout( createPipelineLayout( createInfo, allocator ), deleter );
28770 }
28771#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28772#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28773
28774 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator ) const
28775 {
28776 vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28777 }
28778#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28779 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator ) const
28780 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028781 vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028782 }
28783#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28784
28785 VULKAN_HPP_INLINE Result Device::createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler ) const
28786 {
28787 return static_cast<Result>( vkCreateSampler( m_device, reinterpret_cast<const VkSamplerCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSampler*>( pSampler ) ) );
28788 }
28789#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28790 VULKAN_HPP_INLINE ResultValueType<Sampler>::type Device::createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28791 {
28792 Sampler sampler;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028793 Result result = static_cast<Result>( vkCreateSampler( m_device, reinterpret_cast<const VkSamplerCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSampler*>( &sampler ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028794 return createResultValue( result, sampler, "vk::Device::createSampler" );
28795 }
28796#ifndef VULKAN_HPP_NO_SMART_HANDLE
28797 VULKAN_HPP_INLINE UniqueSampler Device::createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28798 {
28799 SamplerDeleter deleter( *this, allocator );
28800 return UniqueSampler( createSampler( createInfo, allocator ), deleter );
28801 }
28802#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28803#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28804
28805 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator ) const
28806 {
28807 vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28808 }
28809#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28810 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator ) const
28811 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028812 vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028813 }
28814#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28815
28816 VULKAN_HPP_INLINE Result Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout ) const
28817 {
28818 return static_cast<Result>( vkCreateDescriptorSetLayout( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorSetLayout*>( pSetLayout ) ) );
28819 }
28820#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28821 VULKAN_HPP_INLINE ResultValueType<DescriptorSetLayout>::type Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28822 {
28823 DescriptorSetLayout setLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028824 Result result = static_cast<Result>( vkCreateDescriptorSetLayout( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDescriptorSetLayout*>( &setLayout ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028825 return createResultValue( result, setLayout, "vk::Device::createDescriptorSetLayout" );
28826 }
28827#ifndef VULKAN_HPP_NO_SMART_HANDLE
28828 VULKAN_HPP_INLINE UniqueDescriptorSetLayout Device::createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28829 {
28830 DescriptorSetLayoutDeleter deleter( *this, allocator );
28831 return UniqueDescriptorSetLayout( createDescriptorSetLayout( createInfo, allocator ), deleter );
28832 }
28833#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28834#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28835
28836 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator ) const
28837 {
28838 vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28839 }
28840#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28841 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator ) const
28842 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028843 vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028844 }
28845#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28846
28847 VULKAN_HPP_INLINE Result Device::createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool ) const
28848 {
28849 return static_cast<Result>( vkCreateDescriptorPool( m_device, reinterpret_cast<const VkDescriptorPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorPool*>( pDescriptorPool ) ) );
28850 }
28851#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28852 VULKAN_HPP_INLINE ResultValueType<DescriptorPool>::type Device::createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28853 {
28854 DescriptorPool descriptorPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028855 Result result = static_cast<Result>( vkCreateDescriptorPool( m_device, reinterpret_cast<const VkDescriptorPoolCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDescriptorPool*>( &descriptorPool ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028856 return createResultValue( result, descriptorPool, "vk::Device::createDescriptorPool" );
28857 }
28858#ifndef VULKAN_HPP_NO_SMART_HANDLE
28859 VULKAN_HPP_INLINE UniqueDescriptorPool Device::createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28860 {
28861 DescriptorPoolDeleter deleter( *this, allocator );
28862 return UniqueDescriptorPool( createDescriptorPool( createInfo, allocator ), deleter );
28863 }
28864#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28865#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28866
28867 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator ) const
28868 {
28869 vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28870 }
28871#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28872 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator ) const
28873 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028874 vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028875 }
28876#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28877
28878#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28879 VULKAN_HPP_INLINE Result Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const
28880 {
28881 return static_cast<Result>( vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
28882 }
28883#else
28884 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const
28885 {
28886 Result result = static_cast<Result>( vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
28887 return createResultValue( result, "vk::Device::resetDescriptorPool" );
28888 }
28889#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28890
28891 VULKAN_HPP_INLINE Result Device::allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets ) const
28892 {
28893 return static_cast<Result>( vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkDescriptorSet*>( pDescriptorSets ) ) );
28894 }
28895#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28896 template <typename Allocator>
28897 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type Device::allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo ) const
28898 {
28899 std::vector<DescriptorSet,Allocator> descriptorSets( allocateInfo.descriptorSetCount );
28900 Result result = static_cast<Result>( vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkDescriptorSet*>( descriptorSets.data() ) ) );
28901 return createResultValue( result, descriptorSets, "vk::Device::allocateDescriptorSets" );
28902 }
28903#ifndef VULKAN_HPP_NO_SMART_HANDLE
28904 template <typename Allocator>
28905 VULKAN_HPP_INLINE std::vector<UniqueDescriptorSet> Device::allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo ) const
28906 {
28907 DescriptorSetDeleter deleter( *this, allocateInfo.descriptorPool );
28908 std::vector<DescriptorSet,Allocator> descriptorSets = allocateDescriptorSets( allocateInfo );
28909 std::vector<UniqueDescriptorSet> uniqueDescriptorSets;
28910 uniqueDescriptorSets.reserve( descriptorSets.size() );
28911 for ( auto descriptorSet : descriptorSets )
28912 {
28913 uniqueDescriptorSets.push_back( UniqueDescriptorSet( descriptorSet, deleter ) );
28914 }
28915 return uniqueDescriptorSets;
28916 }
28917#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28918#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28919
28920 VULKAN_HPP_INLINE Result Device::freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets ) const
28921 {
28922 return static_cast<Result>( vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ) ) );
28923 }
28924#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28925 VULKAN_HPP_INLINE ResultValueType<void>::type Device::freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets ) const
28926 {
28927 Result result = static_cast<Result>( vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ) ) );
28928 return createResultValue( result, "vk::Device::freeDescriptorSets" );
28929 }
28930#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28931
28932 VULKAN_HPP_INLINE void Device::updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies ) const
28933 {
28934 vkUpdateDescriptorSets( m_device, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ), descriptorCopyCount, reinterpret_cast<const VkCopyDescriptorSet*>( pDescriptorCopies ) );
28935 }
28936#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28937 VULKAN_HPP_INLINE void Device::updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies ) const
28938 {
28939 vkUpdateDescriptorSets( m_device, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ), descriptorCopies.size() , reinterpret_cast<const VkCopyDescriptorSet*>( descriptorCopies.data() ) );
28940 }
28941#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28942
28943 VULKAN_HPP_INLINE Result Device::createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer ) const
28944 {
28945 return static_cast<Result>( vkCreateFramebuffer( m_device, reinterpret_cast<const VkFramebufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFramebuffer*>( pFramebuffer ) ) );
28946 }
28947#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28948 VULKAN_HPP_INLINE ResultValueType<Framebuffer>::type Device::createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28949 {
28950 Framebuffer framebuffer;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028951 Result result = static_cast<Result>( vkCreateFramebuffer( m_device, reinterpret_cast<const VkFramebufferCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkFramebuffer*>( &framebuffer ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028952 return createResultValue( result, framebuffer, "vk::Device::createFramebuffer" );
28953 }
28954#ifndef VULKAN_HPP_NO_SMART_HANDLE
28955 VULKAN_HPP_INLINE UniqueFramebuffer Device::createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28956 {
28957 FramebufferDeleter deleter( *this, allocator );
28958 return UniqueFramebuffer( createFramebuffer( createInfo, allocator ), deleter );
28959 }
28960#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28961#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28962
28963 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator ) const
28964 {
28965 vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28966 }
28967#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28968 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator ) const
28969 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028970 vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028971 }
28972#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28973
28974 VULKAN_HPP_INLINE Result Device::createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass ) const
28975 {
28976 return static_cast<Result>( vkCreateRenderPass( m_device, reinterpret_cast<const VkRenderPassCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkRenderPass*>( pRenderPass ) ) );
28977 }
28978#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28979 VULKAN_HPP_INLINE ResultValueType<RenderPass>::type Device::createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28980 {
28981 RenderPass renderPass;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028982 Result result = static_cast<Result>( vkCreateRenderPass( m_device, reinterpret_cast<const VkRenderPassCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkRenderPass*>( &renderPass ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028983 return createResultValue( result, renderPass, "vk::Device::createRenderPass" );
28984 }
28985#ifndef VULKAN_HPP_NO_SMART_HANDLE
28986 VULKAN_HPP_INLINE UniqueRenderPass Device::createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28987 {
28988 RenderPassDeleter deleter( *this, allocator );
28989 return UniqueRenderPass( createRenderPass( createInfo, allocator ), deleter );
28990 }
28991#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28992#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28993
28994 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator ) const
28995 {
28996 vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28997 }
28998#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28999 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator ) const
29000 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029001 vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029002 }
29003#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29004
29005 VULKAN_HPP_INLINE void Device::getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity ) const
29006 {
29007 vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( pGranularity ) );
29008 }
29009#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29010 VULKAN_HPP_INLINE Extent2D Device::getRenderAreaGranularity( RenderPass renderPass ) const
29011 {
29012 Extent2D granularity;
29013 vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( &granularity ) );
29014 return granularity;
29015 }
29016#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29017
29018 VULKAN_HPP_INLINE Result Device::createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool ) const
29019 {
29020 return static_cast<Result>( vkCreateCommandPool( m_device, reinterpret_cast<const VkCommandPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkCommandPool*>( pCommandPool ) ) );
29021 }
29022#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29023 VULKAN_HPP_INLINE ResultValueType<CommandPool>::type Device::createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29024 {
29025 CommandPool commandPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029026 Result result = static_cast<Result>( vkCreateCommandPool( m_device, reinterpret_cast<const VkCommandPoolCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkCommandPool*>( &commandPool ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029027 return createResultValue( result, commandPool, "vk::Device::createCommandPool" );
29028 }
29029#ifndef VULKAN_HPP_NO_SMART_HANDLE
29030 VULKAN_HPP_INLINE UniqueCommandPool Device::createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29031 {
29032 CommandPoolDeleter deleter( *this, allocator );
29033 return UniqueCommandPool( createCommandPool( createInfo, allocator ), deleter );
29034 }
29035#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29036#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29037
29038 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator ) const
29039 {
29040 vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29041 }
29042#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29043 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator ) const
29044 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029045 vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029046 }
29047#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29048
29049#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
29050 VULKAN_HPP_INLINE Result Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const
29051 {
29052 return static_cast<Result>( vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
29053 }
29054#else
29055 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const
29056 {
29057 Result result = static_cast<Result>( vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
29058 return createResultValue( result, "vk::Device::resetCommandPool" );
29059 }
29060#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29061
29062 VULKAN_HPP_INLINE Result Device::allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers ) const
29063 {
29064 return static_cast<Result>( vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkCommandBuffer*>( pCommandBuffers ) ) );
29065 }
29066#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29067 template <typename Allocator>
29068 VULKAN_HPP_INLINE typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type Device::allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo ) const
29069 {
29070 std::vector<CommandBuffer,Allocator> commandBuffers( allocateInfo.commandBufferCount );
29071 Result result = static_cast<Result>( vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkCommandBuffer*>( commandBuffers.data() ) ) );
29072 return createResultValue( result, commandBuffers, "vk::Device::allocateCommandBuffers" );
29073 }
29074#ifndef VULKAN_HPP_NO_SMART_HANDLE
29075 template <typename Allocator>
29076 VULKAN_HPP_INLINE std::vector<UniqueCommandBuffer> Device::allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo ) const
29077 {
29078 CommandBufferDeleter deleter( *this, allocateInfo.commandPool );
29079 std::vector<CommandBuffer,Allocator> commandBuffers = allocateCommandBuffers( allocateInfo );
29080 std::vector<UniqueCommandBuffer> uniqueCommandBuffers;
29081 uniqueCommandBuffers.reserve( commandBuffers.size() );
29082 for ( auto commandBuffer : commandBuffers )
29083 {
29084 uniqueCommandBuffers.push_back( UniqueCommandBuffer( commandBuffer, deleter ) );
29085 }
29086 return uniqueCommandBuffers;
29087 }
29088#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29089#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29090
29091 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const
29092 {
29093 vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
29094 }
29095#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29096 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers ) const
29097 {
29098 vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
29099 }
29100#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29101
29102 VULKAN_HPP_INLINE Result Device::createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains ) const
29103 {
29104 return static_cast<Result>( vkCreateSharedSwapchainsKHR( m_device, swapchainCount, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfos ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchains ) ) );
29105 }
29106#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29107 template <typename Allocator>
29108 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type Device::createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator ) const
29109 {
29110 std::vector<SwapchainKHR,Allocator> swapchains( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029111 Result result = static_cast<Result>( vkCreateSharedSwapchainsKHR( m_device, createInfos.size() , reinterpret_cast<const VkSwapchainCreateInfoKHR*>( createInfos.data() ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSwapchainKHR*>( swapchains.data() ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029112 return createResultValue( result, swapchains, "vk::Device::createSharedSwapchainsKHR" );
29113 }
29114 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29115 {
29116 SwapchainKHR swapchain;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029117 Result result = static_cast<Result>( vkCreateSharedSwapchainsKHR( m_device, 1 , reinterpret_cast<const VkSwapchainCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSwapchainKHR*>( &swapchain ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029118 return createResultValue( result, swapchain, "vk::Device::createSharedSwapchainKHR" );
29119 }
29120#ifndef VULKAN_HPP_NO_SMART_HANDLE
29121 template <typename Allocator>
29122 VULKAN_HPP_INLINE std::vector<UniqueSwapchainKHR> Device::createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator ) const
29123 {
29124 SwapchainKHRDeleter deleter( *this, allocator );
29125 std::vector<SwapchainKHR,Allocator> swapchainKHRs = createSharedSwapchainsKHR( createInfos, allocator );
29126 std::vector<UniqueSwapchainKHR> uniqueSwapchainKHRs;
29127 uniqueSwapchainKHRs.reserve( swapchainKHRs.size() );
29128 for ( auto swapchainKHR : swapchainKHRs )
29129 {
29130 uniqueSwapchainKHRs.push_back( UniqueSwapchainKHR( swapchainKHR, deleter ) );
29131 }
29132 return uniqueSwapchainKHRs;
29133 }
29134 VULKAN_HPP_INLINE UniqueSwapchainKHR Device::createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29135 {
29136 SwapchainKHRDeleter deleter( *this, allocator );
29137 return UniqueSwapchainKHR( createSharedSwapchainKHR( createInfo, allocator ), deleter );
29138 }
29139#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29140#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29141
29142 VULKAN_HPP_INLINE Result Device::createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain ) const
29143 {
29144 return static_cast<Result>( vkCreateSwapchainKHR( m_device, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchain ) ) );
29145 }
29146#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29147 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29148 {
29149 SwapchainKHR swapchain;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029150 Result result = static_cast<Result>( vkCreateSwapchainKHR( m_device, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSwapchainKHR*>( &swapchain ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029151 return createResultValue( result, swapchain, "vk::Device::createSwapchainKHR" );
29152 }
29153#ifndef VULKAN_HPP_NO_SMART_HANDLE
29154 VULKAN_HPP_INLINE UniqueSwapchainKHR Device::createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29155 {
29156 SwapchainKHRDeleter deleter( *this, allocator );
29157 return UniqueSwapchainKHR( createSwapchainKHR( 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::destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator ) const
29163 {
29164 vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29165 }
29166#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29167 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator ) const
29168 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029169 vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), 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 Result Device::getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages ) const
29174 {
29175 return static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), pSwapchainImageCount, reinterpret_cast<VkImage*>( pSwapchainImages ) ) );
29176 }
29177#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29178 template <typename Allocator>
29179 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Image,Allocator>>::type Device::getSwapchainImagesKHR( SwapchainKHR swapchain ) const
29180 {
29181 std::vector<Image,Allocator> swapchainImages;
29182 uint32_t swapchainImageCount;
29183 Result result;
29184 do
29185 {
29186 result = static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, nullptr ) );
29187 if ( ( result == Result::eSuccess ) && swapchainImageCount )
29188 {
29189 swapchainImages.resize( swapchainImageCount );
29190 result = static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, reinterpret_cast<VkImage*>( swapchainImages.data() ) ) );
29191 }
29192 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029193 assert( swapchainImageCount <= swapchainImages.size() );
29194 swapchainImages.resize( swapchainImageCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029195 return createResultValue( result, swapchainImages, "vk::Device::getSwapchainImagesKHR" );
29196 }
29197#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29198
29199 VULKAN_HPP_INLINE Result Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex ) const
29200 {
29201 return static_cast<Result>( vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), pImageIndex ) );
29202 }
29203#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29204 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence ) const
29205 {
29206 uint32_t imageIndex;
29207 Result result = static_cast<Result>( vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), &imageIndex ) );
29208 return createResultValue( result, imageIndex, "vk::Device::acquireNextImageKHR", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
29209 }
29210#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29211
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029212 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT* pNameInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029213 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029214 return static_cast<Result>( vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>( pNameInfo ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029215 }
29216#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029217 VULKAN_HPP_INLINE ResultValueType<void>::type Device::debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT & nameInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029218 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029219 Result result = static_cast<Result>( vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>( &nameInfo ) ) );
29220 return createResultValue( result, "vk::Device::debugMarkerSetObjectNameEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029221 }
29222#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29223
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029224 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT* pTagInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029225 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029226 return static_cast<Result>( vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>( pTagInfo ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029227 }
29228#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029229 VULKAN_HPP_INLINE ResultValueType<void>::type Device::debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT & tagInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029230 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060029231 Result result = static_cast<Result>( vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>( &tagInfo ) ) );
29232 return createResultValue( result, "vk::Device::debugMarkerSetObjectTagEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029233 }
29234#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29235
29236#ifdef VK_USE_PLATFORM_WIN32_KHR
29237 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const
29238 {
29239 return static_cast<Result>( vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), pHandle ) );
29240 }
29241#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29242 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType ) const
29243 {
29244 HANDLE handle;
29245 Result result = static_cast<Result>( vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), &handle ) );
29246 return createResultValue( result, handle, "vk::Device::getMemoryWin32HandleNV" );
29247 }
29248#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29249#endif /*VK_USE_PLATFORM_WIN32_KHR*/
29250
29251 VULKAN_HPP_INLINE Result Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const
29252 {
29253 return static_cast<Result>( vkCreateIndirectCommandsLayoutNVX( m_device, reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkIndirectCommandsLayoutNVX*>( pIndirectCommandsLayout ) ) );
29254 }
29255#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29256 VULKAN_HPP_INLINE ResultValueType<IndirectCommandsLayoutNVX>::type Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
29257 {
29258 IndirectCommandsLayoutNVX indirectCommandsLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029259 Result result = static_cast<Result>( vkCreateIndirectCommandsLayoutNVX( m_device, reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkIndirectCommandsLayoutNVX*>( &indirectCommandsLayout ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029260 return createResultValue( result, indirectCommandsLayout, "vk::Device::createIndirectCommandsLayoutNVX" );
29261 }
29262#ifndef VULKAN_HPP_NO_SMART_HANDLE
29263 VULKAN_HPP_INLINE UniqueIndirectCommandsLayoutNVX Device::createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
29264 {
29265 IndirectCommandsLayoutNVXDeleter deleter( *this, allocator );
29266 return UniqueIndirectCommandsLayoutNVX( createIndirectCommandsLayoutNVX( createInfo, allocator ), deleter );
29267 }
29268#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29269#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29270
29271 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator ) const
29272 {
29273 vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29274 }
29275#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29276 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator ) const
29277 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029278 vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029279 }
29280#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29281
29282 VULKAN_HPP_INLINE Result Device::createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable ) const
29283 {
29284 return static_cast<Result>( vkCreateObjectTableNVX( m_device, reinterpret_cast<const VkObjectTableCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkObjectTableNVX*>( pObjectTable ) ) );
29285 }
29286#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29287 VULKAN_HPP_INLINE ResultValueType<ObjectTableNVX>::type Device::createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
29288 {
29289 ObjectTableNVX objectTable;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029290 Result result = static_cast<Result>( vkCreateObjectTableNVX( m_device, reinterpret_cast<const VkObjectTableCreateInfoNVX*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkObjectTableNVX*>( &objectTable ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029291 return createResultValue( result, objectTable, "vk::Device::createObjectTableNVX" );
29292 }
29293#ifndef VULKAN_HPP_NO_SMART_HANDLE
29294 VULKAN_HPP_INLINE UniqueObjectTableNVX Device::createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
29295 {
29296 ObjectTableNVXDeleter deleter( *this, allocator );
29297 return UniqueObjectTableNVX( createObjectTableNVX( createInfo, allocator ), deleter );
29298 }
29299#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29300#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29301
29302 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator ) const
29303 {
29304 vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29305 }
29306#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29307 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator ) const
29308 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029309 vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029310 }
29311#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29312
29313 VULKAN_HPP_INLINE Result Device::registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const
29314 {
29315 return static_cast<Result>( vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectTableEntryNVX* const*>( ppObjectTableEntries ), pObjectIndices ) );
29316 }
29317#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29318 VULKAN_HPP_INLINE ResultValueType<void>::type Device::registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices ) const
29319 {
29320#ifdef VULKAN_HPP_NO_EXCEPTIONS
29321 assert( pObjectTableEntries.size() == objectIndices.size() );
29322#else
29323 if ( pObjectTableEntries.size() != objectIndices.size() )
29324 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029325 throw LogicError( "vk::Device::registerObjectsNVX: pObjectTableEntries.size() != objectIndices.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029326 }
29327#endif // VULKAN_HPP_NO_EXCEPTIONS
29328 Result result = static_cast<Result>( vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), pObjectTableEntries.size() , reinterpret_cast<const VkObjectTableEntryNVX* const*>( pObjectTableEntries.data() ), objectIndices.data() ) );
29329 return createResultValue( result, "vk::Device::registerObjectsNVX" );
29330 }
29331#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29332
29333 VULKAN_HPP_INLINE Result Device::unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const
29334 {
29335 return static_cast<Result>( vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectEntryTypeNVX*>( pObjectEntryTypes ), pObjectIndices ) );
29336 }
29337#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29338 VULKAN_HPP_INLINE ResultValueType<void>::type Device::unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices ) const
29339 {
29340#ifdef VULKAN_HPP_NO_EXCEPTIONS
29341 assert( objectEntryTypes.size() == objectIndices.size() );
29342#else
29343 if ( objectEntryTypes.size() != objectIndices.size() )
29344 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029345 throw LogicError( "vk::Device::unregisterObjectsNVX: objectEntryTypes.size() != objectIndices.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029346 }
29347#endif // VULKAN_HPP_NO_EXCEPTIONS
29348 Result result = static_cast<Result>( vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectEntryTypes.size() , reinterpret_cast<const VkObjectEntryTypeNVX*>( objectEntryTypes.data() ), objectIndices.data() ) );
29349 return createResultValue( result, "vk::Device::unregisterObjectsNVX" );
29350 }
29351#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29352
29353 VULKAN_HPP_INLINE void Device::trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags ) const
29354 {
29355 vkTrimCommandPoolKHR( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolTrimFlagsKHR>( flags ) );
29356 }
29357
Mark Youngabc2d6e2017-07-07 07:59:56 -060029358#ifdef VK_USE_PLATFORM_WIN32_KHR
29359 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const
Mark Young0f183a82017-02-28 09:58:04 -070029360 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029361 return static_cast<Result>( vkGetMemoryWin32HandleKHR( m_device, reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR*>( pGetWin32HandleInfo ), pHandle ) );
Mark Young0f183a82017-02-28 09:58:04 -070029362 }
29363#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029364 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR & getWin32HandleInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029365 {
29366 HANDLE handle;
Mark Youngabc2d6e2017-07-07 07:59:56 -060029367 Result result = static_cast<Result>( vkGetMemoryWin32HandleKHR( m_device, reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR*>( &getWin32HandleInfo ), &handle ) );
29368 return createResultValue( result, handle, "vk::Device::getMemoryWin32HandleKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029369 }
29370#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060029371#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070029372
Mark Youngabc2d6e2017-07-07 07:59:56 -060029373#ifdef VK_USE_PLATFORM_WIN32_KHR
29374 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle, MemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties ) const
Mark Young0f183a82017-02-28 09:58:04 -070029375 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029376 return static_cast<Result>( vkGetMemoryWin32HandlePropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHR*>( pMemoryWin32HandleProperties ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029377 }
29378#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029379 VULKAN_HPP_INLINE ResultValueType<MemoryWin32HandlePropertiesKHR>::type Device::getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle ) const
Mark Young0f183a82017-02-28 09:58:04 -070029380 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029381 MemoryWin32HandlePropertiesKHR memoryWin32HandleProperties;
29382 Result result = static_cast<Result>( vkGetMemoryWin32HandlePropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHR*>( &memoryWin32HandleProperties ) ) );
29383 return createResultValue( result, memoryWin32HandleProperties, "vk::Device::getMemoryWin32HandlePropertiesKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029384 }
29385#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060029386#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070029387
Mark Youngabc2d6e2017-07-07 07:59:56 -060029388 VULKAN_HPP_INLINE Result Device::getMemoryFdKHR( const MemoryGetFdInfoKHR* pGetFdInfo, int* pFd ) const
Mark Young0f183a82017-02-28 09:58:04 -070029389 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029390 return static_cast<Result>( vkGetMemoryFdKHR( m_device, reinterpret_cast<const VkMemoryGetFdInfoKHR*>( pGetFdInfo ), pFd ) );
Mark Young0f183a82017-02-28 09:58:04 -070029391 }
29392#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029393 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getMemoryFdKHR( const MemoryGetFdInfoKHR & getFdInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029394 {
29395 int fd;
Mark Youngabc2d6e2017-07-07 07:59:56 -060029396 Result result = static_cast<Result>( vkGetMemoryFdKHR( m_device, reinterpret_cast<const VkMemoryGetFdInfoKHR*>( &getFdInfo ), &fd ) );
29397 return createResultValue( result, fd, "vk::Device::getMemoryFdKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029398 }
29399#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29400
Mark Youngabc2d6e2017-07-07 07:59:56 -060029401 VULKAN_HPP_INLINE Result Device::getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, int fd, MemoryFdPropertiesKHR* pMemoryFdProperties ) const
Mark Young0f183a82017-02-28 09:58:04 -070029402 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029403 return static_cast<Result>( vkGetMemoryFdPropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHR*>( pMemoryFdProperties ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029404 }
29405#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029406 VULKAN_HPP_INLINE ResultValueType<MemoryFdPropertiesKHR>::type Device::getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, int fd ) const
Mark Young0f183a82017-02-28 09:58:04 -070029407 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029408 MemoryFdPropertiesKHR memoryFdProperties;
29409 Result result = static_cast<Result>( vkGetMemoryFdPropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHR*>( &memoryFdProperties ) ) );
29410 return createResultValue( result, memoryFdProperties, "vk::Device::getMemoryFdPropertiesKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029411 }
29412#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29413
Mark Youngabc2d6e2017-07-07 07:59:56 -060029414#ifdef VK_USE_PLATFORM_WIN32_KHR
29415 VULKAN_HPP_INLINE Result Device::getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const
Mark Young0f183a82017-02-28 09:58:04 -070029416 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029417 return static_cast<Result>( vkGetSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR*>( pGetWin32HandleInfo ), pHandle ) );
Mark Young0f183a82017-02-28 09:58:04 -070029418 }
29419#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029420 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029421 {
29422 HANDLE handle;
Mark Youngabc2d6e2017-07-07 07:59:56 -060029423 Result result = static_cast<Result>( vkGetSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR*>( &getWin32HandleInfo ), &handle ) );
29424 return createResultValue( result, handle, "vk::Device::getSemaphoreWin32HandleKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029425 }
29426#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060029427#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070029428
Mark Youngabc2d6e2017-07-07 07:59:56 -060029429#ifdef VK_USE_PLATFORM_WIN32_KHR
29430 VULKAN_HPP_INLINE Result Device::importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029431 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029432 return static_cast<Result>( vkImportSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR*>( pImportSemaphoreWin32HandleInfo ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029433 }
29434#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029435 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029436 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029437 Result result = static_cast<Result>( vkImportSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR*>( &importSemaphoreWin32HandleInfo ) ) );
29438 return createResultValue( result, "vk::Device::importSemaphoreWin32HandleKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029439 }
29440#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060029441#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070029442
Mark Youngabc2d6e2017-07-07 07:59:56 -060029443 VULKAN_HPP_INLINE Result Device::getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd ) const
Mark Young0f183a82017-02-28 09:58:04 -070029444 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029445 return static_cast<Result>( vkGetSemaphoreFdKHR( m_device, reinterpret_cast<const VkSemaphoreGetFdInfoKHR*>( pGetFdInfo ), pFd ) );
Mark Young0f183a82017-02-28 09:58:04 -070029446 }
29447#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029448 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR & getFdInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029449 {
29450 int fd;
Mark Youngabc2d6e2017-07-07 07:59:56 -060029451 Result result = static_cast<Result>( vkGetSemaphoreFdKHR( m_device, reinterpret_cast<const VkSemaphoreGetFdInfoKHR*>( &getFdInfo ), &fd ) );
29452 return createResultValue( result, fd, "vk::Device::getSemaphoreFdKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029453 }
29454#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29455
Mark Youngabc2d6e2017-07-07 07:59:56 -060029456 VULKAN_HPP_INLINE Result Device::importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029457 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029458 return static_cast<Result>( vkImportSemaphoreFdKHR( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHR*>( pImportSemaphoreFdInfo ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029459 }
29460#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029461 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029462 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029463 Result result = static_cast<Result>( vkImportSemaphoreFdKHR( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHR*>( &importSemaphoreFdInfo ) ) );
29464 return createResultValue( result, "vk::Device::importSemaphoreFdKHR" );
29465 }
29466#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29467
29468#ifdef VK_USE_PLATFORM_WIN32_KHR
29469 VULKAN_HPP_INLINE Result Device::getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const
29470 {
29471 return static_cast<Result>( vkGetFenceWin32HandleKHR( m_device, reinterpret_cast<const VkFenceGetWin32HandleInfoKHR*>( pGetWin32HandleInfo ), pHandle ) );
29472 }
29473#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29474 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR & getWin32HandleInfo ) const
29475 {
29476 HANDLE handle;
29477 Result result = static_cast<Result>( vkGetFenceWin32HandleKHR( m_device, reinterpret_cast<const VkFenceGetWin32HandleInfoKHR*>( &getWin32HandleInfo ), &handle ) );
29478 return createResultValue( result, handle, "vk::Device::getFenceWin32HandleKHR" );
29479 }
29480#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29481#endif /*VK_USE_PLATFORM_WIN32_KHR*/
29482
29483#ifdef VK_USE_PLATFORM_WIN32_KHR
29484 VULKAN_HPP_INLINE Result Device::importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo ) const
29485 {
29486 return static_cast<Result>( vkImportFenceWin32HandleKHR( m_device, reinterpret_cast<const VkImportFenceWin32HandleInfoKHR*>( pImportFenceWin32HandleInfo ) ) );
29487 }
29488#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29489 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo ) const
29490 {
29491 Result result = static_cast<Result>( vkImportFenceWin32HandleKHR( m_device, reinterpret_cast<const VkImportFenceWin32HandleInfoKHR*>( &importFenceWin32HandleInfo ) ) );
29492 return createResultValue( result, "vk::Device::importFenceWin32HandleKHR" );
29493 }
29494#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29495#endif /*VK_USE_PLATFORM_WIN32_KHR*/
29496
29497 VULKAN_HPP_INLINE Result Device::getFenceFdKHR( const FenceGetFdInfoKHR* pGetFdInfo, int* pFd ) const
29498 {
29499 return static_cast<Result>( vkGetFenceFdKHR( m_device, reinterpret_cast<const VkFenceGetFdInfoKHR*>( pGetFdInfo ), pFd ) );
29500 }
29501#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29502 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getFenceFdKHR( const FenceGetFdInfoKHR & getFdInfo ) const
29503 {
29504 int fd;
29505 Result result = static_cast<Result>( vkGetFenceFdKHR( m_device, reinterpret_cast<const VkFenceGetFdInfoKHR*>( &getFdInfo ), &fd ) );
29506 return createResultValue( result, fd, "vk::Device::getFenceFdKHR" );
29507 }
29508#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29509
29510 VULKAN_HPP_INLINE Result Device::importFenceFdKHR( const ImportFenceFdInfoKHR* pImportFenceFdInfo ) const
29511 {
29512 return static_cast<Result>( vkImportFenceFdKHR( m_device, reinterpret_cast<const VkImportFenceFdInfoKHR*>( pImportFenceFdInfo ) ) );
29513 }
29514#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29515 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importFenceFdKHR( const ImportFenceFdInfoKHR & importFenceFdInfo ) const
29516 {
29517 Result result = static_cast<Result>( vkImportFenceFdKHR( m_device, reinterpret_cast<const VkImportFenceFdInfoKHR*>( &importFenceFdInfo ) ) );
29518 return createResultValue( result, "vk::Device::importFenceFdKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029519 }
29520#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29521
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029522 VULKAN_HPP_INLINE Result Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo ) const
29523 {
29524 return static_cast<Result>( vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( pDisplayPowerInfo ) ) );
29525 }
29526#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29527 VULKAN_HPP_INLINE ResultValueType<void>::type Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo ) const
29528 {
29529 Result result = static_cast<Result>( vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( &displayPowerInfo ) ) );
29530 return createResultValue( result, "vk::Device::displayPowerControlEXT" );
29531 }
29532#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29533
29534 VULKAN_HPP_INLINE Result Device::registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
29535 {
29536 return static_cast<Result>( vkRegisterDeviceEventEXT( m_device, reinterpret_cast<const VkDeviceEventInfoEXT*>( pDeviceEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
29537 }
29538#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060029539 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, Optional<const AllocationCallbacks> allocator ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029540 {
29541 Fence fence;
Lenny Komowb79f04a2017-09-18 17:07:00 -060029542 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 Lobodzinski36c33862017-02-13 10:15:53 -070029543 return createResultValue( result, fence, "vk::Device::registerEventEXT" );
29544 }
29545#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29546
29547 VULKAN_HPP_INLINE Result Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
29548 {
29549 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 ) ) );
29550 }
29551#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060029552 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 -070029553 {
29554 Fence fence;
Lenny Komowb79f04a2017-09-18 17:07:00 -060029555 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 Lobodzinski36c33862017-02-13 10:15:53 -070029556 return createResultValue( result, fence, "vk::Device::registerDisplayEventEXT" );
29557 }
29558#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29559
29560 VULKAN_HPP_INLINE Result Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const
29561 {
29562 return static_cast<Result>( vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), pCounterValue ) );
29563 }
29564#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29565 VULKAN_HPP_INLINE ResultValue<uint64_t> Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter ) const
29566 {
29567 uint64_t counterValue;
29568 Result result = static_cast<Result>( vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), &counterValue ) );
29569 return createResultValue( result, counterValue, "vk::Device::getSwapchainCounterEXT", { Result::eSuccess, Result::eErrorDeviceLost, Result::eErrorOutOfDateKHR } );
29570 }
29571#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070029572
29573 VULKAN_HPP_INLINE void Device::getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ) const
29574 {
29575 vkGetDeviceGroupPeerMemoryFeaturesKHX( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlagsKHX*>( pPeerMemoryFeatures ) );
29576 }
29577#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29578 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX Device::getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const
29579 {
29580 PeerMemoryFeatureFlagsKHX peerMemoryFeatures;
29581 vkGetDeviceGroupPeerMemoryFeaturesKHX( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlagsKHX*>( &peerMemoryFeatures ) );
29582 return peerMemoryFeatures;
29583 }
29584#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29585
Lenny Komowb79f04a2017-09-18 17:07:00 -060029586 VULKAN_HPP_INLINE Result Device::bindBufferMemory2KHR( uint32_t bindInfoCount, const BindBufferMemoryInfoKHR* pBindInfos ) const
Mark Young0f183a82017-02-28 09:58:04 -070029587 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060029588 return static_cast<Result>( vkBindBufferMemory2KHR( m_device, bindInfoCount, reinterpret_cast<const VkBindBufferMemoryInfoKHR*>( pBindInfos ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029589 }
29590#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060029591 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory2KHR( ArrayProxy<const BindBufferMemoryInfoKHR> bindInfos ) const
Mark Young0f183a82017-02-28 09:58:04 -070029592 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060029593 Result result = static_cast<Result>( vkBindBufferMemory2KHR( m_device, bindInfos.size() , reinterpret_cast<const VkBindBufferMemoryInfoKHR*>( bindInfos.data() ) ) );
29594 return createResultValue( result, "vk::Device::bindBufferMemory2KHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029595 }
29596#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29597
Lenny Komowb79f04a2017-09-18 17:07:00 -060029598 VULKAN_HPP_INLINE Result Device::bindImageMemory2KHR( uint32_t bindInfoCount, const BindImageMemoryInfoKHR* pBindInfos ) const
Mark Young0f183a82017-02-28 09:58:04 -070029599 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060029600 return static_cast<Result>( vkBindImageMemory2KHR( m_device, bindInfoCount, reinterpret_cast<const VkBindImageMemoryInfoKHR*>( pBindInfos ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029601 }
29602#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Lenny Komowb79f04a2017-09-18 17:07:00 -060029603 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory2KHR( ArrayProxy<const BindImageMemoryInfoKHR> bindInfos ) const
Mark Young0f183a82017-02-28 09:58:04 -070029604 {
Lenny Komowb79f04a2017-09-18 17:07:00 -060029605 Result result = static_cast<Result>( vkBindImageMemory2KHR( m_device, bindInfos.size() , reinterpret_cast<const VkBindImageMemoryInfoKHR*>( bindInfos.data() ) ) );
29606 return createResultValue( result, "vk::Device::bindImageMemory2KHR" );
Mark Young0f183a82017-02-28 09:58:04 -070029607 }
29608#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29609
29610 VULKAN_HPP_INLINE Result Device::getGroupPresentCapabilitiesKHX( DeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ) const
29611 {
29612 return static_cast<Result>( vkGetDeviceGroupPresentCapabilitiesKHX( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHX*>( pDeviceGroupPresentCapabilities ) ) );
29613 }
29614#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29615 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentCapabilitiesKHX>::type Device::getGroupPresentCapabilitiesKHX() const
29616 {
29617 DeviceGroupPresentCapabilitiesKHX deviceGroupPresentCapabilities;
29618 Result result = static_cast<Result>( vkGetDeviceGroupPresentCapabilitiesKHX( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHX*>( &deviceGroupPresentCapabilities ) ) );
29619 return createResultValue( result, deviceGroupPresentCapabilities, "vk::Device::getGroupPresentCapabilitiesKHX" );
29620 }
29621#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29622
29623 VULKAN_HPP_INLINE Result Device::getGroupSurfacePresentModesKHX( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHX* pModes ) const
29624 {
29625 return static_cast<Result>( vkGetDeviceGroupSurfacePresentModesKHX( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHX*>( pModes ) ) );
29626 }
29627#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29628 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentModeFlagsKHX>::type Device::getGroupSurfacePresentModesKHX( SurfaceKHR surface ) const
29629 {
29630 DeviceGroupPresentModeFlagsKHX modes;
29631 Result result = static_cast<Result>( vkGetDeviceGroupSurfacePresentModesKHX( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHX*>( &modes ) ) );
29632 return createResultValue( result, modes, "vk::Device::getGroupSurfacePresentModesKHX" );
29633 }
29634#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29635
29636 VULKAN_HPP_INLINE Result Device::acquireNextImage2KHX( const AcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex ) const
29637 {
29638 return static_cast<Result>( vkAcquireNextImage2KHX( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHX*>( pAcquireInfo ), pImageIndex ) );
29639 }
29640#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29641 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImage2KHX( const AcquireNextImageInfoKHX & acquireInfo ) const
29642 {
29643 uint32_t imageIndex;
29644 Result result = static_cast<Result>( vkAcquireNextImage2KHX( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHX*>( &acquireInfo ), &imageIndex ) );
29645 return createResultValue( result, imageIndex, "vk::Device::acquireNextImage2KHX", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
29646 }
29647#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29648
29649 VULKAN_HPP_INLINE Result Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) const
29650 {
29651 return static_cast<Result>( vkCreateDescriptorUpdateTemplateKHR( m_device, reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorUpdateTemplateKHR*>( pDescriptorUpdateTemplate ) ) );
29652 }
29653#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29654 VULKAN_HPP_INLINE ResultValueType<DescriptorUpdateTemplateKHR>::type Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29655 {
29656 DescriptorUpdateTemplateKHR descriptorUpdateTemplate;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029657 Result result = static_cast<Result>( vkCreateDescriptorUpdateTemplateKHR( m_device, reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDescriptorUpdateTemplateKHR*>( &descriptorUpdateTemplate ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029658 return createResultValue( result, descriptorUpdateTemplate, "vk::Device::createDescriptorUpdateTemplateKHR" );
29659 }
29660#ifndef VULKAN_HPP_NO_SMART_HANDLE
29661 VULKAN_HPP_INLINE UniqueDescriptorUpdateTemplateKHR Device::createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29662 {
29663 DescriptorUpdateTemplateKHRDeleter deleter( *this, allocator );
29664 return UniqueDescriptorUpdateTemplateKHR( createDescriptorUpdateTemplateKHR( createInfo, allocator ), deleter );
29665 }
29666#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29667#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29668
29669 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const AllocationCallbacks* pAllocator ) const
29670 {
29671 vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29672 }
29673#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29674 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator ) const
29675 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029676 vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070029677 }
29678#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29679
29680 VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData ) const
29681 {
29682 vkUpdateDescriptorSetWithTemplateKHR( m_device, static_cast<VkDescriptorSet>( descriptorSet ), static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), pData );
29683 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029684
29685 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata ) const
29686 {
29687 vkSetHdrMetadataEXT( m_device, swapchainCount, reinterpret_cast<const VkSwapchainKHR*>( pSwapchains ), reinterpret_cast<const VkHdrMetadataEXT*>( pMetadata ) );
29688 }
29689#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29690 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata ) const
29691 {
29692#ifdef VULKAN_HPP_NO_EXCEPTIONS
29693 assert( swapchains.size() == metadata.size() );
29694#else
29695 if ( swapchains.size() != metadata.size() )
29696 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029697 throw LogicError( "vk::Device::setHdrMetadataEXT: swapchains.size() != metadata.size()" );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029698 }
29699#endif // VULKAN_HPP_NO_EXCEPTIONS
29700 vkSetHdrMetadataEXT( m_device, swapchains.size() , reinterpret_cast<const VkSwapchainKHR*>( swapchains.data() ), reinterpret_cast<const VkHdrMetadataEXT*>( metadata.data() ) );
29701 }
29702#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29703
Mark Lobodzinski54385432017-05-15 10:27:52 -060029704#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
29705 VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( SwapchainKHR swapchain ) const
29706 {
29707 return static_cast<Result>( vkGetSwapchainStatusKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ) ) );
29708 }
29709#else
29710 VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( SwapchainKHR swapchain ) const
29711 {
29712 Result result = static_cast<Result>( vkGetSwapchainStatusKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ) ) );
29713 return createResultValue( result, "vk::Device::getSwapchainStatusKHR", { Result::eSuccess, Result::eSuboptimalKHR } );
29714 }
29715#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29716
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029717 VULKAN_HPP_INLINE Result Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const
29718 {
29719 return static_cast<Result>( vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( pDisplayTimingProperties ) ) );
29720 }
29721#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29722 VULKAN_HPP_INLINE ResultValueType<RefreshCycleDurationGOOGLE>::type Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain ) const
29723 {
29724 RefreshCycleDurationGOOGLE displayTimingProperties;
29725 Result result = static_cast<Result>( vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( &displayTimingProperties ) ) );
29726 return createResultValue( result, displayTimingProperties, "vk::Device::getRefreshCycleDurationGOOGLE" );
29727 }
29728#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29729
29730 VULKAN_HPP_INLINE Result Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings ) const
29731 {
29732 return static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), pPresentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( pPresentationTimings ) ) );
29733 }
29734#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29735 template <typename Allocator>
29736 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain ) const
29737 {
29738 std::vector<PastPresentationTimingGOOGLE,Allocator> presentationTimings;
29739 uint32_t presentationTimingCount;
29740 Result result = static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, nullptr ) );
29741 if ( ( result == Result::eSuccess ) && presentationTimingCount )
29742 {
29743 presentationTimings.resize( presentationTimingCount );
29744 result = static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( presentationTimings.data() ) ) );
29745 }
29746 return createResultValue( result, presentationTimings, "vk::Device::getPastPresentationTimingGOOGLE" );
29747 }
29748#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29749
Mark Youngabc2d6e2017-07-07 07:59:56 -060029750 VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR* pInfo, MemoryRequirements2KHR* pMemoryRequirements ) const
29751 {
29752 vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2KHR*>( pInfo ), reinterpret_cast<VkMemoryRequirements2KHR*>( pMemoryRequirements ) );
29753 }
29754#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29755 VULKAN_HPP_INLINE MemoryRequirements2KHR Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR & info ) const
29756 {
29757 MemoryRequirements2KHR memoryRequirements;
29758 vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2KHR*>( &info ), reinterpret_cast<VkMemoryRequirements2KHR*>( &memoryRequirements ) );
29759 return memoryRequirements;
29760 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060029761 template <typename ...T>
29762 VULKAN_HPP_INLINE StructureChain<T...> Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR & info ) const
29763 {
29764 StructureChain<T...> structureChain;
29765 MemoryRequirements2KHR& memoryRequirements = structureChain.template get<MemoryRequirements2KHR>();
29766 vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2KHR*>( &info ), reinterpret_cast<VkMemoryRequirements2KHR*>( &memoryRequirements ) );
29767 return structureChain;
29768 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060029769#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29770
29771 VULKAN_HPP_INLINE void Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR* pInfo, MemoryRequirements2KHR* pMemoryRequirements ) const
29772 {
29773 vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2KHR*>( pInfo ), reinterpret_cast<VkMemoryRequirements2KHR*>( pMemoryRequirements ) );
29774 }
29775#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29776 VULKAN_HPP_INLINE MemoryRequirements2KHR Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR & info ) const
29777 {
29778 MemoryRequirements2KHR memoryRequirements;
29779 vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2KHR*>( &info ), reinterpret_cast<VkMemoryRequirements2KHR*>( &memoryRequirements ) );
29780 return memoryRequirements;
29781 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060029782 template <typename ...T>
29783 VULKAN_HPP_INLINE StructureChain<T...> Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR & info ) const
29784 {
29785 StructureChain<T...> structureChain;
29786 MemoryRequirements2KHR& memoryRequirements = structureChain.template get<MemoryRequirements2KHR>();
29787 vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2KHR*>( &info ), reinterpret_cast<VkMemoryRequirements2KHR*>( &memoryRequirements ) );
29788 return structureChain;
29789 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060029790#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29791
29792 VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2KHR* pInfo, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements2KHR* pSparseMemoryRequirements ) const
29793 {
29794 vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2KHR*>( pInfo ), pSparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements2KHR*>( pSparseMemoryRequirements ) );
29795 }
29796#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29797 template <typename Allocator>
29798 VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements2KHR,Allocator> Device::getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2KHR & info ) const
29799 {
29800 std::vector<SparseImageMemoryRequirements2KHR,Allocator> sparseMemoryRequirements;
29801 uint32_t sparseMemoryRequirementCount;
29802 vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2KHR*>( &info ), &sparseMemoryRequirementCount, nullptr );
29803 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
29804 vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2KHR*>( &info ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements2KHR*>( sparseMemoryRequirements.data() ) );
29805 return sparseMemoryRequirements;
29806 }
29807#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29808
Lenny Komowb79f04a2017-09-18 17:07:00 -060029809 VULKAN_HPP_INLINE Result Device::createSamplerYcbcrConversionKHR( const SamplerYcbcrConversionCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SamplerYcbcrConversionKHR* pYcbcrConversion ) const
29810 {
29811 return static_cast<Result>( vkCreateSamplerYcbcrConversionKHR( m_device, reinterpret_cast<const VkSamplerYcbcrConversionCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSamplerYcbcrConversionKHR*>( pYcbcrConversion ) ) );
29812 }
29813#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29814 VULKAN_HPP_INLINE ResultValueType<SamplerYcbcrConversionKHR>::type Device::createSamplerYcbcrConversionKHR( const SamplerYcbcrConversionCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29815 {
29816 SamplerYcbcrConversionKHR ycbcrConversion;
29817 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 ) ) );
29818 return createResultValue( result, ycbcrConversion, "vk::Device::createSamplerYcbcrConversionKHR" );
29819 }
29820#ifndef VULKAN_HPP_NO_SMART_HANDLE
29821 VULKAN_HPP_INLINE UniqueSamplerYcbcrConversionKHR Device::createSamplerYcbcrConversionKHRUnique( const SamplerYcbcrConversionCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29822 {
29823 SamplerYcbcrConversionKHRDeleter deleter( *this, allocator );
29824 return UniqueSamplerYcbcrConversionKHR( createSamplerYcbcrConversionKHR( createInfo, allocator ), deleter );
29825 }
29826#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29827#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29828
29829 VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversionKHR( SamplerYcbcrConversionKHR ycbcrConversion, const AllocationCallbacks* pAllocator ) const
29830 {
29831 vkDestroySamplerYcbcrConversionKHR( m_device, static_cast<VkSamplerYcbcrConversionKHR>( ycbcrConversion ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29832 }
29833#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29834 VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversionKHR( SamplerYcbcrConversionKHR ycbcrConversion, Optional<const AllocationCallbacks> allocator ) const
29835 {
29836 vkDestroySamplerYcbcrConversionKHR( m_device, static_cast<VkSamplerYcbcrConversionKHR>( ycbcrConversion ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
29837 }
29838#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29839
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060029840 VULKAN_HPP_INLINE Result Device::createValidationCacheEXT( const ValidationCacheCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, ValidationCacheEXT* pValidationCache ) const
29841 {
29842 return static_cast<Result>( vkCreateValidationCacheEXT( m_device, reinterpret_cast<const VkValidationCacheCreateInfoEXT*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkValidationCacheEXT*>( pValidationCache ) ) );
29843 }
29844#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29845 VULKAN_HPP_INLINE ResultValueType<ValidationCacheEXT>::type Device::createValidationCacheEXT( const ValidationCacheCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
29846 {
29847 ValidationCacheEXT validationCache;
29848 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 ) ) );
29849 return createResultValue( result, validationCache, "vk::Device::createValidationCacheEXT" );
29850 }
29851#ifndef VULKAN_HPP_NO_SMART_HANDLE
29852 VULKAN_HPP_INLINE UniqueValidationCacheEXT Device::createValidationCacheEXTUnique( const ValidationCacheCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
29853 {
29854 ValidationCacheEXTDeleter deleter( *this, allocator );
29855 return UniqueValidationCacheEXT( createValidationCacheEXT( createInfo, allocator ), deleter );
29856 }
29857#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29858#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29859
29860 VULKAN_HPP_INLINE void Device::destroyValidationCacheEXT( ValidationCacheEXT validationCache, const AllocationCallbacks* pAllocator ) const
29861 {
29862 vkDestroyValidationCacheEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
29863 }
29864#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29865 VULKAN_HPP_INLINE void Device::destroyValidationCacheEXT( ValidationCacheEXT validationCache, Optional<const AllocationCallbacks> allocator ) const
29866 {
29867 vkDestroyValidationCacheEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
29868 }
29869#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29870
29871 VULKAN_HPP_INLINE Result Device::getValidationCacheDataEXT( ValidationCacheEXT validationCache, size_t* pDataSize, void* pData ) const
29872 {
29873 return static_cast<Result>( vkGetValidationCacheDataEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), pDataSize, pData ) );
29874 }
29875#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29876 template <typename Allocator>
29877 VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getValidationCacheDataEXT( ValidationCacheEXT validationCache ) const
29878 {
29879 std::vector<uint8_t,Allocator> data;
29880 size_t dataSize;
29881 Result result;
29882 do
29883 {
29884 result = static_cast<Result>( vkGetValidationCacheDataEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), &dataSize, nullptr ) );
29885 if ( ( result == Result::eSuccess ) && dataSize )
29886 {
29887 data.resize( dataSize );
29888 result = static_cast<Result>( vkGetValidationCacheDataEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), &dataSize, reinterpret_cast<void*>( data.data() ) ) );
29889 }
29890 } while ( result == Result::eIncomplete );
29891 assert( dataSize <= data.size() );
29892 data.resize( dataSize );
29893 return createResultValue( result, data, "vk::Device::getValidationCacheDataEXT" );
29894 }
29895#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29896
29897 VULKAN_HPP_INLINE Result Device::mergeValidationCachesEXT( ValidationCacheEXT dstCache, uint32_t srcCacheCount, const ValidationCacheEXT* pSrcCaches ) const
29898 {
29899 return static_cast<Result>( vkMergeValidationCachesEXT( m_device, static_cast<VkValidationCacheEXT>( dstCache ), srcCacheCount, reinterpret_cast<const VkValidationCacheEXT*>( pSrcCaches ) ) );
29900 }
29901#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29902 VULKAN_HPP_INLINE ResultValueType<void>::type Device::mergeValidationCachesEXT( ValidationCacheEXT dstCache, ArrayProxy<const ValidationCacheEXT> srcCaches ) const
29903 {
29904 Result result = static_cast<Result>( vkMergeValidationCachesEXT( m_device, static_cast<VkValidationCacheEXT>( dstCache ), srcCaches.size() , reinterpret_cast<const VkValidationCacheEXT*>( srcCaches.data() ) ) );
29905 return createResultValue( result, "vk::Device::mergeValidationCachesEXT" );
29906 }
29907#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29908
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029909#ifndef VULKAN_HPP_NO_SMART_HANDLE
29910 class DeviceDeleter;
29911 using UniqueDevice = UniqueHandle<Device, DeviceDeleter>;
29912#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29913
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029914 class PhysicalDevice
29915 {
29916 public:
29917 PhysicalDevice()
29918 : m_physicalDevice(VK_NULL_HANDLE)
29919 {}
29920
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070029921 PhysicalDevice( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029922 : m_physicalDevice(VK_NULL_HANDLE)
29923 {}
29924
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029925 VULKAN_HPP_TYPESAFE_EXPLICIT PhysicalDevice( VkPhysicalDevice physicalDevice )
29926 : m_physicalDevice( physicalDevice )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029927 {}
29928
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070029929#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029930 PhysicalDevice & operator=(VkPhysicalDevice physicalDevice)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029931 {
29932 m_physicalDevice = physicalDevice;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029933 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029934 }
29935#endif
29936
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029937 PhysicalDevice & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029938 {
29939 m_physicalDevice = VK_NULL_HANDLE;
29940 return *this;
29941 }
29942
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029943 bool operator==( PhysicalDevice const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060029944 {
29945 return m_physicalDevice == rhs.m_physicalDevice;
29946 }
29947
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029948 bool operator!=(PhysicalDevice const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060029949 {
29950 return m_physicalDevice != rhs.m_physicalDevice;
29951 }
29952
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029953 bool operator<(PhysicalDevice const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060029954 {
29955 return m_physicalDevice < rhs.m_physicalDevice;
29956 }
29957
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029958 void getProperties( PhysicalDeviceProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029959#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029960 PhysicalDeviceProperties getProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029961#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29962
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029963 void getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029964#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029965 template <typename Allocator = std::allocator<QueueFamilyProperties>>
29966 std::vector<QueueFamilyProperties,Allocator> getQueueFamilyProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029967#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29968
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029969 void getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029970#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029971 PhysicalDeviceMemoryProperties getMemoryProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029972#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29973
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029974 void getFeatures( PhysicalDeviceFeatures* pFeatures ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029975#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029976 PhysicalDeviceFeatures getFeatures() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029977#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29978
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029979 void getFormatProperties( Format format, FormatProperties* pFormatProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029980#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029981 FormatProperties getFormatProperties( Format format ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029982#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29983
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029984 Result getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029985#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029986 ResultValueType<ImageFormatProperties>::type getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029987#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29988
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029989 Result createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029990#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029991 ResultValueType<Device>::type createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29992#ifndef VULKAN_HPP_NO_SMART_HANDLE
29993 UniqueDevice createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
29994#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029995#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29996
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029997 Result enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029998#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029999 template <typename Allocator = std::allocator<LayerProperties>>
30000 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateDeviceLayerProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030001#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30002
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030003 Result enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030004#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030005 template <typename Allocator = std::allocator<ExtensionProperties>>
30006 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateDeviceExtensionProperties( Optional<const std::string> layerName = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030007#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30008
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030009 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 -060030010#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030011 template <typename Allocator = std::allocator<SparseImageFormatProperties>>
30012 std::vector<SparseImageFormatProperties,Allocator> getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030013#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30014
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030015 Result getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030016#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030017 template <typename Allocator = std::allocator<DisplayPropertiesKHR>>
30018 typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type getDisplayPropertiesKHR() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030019#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30020
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030021 Result getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030022#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030023 template <typename Allocator = std::allocator<DisplayPlanePropertiesKHR>>
30024 typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type getDisplayPlanePropertiesKHR() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030025#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30026
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030027 Result getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030028#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030029 template <typename Allocator = std::allocator<DisplayKHR>>
30030 typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030031#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30032
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030033 Result getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030034#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030035 template <typename Allocator = std::allocator<DisplayModePropertiesKHR>>
30036 typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type getDisplayModePropertiesKHR( DisplayKHR display ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030037#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30038
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030039 Result createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030040#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030041 ResultValueType<DisplayModeKHR>::type createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030042#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30043
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030044 Result getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030045#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030046 ResultValueType<DisplayPlaneCapabilitiesKHR>::type getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030047#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30048
30049#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030050 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection ) const;
30051#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30052 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection ) const;
30053#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030054#endif /*VK_USE_PLATFORM_MIR_KHR*/
30055
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030056 Result getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030057#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030058 ResultValueType<Bool32>::type getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030059#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30060
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030061 Result getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030062#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030063 ResultValueType<SurfaceCapabilitiesKHR>::type getSurfaceCapabilitiesKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030064#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30065
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030066 Result getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030067#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030068 template <typename Allocator = std::allocator<SurfaceFormatKHR>>
30069 typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type getSurfaceFormatsKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030070#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30071
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030072 Result getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030073#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030074 template <typename Allocator = std::allocator<PresentModeKHR>>
30075 typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type getSurfacePresentModesKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030076#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30077
30078#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030079 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display ) const;
30080#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30081 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const;
30082#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030083#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
30084
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030085#ifdef VK_USE_PLATFORM_WIN32_KHR
30086 Bool32 getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const;
30087#endif /*VK_USE_PLATFORM_WIN32_KHR*/
30088
30089#ifdef VK_USE_PLATFORM_XLIB_KHR
30090 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030091#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030092 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const;
30093#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30094#endif /*VK_USE_PLATFORM_XLIB_KHR*/
30095
30096#ifdef VK_USE_PLATFORM_XCB_KHR
30097 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const;
30098#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30099 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const;
30100#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30101#endif /*VK_USE_PLATFORM_XCB_KHR*/
30102
30103 Result getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const;
30104#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30105 ResultValueType<ExternalImageFormatPropertiesNV>::type getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType ) const;
30106#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30107
30108 void getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits ) const;
30109#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30110 DeviceGeneratedCommandsLimitsNVX getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features ) const;
30111#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30112
30113 void getFeatures2KHR( PhysicalDeviceFeatures2KHR* pFeatures ) const;
30114#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30115 PhysicalDeviceFeatures2KHR getFeatures2KHR() const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030116 template <typename ...T>
30117 StructureChain<T...> getFeatures2KHR() const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030118#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30119
30120 void getProperties2KHR( PhysicalDeviceProperties2KHR* pProperties ) const;
30121#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30122 PhysicalDeviceProperties2KHR getProperties2KHR() const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030123 template <typename ...T>
30124 StructureChain<T...> getProperties2KHR() const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030125#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30126
30127 void getFormatProperties2KHR( Format format, FormatProperties2KHR* pFormatProperties ) const;
30128#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30129 FormatProperties2KHR getFormatProperties2KHR( Format format ) const;
30130#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30131
30132 Result getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, ImageFormatProperties2KHR* pImageFormatProperties ) const;
30133#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30134 ResultValueType<ImageFormatProperties2KHR>::type getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030135 template <typename ...T>
30136 typename ResultValueType<StructureChain<T...>>::type getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030137#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30138
30139 void getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2KHR* pQueueFamilyProperties ) const;
30140#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30141 template <typename Allocator = std::allocator<QueueFamilyProperties2KHR>>
30142 std::vector<QueueFamilyProperties2KHR,Allocator> getQueueFamilyProperties2KHR() const;
30143#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30144
30145 void getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2KHR* pMemoryProperties ) const;
30146#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30147 PhysicalDeviceMemoryProperties2KHR getMemoryProperties2KHR() const;
30148#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30149
30150 void getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2KHR* pProperties ) const;
30151#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30152 template <typename Allocator = std::allocator<SparseImageFormatProperties2KHR>>
30153 std::vector<SparseImageFormatProperties2KHR,Allocator> getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR & formatInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030154#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30155
Mark Youngabc2d6e2017-07-07 07:59:56 -060030156 void getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfoKHR* pExternalBufferInfo, ExternalBufferPropertiesKHR* pExternalBufferProperties ) const;
Mark Young0f183a82017-02-28 09:58:04 -070030157#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060030158 ExternalBufferPropertiesKHR getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfoKHR & externalBufferInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070030159#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30160
Mark Youngabc2d6e2017-07-07 07:59:56 -060030161 void getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfoKHR* pExternalSemaphoreInfo, ExternalSemaphorePropertiesKHR* pExternalSemaphoreProperties ) const;
Mark Young0f183a82017-02-28 09:58:04 -070030162#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060030163 ExternalSemaphorePropertiesKHR getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfoKHR & externalSemaphoreInfo ) const;
30164#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30165
30166 void getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfoKHR* pExternalFenceInfo, ExternalFencePropertiesKHR* pExternalFenceProperties ) const;
30167#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30168 ExternalFencePropertiesKHR getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfoKHR & externalFenceInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070030169#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30170
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030171#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030172 Result releaseDisplayEXT( DisplayKHR display ) const;
30173#else
30174 ResultValueType<void>::type releaseDisplayEXT( DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070030175#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30176
30177#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030178 Result acquireXlibDisplayEXT( Display* dpy, DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070030179#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030180 ResultValueType<Display>::type acquireXlibDisplayEXT( DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070030181#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young39389872017-01-19 21:10:49 -070030182#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
30183
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030184#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
30185 Result getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay ) const;
Mark Young39389872017-01-19 21:10:49 -070030186#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030187 ResultValueType<DisplayKHR>::type getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const;
Mark Young39389872017-01-19 21:10:49 -070030188#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030189#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
Mark Young39389872017-01-19 21:10:49 -070030190
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030191 Result getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities ) const;
Mark Young39389872017-01-19 21:10:49 -070030192#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030193 ResultValueType<SurfaceCapabilities2EXT>::type getSurfaceCapabilities2EXT( SurfaceKHR surface ) const;
Mark Young39389872017-01-19 21:10:49 -070030194#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30195
Mark Young0f183a82017-02-28 09:58:04 -070030196 Result getPresentRectanglesKHX( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects ) const;
30197#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30198 template <typename Allocator = std::allocator<Rect2D>>
30199 typename ResultValueType<std::vector<Rect2D,Allocator>>::type getPresentRectanglesKHX( SurfaceKHR surface ) const;
30200#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30201
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030202 void getMultisamplePropertiesEXT( SampleCountFlagBits samples, MultisamplePropertiesEXT* pMultisampleProperties ) const;
30203#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30204 MultisamplePropertiesEXT getMultisamplePropertiesEXT( SampleCountFlagBits samples ) const;
30205#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30206
Mark Lobodzinski54385432017-05-15 10:27:52 -060030207 Result getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, SurfaceCapabilities2KHR* pSurfaceCapabilities ) const;
30208#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030209 ResultValueType<SurfaceCapabilities2KHR>::type getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030210 template <typename ...T>
30211 typename ResultValueType<StructureChain<T...>>::type getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
Mark Lobodzinski54385432017-05-15 10:27:52 -060030212#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30213
30214 Result getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, SurfaceFormat2KHR* pSurfaceFormats ) const;
30215#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30216 template <typename Allocator = std::allocator<SurfaceFormat2KHR>>
30217 typename ResultValueType<std::vector<SurfaceFormat2KHR,Allocator>>::type getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
30218#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30219
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030220
30221
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070030222 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPhysicalDevice() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030223 {
30224 return m_physicalDevice;
30225 }
30226
30227 explicit operator bool() const
30228 {
30229 return m_physicalDevice != VK_NULL_HANDLE;
30230 }
30231
30232 bool operator!() const
30233 {
30234 return m_physicalDevice == VK_NULL_HANDLE;
30235 }
30236
30237 private:
30238 VkPhysicalDevice m_physicalDevice;
30239 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030240
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030241 static_assert( sizeof( PhysicalDevice ) == sizeof( VkPhysicalDevice ), "handle and wrapper have different size!" );
30242
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030243#ifndef VULKAN_HPP_NO_SMART_HANDLE
30244 class DeviceDeleter
30245 {
30246 public:
30247 DeviceDeleter( Optional<const AllocationCallbacks> allocator = nullptr )
30248 : m_allocator( allocator )
30249 {}
30250
30251 void operator()( Device device )
30252 {
30253 device.destroy( m_allocator );
30254 }
30255
30256 private:
30257 Optional<const AllocationCallbacks> m_allocator;
30258 };
30259#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30260
30261 VULKAN_HPP_INLINE void PhysicalDevice::getProperties( PhysicalDeviceProperties* pProperties ) const
30262 {
30263 vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( pProperties ) );
30264 }
30265#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30266 VULKAN_HPP_INLINE PhysicalDeviceProperties PhysicalDevice::getProperties() const
30267 {
30268 PhysicalDeviceProperties properties;
30269 vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( &properties ) );
30270 return properties;
30271 }
30272#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30273
30274 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties ) const
30275 {
30276 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( pQueueFamilyProperties ) );
30277 }
30278#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30279 template <typename Allocator>
30280 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties,Allocator> PhysicalDevice::getQueueFamilyProperties() const
30281 {
30282 std::vector<QueueFamilyProperties,Allocator> queueFamilyProperties;
30283 uint32_t queueFamilyPropertyCount;
30284 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
30285 queueFamilyProperties.resize( queueFamilyPropertyCount );
30286 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( queueFamilyProperties.data() ) );
30287 return queueFamilyProperties;
30288 }
30289#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30290
30291 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties ) const
30292 {
30293 vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( pMemoryProperties ) );
30294 }
30295#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30296 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties PhysicalDevice::getMemoryProperties() const
30297 {
30298 PhysicalDeviceMemoryProperties memoryProperties;
30299 vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( &memoryProperties ) );
30300 return memoryProperties;
30301 }
30302#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30303
30304 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures( PhysicalDeviceFeatures* pFeatures ) const
30305 {
30306 vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( pFeatures ) );
30307 }
30308#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30309 VULKAN_HPP_INLINE PhysicalDeviceFeatures PhysicalDevice::getFeatures() const
30310 {
30311 PhysicalDeviceFeatures features;
30312 vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( &features ) );
30313 return features;
30314 }
30315#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30316
30317 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties( Format format, FormatProperties* pFormatProperties ) const
30318 {
30319 vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( pFormatProperties ) );
30320 }
30321#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30322 VULKAN_HPP_INLINE FormatProperties PhysicalDevice::getFormatProperties( Format format ) const
30323 {
30324 FormatProperties formatProperties;
30325 vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( &formatProperties ) );
30326 return formatProperties;
30327 }
30328#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30329
30330 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties ) const
30331 {
30332 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 ) ) );
30333 }
30334#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30335 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties>::type PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const
30336 {
30337 ImageFormatProperties imageFormatProperties;
30338 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 ) ) );
30339 return createResultValue( result, imageFormatProperties, "vk::PhysicalDevice::getImageFormatProperties" );
30340 }
30341#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30342
30343 VULKAN_HPP_INLINE Result PhysicalDevice::createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice ) const
30344 {
30345 return static_cast<Result>( vkCreateDevice( m_physicalDevice, reinterpret_cast<const VkDeviceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDevice*>( pDevice ) ) );
30346 }
30347#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30348 VULKAN_HPP_INLINE ResultValueType<Device>::type PhysicalDevice::createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
30349 {
30350 Device device;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030351 Result result = static_cast<Result>( vkCreateDevice( m_physicalDevice, reinterpret_cast<const VkDeviceCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDevice*>( &device ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030352 return createResultValue( result, device, "vk::PhysicalDevice::createDevice" );
30353 }
30354#ifndef VULKAN_HPP_NO_SMART_HANDLE
30355 VULKAN_HPP_INLINE UniqueDevice PhysicalDevice::createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
30356 {
30357 DeviceDeleter deleter( allocator );
30358 return UniqueDevice( createDevice( createInfo, allocator ), deleter );
30359 }
30360#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30361#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30362
30363 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties ) const
30364 {
30365 return static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
30366 }
30367#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30368 template <typename Allocator>
30369 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type PhysicalDevice::enumerateDeviceLayerProperties() const
30370 {
30371 std::vector<LayerProperties,Allocator> properties;
30372 uint32_t propertyCount;
30373 Result result;
30374 do
30375 {
30376 result = static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, nullptr ) );
30377 if ( ( result == Result::eSuccess ) && propertyCount )
30378 {
30379 properties.resize( propertyCount );
30380 result = static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
30381 }
30382 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030383 assert( propertyCount <= properties.size() );
30384 properties.resize( propertyCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030385 return createResultValue( result, properties, "vk::PhysicalDevice::enumerateDeviceLayerProperties" );
30386 }
30387#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30388
30389 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties ) const
30390 {
30391 return static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
30392 }
30393#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30394 template <typename Allocator>
30395 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type PhysicalDevice::enumerateDeviceExtensionProperties( Optional<const std::string> layerName ) const
30396 {
30397 std::vector<ExtensionProperties,Allocator> properties;
30398 uint32_t propertyCount;
30399 Result result;
30400 do
30401 {
30402 result = static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
30403 if ( ( result == Result::eSuccess ) && propertyCount )
30404 {
30405 properties.resize( propertyCount );
30406 result = static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
30407 }
30408 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030409 assert( propertyCount <= properties.size() );
30410 properties.resize( propertyCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030411 return createResultValue( result, properties, "vk::PhysicalDevice::enumerateDeviceExtensionProperties" );
30412 }
30413#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30414
30415 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling, uint32_t* pPropertyCount, SparseImageFormatProperties* pProperties ) const
30416 {
30417 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 ) );
30418 }
30419#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30420 template <typename Allocator>
30421 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties,Allocator> PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const
30422 {
30423 std::vector<SparseImageFormatProperties,Allocator> properties;
30424 uint32_t propertyCount;
30425 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 );
30426 properties.resize( propertyCount );
30427 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() ) );
30428 return properties;
30429 }
30430#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30431
30432 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties ) const
30433 {
30434 return static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( pProperties ) ) );
30435 }
30436#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30437 template <typename Allocator>
30438 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPropertiesKHR() const
30439 {
30440 std::vector<DisplayPropertiesKHR,Allocator> properties;
30441 uint32_t propertyCount;
30442 Result result;
30443 do
30444 {
30445 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
30446 if ( ( result == Result::eSuccess ) && propertyCount )
30447 {
30448 properties.resize( propertyCount );
30449 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( properties.data() ) ) );
30450 }
30451 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030452 assert( propertyCount <= properties.size() );
30453 properties.resize( propertyCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030454 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayPropertiesKHR" );
30455 }
30456#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30457
30458 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties ) const
30459 {
30460 return static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( pProperties ) ) );
30461 }
30462#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30463 template <typename Allocator>
30464 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPlanePropertiesKHR() const
30465 {
30466 std::vector<DisplayPlanePropertiesKHR,Allocator> properties;
30467 uint32_t propertyCount;
30468 Result result;
30469 do
30470 {
30471 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
30472 if ( ( result == Result::eSuccess ) && propertyCount )
30473 {
30474 properties.resize( propertyCount );
30475 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( properties.data() ) ) );
30476 }
30477 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030478 assert( propertyCount <= properties.size() );
30479 properties.resize( propertyCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030480 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayPlanePropertiesKHR" );
30481 }
30482#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30483
30484 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays ) const
30485 {
30486 return static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, pDisplayCount, reinterpret_cast<VkDisplayKHR*>( pDisplays ) ) );
30487 }
30488#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30489 template <typename Allocator>
30490 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const
30491 {
30492 std::vector<DisplayKHR,Allocator> displays;
30493 uint32_t displayCount;
30494 Result result;
30495 do
30496 {
30497 result = static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, nullptr ) );
30498 if ( ( result == Result::eSuccess ) && displayCount )
30499 {
30500 displays.resize( displayCount );
30501 result = static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, reinterpret_cast<VkDisplayKHR*>( displays.data() ) ) );
30502 }
30503 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030504 assert( displayCount <= displays.size() );
30505 displays.resize( displayCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030506 return createResultValue( result, displays, "vk::PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR" );
30507 }
30508#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30509
30510 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties ) const
30511 {
30512 return static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), pPropertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( pProperties ) ) );
30513 }
30514#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30515 template <typename Allocator>
30516 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display ) const
30517 {
30518 std::vector<DisplayModePropertiesKHR,Allocator> properties;
30519 uint32_t propertyCount;
30520 Result result;
30521 do
30522 {
30523 result = static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, nullptr ) );
30524 if ( ( result == Result::eSuccess ) && propertyCount )
30525 {
30526 properties.resize( propertyCount );
30527 result = static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( properties.data() ) ) );
30528 }
30529 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030530 assert( propertyCount <= properties.size() );
30531 properties.resize( propertyCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030532 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayModePropertiesKHR" );
30533 }
30534#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30535
30536 VULKAN_HPP_INLINE Result PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode ) const
30537 {
30538 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 ) ) );
30539 }
30540#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30541 VULKAN_HPP_INLINE ResultValueType<DisplayModeKHR>::type PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
30542 {
30543 DisplayModeKHR mode;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030544 Result result = static_cast<Result>( vkCreateDisplayModeKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayModeCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDisplayModeKHR*>( &mode ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030545 return createResultValue( result, mode, "vk::PhysicalDevice::createDisplayModeKHR" );
30546 }
30547#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30548
30549 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities ) const
30550 {
30551 return static_cast<Result>( vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( pCapabilities ) ) );
30552 }
30553#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30554 VULKAN_HPP_INLINE ResultValueType<DisplayPlaneCapabilitiesKHR>::type PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex ) const
30555 {
30556 DisplayPlaneCapabilitiesKHR capabilities;
30557 Result result = static_cast<Result>( vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( &capabilities ) ) );
30558 return createResultValue( result, capabilities, "vk::PhysicalDevice::getDisplayPlaneCapabilitiesKHR" );
30559 }
30560#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30561
30562#ifdef VK_USE_PLATFORM_MIR_KHR
30563 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection ) const
30564 {
30565 return vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection );
30566 }
30567#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30568 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection ) const
30569 {
30570 return vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection );
30571 }
30572#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30573#endif /*VK_USE_PLATFORM_MIR_KHR*/
30574
30575 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported ) const
30576 {
30577 return static_cast<Result>( vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), pSupported ) );
30578 }
30579#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30580 VULKAN_HPP_INLINE ResultValueType<Bool32>::type PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface ) const
30581 {
30582 Bool32 supported;
30583 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), &supported ) );
30584 return createResultValue( result, supported, "vk::PhysicalDevice::getSurfaceSupportKHR" );
30585 }
30586#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30587
30588 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities ) const
30589 {
30590 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( pSurfaceCapabilities ) ) );
30591 }
30592#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30593 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilitiesKHR>::type PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface ) const
30594 {
30595 SurfaceCapabilitiesKHR surfaceCapabilities;
30596 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( &surfaceCapabilities ) ) );
30597 return createResultValue( result, surfaceCapabilities, "vk::PhysicalDevice::getSurfaceCapabilitiesKHR" );
30598 }
30599#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30600
30601 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats ) const
30602 {
30603 return static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pSurfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( pSurfaceFormats ) ) );
30604 }
30605#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30606 template <typename Allocator>
30607 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface ) const
30608 {
30609 std::vector<SurfaceFormatKHR,Allocator> surfaceFormats;
30610 uint32_t surfaceFormatCount;
30611 Result result;
30612 do
30613 {
30614 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, nullptr ) );
30615 if ( ( result == Result::eSuccess ) && surfaceFormatCount )
30616 {
30617 surfaceFormats.resize( surfaceFormatCount );
30618 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( surfaceFormats.data() ) ) );
30619 }
30620 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030621 assert( surfaceFormatCount <= surfaceFormats.size() );
30622 surfaceFormats.resize( surfaceFormatCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030623 return createResultValue( result, surfaceFormats, "vk::PhysicalDevice::getSurfaceFormatsKHR" );
30624 }
30625#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30626
30627 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes ) const
30628 {
30629 return static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pPresentModeCount, reinterpret_cast<VkPresentModeKHR*>( pPresentModes ) ) );
30630 }
30631#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30632 template <typename Allocator>
30633 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface ) const
30634 {
30635 std::vector<PresentModeKHR,Allocator> presentModes;
30636 uint32_t presentModeCount;
30637 Result result;
30638 do
30639 {
30640 result = static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, nullptr ) );
30641 if ( ( result == Result::eSuccess ) && presentModeCount )
30642 {
30643 presentModes.resize( presentModeCount );
30644 result = static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, reinterpret_cast<VkPresentModeKHR*>( presentModes.data() ) ) );
30645 }
30646 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030647 assert( presentModeCount <= presentModes.size() );
30648 presentModes.resize( presentModeCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030649 return createResultValue( result, presentModes, "vk::PhysicalDevice::getSurfacePresentModesKHR" );
30650 }
30651#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30652
30653#ifdef VK_USE_PLATFORM_WAYLAND_KHR
30654 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display ) const
30655 {
30656 return vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, display );
30657 }
30658#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30659 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const
30660 {
30661 return vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &display );
30662 }
30663#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30664#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
30665
30666#ifdef VK_USE_PLATFORM_WIN32_KHR
30667 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const
30668 {
30669 return vkGetPhysicalDeviceWin32PresentationSupportKHR( m_physicalDevice, queueFamilyIndex );
30670 }
30671#endif /*VK_USE_PLATFORM_WIN32_KHR*/
30672
30673#ifdef VK_USE_PLATFORM_XLIB_KHR
30674 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const
30675 {
30676 return vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, dpy, visualID );
30677 }
30678#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30679 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const
30680 {
30681 return vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &dpy, visualID );
30682 }
30683#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30684#endif /*VK_USE_PLATFORM_XLIB_KHR*/
30685
30686#ifdef VK_USE_PLATFORM_XCB_KHR
30687 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const
30688 {
30689 return vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection, visual_id );
30690 }
30691#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30692 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const
30693 {
30694 return vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection, visual_id );
30695 }
30696#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30697#endif /*VK_USE_PLATFORM_XCB_KHR*/
30698
30699 VULKAN_HPP_INLINE Result PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const
30700 {
30701 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 ) ) );
30702 }
30703#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30704 VULKAN_HPP_INLINE ResultValueType<ExternalImageFormatPropertiesNV>::type PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType ) const
30705 {
30706 ExternalImageFormatPropertiesNV externalImageFormatProperties;
30707 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 ) ) );
30708 return createResultValue( result, externalImageFormatProperties, "vk::PhysicalDevice::getExternalImageFormatPropertiesNV" );
30709 }
30710#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30711
30712 VULKAN_HPP_INLINE void PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits ) const
30713 {
30714 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( pFeatures ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( pLimits ) );
30715 }
30716#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30717 VULKAN_HPP_INLINE DeviceGeneratedCommandsLimitsNVX PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features ) const
30718 {
30719 DeviceGeneratedCommandsLimitsNVX limits;
30720 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( &features ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( &limits ) );
30721 return limits;
30722 }
30723#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30724
30725 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures2KHR( PhysicalDeviceFeatures2KHR* pFeatures ) const
30726 {
30727 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( pFeatures ) );
30728 }
30729#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30730 VULKAN_HPP_INLINE PhysicalDeviceFeatures2KHR PhysicalDevice::getFeatures2KHR() const
30731 {
30732 PhysicalDeviceFeatures2KHR features;
30733 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( &features ) );
30734 return features;
30735 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030736 template <typename ...T>
30737 VULKAN_HPP_INLINE StructureChain<T...> PhysicalDevice::getFeatures2KHR() const
30738 {
30739 StructureChain<T...> structureChain;
30740 PhysicalDeviceFeatures2KHR& features = structureChain.template get<PhysicalDeviceFeatures2KHR>();
30741 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( &features ) );
30742 return structureChain;
30743 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030744#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30745
30746 VULKAN_HPP_INLINE void PhysicalDevice::getProperties2KHR( PhysicalDeviceProperties2KHR* pProperties ) const
30747 {
30748 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( pProperties ) );
30749 }
30750#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30751 VULKAN_HPP_INLINE PhysicalDeviceProperties2KHR PhysicalDevice::getProperties2KHR() const
30752 {
30753 PhysicalDeviceProperties2KHR properties;
30754 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( &properties ) );
30755 return properties;
30756 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030757 template <typename ...T>
30758 VULKAN_HPP_INLINE StructureChain<T...> PhysicalDevice::getProperties2KHR() const
30759 {
30760 StructureChain<T...> structureChain;
30761 PhysicalDeviceProperties2KHR& properties = structureChain.template get<PhysicalDeviceProperties2KHR>();
30762 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( &properties ) );
30763 return structureChain;
30764 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030765#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30766
30767 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties2KHR( Format format, FormatProperties2KHR* pFormatProperties ) const
30768 {
30769 vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2KHR*>( pFormatProperties ) );
30770 }
30771#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30772 VULKAN_HPP_INLINE FormatProperties2KHR PhysicalDevice::getFormatProperties2KHR( Format format ) const
30773 {
30774 FormatProperties2KHR formatProperties;
30775 vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2KHR*>( &formatProperties ) );
30776 return formatProperties;
30777 }
30778#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30779
30780 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, ImageFormatProperties2KHR* pImageFormatProperties ) const
30781 {
30782 return static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( pImageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( pImageFormatProperties ) ) );
30783 }
30784#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30785 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties2KHR>::type PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const
30786 {
30787 ImageFormatProperties2KHR imageFormatProperties;
30788 Result result = static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( &imageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( &imageFormatProperties ) ) );
30789 return createResultValue( result, imageFormatProperties, "vk::PhysicalDevice::getImageFormatProperties2KHR" );
30790 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030791 template <typename ...T>
30792 VULKAN_HPP_INLINE typename ResultValueType<StructureChain<T...>>::type PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const
30793 {
30794 StructureChain<T...> structureChain;
30795 ImageFormatProperties2KHR& imageFormatProperties = structureChain.template get<ImageFormatProperties2KHR>();
30796 Result result = static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( &imageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( &imageFormatProperties ) ) );
30797 return createResultValue( result, structureChain, "vk::PhysicalDevice::getImageFormatProperties2KHR" );
30798 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030799#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30800
30801 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2KHR* pQueueFamilyProperties ) const
30802 {
30803 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2KHR*>( pQueueFamilyProperties ) );
30804 }
30805#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30806 template <typename Allocator>
30807 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties2KHR,Allocator> PhysicalDevice::getQueueFamilyProperties2KHR() const
30808 {
30809 std::vector<QueueFamilyProperties2KHR,Allocator> queueFamilyProperties;
30810 uint32_t queueFamilyPropertyCount;
30811 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
30812 queueFamilyProperties.resize( queueFamilyPropertyCount );
30813 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2KHR*>( queueFamilyProperties.data() ) );
30814 return queueFamilyProperties;
30815 }
30816#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30817
30818 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2KHR* pMemoryProperties ) const
30819 {
30820 vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2KHR*>( pMemoryProperties ) );
30821 }
30822#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30823 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties2KHR PhysicalDevice::getMemoryProperties2KHR() const
30824 {
30825 PhysicalDeviceMemoryProperties2KHR memoryProperties;
30826 vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2KHR*>( &memoryProperties ) );
30827 return memoryProperties;
30828 }
30829#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30830
30831 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2KHR* pProperties ) const
30832 {
30833 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( pFormatInfo ), pPropertyCount, reinterpret_cast<VkSparseImageFormatProperties2KHR*>( pProperties ) );
30834 }
30835#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30836 template <typename Allocator>
30837 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties2KHR,Allocator> PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR & formatInfo ) const
30838 {
30839 std::vector<SparseImageFormatProperties2KHR,Allocator> properties;
30840 uint32_t propertyCount;
30841 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( &formatInfo ), &propertyCount, nullptr );
30842 properties.resize( propertyCount );
30843 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( &formatInfo ), &propertyCount, reinterpret_cast<VkSparseImageFormatProperties2KHR*>( properties.data() ) );
30844 return properties;
30845 }
30846#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30847
Mark Youngabc2d6e2017-07-07 07:59:56 -060030848 VULKAN_HPP_INLINE void PhysicalDevice::getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfoKHR* pExternalBufferInfo, ExternalBufferPropertiesKHR* pExternalBufferProperties ) const
Mark Young0f183a82017-02-28 09:58:04 -070030849 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060030850 vkGetPhysicalDeviceExternalBufferPropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHR*>( pExternalBufferInfo ), reinterpret_cast<VkExternalBufferPropertiesKHR*>( pExternalBufferProperties ) );
Mark Young0f183a82017-02-28 09:58:04 -070030851 }
30852#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060030853 VULKAN_HPP_INLINE ExternalBufferPropertiesKHR PhysicalDevice::getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfoKHR & externalBufferInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070030854 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060030855 ExternalBufferPropertiesKHR externalBufferProperties;
30856 vkGetPhysicalDeviceExternalBufferPropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHR*>( &externalBufferInfo ), reinterpret_cast<VkExternalBufferPropertiesKHR*>( &externalBufferProperties ) );
Mark Young0f183a82017-02-28 09:58:04 -070030857 return externalBufferProperties;
30858 }
30859#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30860
Mark Youngabc2d6e2017-07-07 07:59:56 -060030861 VULKAN_HPP_INLINE void PhysicalDevice::getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfoKHR* pExternalSemaphoreInfo, ExternalSemaphorePropertiesKHR* pExternalSemaphoreProperties ) const
Mark Young0f183a82017-02-28 09:58:04 -070030862 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060030863 vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHR*>( pExternalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphorePropertiesKHR*>( pExternalSemaphoreProperties ) );
Mark Young0f183a82017-02-28 09:58:04 -070030864 }
30865#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060030866 VULKAN_HPP_INLINE ExternalSemaphorePropertiesKHR PhysicalDevice::getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfoKHR & externalSemaphoreInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070030867 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060030868 ExternalSemaphorePropertiesKHR externalSemaphoreProperties;
30869 vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHR*>( &externalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphorePropertiesKHR*>( &externalSemaphoreProperties ) );
Mark Young0f183a82017-02-28 09:58:04 -070030870 return externalSemaphoreProperties;
30871 }
30872#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30873
Mark Youngabc2d6e2017-07-07 07:59:56 -060030874 VULKAN_HPP_INLINE void PhysicalDevice::getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfoKHR* pExternalFenceInfo, ExternalFencePropertiesKHR* pExternalFenceProperties ) const
30875 {
30876 vkGetPhysicalDeviceExternalFencePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalFenceInfoKHR*>( pExternalFenceInfo ), reinterpret_cast<VkExternalFencePropertiesKHR*>( pExternalFenceProperties ) );
30877 }
30878#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30879 VULKAN_HPP_INLINE ExternalFencePropertiesKHR PhysicalDevice::getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfoKHR & externalFenceInfo ) const
30880 {
30881 ExternalFencePropertiesKHR externalFenceProperties;
30882 vkGetPhysicalDeviceExternalFencePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalFenceInfoKHR*>( &externalFenceInfo ), reinterpret_cast<VkExternalFencePropertiesKHR*>( &externalFenceProperties ) );
30883 return externalFenceProperties;
30884 }
30885#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30886
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030887#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
30888 VULKAN_HPP_INLINE Result PhysicalDevice::releaseDisplayEXT( DisplayKHR display ) const
30889 {
30890 return static_cast<Result>( vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
30891 }
30892#else
30893 VULKAN_HPP_INLINE ResultValueType<void>::type PhysicalDevice::releaseDisplayEXT( DisplayKHR display ) const
30894 {
30895 Result result = static_cast<Result>( vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
30896 return createResultValue( result, "vk::PhysicalDevice::releaseDisplayEXT" );
30897 }
30898#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30899
30900#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
30901 VULKAN_HPP_INLINE Result PhysicalDevice::acquireXlibDisplayEXT( Display* dpy, DisplayKHR display ) const
30902 {
30903 return static_cast<Result>( vkAcquireXlibDisplayEXT( m_physicalDevice, dpy, static_cast<VkDisplayKHR>( display ) ) );
30904 }
30905#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30906 VULKAN_HPP_INLINE ResultValueType<Display>::type PhysicalDevice::acquireXlibDisplayEXT( DisplayKHR display ) const
30907 {
30908 Display dpy;
30909 Result result = static_cast<Result>( vkAcquireXlibDisplayEXT( m_physicalDevice, &dpy, static_cast<VkDisplayKHR>( display ) ) );
30910 return createResultValue( result, dpy, "vk::PhysicalDevice::acquireXlibDisplayEXT" );
30911 }
30912#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30913#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
30914
30915#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
30916 VULKAN_HPP_INLINE Result PhysicalDevice::getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay ) const
30917 {
30918 return static_cast<Result>( vkGetRandROutputDisplayEXT( m_physicalDevice, dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( pDisplay ) ) );
30919 }
30920#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30921 VULKAN_HPP_INLINE ResultValueType<DisplayKHR>::type PhysicalDevice::getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const
30922 {
30923 DisplayKHR display;
30924 Result result = static_cast<Result>( vkGetRandROutputDisplayEXT( m_physicalDevice, &dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( &display ) ) );
30925 return createResultValue( result, display, "vk::PhysicalDevice::getRandROutputDisplayEXT" );
30926 }
30927#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30928#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
30929
30930 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities ) const
30931 {
30932 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( pSurfaceCapabilities ) ) );
30933 }
30934#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30935 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilities2EXT>::type PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface ) const
30936 {
30937 SurfaceCapabilities2EXT surfaceCapabilities;
30938 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( &surfaceCapabilities ) ) );
30939 return createResultValue( result, surfaceCapabilities, "vk::PhysicalDevice::getSurfaceCapabilities2EXT" );
30940 }
30941#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070030942
30943 VULKAN_HPP_INLINE Result PhysicalDevice::getPresentRectanglesKHX( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects ) const
30944 {
30945 return static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pRectCount, reinterpret_cast<VkRect2D*>( pRects ) ) );
30946 }
30947#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30948 template <typename Allocator>
30949 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Rect2D,Allocator>>::type PhysicalDevice::getPresentRectanglesKHX( SurfaceKHR surface ) const
30950 {
30951 std::vector<Rect2D,Allocator> rects;
30952 uint32_t rectCount;
30953 Result result;
30954 do
30955 {
30956 result = static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, nullptr ) );
30957 if ( ( result == Result::eSuccess ) && rectCount )
30958 {
30959 rects.resize( rectCount );
30960 result = static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, reinterpret_cast<VkRect2D*>( rects.data() ) ) );
30961 }
30962 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030963 assert( rectCount <= rects.size() );
30964 rects.resize( rectCount );
Mark Young0f183a82017-02-28 09:58:04 -070030965 return createResultValue( result, rects, "vk::PhysicalDevice::getPresentRectanglesKHX" );
30966 }
30967#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030968
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030969 VULKAN_HPP_INLINE void PhysicalDevice::getMultisamplePropertiesEXT( SampleCountFlagBits samples, MultisamplePropertiesEXT* pMultisampleProperties ) const
30970 {
30971 vkGetPhysicalDeviceMultisamplePropertiesEXT( m_physicalDevice, static_cast<VkSampleCountFlagBits>( samples ), reinterpret_cast<VkMultisamplePropertiesEXT*>( pMultisampleProperties ) );
30972 }
30973#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30974 VULKAN_HPP_INLINE MultisamplePropertiesEXT PhysicalDevice::getMultisamplePropertiesEXT( SampleCountFlagBits samples ) const
30975 {
30976 MultisamplePropertiesEXT multisampleProperties;
30977 vkGetPhysicalDeviceMultisamplePropertiesEXT( m_physicalDevice, static_cast<VkSampleCountFlagBits>( samples ), reinterpret_cast<VkMultisamplePropertiesEXT*>( &multisampleProperties ) );
30978 return multisampleProperties;
30979 }
30980#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30981
Mark Lobodzinski54385432017-05-15 10:27:52 -060030982 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, SurfaceCapabilities2KHR* pSurfaceCapabilities ) const
30983 {
30984 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( pSurfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( pSurfaceCapabilities ) ) );
30985 }
30986#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030987 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilities2KHR>::type PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
Mark Lobodzinski54385432017-05-15 10:27:52 -060030988 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030989 SurfaceCapabilities2KHR surfaceCapabilities;
Mark Lobodzinski54385432017-05-15 10:27:52 -060030990 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( &surfaceCapabilities ) ) );
30991 return createResultValue( result, surfaceCapabilities, "vk::PhysicalDevice::getSurfaceCapabilities2KHR" );
30992 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030993 template <typename ...T>
30994 VULKAN_HPP_INLINE typename ResultValueType<StructureChain<T...>>::type PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
30995 {
30996 StructureChain<T...> structureChain;
30997 SurfaceCapabilities2KHR& surfaceCapabilities = structureChain.template get<SurfaceCapabilities2KHR>();
30998 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( &surfaceCapabilities ) ) );
30999 return createResultValue( result, structureChain, "vk::PhysicalDevice::getSurfaceCapabilities2KHR" );
31000 }
Mark Lobodzinski54385432017-05-15 10:27:52 -060031001#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31002
31003 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, SurfaceFormat2KHR* pSurfaceFormats ) const
31004 {
31005 return static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( pSurfaceInfo ), pSurfaceFormatCount, reinterpret_cast<VkSurfaceFormat2KHR*>( pSurfaceFormats ) ) );
31006 }
31007#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31008 template <typename Allocator>
31009 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormat2KHR,Allocator>>::type PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
31010 {
31011 std::vector<SurfaceFormat2KHR,Allocator> surfaceFormats;
31012 uint32_t surfaceFormatCount;
31013 Result result;
31014 do
31015 {
31016 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), &surfaceFormatCount, nullptr ) );
31017 if ( ( result == Result::eSuccess ) && surfaceFormatCount )
31018 {
31019 surfaceFormats.resize( surfaceFormatCount );
31020 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormat2KHR*>( surfaceFormats.data() ) ) );
31021 }
31022 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031023 assert( surfaceFormatCount <= surfaceFormats.size() );
31024 surfaceFormats.resize( surfaceFormatCount );
Mark Lobodzinski54385432017-05-15 10:27:52 -060031025 return createResultValue( result, surfaceFormats, "vk::PhysicalDevice::getSurfaceFormats2KHR" );
31026 }
31027#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31028
Mark Young0f183a82017-02-28 09:58:04 -070031029 struct CmdProcessCommandsInfoNVX
31030 {
31031 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 )
31032 : sType( StructureType::eCmdProcessCommandsInfoNVX )
31033 , pNext( nullptr )
31034 , objectTable( objectTable_ )
31035 , indirectCommandsLayout( indirectCommandsLayout_ )
31036 , indirectCommandsTokenCount( indirectCommandsTokenCount_ )
31037 , pIndirectCommandsTokens( pIndirectCommandsTokens_ )
31038 , maxSequencesCount( maxSequencesCount_ )
31039 , targetCommandBuffer( targetCommandBuffer_ )
31040 , sequencesCountBuffer( sequencesCountBuffer_ )
31041 , sequencesCountOffset( sequencesCountOffset_ )
31042 , sequencesIndexBuffer( sequencesIndexBuffer_ )
31043 , sequencesIndexOffset( sequencesIndexOffset_ )
31044 {
31045 }
31046
31047 CmdProcessCommandsInfoNVX( VkCmdProcessCommandsInfoNVX const & rhs )
31048 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031049 memcpy( this, &rhs, sizeof( CmdProcessCommandsInfoNVX ) );
Mark Young0f183a82017-02-28 09:58:04 -070031050 }
31051
31052 CmdProcessCommandsInfoNVX& operator=( VkCmdProcessCommandsInfoNVX const & rhs )
31053 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031054 memcpy( this, &rhs, sizeof( CmdProcessCommandsInfoNVX ) );
Mark Young0f183a82017-02-28 09:58:04 -070031055 return *this;
31056 }
Mark Young0f183a82017-02-28 09:58:04 -070031057 CmdProcessCommandsInfoNVX& setPNext( const void* pNext_ )
31058 {
31059 pNext = pNext_;
31060 return *this;
31061 }
31062
31063 CmdProcessCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
31064 {
31065 objectTable = objectTable_;
31066 return *this;
31067 }
31068
31069 CmdProcessCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
31070 {
31071 indirectCommandsLayout = indirectCommandsLayout_;
31072 return *this;
31073 }
31074
31075 CmdProcessCommandsInfoNVX& setIndirectCommandsTokenCount( uint32_t indirectCommandsTokenCount_ )
31076 {
31077 indirectCommandsTokenCount = indirectCommandsTokenCount_;
31078 return *this;
31079 }
31080
31081 CmdProcessCommandsInfoNVX& setPIndirectCommandsTokens( const IndirectCommandsTokenNVX* pIndirectCommandsTokens_ )
31082 {
31083 pIndirectCommandsTokens = pIndirectCommandsTokens_;
31084 return *this;
31085 }
31086
31087 CmdProcessCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
31088 {
31089 maxSequencesCount = maxSequencesCount_;
31090 return *this;
31091 }
31092
31093 CmdProcessCommandsInfoNVX& setTargetCommandBuffer( CommandBuffer targetCommandBuffer_ )
31094 {
31095 targetCommandBuffer = targetCommandBuffer_;
31096 return *this;
31097 }
31098
31099 CmdProcessCommandsInfoNVX& setSequencesCountBuffer( Buffer sequencesCountBuffer_ )
31100 {
31101 sequencesCountBuffer = sequencesCountBuffer_;
31102 return *this;
31103 }
31104
31105 CmdProcessCommandsInfoNVX& setSequencesCountOffset( DeviceSize sequencesCountOffset_ )
31106 {
31107 sequencesCountOffset = sequencesCountOffset_;
31108 return *this;
31109 }
31110
31111 CmdProcessCommandsInfoNVX& setSequencesIndexBuffer( Buffer sequencesIndexBuffer_ )
31112 {
31113 sequencesIndexBuffer = sequencesIndexBuffer_;
31114 return *this;
31115 }
31116
31117 CmdProcessCommandsInfoNVX& setSequencesIndexOffset( DeviceSize sequencesIndexOffset_ )
31118 {
31119 sequencesIndexOffset = sequencesIndexOffset_;
31120 return *this;
31121 }
31122
31123 operator const VkCmdProcessCommandsInfoNVX&() const
31124 {
31125 return *reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>(this);
31126 }
31127
31128 bool operator==( CmdProcessCommandsInfoNVX const& rhs ) const
31129 {
31130 return ( sType == rhs.sType )
31131 && ( pNext == rhs.pNext )
31132 && ( objectTable == rhs.objectTable )
31133 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
31134 && ( indirectCommandsTokenCount == rhs.indirectCommandsTokenCount )
31135 && ( pIndirectCommandsTokens == rhs.pIndirectCommandsTokens )
31136 && ( maxSequencesCount == rhs.maxSequencesCount )
31137 && ( targetCommandBuffer == rhs.targetCommandBuffer )
31138 && ( sequencesCountBuffer == rhs.sequencesCountBuffer )
31139 && ( sequencesCountOffset == rhs.sequencesCountOffset )
31140 && ( sequencesIndexBuffer == rhs.sequencesIndexBuffer )
31141 && ( sequencesIndexOffset == rhs.sequencesIndexOffset );
31142 }
31143
31144 bool operator!=( CmdProcessCommandsInfoNVX const& rhs ) const
31145 {
31146 return !operator==( rhs );
31147 }
31148
31149 private:
31150 StructureType sType;
31151
31152 public:
31153 const void* pNext;
31154 ObjectTableNVX objectTable;
31155 IndirectCommandsLayoutNVX indirectCommandsLayout;
31156 uint32_t indirectCommandsTokenCount;
31157 const IndirectCommandsTokenNVX* pIndirectCommandsTokens;
31158 uint32_t maxSequencesCount;
31159 CommandBuffer targetCommandBuffer;
31160 Buffer sequencesCountBuffer;
31161 DeviceSize sequencesCountOffset;
31162 Buffer sequencesIndexBuffer;
31163 DeviceSize sequencesIndexOffset;
31164 };
31165 static_assert( sizeof( CmdProcessCommandsInfoNVX ) == sizeof( VkCmdProcessCommandsInfoNVX ), "struct and wrapper have different size!" );
31166
31167 struct PhysicalDeviceGroupPropertiesKHX
31168 {
31169 operator const VkPhysicalDeviceGroupPropertiesKHX&() const
31170 {
31171 return *reinterpret_cast<const VkPhysicalDeviceGroupPropertiesKHX*>(this);
31172 }
31173
31174 bool operator==( PhysicalDeviceGroupPropertiesKHX const& rhs ) const
31175 {
31176 return ( sType == rhs.sType )
31177 && ( pNext == rhs.pNext )
31178 && ( physicalDeviceCount == rhs.physicalDeviceCount )
31179 && ( memcmp( physicalDevices, rhs.physicalDevices, VK_MAX_DEVICE_GROUP_SIZE_KHX * sizeof( PhysicalDevice ) ) == 0 )
31180 && ( subsetAllocation == rhs.subsetAllocation );
31181 }
31182
31183 bool operator!=( PhysicalDeviceGroupPropertiesKHX const& rhs ) const
31184 {
31185 return !operator==( rhs );
31186 }
31187
31188 private:
31189 StructureType sType;
31190
31191 public:
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060031192 void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070031193 uint32_t physicalDeviceCount;
31194 PhysicalDevice physicalDevices[VK_MAX_DEVICE_GROUP_SIZE_KHX];
31195 Bool32 subsetAllocation;
31196 };
31197 static_assert( sizeof( PhysicalDeviceGroupPropertiesKHX ) == sizeof( VkPhysicalDeviceGroupPropertiesKHX ), "struct and wrapper have different size!" );
31198
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031199#ifndef VULKAN_HPP_NO_SMART_HANDLE
31200 class DebugReportCallbackEXTDeleter;
31201 using UniqueDebugReportCallbackEXT = UniqueHandle<DebugReportCallbackEXT, DebugReportCallbackEXTDeleter>;
31202 class SurfaceKHRDeleter;
31203 using UniqueSurfaceKHR = UniqueHandle<SurfaceKHR, SurfaceKHRDeleter>;
31204#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31205
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031206 class Instance
31207 {
31208 public:
31209 Instance()
31210 : m_instance(VK_NULL_HANDLE)
31211 {}
31212
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070031213 Instance( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031214 : m_instance(VK_NULL_HANDLE)
31215 {}
31216
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031217 VULKAN_HPP_TYPESAFE_EXPLICIT Instance( VkInstance instance )
31218 : m_instance( instance )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031219 {}
31220
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070031221#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031222 Instance & operator=(VkInstance instance)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031223 {
31224 m_instance = instance;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031225 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031226 }
31227#endif
31228
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031229 Instance & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031230 {
31231 m_instance = VK_NULL_HANDLE;
31232 return *this;
31233 }
31234
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031235 bool operator==( Instance const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060031236 {
31237 return m_instance == rhs.m_instance;
31238 }
31239
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031240 bool operator!=(Instance const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060031241 {
31242 return m_instance != rhs.m_instance;
31243 }
31244
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031245 bool operator<(Instance const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060031246 {
31247 return m_instance < rhs.m_instance;
31248 }
31249
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031250 void destroy( const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031251#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031252 void destroy( Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031253#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31254
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031255 Result enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031256#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031257 template <typename Allocator = std::allocator<PhysicalDevice>>
31258 typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type enumeratePhysicalDevices() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031259#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31260
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031261 PFN_vkVoidFunction getProcAddr( const char* pName ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031262#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031263 PFN_vkVoidFunction getProcAddr( const std::string & name ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031264#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31265
31266#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031267 Result createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031268#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031269 ResultValueType<SurfaceKHR>::type createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31270#ifndef VULKAN_HPP_NO_SMART_HANDLE
31271 UniqueSurfaceKHR createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31272#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031273#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031274#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031275
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031276 Result createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031277#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031278 ResultValueType<SurfaceKHR>::type createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31279#ifndef VULKAN_HPP_NO_SMART_HANDLE
31280 UniqueSurfaceKHR createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31281#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031282#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31283
31284#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031285 Result createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031286#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031287 ResultValueType<SurfaceKHR>::type createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31288#ifndef VULKAN_HPP_NO_SMART_HANDLE
31289 UniqueSurfaceKHR createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31290#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031291#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031292#endif /*VK_USE_PLATFORM_MIR_KHR*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031293
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031294 void destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031295#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031296 void destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031297#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31298
Mark Young39389872017-01-19 21:10:49 -070031299#ifdef VK_USE_PLATFORM_VI_NN
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031300 Result createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31301#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31302 ResultValueType<SurfaceKHR>::type createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31303#ifndef VULKAN_HPP_NO_SMART_HANDLE
31304 UniqueSurfaceKHR createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31305#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31306#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young39389872017-01-19 21:10:49 -070031307#endif /*VK_USE_PLATFORM_VI_NN*/
31308
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031309#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031310 Result createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31311#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31312 ResultValueType<SurfaceKHR>::type createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31313#ifndef VULKAN_HPP_NO_SMART_HANDLE
31314 UniqueSurfaceKHR createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31315#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31316#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031317#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
31318
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031319#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031320 Result createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31321#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31322 ResultValueType<SurfaceKHR>::type createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31323#ifndef VULKAN_HPP_NO_SMART_HANDLE
31324 UniqueSurfaceKHR createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31325#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31326#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031327#endif /*VK_USE_PLATFORM_WIN32_KHR*/
31328
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031329#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031330 Result createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31331#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31332 ResultValueType<SurfaceKHR>::type createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31333#ifndef VULKAN_HPP_NO_SMART_HANDLE
31334 UniqueSurfaceKHR createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31335#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31336#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031337#endif /*VK_USE_PLATFORM_XLIB_KHR*/
31338
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031339#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031340 Result createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31341#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31342 ResultValueType<SurfaceKHR>::type createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31343#ifndef VULKAN_HPP_NO_SMART_HANDLE
31344 UniqueSurfaceKHR createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31345#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31346#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031347#endif /*VK_USE_PLATFORM_XCB_KHR*/
31348
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031349 Result createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031350#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031351 ResultValueType<DebugReportCallbackEXT>::type createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31352#ifndef VULKAN_HPP_NO_SMART_HANDLE
31353 UniqueDebugReportCallbackEXT createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31354#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031355#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31356
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031357 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031358#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031359 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031360#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31361
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031362 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 -060031363#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031364 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 -060031365#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31366
Mark Young0f183a82017-02-28 09:58:04 -070031367 Result enumeratePhysicalDeviceGroupsKHX( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ) const;
31368#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31369 template <typename Allocator = std::allocator<PhysicalDeviceGroupPropertiesKHX>>
31370 typename ResultValueType<std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator>>::type enumeratePhysicalDeviceGroupsKHX() const;
31371#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31372
31373#ifdef VK_USE_PLATFORM_IOS_MVK
31374 Result createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31375#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31376 ResultValueType<SurfaceKHR>::type createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31377#ifndef VULKAN_HPP_NO_SMART_HANDLE
31378 UniqueSurfaceKHR createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31379#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31380#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31381#endif /*VK_USE_PLATFORM_IOS_MVK*/
31382
31383#ifdef VK_USE_PLATFORM_MACOS_MVK
31384 Result createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
31385#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31386 ResultValueType<SurfaceKHR>::type createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31387#ifndef VULKAN_HPP_NO_SMART_HANDLE
31388 UniqueSurfaceKHR createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
31389#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31390#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31391#endif /*VK_USE_PLATFORM_MACOS_MVK*/
31392
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031393
31394
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070031395 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkInstance() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031396 {
31397 return m_instance;
31398 }
31399
31400 explicit operator bool() const
31401 {
31402 return m_instance != VK_NULL_HANDLE;
31403 }
31404
31405 bool operator!() const
31406 {
31407 return m_instance == VK_NULL_HANDLE;
31408 }
31409
31410 private:
31411 VkInstance m_instance;
31412 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031413
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031414 static_assert( sizeof( Instance ) == sizeof( VkInstance ), "handle and wrapper have different size!" );
31415
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031416#ifndef VULKAN_HPP_NO_SMART_HANDLE
31417 class DebugReportCallbackEXTDeleter
31418 {
31419 public:
31420 DebugReportCallbackEXTDeleter( Instance instance = Instance(), Optional<const AllocationCallbacks> allocator = nullptr )
31421 : m_instance( instance )
31422 , m_allocator( allocator )
31423 {}
31424
31425 void operator()( DebugReportCallbackEXT debugReportCallbackEXT )
31426 {
31427 m_instance.destroyDebugReportCallbackEXT( debugReportCallbackEXT, m_allocator );
31428 }
31429
31430 private:
31431 Instance m_instance;
31432 Optional<const AllocationCallbacks> m_allocator;
31433 };
31434
31435 class SurfaceKHRDeleter
31436 {
31437 public:
31438 SurfaceKHRDeleter( Instance instance = Instance(), Optional<const AllocationCallbacks> allocator = nullptr )
31439 : m_instance( instance )
31440 , m_allocator( allocator )
31441 {}
31442
31443 void operator()( SurfaceKHR surfaceKHR )
31444 {
31445 m_instance.destroySurfaceKHR( surfaceKHR, m_allocator );
31446 }
31447
31448 private:
31449 Instance m_instance;
31450 Optional<const AllocationCallbacks> m_allocator;
31451 };
31452#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31453
31454 VULKAN_HPP_INLINE void Instance::destroy( const AllocationCallbacks* pAllocator ) const
31455 {
31456 vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
31457 }
31458#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31459 VULKAN_HPP_INLINE void Instance::destroy( Optional<const AllocationCallbacks> allocator ) const
31460 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031461 vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031462 }
31463#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31464
31465 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices ) const
31466 {
31467 return static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, pPhysicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( pPhysicalDevices ) ) );
31468 }
31469#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31470 template <typename Allocator>
31471 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type Instance::enumeratePhysicalDevices() const
31472 {
31473 std::vector<PhysicalDevice,Allocator> physicalDevices;
31474 uint32_t physicalDeviceCount;
31475 Result result;
31476 do
31477 {
31478 result = static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, nullptr ) );
31479 if ( ( result == Result::eSuccess ) && physicalDeviceCount )
31480 {
31481 physicalDevices.resize( physicalDeviceCount );
31482 result = static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( physicalDevices.data() ) ) );
31483 }
31484 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031485 assert( physicalDeviceCount <= physicalDevices.size() );
31486 physicalDevices.resize( physicalDeviceCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031487 return createResultValue( result, physicalDevices, "vk::Instance::enumeratePhysicalDevices" );
31488 }
31489#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31490
31491 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const char* pName ) const
31492 {
31493 return vkGetInstanceProcAddr( m_instance, pName );
31494 }
31495#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31496 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const std::string & name ) const
31497 {
31498 return vkGetInstanceProcAddr( m_instance, name.c_str() );
31499 }
31500#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31501
31502#ifdef VK_USE_PLATFORM_ANDROID_KHR
31503 VULKAN_HPP_INLINE Result Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31504 {
31505 return static_cast<Result>( vkCreateAndroidSurfaceKHR( m_instance, reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31506 }
31507#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31508 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31509 {
31510 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031511 Result result = static_cast<Result>( vkCreateAndroidSurfaceKHR( m_instance, reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031512 return createResultValue( result, surface, "vk::Instance::createAndroidSurfaceKHR" );
31513 }
31514#ifndef VULKAN_HPP_NO_SMART_HANDLE
31515 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31516 {
31517 SurfaceKHRDeleter deleter( *this, allocator );
31518 return UniqueSurfaceKHR( createAndroidSurfaceKHR( createInfo, allocator ), deleter );
31519 }
31520#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31521#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31522#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
31523
31524 VULKAN_HPP_INLINE Result Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31525 {
31526 return static_cast<Result>( vkCreateDisplayPlaneSurfaceKHR( m_instance, reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31527 }
31528#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31529 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31530 {
31531 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031532 Result result = static_cast<Result>( vkCreateDisplayPlaneSurfaceKHR( m_instance, reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031533 return createResultValue( result, surface, "vk::Instance::createDisplayPlaneSurfaceKHR" );
31534 }
31535#ifndef VULKAN_HPP_NO_SMART_HANDLE
31536 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31537 {
31538 SurfaceKHRDeleter deleter( *this, allocator );
31539 return UniqueSurfaceKHR( createDisplayPlaneSurfaceKHR( createInfo, allocator ), deleter );
31540 }
31541#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31542#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31543
31544#ifdef VK_USE_PLATFORM_MIR_KHR
31545 VULKAN_HPP_INLINE Result Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31546 {
31547 return static_cast<Result>( vkCreateMirSurfaceKHR( m_instance, reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31548 }
31549#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31550 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31551 {
31552 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031553 Result result = static_cast<Result>( vkCreateMirSurfaceKHR( m_instance, reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031554 return createResultValue( result, surface, "vk::Instance::createMirSurfaceKHR" );
31555 }
31556#ifndef VULKAN_HPP_NO_SMART_HANDLE
31557 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31558 {
31559 SurfaceKHRDeleter deleter( *this, allocator );
31560 return UniqueSurfaceKHR( createMirSurfaceKHR( createInfo, allocator ), deleter );
31561 }
31562#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31563#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31564#endif /*VK_USE_PLATFORM_MIR_KHR*/
31565
31566 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator ) const
31567 {
31568 vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
31569 }
31570#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31571 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator ) const
31572 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031573 vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031574 }
31575#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31576
31577#ifdef VK_USE_PLATFORM_VI_NN
31578 VULKAN_HPP_INLINE Result Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31579 {
31580 return static_cast<Result>( vkCreateViSurfaceNN( m_instance, reinterpret_cast<const VkViSurfaceCreateInfoNN*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31581 }
31582#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31583 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator ) const
31584 {
31585 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031586 Result result = static_cast<Result>( vkCreateViSurfaceNN( m_instance, reinterpret_cast<const VkViSurfaceCreateInfoNN*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031587 return createResultValue( result, surface, "vk::Instance::createViSurfaceNN" );
31588 }
31589#ifndef VULKAN_HPP_NO_SMART_HANDLE
31590 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator ) const
31591 {
31592 SurfaceKHRDeleter deleter( *this, allocator );
31593 return UniqueSurfaceKHR( createViSurfaceNN( createInfo, allocator ), deleter );
31594 }
31595#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31596#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31597#endif /*VK_USE_PLATFORM_VI_NN*/
31598
31599#ifdef VK_USE_PLATFORM_WAYLAND_KHR
31600 VULKAN_HPP_INLINE Result Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31601 {
31602 return static_cast<Result>( vkCreateWaylandSurfaceKHR( m_instance, reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31603 }
31604#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31605 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31606 {
31607 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031608 Result result = static_cast<Result>( vkCreateWaylandSurfaceKHR( m_instance, reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031609 return createResultValue( result, surface, "vk::Instance::createWaylandSurfaceKHR" );
31610 }
31611#ifndef VULKAN_HPP_NO_SMART_HANDLE
31612 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31613 {
31614 SurfaceKHRDeleter deleter( *this, allocator );
31615 return UniqueSurfaceKHR( createWaylandSurfaceKHR( createInfo, allocator ), deleter );
31616 }
31617#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31618#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31619#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
31620
31621#ifdef VK_USE_PLATFORM_WIN32_KHR
31622 VULKAN_HPP_INLINE Result Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31623 {
31624 return static_cast<Result>( vkCreateWin32SurfaceKHR( m_instance, reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31625 }
31626#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31627 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31628 {
31629 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031630 Result result = static_cast<Result>( vkCreateWin32SurfaceKHR( m_instance, reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031631 return createResultValue( result, surface, "vk::Instance::createWin32SurfaceKHR" );
31632 }
31633#ifndef VULKAN_HPP_NO_SMART_HANDLE
31634 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31635 {
31636 SurfaceKHRDeleter deleter( *this, allocator );
31637 return UniqueSurfaceKHR( createWin32SurfaceKHR( createInfo, allocator ), deleter );
31638 }
31639#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31640#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31641#endif /*VK_USE_PLATFORM_WIN32_KHR*/
31642
31643#ifdef VK_USE_PLATFORM_XLIB_KHR
31644 VULKAN_HPP_INLINE Result Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31645 {
31646 return static_cast<Result>( vkCreateXlibSurfaceKHR( m_instance, reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31647 }
31648#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31649 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31650 {
31651 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031652 Result result = static_cast<Result>( vkCreateXlibSurfaceKHR( m_instance, reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031653 return createResultValue( result, surface, "vk::Instance::createXlibSurfaceKHR" );
31654 }
31655#ifndef VULKAN_HPP_NO_SMART_HANDLE
31656 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31657 {
31658 SurfaceKHRDeleter deleter( *this, allocator );
31659 return UniqueSurfaceKHR( createXlibSurfaceKHR( createInfo, allocator ), deleter );
31660 }
31661#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31662#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31663#endif /*VK_USE_PLATFORM_XLIB_KHR*/
31664
31665#ifdef VK_USE_PLATFORM_XCB_KHR
31666 VULKAN_HPP_INLINE Result Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31667 {
31668 return static_cast<Result>( vkCreateXcbSurfaceKHR( m_instance, reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31669 }
31670#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31671 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31672 {
31673 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031674 Result result = static_cast<Result>( vkCreateXcbSurfaceKHR( m_instance, reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031675 return createResultValue( result, surface, "vk::Instance::createXcbSurfaceKHR" );
31676 }
31677#ifndef VULKAN_HPP_NO_SMART_HANDLE
31678 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
31679 {
31680 SurfaceKHRDeleter deleter( *this, allocator );
31681 return UniqueSurfaceKHR( createXcbSurfaceKHR( createInfo, allocator ), deleter );
31682 }
31683#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31684#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31685#endif /*VK_USE_PLATFORM_XCB_KHR*/
31686
31687 VULKAN_HPP_INLINE Result Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback ) const
31688 {
31689 return static_cast<Result>( vkCreateDebugReportCallbackEXT( m_instance, reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDebugReportCallbackEXT*>( pCallback ) ) );
31690 }
31691#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31692 VULKAN_HPP_INLINE ResultValueType<DebugReportCallbackEXT>::type Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
31693 {
31694 DebugReportCallbackEXT callback;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031695 Result result = static_cast<Result>( vkCreateDebugReportCallbackEXT( m_instance, reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkDebugReportCallbackEXT*>( &callback ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031696 return createResultValue( result, callback, "vk::Instance::createDebugReportCallbackEXT" );
31697 }
31698#ifndef VULKAN_HPP_NO_SMART_HANDLE
31699 VULKAN_HPP_INLINE UniqueDebugReportCallbackEXT Instance::createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
31700 {
31701 DebugReportCallbackEXTDeleter deleter( *this, allocator );
31702 return UniqueDebugReportCallbackEXT( createDebugReportCallbackEXT( createInfo, allocator ), deleter );
31703 }
31704#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31705#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31706
31707 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator ) const
31708 {
31709 vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
31710 }
31711#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31712 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator ) const
31713 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031714 vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031715 }
31716#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31717
31718 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
31719 {
31720 vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, pLayerPrefix, pMessage );
31721 }
31722#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31723 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
31724 {
31725#ifdef VULKAN_HPP_NO_EXCEPTIONS
31726 assert( layerPrefix.size() == message.size() );
31727#else
31728 if ( layerPrefix.size() != message.size() )
31729 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031730 throw LogicError( "vk::Instance::debugReportMessageEXT: layerPrefix.size() != message.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031731 }
31732#endif // VULKAN_HPP_NO_EXCEPTIONS
31733 vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, layerPrefix.c_str(), message.c_str() );
31734 }
31735#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070031736
31737 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDeviceGroupsKHX( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ) const
Lenny Komow68432d72016-09-29 14:16:59 -060031738 {
Mark Young0f183a82017-02-28 09:58:04 -070031739 return static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, pPhysicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupPropertiesKHX*>( pPhysicalDeviceGroupProperties ) ) );
31740 }
31741#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31742 template <typename Allocator>
31743 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator>>::type Instance::enumeratePhysicalDeviceGroupsKHX() const
31744 {
31745 std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator> physicalDeviceGroupProperties;
31746 uint32_t physicalDeviceGroupCount;
31747 Result result;
31748 do
31749 {
31750 result = static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, &physicalDeviceGroupCount, nullptr ) );
31751 if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount )
31752 {
31753 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
31754 result = static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, &physicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupPropertiesKHX*>( physicalDeviceGroupProperties.data() ) ) );
31755 }
31756 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031757 assert( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() );
31758 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
Mark Young0f183a82017-02-28 09:58:04 -070031759 return createResultValue( result, physicalDeviceGroupProperties, "vk::Instance::enumeratePhysicalDeviceGroupsKHX" );
31760 }
31761#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31762
31763#ifdef VK_USE_PLATFORM_IOS_MVK
31764 VULKAN_HPP_INLINE Result Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31765 {
31766 return static_cast<Result>( vkCreateIOSSurfaceMVK( m_instance, reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31767 }
31768#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31769 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
31770 {
31771 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031772 Result result = static_cast<Result>( vkCreateIOSSurfaceMVK( m_instance, reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070031773 return createResultValue( result, surface, "vk::Instance::createIOSSurfaceMVK" );
31774 }
31775#ifndef VULKAN_HPP_NO_SMART_HANDLE
31776 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
31777 {
31778 SurfaceKHRDeleter deleter( *this, allocator );
31779 return UniqueSurfaceKHR( createIOSSurfaceMVK( createInfo, allocator ), deleter );
31780 }
31781#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31782#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31783#endif /*VK_USE_PLATFORM_IOS_MVK*/
31784
31785#ifdef VK_USE_PLATFORM_MACOS_MVK
31786 VULKAN_HPP_INLINE Result Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
31787 {
31788 return static_cast<Result>( vkCreateMacOSSurfaceMVK( m_instance, reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
31789 }
31790#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
31791 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
31792 {
31793 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031794 Result result = static_cast<Result>( vkCreateMacOSSurfaceMVK( m_instance, reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkSurfaceKHR*>( &surface ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070031795 return createResultValue( result, surface, "vk::Instance::createMacOSSurfaceMVK" );
31796 }
31797#ifndef VULKAN_HPP_NO_SMART_HANDLE
31798 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
31799 {
31800 SurfaceKHRDeleter deleter( *this, allocator );
31801 return UniqueSurfaceKHR( createMacOSSurfaceMVK( createInfo, allocator ), deleter );
31802 }
31803#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31804#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31805#endif /*VK_USE_PLATFORM_MACOS_MVK*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031806
Mark Young0f183a82017-02-28 09:58:04 -070031807 struct DeviceGroupDeviceCreateInfoKHX
31808 {
31809 DeviceGroupDeviceCreateInfoKHX( uint32_t physicalDeviceCount_ = 0, const PhysicalDevice* pPhysicalDevices_ = nullptr )
31810 : sType( StructureType::eDeviceGroupDeviceCreateInfoKHX )
Lenny Komow68432d72016-09-29 14:16:59 -060031811 , pNext( nullptr )
Mark Young0f183a82017-02-28 09:58:04 -070031812 , physicalDeviceCount( physicalDeviceCount_ )
31813 , pPhysicalDevices( pPhysicalDevices_ )
Lenny Komow68432d72016-09-29 14:16:59 -060031814 {
31815 }
31816
Mark Young0f183a82017-02-28 09:58:04 -070031817 DeviceGroupDeviceCreateInfoKHX( VkDeviceGroupDeviceCreateInfoKHX const & rhs )
Lenny Komow68432d72016-09-29 14:16:59 -060031818 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031819 memcpy( this, &rhs, sizeof( DeviceGroupDeviceCreateInfoKHX ) );
Lenny Komow68432d72016-09-29 14:16:59 -060031820 }
31821
Mark Young0f183a82017-02-28 09:58:04 -070031822 DeviceGroupDeviceCreateInfoKHX& operator=( VkDeviceGroupDeviceCreateInfoKHX const & rhs )
Lenny Komow68432d72016-09-29 14:16:59 -060031823 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031824 memcpy( this, &rhs, sizeof( DeviceGroupDeviceCreateInfoKHX ) );
Lenny Komow68432d72016-09-29 14:16:59 -060031825 return *this;
31826 }
Mark Young0f183a82017-02-28 09:58:04 -070031827 DeviceGroupDeviceCreateInfoKHX& setPNext( const void* pNext_ )
Lenny Komow68432d72016-09-29 14:16:59 -060031828 {
31829 pNext = pNext_;
31830 return *this;
31831 }
31832
Mark Young0f183a82017-02-28 09:58:04 -070031833 DeviceGroupDeviceCreateInfoKHX& setPhysicalDeviceCount( uint32_t physicalDeviceCount_ )
Lenny Komow68432d72016-09-29 14:16:59 -060031834 {
Mark Young0f183a82017-02-28 09:58:04 -070031835 physicalDeviceCount = physicalDeviceCount_;
Lenny Komow68432d72016-09-29 14:16:59 -060031836 return *this;
31837 }
31838
Mark Young0f183a82017-02-28 09:58:04 -070031839 DeviceGroupDeviceCreateInfoKHX& setPPhysicalDevices( const PhysicalDevice* pPhysicalDevices_ )
Lenny Komow68432d72016-09-29 14:16:59 -060031840 {
Mark Young0f183a82017-02-28 09:58:04 -070031841 pPhysicalDevices = pPhysicalDevices_;
Lenny Komow68432d72016-09-29 14:16:59 -060031842 return *this;
31843 }
31844
Mark Young0f183a82017-02-28 09:58:04 -070031845 operator const VkDeviceGroupDeviceCreateInfoKHX&() const
Lenny Komow68432d72016-09-29 14:16:59 -060031846 {
Mark Young0f183a82017-02-28 09:58:04 -070031847 return *reinterpret_cast<const VkDeviceGroupDeviceCreateInfoKHX*>(this);
Lenny Komow68432d72016-09-29 14:16:59 -060031848 }
31849
Mark Young0f183a82017-02-28 09:58:04 -070031850 bool operator==( DeviceGroupDeviceCreateInfoKHX const& rhs ) const
Lenny Komow68432d72016-09-29 14:16:59 -060031851 {
31852 return ( sType == rhs.sType )
31853 && ( pNext == rhs.pNext )
Mark Young0f183a82017-02-28 09:58:04 -070031854 && ( physicalDeviceCount == rhs.physicalDeviceCount )
31855 && ( pPhysicalDevices == rhs.pPhysicalDevices );
Lenny Komow68432d72016-09-29 14:16:59 -060031856 }
31857
Mark Young0f183a82017-02-28 09:58:04 -070031858 bool operator!=( DeviceGroupDeviceCreateInfoKHX const& rhs ) const
Lenny Komow68432d72016-09-29 14:16:59 -060031859 {
31860 return !operator==( rhs );
31861 }
31862
31863 private:
31864 StructureType sType;
31865
31866 public:
31867 const void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070031868 uint32_t physicalDeviceCount;
31869 const PhysicalDevice* pPhysicalDevices;
Lenny Komow68432d72016-09-29 14:16:59 -060031870 };
Mark Young0f183a82017-02-28 09:58:04 -070031871 static_assert( sizeof( DeviceGroupDeviceCreateInfoKHX ) == sizeof( VkDeviceGroupDeviceCreateInfoKHX ), "struct and wrapper have different size!" );
Lenny Komow68432d72016-09-29 14:16:59 -060031872
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031873#ifndef VULKAN_HPP_NO_SMART_HANDLE
31874 class InstanceDeleter;
31875 using UniqueInstance = UniqueHandle<Instance, InstanceDeleter>;
31876#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31877
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031878 Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031879#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031880 ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031881#ifndef VULKAN_HPP_NO_SMART_HANDLE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060031882 UniqueInstance createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031883#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31884#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31885
31886#ifndef VULKAN_HPP_NO_SMART_HANDLE
31887 class InstanceDeleter
31888 {
31889 public:
31890 InstanceDeleter( Optional<const AllocationCallbacks> allocator = nullptr )
31891 : m_allocator( allocator )
31892 {}
31893
31894 void operator()( Instance instance )
31895 {
31896 instance.destroy( m_allocator );
31897 }
31898
31899 private:
31900 Optional<const AllocationCallbacks> m_allocator;
31901 };
31902#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
31903
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031904 VULKAN_HPP_INLINE Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031905 {
31906 return static_cast<Result>( vkCreateInstance( reinterpret_cast<const VkInstanceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkInstance*>( pInstance ) ) );
31907 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031908#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031909 VULKAN_HPP_INLINE ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031910 {
31911 Instance instance;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031912 Result result = static_cast<Result>( vkCreateInstance( reinterpret_cast<const VkInstanceCreateInfo*>( &createInfo ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ), reinterpret_cast<VkInstance*>( &instance ) ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031913 return createResultValue( result, instance, "vk::createInstance" );
31914 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070031915#ifndef VULKAN_HPP_NO_SMART_HANDLE
31916 VULKAN_HPP_INLINE UniqueInstance createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator )
31917 {
31918 InstanceDeleter deleter( allocator );
31919 return UniqueInstance( createInstance( createInfo, allocator ), deleter );
31920 }
31921#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031922#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
31923
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060031924
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031925 template <> bool isStructureChainValid<PresentInfoKHR, DisplayPresentInfoKHR>() { return true; }
31926 template <> bool isStructureChainValid<ImageCreateInfo, DedicatedAllocationImageCreateInfoNV>() { return true; }
31927 template <> bool isStructureChainValid<BufferCreateInfo, DedicatedAllocationBufferCreateInfoNV>() { return true; }
31928 template <> bool isStructureChainValid<MemoryAllocateInfo, DedicatedAllocationMemoryAllocateInfoNV>() { return true; }
31929#ifdef VK_USE_PLATFORM_WIN32_KHR
31930 template <> bool isStructureChainValid<MemoryAllocateInfo, ExportMemoryWin32HandleInfoNV>() { return true; }
31931#endif /*VK_USE_PLATFORM_WIN32_KHR*/
31932#ifdef VK_USE_PLATFORM_WIN32_KHR
31933 template <> bool isStructureChainValid<SubmitInfo, Win32KeyedMutexAcquireReleaseInfoNV>() { return true; }
31934#endif /*VK_USE_PLATFORM_WIN32_KHR*/
31935 template <> bool isStructureChainValid<DeviceCreateInfo, PhysicalDeviceFeatures2KHR>() { return true; }
31936 template <> bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDevicePushDescriptorPropertiesKHR>() { return true; }
31937 template <> bool isStructureChainValid<PresentInfoKHR, PresentRegionsKHR>() { return true; }
31938 template <> bool isStructureChainValid<PhysicalDeviceFeatures2KHR, PhysicalDeviceVariablePointerFeaturesKHR>() { return true; }
31939 template <> bool isStructureChainValid<DeviceCreateInfo, PhysicalDeviceVariablePointerFeaturesKHR>() { return true; }
31940 template <> bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceIDPropertiesKHR>() { return true; }
31941#ifdef VK_USE_PLATFORM_WIN32_KHR
31942 template <> bool isStructureChainValid<MemoryAllocateInfo, ExportMemoryWin32HandleInfoKHR>() { return true; }
31943#endif /*VK_USE_PLATFORM_WIN32_KHR*/
31944#ifdef VK_USE_PLATFORM_WIN32_KHR
31945 template <> bool isStructureChainValid<SubmitInfo, Win32KeyedMutexAcquireReleaseInfoKHR>() { return true; }
31946#endif /*VK_USE_PLATFORM_WIN32_KHR*/
31947#ifdef VK_USE_PLATFORM_WIN32_KHR
31948 template <> bool isStructureChainValid<SemaphoreCreateInfo, ExportSemaphoreWin32HandleInfoKHR>() { return true; }
31949#endif /*VK_USE_PLATFORM_WIN32_KHR*/
31950#ifdef VK_USE_PLATFORM_WIN32_KHR
31951 template <> bool isStructureChainValid<SubmitInfo, D3D12FenceSubmitInfoKHR>() { return true; }
31952#endif /*VK_USE_PLATFORM_WIN32_KHR*/
31953#ifdef VK_USE_PLATFORM_WIN32_KHR
31954 template <> bool isStructureChainValid<FenceCreateInfo, ExportFenceWin32HandleInfoKHR>() { return true; }
31955#endif /*VK_USE_PLATFORM_WIN32_KHR*/
31956 template <> bool isStructureChainValid<PhysicalDeviceFeatures2KHR, PhysicalDeviceMultiviewFeaturesKHX>() { return true; }
31957 template <> bool isStructureChainValid<DeviceCreateInfo, PhysicalDeviceMultiviewFeaturesKHX>() { return true; }
31958 template <> bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceMultiviewPropertiesKHX>() { return true; }
31959 template <> bool isStructureChainValid<RenderPassCreateInfo, RenderPassMultiviewCreateInfoKHX>() { return true; }
Lenny Komowb79f04a2017-09-18 17:07:00 -060031960 template <> bool isStructureChainValid<BindBufferMemoryInfoKHR, BindBufferMemoryDeviceGroupInfoKHX>() { return true; }
31961 template <> bool isStructureChainValid<BindImageMemoryInfoKHR, BindImageMemoryDeviceGroupInfoKHX>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031962 template <> bool isStructureChainValid<RenderPassBeginInfo, DeviceGroupRenderPassBeginInfoKHX>() { return true; }
31963 template <> bool isStructureChainValid<CommandBufferBeginInfo, DeviceGroupCommandBufferBeginInfoKHX>() { return true; }
31964 template <> bool isStructureChainValid<SubmitInfo, DeviceGroupSubmitInfoKHX>() { return true; }
31965 template <> bool isStructureChainValid<BindSparseInfo, DeviceGroupBindSparseInfoKHX>() { return true; }
31966 template <> bool isStructureChainValid<ImageCreateInfo, ImageSwapchainCreateInfoKHX>() { return true; }
Lenny Komowb79f04a2017-09-18 17:07:00 -060031967 template <> bool isStructureChainValid<BindImageMemoryInfoKHR, BindImageMemorySwapchainInfoKHX>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031968 template <> bool isStructureChainValid<PresentInfoKHR, PresentTimesInfoGOOGLE>() { return true; }
31969 template <> bool isStructureChainValid<PipelineViewportStateCreateInfo, PipelineViewportWScalingStateCreateInfoNV>() { return true; }
31970 template <> bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceDiscardRectanglePropertiesEXT>() { return true; }
31971 template <> bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX>() { return true; }
31972 template <> bool isStructureChainValid<PhysicalDeviceFeatures2KHR, PhysicalDevice16BitStorageFeaturesKHR>() { return true; }
31973 template <> bool isStructureChainValid<DeviceCreateInfo, PhysicalDevice16BitStorageFeaturesKHR>() { return true; }
31974 template <> bool isStructureChainValid<MemoryRequirements2KHR, MemoryDedicatedRequirementsKHR>() { return true; }
31975 template <> bool isStructureChainValid<MemoryAllocateInfo, MemoryDedicatedAllocateInfoKHR>() { return true; }
Lenny Komowb79f04a2017-09-18 17:07:00 -060031976 template <> bool isStructureChainValid<SamplerCreateInfo, SamplerYcbcrConversionInfoKHR>() { return true; }
31977 template <> bool isStructureChainValid<ImageViewCreateInfo, SamplerYcbcrConversionInfoKHR>() { return true; }
31978 template <> bool isStructureChainValid<PhysicalDeviceFeatures2KHR, PhysicalDeviceSamplerYcbcrConversionFeaturesKHR>() { return true; }
31979 template <> bool isStructureChainValid<DeviceCreateInfo, PhysicalDeviceSamplerYcbcrConversionFeaturesKHR>() { return true; }
31980 template <> bool isStructureChainValid<ImageFormatProperties2KHR, SamplerYcbcrConversionImageFormatPropertiesKHR>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031981 template <> bool isStructureChainValid<ImageFormatProperties2KHR, TextureLODGatherFormatPropertiesAMD>() { return true; }
31982 template <> bool isStructureChainValid<PipelineMultisampleStateCreateInfo, PipelineCoverageToColorStateCreateInfoNV>() { return true; }
31983 template <> bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceSamplerFilterMinmaxPropertiesEXT>() { return true; }
31984 template <> bool isStructureChainValid<PhysicalDeviceFeatures2KHR, PhysicalDeviceBlendOperationAdvancedFeaturesEXT>() { return true; }
31985 template <> bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceBlendOperationAdvancedPropertiesEXT>() { return true; }
Lenny Komowb79f04a2017-09-18 17:07:00 -060031986 template <> bool isStructureChainValid<ImageCreateInfo, ImageFormatListCreateInfoKHR>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031987 template <> bool isStructureChainValid<ShaderModuleCreateInfo, ShaderModuleValidationCacheCreateInfoEXT>() { return true; }
31988 template <> bool isStructureChainValid<SurfaceCapabilities2KHR, SharedPresentSurfaceCapabilitiesKHR>() { return true; }
Lenny Komowb79f04a2017-09-18 17:07:00 -060031989 template <> bool isStructureChainValid<ImageViewCreateInfo, ImageViewUsageCreateInfoKHR>() { return true; }
31990 template <> bool isStructureChainValid<RenderPassCreateInfo, RenderPassInputAttachmentAspectCreateInfoKHR>() { return true; }
31991 template <> bool isStructureChainValid<BindImageMemoryInfoKHR, BindImagePlaneMemoryInfoKHR>() { return true; }
31992 template <> bool isStructureChainValid<ImageMemoryRequirementsInfo2KHR, ImagePlaneMemoryRequirementsInfoKHR>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031993 template <> bool isStructureChainValid<ImageMemoryBarrier, SampleLocationsInfoEXT>() { return true; }
31994 template <> bool isStructureChainValid<RenderPassBeginInfo, RenderPassSampleLocationsBeginInfoEXT>() { return true; }
31995 template <> bool isStructureChainValid<PipelineMultisampleStateCreateInfo, PipelineSampleLocationsStateCreateInfoEXT>() { return true; }
31996 template <> bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceSampleLocationsPropertiesEXT>() { return true; }
31997 template <> bool isStructureChainValid<InstanceCreateInfo, DebugReportCallbackCreateInfoEXT>() { return true; }
31998 template <> bool isStructureChainValid<PipelineRasterizationStateCreateInfo, PipelineRasterizationStateRasterizationOrderAMD>() { return true; }
31999 template <> bool isStructureChainValid<ImageCreateInfo, ExternalMemoryImageCreateInfoNV>() { return true; }
32000 template <> bool isStructureChainValid<MemoryAllocateInfo, ExportMemoryAllocateInfoNV>() { return true; }
32001#ifdef VK_USE_PLATFORM_WIN32_KHR
32002 template <> bool isStructureChainValid<MemoryAllocateInfo, ImportMemoryWin32HandleInfoNV>() { return true; }
32003#endif /*VK_USE_PLATFORM_WIN32_KHR*/
32004 template <> bool isStructureChainValid<InstanceCreateInfo, ValidationFlagsEXT>() { return true; }
32005 template <> bool isStructureChainValid<PhysicalDeviceImageFormatInfo2KHR, PhysicalDeviceExternalImageFormatInfoKHR>() { return true; }
32006 template <> bool isStructureChainValid<ImageCreateInfo, ExternalMemoryImageCreateInfoKHR>() { return true; }
32007 template <> bool isStructureChainValid<BufferCreateInfo, ExternalMemoryBufferCreateInfoKHR>() { return true; }
32008 template <> bool isStructureChainValid<MemoryAllocateInfo, ExportMemoryAllocateInfoKHR>() { return true; }
32009#ifdef VK_USE_PLATFORM_WIN32_KHR
32010 template <> bool isStructureChainValid<MemoryAllocateInfo, ImportMemoryWin32HandleInfoKHR>() { return true; }
32011#endif /*VK_USE_PLATFORM_WIN32_KHR*/
32012 template <> bool isStructureChainValid<MemoryAllocateInfo, ImportMemoryFdInfoKHR>() { return true; }
32013 template <> bool isStructureChainValid<ImageFormatProperties2KHR, ExternalImageFormatPropertiesKHR>() { return true; }
32014 template <> bool isStructureChainValid<SemaphoreCreateInfo, ExportSemaphoreCreateInfoKHR>() { return true; }
32015 template <> bool isStructureChainValid<FenceCreateInfo, ExportFenceCreateInfoKHR>() { return true; }
32016 template <> bool isStructureChainValid<SwapchainCreateInfoKHR, SwapchainCounterCreateInfoEXT>() { return true; }
32017 template <> bool isStructureChainValid<MemoryAllocateInfo, MemoryAllocateFlagsInfoKHX>() { return true; }
32018 template <> bool isStructureChainValid<PresentInfoKHR, DeviceGroupPresentInfoKHX>() { return true; }
32019 template <> bool isStructureChainValid<SwapchainCreateInfoKHR, DeviceGroupSwapchainCreateInfoKHX>() { return true; }
32020 template <> bool isStructureChainValid<PipelineViewportStateCreateInfo, PipelineViewportSwizzleStateCreateInfoNV>() { return true; }
32021 template <> bool isStructureChainValid<GraphicsPipelineCreateInfo, PipelineDiscardRectangleStateCreateInfoEXT>() { return true; }
Lenny Komowb79f04a2017-09-18 17:07:00 -060032022 template <> bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDevicePointClippingPropertiesKHR>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032023 template <> bool isStructureChainValid<SamplerCreateInfo, SamplerReductionModeCreateInfoEXT>() { return true; }
Lenny Komowb79f04a2017-09-18 17:07:00 -060032024 template <> bool isStructureChainValid<PipelineTessellationStateCreateInfo, PipelineTessellationDomainOriginStateCreateInfoKHR>() { return true; }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032025 template <> bool isStructureChainValid<PipelineColorBlendStateCreateInfo, PipelineColorBlendAdvancedStateCreateInfoEXT>() { return true; }
32026 template <> bool isStructureChainValid<PipelineMultisampleStateCreateInfo, PipelineCoverageModulationStateCreateInfoNV>() { return true; }
32027 template <> bool isStructureChainValid<DeviceCreateInfo, DeviceGroupDeviceCreateInfoKHX>() { return true; }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032028 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032029 {
32030 return "(void)";
32031 }
32032
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032033 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032034 {
32035 return "{}";
32036 }
32037
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032038 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032039 {
32040 return "(void)";
32041 }
32042
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032043 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032044 {
32045 return "{}";
32046 }
32047
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032048 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032049 {
32050 return "(void)";
32051 }
32052
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032053 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032054 {
32055 return "{}";
32056 }
32057
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032058 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032059 {
32060 return "(void)";
32061 }
32062
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032063 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032064 {
32065 return "{}";
32066 }
32067
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032068 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032069 {
32070 return "(void)";
32071 }
32072
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032073 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032074 {
32075 return "{}";
32076 }
32077
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032078 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032079 {
32080 return "(void)";
32081 }
32082
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032083 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032084 {
32085 return "{}";
32086 }
32087
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032088 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032089 {
32090 return "(void)";
32091 }
32092
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032093 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032094 {
32095 return "{}";
32096 }
32097
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032098 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032099 {
32100 return "(void)";
32101 }
32102
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032103 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032104 {
32105 return "{}";
32106 }
32107
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032108 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032109 {
32110 return "(void)";
32111 }
32112
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032113 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032114 {
32115 return "{}";
32116 }
32117
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032118 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032119 {
32120 return "(void)";
32121 }
32122
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032123 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032124 {
32125 return "{}";
32126 }
32127
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032128 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032129 {
32130 return "(void)";
32131 }
32132
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032133 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032134 {
32135 return "{}";
32136 }
32137
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032138 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032139 {
32140 return "(void)";
32141 }
32142
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032143 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032144 {
32145 return "{}";
32146 }
32147
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032148 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032149 {
32150 return "(void)";
32151 }
32152
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032153 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032154 {
32155 return "{}";
32156 }
32157
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032158 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032159 {
32160 return "(void)";
32161 }
32162
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032163 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032164 {
32165 return "{}";
32166 }
32167
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032168 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032169 {
32170 return "(void)";
32171 }
32172
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032173 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032174 {
32175 return "{}";
32176 }
32177
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032178 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032179 {
32180 return "(void)";
32181 }
32182
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032183 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032184 {
32185 return "{}";
32186 }
32187
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032188 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032189 {
32190 return "(void)";
32191 }
32192
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032193 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032194 {
32195 return "{}";
32196 }
32197
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032198 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032199 {
32200 return "(void)";
32201 }
32202
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032203 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032204 {
32205 return "{}";
32206 }
32207
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032208 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032209 {
32210 return "(void)";
32211 }
32212
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032213 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032214 {
32215 return "{}";
32216 }
32217
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032218 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032219 {
32220 return "(void)";
32221 }
32222
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032223 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032224 {
32225 return "{}";
32226 }
32227
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032228 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032229 {
32230 return "(void)";
32231 }
32232
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032233 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032234 {
32235 return "{}";
32236 }
32237
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032238 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032239 {
32240 return "(void)";
32241 }
32242
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032243 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032244 {
32245 return "{}";
32246 }
32247
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032248 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032249 {
32250 return "(void)";
32251 }
32252
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032253 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032254 {
32255 return "{}";
32256 }
32257
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032258 VULKAN_HPP_INLINE std::string to_string(EventCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032259 {
32260 return "(void)";
32261 }
32262
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032263 VULKAN_HPP_INLINE std::string to_string(EventCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032264 {
32265 return "{}";
32266 }
32267
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032268 VULKAN_HPP_INLINE std::string to_string(MemoryMapFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032269 {
32270 return "(void)";
32271 }
32272
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032273 VULKAN_HPP_INLINE std::string to_string(MemoryMapFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032274 {
32275 return "{}";
32276 }
32277
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032278 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032279 {
32280 return "(void)";
32281 }
32282
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032283 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032284 {
32285 return "{}";
32286 }
32287
Mark Young0f183a82017-02-28 09:58:04 -070032288 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032289 {
32290 return "(void)";
32291 }
32292
Mark Young0f183a82017-02-28 09:58:04 -070032293 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032294 {
32295 return "{}";
32296 }
32297
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032298 VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032299 {
32300 return "(void)";
32301 }
32302
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032303 VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032304 {
32305 return "{}";
32306 }
32307
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032308 VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032309 {
32310 return "(void)";
32311 }
32312
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032313 VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032314 {
32315 return "{}";
32316 }
32317
32318#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032319 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032320 {
32321 return "(void)";
32322 }
32323#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
32324
32325#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032326 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032327 {
32328 return "{}";
32329 }
32330#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
32331
32332#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032333 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032334 {
32335 return "(void)";
32336 }
32337#endif /*VK_USE_PLATFORM_MIR_KHR*/
32338
32339#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032340 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032341 {
32342 return "{}";
32343 }
32344#endif /*VK_USE_PLATFORM_MIR_KHR*/
32345
Mark Young39389872017-01-19 21:10:49 -070032346#ifdef VK_USE_PLATFORM_VI_NN
32347 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagBitsNN)
32348 {
32349 return "(void)";
32350 }
32351#endif /*VK_USE_PLATFORM_VI_NN*/
32352
32353#ifdef VK_USE_PLATFORM_VI_NN
32354 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagsNN)
32355 {
32356 return "{}";
32357 }
32358#endif /*VK_USE_PLATFORM_VI_NN*/
32359
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032360#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032361 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032362 {
32363 return "(void)";
32364 }
32365#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
32366
32367#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032368 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032369 {
32370 return "{}";
32371 }
32372#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
32373
32374#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032375 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032376 {
32377 return "(void)";
32378 }
32379#endif /*VK_USE_PLATFORM_WIN32_KHR*/
32380
32381#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032382 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032383 {
32384 return "{}";
32385 }
32386#endif /*VK_USE_PLATFORM_WIN32_KHR*/
32387
32388#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032389 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032390 {
32391 return "(void)";
32392 }
32393#endif /*VK_USE_PLATFORM_XLIB_KHR*/
32394
32395#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032396 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032397 {
32398 return "{}";
32399 }
32400#endif /*VK_USE_PLATFORM_XLIB_KHR*/
32401
32402#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032403 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032404 {
32405 return "(void)";
32406 }
32407#endif /*VK_USE_PLATFORM_XCB_KHR*/
32408
32409#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032410 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032411 {
32412 return "{}";
32413 }
32414#endif /*VK_USE_PLATFORM_XCB_KHR*/
32415
Mark Young0f183a82017-02-28 09:58:04 -070032416#ifdef VK_USE_PLATFORM_IOS_MVK
32417 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagBitsMVK)
32418 {
32419 return "(void)";
32420 }
32421#endif /*VK_USE_PLATFORM_IOS_MVK*/
32422
32423#ifdef VK_USE_PLATFORM_IOS_MVK
32424 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagsMVK)
32425 {
32426 return "{}";
32427 }
32428#endif /*VK_USE_PLATFORM_IOS_MVK*/
32429
32430#ifdef VK_USE_PLATFORM_MACOS_MVK
32431 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagBitsMVK)
32432 {
32433 return "(void)";
32434 }
32435#endif /*VK_USE_PLATFORM_MACOS_MVK*/
32436
32437#ifdef VK_USE_PLATFORM_MACOS_MVK
32438 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagsMVK)
32439 {
32440 return "{}";
32441 }
32442#endif /*VK_USE_PLATFORM_MACOS_MVK*/
32443
Mark Young39389872017-01-19 21:10:49 -070032444 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagBitsKHR)
32445 {
32446 return "(void)";
32447 }
32448
32449 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagsKHR)
32450 {
32451 return "{}";
32452 }
32453
Mark Young0f183a82017-02-28 09:58:04 -070032454 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagBitsNV)
32455 {
32456 return "(void)";
32457 }
32458
32459 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagsNV)
32460 {
32461 return "{}";
32462 }
32463
32464 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagBitsEXT)
32465 {
32466 return "(void)";
32467 }
32468
32469 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagsEXT)
32470 {
32471 return "{}";
32472 }
32473
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060032474 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageToColorStateCreateFlagBitsNV)
32475 {
32476 return "(void)";
32477 }
32478
32479 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageToColorStateCreateFlagsNV)
32480 {
32481 return "{}";
32482 }
32483
32484 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageModulationStateCreateFlagBitsNV)
32485 {
32486 return "(void)";
32487 }
32488
32489 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageModulationStateCreateFlagsNV)
32490 {
32491 return "{}";
32492 }
32493
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032494 VULKAN_HPP_INLINE std::string to_string(ValidationCacheCreateFlagBitsEXT)
32495 {
32496 return "(void)";
32497 }
32498
32499 VULKAN_HPP_INLINE std::string to_string(ValidationCacheCreateFlagsEXT)
32500 {
32501 return "{}";
32502 }
32503
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032504 VULKAN_HPP_INLINE std::string to_string(ImageLayout value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032505 {
32506 switch (value)
32507 {
32508 case ImageLayout::eUndefined: return "Undefined";
32509 case ImageLayout::eGeneral: return "General";
32510 case ImageLayout::eColorAttachmentOptimal: return "ColorAttachmentOptimal";
32511 case ImageLayout::eDepthStencilAttachmentOptimal: return "DepthStencilAttachmentOptimal";
32512 case ImageLayout::eDepthStencilReadOnlyOptimal: return "DepthStencilReadOnlyOptimal";
32513 case ImageLayout::eShaderReadOnlyOptimal: return "ShaderReadOnlyOptimal";
32514 case ImageLayout::eTransferSrcOptimal: return "TransferSrcOptimal";
32515 case ImageLayout::eTransferDstOptimal: return "TransferDstOptimal";
32516 case ImageLayout::ePreinitialized: return "Preinitialized";
32517 case ImageLayout::ePresentSrcKHR: return "PresentSrcKHR";
Mark Lobodzinski54385432017-05-15 10:27:52 -060032518 case ImageLayout::eSharedPresentKHR: return "SharedPresentKHR";
Lenny Komowb79f04a2017-09-18 17:07:00 -060032519 case ImageLayout::eDepthReadOnlyStencilAttachmentOptimalKHR: return "DepthReadOnlyStencilAttachmentOptimalKHR";
32520 case ImageLayout::eDepthAttachmentStencilReadOnlyOptimalKHR: return "DepthAttachmentStencilReadOnlyOptimalKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032521 default: return "invalid";
32522 }
32523 }
32524
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032525 VULKAN_HPP_INLINE std::string to_string(AttachmentLoadOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032526 {
32527 switch (value)
32528 {
32529 case AttachmentLoadOp::eLoad: return "Load";
32530 case AttachmentLoadOp::eClear: return "Clear";
32531 case AttachmentLoadOp::eDontCare: return "DontCare";
32532 default: return "invalid";
32533 }
32534 }
32535
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032536 VULKAN_HPP_INLINE std::string to_string(AttachmentStoreOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032537 {
32538 switch (value)
32539 {
32540 case AttachmentStoreOp::eStore: return "Store";
32541 case AttachmentStoreOp::eDontCare: return "DontCare";
32542 default: return "invalid";
32543 }
32544 }
32545
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032546 VULKAN_HPP_INLINE std::string to_string(ImageType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032547 {
32548 switch (value)
32549 {
32550 case ImageType::e1D: return "1D";
32551 case ImageType::e2D: return "2D";
32552 case ImageType::e3D: return "3D";
32553 default: return "invalid";
32554 }
32555 }
32556
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032557 VULKAN_HPP_INLINE std::string to_string(ImageTiling value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032558 {
32559 switch (value)
32560 {
32561 case ImageTiling::eOptimal: return "Optimal";
32562 case ImageTiling::eLinear: return "Linear";
32563 default: return "invalid";
32564 }
32565 }
32566
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032567 VULKAN_HPP_INLINE std::string to_string(ImageViewType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032568 {
32569 switch (value)
32570 {
32571 case ImageViewType::e1D: return "1D";
32572 case ImageViewType::e2D: return "2D";
32573 case ImageViewType::e3D: return "3D";
32574 case ImageViewType::eCube: return "Cube";
32575 case ImageViewType::e1DArray: return "1DArray";
32576 case ImageViewType::e2DArray: return "2DArray";
32577 case ImageViewType::eCubeArray: return "CubeArray";
32578 default: return "invalid";
32579 }
32580 }
32581
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032582 VULKAN_HPP_INLINE std::string to_string(CommandBufferLevel value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032583 {
32584 switch (value)
32585 {
32586 case CommandBufferLevel::ePrimary: return "Primary";
32587 case CommandBufferLevel::eSecondary: return "Secondary";
32588 default: return "invalid";
32589 }
32590 }
32591
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032592 VULKAN_HPP_INLINE std::string to_string(ComponentSwizzle value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032593 {
32594 switch (value)
32595 {
32596 case ComponentSwizzle::eIdentity: return "Identity";
32597 case ComponentSwizzle::eZero: return "Zero";
32598 case ComponentSwizzle::eOne: return "One";
32599 case ComponentSwizzle::eR: return "R";
32600 case ComponentSwizzle::eG: return "G";
32601 case ComponentSwizzle::eB: return "B";
32602 case ComponentSwizzle::eA: return "A";
32603 default: return "invalid";
32604 }
32605 }
32606
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032607 VULKAN_HPP_INLINE std::string to_string(DescriptorType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032608 {
32609 switch (value)
32610 {
32611 case DescriptorType::eSampler: return "Sampler";
32612 case DescriptorType::eCombinedImageSampler: return "CombinedImageSampler";
32613 case DescriptorType::eSampledImage: return "SampledImage";
32614 case DescriptorType::eStorageImage: return "StorageImage";
32615 case DescriptorType::eUniformTexelBuffer: return "UniformTexelBuffer";
32616 case DescriptorType::eStorageTexelBuffer: return "StorageTexelBuffer";
32617 case DescriptorType::eUniformBuffer: return "UniformBuffer";
32618 case DescriptorType::eStorageBuffer: return "StorageBuffer";
32619 case DescriptorType::eUniformBufferDynamic: return "UniformBufferDynamic";
32620 case DescriptorType::eStorageBufferDynamic: return "StorageBufferDynamic";
32621 case DescriptorType::eInputAttachment: return "InputAttachment";
32622 default: return "invalid";
32623 }
32624 }
32625
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032626 VULKAN_HPP_INLINE std::string to_string(QueryType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032627 {
32628 switch (value)
32629 {
32630 case QueryType::eOcclusion: return "Occlusion";
32631 case QueryType::ePipelineStatistics: return "PipelineStatistics";
32632 case QueryType::eTimestamp: return "Timestamp";
32633 default: return "invalid";
32634 }
32635 }
32636
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032637 VULKAN_HPP_INLINE std::string to_string(BorderColor value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032638 {
32639 switch (value)
32640 {
32641 case BorderColor::eFloatTransparentBlack: return "FloatTransparentBlack";
32642 case BorderColor::eIntTransparentBlack: return "IntTransparentBlack";
32643 case BorderColor::eFloatOpaqueBlack: return "FloatOpaqueBlack";
32644 case BorderColor::eIntOpaqueBlack: return "IntOpaqueBlack";
32645 case BorderColor::eFloatOpaqueWhite: return "FloatOpaqueWhite";
32646 case BorderColor::eIntOpaqueWhite: return "IntOpaqueWhite";
32647 default: return "invalid";
32648 }
32649 }
32650
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032651 VULKAN_HPP_INLINE std::string to_string(PipelineBindPoint value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032652 {
32653 switch (value)
32654 {
32655 case PipelineBindPoint::eGraphics: return "Graphics";
32656 case PipelineBindPoint::eCompute: return "Compute";
32657 default: return "invalid";
32658 }
32659 }
32660
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032661 VULKAN_HPP_INLINE std::string to_string(PipelineCacheHeaderVersion value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032662 {
32663 switch (value)
32664 {
32665 case PipelineCacheHeaderVersion::eOne: return "One";
32666 default: return "invalid";
32667 }
32668 }
32669
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032670 VULKAN_HPP_INLINE std::string to_string(PrimitiveTopology value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032671 {
32672 switch (value)
32673 {
32674 case PrimitiveTopology::ePointList: return "PointList";
32675 case PrimitiveTopology::eLineList: return "LineList";
32676 case PrimitiveTopology::eLineStrip: return "LineStrip";
32677 case PrimitiveTopology::eTriangleList: return "TriangleList";
32678 case PrimitiveTopology::eTriangleStrip: return "TriangleStrip";
32679 case PrimitiveTopology::eTriangleFan: return "TriangleFan";
32680 case PrimitiveTopology::eLineListWithAdjacency: return "LineListWithAdjacency";
32681 case PrimitiveTopology::eLineStripWithAdjacency: return "LineStripWithAdjacency";
32682 case PrimitiveTopology::eTriangleListWithAdjacency: return "TriangleListWithAdjacency";
32683 case PrimitiveTopology::eTriangleStripWithAdjacency: return "TriangleStripWithAdjacency";
32684 case PrimitiveTopology::ePatchList: return "PatchList";
32685 default: return "invalid";
32686 }
32687 }
32688
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032689 VULKAN_HPP_INLINE std::string to_string(SharingMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032690 {
32691 switch (value)
32692 {
32693 case SharingMode::eExclusive: return "Exclusive";
32694 case SharingMode::eConcurrent: return "Concurrent";
32695 default: return "invalid";
32696 }
32697 }
32698
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032699 VULKAN_HPP_INLINE std::string to_string(IndexType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032700 {
32701 switch (value)
32702 {
32703 case IndexType::eUint16: return "Uint16";
32704 case IndexType::eUint32: return "Uint32";
32705 default: return "invalid";
32706 }
32707 }
32708
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032709 VULKAN_HPP_INLINE std::string to_string(Filter value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032710 {
32711 switch (value)
32712 {
32713 case Filter::eNearest: return "Nearest";
32714 case Filter::eLinear: return "Linear";
32715 case Filter::eCubicIMG: return "CubicIMG";
32716 default: return "invalid";
32717 }
32718 }
32719
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032720 VULKAN_HPP_INLINE std::string to_string(SamplerMipmapMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032721 {
32722 switch (value)
32723 {
32724 case SamplerMipmapMode::eNearest: return "Nearest";
32725 case SamplerMipmapMode::eLinear: return "Linear";
32726 default: return "invalid";
32727 }
32728 }
32729
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032730 VULKAN_HPP_INLINE std::string to_string(SamplerAddressMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032731 {
32732 switch (value)
32733 {
32734 case SamplerAddressMode::eRepeat: return "Repeat";
32735 case SamplerAddressMode::eMirroredRepeat: return "MirroredRepeat";
32736 case SamplerAddressMode::eClampToEdge: return "ClampToEdge";
32737 case SamplerAddressMode::eClampToBorder: return "ClampToBorder";
32738 case SamplerAddressMode::eMirrorClampToEdge: return "MirrorClampToEdge";
32739 default: return "invalid";
32740 }
32741 }
32742
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032743 VULKAN_HPP_INLINE std::string to_string(CompareOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032744 {
32745 switch (value)
32746 {
32747 case CompareOp::eNever: return "Never";
32748 case CompareOp::eLess: return "Less";
32749 case CompareOp::eEqual: return "Equal";
32750 case CompareOp::eLessOrEqual: return "LessOrEqual";
32751 case CompareOp::eGreater: return "Greater";
32752 case CompareOp::eNotEqual: return "NotEqual";
32753 case CompareOp::eGreaterOrEqual: return "GreaterOrEqual";
32754 case CompareOp::eAlways: return "Always";
32755 default: return "invalid";
32756 }
32757 }
32758
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032759 VULKAN_HPP_INLINE std::string to_string(PolygonMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032760 {
32761 switch (value)
32762 {
32763 case PolygonMode::eFill: return "Fill";
32764 case PolygonMode::eLine: return "Line";
32765 case PolygonMode::ePoint: return "Point";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060032766 case PolygonMode::eFillRectangleNV: return "FillRectangleNV";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032767 default: return "invalid";
32768 }
32769 }
32770
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032771 VULKAN_HPP_INLINE std::string to_string(CullModeFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032772 {
32773 switch (value)
32774 {
32775 case CullModeFlagBits::eNone: return "None";
32776 case CullModeFlagBits::eFront: return "Front";
32777 case CullModeFlagBits::eBack: return "Back";
32778 case CullModeFlagBits::eFrontAndBack: return "FrontAndBack";
32779 default: return "invalid";
32780 }
32781 }
32782
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032783 VULKAN_HPP_INLINE std::string to_string(CullModeFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032784 {
32785 if (!value) return "{}";
32786 std::string result;
32787 if (value & CullModeFlagBits::eNone) result += "None | ";
32788 if (value & CullModeFlagBits::eFront) result += "Front | ";
32789 if (value & CullModeFlagBits::eBack) result += "Back | ";
32790 if (value & CullModeFlagBits::eFrontAndBack) result += "FrontAndBack | ";
32791 return "{" + result.substr(0, result.size() - 3) + "}";
32792 }
32793
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032794 VULKAN_HPP_INLINE std::string to_string(FrontFace value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032795 {
32796 switch (value)
32797 {
32798 case FrontFace::eCounterClockwise: return "CounterClockwise";
32799 case FrontFace::eClockwise: return "Clockwise";
32800 default: return "invalid";
32801 }
32802 }
32803
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032804 VULKAN_HPP_INLINE std::string to_string(BlendFactor value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032805 {
32806 switch (value)
32807 {
32808 case BlendFactor::eZero: return "Zero";
32809 case BlendFactor::eOne: return "One";
32810 case BlendFactor::eSrcColor: return "SrcColor";
32811 case BlendFactor::eOneMinusSrcColor: return "OneMinusSrcColor";
32812 case BlendFactor::eDstColor: return "DstColor";
32813 case BlendFactor::eOneMinusDstColor: return "OneMinusDstColor";
32814 case BlendFactor::eSrcAlpha: return "SrcAlpha";
32815 case BlendFactor::eOneMinusSrcAlpha: return "OneMinusSrcAlpha";
32816 case BlendFactor::eDstAlpha: return "DstAlpha";
32817 case BlendFactor::eOneMinusDstAlpha: return "OneMinusDstAlpha";
32818 case BlendFactor::eConstantColor: return "ConstantColor";
32819 case BlendFactor::eOneMinusConstantColor: return "OneMinusConstantColor";
32820 case BlendFactor::eConstantAlpha: return "ConstantAlpha";
32821 case BlendFactor::eOneMinusConstantAlpha: return "OneMinusConstantAlpha";
32822 case BlendFactor::eSrcAlphaSaturate: return "SrcAlphaSaturate";
32823 case BlendFactor::eSrc1Color: return "Src1Color";
32824 case BlendFactor::eOneMinusSrc1Color: return "OneMinusSrc1Color";
32825 case BlendFactor::eSrc1Alpha: return "Src1Alpha";
32826 case BlendFactor::eOneMinusSrc1Alpha: return "OneMinusSrc1Alpha";
32827 default: return "invalid";
32828 }
32829 }
32830
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032831 VULKAN_HPP_INLINE std::string to_string(BlendOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032832 {
32833 switch (value)
32834 {
32835 case BlendOp::eAdd: return "Add";
32836 case BlendOp::eSubtract: return "Subtract";
32837 case BlendOp::eReverseSubtract: return "ReverseSubtract";
32838 case BlendOp::eMin: return "Min";
32839 case BlendOp::eMax: return "Max";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060032840 case BlendOp::eZeroEXT: return "ZeroEXT";
32841 case BlendOp::eSrcEXT: return "SrcEXT";
32842 case BlendOp::eDstEXT: return "DstEXT";
32843 case BlendOp::eSrcOverEXT: return "SrcOverEXT";
32844 case BlendOp::eDstOverEXT: return "DstOverEXT";
32845 case BlendOp::eSrcInEXT: return "SrcInEXT";
32846 case BlendOp::eDstInEXT: return "DstInEXT";
32847 case BlendOp::eSrcOutEXT: return "SrcOutEXT";
32848 case BlendOp::eDstOutEXT: return "DstOutEXT";
32849 case BlendOp::eSrcAtopEXT: return "SrcAtopEXT";
32850 case BlendOp::eDstAtopEXT: return "DstAtopEXT";
32851 case BlendOp::eXorEXT: return "XorEXT";
32852 case BlendOp::eMultiplyEXT: return "MultiplyEXT";
32853 case BlendOp::eScreenEXT: return "ScreenEXT";
32854 case BlendOp::eOverlayEXT: return "OverlayEXT";
32855 case BlendOp::eDarkenEXT: return "DarkenEXT";
32856 case BlendOp::eLightenEXT: return "LightenEXT";
32857 case BlendOp::eColordodgeEXT: return "ColordodgeEXT";
32858 case BlendOp::eColorburnEXT: return "ColorburnEXT";
32859 case BlendOp::eHardlightEXT: return "HardlightEXT";
32860 case BlendOp::eSoftlightEXT: return "SoftlightEXT";
32861 case BlendOp::eDifferenceEXT: return "DifferenceEXT";
32862 case BlendOp::eExclusionEXT: return "ExclusionEXT";
32863 case BlendOp::eInvertEXT: return "InvertEXT";
32864 case BlendOp::eInvertRgbEXT: return "InvertRgbEXT";
32865 case BlendOp::eLineardodgeEXT: return "LineardodgeEXT";
32866 case BlendOp::eLinearburnEXT: return "LinearburnEXT";
32867 case BlendOp::eVividlightEXT: return "VividlightEXT";
32868 case BlendOp::eLinearlightEXT: return "LinearlightEXT";
32869 case BlendOp::ePinlightEXT: return "PinlightEXT";
32870 case BlendOp::eHardmixEXT: return "HardmixEXT";
32871 case BlendOp::eHslHueEXT: return "HslHueEXT";
32872 case BlendOp::eHslSaturationEXT: return "HslSaturationEXT";
32873 case BlendOp::eHslColorEXT: return "HslColorEXT";
32874 case BlendOp::eHslLuminosityEXT: return "HslLuminosityEXT";
32875 case BlendOp::ePlusEXT: return "PlusEXT";
32876 case BlendOp::ePlusClampedEXT: return "PlusClampedEXT";
32877 case BlendOp::ePlusClampedAlphaEXT: return "PlusClampedAlphaEXT";
32878 case BlendOp::ePlusDarkerEXT: return "PlusDarkerEXT";
32879 case BlendOp::eMinusEXT: return "MinusEXT";
32880 case BlendOp::eMinusClampedEXT: return "MinusClampedEXT";
32881 case BlendOp::eContrastEXT: return "ContrastEXT";
32882 case BlendOp::eInvertOvgEXT: return "InvertOvgEXT";
32883 case BlendOp::eRedEXT: return "RedEXT";
32884 case BlendOp::eGreenEXT: return "GreenEXT";
32885 case BlendOp::eBlueEXT: return "BlueEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032886 default: return "invalid";
32887 }
32888 }
32889
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032890 VULKAN_HPP_INLINE std::string to_string(StencilOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032891 {
32892 switch (value)
32893 {
32894 case StencilOp::eKeep: return "Keep";
32895 case StencilOp::eZero: return "Zero";
32896 case StencilOp::eReplace: return "Replace";
32897 case StencilOp::eIncrementAndClamp: return "IncrementAndClamp";
32898 case StencilOp::eDecrementAndClamp: return "DecrementAndClamp";
32899 case StencilOp::eInvert: return "Invert";
32900 case StencilOp::eIncrementAndWrap: return "IncrementAndWrap";
32901 case StencilOp::eDecrementAndWrap: return "DecrementAndWrap";
32902 default: return "invalid";
32903 }
32904 }
32905
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032906 VULKAN_HPP_INLINE std::string to_string(LogicOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032907 {
32908 switch (value)
32909 {
32910 case LogicOp::eClear: return "Clear";
32911 case LogicOp::eAnd: return "And";
32912 case LogicOp::eAndReverse: return "AndReverse";
32913 case LogicOp::eCopy: return "Copy";
32914 case LogicOp::eAndInverted: return "AndInverted";
32915 case LogicOp::eNoOp: return "NoOp";
32916 case LogicOp::eXor: return "Xor";
32917 case LogicOp::eOr: return "Or";
32918 case LogicOp::eNor: return "Nor";
32919 case LogicOp::eEquivalent: return "Equivalent";
32920 case LogicOp::eInvert: return "Invert";
32921 case LogicOp::eOrReverse: return "OrReverse";
32922 case LogicOp::eCopyInverted: return "CopyInverted";
32923 case LogicOp::eOrInverted: return "OrInverted";
32924 case LogicOp::eNand: return "Nand";
32925 case LogicOp::eSet: return "Set";
32926 default: return "invalid";
32927 }
32928 }
32929
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032930 VULKAN_HPP_INLINE std::string to_string(InternalAllocationType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032931 {
32932 switch (value)
32933 {
32934 case InternalAllocationType::eExecutable: return "Executable";
32935 default: return "invalid";
32936 }
32937 }
32938
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032939 VULKAN_HPP_INLINE std::string to_string(SystemAllocationScope value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032940 {
32941 switch (value)
32942 {
32943 case SystemAllocationScope::eCommand: return "Command";
32944 case SystemAllocationScope::eObject: return "Object";
32945 case SystemAllocationScope::eCache: return "Cache";
32946 case SystemAllocationScope::eDevice: return "Device";
32947 case SystemAllocationScope::eInstance: return "Instance";
32948 default: return "invalid";
32949 }
32950 }
32951
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032952 VULKAN_HPP_INLINE std::string to_string(PhysicalDeviceType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032953 {
32954 switch (value)
32955 {
32956 case PhysicalDeviceType::eOther: return "Other";
32957 case PhysicalDeviceType::eIntegratedGpu: return "IntegratedGpu";
32958 case PhysicalDeviceType::eDiscreteGpu: return "DiscreteGpu";
32959 case PhysicalDeviceType::eVirtualGpu: return "VirtualGpu";
32960 case PhysicalDeviceType::eCpu: return "Cpu";
32961 default: return "invalid";
32962 }
32963 }
32964
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032965 VULKAN_HPP_INLINE std::string to_string(VertexInputRate value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032966 {
32967 switch (value)
32968 {
32969 case VertexInputRate::eVertex: return "Vertex";
32970 case VertexInputRate::eInstance: return "Instance";
32971 default: return "invalid";
32972 }
32973 }
32974
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032975 VULKAN_HPP_INLINE std::string to_string(Format value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032976 {
32977 switch (value)
32978 {
32979 case Format::eUndefined: return "Undefined";
32980 case Format::eR4G4UnormPack8: return "R4G4UnormPack8";
32981 case Format::eR4G4B4A4UnormPack16: return "R4G4B4A4UnormPack16";
32982 case Format::eB4G4R4A4UnormPack16: return "B4G4R4A4UnormPack16";
32983 case Format::eR5G6B5UnormPack16: return "R5G6B5UnormPack16";
32984 case Format::eB5G6R5UnormPack16: return "B5G6R5UnormPack16";
32985 case Format::eR5G5B5A1UnormPack16: return "R5G5B5A1UnormPack16";
32986 case Format::eB5G5R5A1UnormPack16: return "B5G5R5A1UnormPack16";
32987 case Format::eA1R5G5B5UnormPack16: return "A1R5G5B5UnormPack16";
32988 case Format::eR8Unorm: return "R8Unorm";
32989 case Format::eR8Snorm: return "R8Snorm";
32990 case Format::eR8Uscaled: return "R8Uscaled";
32991 case Format::eR8Sscaled: return "R8Sscaled";
32992 case Format::eR8Uint: return "R8Uint";
32993 case Format::eR8Sint: return "R8Sint";
32994 case Format::eR8Srgb: return "R8Srgb";
32995 case Format::eR8G8Unorm: return "R8G8Unorm";
32996 case Format::eR8G8Snorm: return "R8G8Snorm";
32997 case Format::eR8G8Uscaled: return "R8G8Uscaled";
32998 case Format::eR8G8Sscaled: return "R8G8Sscaled";
32999 case Format::eR8G8Uint: return "R8G8Uint";
33000 case Format::eR8G8Sint: return "R8G8Sint";
33001 case Format::eR8G8Srgb: return "R8G8Srgb";
33002 case Format::eR8G8B8Unorm: return "R8G8B8Unorm";
33003 case Format::eR8G8B8Snorm: return "R8G8B8Snorm";
33004 case Format::eR8G8B8Uscaled: return "R8G8B8Uscaled";
33005 case Format::eR8G8B8Sscaled: return "R8G8B8Sscaled";
33006 case Format::eR8G8B8Uint: return "R8G8B8Uint";
33007 case Format::eR8G8B8Sint: return "R8G8B8Sint";
33008 case Format::eR8G8B8Srgb: return "R8G8B8Srgb";
33009 case Format::eB8G8R8Unorm: return "B8G8R8Unorm";
33010 case Format::eB8G8R8Snorm: return "B8G8R8Snorm";
33011 case Format::eB8G8R8Uscaled: return "B8G8R8Uscaled";
33012 case Format::eB8G8R8Sscaled: return "B8G8R8Sscaled";
33013 case Format::eB8G8R8Uint: return "B8G8R8Uint";
33014 case Format::eB8G8R8Sint: return "B8G8R8Sint";
33015 case Format::eB8G8R8Srgb: return "B8G8R8Srgb";
33016 case Format::eR8G8B8A8Unorm: return "R8G8B8A8Unorm";
33017 case Format::eR8G8B8A8Snorm: return "R8G8B8A8Snorm";
33018 case Format::eR8G8B8A8Uscaled: return "R8G8B8A8Uscaled";
33019 case Format::eR8G8B8A8Sscaled: return "R8G8B8A8Sscaled";
33020 case Format::eR8G8B8A8Uint: return "R8G8B8A8Uint";
33021 case Format::eR8G8B8A8Sint: return "R8G8B8A8Sint";
33022 case Format::eR8G8B8A8Srgb: return "R8G8B8A8Srgb";
33023 case Format::eB8G8R8A8Unorm: return "B8G8R8A8Unorm";
33024 case Format::eB8G8R8A8Snorm: return "B8G8R8A8Snorm";
33025 case Format::eB8G8R8A8Uscaled: return "B8G8R8A8Uscaled";
33026 case Format::eB8G8R8A8Sscaled: return "B8G8R8A8Sscaled";
33027 case Format::eB8G8R8A8Uint: return "B8G8R8A8Uint";
33028 case Format::eB8G8R8A8Sint: return "B8G8R8A8Sint";
33029 case Format::eB8G8R8A8Srgb: return "B8G8R8A8Srgb";
33030 case Format::eA8B8G8R8UnormPack32: return "A8B8G8R8UnormPack32";
33031 case Format::eA8B8G8R8SnormPack32: return "A8B8G8R8SnormPack32";
33032 case Format::eA8B8G8R8UscaledPack32: return "A8B8G8R8UscaledPack32";
33033 case Format::eA8B8G8R8SscaledPack32: return "A8B8G8R8SscaledPack32";
33034 case Format::eA8B8G8R8UintPack32: return "A8B8G8R8UintPack32";
33035 case Format::eA8B8G8R8SintPack32: return "A8B8G8R8SintPack32";
33036 case Format::eA8B8G8R8SrgbPack32: return "A8B8G8R8SrgbPack32";
33037 case Format::eA2R10G10B10UnormPack32: return "A2R10G10B10UnormPack32";
33038 case Format::eA2R10G10B10SnormPack32: return "A2R10G10B10SnormPack32";
33039 case Format::eA2R10G10B10UscaledPack32: return "A2R10G10B10UscaledPack32";
33040 case Format::eA2R10G10B10SscaledPack32: return "A2R10G10B10SscaledPack32";
33041 case Format::eA2R10G10B10UintPack32: return "A2R10G10B10UintPack32";
33042 case Format::eA2R10G10B10SintPack32: return "A2R10G10B10SintPack32";
33043 case Format::eA2B10G10R10UnormPack32: return "A2B10G10R10UnormPack32";
33044 case Format::eA2B10G10R10SnormPack32: return "A2B10G10R10SnormPack32";
33045 case Format::eA2B10G10R10UscaledPack32: return "A2B10G10R10UscaledPack32";
33046 case Format::eA2B10G10R10SscaledPack32: return "A2B10G10R10SscaledPack32";
33047 case Format::eA2B10G10R10UintPack32: return "A2B10G10R10UintPack32";
33048 case Format::eA2B10G10R10SintPack32: return "A2B10G10R10SintPack32";
33049 case Format::eR16Unorm: return "R16Unorm";
33050 case Format::eR16Snorm: return "R16Snorm";
33051 case Format::eR16Uscaled: return "R16Uscaled";
33052 case Format::eR16Sscaled: return "R16Sscaled";
33053 case Format::eR16Uint: return "R16Uint";
33054 case Format::eR16Sint: return "R16Sint";
33055 case Format::eR16Sfloat: return "R16Sfloat";
33056 case Format::eR16G16Unorm: return "R16G16Unorm";
33057 case Format::eR16G16Snorm: return "R16G16Snorm";
33058 case Format::eR16G16Uscaled: return "R16G16Uscaled";
33059 case Format::eR16G16Sscaled: return "R16G16Sscaled";
33060 case Format::eR16G16Uint: return "R16G16Uint";
33061 case Format::eR16G16Sint: return "R16G16Sint";
33062 case Format::eR16G16Sfloat: return "R16G16Sfloat";
33063 case Format::eR16G16B16Unorm: return "R16G16B16Unorm";
33064 case Format::eR16G16B16Snorm: return "R16G16B16Snorm";
33065 case Format::eR16G16B16Uscaled: return "R16G16B16Uscaled";
33066 case Format::eR16G16B16Sscaled: return "R16G16B16Sscaled";
33067 case Format::eR16G16B16Uint: return "R16G16B16Uint";
33068 case Format::eR16G16B16Sint: return "R16G16B16Sint";
33069 case Format::eR16G16B16Sfloat: return "R16G16B16Sfloat";
33070 case Format::eR16G16B16A16Unorm: return "R16G16B16A16Unorm";
33071 case Format::eR16G16B16A16Snorm: return "R16G16B16A16Snorm";
33072 case Format::eR16G16B16A16Uscaled: return "R16G16B16A16Uscaled";
33073 case Format::eR16G16B16A16Sscaled: return "R16G16B16A16Sscaled";
33074 case Format::eR16G16B16A16Uint: return "R16G16B16A16Uint";
33075 case Format::eR16G16B16A16Sint: return "R16G16B16A16Sint";
33076 case Format::eR16G16B16A16Sfloat: return "R16G16B16A16Sfloat";
33077 case Format::eR32Uint: return "R32Uint";
33078 case Format::eR32Sint: return "R32Sint";
33079 case Format::eR32Sfloat: return "R32Sfloat";
33080 case Format::eR32G32Uint: return "R32G32Uint";
33081 case Format::eR32G32Sint: return "R32G32Sint";
33082 case Format::eR32G32Sfloat: return "R32G32Sfloat";
33083 case Format::eR32G32B32Uint: return "R32G32B32Uint";
33084 case Format::eR32G32B32Sint: return "R32G32B32Sint";
33085 case Format::eR32G32B32Sfloat: return "R32G32B32Sfloat";
33086 case Format::eR32G32B32A32Uint: return "R32G32B32A32Uint";
33087 case Format::eR32G32B32A32Sint: return "R32G32B32A32Sint";
33088 case Format::eR32G32B32A32Sfloat: return "R32G32B32A32Sfloat";
33089 case Format::eR64Uint: return "R64Uint";
33090 case Format::eR64Sint: return "R64Sint";
33091 case Format::eR64Sfloat: return "R64Sfloat";
33092 case Format::eR64G64Uint: return "R64G64Uint";
33093 case Format::eR64G64Sint: return "R64G64Sint";
33094 case Format::eR64G64Sfloat: return "R64G64Sfloat";
33095 case Format::eR64G64B64Uint: return "R64G64B64Uint";
33096 case Format::eR64G64B64Sint: return "R64G64B64Sint";
33097 case Format::eR64G64B64Sfloat: return "R64G64B64Sfloat";
33098 case Format::eR64G64B64A64Uint: return "R64G64B64A64Uint";
33099 case Format::eR64G64B64A64Sint: return "R64G64B64A64Sint";
33100 case Format::eR64G64B64A64Sfloat: return "R64G64B64A64Sfloat";
33101 case Format::eB10G11R11UfloatPack32: return "B10G11R11UfloatPack32";
33102 case Format::eE5B9G9R9UfloatPack32: return "E5B9G9R9UfloatPack32";
33103 case Format::eD16Unorm: return "D16Unorm";
33104 case Format::eX8D24UnormPack32: return "X8D24UnormPack32";
33105 case Format::eD32Sfloat: return "D32Sfloat";
33106 case Format::eS8Uint: return "S8Uint";
33107 case Format::eD16UnormS8Uint: return "D16UnormS8Uint";
33108 case Format::eD24UnormS8Uint: return "D24UnormS8Uint";
33109 case Format::eD32SfloatS8Uint: return "D32SfloatS8Uint";
33110 case Format::eBc1RgbUnormBlock: return "Bc1RgbUnormBlock";
33111 case Format::eBc1RgbSrgbBlock: return "Bc1RgbSrgbBlock";
33112 case Format::eBc1RgbaUnormBlock: return "Bc1RgbaUnormBlock";
33113 case Format::eBc1RgbaSrgbBlock: return "Bc1RgbaSrgbBlock";
33114 case Format::eBc2UnormBlock: return "Bc2UnormBlock";
33115 case Format::eBc2SrgbBlock: return "Bc2SrgbBlock";
33116 case Format::eBc3UnormBlock: return "Bc3UnormBlock";
33117 case Format::eBc3SrgbBlock: return "Bc3SrgbBlock";
33118 case Format::eBc4UnormBlock: return "Bc4UnormBlock";
33119 case Format::eBc4SnormBlock: return "Bc4SnormBlock";
33120 case Format::eBc5UnormBlock: return "Bc5UnormBlock";
33121 case Format::eBc5SnormBlock: return "Bc5SnormBlock";
33122 case Format::eBc6HUfloatBlock: return "Bc6HUfloatBlock";
33123 case Format::eBc6HSfloatBlock: return "Bc6HSfloatBlock";
33124 case Format::eBc7UnormBlock: return "Bc7UnormBlock";
33125 case Format::eBc7SrgbBlock: return "Bc7SrgbBlock";
33126 case Format::eEtc2R8G8B8UnormBlock: return "Etc2R8G8B8UnormBlock";
33127 case Format::eEtc2R8G8B8SrgbBlock: return "Etc2R8G8B8SrgbBlock";
33128 case Format::eEtc2R8G8B8A1UnormBlock: return "Etc2R8G8B8A1UnormBlock";
33129 case Format::eEtc2R8G8B8A1SrgbBlock: return "Etc2R8G8B8A1SrgbBlock";
33130 case Format::eEtc2R8G8B8A8UnormBlock: return "Etc2R8G8B8A8UnormBlock";
33131 case Format::eEtc2R8G8B8A8SrgbBlock: return "Etc2R8G8B8A8SrgbBlock";
33132 case Format::eEacR11UnormBlock: return "EacR11UnormBlock";
33133 case Format::eEacR11SnormBlock: return "EacR11SnormBlock";
33134 case Format::eEacR11G11UnormBlock: return "EacR11G11UnormBlock";
33135 case Format::eEacR11G11SnormBlock: return "EacR11G11SnormBlock";
33136 case Format::eAstc4x4UnormBlock: return "Astc4x4UnormBlock";
33137 case Format::eAstc4x4SrgbBlock: return "Astc4x4SrgbBlock";
33138 case Format::eAstc5x4UnormBlock: return "Astc5x4UnormBlock";
33139 case Format::eAstc5x4SrgbBlock: return "Astc5x4SrgbBlock";
33140 case Format::eAstc5x5UnormBlock: return "Astc5x5UnormBlock";
33141 case Format::eAstc5x5SrgbBlock: return "Astc5x5SrgbBlock";
33142 case Format::eAstc6x5UnormBlock: return "Astc6x5UnormBlock";
33143 case Format::eAstc6x5SrgbBlock: return "Astc6x5SrgbBlock";
33144 case Format::eAstc6x6UnormBlock: return "Astc6x6UnormBlock";
33145 case Format::eAstc6x6SrgbBlock: return "Astc6x6SrgbBlock";
33146 case Format::eAstc8x5UnormBlock: return "Astc8x5UnormBlock";
33147 case Format::eAstc8x5SrgbBlock: return "Astc8x5SrgbBlock";
33148 case Format::eAstc8x6UnormBlock: return "Astc8x6UnormBlock";
33149 case Format::eAstc8x6SrgbBlock: return "Astc8x6SrgbBlock";
33150 case Format::eAstc8x8UnormBlock: return "Astc8x8UnormBlock";
33151 case Format::eAstc8x8SrgbBlock: return "Astc8x8SrgbBlock";
33152 case Format::eAstc10x5UnormBlock: return "Astc10x5UnormBlock";
33153 case Format::eAstc10x5SrgbBlock: return "Astc10x5SrgbBlock";
33154 case Format::eAstc10x6UnormBlock: return "Astc10x6UnormBlock";
33155 case Format::eAstc10x6SrgbBlock: return "Astc10x6SrgbBlock";
33156 case Format::eAstc10x8UnormBlock: return "Astc10x8UnormBlock";
33157 case Format::eAstc10x8SrgbBlock: return "Astc10x8SrgbBlock";
33158 case Format::eAstc10x10UnormBlock: return "Astc10x10UnormBlock";
33159 case Format::eAstc10x10SrgbBlock: return "Astc10x10SrgbBlock";
33160 case Format::eAstc12x10UnormBlock: return "Astc12x10UnormBlock";
33161 case Format::eAstc12x10SrgbBlock: return "Astc12x10SrgbBlock";
33162 case Format::eAstc12x12UnormBlock: return "Astc12x12UnormBlock";
33163 case Format::eAstc12x12SrgbBlock: return "Astc12x12SrgbBlock";
Lenny Komowebf33162016-08-26 14:10:08 -060033164 case Format::ePvrtc12BppUnormBlockIMG: return "Pvrtc12BppUnormBlockIMG";
33165 case Format::ePvrtc14BppUnormBlockIMG: return "Pvrtc14BppUnormBlockIMG";
33166 case Format::ePvrtc22BppUnormBlockIMG: return "Pvrtc22BppUnormBlockIMG";
33167 case Format::ePvrtc24BppUnormBlockIMG: return "Pvrtc24BppUnormBlockIMG";
33168 case Format::ePvrtc12BppSrgbBlockIMG: return "Pvrtc12BppSrgbBlockIMG";
33169 case Format::ePvrtc14BppSrgbBlockIMG: return "Pvrtc14BppSrgbBlockIMG";
33170 case Format::ePvrtc22BppSrgbBlockIMG: return "Pvrtc22BppSrgbBlockIMG";
33171 case Format::ePvrtc24BppSrgbBlockIMG: return "Pvrtc24BppSrgbBlockIMG";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033172 case Format::eG8B8G8R8422UnormKHR: return "G8B8G8R8422UnormKHR";
33173 case Format::eB8G8R8G8422UnormKHR: return "B8G8R8G8422UnormKHR";
33174 case Format::eG8B8R83Plane420UnormKHR: return "G8B8R83Plane420UnormKHR";
33175 case Format::eG8B8R82Plane420UnormKHR: return "G8B8R82Plane420UnormKHR";
33176 case Format::eG8B8R83Plane422UnormKHR: return "G8B8R83Plane422UnormKHR";
33177 case Format::eG8B8R82Plane422UnormKHR: return "G8B8R82Plane422UnormKHR";
33178 case Format::eG8B8R83Plane444UnormKHR: return "G8B8R83Plane444UnormKHR";
33179 case Format::eR10X6UnormPack16KHR: return "R10X6UnormPack16KHR";
33180 case Format::eR10X6G10X6Unorm2Pack16KHR: return "R10X6G10X6Unorm2Pack16KHR";
33181 case Format::eR10X6G10X6B10X6A10X6Unorm4Pack16KHR: return "R10X6G10X6B10X6A10X6Unorm4Pack16KHR";
33182 case Format::eG10X6B10X6G10X6R10X6422Unorm4Pack16KHR: return "G10X6B10X6G10X6R10X6422Unorm4Pack16KHR";
33183 case Format::eB10X6G10X6R10X6G10X6422Unorm4Pack16KHR: return "B10X6G10X6R10X6G10X6422Unorm4Pack16KHR";
33184 case Format::eG10X6B10X6R10X63Plane420Unorm3Pack16KHR: return "G10X6B10X6R10X63Plane420Unorm3Pack16KHR";
33185 case Format::eG10X6B10X6R10X62Plane420Unorm3Pack16KHR: return "G10X6B10X6R10X62Plane420Unorm3Pack16KHR";
33186 case Format::eG10X6B10X6R10X63Plane422Unorm3Pack16KHR: return "G10X6B10X6R10X63Plane422Unorm3Pack16KHR";
33187 case Format::eG10X6B10X6R10X62Plane422Unorm3Pack16KHR: return "G10X6B10X6R10X62Plane422Unorm3Pack16KHR";
33188 case Format::eG10X6B10X6R10X63Plane444Unorm3Pack16KHR: return "G10X6B10X6R10X63Plane444Unorm3Pack16KHR";
33189 case Format::eR12X4UnormPack16KHR: return "R12X4UnormPack16KHR";
33190 case Format::eR12X4G12X4Unorm2Pack16KHR: return "R12X4G12X4Unorm2Pack16KHR";
33191 case Format::eR12X4G12X4B12X4A12X4Unorm4Pack16KHR: return "R12X4G12X4B12X4A12X4Unorm4Pack16KHR";
33192 case Format::eG12X4B12X4G12X4R12X4422Unorm4Pack16KHR: return "G12X4B12X4G12X4R12X4422Unorm4Pack16KHR";
33193 case Format::eB12X4G12X4R12X4G12X4422Unorm4Pack16KHR: return "B12X4G12X4R12X4G12X4422Unorm4Pack16KHR";
33194 case Format::eG12X4B12X4R12X43Plane420Unorm3Pack16KHR: return "G12X4B12X4R12X43Plane420Unorm3Pack16KHR";
33195 case Format::eG12X4B12X4R12X42Plane420Unorm3Pack16KHR: return "G12X4B12X4R12X42Plane420Unorm3Pack16KHR";
33196 case Format::eG12X4B12X4R12X43Plane422Unorm3Pack16KHR: return "G12X4B12X4R12X43Plane422Unorm3Pack16KHR";
33197 case Format::eG12X4B12X4R12X42Plane422Unorm3Pack16KHR: return "G12X4B12X4R12X42Plane422Unorm3Pack16KHR";
33198 case Format::eG12X4B12X4R12X43Plane444Unorm3Pack16KHR: return "G12X4B12X4R12X43Plane444Unorm3Pack16KHR";
33199 case Format::eG16B16G16R16422UnormKHR: return "G16B16G16R16422UnormKHR";
33200 case Format::eB16G16R16G16422UnormKHR: return "B16G16R16G16422UnormKHR";
33201 case Format::eG16B16R163Plane420UnormKHR: return "G16B16R163Plane420UnormKHR";
33202 case Format::eG16B16R162Plane420UnormKHR: return "G16B16R162Plane420UnormKHR";
33203 case Format::eG16B16R163Plane422UnormKHR: return "G16B16R163Plane422UnormKHR";
33204 case Format::eG16B16R162Plane422UnormKHR: return "G16B16R162Plane422UnormKHR";
33205 case Format::eG16B16R163Plane444UnormKHR: return "G16B16R163Plane444UnormKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033206 default: return "invalid";
33207 }
33208 }
33209
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033210 VULKAN_HPP_INLINE std::string to_string(StructureType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033211 {
33212 switch (value)
33213 {
33214 case StructureType::eApplicationInfo: return "ApplicationInfo";
33215 case StructureType::eInstanceCreateInfo: return "InstanceCreateInfo";
33216 case StructureType::eDeviceQueueCreateInfo: return "DeviceQueueCreateInfo";
33217 case StructureType::eDeviceCreateInfo: return "DeviceCreateInfo";
33218 case StructureType::eSubmitInfo: return "SubmitInfo";
33219 case StructureType::eMemoryAllocateInfo: return "MemoryAllocateInfo";
33220 case StructureType::eMappedMemoryRange: return "MappedMemoryRange";
33221 case StructureType::eBindSparseInfo: return "BindSparseInfo";
33222 case StructureType::eFenceCreateInfo: return "FenceCreateInfo";
33223 case StructureType::eSemaphoreCreateInfo: return "SemaphoreCreateInfo";
33224 case StructureType::eEventCreateInfo: return "EventCreateInfo";
33225 case StructureType::eQueryPoolCreateInfo: return "QueryPoolCreateInfo";
33226 case StructureType::eBufferCreateInfo: return "BufferCreateInfo";
33227 case StructureType::eBufferViewCreateInfo: return "BufferViewCreateInfo";
33228 case StructureType::eImageCreateInfo: return "ImageCreateInfo";
33229 case StructureType::eImageViewCreateInfo: return "ImageViewCreateInfo";
33230 case StructureType::eShaderModuleCreateInfo: return "ShaderModuleCreateInfo";
33231 case StructureType::ePipelineCacheCreateInfo: return "PipelineCacheCreateInfo";
33232 case StructureType::ePipelineShaderStageCreateInfo: return "PipelineShaderStageCreateInfo";
33233 case StructureType::ePipelineVertexInputStateCreateInfo: return "PipelineVertexInputStateCreateInfo";
33234 case StructureType::ePipelineInputAssemblyStateCreateInfo: return "PipelineInputAssemblyStateCreateInfo";
33235 case StructureType::ePipelineTessellationStateCreateInfo: return "PipelineTessellationStateCreateInfo";
33236 case StructureType::ePipelineViewportStateCreateInfo: return "PipelineViewportStateCreateInfo";
33237 case StructureType::ePipelineRasterizationStateCreateInfo: return "PipelineRasterizationStateCreateInfo";
33238 case StructureType::ePipelineMultisampleStateCreateInfo: return "PipelineMultisampleStateCreateInfo";
33239 case StructureType::ePipelineDepthStencilStateCreateInfo: return "PipelineDepthStencilStateCreateInfo";
33240 case StructureType::ePipelineColorBlendStateCreateInfo: return "PipelineColorBlendStateCreateInfo";
33241 case StructureType::ePipelineDynamicStateCreateInfo: return "PipelineDynamicStateCreateInfo";
33242 case StructureType::eGraphicsPipelineCreateInfo: return "GraphicsPipelineCreateInfo";
33243 case StructureType::eComputePipelineCreateInfo: return "ComputePipelineCreateInfo";
33244 case StructureType::ePipelineLayoutCreateInfo: return "PipelineLayoutCreateInfo";
33245 case StructureType::eSamplerCreateInfo: return "SamplerCreateInfo";
33246 case StructureType::eDescriptorSetLayoutCreateInfo: return "DescriptorSetLayoutCreateInfo";
33247 case StructureType::eDescriptorPoolCreateInfo: return "DescriptorPoolCreateInfo";
33248 case StructureType::eDescriptorSetAllocateInfo: return "DescriptorSetAllocateInfo";
33249 case StructureType::eWriteDescriptorSet: return "WriteDescriptorSet";
33250 case StructureType::eCopyDescriptorSet: return "CopyDescriptorSet";
33251 case StructureType::eFramebufferCreateInfo: return "FramebufferCreateInfo";
33252 case StructureType::eRenderPassCreateInfo: return "RenderPassCreateInfo";
33253 case StructureType::eCommandPoolCreateInfo: return "CommandPoolCreateInfo";
33254 case StructureType::eCommandBufferAllocateInfo: return "CommandBufferAllocateInfo";
33255 case StructureType::eCommandBufferInheritanceInfo: return "CommandBufferInheritanceInfo";
33256 case StructureType::eCommandBufferBeginInfo: return "CommandBufferBeginInfo";
33257 case StructureType::eRenderPassBeginInfo: return "RenderPassBeginInfo";
33258 case StructureType::eBufferMemoryBarrier: return "BufferMemoryBarrier";
33259 case StructureType::eImageMemoryBarrier: return "ImageMemoryBarrier";
33260 case StructureType::eMemoryBarrier: return "MemoryBarrier";
33261 case StructureType::eLoaderInstanceCreateInfo: return "LoaderInstanceCreateInfo";
33262 case StructureType::eLoaderDeviceCreateInfo: return "LoaderDeviceCreateInfo";
33263 case StructureType::eSwapchainCreateInfoKHR: return "SwapchainCreateInfoKHR";
33264 case StructureType::ePresentInfoKHR: return "PresentInfoKHR";
33265 case StructureType::eDisplayModeCreateInfoKHR: return "DisplayModeCreateInfoKHR";
33266 case StructureType::eDisplaySurfaceCreateInfoKHR: return "DisplaySurfaceCreateInfoKHR";
33267 case StructureType::eDisplayPresentInfoKHR: return "DisplayPresentInfoKHR";
33268 case StructureType::eXlibSurfaceCreateInfoKHR: return "XlibSurfaceCreateInfoKHR";
33269 case StructureType::eXcbSurfaceCreateInfoKHR: return "XcbSurfaceCreateInfoKHR";
33270 case StructureType::eWaylandSurfaceCreateInfoKHR: return "WaylandSurfaceCreateInfoKHR";
33271 case StructureType::eMirSurfaceCreateInfoKHR: return "MirSurfaceCreateInfoKHR";
33272 case StructureType::eAndroidSurfaceCreateInfoKHR: return "AndroidSurfaceCreateInfoKHR";
33273 case StructureType::eWin32SurfaceCreateInfoKHR: return "Win32SurfaceCreateInfoKHR";
33274 case StructureType::eDebugReportCallbackCreateInfoEXT: return "DebugReportCallbackCreateInfoEXT";
33275 case StructureType::ePipelineRasterizationStateRasterizationOrderAMD: return "PipelineRasterizationStateRasterizationOrderAMD";
33276 case StructureType::eDebugMarkerObjectNameInfoEXT: return "DebugMarkerObjectNameInfoEXT";
33277 case StructureType::eDebugMarkerObjectTagInfoEXT: return "DebugMarkerObjectTagInfoEXT";
33278 case StructureType::eDebugMarkerMarkerInfoEXT: return "DebugMarkerMarkerInfoEXT";
33279 case StructureType::eDedicatedAllocationImageCreateInfoNV: return "DedicatedAllocationImageCreateInfoNV";
33280 case StructureType::eDedicatedAllocationBufferCreateInfoNV: return "DedicatedAllocationBufferCreateInfoNV";
33281 case StructureType::eDedicatedAllocationMemoryAllocateInfoNV: return "DedicatedAllocationMemoryAllocateInfoNV";
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060033282 case StructureType::eTextureLodGatherFormatPropertiesAMD: return "TextureLodGatherFormatPropertiesAMD";
Mark Young0f183a82017-02-28 09:58:04 -070033283 case StructureType::eRenderPassMultiviewCreateInfoKHX: return "RenderPassMultiviewCreateInfoKHX";
33284 case StructureType::ePhysicalDeviceMultiviewFeaturesKHX: return "PhysicalDeviceMultiviewFeaturesKHX";
33285 case StructureType::ePhysicalDeviceMultiviewPropertiesKHX: return "PhysicalDeviceMultiviewPropertiesKHX";
Lenny Komow6501c122016-08-31 15:03:49 -060033286 case StructureType::eExternalMemoryImageCreateInfoNV: return "ExternalMemoryImageCreateInfoNV";
33287 case StructureType::eExportMemoryAllocateInfoNV: return "ExportMemoryAllocateInfoNV";
33288 case StructureType::eImportMemoryWin32HandleInfoNV: return "ImportMemoryWin32HandleInfoNV";
33289 case StructureType::eExportMemoryWin32HandleInfoNV: return "ExportMemoryWin32HandleInfoNV";
33290 case StructureType::eWin32KeyedMutexAcquireReleaseInfoNV: return "Win32KeyedMutexAcquireReleaseInfoNV";
Mark Young39389872017-01-19 21:10:49 -070033291 case StructureType::ePhysicalDeviceFeatures2KHR: return "PhysicalDeviceFeatures2KHR";
33292 case StructureType::ePhysicalDeviceProperties2KHR: return "PhysicalDeviceProperties2KHR";
33293 case StructureType::eFormatProperties2KHR: return "FormatProperties2KHR";
33294 case StructureType::eImageFormatProperties2KHR: return "ImageFormatProperties2KHR";
33295 case StructureType::ePhysicalDeviceImageFormatInfo2KHR: return "PhysicalDeviceImageFormatInfo2KHR";
33296 case StructureType::eQueueFamilyProperties2KHR: return "QueueFamilyProperties2KHR";
33297 case StructureType::ePhysicalDeviceMemoryProperties2KHR: return "PhysicalDeviceMemoryProperties2KHR";
33298 case StructureType::eSparseImageFormatProperties2KHR: return "SparseImageFormatProperties2KHR";
33299 case StructureType::ePhysicalDeviceSparseImageFormatInfo2KHR: return "PhysicalDeviceSparseImageFormatInfo2KHR";
Mark Young0f183a82017-02-28 09:58:04 -070033300 case StructureType::eMemoryAllocateFlagsInfoKHX: return "MemoryAllocateFlagsInfoKHX";
Mark Young0f183a82017-02-28 09:58:04 -070033301 case StructureType::eDeviceGroupRenderPassBeginInfoKHX: return "DeviceGroupRenderPassBeginInfoKHX";
33302 case StructureType::eDeviceGroupCommandBufferBeginInfoKHX: return "DeviceGroupCommandBufferBeginInfoKHX";
33303 case StructureType::eDeviceGroupSubmitInfoKHX: return "DeviceGroupSubmitInfoKHX";
33304 case StructureType::eDeviceGroupBindSparseInfoKHX: return "DeviceGroupBindSparseInfoKHX";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033305 case StructureType::eAcquireNextImageInfoKHX: return "AcquireNextImageInfoKHX";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033306 case StructureType::eBindBufferMemoryDeviceGroupInfoKHX: return "BindBufferMemoryDeviceGroupInfoKHX";
33307 case StructureType::eBindImageMemoryDeviceGroupInfoKHX: return "BindImageMemoryDeviceGroupInfoKHX";
Mark Young0f183a82017-02-28 09:58:04 -070033308 case StructureType::eDeviceGroupPresentCapabilitiesKHX: return "DeviceGroupPresentCapabilitiesKHX";
33309 case StructureType::eImageSwapchainCreateInfoKHX: return "ImageSwapchainCreateInfoKHX";
33310 case StructureType::eBindImageMemorySwapchainInfoKHX: return "BindImageMemorySwapchainInfoKHX";
Mark Young0f183a82017-02-28 09:58:04 -070033311 case StructureType::eDeviceGroupPresentInfoKHX: return "DeviceGroupPresentInfoKHX";
33312 case StructureType::eDeviceGroupSwapchainCreateInfoKHX: return "DeviceGroupSwapchainCreateInfoKHX";
Lenny Komow68432d72016-09-29 14:16:59 -060033313 case StructureType::eValidationFlagsEXT: return "ValidationFlagsEXT";
Mark Young39389872017-01-19 21:10:49 -070033314 case StructureType::eViSurfaceCreateInfoNN: return "ViSurfaceCreateInfoNN";
Mark Young0f183a82017-02-28 09:58:04 -070033315 case StructureType::ePhysicalDeviceGroupPropertiesKHX: return "PhysicalDeviceGroupPropertiesKHX";
33316 case StructureType::eDeviceGroupDeviceCreateInfoKHX: return "DeviceGroupDeviceCreateInfoKHX";
Mark Youngabc2d6e2017-07-07 07:59:56 -060033317 case StructureType::ePhysicalDeviceExternalImageFormatInfoKHR: return "PhysicalDeviceExternalImageFormatInfoKHR";
33318 case StructureType::eExternalImageFormatPropertiesKHR: return "ExternalImageFormatPropertiesKHR";
33319 case StructureType::ePhysicalDeviceExternalBufferInfoKHR: return "PhysicalDeviceExternalBufferInfoKHR";
33320 case StructureType::eExternalBufferPropertiesKHR: return "ExternalBufferPropertiesKHR";
33321 case StructureType::ePhysicalDeviceIdPropertiesKHR: return "PhysicalDeviceIdPropertiesKHR";
33322 case StructureType::eExternalMemoryBufferCreateInfoKHR: return "ExternalMemoryBufferCreateInfoKHR";
33323 case StructureType::eExternalMemoryImageCreateInfoKHR: return "ExternalMemoryImageCreateInfoKHR";
33324 case StructureType::eExportMemoryAllocateInfoKHR: return "ExportMemoryAllocateInfoKHR";
33325 case StructureType::eImportMemoryWin32HandleInfoKHR: return "ImportMemoryWin32HandleInfoKHR";
33326 case StructureType::eExportMemoryWin32HandleInfoKHR: return "ExportMemoryWin32HandleInfoKHR";
33327 case StructureType::eMemoryWin32HandlePropertiesKHR: return "MemoryWin32HandlePropertiesKHR";
33328 case StructureType::eMemoryGetWin32HandleInfoKHR: return "MemoryGetWin32HandleInfoKHR";
33329 case StructureType::eImportMemoryFdInfoKHR: return "ImportMemoryFdInfoKHR";
33330 case StructureType::eMemoryFdPropertiesKHR: return "MemoryFdPropertiesKHR";
33331 case StructureType::eMemoryGetFdInfoKHR: return "MemoryGetFdInfoKHR";
33332 case StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR: return "Win32KeyedMutexAcquireReleaseInfoKHR";
33333 case StructureType::ePhysicalDeviceExternalSemaphoreInfoKHR: return "PhysicalDeviceExternalSemaphoreInfoKHR";
33334 case StructureType::eExternalSemaphorePropertiesKHR: return "ExternalSemaphorePropertiesKHR";
33335 case StructureType::eExportSemaphoreCreateInfoKHR: return "ExportSemaphoreCreateInfoKHR";
33336 case StructureType::eImportSemaphoreWin32HandleInfoKHR: return "ImportSemaphoreWin32HandleInfoKHR";
33337 case StructureType::eExportSemaphoreWin32HandleInfoKHR: return "ExportSemaphoreWin32HandleInfoKHR";
33338 case StructureType::eD3D12FenceSubmitInfoKHR: return "D3D12FenceSubmitInfoKHR";
33339 case StructureType::eSemaphoreGetWin32HandleInfoKHR: return "SemaphoreGetWin32HandleInfoKHR";
33340 case StructureType::eImportSemaphoreFdInfoKHR: return "ImportSemaphoreFdInfoKHR";
33341 case StructureType::eSemaphoreGetFdInfoKHR: return "SemaphoreGetFdInfoKHR";
Mark Young0f183a82017-02-28 09:58:04 -070033342 case StructureType::ePhysicalDevicePushDescriptorPropertiesKHR: return "PhysicalDevicePushDescriptorPropertiesKHR";
Mark Youngabc2d6e2017-07-07 07:59:56 -060033343 case StructureType::ePhysicalDevice16BitStorageFeaturesKHR: return "PhysicalDevice16BitStorageFeaturesKHR";
Mark Lobodzinski3289d762017-04-03 08:22:04 -060033344 case StructureType::ePresentRegionsKHR: return "PresentRegionsKHR";
Mark Young0f183a82017-02-28 09:58:04 -070033345 case StructureType::eDescriptorUpdateTemplateCreateInfoKHR: return "DescriptorUpdateTemplateCreateInfoKHR";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033346 case StructureType::eObjectTableCreateInfoNVX: return "ObjectTableCreateInfoNVX";
33347 case StructureType::eIndirectCommandsLayoutCreateInfoNVX: return "IndirectCommandsLayoutCreateInfoNVX";
33348 case StructureType::eCmdProcessCommandsInfoNVX: return "CmdProcessCommandsInfoNVX";
33349 case StructureType::eCmdReserveSpaceForCommandsInfoNVX: return "CmdReserveSpaceForCommandsInfoNVX";
33350 case StructureType::eDeviceGeneratedCommandsLimitsNVX: return "DeviceGeneratedCommandsLimitsNVX";
33351 case StructureType::eDeviceGeneratedCommandsFeaturesNVX: return "DeviceGeneratedCommandsFeaturesNVX";
Mark Young0f183a82017-02-28 09:58:04 -070033352 case StructureType::ePipelineViewportWScalingStateCreateInfoNV: return "PipelineViewportWScalingStateCreateInfoNV";
Mark Young39389872017-01-19 21:10:49 -070033353 case StructureType::eSurfaceCapabilities2EXT: return "SurfaceCapabilities2EXT";
33354 case StructureType::eDisplayPowerInfoEXT: return "DisplayPowerInfoEXT";
33355 case StructureType::eDeviceEventInfoEXT: return "DeviceEventInfoEXT";
33356 case StructureType::eDisplayEventInfoEXT: return "DisplayEventInfoEXT";
33357 case StructureType::eSwapchainCounterCreateInfoEXT: return "SwapchainCounterCreateInfoEXT";
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060033358 case StructureType::ePresentTimesInfoGOOGLE: return "PresentTimesInfoGOOGLE";
Mark Young0f183a82017-02-28 09:58:04 -070033359 case StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX: return "PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX";
33360 case StructureType::ePipelineViewportSwizzleStateCreateInfoNV: return "PipelineViewportSwizzleStateCreateInfoNV";
33361 case StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT: return "PhysicalDeviceDiscardRectanglePropertiesEXT";
33362 case StructureType::ePipelineDiscardRectangleStateCreateInfoEXT: return "PipelineDiscardRectangleStateCreateInfoEXT";
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060033363 case StructureType::eHdrMetadataEXT: return "HdrMetadataEXT";
Mark Lobodzinski54385432017-05-15 10:27:52 -060033364 case StructureType::eSharedPresentSurfaceCapabilitiesKHR: return "SharedPresentSurfaceCapabilitiesKHR";
Mark Youngabc2d6e2017-07-07 07:59:56 -060033365 case StructureType::ePhysicalDeviceExternalFenceInfoKHR: return "PhysicalDeviceExternalFenceInfoKHR";
33366 case StructureType::eExternalFencePropertiesKHR: return "ExternalFencePropertiesKHR";
33367 case StructureType::eExportFenceCreateInfoKHR: return "ExportFenceCreateInfoKHR";
33368 case StructureType::eImportFenceWin32HandleInfoKHR: return "ImportFenceWin32HandleInfoKHR";
33369 case StructureType::eExportFenceWin32HandleInfoKHR: return "ExportFenceWin32HandleInfoKHR";
33370 case StructureType::eFenceGetWin32HandleInfoKHR: return "FenceGetWin32HandleInfoKHR";
33371 case StructureType::eImportFenceFdInfoKHR: return "ImportFenceFdInfoKHR";
33372 case StructureType::eFenceGetFdInfoKHR: return "FenceGetFdInfoKHR";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033373 case StructureType::ePhysicalDevicePointClippingPropertiesKHR: return "PhysicalDevicePointClippingPropertiesKHR";
33374 case StructureType::eRenderPassInputAttachmentAspectCreateInfoKHR: return "RenderPassInputAttachmentAspectCreateInfoKHR";
33375 case StructureType::eImageViewUsageCreateInfoKHR: return "ImageViewUsageCreateInfoKHR";
33376 case StructureType::ePipelineTessellationDomainOriginStateCreateInfoKHR: return "PipelineTessellationDomainOriginStateCreateInfoKHR";
Mark Lobodzinski54385432017-05-15 10:27:52 -060033377 case StructureType::ePhysicalDeviceSurfaceInfo2KHR: return "PhysicalDeviceSurfaceInfo2KHR";
33378 case StructureType::eSurfaceCapabilities2KHR: return "SurfaceCapabilities2KHR";
33379 case StructureType::eSurfaceFormat2KHR: return "SurfaceFormat2KHR";
Mark Youngabc2d6e2017-07-07 07:59:56 -060033380 case StructureType::ePhysicalDeviceVariablePointerFeaturesKHR: return "PhysicalDeviceVariablePointerFeaturesKHR";
Mark Young0f183a82017-02-28 09:58:04 -070033381 case StructureType::eIosSurfaceCreateInfoMVK: return "IosSurfaceCreateInfoMVK";
33382 case StructureType::eMacosSurfaceCreateInfoMVK: return "MacosSurfaceCreateInfoMVK";
Mark Youngabc2d6e2017-07-07 07:59:56 -060033383 case StructureType::eMemoryDedicatedRequirementsKHR: return "MemoryDedicatedRequirementsKHR";
33384 case StructureType::eMemoryDedicatedAllocateInfoKHR: return "MemoryDedicatedAllocateInfoKHR";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060033385 case StructureType::ePhysicalDeviceSamplerFilterMinmaxPropertiesEXT: return "PhysicalDeviceSamplerFilterMinmaxPropertiesEXT";
33386 case StructureType::eSamplerReductionModeCreateInfoEXT: return "SamplerReductionModeCreateInfoEXT";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033387 case StructureType::eSampleLocationsInfoEXT: return "SampleLocationsInfoEXT";
33388 case StructureType::eRenderPassSampleLocationsBeginInfoEXT: return "RenderPassSampleLocationsBeginInfoEXT";
33389 case StructureType::ePipelineSampleLocationsStateCreateInfoEXT: return "PipelineSampleLocationsStateCreateInfoEXT";
33390 case StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT: return "PhysicalDeviceSampleLocationsPropertiesEXT";
33391 case StructureType::eMultisamplePropertiesEXT: return "MultisamplePropertiesEXT";
Mark Youngabc2d6e2017-07-07 07:59:56 -060033392 case StructureType::eBufferMemoryRequirementsInfo2KHR: return "BufferMemoryRequirementsInfo2KHR";
33393 case StructureType::eImageMemoryRequirementsInfo2KHR: return "ImageMemoryRequirementsInfo2KHR";
33394 case StructureType::eImageSparseMemoryRequirementsInfo2KHR: return "ImageSparseMemoryRequirementsInfo2KHR";
33395 case StructureType::eMemoryRequirements2KHR: return "MemoryRequirements2KHR";
33396 case StructureType::eSparseImageMemoryRequirements2KHR: return "SparseImageMemoryRequirements2KHR";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033397 case StructureType::eImageFormatListCreateInfoKHR: return "ImageFormatListCreateInfoKHR";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060033398 case StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT: return "PhysicalDeviceBlendOperationAdvancedFeaturesEXT";
33399 case StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT: return "PhysicalDeviceBlendOperationAdvancedPropertiesEXT";
33400 case StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT: return "PipelineColorBlendAdvancedStateCreateInfoEXT";
33401 case StructureType::ePipelineCoverageToColorStateCreateInfoNV: return "PipelineCoverageToColorStateCreateInfoNV";
33402 case StructureType::ePipelineCoverageModulationStateCreateInfoNV: return "PipelineCoverageModulationStateCreateInfoNV";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033403 case StructureType::eSamplerYcbcrConversionCreateInfoKHR: return "SamplerYcbcrConversionCreateInfoKHR";
33404 case StructureType::eSamplerYcbcrConversionInfoKHR: return "SamplerYcbcrConversionInfoKHR";
33405 case StructureType::eBindImagePlaneMemoryInfoKHR: return "BindImagePlaneMemoryInfoKHR";
33406 case StructureType::eImagePlaneMemoryRequirementsInfoKHR: return "ImagePlaneMemoryRequirementsInfoKHR";
33407 case StructureType::ePhysicalDeviceSamplerYcbcrConversionFeaturesKHR: return "PhysicalDeviceSamplerYcbcrConversionFeaturesKHR";
33408 case StructureType::eSamplerYcbcrConversionImageFormatPropertiesKHR: return "SamplerYcbcrConversionImageFormatPropertiesKHR";
33409 case StructureType::eBindBufferMemoryInfoKHR: return "BindBufferMemoryInfoKHR";
33410 case StructureType::eBindImageMemoryInfoKHR: return "BindImageMemoryInfoKHR";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033411 case StructureType::eValidationCacheCreateInfoEXT: return "ValidationCacheCreateInfoEXT";
33412 case StructureType::eShaderModuleValidationCacheCreateInfoEXT: return "ShaderModuleValidationCacheCreateInfoEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033413 default: return "invalid";
33414 }
33415 }
33416
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033417 VULKAN_HPP_INLINE std::string to_string(SubpassContents value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033418 {
33419 switch (value)
33420 {
33421 case SubpassContents::eInline: return "Inline";
33422 case SubpassContents::eSecondaryCommandBuffers: return "SecondaryCommandBuffers";
33423 default: return "invalid";
33424 }
33425 }
33426
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033427 VULKAN_HPP_INLINE std::string to_string(DynamicState value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033428 {
33429 switch (value)
33430 {
33431 case DynamicState::eViewport: return "Viewport";
33432 case DynamicState::eScissor: return "Scissor";
33433 case DynamicState::eLineWidth: return "LineWidth";
33434 case DynamicState::eDepthBias: return "DepthBias";
33435 case DynamicState::eBlendConstants: return "BlendConstants";
33436 case DynamicState::eDepthBounds: return "DepthBounds";
33437 case DynamicState::eStencilCompareMask: return "StencilCompareMask";
33438 case DynamicState::eStencilWriteMask: return "StencilWriteMask";
33439 case DynamicState::eStencilReference: return "StencilReference";
Mark Young0f183a82017-02-28 09:58:04 -070033440 case DynamicState::eViewportWScalingNV: return "ViewportWScalingNV";
33441 case DynamicState::eDiscardRectangleEXT: return "DiscardRectangleEXT";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033442 case DynamicState::eSampleLocationsEXT: return "SampleLocationsEXT";
Mark Young0f183a82017-02-28 09:58:04 -070033443 default: return "invalid";
33444 }
33445 }
33446
33447 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateTypeKHR value)
33448 {
33449 switch (value)
33450 {
33451 case DescriptorUpdateTemplateTypeKHR::eDescriptorSet: return "DescriptorSet";
33452 case DescriptorUpdateTemplateTypeKHR::ePushDescriptors: return "PushDescriptors";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033453 default: return "invalid";
33454 }
33455 }
33456
Mark Lobodzinski54385432017-05-15 10:27:52 -060033457 VULKAN_HPP_INLINE std::string to_string(ObjectType value)
33458 {
33459 switch (value)
33460 {
33461 case ObjectType::eUnknown: return "Unknown";
33462 case ObjectType::eInstance: return "Instance";
33463 case ObjectType::ePhysicalDevice: return "PhysicalDevice";
33464 case ObjectType::eDevice: return "Device";
33465 case ObjectType::eQueue: return "Queue";
33466 case ObjectType::eSemaphore: return "Semaphore";
33467 case ObjectType::eCommandBuffer: return "CommandBuffer";
33468 case ObjectType::eFence: return "Fence";
33469 case ObjectType::eDeviceMemory: return "DeviceMemory";
33470 case ObjectType::eBuffer: return "Buffer";
33471 case ObjectType::eImage: return "Image";
33472 case ObjectType::eEvent: return "Event";
33473 case ObjectType::eQueryPool: return "QueryPool";
33474 case ObjectType::eBufferView: return "BufferView";
33475 case ObjectType::eImageView: return "ImageView";
33476 case ObjectType::eShaderModule: return "ShaderModule";
33477 case ObjectType::ePipelineCache: return "PipelineCache";
33478 case ObjectType::ePipelineLayout: return "PipelineLayout";
33479 case ObjectType::eRenderPass: return "RenderPass";
33480 case ObjectType::ePipeline: return "Pipeline";
33481 case ObjectType::eDescriptorSetLayout: return "DescriptorSetLayout";
33482 case ObjectType::eSampler: return "Sampler";
33483 case ObjectType::eDescriptorPool: return "DescriptorPool";
33484 case ObjectType::eDescriptorSet: return "DescriptorSet";
33485 case ObjectType::eFramebuffer: return "Framebuffer";
33486 case ObjectType::eCommandPool: return "CommandPool";
33487 case ObjectType::eSurfaceKHR: return "SurfaceKHR";
33488 case ObjectType::eSwapchainKHR: return "SwapchainKHR";
33489 case ObjectType::eDisplayKHR: return "DisplayKHR";
33490 case ObjectType::eDisplayModeKHR: return "DisplayModeKHR";
33491 case ObjectType::eDebugReportCallbackEXT: return "DebugReportCallbackEXT";
33492 case ObjectType::eDescriptorUpdateTemplateKHR: return "DescriptorUpdateTemplateKHR";
33493 case ObjectType::eObjectTableNVX: return "ObjectTableNVX";
33494 case ObjectType::eIndirectCommandsLayoutNVX: return "IndirectCommandsLayoutNVX";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033495 case ObjectType::eSamplerYcbcrConversionKHR: return "SamplerYcbcrConversionKHR";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033496 case ObjectType::eValidationCacheEXT: return "ValidationCacheEXT";
Mark Lobodzinski54385432017-05-15 10:27:52 -060033497 default: return "invalid";
33498 }
33499 }
33500
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033501 VULKAN_HPP_INLINE std::string to_string(QueueFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033502 {
33503 switch (value)
33504 {
33505 case QueueFlagBits::eGraphics: return "Graphics";
33506 case QueueFlagBits::eCompute: return "Compute";
33507 case QueueFlagBits::eTransfer: return "Transfer";
33508 case QueueFlagBits::eSparseBinding: return "SparseBinding";
33509 default: return "invalid";
33510 }
33511 }
33512
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033513 VULKAN_HPP_INLINE std::string to_string(QueueFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033514 {
33515 if (!value) return "{}";
33516 std::string result;
33517 if (value & QueueFlagBits::eGraphics) result += "Graphics | ";
33518 if (value & QueueFlagBits::eCompute) result += "Compute | ";
33519 if (value & QueueFlagBits::eTransfer) result += "Transfer | ";
33520 if (value & QueueFlagBits::eSparseBinding) result += "SparseBinding | ";
33521 return "{" + result.substr(0, result.size() - 3) + "}";
33522 }
33523
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033524 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033525 {
33526 switch (value)
33527 {
33528 case MemoryPropertyFlagBits::eDeviceLocal: return "DeviceLocal";
33529 case MemoryPropertyFlagBits::eHostVisible: return "HostVisible";
33530 case MemoryPropertyFlagBits::eHostCoherent: return "HostCoherent";
33531 case MemoryPropertyFlagBits::eHostCached: return "HostCached";
33532 case MemoryPropertyFlagBits::eLazilyAllocated: return "LazilyAllocated";
33533 default: return "invalid";
33534 }
33535 }
33536
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033537 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033538 {
33539 if (!value) return "{}";
33540 std::string result;
33541 if (value & MemoryPropertyFlagBits::eDeviceLocal) result += "DeviceLocal | ";
33542 if (value & MemoryPropertyFlagBits::eHostVisible) result += "HostVisible | ";
33543 if (value & MemoryPropertyFlagBits::eHostCoherent) result += "HostCoherent | ";
33544 if (value & MemoryPropertyFlagBits::eHostCached) result += "HostCached | ";
33545 if (value & MemoryPropertyFlagBits::eLazilyAllocated) result += "LazilyAllocated | ";
33546 return "{" + result.substr(0, result.size() - 3) + "}";
33547 }
33548
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033549 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033550 {
33551 switch (value)
33552 {
33553 case MemoryHeapFlagBits::eDeviceLocal: return "DeviceLocal";
Mark Young0f183a82017-02-28 09:58:04 -070033554 case MemoryHeapFlagBits::eMultiInstanceKHX: return "MultiInstanceKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033555 default: return "invalid";
33556 }
33557 }
33558
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033559 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033560 {
33561 if (!value) return "{}";
33562 std::string result;
33563 if (value & MemoryHeapFlagBits::eDeviceLocal) result += "DeviceLocal | ";
Mark Young0f183a82017-02-28 09:58:04 -070033564 if (value & MemoryHeapFlagBits::eMultiInstanceKHX) result += "MultiInstanceKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033565 return "{" + result.substr(0, result.size() - 3) + "}";
33566 }
33567
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033568 VULKAN_HPP_INLINE std::string to_string(AccessFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033569 {
33570 switch (value)
33571 {
33572 case AccessFlagBits::eIndirectCommandRead: return "IndirectCommandRead";
33573 case AccessFlagBits::eIndexRead: return "IndexRead";
33574 case AccessFlagBits::eVertexAttributeRead: return "VertexAttributeRead";
33575 case AccessFlagBits::eUniformRead: return "UniformRead";
33576 case AccessFlagBits::eInputAttachmentRead: return "InputAttachmentRead";
33577 case AccessFlagBits::eShaderRead: return "ShaderRead";
33578 case AccessFlagBits::eShaderWrite: return "ShaderWrite";
33579 case AccessFlagBits::eColorAttachmentRead: return "ColorAttachmentRead";
33580 case AccessFlagBits::eColorAttachmentWrite: return "ColorAttachmentWrite";
33581 case AccessFlagBits::eDepthStencilAttachmentRead: return "DepthStencilAttachmentRead";
33582 case AccessFlagBits::eDepthStencilAttachmentWrite: return "DepthStencilAttachmentWrite";
33583 case AccessFlagBits::eTransferRead: return "TransferRead";
33584 case AccessFlagBits::eTransferWrite: return "TransferWrite";
33585 case AccessFlagBits::eHostRead: return "HostRead";
33586 case AccessFlagBits::eHostWrite: return "HostWrite";
33587 case AccessFlagBits::eMemoryRead: return "MemoryRead";
33588 case AccessFlagBits::eMemoryWrite: return "MemoryWrite";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033589 case AccessFlagBits::eCommandProcessReadNVX: return "CommandProcessReadNVX";
33590 case AccessFlagBits::eCommandProcessWriteNVX: return "CommandProcessWriteNVX";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060033591 case AccessFlagBits::eColorAttachmentReadNoncoherentEXT: return "ColorAttachmentReadNoncoherentEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033592 default: return "invalid";
33593 }
33594 }
33595
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033596 VULKAN_HPP_INLINE std::string to_string(AccessFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033597 {
33598 if (!value) return "{}";
33599 std::string result;
33600 if (value & AccessFlagBits::eIndirectCommandRead) result += "IndirectCommandRead | ";
33601 if (value & AccessFlagBits::eIndexRead) result += "IndexRead | ";
33602 if (value & AccessFlagBits::eVertexAttributeRead) result += "VertexAttributeRead | ";
33603 if (value & AccessFlagBits::eUniformRead) result += "UniformRead | ";
33604 if (value & AccessFlagBits::eInputAttachmentRead) result += "InputAttachmentRead | ";
33605 if (value & AccessFlagBits::eShaderRead) result += "ShaderRead | ";
33606 if (value & AccessFlagBits::eShaderWrite) result += "ShaderWrite | ";
33607 if (value & AccessFlagBits::eColorAttachmentRead) result += "ColorAttachmentRead | ";
33608 if (value & AccessFlagBits::eColorAttachmentWrite) result += "ColorAttachmentWrite | ";
33609 if (value & AccessFlagBits::eDepthStencilAttachmentRead) result += "DepthStencilAttachmentRead | ";
33610 if (value & AccessFlagBits::eDepthStencilAttachmentWrite) result += "DepthStencilAttachmentWrite | ";
33611 if (value & AccessFlagBits::eTransferRead) result += "TransferRead | ";
33612 if (value & AccessFlagBits::eTransferWrite) result += "TransferWrite | ";
33613 if (value & AccessFlagBits::eHostRead) result += "HostRead | ";
33614 if (value & AccessFlagBits::eHostWrite) result += "HostWrite | ";
33615 if (value & AccessFlagBits::eMemoryRead) result += "MemoryRead | ";
33616 if (value & AccessFlagBits::eMemoryWrite) result += "MemoryWrite | ";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033617 if (value & AccessFlagBits::eCommandProcessReadNVX) result += "CommandProcessReadNVX | ";
33618 if (value & AccessFlagBits::eCommandProcessWriteNVX) result += "CommandProcessWriteNVX | ";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060033619 if (value & AccessFlagBits::eColorAttachmentReadNoncoherentEXT) result += "ColorAttachmentReadNoncoherentEXT | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033620 return "{" + result.substr(0, result.size() - 3) + "}";
33621 }
33622
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033623 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033624 {
33625 switch (value)
33626 {
33627 case BufferUsageFlagBits::eTransferSrc: return "TransferSrc";
33628 case BufferUsageFlagBits::eTransferDst: return "TransferDst";
33629 case BufferUsageFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
33630 case BufferUsageFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
33631 case BufferUsageFlagBits::eUniformBuffer: return "UniformBuffer";
33632 case BufferUsageFlagBits::eStorageBuffer: return "StorageBuffer";
33633 case BufferUsageFlagBits::eIndexBuffer: return "IndexBuffer";
33634 case BufferUsageFlagBits::eVertexBuffer: return "VertexBuffer";
33635 case BufferUsageFlagBits::eIndirectBuffer: return "IndirectBuffer";
33636 default: return "invalid";
33637 }
33638 }
33639
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033640 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033641 {
33642 if (!value) return "{}";
33643 std::string result;
33644 if (value & BufferUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
33645 if (value & BufferUsageFlagBits::eTransferDst) result += "TransferDst | ";
33646 if (value & BufferUsageFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
33647 if (value & BufferUsageFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
33648 if (value & BufferUsageFlagBits::eUniformBuffer) result += "UniformBuffer | ";
33649 if (value & BufferUsageFlagBits::eStorageBuffer) result += "StorageBuffer | ";
33650 if (value & BufferUsageFlagBits::eIndexBuffer) result += "IndexBuffer | ";
33651 if (value & BufferUsageFlagBits::eVertexBuffer) result += "VertexBuffer | ";
33652 if (value & BufferUsageFlagBits::eIndirectBuffer) result += "IndirectBuffer | ";
33653 return "{" + result.substr(0, result.size() - 3) + "}";
33654 }
33655
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033656 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033657 {
33658 switch (value)
33659 {
33660 case BufferCreateFlagBits::eSparseBinding: return "SparseBinding";
33661 case BufferCreateFlagBits::eSparseResidency: return "SparseResidency";
33662 case BufferCreateFlagBits::eSparseAliased: return "SparseAliased";
33663 default: return "invalid";
33664 }
33665 }
33666
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033667 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033668 {
33669 if (!value) return "{}";
33670 std::string result;
33671 if (value & BufferCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
33672 if (value & BufferCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
33673 if (value & BufferCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
33674 return "{" + result.substr(0, result.size() - 3) + "}";
33675 }
33676
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033677 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033678 {
33679 switch (value)
33680 {
33681 case ShaderStageFlagBits::eVertex: return "Vertex";
33682 case ShaderStageFlagBits::eTessellationControl: return "TessellationControl";
33683 case ShaderStageFlagBits::eTessellationEvaluation: return "TessellationEvaluation";
33684 case ShaderStageFlagBits::eGeometry: return "Geometry";
33685 case ShaderStageFlagBits::eFragment: return "Fragment";
33686 case ShaderStageFlagBits::eCompute: return "Compute";
33687 case ShaderStageFlagBits::eAllGraphics: return "AllGraphics";
33688 case ShaderStageFlagBits::eAll: return "All";
33689 default: return "invalid";
33690 }
33691 }
33692
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033693 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033694 {
33695 if (!value) return "{}";
33696 std::string result;
33697 if (value & ShaderStageFlagBits::eVertex) result += "Vertex | ";
33698 if (value & ShaderStageFlagBits::eTessellationControl) result += "TessellationControl | ";
33699 if (value & ShaderStageFlagBits::eTessellationEvaluation) result += "TessellationEvaluation | ";
33700 if (value & ShaderStageFlagBits::eGeometry) result += "Geometry | ";
33701 if (value & ShaderStageFlagBits::eFragment) result += "Fragment | ";
33702 if (value & ShaderStageFlagBits::eCompute) result += "Compute | ";
33703 if (value & ShaderStageFlagBits::eAllGraphics) result += "AllGraphics | ";
33704 if (value & ShaderStageFlagBits::eAll) result += "All | ";
33705 return "{" + result.substr(0, result.size() - 3) + "}";
33706 }
33707
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033708 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033709 {
33710 switch (value)
33711 {
33712 case ImageUsageFlagBits::eTransferSrc: return "TransferSrc";
33713 case ImageUsageFlagBits::eTransferDst: return "TransferDst";
33714 case ImageUsageFlagBits::eSampled: return "Sampled";
33715 case ImageUsageFlagBits::eStorage: return "Storage";
33716 case ImageUsageFlagBits::eColorAttachment: return "ColorAttachment";
33717 case ImageUsageFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
33718 case ImageUsageFlagBits::eTransientAttachment: return "TransientAttachment";
33719 case ImageUsageFlagBits::eInputAttachment: return "InputAttachment";
33720 default: return "invalid";
33721 }
33722 }
33723
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033724 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033725 {
33726 if (!value) return "{}";
33727 std::string result;
33728 if (value & ImageUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
33729 if (value & ImageUsageFlagBits::eTransferDst) result += "TransferDst | ";
33730 if (value & ImageUsageFlagBits::eSampled) result += "Sampled | ";
33731 if (value & ImageUsageFlagBits::eStorage) result += "Storage | ";
33732 if (value & ImageUsageFlagBits::eColorAttachment) result += "ColorAttachment | ";
33733 if (value & ImageUsageFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
33734 if (value & ImageUsageFlagBits::eTransientAttachment) result += "TransientAttachment | ";
33735 if (value & ImageUsageFlagBits::eInputAttachment) result += "InputAttachment | ";
33736 return "{" + result.substr(0, result.size() - 3) + "}";
33737 }
33738
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033739 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033740 {
33741 switch (value)
33742 {
33743 case ImageCreateFlagBits::eSparseBinding: return "SparseBinding";
33744 case ImageCreateFlagBits::eSparseResidency: return "SparseResidency";
33745 case ImageCreateFlagBits::eSparseAliased: return "SparseAliased";
33746 case ImageCreateFlagBits::eMutableFormat: return "MutableFormat";
33747 case ImageCreateFlagBits::eCubeCompatible: return "CubeCompatible";
Mark Young0f183a82017-02-28 09:58:04 -070033748 case ImageCreateFlagBits::eBindSfrKHX: return "BindSfrKHX";
Mark Young39389872017-01-19 21:10:49 -070033749 case ImageCreateFlagBits::e2DArrayCompatibleKHR: return "2DArrayCompatibleKHR";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033750 case ImageCreateFlagBits::eBlockTexelViewCompatibleKHR: return "BlockTexelViewCompatibleKHR";
33751 case ImageCreateFlagBits::eExtendedUsageKHR: return "ExtendedUsageKHR";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033752 case ImageCreateFlagBits::eSampleLocationsCompatibleDepthEXT: return "SampleLocationsCompatibleDepthEXT";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033753 case ImageCreateFlagBits::eDisjointKHR: return "DisjointKHR";
33754 case ImageCreateFlagBits::eAliasKHR: return "AliasKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033755 default: return "invalid";
33756 }
33757 }
33758
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033759 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033760 {
33761 if (!value) return "{}";
33762 std::string result;
33763 if (value & ImageCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
33764 if (value & ImageCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
33765 if (value & ImageCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
33766 if (value & ImageCreateFlagBits::eMutableFormat) result += "MutableFormat | ";
33767 if (value & ImageCreateFlagBits::eCubeCompatible) result += "CubeCompatible | ";
Mark Young0f183a82017-02-28 09:58:04 -070033768 if (value & ImageCreateFlagBits::eBindSfrKHX) result += "BindSfrKHX | ";
Mark Young39389872017-01-19 21:10:49 -070033769 if (value & ImageCreateFlagBits::e2DArrayCompatibleKHR) result += "2DArrayCompatibleKHR | ";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033770 if (value & ImageCreateFlagBits::eBlockTexelViewCompatibleKHR) result += "BlockTexelViewCompatibleKHR | ";
33771 if (value & ImageCreateFlagBits::eExtendedUsageKHR) result += "ExtendedUsageKHR | ";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033772 if (value & ImageCreateFlagBits::eSampleLocationsCompatibleDepthEXT) result += "SampleLocationsCompatibleDepthEXT | ";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033773 if (value & ImageCreateFlagBits::eDisjointKHR) result += "DisjointKHR | ";
33774 if (value & ImageCreateFlagBits::eAliasKHR) result += "AliasKHR | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033775 return "{" + result.substr(0, result.size() - 3) + "}";
33776 }
33777
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033778 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033779 {
33780 switch (value)
33781 {
33782 case PipelineCreateFlagBits::eDisableOptimization: return "DisableOptimization";
33783 case PipelineCreateFlagBits::eAllowDerivatives: return "AllowDerivatives";
33784 case PipelineCreateFlagBits::eDerivative: return "Derivative";
Mark Young0f183a82017-02-28 09:58:04 -070033785 case PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX: return "ViewIndexFromDeviceIndexKHX";
33786 case PipelineCreateFlagBits::eDispatchBaseKHX: return "DispatchBaseKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033787 default: return "invalid";
33788 }
33789 }
33790
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033791 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033792 {
33793 if (!value) return "{}";
33794 std::string result;
33795 if (value & PipelineCreateFlagBits::eDisableOptimization) result += "DisableOptimization | ";
33796 if (value & PipelineCreateFlagBits::eAllowDerivatives) result += "AllowDerivatives | ";
33797 if (value & PipelineCreateFlagBits::eDerivative) result += "Derivative | ";
Mark Young0f183a82017-02-28 09:58:04 -070033798 if (value & PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX) result += "ViewIndexFromDeviceIndexKHX | ";
33799 if (value & PipelineCreateFlagBits::eDispatchBaseKHX) result += "DispatchBaseKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033800 return "{" + result.substr(0, result.size() - 3) + "}";
33801 }
33802
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033803 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033804 {
33805 switch (value)
33806 {
33807 case ColorComponentFlagBits::eR: return "R";
33808 case ColorComponentFlagBits::eG: return "G";
33809 case ColorComponentFlagBits::eB: return "B";
33810 case ColorComponentFlagBits::eA: return "A";
33811 default: return "invalid";
33812 }
33813 }
33814
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033815 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033816 {
33817 if (!value) return "{}";
33818 std::string result;
33819 if (value & ColorComponentFlagBits::eR) result += "R | ";
33820 if (value & ColorComponentFlagBits::eG) result += "G | ";
33821 if (value & ColorComponentFlagBits::eB) result += "B | ";
33822 if (value & ColorComponentFlagBits::eA) result += "A | ";
33823 return "{" + result.substr(0, result.size() - 3) + "}";
33824 }
33825
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033826 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033827 {
33828 switch (value)
33829 {
33830 case FenceCreateFlagBits::eSignaled: return "Signaled";
33831 default: return "invalid";
33832 }
33833 }
33834
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033835 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033836 {
33837 if (!value) return "{}";
33838 std::string result;
33839 if (value & FenceCreateFlagBits::eSignaled) result += "Signaled | ";
33840 return "{" + result.substr(0, result.size() - 3) + "}";
33841 }
33842
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033843 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033844 {
33845 switch (value)
33846 {
33847 case FormatFeatureFlagBits::eSampledImage: return "SampledImage";
33848 case FormatFeatureFlagBits::eStorageImage: return "StorageImage";
33849 case FormatFeatureFlagBits::eStorageImageAtomic: return "StorageImageAtomic";
33850 case FormatFeatureFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
33851 case FormatFeatureFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
33852 case FormatFeatureFlagBits::eStorageTexelBufferAtomic: return "StorageTexelBufferAtomic";
33853 case FormatFeatureFlagBits::eVertexBuffer: return "VertexBuffer";
33854 case FormatFeatureFlagBits::eColorAttachment: return "ColorAttachment";
33855 case FormatFeatureFlagBits::eColorAttachmentBlend: return "ColorAttachmentBlend";
33856 case FormatFeatureFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
33857 case FormatFeatureFlagBits::eBlitSrc: return "BlitSrc";
33858 case FormatFeatureFlagBits::eBlitDst: return "BlitDst";
33859 case FormatFeatureFlagBits::eSampledImageFilterLinear: return "SampledImageFilterLinear";
33860 case FormatFeatureFlagBits::eSampledImageFilterCubicIMG: return "SampledImageFilterCubicIMG";
Mark Young39389872017-01-19 21:10:49 -070033861 case FormatFeatureFlagBits::eTransferSrcKHR: return "TransferSrcKHR";
33862 case FormatFeatureFlagBits::eTransferDstKHR: return "TransferDstKHR";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060033863 case FormatFeatureFlagBits::eSampledImageFilterMinmaxEXT: return "SampledImageFilterMinmaxEXT";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033864 case FormatFeatureFlagBits::eMidpointChromaSamplesKHR: return "MidpointChromaSamplesKHR";
33865 case FormatFeatureFlagBits::eSampledImageYcbcrConversionLinearFilterKHR: return "SampledImageYcbcrConversionLinearFilterKHR";
33866 case FormatFeatureFlagBits::eSampledImageYcbcrConversionSeparateReconstructionFilterKHR: return "SampledImageYcbcrConversionSeparateReconstructionFilterKHR";
33867 case FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitKHR: return "SampledImageYcbcrConversionChromaReconstructionExplicitKHR";
33868 case FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR: return "SampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR";
33869 case FormatFeatureFlagBits::eDisjointKHR: return "DisjointKHR";
33870 case FormatFeatureFlagBits::eCositedChromaSamplesKHR: return "CositedChromaSamplesKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033871 default: return "invalid";
33872 }
33873 }
33874
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033875 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033876 {
33877 if (!value) return "{}";
33878 std::string result;
33879 if (value & FormatFeatureFlagBits::eSampledImage) result += "SampledImage | ";
33880 if (value & FormatFeatureFlagBits::eStorageImage) result += "StorageImage | ";
33881 if (value & FormatFeatureFlagBits::eStorageImageAtomic) result += "StorageImageAtomic | ";
33882 if (value & FormatFeatureFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
33883 if (value & FormatFeatureFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
33884 if (value & FormatFeatureFlagBits::eStorageTexelBufferAtomic) result += "StorageTexelBufferAtomic | ";
33885 if (value & FormatFeatureFlagBits::eVertexBuffer) result += "VertexBuffer | ";
33886 if (value & FormatFeatureFlagBits::eColorAttachment) result += "ColorAttachment | ";
33887 if (value & FormatFeatureFlagBits::eColorAttachmentBlend) result += "ColorAttachmentBlend | ";
33888 if (value & FormatFeatureFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
33889 if (value & FormatFeatureFlagBits::eBlitSrc) result += "BlitSrc | ";
33890 if (value & FormatFeatureFlagBits::eBlitDst) result += "BlitDst | ";
33891 if (value & FormatFeatureFlagBits::eSampledImageFilterLinear) result += "SampledImageFilterLinear | ";
33892 if (value & FormatFeatureFlagBits::eSampledImageFilterCubicIMG) result += "SampledImageFilterCubicIMG | ";
Mark Young39389872017-01-19 21:10:49 -070033893 if (value & FormatFeatureFlagBits::eTransferSrcKHR) result += "TransferSrcKHR | ";
33894 if (value & FormatFeatureFlagBits::eTransferDstKHR) result += "TransferDstKHR | ";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060033895 if (value & FormatFeatureFlagBits::eSampledImageFilterMinmaxEXT) result += "SampledImageFilterMinmaxEXT | ";
Lenny Komowb79f04a2017-09-18 17:07:00 -060033896 if (value & FormatFeatureFlagBits::eMidpointChromaSamplesKHR) result += "MidpointChromaSamplesKHR | ";
33897 if (value & FormatFeatureFlagBits::eSampledImageYcbcrConversionLinearFilterKHR) result += "SampledImageYcbcrConversionLinearFilterKHR | ";
33898 if (value & FormatFeatureFlagBits::eSampledImageYcbcrConversionSeparateReconstructionFilterKHR) result += "SampledImageYcbcrConversionSeparateReconstructionFilterKHR | ";
33899 if (value & FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitKHR) result += "SampledImageYcbcrConversionChromaReconstructionExplicitKHR | ";
33900 if (value & FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR) result += "SampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR | ";
33901 if (value & FormatFeatureFlagBits::eDisjointKHR) result += "DisjointKHR | ";
33902 if (value & FormatFeatureFlagBits::eCositedChromaSamplesKHR) result += "CositedChromaSamplesKHR | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033903 return "{" + result.substr(0, result.size() - 3) + "}";
33904 }
33905
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033906 VULKAN_HPP_INLINE std::string to_string(QueryControlFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033907 {
33908 switch (value)
33909 {
33910 case QueryControlFlagBits::ePrecise: return "Precise";
33911 default: return "invalid";
33912 }
33913 }
33914
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033915 VULKAN_HPP_INLINE std::string to_string(QueryControlFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033916 {
33917 if (!value) return "{}";
33918 std::string result;
33919 if (value & QueryControlFlagBits::ePrecise) result += "Precise | ";
33920 return "{" + result.substr(0, result.size() - 3) + "}";
33921 }
33922
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033923 VULKAN_HPP_INLINE std::string to_string(QueryResultFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033924 {
33925 switch (value)
33926 {
33927 case QueryResultFlagBits::e64: return "64";
33928 case QueryResultFlagBits::eWait: return "Wait";
33929 case QueryResultFlagBits::eWithAvailability: return "WithAvailability";
33930 case QueryResultFlagBits::ePartial: return "Partial";
33931 default: return "invalid";
33932 }
33933 }
33934
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033935 VULKAN_HPP_INLINE std::string to_string(QueryResultFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033936 {
33937 if (!value) return "{}";
33938 std::string result;
33939 if (value & QueryResultFlagBits::e64) result += "64 | ";
33940 if (value & QueryResultFlagBits::eWait) result += "Wait | ";
33941 if (value & QueryResultFlagBits::eWithAvailability) result += "WithAvailability | ";
33942 if (value & QueryResultFlagBits::ePartial) result += "Partial | ";
33943 return "{" + result.substr(0, result.size() - 3) + "}";
33944 }
33945
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033946 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033947 {
33948 switch (value)
33949 {
33950 case CommandBufferUsageFlagBits::eOneTimeSubmit: return "OneTimeSubmit";
33951 case CommandBufferUsageFlagBits::eRenderPassContinue: return "RenderPassContinue";
33952 case CommandBufferUsageFlagBits::eSimultaneousUse: return "SimultaneousUse";
33953 default: return "invalid";
33954 }
33955 }
33956
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033957 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033958 {
33959 if (!value) return "{}";
33960 std::string result;
33961 if (value & CommandBufferUsageFlagBits::eOneTimeSubmit) result += "OneTimeSubmit | ";
33962 if (value & CommandBufferUsageFlagBits::eRenderPassContinue) result += "RenderPassContinue | ";
33963 if (value & CommandBufferUsageFlagBits::eSimultaneousUse) result += "SimultaneousUse | ";
33964 return "{" + result.substr(0, result.size() - 3) + "}";
33965 }
33966
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033967 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033968 {
33969 switch (value)
33970 {
33971 case QueryPipelineStatisticFlagBits::eInputAssemblyVertices: return "InputAssemblyVertices";
33972 case QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives: return "InputAssemblyPrimitives";
33973 case QueryPipelineStatisticFlagBits::eVertexShaderInvocations: return "VertexShaderInvocations";
33974 case QueryPipelineStatisticFlagBits::eGeometryShaderInvocations: return "GeometryShaderInvocations";
33975 case QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives: return "GeometryShaderPrimitives";
33976 case QueryPipelineStatisticFlagBits::eClippingInvocations: return "ClippingInvocations";
33977 case QueryPipelineStatisticFlagBits::eClippingPrimitives: return "ClippingPrimitives";
33978 case QueryPipelineStatisticFlagBits::eFragmentShaderInvocations: return "FragmentShaderInvocations";
33979 case QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches: return "TessellationControlShaderPatches";
33980 case QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations: return "TessellationEvaluationShaderInvocations";
33981 case QueryPipelineStatisticFlagBits::eComputeShaderInvocations: return "ComputeShaderInvocations";
33982 default: return "invalid";
33983 }
33984 }
33985
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033986 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033987 {
33988 if (!value) return "{}";
33989 std::string result;
33990 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyVertices) result += "InputAssemblyVertices | ";
33991 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives) result += "InputAssemblyPrimitives | ";
33992 if (value & QueryPipelineStatisticFlagBits::eVertexShaderInvocations) result += "VertexShaderInvocations | ";
33993 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderInvocations) result += "GeometryShaderInvocations | ";
33994 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives) result += "GeometryShaderPrimitives | ";
33995 if (value & QueryPipelineStatisticFlagBits::eClippingInvocations) result += "ClippingInvocations | ";
33996 if (value & QueryPipelineStatisticFlagBits::eClippingPrimitives) result += "ClippingPrimitives | ";
33997 if (value & QueryPipelineStatisticFlagBits::eFragmentShaderInvocations) result += "FragmentShaderInvocations | ";
33998 if (value & QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches) result += "TessellationControlShaderPatches | ";
33999 if (value & QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations) result += "TessellationEvaluationShaderInvocations | ";
34000 if (value & QueryPipelineStatisticFlagBits::eComputeShaderInvocations) result += "ComputeShaderInvocations | ";
34001 return "{" + result.substr(0, result.size() - 3) + "}";
34002 }
34003
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034004 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034005 {
34006 switch (value)
34007 {
34008 case ImageAspectFlagBits::eColor: return "Color";
34009 case ImageAspectFlagBits::eDepth: return "Depth";
34010 case ImageAspectFlagBits::eStencil: return "Stencil";
34011 case ImageAspectFlagBits::eMetadata: return "Metadata";
Lenny Komowb79f04a2017-09-18 17:07:00 -060034012 case ImageAspectFlagBits::ePlane0KHR: return "Plane0KHR";
34013 case ImageAspectFlagBits::ePlane1KHR: return "Plane1KHR";
34014 case ImageAspectFlagBits::ePlane2KHR: return "Plane2KHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034015 default: return "invalid";
34016 }
34017 }
34018
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034019 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034020 {
34021 if (!value) return "{}";
34022 std::string result;
34023 if (value & ImageAspectFlagBits::eColor) result += "Color | ";
34024 if (value & ImageAspectFlagBits::eDepth) result += "Depth | ";
34025 if (value & ImageAspectFlagBits::eStencil) result += "Stencil | ";
34026 if (value & ImageAspectFlagBits::eMetadata) result += "Metadata | ";
Lenny Komowb79f04a2017-09-18 17:07:00 -060034027 if (value & ImageAspectFlagBits::ePlane0KHR) result += "Plane0KHR | ";
34028 if (value & ImageAspectFlagBits::ePlane1KHR) result += "Plane1KHR | ";
34029 if (value & ImageAspectFlagBits::ePlane2KHR) result += "Plane2KHR | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034030 return "{" + result.substr(0, result.size() - 3) + "}";
34031 }
34032
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034033 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034034 {
34035 switch (value)
34036 {
34037 case SparseImageFormatFlagBits::eSingleMiptail: return "SingleMiptail";
34038 case SparseImageFormatFlagBits::eAlignedMipSize: return "AlignedMipSize";
34039 case SparseImageFormatFlagBits::eNonstandardBlockSize: return "NonstandardBlockSize";
34040 default: return "invalid";
34041 }
34042 }
34043
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034044 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034045 {
34046 if (!value) return "{}";
34047 std::string result;
34048 if (value & SparseImageFormatFlagBits::eSingleMiptail) result += "SingleMiptail | ";
34049 if (value & SparseImageFormatFlagBits::eAlignedMipSize) result += "AlignedMipSize | ";
34050 if (value & SparseImageFormatFlagBits::eNonstandardBlockSize) result += "NonstandardBlockSize | ";
34051 return "{" + result.substr(0, result.size() - 3) + "}";
34052 }
34053
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034054 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034055 {
34056 switch (value)
34057 {
34058 case SparseMemoryBindFlagBits::eMetadata: return "Metadata";
34059 default: return "invalid";
34060 }
34061 }
34062
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034063 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034064 {
34065 if (!value) return "{}";
34066 std::string result;
34067 if (value & SparseMemoryBindFlagBits::eMetadata) result += "Metadata | ";
34068 return "{" + result.substr(0, result.size() - 3) + "}";
34069 }
34070
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034071 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034072 {
34073 switch (value)
34074 {
34075 case PipelineStageFlagBits::eTopOfPipe: return "TopOfPipe";
34076 case PipelineStageFlagBits::eDrawIndirect: return "DrawIndirect";
34077 case PipelineStageFlagBits::eVertexInput: return "VertexInput";
34078 case PipelineStageFlagBits::eVertexShader: return "VertexShader";
34079 case PipelineStageFlagBits::eTessellationControlShader: return "TessellationControlShader";
34080 case PipelineStageFlagBits::eTessellationEvaluationShader: return "TessellationEvaluationShader";
34081 case PipelineStageFlagBits::eGeometryShader: return "GeometryShader";
34082 case PipelineStageFlagBits::eFragmentShader: return "FragmentShader";
34083 case PipelineStageFlagBits::eEarlyFragmentTests: return "EarlyFragmentTests";
34084 case PipelineStageFlagBits::eLateFragmentTests: return "LateFragmentTests";
34085 case PipelineStageFlagBits::eColorAttachmentOutput: return "ColorAttachmentOutput";
34086 case PipelineStageFlagBits::eComputeShader: return "ComputeShader";
34087 case PipelineStageFlagBits::eTransfer: return "Transfer";
34088 case PipelineStageFlagBits::eBottomOfPipe: return "BottomOfPipe";
34089 case PipelineStageFlagBits::eHost: return "Host";
34090 case PipelineStageFlagBits::eAllGraphics: return "AllGraphics";
34091 case PipelineStageFlagBits::eAllCommands: return "AllCommands";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034092 case PipelineStageFlagBits::eCommandProcessNVX: return "CommandProcessNVX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034093 default: return "invalid";
34094 }
34095 }
34096
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034097 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034098 {
34099 if (!value) return "{}";
34100 std::string result;
34101 if (value & PipelineStageFlagBits::eTopOfPipe) result += "TopOfPipe | ";
34102 if (value & PipelineStageFlagBits::eDrawIndirect) result += "DrawIndirect | ";
34103 if (value & PipelineStageFlagBits::eVertexInput) result += "VertexInput | ";
34104 if (value & PipelineStageFlagBits::eVertexShader) result += "VertexShader | ";
34105 if (value & PipelineStageFlagBits::eTessellationControlShader) result += "TessellationControlShader | ";
34106 if (value & PipelineStageFlagBits::eTessellationEvaluationShader) result += "TessellationEvaluationShader | ";
34107 if (value & PipelineStageFlagBits::eGeometryShader) result += "GeometryShader | ";
34108 if (value & PipelineStageFlagBits::eFragmentShader) result += "FragmentShader | ";
34109 if (value & PipelineStageFlagBits::eEarlyFragmentTests) result += "EarlyFragmentTests | ";
34110 if (value & PipelineStageFlagBits::eLateFragmentTests) result += "LateFragmentTests | ";
34111 if (value & PipelineStageFlagBits::eColorAttachmentOutput) result += "ColorAttachmentOutput | ";
34112 if (value & PipelineStageFlagBits::eComputeShader) result += "ComputeShader | ";
34113 if (value & PipelineStageFlagBits::eTransfer) result += "Transfer | ";
34114 if (value & PipelineStageFlagBits::eBottomOfPipe) result += "BottomOfPipe | ";
34115 if (value & PipelineStageFlagBits::eHost) result += "Host | ";
34116 if (value & PipelineStageFlagBits::eAllGraphics) result += "AllGraphics | ";
34117 if (value & PipelineStageFlagBits::eAllCommands) result += "AllCommands | ";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034118 if (value & PipelineStageFlagBits::eCommandProcessNVX) result += "CommandProcessNVX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034119 return "{" + result.substr(0, result.size() - 3) + "}";
34120 }
34121
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034122 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034123 {
34124 switch (value)
34125 {
34126 case CommandPoolCreateFlagBits::eTransient: return "Transient";
34127 case CommandPoolCreateFlagBits::eResetCommandBuffer: return "ResetCommandBuffer";
34128 default: return "invalid";
34129 }
34130 }
34131
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034132 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034133 {
34134 if (!value) return "{}";
34135 std::string result;
34136 if (value & CommandPoolCreateFlagBits::eTransient) result += "Transient | ";
34137 if (value & CommandPoolCreateFlagBits::eResetCommandBuffer) result += "ResetCommandBuffer | ";
34138 return "{" + result.substr(0, result.size() - 3) + "}";
34139 }
34140
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034141 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034142 {
34143 switch (value)
34144 {
34145 case CommandPoolResetFlagBits::eReleaseResources: return "ReleaseResources";
34146 default: return "invalid";
34147 }
34148 }
34149
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034150 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034151 {
34152 if (!value) return "{}";
34153 std::string result;
34154 if (value & CommandPoolResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
34155 return "{" + result.substr(0, result.size() - 3) + "}";
34156 }
34157
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034158 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034159 {
34160 switch (value)
34161 {
34162 case CommandBufferResetFlagBits::eReleaseResources: return "ReleaseResources";
34163 default: return "invalid";
34164 }
34165 }
34166
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034167 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034168 {
34169 if (!value) return "{}";
34170 std::string result;
34171 if (value & CommandBufferResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
34172 return "{" + result.substr(0, result.size() - 3) + "}";
34173 }
34174
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034175 VULKAN_HPP_INLINE std::string to_string(SampleCountFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034176 {
34177 switch (value)
34178 {
34179 case SampleCountFlagBits::e1: return "1";
34180 case SampleCountFlagBits::e2: return "2";
34181 case SampleCountFlagBits::e4: return "4";
34182 case SampleCountFlagBits::e8: return "8";
34183 case SampleCountFlagBits::e16: return "16";
34184 case SampleCountFlagBits::e32: return "32";
34185 case SampleCountFlagBits::e64: return "64";
34186 default: return "invalid";
34187 }
34188 }
34189
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034190 VULKAN_HPP_INLINE std::string to_string(SampleCountFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034191 {
34192 if (!value) return "{}";
34193 std::string result;
34194 if (value & SampleCountFlagBits::e1) result += "1 | ";
34195 if (value & SampleCountFlagBits::e2) result += "2 | ";
34196 if (value & SampleCountFlagBits::e4) result += "4 | ";
34197 if (value & SampleCountFlagBits::e8) result += "8 | ";
34198 if (value & SampleCountFlagBits::e16) result += "16 | ";
34199 if (value & SampleCountFlagBits::e32) result += "32 | ";
34200 if (value & SampleCountFlagBits::e64) result += "64 | ";
34201 return "{" + result.substr(0, result.size() - 3) + "}";
34202 }
34203
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034204 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034205 {
34206 switch (value)
34207 {
34208 case AttachmentDescriptionFlagBits::eMayAlias: return "MayAlias";
34209 default: return "invalid";
34210 }
34211 }
34212
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034213 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034214 {
34215 if (!value) return "{}";
34216 std::string result;
34217 if (value & AttachmentDescriptionFlagBits::eMayAlias) result += "MayAlias | ";
34218 return "{" + result.substr(0, result.size() - 3) + "}";
34219 }
34220
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034221 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034222 {
34223 switch (value)
34224 {
34225 case StencilFaceFlagBits::eFront: return "Front";
34226 case StencilFaceFlagBits::eBack: return "Back";
34227 case StencilFaceFlagBits::eVkStencilFrontAndBack: return "VkStencilFrontAndBack";
34228 default: return "invalid";
34229 }
34230 }
34231
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034232 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034233 {
34234 if (!value) return "{}";
34235 std::string result;
34236 if (value & StencilFaceFlagBits::eFront) result += "Front | ";
34237 if (value & StencilFaceFlagBits::eBack) result += "Back | ";
34238 if (value & StencilFaceFlagBits::eVkStencilFrontAndBack) result += "VkStencilFrontAndBack | ";
34239 return "{" + result.substr(0, result.size() - 3) + "}";
34240 }
34241
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034242 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034243 {
34244 switch (value)
34245 {
34246 case DescriptorPoolCreateFlagBits::eFreeDescriptorSet: return "FreeDescriptorSet";
34247 default: return "invalid";
34248 }
34249 }
34250
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034251 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034252 {
34253 if (!value) return "{}";
34254 std::string result;
34255 if (value & DescriptorPoolCreateFlagBits::eFreeDescriptorSet) result += "FreeDescriptorSet | ";
34256 return "{" + result.substr(0, result.size() - 3) + "}";
34257 }
34258
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034259 VULKAN_HPP_INLINE std::string to_string(DependencyFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034260 {
34261 switch (value)
34262 {
34263 case DependencyFlagBits::eByRegion: return "ByRegion";
Mark Young0f183a82017-02-28 09:58:04 -070034264 case DependencyFlagBits::eViewLocalKHX: return "ViewLocalKHX";
34265 case DependencyFlagBits::eDeviceGroupKHX: return "DeviceGroupKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034266 default: return "invalid";
34267 }
34268 }
34269
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034270 VULKAN_HPP_INLINE std::string to_string(DependencyFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034271 {
34272 if (!value) return "{}";
34273 std::string result;
34274 if (value & DependencyFlagBits::eByRegion) result += "ByRegion | ";
Mark Young0f183a82017-02-28 09:58:04 -070034275 if (value & DependencyFlagBits::eViewLocalKHX) result += "ViewLocalKHX | ";
34276 if (value & DependencyFlagBits::eDeviceGroupKHX) result += "DeviceGroupKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034277 return "{" + result.substr(0, result.size() - 3) + "}";
34278 }
34279
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034280 VULKAN_HPP_INLINE std::string to_string(PresentModeKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034281 {
34282 switch (value)
34283 {
34284 case PresentModeKHR::eImmediate: return "Immediate";
34285 case PresentModeKHR::eMailbox: return "Mailbox";
34286 case PresentModeKHR::eFifo: return "Fifo";
34287 case PresentModeKHR::eFifoRelaxed: return "FifoRelaxed";
Mark Lobodzinski54385432017-05-15 10:27:52 -060034288 case PresentModeKHR::eSharedDemandRefresh: return "SharedDemandRefresh";
34289 case PresentModeKHR::eSharedContinuousRefresh: return "SharedContinuousRefresh";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034290 default: return "invalid";
34291 }
34292 }
34293
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034294 VULKAN_HPP_INLINE std::string to_string(ColorSpaceKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034295 {
34296 switch (value)
34297 {
34298 case ColorSpaceKHR::eSrgbNonlinear: return "SrgbNonlinear";
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060034299 case ColorSpaceKHR::eDisplayP3NonlinearEXT: return "DisplayP3NonlinearEXT";
34300 case ColorSpaceKHR::eExtendedSrgbLinearEXT: return "ExtendedSrgbLinearEXT";
34301 case ColorSpaceKHR::eDciP3LinearEXT: return "DciP3LinearEXT";
34302 case ColorSpaceKHR::eDciP3NonlinearEXT: return "DciP3NonlinearEXT";
34303 case ColorSpaceKHR::eBt709LinearEXT: return "Bt709LinearEXT";
34304 case ColorSpaceKHR::eBt709NonlinearEXT: return "Bt709NonlinearEXT";
34305 case ColorSpaceKHR::eBt2020LinearEXT: return "Bt2020LinearEXT";
34306 case ColorSpaceKHR::eHdr10St2084EXT: return "Hdr10St2084EXT";
34307 case ColorSpaceKHR::eDolbyvisionEXT: return "DolbyvisionEXT";
34308 case ColorSpaceKHR::eHdr10HlgEXT: return "Hdr10HlgEXT";
34309 case ColorSpaceKHR::eAdobergbLinearEXT: return "AdobergbLinearEXT";
34310 case ColorSpaceKHR::eAdobergbNonlinearEXT: return "AdobergbNonlinearEXT";
34311 case ColorSpaceKHR::ePassThroughEXT: return "PassThroughEXT";
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060034312 case ColorSpaceKHR::eExtendedSrgbNonlinearEXT: return "ExtendedSrgbNonlinearEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034313 default: return "invalid";
34314 }
34315 }
34316
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034317 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034318 {
34319 switch (value)
34320 {
34321 case DisplayPlaneAlphaFlagBitsKHR::eOpaque: return "Opaque";
34322 case DisplayPlaneAlphaFlagBitsKHR::eGlobal: return "Global";
34323 case DisplayPlaneAlphaFlagBitsKHR::ePerPixel: return "PerPixel";
34324 case DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied: return "PerPixelPremultiplied";
34325 default: return "invalid";
34326 }
34327 }
34328
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034329 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034330 {
34331 if (!value) return "{}";
34332 std::string result;
34333 if (value & DisplayPlaneAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
34334 if (value & DisplayPlaneAlphaFlagBitsKHR::eGlobal) result += "Global | ";
34335 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixel) result += "PerPixel | ";
34336 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied) result += "PerPixelPremultiplied | ";
34337 return "{" + result.substr(0, result.size() - 3) + "}";
34338 }
34339
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034340 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034341 {
34342 switch (value)
34343 {
34344 case CompositeAlphaFlagBitsKHR::eOpaque: return "Opaque";
34345 case CompositeAlphaFlagBitsKHR::ePreMultiplied: return "PreMultiplied";
34346 case CompositeAlphaFlagBitsKHR::ePostMultiplied: return "PostMultiplied";
34347 case CompositeAlphaFlagBitsKHR::eInherit: return "Inherit";
34348 default: return "invalid";
34349 }
34350 }
34351
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034352 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034353 {
34354 if (!value) return "{}";
34355 std::string result;
34356 if (value & CompositeAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
34357 if (value & CompositeAlphaFlagBitsKHR::ePreMultiplied) result += "PreMultiplied | ";
34358 if (value & CompositeAlphaFlagBitsKHR::ePostMultiplied) result += "PostMultiplied | ";
34359 if (value & CompositeAlphaFlagBitsKHR::eInherit) result += "Inherit | ";
34360 return "{" + result.substr(0, result.size() - 3) + "}";
34361 }
34362
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034363 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034364 {
34365 switch (value)
34366 {
34367 case SurfaceTransformFlagBitsKHR::eIdentity: return "Identity";
34368 case SurfaceTransformFlagBitsKHR::eRotate90: return "Rotate90";
34369 case SurfaceTransformFlagBitsKHR::eRotate180: return "Rotate180";
34370 case SurfaceTransformFlagBitsKHR::eRotate270: return "Rotate270";
34371 case SurfaceTransformFlagBitsKHR::eHorizontalMirror: return "HorizontalMirror";
34372 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90: return "HorizontalMirrorRotate90";
34373 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180: return "HorizontalMirrorRotate180";
34374 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270: return "HorizontalMirrorRotate270";
34375 case SurfaceTransformFlagBitsKHR::eInherit: return "Inherit";
34376 default: return "invalid";
34377 }
34378 }
34379
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034380 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034381 {
34382 if (!value) return "{}";
34383 std::string result;
34384 if (value & SurfaceTransformFlagBitsKHR::eIdentity) result += "Identity | ";
34385 if (value & SurfaceTransformFlagBitsKHR::eRotate90) result += "Rotate90 | ";
34386 if (value & SurfaceTransformFlagBitsKHR::eRotate180) result += "Rotate180 | ";
34387 if (value & SurfaceTransformFlagBitsKHR::eRotate270) result += "Rotate270 | ";
34388 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirror) result += "HorizontalMirror | ";
34389 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90) result += "HorizontalMirrorRotate90 | ";
34390 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180) result += "HorizontalMirrorRotate180 | ";
34391 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270) result += "HorizontalMirrorRotate270 | ";
34392 if (value & SurfaceTransformFlagBitsKHR::eInherit) result += "Inherit | ";
34393 return "{" + result.substr(0, result.size() - 3) + "}";
34394 }
34395
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034396 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagBitsEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034397 {
34398 switch (value)
34399 {
34400 case DebugReportFlagBitsEXT::eInformation: return "Information";
34401 case DebugReportFlagBitsEXT::eWarning: return "Warning";
34402 case DebugReportFlagBitsEXT::ePerformanceWarning: return "PerformanceWarning";
34403 case DebugReportFlagBitsEXT::eError: return "Error";
34404 case DebugReportFlagBitsEXT::eDebug: return "Debug";
34405 default: return "invalid";
34406 }
34407 }
34408
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034409 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagsEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034410 {
34411 if (!value) return "{}";
34412 std::string result;
34413 if (value & DebugReportFlagBitsEXT::eInformation) result += "Information | ";
34414 if (value & DebugReportFlagBitsEXT::eWarning) result += "Warning | ";
34415 if (value & DebugReportFlagBitsEXT::ePerformanceWarning) result += "PerformanceWarning | ";
34416 if (value & DebugReportFlagBitsEXT::eError) result += "Error | ";
34417 if (value & DebugReportFlagBitsEXT::eDebug) result += "Debug | ";
34418 return "{" + result.substr(0, result.size() - 3) + "}";
34419 }
34420
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034421 VULKAN_HPP_INLINE std::string to_string(DebugReportObjectTypeEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034422 {
34423 switch (value)
34424 {
34425 case DebugReportObjectTypeEXT::eUnknown: return "Unknown";
34426 case DebugReportObjectTypeEXT::eInstance: return "Instance";
34427 case DebugReportObjectTypeEXT::ePhysicalDevice: return "PhysicalDevice";
34428 case DebugReportObjectTypeEXT::eDevice: return "Device";
34429 case DebugReportObjectTypeEXT::eQueue: return "Queue";
34430 case DebugReportObjectTypeEXT::eSemaphore: return "Semaphore";
34431 case DebugReportObjectTypeEXT::eCommandBuffer: return "CommandBuffer";
34432 case DebugReportObjectTypeEXT::eFence: return "Fence";
34433 case DebugReportObjectTypeEXT::eDeviceMemory: return "DeviceMemory";
34434 case DebugReportObjectTypeEXT::eBuffer: return "Buffer";
34435 case DebugReportObjectTypeEXT::eImage: return "Image";
34436 case DebugReportObjectTypeEXT::eEvent: return "Event";
34437 case DebugReportObjectTypeEXT::eQueryPool: return "QueryPool";
34438 case DebugReportObjectTypeEXT::eBufferView: return "BufferView";
34439 case DebugReportObjectTypeEXT::eImageView: return "ImageView";
34440 case DebugReportObjectTypeEXT::eShaderModule: return "ShaderModule";
34441 case DebugReportObjectTypeEXT::ePipelineCache: return "PipelineCache";
34442 case DebugReportObjectTypeEXT::ePipelineLayout: return "PipelineLayout";
34443 case DebugReportObjectTypeEXT::eRenderPass: return "RenderPass";
34444 case DebugReportObjectTypeEXT::ePipeline: return "Pipeline";
34445 case DebugReportObjectTypeEXT::eDescriptorSetLayout: return "DescriptorSetLayout";
34446 case DebugReportObjectTypeEXT::eSampler: return "Sampler";
34447 case DebugReportObjectTypeEXT::eDescriptorPool: return "DescriptorPool";
34448 case DebugReportObjectTypeEXT::eDescriptorSet: return "DescriptorSet";
34449 case DebugReportObjectTypeEXT::eFramebuffer: return "Framebuffer";
34450 case DebugReportObjectTypeEXT::eCommandPool: return "CommandPool";
34451 case DebugReportObjectTypeEXT::eSurfaceKhr: return "SurfaceKhr";
34452 case DebugReportObjectTypeEXT::eSwapchainKhr: return "SwapchainKhr";
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060034453 case DebugReportObjectTypeEXT::eDebugReportCallbackExt: return "DebugReportCallbackExt";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034454 case DebugReportObjectTypeEXT::eDisplayKhr: return "DisplayKhr";
34455 case DebugReportObjectTypeEXT::eDisplayModeKhr: return "DisplayModeKhr";
34456 case DebugReportObjectTypeEXT::eObjectTableNvx: return "ObjectTableNvx";
34457 case DebugReportObjectTypeEXT::eIndirectCommandsLayoutNvx: return "IndirectCommandsLayoutNvx";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060034458 case DebugReportObjectTypeEXT::eValidationCache: return "ValidationCache";
Mark Lobodzinski54385432017-05-15 10:27:52 -060034459 case DebugReportObjectTypeEXT::eDescriptorUpdateTemplateKHR: return "DescriptorUpdateTemplateKHR";
Lenny Komowb79f04a2017-09-18 17:07:00 -060034460 case DebugReportObjectTypeEXT::eSamplerYcbcrConversionKHR: return "SamplerYcbcrConversionKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034461 default: return "invalid";
34462 }
34463 }
34464
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034465 VULKAN_HPP_INLINE std::string to_string(RasterizationOrderAMD value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060034466 {
34467 switch (value)
34468 {
34469 case RasterizationOrderAMD::eStrict: return "Strict";
34470 case RasterizationOrderAMD::eRelaxed: return "Relaxed";
34471 default: return "invalid";
34472 }
34473 }
34474
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034475 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060034476 {
34477 switch (value)
34478 {
34479 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32: return "OpaqueWin32";
34480 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
34481 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image: return "D3D11Image";
34482 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt: return "D3D11ImageKmt";
34483 default: return "invalid";
34484 }
34485 }
34486
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034487 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060034488 {
34489 if (!value) return "{}";
34490 std::string result;
34491 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) result += "OpaqueWin32 | ";
34492 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
34493 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) result += "D3D11Image | ";
34494 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt) result += "D3D11ImageKmt | ";
34495 return "{" + result.substr(0, result.size() - 3) + "}";
34496 }
34497
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034498 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060034499 {
34500 switch (value)
34501 {
34502 case ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly: return "DedicatedOnly";
34503 case ExternalMemoryFeatureFlagBitsNV::eExportable: return "Exportable";
34504 case ExternalMemoryFeatureFlagBitsNV::eImportable: return "Importable";
34505 default: return "invalid";
34506 }
34507 }
34508
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034509 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060034510 {
34511 if (!value) return "{}";
34512 std::string result;
34513 if (value & ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) result += "DedicatedOnly | ";
34514 if (value & ExternalMemoryFeatureFlagBitsNV::eExportable) result += "Exportable | ";
34515 if (value & ExternalMemoryFeatureFlagBitsNV::eImportable) result += "Importable | ";
34516 return "{" + result.substr(0, result.size() - 3) + "}";
34517 }
34518
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034519 VULKAN_HPP_INLINE std::string to_string(ValidationCheckEXT value)
Lenny Komow68432d72016-09-29 14:16:59 -060034520 {
34521 switch (value)
34522 {
34523 case ValidationCheckEXT::eAll: return "All";
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060034524 case ValidationCheckEXT::eShaders: return "Shaders";
Lenny Komow68432d72016-09-29 14:16:59 -060034525 default: return "invalid";
34526 }
34527 }
34528
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034529 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagBitsNVX value)
34530 {
34531 switch (value)
34532 {
34533 case IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences: return "UnorderedSequences";
34534 case IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences: return "SparseSequences";
34535 case IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions: return "EmptyExecutions";
34536 case IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences: return "IndexedSequences";
34537 default: return "invalid";
34538 }
34539 }
34540
34541 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagsNVX value)
34542 {
34543 if (!value) return "{}";
34544 std::string result;
34545 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) result += "UnorderedSequences | ";
34546 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) result += "SparseSequences | ";
34547 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) result += "EmptyExecutions | ";
34548 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences) result += "IndexedSequences | ";
34549 return "{" + result.substr(0, result.size() - 3) + "}";
34550 }
34551
34552 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagBitsNVX value)
34553 {
34554 switch (value)
34555 {
34556 case ObjectEntryUsageFlagBitsNVX::eGraphics: return "Graphics";
34557 case ObjectEntryUsageFlagBitsNVX::eCompute: return "Compute";
34558 default: return "invalid";
34559 }
34560 }
34561
34562 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagsNVX value)
34563 {
34564 if (!value) return "{}";
34565 std::string result;
34566 if (value & ObjectEntryUsageFlagBitsNVX::eGraphics) result += "Graphics | ";
34567 if (value & ObjectEntryUsageFlagBitsNVX::eCompute) result += "Compute | ";
34568 return "{" + result.substr(0, result.size() - 3) + "}";
34569 }
34570
34571 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsTokenTypeNVX value)
34572 {
34573 switch (value)
34574 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060034575 case IndirectCommandsTokenTypeNVX::ePipeline: return "Pipeline";
34576 case IndirectCommandsTokenTypeNVX::eDescriptorSet: return "DescriptorSet";
34577 case IndirectCommandsTokenTypeNVX::eIndexBuffer: return "IndexBuffer";
34578 case IndirectCommandsTokenTypeNVX::eVertexBuffer: return "VertexBuffer";
34579 case IndirectCommandsTokenTypeNVX::ePushConstant: return "PushConstant";
34580 case IndirectCommandsTokenTypeNVX::eDrawIndexed: return "DrawIndexed";
34581 case IndirectCommandsTokenTypeNVX::eDraw: return "Draw";
34582 case IndirectCommandsTokenTypeNVX::eDispatch: return "Dispatch";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034583 default: return "invalid";
34584 }
34585 }
34586
34587 VULKAN_HPP_INLINE std::string to_string(ObjectEntryTypeNVX value)
34588 {
34589 switch (value)
34590 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060034591 case ObjectEntryTypeNVX::eDescriptorSet: return "DescriptorSet";
34592 case ObjectEntryTypeNVX::ePipeline: return "Pipeline";
34593 case ObjectEntryTypeNVX::eIndexBuffer: return "IndexBuffer";
34594 case ObjectEntryTypeNVX::eVertexBuffer: return "VertexBuffer";
34595 case ObjectEntryTypeNVX::ePushConstant: return "PushConstant";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070034596 default: return "invalid";
34597 }
34598 }
34599
Mark Young0f183a82017-02-28 09:58:04 -070034600 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlagBits value)
34601 {
34602 switch (value)
34603 {
34604 case DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR: return "PushDescriptorKHR";
34605 default: return "invalid";
34606 }
34607 }
34608
34609 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlags value)
34610 {
34611 if (!value) return "{}";
34612 std::string result;
34613 if (value & DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR) result += "PushDescriptorKHR | ";
34614 return "{" + result.substr(0, result.size() - 3) + "}";
34615 }
34616
Mark Youngabc2d6e2017-07-07 07:59:56 -060034617 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070034618 {
34619 switch (value)
34620 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060034621 case ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd: return "OpaqueFd";
34622 case ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32: return "OpaqueWin32";
34623 case ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
34624 case ExternalMemoryHandleTypeFlagBitsKHR::eD3D11Texture: return "D3D11Texture";
34625 case ExternalMemoryHandleTypeFlagBitsKHR::eD3D11TextureKmt: return "D3D11TextureKmt";
34626 case ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Heap: return "D3D12Heap";
34627 case ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Resource: return "D3D12Resource";
Mark Young0f183a82017-02-28 09:58:04 -070034628 default: return "invalid";
34629 }
34630 }
34631
Mark Youngabc2d6e2017-07-07 07:59:56 -060034632 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070034633 {
34634 if (!value) return "{}";
34635 std::string result;
Mark Youngabc2d6e2017-07-07 07:59:56 -060034636 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd) result += "OpaqueFd | ";
34637 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32) result += "OpaqueWin32 | ";
34638 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
34639 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eD3D11Texture) result += "D3D11Texture | ";
34640 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eD3D11TextureKmt) result += "D3D11TextureKmt | ";
34641 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Heap) result += "D3D12Heap | ";
34642 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Resource) result += "D3D12Resource | ";
Mark Young0f183a82017-02-28 09:58:04 -070034643 return "{" + result.substr(0, result.size() - 3) + "}";
34644 }
34645
Mark Youngabc2d6e2017-07-07 07:59:56 -060034646 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070034647 {
34648 switch (value)
34649 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060034650 case ExternalMemoryFeatureFlagBitsKHR::eDedicatedOnly: return "DedicatedOnly";
34651 case ExternalMemoryFeatureFlagBitsKHR::eExportable: return "Exportable";
34652 case ExternalMemoryFeatureFlagBitsKHR::eImportable: return "Importable";
Mark Young0f183a82017-02-28 09:58:04 -070034653 default: return "invalid";
34654 }
34655 }
34656
Mark Youngabc2d6e2017-07-07 07:59:56 -060034657 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070034658 {
34659 if (!value) return "{}";
34660 std::string result;
Mark Youngabc2d6e2017-07-07 07:59:56 -060034661 if (value & ExternalMemoryFeatureFlagBitsKHR::eDedicatedOnly) result += "DedicatedOnly | ";
34662 if (value & ExternalMemoryFeatureFlagBitsKHR::eExportable) result += "Exportable | ";
34663 if (value & ExternalMemoryFeatureFlagBitsKHR::eImportable) result += "Importable | ";
Mark Young0f183a82017-02-28 09:58:04 -070034664 return "{" + result.substr(0, result.size() - 3) + "}";
34665 }
34666
Mark Youngabc2d6e2017-07-07 07:59:56 -060034667 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagBitsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070034668 {
34669 switch (value)
34670 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060034671 case ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd: return "OpaqueFd";
34672 case ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32: return "OpaqueWin32";
34673 case ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
34674 case ExternalSemaphoreHandleTypeFlagBitsKHR::eD3D12Fence: return "D3D12Fence";
34675 case ExternalSemaphoreHandleTypeFlagBitsKHR::eSyncFd: return "SyncFd";
Mark Young0f183a82017-02-28 09:58:04 -070034676 default: return "invalid";
34677 }
34678 }
34679
Mark Youngabc2d6e2017-07-07 07:59:56 -060034680 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070034681 {
34682 if (!value) return "{}";
34683 std::string result;
Mark Youngabc2d6e2017-07-07 07:59:56 -060034684 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd) result += "OpaqueFd | ";
34685 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32) result += "OpaqueWin32 | ";
34686 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
34687 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eD3D12Fence) result += "D3D12Fence | ";
34688 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eSyncFd) result += "SyncFd | ";
Mark Young0f183a82017-02-28 09:58:04 -070034689 return "{" + result.substr(0, result.size() - 3) + "}";
34690 }
34691
Mark Youngabc2d6e2017-07-07 07:59:56 -060034692 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagBitsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070034693 {
34694 switch (value)
34695 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060034696 case ExternalSemaphoreFeatureFlagBitsKHR::eExportable: return "Exportable";
34697 case ExternalSemaphoreFeatureFlagBitsKHR::eImportable: return "Importable";
Mark Young0f183a82017-02-28 09:58:04 -070034698 default: return "invalid";
34699 }
34700 }
34701
Mark Youngabc2d6e2017-07-07 07:59:56 -060034702 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070034703 {
34704 if (!value) return "{}";
34705 std::string result;
Mark Youngabc2d6e2017-07-07 07:59:56 -060034706 if (value & ExternalSemaphoreFeatureFlagBitsKHR::eExportable) result += "Exportable | ";
34707 if (value & ExternalSemaphoreFeatureFlagBitsKHR::eImportable) result += "Importable | ";
34708 return "{" + result.substr(0, result.size() - 3) + "}";
34709 }
34710
34711 VULKAN_HPP_INLINE std::string to_string(SemaphoreImportFlagBitsKHR value)
34712 {
34713 switch (value)
34714 {
34715 case SemaphoreImportFlagBitsKHR::eTemporary: return "Temporary";
34716 default: return "invalid";
34717 }
34718 }
34719
34720 VULKAN_HPP_INLINE std::string to_string(SemaphoreImportFlagsKHR value)
34721 {
34722 if (!value) return "{}";
34723 std::string result;
34724 if (value & SemaphoreImportFlagBitsKHR::eTemporary) result += "Temporary | ";
34725 return "{" + result.substr(0, result.size() - 3) + "}";
34726 }
34727
34728 VULKAN_HPP_INLINE std::string to_string(ExternalFenceHandleTypeFlagBitsKHR value)
34729 {
34730 switch (value)
34731 {
34732 case ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd: return "OpaqueFd";
34733 case ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32: return "OpaqueWin32";
34734 case ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
34735 case ExternalFenceHandleTypeFlagBitsKHR::eSyncFd: return "SyncFd";
34736 default: return "invalid";
34737 }
34738 }
34739
34740 VULKAN_HPP_INLINE std::string to_string(ExternalFenceHandleTypeFlagsKHR value)
34741 {
34742 if (!value) return "{}";
34743 std::string result;
34744 if (value & ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd) result += "OpaqueFd | ";
34745 if (value & ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32) result += "OpaqueWin32 | ";
34746 if (value & ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
34747 if (value & ExternalFenceHandleTypeFlagBitsKHR::eSyncFd) result += "SyncFd | ";
34748 return "{" + result.substr(0, result.size() - 3) + "}";
34749 }
34750
34751 VULKAN_HPP_INLINE std::string to_string(ExternalFenceFeatureFlagBitsKHR value)
34752 {
34753 switch (value)
34754 {
34755 case ExternalFenceFeatureFlagBitsKHR::eExportable: return "Exportable";
34756 case ExternalFenceFeatureFlagBitsKHR::eImportable: return "Importable";
34757 default: return "invalid";
34758 }
34759 }
34760
34761 VULKAN_HPP_INLINE std::string to_string(ExternalFenceFeatureFlagsKHR value)
34762 {
34763 if (!value) return "{}";
34764 std::string result;
34765 if (value & ExternalFenceFeatureFlagBitsKHR::eExportable) result += "Exportable | ";
34766 if (value & ExternalFenceFeatureFlagBitsKHR::eImportable) result += "Importable | ";
34767 return "{" + result.substr(0, result.size() - 3) + "}";
34768 }
34769
34770 VULKAN_HPP_INLINE std::string to_string(FenceImportFlagBitsKHR value)
34771 {
34772 switch (value)
34773 {
34774 case FenceImportFlagBitsKHR::eTemporary: return "Temporary";
34775 default: return "invalid";
34776 }
34777 }
34778
34779 VULKAN_HPP_INLINE std::string to_string(FenceImportFlagsKHR value)
34780 {
34781 if (!value) return "{}";
34782 std::string result;
34783 if (value & FenceImportFlagBitsKHR::eTemporary) result += "Temporary | ";
Mark Young0f183a82017-02-28 09:58:04 -070034784 return "{" + result.substr(0, result.size() - 3) + "}";
34785 }
34786
Mark Young39389872017-01-19 21:10:49 -070034787 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagBitsEXT value)
34788 {
34789 switch (value)
34790 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060034791 case SurfaceCounterFlagBitsEXT::eVblank: return "Vblank";
Mark Young39389872017-01-19 21:10:49 -070034792 default: return "invalid";
34793 }
34794 }
34795
34796 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagsEXT value)
34797 {
34798 if (!value) return "{}";
34799 std::string result;
Mark Lobodzinski54385432017-05-15 10:27:52 -060034800 if (value & SurfaceCounterFlagBitsEXT::eVblank) result += "Vblank | ";
Mark Young39389872017-01-19 21:10:49 -070034801 return "{" + result.substr(0, result.size() - 3) + "}";
34802 }
34803
34804 VULKAN_HPP_INLINE std::string to_string(DisplayPowerStateEXT value)
34805 {
34806 switch (value)
34807 {
34808 case DisplayPowerStateEXT::eOff: return "Off";
34809 case DisplayPowerStateEXT::eSuspend: return "Suspend";
34810 case DisplayPowerStateEXT::eOn: return "On";
34811 default: return "invalid";
34812 }
34813 }
34814
34815 VULKAN_HPP_INLINE std::string to_string(DeviceEventTypeEXT value)
34816 {
34817 switch (value)
34818 {
34819 case DeviceEventTypeEXT::eDisplayHotplug: return "DisplayHotplug";
34820 default: return "invalid";
34821 }
34822 }
34823
34824 VULKAN_HPP_INLINE std::string to_string(DisplayEventTypeEXT value)
34825 {
34826 switch (value)
34827 {
34828 case DisplayEventTypeEXT::eFirstPixelOut: return "FirstPixelOut";
34829 default: return "invalid";
34830 }
34831 }
34832
Mark Young0f183a82017-02-28 09:58:04 -070034833 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagBitsKHX value)
34834 {
34835 switch (value)
34836 {
34837 case PeerMemoryFeatureFlagBitsKHX::eCopySrc: return "CopySrc";
34838 case PeerMemoryFeatureFlagBitsKHX::eCopyDst: return "CopyDst";
34839 case PeerMemoryFeatureFlagBitsKHX::eGenericSrc: return "GenericSrc";
34840 case PeerMemoryFeatureFlagBitsKHX::eGenericDst: return "GenericDst";
34841 default: return "invalid";
34842 }
34843 }
34844
34845 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagsKHX value)
34846 {
34847 if (!value) return "{}";
34848 std::string result;
34849 if (value & PeerMemoryFeatureFlagBitsKHX::eCopySrc) result += "CopySrc | ";
34850 if (value & PeerMemoryFeatureFlagBitsKHX::eCopyDst) result += "CopyDst | ";
34851 if (value & PeerMemoryFeatureFlagBitsKHX::eGenericSrc) result += "GenericSrc | ";
34852 if (value & PeerMemoryFeatureFlagBitsKHX::eGenericDst) result += "GenericDst | ";
34853 return "{" + result.substr(0, result.size() - 3) + "}";
34854 }
34855
34856 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagBitsKHX value)
34857 {
34858 switch (value)
34859 {
34860 case MemoryAllocateFlagBitsKHX::eDeviceMask: return "DeviceMask";
34861 default: return "invalid";
34862 }
34863 }
34864
34865 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagsKHX value)
34866 {
34867 if (!value) return "{}";
34868 std::string result;
34869 if (value & MemoryAllocateFlagBitsKHX::eDeviceMask) result += "DeviceMask | ";
34870 return "{" + result.substr(0, result.size() - 3) + "}";
34871 }
34872
34873 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagBitsKHX value)
34874 {
34875 switch (value)
34876 {
34877 case DeviceGroupPresentModeFlagBitsKHX::eLocal: return "Local";
34878 case DeviceGroupPresentModeFlagBitsKHX::eRemote: return "Remote";
34879 case DeviceGroupPresentModeFlagBitsKHX::eSum: return "Sum";
34880 case DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice: return "LocalMultiDevice";
34881 default: return "invalid";
34882 }
34883 }
34884
34885 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagsKHX value)
34886 {
34887 if (!value) return "{}";
34888 std::string result;
34889 if (value & DeviceGroupPresentModeFlagBitsKHX::eLocal) result += "Local | ";
34890 if (value & DeviceGroupPresentModeFlagBitsKHX::eRemote) result += "Remote | ";
34891 if (value & DeviceGroupPresentModeFlagBitsKHX::eSum) result += "Sum | ";
34892 if (value & DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice) result += "LocalMultiDevice | ";
34893 return "{" + result.substr(0, result.size() - 3) + "}";
34894 }
34895
34896 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagBitsKHR value)
34897 {
34898 switch (value)
34899 {
34900 case SwapchainCreateFlagBitsKHR::eBindSfrKHX: return "BindSfrKHX";
34901 default: return "invalid";
34902 }
34903 }
34904
34905 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagsKHR value)
34906 {
34907 if (!value) return "{}";
34908 std::string result;
34909 if (value & SwapchainCreateFlagBitsKHR::eBindSfrKHX) result += "BindSfrKHX | ";
34910 return "{" + result.substr(0, result.size() - 3) + "}";
34911 }
34912
34913 VULKAN_HPP_INLINE std::string to_string(ViewportCoordinateSwizzleNV value)
34914 {
34915 switch (value)
34916 {
34917 case ViewportCoordinateSwizzleNV::ePositiveX: return "PositiveX";
34918 case ViewportCoordinateSwizzleNV::eNegativeX: return "NegativeX";
34919 case ViewportCoordinateSwizzleNV::ePositiveY: return "PositiveY";
34920 case ViewportCoordinateSwizzleNV::eNegativeY: return "NegativeY";
34921 case ViewportCoordinateSwizzleNV::ePositiveZ: return "PositiveZ";
34922 case ViewportCoordinateSwizzleNV::eNegativeZ: return "NegativeZ";
34923 case ViewportCoordinateSwizzleNV::ePositiveW: return "PositiveW";
34924 case ViewportCoordinateSwizzleNV::eNegativeW: return "NegativeW";
34925 default: return "invalid";
34926 }
34927 }
34928
34929 VULKAN_HPP_INLINE std::string to_string(DiscardRectangleModeEXT value)
34930 {
34931 switch (value)
34932 {
34933 case DiscardRectangleModeEXT::eInclusive: return "Inclusive";
34934 case DiscardRectangleModeEXT::eExclusive: return "Exclusive";
34935 default: return "invalid";
34936 }
34937 }
34938
34939 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlagBits value)
34940 {
34941 switch (value)
34942 {
34943 case SubpassDescriptionFlagBits::ePerViewAttributesNVX: return "PerViewAttributesNVX";
34944 case SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX: return "PerViewPositionXOnlyNVX";
34945 default: return "invalid";
34946 }
34947 }
34948
34949 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlags value)
34950 {
34951 if (!value) return "{}";
34952 std::string result;
34953 if (value & SubpassDescriptionFlagBits::ePerViewAttributesNVX) result += "PerViewAttributesNVX | ";
34954 if (value & SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX) result += "PerViewPositionXOnlyNVX | ";
34955 return "{" + result.substr(0, result.size() - 3) + "}";
34956 }
34957
Lenny Komowb79f04a2017-09-18 17:07:00 -060034958 VULKAN_HPP_INLINE std::string to_string(PointClippingBehaviorKHR value)
34959 {
34960 switch (value)
34961 {
34962 case PointClippingBehaviorKHR::eAllClipPlanes: return "AllClipPlanes";
34963 case PointClippingBehaviorKHR::eUserClipPlanesOnly: return "UserClipPlanesOnly";
34964 default: return "invalid";
34965 }
34966 }
34967
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060034968 VULKAN_HPP_INLINE std::string to_string(SamplerReductionModeEXT value)
34969 {
34970 switch (value)
34971 {
34972 case SamplerReductionModeEXT::eWeightedAverage: return "WeightedAverage";
34973 case SamplerReductionModeEXT::eMin: return "Min";
34974 case SamplerReductionModeEXT::eMax: return "Max";
34975 default: return "invalid";
34976 }
34977 }
34978
Lenny Komowb79f04a2017-09-18 17:07:00 -060034979 VULKAN_HPP_INLINE std::string to_string(TessellationDomainOriginKHR value)
34980 {
34981 switch (value)
34982 {
34983 case TessellationDomainOriginKHR::eUpperLeft: return "UpperLeft";
34984 case TessellationDomainOriginKHR::eLowerLeft: return "LowerLeft";
34985 default: return "invalid";
34986 }
34987 }
34988
34989 VULKAN_HPP_INLINE std::string to_string(SamplerYcbcrModelConversionKHR value)
34990 {
34991 switch (value)
34992 {
34993 case SamplerYcbcrModelConversionKHR::eRgbIdentity: return "RgbIdentity";
34994 case SamplerYcbcrModelConversionKHR::eYcbcrIdentity: return "YcbcrIdentity";
34995 case SamplerYcbcrModelConversionKHR::eYcbcr709: return "Ycbcr709";
34996 case SamplerYcbcrModelConversionKHR::eYcbcr601: return "Ycbcr601";
34997 case SamplerYcbcrModelConversionKHR::eYcbcr2020: return "Ycbcr2020";
34998 default: return "invalid";
34999 }
35000 }
35001
35002 VULKAN_HPP_INLINE std::string to_string(SamplerYcbcrRangeKHR value)
35003 {
35004 switch (value)
35005 {
35006 case SamplerYcbcrRangeKHR::eItuFull: return "ItuFull";
35007 case SamplerYcbcrRangeKHR::eItuNarrow: return "ItuNarrow";
35008 default: return "invalid";
35009 }
35010 }
35011
35012 VULKAN_HPP_INLINE std::string to_string(ChromaLocationKHR value)
35013 {
35014 switch (value)
35015 {
35016 case ChromaLocationKHR::eCositedEven: return "CositedEven";
35017 case ChromaLocationKHR::eMidpoint: return "Midpoint";
35018 default: return "invalid";
35019 }
35020 }
35021
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060035022 VULKAN_HPP_INLINE std::string to_string(BlendOverlapEXT value)
35023 {
35024 switch (value)
35025 {
35026 case BlendOverlapEXT::eUncorrelated: return "Uncorrelated";
35027 case BlendOverlapEXT::eDisjoint: return "Disjoint";
35028 case BlendOverlapEXT::eConjoint: return "Conjoint";
35029 default: return "invalid";
35030 }
35031 }
35032
35033 VULKAN_HPP_INLINE std::string to_string(CoverageModulationModeNV value)
35034 {
35035 switch (value)
35036 {
35037 case CoverageModulationModeNV::eNone: return "None";
35038 case CoverageModulationModeNV::eRgb: return "Rgb";
35039 case CoverageModulationModeNV::eAlpha: return "Alpha";
35040 case CoverageModulationModeNV::eRgba: return "Rgba";
35041 default: return "invalid";
35042 }
35043 }
35044
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060035045 VULKAN_HPP_INLINE std::string to_string(ValidationCacheHeaderVersionEXT value)
35046 {
35047 switch (value)
35048 {
35049 case ValidationCacheHeaderVersionEXT::eOne: return "One";
35050 default: return "invalid";
35051 }
35052 }
35053
Lenny Komowbed9b5c2016-08-11 11:23:15 -060035054} // namespace vk
35055
35056#endif