blob: 9b185f82d086a9a4024521c57183d90a1f2deb37 [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*/
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060036static_assert( VK_HEADER_VERSION == 60 , "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
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06002781 class ValidationCacheEXT
2782 {
2783 public:
2784 ValidationCacheEXT()
2785 : m_validationCacheEXT(VK_NULL_HANDLE)
2786 {}
2787
2788 ValidationCacheEXT( std::nullptr_t )
2789 : m_validationCacheEXT(VK_NULL_HANDLE)
2790 {}
2791
2792 VULKAN_HPP_TYPESAFE_EXPLICIT ValidationCacheEXT( VkValidationCacheEXT validationCacheEXT )
2793 : m_validationCacheEXT( validationCacheEXT )
2794 {}
2795
2796#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
2797 ValidationCacheEXT & operator=(VkValidationCacheEXT validationCacheEXT)
2798 {
2799 m_validationCacheEXT = validationCacheEXT;
2800 return *this;
2801 }
2802#endif
2803
2804 ValidationCacheEXT & operator=( std::nullptr_t )
2805 {
2806 m_validationCacheEXT = VK_NULL_HANDLE;
2807 return *this;
2808 }
2809
2810 bool operator==( ValidationCacheEXT const & rhs ) const
2811 {
2812 return m_validationCacheEXT == rhs.m_validationCacheEXT;
2813 }
2814
2815 bool operator!=(ValidationCacheEXT const & rhs ) const
2816 {
2817 return m_validationCacheEXT != rhs.m_validationCacheEXT;
2818 }
2819
2820 bool operator<(ValidationCacheEXT const & rhs ) const
2821 {
2822 return m_validationCacheEXT < rhs.m_validationCacheEXT;
2823 }
2824
2825
2826
2827 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkValidationCacheEXT() const
2828 {
2829 return m_validationCacheEXT;
2830 }
2831
2832 explicit operator bool() const
2833 {
2834 return m_validationCacheEXT != VK_NULL_HANDLE;
2835 }
2836
2837 bool operator!() const
2838 {
2839 return m_validationCacheEXT == VK_NULL_HANDLE;
2840 }
2841
2842 private:
2843 VkValidationCacheEXT m_validationCacheEXT;
2844 };
2845
2846 static_assert( sizeof( ValidationCacheEXT ) == sizeof( VkValidationCacheEXT ), "handle and wrapper have different size!" );
2847
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002848 class DisplayKHR
2849 {
2850 public:
2851 DisplayKHR()
2852 : m_displayKHR(VK_NULL_HANDLE)
2853 {}
2854
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002855 DisplayKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002856 : m_displayKHR(VK_NULL_HANDLE)
2857 {}
2858
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002859 VULKAN_HPP_TYPESAFE_EXPLICIT DisplayKHR( VkDisplayKHR displayKHR )
2860 : m_displayKHR( displayKHR )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002861 {}
2862
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002863#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002864 DisplayKHR & operator=(VkDisplayKHR displayKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002865 {
2866 m_displayKHR = displayKHR;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002867 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002868 }
2869#endif
2870
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002871 DisplayKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002872 {
2873 m_displayKHR = VK_NULL_HANDLE;
2874 return *this;
2875 }
2876
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002877 bool operator==( DisplayKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002878 {
2879 return m_displayKHR == rhs.m_displayKHR;
2880 }
2881
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002882 bool operator!=(DisplayKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002883 {
2884 return m_displayKHR != rhs.m_displayKHR;
2885 }
2886
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002887 bool operator<(DisplayKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002888 {
2889 return m_displayKHR < rhs.m_displayKHR;
2890 }
2891
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002892
2893
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002894 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDisplayKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002895 {
2896 return m_displayKHR;
2897 }
2898
2899 explicit operator bool() const
2900 {
2901 return m_displayKHR != VK_NULL_HANDLE;
2902 }
2903
2904 bool operator!() const
2905 {
2906 return m_displayKHR == VK_NULL_HANDLE;
2907 }
2908
2909 private:
2910 VkDisplayKHR m_displayKHR;
2911 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002912
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002913 static_assert( sizeof( DisplayKHR ) == sizeof( VkDisplayKHR ), "handle and wrapper have different size!" );
2914
2915 class DisplayModeKHR
2916 {
2917 public:
2918 DisplayModeKHR()
2919 : m_displayModeKHR(VK_NULL_HANDLE)
2920 {}
2921
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002922 DisplayModeKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002923 : m_displayModeKHR(VK_NULL_HANDLE)
2924 {}
2925
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002926 VULKAN_HPP_TYPESAFE_EXPLICIT DisplayModeKHR( VkDisplayModeKHR displayModeKHR )
2927 : m_displayModeKHR( displayModeKHR )
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 DisplayModeKHR & operator=(VkDisplayModeKHR displayModeKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002932 {
2933 m_displayModeKHR = displayModeKHR;
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 DisplayModeKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002939 {
2940 m_displayModeKHR = VK_NULL_HANDLE;
2941 return *this;
2942 }
2943
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002944 bool operator==( DisplayModeKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002945 {
2946 return m_displayModeKHR == rhs.m_displayModeKHR;
2947 }
2948
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002949 bool operator!=(DisplayModeKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002950 {
2951 return m_displayModeKHR != rhs.m_displayModeKHR;
2952 }
2953
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002954 bool operator<(DisplayModeKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06002955 {
2956 return m_displayModeKHR < rhs.m_displayModeKHR;
2957 }
2958
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002959
2960
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07002961 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDisplayModeKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002962 {
2963 return m_displayModeKHR;
2964 }
2965
2966 explicit operator bool() const
2967 {
2968 return m_displayModeKHR != VK_NULL_HANDLE;
2969 }
2970
2971 bool operator!() const
2972 {
2973 return m_displayModeKHR == VK_NULL_HANDLE;
2974 }
2975
2976 private:
2977 VkDisplayModeKHR m_displayModeKHR;
2978 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002979
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002980 static_assert( sizeof( DisplayModeKHR ) == sizeof( VkDisplayModeKHR ), "handle and wrapper have different size!" );
2981
2982 class SurfaceKHR
2983 {
2984 public:
2985 SurfaceKHR()
2986 : m_surfaceKHR(VK_NULL_HANDLE)
2987 {}
2988
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07002989 SurfaceKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07002990 : m_surfaceKHR(VK_NULL_HANDLE)
2991 {}
2992
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06002993 VULKAN_HPP_TYPESAFE_EXPLICIT SurfaceKHR( VkSurfaceKHR surfaceKHR )
2994 : m_surfaceKHR( surfaceKHR )
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 SurfaceKHR & operator=(VkSurfaceKHR surfaceKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06002999 {
3000 m_surfaceKHR = surfaceKHR;
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 SurfaceKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003006 {
3007 m_surfaceKHR = VK_NULL_HANDLE;
3008 return *this;
3009 }
3010
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003011 bool operator==( SurfaceKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003012 {
3013 return m_surfaceKHR == rhs.m_surfaceKHR;
3014 }
3015
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003016 bool operator!=(SurfaceKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003017 {
3018 return m_surfaceKHR != rhs.m_surfaceKHR;
3019 }
3020
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003021 bool operator<(SurfaceKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003022 {
3023 return m_surfaceKHR < rhs.m_surfaceKHR;
3024 }
3025
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003026
3027
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003028 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSurfaceKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003029 {
3030 return m_surfaceKHR;
3031 }
3032
3033 explicit operator bool() const
3034 {
3035 return m_surfaceKHR != VK_NULL_HANDLE;
3036 }
3037
3038 bool operator!() const
3039 {
3040 return m_surfaceKHR == VK_NULL_HANDLE;
3041 }
3042
3043 private:
3044 VkSurfaceKHR m_surfaceKHR;
3045 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003046
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003047 static_assert( sizeof( SurfaceKHR ) == sizeof( VkSurfaceKHR ), "handle and wrapper have different size!" );
3048
3049 class SwapchainKHR
3050 {
3051 public:
3052 SwapchainKHR()
3053 : m_swapchainKHR(VK_NULL_HANDLE)
3054 {}
3055
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07003056 SwapchainKHR( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003057 : m_swapchainKHR(VK_NULL_HANDLE)
3058 {}
3059
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003060 VULKAN_HPP_TYPESAFE_EXPLICIT SwapchainKHR( VkSwapchainKHR swapchainKHR )
3061 : m_swapchainKHR( swapchainKHR )
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 SwapchainKHR & operator=(VkSwapchainKHR swapchainKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003066 {
3067 m_swapchainKHR = swapchainKHR;
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 SwapchainKHR & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003073 {
3074 m_swapchainKHR = VK_NULL_HANDLE;
3075 return *this;
3076 }
3077
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003078 bool operator==( SwapchainKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003079 {
3080 return m_swapchainKHR == rhs.m_swapchainKHR;
3081 }
3082
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003083 bool operator!=(SwapchainKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003084 {
3085 return m_swapchainKHR != rhs.m_swapchainKHR;
3086 }
3087
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003088 bool operator<(SwapchainKHR const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003089 {
3090 return m_swapchainKHR < rhs.m_swapchainKHR;
3091 }
3092
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003093
3094
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003095 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkSwapchainKHR() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003096 {
3097 return m_swapchainKHR;
3098 }
3099
3100 explicit operator bool() const
3101 {
3102 return m_swapchainKHR != VK_NULL_HANDLE;
3103 }
3104
3105 bool operator!() const
3106 {
3107 return m_swapchainKHR == VK_NULL_HANDLE;
3108 }
3109
3110 private:
3111 VkSwapchainKHR m_swapchainKHR;
3112 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003113
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003114 static_assert( sizeof( SwapchainKHR ) == sizeof( VkSwapchainKHR ), "handle and wrapper have different size!" );
3115
3116 class DebugReportCallbackEXT
3117 {
3118 public:
3119 DebugReportCallbackEXT()
3120 : m_debugReportCallbackEXT(VK_NULL_HANDLE)
3121 {}
3122
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -07003123 DebugReportCallbackEXT( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003124 : m_debugReportCallbackEXT(VK_NULL_HANDLE)
3125 {}
3126
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003127 VULKAN_HPP_TYPESAFE_EXPLICIT DebugReportCallbackEXT( VkDebugReportCallbackEXT debugReportCallbackEXT )
3128 : m_debugReportCallbackEXT( debugReportCallbackEXT )
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 DebugReportCallbackEXT & operator=(VkDebugReportCallbackEXT debugReportCallbackEXT)
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003133 {
3134 m_debugReportCallbackEXT = debugReportCallbackEXT;
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 DebugReportCallbackEXT & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -07003140 {
3141 m_debugReportCallbackEXT = VK_NULL_HANDLE;
3142 return *this;
3143 }
3144
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003145 bool operator==( DebugReportCallbackEXT const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003146 {
3147 return m_debugReportCallbackEXT == rhs.m_debugReportCallbackEXT;
3148 }
3149
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003150 bool operator!=(DebugReportCallbackEXT const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003151 {
3152 return m_debugReportCallbackEXT != rhs.m_debugReportCallbackEXT;
3153 }
3154
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003155 bool operator<(DebugReportCallbackEXT const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -06003156 {
3157 return m_debugReportCallbackEXT < rhs.m_debugReportCallbackEXT;
3158 }
3159
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003160
3161
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -07003162 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDebugReportCallbackEXT() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003163 {
3164 return m_debugReportCallbackEXT;
3165 }
3166
3167 explicit operator bool() const
3168 {
3169 return m_debugReportCallbackEXT != VK_NULL_HANDLE;
3170 }
3171
3172 bool operator!() const
3173 {
3174 return m_debugReportCallbackEXT == VK_NULL_HANDLE;
3175 }
3176
3177 private:
3178 VkDebugReportCallbackEXT m_debugReportCallbackEXT;
3179 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003180
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003181 static_assert( sizeof( DebugReportCallbackEXT ) == sizeof( VkDebugReportCallbackEXT ), "handle and wrapper have different size!" );
3182
3183 struct Offset2D
3184 {
3185 Offset2D( int32_t x_ = 0, int32_t y_ = 0 )
3186 : x( x_ )
3187 , y( y_ )
3188 {
3189 }
3190
3191 Offset2D( VkOffset2D const & rhs )
3192 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003193 memcpy( this, &rhs, sizeof( Offset2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003194 }
3195
3196 Offset2D& operator=( VkOffset2D const & rhs )
3197 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003198 memcpy( this, &rhs, sizeof( Offset2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003199 return *this;
3200 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003201 Offset2D& setX( int32_t x_ )
3202 {
3203 x = x_;
3204 return *this;
3205 }
3206
3207 Offset2D& setY( int32_t y_ )
3208 {
3209 y = y_;
3210 return *this;
3211 }
3212
3213 operator const VkOffset2D&() const
3214 {
3215 return *reinterpret_cast<const VkOffset2D*>(this);
3216 }
3217
3218 bool operator==( Offset2D const& rhs ) const
3219 {
3220 return ( x == rhs.x )
3221 && ( y == rhs.y );
3222 }
3223
3224 bool operator!=( Offset2D const& rhs ) const
3225 {
3226 return !operator==( rhs );
3227 }
3228
3229 int32_t x;
3230 int32_t y;
3231 };
3232 static_assert( sizeof( Offset2D ) == sizeof( VkOffset2D ), "struct and wrapper have different size!" );
3233
3234 struct Offset3D
3235 {
3236 Offset3D( int32_t x_ = 0, int32_t y_ = 0, int32_t z_ = 0 )
3237 : x( x_ )
3238 , y( y_ )
3239 , z( z_ )
3240 {
3241 }
3242
3243 Offset3D( VkOffset3D const & rhs )
3244 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003245 memcpy( this, &rhs, sizeof( Offset3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003246 }
3247
3248 Offset3D& operator=( VkOffset3D const & rhs )
3249 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003250 memcpy( this, &rhs, sizeof( Offset3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003251 return *this;
3252 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003253 Offset3D& setX( int32_t x_ )
3254 {
3255 x = x_;
3256 return *this;
3257 }
3258
3259 Offset3D& setY( int32_t y_ )
3260 {
3261 y = y_;
3262 return *this;
3263 }
3264
3265 Offset3D& setZ( int32_t z_ )
3266 {
3267 z = z_;
3268 return *this;
3269 }
3270
3271 operator const VkOffset3D&() const
3272 {
3273 return *reinterpret_cast<const VkOffset3D*>(this);
3274 }
3275
3276 bool operator==( Offset3D const& rhs ) const
3277 {
3278 return ( x == rhs.x )
3279 && ( y == rhs.y )
3280 && ( z == rhs.z );
3281 }
3282
3283 bool operator!=( Offset3D const& rhs ) const
3284 {
3285 return !operator==( rhs );
3286 }
3287
3288 int32_t x;
3289 int32_t y;
3290 int32_t z;
3291 };
3292 static_assert( sizeof( Offset3D ) == sizeof( VkOffset3D ), "struct and wrapper have different size!" );
3293
3294 struct Extent2D
3295 {
3296 Extent2D( uint32_t width_ = 0, uint32_t height_ = 0 )
3297 : width( width_ )
3298 , height( height_ )
3299 {
3300 }
3301
3302 Extent2D( VkExtent2D const & rhs )
3303 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003304 memcpy( this, &rhs, sizeof( Extent2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003305 }
3306
3307 Extent2D& operator=( VkExtent2D const & rhs )
3308 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003309 memcpy( this, &rhs, sizeof( Extent2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003310 return *this;
3311 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003312 Extent2D& setWidth( uint32_t width_ )
3313 {
3314 width = width_;
3315 return *this;
3316 }
3317
3318 Extent2D& setHeight( uint32_t height_ )
3319 {
3320 height = height_;
3321 return *this;
3322 }
3323
3324 operator const VkExtent2D&() const
3325 {
3326 return *reinterpret_cast<const VkExtent2D*>(this);
3327 }
3328
3329 bool operator==( Extent2D const& rhs ) const
3330 {
3331 return ( width == rhs.width )
3332 && ( height == rhs.height );
3333 }
3334
3335 bool operator!=( Extent2D const& rhs ) const
3336 {
3337 return !operator==( rhs );
3338 }
3339
3340 uint32_t width;
3341 uint32_t height;
3342 };
3343 static_assert( sizeof( Extent2D ) == sizeof( VkExtent2D ), "struct and wrapper have different size!" );
3344
3345 struct Extent3D
3346 {
3347 Extent3D( uint32_t width_ = 0, uint32_t height_ = 0, uint32_t depth_ = 0 )
3348 : width( width_ )
3349 , height( height_ )
3350 , depth( depth_ )
3351 {
3352 }
3353
3354 Extent3D( VkExtent3D const & rhs )
3355 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003356 memcpy( this, &rhs, sizeof( Extent3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003357 }
3358
3359 Extent3D& operator=( VkExtent3D const & rhs )
3360 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003361 memcpy( this, &rhs, sizeof( Extent3D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003362 return *this;
3363 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003364 Extent3D& setWidth( uint32_t width_ )
3365 {
3366 width = width_;
3367 return *this;
3368 }
3369
3370 Extent3D& setHeight( uint32_t height_ )
3371 {
3372 height = height_;
3373 return *this;
3374 }
3375
3376 Extent3D& setDepth( uint32_t depth_ )
3377 {
3378 depth = depth_;
3379 return *this;
3380 }
3381
3382 operator const VkExtent3D&() const
3383 {
3384 return *reinterpret_cast<const VkExtent3D*>(this);
3385 }
3386
3387 bool operator==( Extent3D const& rhs ) const
3388 {
3389 return ( width == rhs.width )
3390 && ( height == rhs.height )
3391 && ( depth == rhs.depth );
3392 }
3393
3394 bool operator!=( Extent3D const& rhs ) const
3395 {
3396 return !operator==( rhs );
3397 }
3398
3399 uint32_t width;
3400 uint32_t height;
3401 uint32_t depth;
3402 };
3403 static_assert( sizeof( Extent3D ) == sizeof( VkExtent3D ), "struct and wrapper have different size!" );
3404
3405 struct Viewport
3406 {
3407 Viewport( float x_ = 0, float y_ = 0, float width_ = 0, float height_ = 0, float minDepth_ = 0, float maxDepth_ = 0 )
3408 : x( x_ )
3409 , y( y_ )
3410 , width( width_ )
3411 , height( height_ )
3412 , minDepth( minDepth_ )
3413 , maxDepth( maxDepth_ )
3414 {
3415 }
3416
3417 Viewport( VkViewport const & rhs )
3418 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003419 memcpy( this, &rhs, sizeof( Viewport ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003420 }
3421
3422 Viewport& operator=( VkViewport const & rhs )
3423 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003424 memcpy( this, &rhs, sizeof( Viewport ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003425 return *this;
3426 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003427 Viewport& setX( float x_ )
3428 {
3429 x = x_;
3430 return *this;
3431 }
3432
3433 Viewport& setY( float y_ )
3434 {
3435 y = y_;
3436 return *this;
3437 }
3438
3439 Viewport& setWidth( float width_ )
3440 {
3441 width = width_;
3442 return *this;
3443 }
3444
3445 Viewport& setHeight( float height_ )
3446 {
3447 height = height_;
3448 return *this;
3449 }
3450
3451 Viewport& setMinDepth( float minDepth_ )
3452 {
3453 minDepth = minDepth_;
3454 return *this;
3455 }
3456
3457 Viewport& setMaxDepth( float maxDepth_ )
3458 {
3459 maxDepth = maxDepth_;
3460 return *this;
3461 }
3462
3463 operator const VkViewport&() const
3464 {
3465 return *reinterpret_cast<const VkViewport*>(this);
3466 }
3467
3468 bool operator==( Viewport const& rhs ) const
3469 {
3470 return ( x == rhs.x )
3471 && ( y == rhs.y )
3472 && ( width == rhs.width )
3473 && ( height == rhs.height )
3474 && ( minDepth == rhs.minDepth )
3475 && ( maxDepth == rhs.maxDepth );
3476 }
3477
3478 bool operator!=( Viewport const& rhs ) const
3479 {
3480 return !operator==( rhs );
3481 }
3482
3483 float x;
3484 float y;
3485 float width;
3486 float height;
3487 float minDepth;
3488 float maxDepth;
3489 };
3490 static_assert( sizeof( Viewport ) == sizeof( VkViewport ), "struct and wrapper have different size!" );
3491
3492 struct Rect2D
3493 {
3494 Rect2D( Offset2D offset_ = Offset2D(), Extent2D extent_ = Extent2D() )
3495 : offset( offset_ )
3496 , extent( extent_ )
3497 {
3498 }
3499
3500 Rect2D( VkRect2D const & rhs )
3501 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003502 memcpy( this, &rhs, sizeof( Rect2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003503 }
3504
3505 Rect2D& operator=( VkRect2D const & rhs )
3506 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003507 memcpy( this, &rhs, sizeof( Rect2D ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003508 return *this;
3509 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003510 Rect2D& setOffset( Offset2D offset_ )
3511 {
3512 offset = offset_;
3513 return *this;
3514 }
3515
3516 Rect2D& setExtent( Extent2D extent_ )
3517 {
3518 extent = extent_;
3519 return *this;
3520 }
3521
3522 operator const VkRect2D&() const
3523 {
3524 return *reinterpret_cast<const VkRect2D*>(this);
3525 }
3526
3527 bool operator==( Rect2D const& rhs ) const
3528 {
3529 return ( offset == rhs.offset )
3530 && ( extent == rhs.extent );
3531 }
3532
3533 bool operator!=( Rect2D const& rhs ) const
3534 {
3535 return !operator==( rhs );
3536 }
3537
3538 Offset2D offset;
3539 Extent2D extent;
3540 };
3541 static_assert( sizeof( Rect2D ) == sizeof( VkRect2D ), "struct and wrapper have different size!" );
3542
3543 struct ClearRect
3544 {
3545 ClearRect( Rect2D rect_ = Rect2D(), uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
3546 : rect( rect_ )
3547 , baseArrayLayer( baseArrayLayer_ )
3548 , layerCount( layerCount_ )
3549 {
3550 }
3551
3552 ClearRect( VkClearRect const & rhs )
3553 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003554 memcpy( this, &rhs, sizeof( ClearRect ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003555 }
3556
3557 ClearRect& operator=( VkClearRect const & rhs )
3558 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003559 memcpy( this, &rhs, sizeof( ClearRect ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003560 return *this;
3561 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003562 ClearRect& setRect( Rect2D rect_ )
3563 {
3564 rect = rect_;
3565 return *this;
3566 }
3567
3568 ClearRect& setBaseArrayLayer( uint32_t baseArrayLayer_ )
3569 {
3570 baseArrayLayer = baseArrayLayer_;
3571 return *this;
3572 }
3573
3574 ClearRect& setLayerCount( uint32_t layerCount_ )
3575 {
3576 layerCount = layerCount_;
3577 return *this;
3578 }
3579
3580 operator const VkClearRect&() const
3581 {
3582 return *reinterpret_cast<const VkClearRect*>(this);
3583 }
3584
3585 bool operator==( ClearRect const& rhs ) const
3586 {
3587 return ( rect == rhs.rect )
3588 && ( baseArrayLayer == rhs.baseArrayLayer )
3589 && ( layerCount == rhs.layerCount );
3590 }
3591
3592 bool operator!=( ClearRect const& rhs ) const
3593 {
3594 return !operator==( rhs );
3595 }
3596
3597 Rect2D rect;
3598 uint32_t baseArrayLayer;
3599 uint32_t layerCount;
3600 };
3601 static_assert( sizeof( ClearRect ) == sizeof( VkClearRect ), "struct and wrapper have different size!" );
3602
3603 struct ExtensionProperties
3604 {
3605 operator const VkExtensionProperties&() const
3606 {
3607 return *reinterpret_cast<const VkExtensionProperties*>(this);
3608 }
3609
3610 bool operator==( ExtensionProperties const& rhs ) const
3611 {
3612 return ( memcmp( extensionName, rhs.extensionName, VK_MAX_EXTENSION_NAME_SIZE * sizeof( char ) ) == 0 )
3613 && ( specVersion == rhs.specVersion );
3614 }
3615
3616 bool operator!=( ExtensionProperties const& rhs ) const
3617 {
3618 return !operator==( rhs );
3619 }
3620
3621 char extensionName[VK_MAX_EXTENSION_NAME_SIZE];
3622 uint32_t specVersion;
3623 };
3624 static_assert( sizeof( ExtensionProperties ) == sizeof( VkExtensionProperties ), "struct and wrapper have different size!" );
3625
3626 struct LayerProperties
3627 {
3628 operator const VkLayerProperties&() const
3629 {
3630 return *reinterpret_cast<const VkLayerProperties*>(this);
3631 }
3632
3633 bool operator==( LayerProperties const& rhs ) const
3634 {
3635 return ( memcmp( layerName, rhs.layerName, VK_MAX_EXTENSION_NAME_SIZE * sizeof( char ) ) == 0 )
3636 && ( specVersion == rhs.specVersion )
3637 && ( implementationVersion == rhs.implementationVersion )
3638 && ( memcmp( description, rhs.description, VK_MAX_DESCRIPTION_SIZE * sizeof( char ) ) == 0 );
3639 }
3640
3641 bool operator!=( LayerProperties const& rhs ) const
3642 {
3643 return !operator==( rhs );
3644 }
3645
3646 char layerName[VK_MAX_EXTENSION_NAME_SIZE];
3647 uint32_t specVersion;
3648 uint32_t implementationVersion;
3649 char description[VK_MAX_DESCRIPTION_SIZE];
3650 };
3651 static_assert( sizeof( LayerProperties ) == sizeof( VkLayerProperties ), "struct and wrapper have different size!" );
3652
3653 struct AllocationCallbacks
3654 {
3655 AllocationCallbacks( void* pUserData_ = nullptr, PFN_vkAllocationFunction pfnAllocation_ = nullptr, PFN_vkReallocationFunction pfnReallocation_ = nullptr, PFN_vkFreeFunction pfnFree_ = nullptr, PFN_vkInternalAllocationNotification pfnInternalAllocation_ = nullptr, PFN_vkInternalFreeNotification pfnInternalFree_ = nullptr )
3656 : pUserData( pUserData_ )
3657 , pfnAllocation( pfnAllocation_ )
3658 , pfnReallocation( pfnReallocation_ )
3659 , pfnFree( pfnFree_ )
3660 , pfnInternalAllocation( pfnInternalAllocation_ )
3661 , pfnInternalFree( pfnInternalFree_ )
3662 {
3663 }
3664
3665 AllocationCallbacks( VkAllocationCallbacks const & rhs )
3666 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003667 memcpy( this, &rhs, sizeof( AllocationCallbacks ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003668 }
3669
3670 AllocationCallbacks& operator=( VkAllocationCallbacks const & rhs )
3671 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003672 memcpy( this, &rhs, sizeof( AllocationCallbacks ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003673 return *this;
3674 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003675 AllocationCallbacks& setPUserData( void* pUserData_ )
3676 {
3677 pUserData = pUserData_;
3678 return *this;
3679 }
3680
3681 AllocationCallbacks& setPfnAllocation( PFN_vkAllocationFunction pfnAllocation_ )
3682 {
3683 pfnAllocation = pfnAllocation_;
3684 return *this;
3685 }
3686
3687 AllocationCallbacks& setPfnReallocation( PFN_vkReallocationFunction pfnReallocation_ )
3688 {
3689 pfnReallocation = pfnReallocation_;
3690 return *this;
3691 }
3692
3693 AllocationCallbacks& setPfnFree( PFN_vkFreeFunction pfnFree_ )
3694 {
3695 pfnFree = pfnFree_;
3696 return *this;
3697 }
3698
3699 AllocationCallbacks& setPfnInternalAllocation( PFN_vkInternalAllocationNotification pfnInternalAllocation_ )
3700 {
3701 pfnInternalAllocation = pfnInternalAllocation_;
3702 return *this;
3703 }
3704
3705 AllocationCallbacks& setPfnInternalFree( PFN_vkInternalFreeNotification pfnInternalFree_ )
3706 {
3707 pfnInternalFree = pfnInternalFree_;
3708 return *this;
3709 }
3710
3711 operator const VkAllocationCallbacks&() const
3712 {
3713 return *reinterpret_cast<const VkAllocationCallbacks*>(this);
3714 }
3715
3716 bool operator==( AllocationCallbacks const& rhs ) const
3717 {
3718 return ( pUserData == rhs.pUserData )
3719 && ( pfnAllocation == rhs.pfnAllocation )
3720 && ( pfnReallocation == rhs.pfnReallocation )
3721 && ( pfnFree == rhs.pfnFree )
3722 && ( pfnInternalAllocation == rhs.pfnInternalAllocation )
3723 && ( pfnInternalFree == rhs.pfnInternalFree );
3724 }
3725
3726 bool operator!=( AllocationCallbacks const& rhs ) const
3727 {
3728 return !operator==( rhs );
3729 }
3730
3731 void* pUserData;
3732 PFN_vkAllocationFunction pfnAllocation;
3733 PFN_vkReallocationFunction pfnReallocation;
3734 PFN_vkFreeFunction pfnFree;
3735 PFN_vkInternalAllocationNotification pfnInternalAllocation;
3736 PFN_vkInternalFreeNotification pfnInternalFree;
3737 };
3738 static_assert( sizeof( AllocationCallbacks ) == sizeof( VkAllocationCallbacks ), "struct and wrapper have different size!" );
3739
3740 struct MemoryRequirements
3741 {
3742 operator const VkMemoryRequirements&() const
3743 {
3744 return *reinterpret_cast<const VkMemoryRequirements*>(this);
3745 }
3746
3747 bool operator==( MemoryRequirements const& rhs ) const
3748 {
3749 return ( size == rhs.size )
3750 && ( alignment == rhs.alignment )
3751 && ( memoryTypeBits == rhs.memoryTypeBits );
3752 }
3753
3754 bool operator!=( MemoryRequirements const& rhs ) const
3755 {
3756 return !operator==( rhs );
3757 }
3758
3759 DeviceSize size;
3760 DeviceSize alignment;
3761 uint32_t memoryTypeBits;
3762 };
3763 static_assert( sizeof( MemoryRequirements ) == sizeof( VkMemoryRequirements ), "struct and wrapper have different size!" );
3764
3765 struct DescriptorBufferInfo
3766 {
3767 DescriptorBufferInfo( Buffer buffer_ = Buffer(), DeviceSize offset_ = 0, DeviceSize range_ = 0 )
3768 : buffer( buffer_ )
3769 , offset( offset_ )
3770 , range( range_ )
3771 {
3772 }
3773
3774 DescriptorBufferInfo( VkDescriptorBufferInfo const & rhs )
3775 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003776 memcpy( this, &rhs, sizeof( DescriptorBufferInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003777 }
3778
3779 DescriptorBufferInfo& operator=( VkDescriptorBufferInfo const & rhs )
3780 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003781 memcpy( this, &rhs, sizeof( DescriptorBufferInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003782 return *this;
3783 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003784 DescriptorBufferInfo& setBuffer( Buffer buffer_ )
3785 {
3786 buffer = buffer_;
3787 return *this;
3788 }
3789
3790 DescriptorBufferInfo& setOffset( DeviceSize offset_ )
3791 {
3792 offset = offset_;
3793 return *this;
3794 }
3795
3796 DescriptorBufferInfo& setRange( DeviceSize range_ )
3797 {
3798 range = range_;
3799 return *this;
3800 }
3801
3802 operator const VkDescriptorBufferInfo&() const
3803 {
3804 return *reinterpret_cast<const VkDescriptorBufferInfo*>(this);
3805 }
3806
3807 bool operator==( DescriptorBufferInfo const& rhs ) const
3808 {
3809 return ( buffer == rhs.buffer )
3810 && ( offset == rhs.offset )
3811 && ( range == rhs.range );
3812 }
3813
3814 bool operator!=( DescriptorBufferInfo const& rhs ) const
3815 {
3816 return !operator==( rhs );
3817 }
3818
3819 Buffer buffer;
3820 DeviceSize offset;
3821 DeviceSize range;
3822 };
3823 static_assert( sizeof( DescriptorBufferInfo ) == sizeof( VkDescriptorBufferInfo ), "struct and wrapper have different size!" );
3824
3825 struct SubresourceLayout
3826 {
3827 operator const VkSubresourceLayout&() const
3828 {
3829 return *reinterpret_cast<const VkSubresourceLayout*>(this);
3830 }
3831
3832 bool operator==( SubresourceLayout const& rhs ) const
3833 {
3834 return ( offset == rhs.offset )
3835 && ( size == rhs.size )
3836 && ( rowPitch == rhs.rowPitch )
3837 && ( arrayPitch == rhs.arrayPitch )
3838 && ( depthPitch == rhs.depthPitch );
3839 }
3840
3841 bool operator!=( SubresourceLayout const& rhs ) const
3842 {
3843 return !operator==( rhs );
3844 }
3845
3846 DeviceSize offset;
3847 DeviceSize size;
3848 DeviceSize rowPitch;
3849 DeviceSize arrayPitch;
3850 DeviceSize depthPitch;
3851 };
3852 static_assert( sizeof( SubresourceLayout ) == sizeof( VkSubresourceLayout ), "struct and wrapper have different size!" );
3853
3854 struct BufferCopy
3855 {
3856 BufferCopy( DeviceSize srcOffset_ = 0, DeviceSize dstOffset_ = 0, DeviceSize size_ = 0 )
3857 : srcOffset( srcOffset_ )
3858 , dstOffset( dstOffset_ )
3859 , size( size_ )
3860 {
3861 }
3862
3863 BufferCopy( VkBufferCopy const & rhs )
3864 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003865 memcpy( this, &rhs, sizeof( BufferCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003866 }
3867
3868 BufferCopy& operator=( VkBufferCopy const & rhs )
3869 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003870 memcpy( this, &rhs, sizeof( BufferCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003871 return *this;
3872 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003873 BufferCopy& setSrcOffset( DeviceSize srcOffset_ )
3874 {
3875 srcOffset = srcOffset_;
3876 return *this;
3877 }
3878
3879 BufferCopy& setDstOffset( DeviceSize dstOffset_ )
3880 {
3881 dstOffset = dstOffset_;
3882 return *this;
3883 }
3884
3885 BufferCopy& setSize( DeviceSize size_ )
3886 {
3887 size = size_;
3888 return *this;
3889 }
3890
3891 operator const VkBufferCopy&() const
3892 {
3893 return *reinterpret_cast<const VkBufferCopy*>(this);
3894 }
3895
3896 bool operator==( BufferCopy const& rhs ) const
3897 {
3898 return ( srcOffset == rhs.srcOffset )
3899 && ( dstOffset == rhs.dstOffset )
3900 && ( size == rhs.size );
3901 }
3902
3903 bool operator!=( BufferCopy const& rhs ) const
3904 {
3905 return !operator==( rhs );
3906 }
3907
3908 DeviceSize srcOffset;
3909 DeviceSize dstOffset;
3910 DeviceSize size;
3911 };
3912 static_assert( sizeof( BufferCopy ) == sizeof( VkBufferCopy ), "struct and wrapper have different size!" );
3913
3914 struct SpecializationMapEntry
3915 {
3916 SpecializationMapEntry( uint32_t constantID_ = 0, uint32_t offset_ = 0, size_t size_ = 0 )
3917 : constantID( constantID_ )
3918 , offset( offset_ )
3919 , size( size_ )
3920 {
3921 }
3922
3923 SpecializationMapEntry( VkSpecializationMapEntry const & rhs )
3924 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003925 memcpy( this, &rhs, sizeof( SpecializationMapEntry ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003926 }
3927
3928 SpecializationMapEntry& operator=( VkSpecializationMapEntry const & rhs )
3929 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003930 memcpy( this, &rhs, sizeof( SpecializationMapEntry ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003931 return *this;
3932 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003933 SpecializationMapEntry& setConstantID( uint32_t constantID_ )
3934 {
3935 constantID = constantID_;
3936 return *this;
3937 }
3938
3939 SpecializationMapEntry& setOffset( uint32_t offset_ )
3940 {
3941 offset = offset_;
3942 return *this;
3943 }
3944
3945 SpecializationMapEntry& setSize( size_t size_ )
3946 {
3947 size = size_;
3948 return *this;
3949 }
3950
3951 operator const VkSpecializationMapEntry&() const
3952 {
3953 return *reinterpret_cast<const VkSpecializationMapEntry*>(this);
3954 }
3955
3956 bool operator==( SpecializationMapEntry const& rhs ) const
3957 {
3958 return ( constantID == rhs.constantID )
3959 && ( offset == rhs.offset )
3960 && ( size == rhs.size );
3961 }
3962
3963 bool operator!=( SpecializationMapEntry const& rhs ) const
3964 {
3965 return !operator==( rhs );
3966 }
3967
3968 uint32_t constantID;
3969 uint32_t offset;
3970 size_t size;
3971 };
3972 static_assert( sizeof( SpecializationMapEntry ) == sizeof( VkSpecializationMapEntry ), "struct and wrapper have different size!" );
3973
3974 struct SpecializationInfo
3975 {
3976 SpecializationInfo( uint32_t mapEntryCount_ = 0, const SpecializationMapEntry* pMapEntries_ = nullptr, size_t dataSize_ = 0, const void* pData_ = nullptr )
3977 : mapEntryCount( mapEntryCount_ )
3978 , pMapEntries( pMapEntries_ )
3979 , dataSize( dataSize_ )
3980 , pData( pData_ )
3981 {
3982 }
3983
3984 SpecializationInfo( VkSpecializationInfo const & rhs )
3985 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003986 memcpy( this, &rhs, sizeof( SpecializationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003987 }
3988
3989 SpecializationInfo& operator=( VkSpecializationInfo const & rhs )
3990 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06003991 memcpy( this, &rhs, sizeof( SpecializationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003992 return *this;
3993 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06003994 SpecializationInfo& setMapEntryCount( uint32_t mapEntryCount_ )
3995 {
3996 mapEntryCount = mapEntryCount_;
3997 return *this;
3998 }
3999
4000 SpecializationInfo& setPMapEntries( const SpecializationMapEntry* pMapEntries_ )
4001 {
4002 pMapEntries = pMapEntries_;
4003 return *this;
4004 }
4005
4006 SpecializationInfo& setDataSize( size_t dataSize_ )
4007 {
4008 dataSize = dataSize_;
4009 return *this;
4010 }
4011
4012 SpecializationInfo& setPData( const void* pData_ )
4013 {
4014 pData = pData_;
4015 return *this;
4016 }
4017
4018 operator const VkSpecializationInfo&() const
4019 {
4020 return *reinterpret_cast<const VkSpecializationInfo*>(this);
4021 }
4022
4023 bool operator==( SpecializationInfo const& rhs ) const
4024 {
4025 return ( mapEntryCount == rhs.mapEntryCount )
4026 && ( pMapEntries == rhs.pMapEntries )
4027 && ( dataSize == rhs.dataSize )
4028 && ( pData == rhs.pData );
4029 }
4030
4031 bool operator!=( SpecializationInfo const& rhs ) const
4032 {
4033 return !operator==( rhs );
4034 }
4035
4036 uint32_t mapEntryCount;
4037 const SpecializationMapEntry* pMapEntries;
4038 size_t dataSize;
4039 const void* pData;
4040 };
4041 static_assert( sizeof( SpecializationInfo ) == sizeof( VkSpecializationInfo ), "struct and wrapper have different size!" );
4042
4043 union ClearColorValue
4044 {
4045 ClearColorValue( const std::array<float,4>& float32_ = { {0} } )
4046 {
4047 memcpy( &float32, float32_.data(), 4 * sizeof( float ) );
4048 }
4049
4050 ClearColorValue( const std::array<int32_t,4>& int32_ )
4051 {
4052 memcpy( &int32, int32_.data(), 4 * sizeof( int32_t ) );
4053 }
4054
4055 ClearColorValue( const std::array<uint32_t,4>& uint32_ )
4056 {
4057 memcpy( &uint32, uint32_.data(), 4 * sizeof( uint32_t ) );
4058 }
4059
4060 ClearColorValue& setFloat32( std::array<float,4> float32_ )
4061 {
4062 memcpy( &float32, float32_.data(), 4 * sizeof( float ) );
4063 return *this;
4064 }
4065
4066 ClearColorValue& setInt32( std::array<int32_t,4> int32_ )
4067 {
4068 memcpy( &int32, int32_.data(), 4 * sizeof( int32_t ) );
4069 return *this;
4070 }
4071
4072 ClearColorValue& setUint32( std::array<uint32_t,4> uint32_ )
4073 {
4074 memcpy( &uint32, uint32_.data(), 4 * sizeof( uint32_t ) );
4075 return *this;
4076 }
4077
4078 operator VkClearColorValue const& () const
4079 {
4080 return *reinterpret_cast<const VkClearColorValue*>(this);
4081 }
4082
4083 float float32[4];
4084 int32_t int32[4];
4085 uint32_t uint32[4];
4086 };
4087
4088 struct ClearDepthStencilValue
4089 {
4090 ClearDepthStencilValue( float depth_ = 0, uint32_t stencil_ = 0 )
4091 : depth( depth_ )
4092 , stencil( stencil_ )
4093 {
4094 }
4095
4096 ClearDepthStencilValue( VkClearDepthStencilValue const & rhs )
4097 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004098 memcpy( this, &rhs, sizeof( ClearDepthStencilValue ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004099 }
4100
4101 ClearDepthStencilValue& operator=( VkClearDepthStencilValue const & rhs )
4102 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004103 memcpy( this, &rhs, sizeof( ClearDepthStencilValue ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004104 return *this;
4105 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004106 ClearDepthStencilValue& setDepth( float depth_ )
4107 {
4108 depth = depth_;
4109 return *this;
4110 }
4111
4112 ClearDepthStencilValue& setStencil( uint32_t stencil_ )
4113 {
4114 stencil = stencil_;
4115 return *this;
4116 }
4117
4118 operator const VkClearDepthStencilValue&() const
4119 {
4120 return *reinterpret_cast<const VkClearDepthStencilValue*>(this);
4121 }
4122
4123 bool operator==( ClearDepthStencilValue const& rhs ) const
4124 {
4125 return ( depth == rhs.depth )
4126 && ( stencil == rhs.stencil );
4127 }
4128
4129 bool operator!=( ClearDepthStencilValue const& rhs ) const
4130 {
4131 return !operator==( rhs );
4132 }
4133
4134 float depth;
4135 uint32_t stencil;
4136 };
4137 static_assert( sizeof( ClearDepthStencilValue ) == sizeof( VkClearDepthStencilValue ), "struct and wrapper have different size!" );
4138
4139 union ClearValue
4140 {
4141 ClearValue( ClearColorValue color_ = ClearColorValue() )
4142 {
4143 color = color_;
4144 }
4145
4146 ClearValue( ClearDepthStencilValue depthStencil_ )
4147 {
4148 depthStencil = depthStencil_;
4149 }
4150
4151 ClearValue& setColor( ClearColorValue color_ )
4152 {
4153 color = color_;
4154 return *this;
4155 }
4156
4157 ClearValue& setDepthStencil( ClearDepthStencilValue depthStencil_ )
4158 {
4159 depthStencil = depthStencil_;
4160 return *this;
4161 }
4162
4163 operator VkClearValue const& () const
4164 {
4165 return *reinterpret_cast<const VkClearValue*>(this);
4166 }
4167
4168#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
4169 ClearColorValue color;
4170 ClearDepthStencilValue depthStencil;
4171#else
4172 VkClearColorValue color;
4173 VkClearDepthStencilValue depthStencil;
4174#endif // VULKAN_HPP_HAS_UNRESTRICTED_UNIONS
4175 };
4176
4177 struct PhysicalDeviceFeatures
4178 {
4179 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 )
4180 : robustBufferAccess( robustBufferAccess_ )
4181 , fullDrawIndexUint32( fullDrawIndexUint32_ )
4182 , imageCubeArray( imageCubeArray_ )
4183 , independentBlend( independentBlend_ )
4184 , geometryShader( geometryShader_ )
4185 , tessellationShader( tessellationShader_ )
4186 , sampleRateShading( sampleRateShading_ )
4187 , dualSrcBlend( dualSrcBlend_ )
4188 , logicOp( logicOp_ )
4189 , multiDrawIndirect( multiDrawIndirect_ )
4190 , drawIndirectFirstInstance( drawIndirectFirstInstance_ )
4191 , depthClamp( depthClamp_ )
4192 , depthBiasClamp( depthBiasClamp_ )
4193 , fillModeNonSolid( fillModeNonSolid_ )
4194 , depthBounds( depthBounds_ )
4195 , wideLines( wideLines_ )
4196 , largePoints( largePoints_ )
4197 , alphaToOne( alphaToOne_ )
4198 , multiViewport( multiViewport_ )
4199 , samplerAnisotropy( samplerAnisotropy_ )
4200 , textureCompressionETC2( textureCompressionETC2_ )
4201 , textureCompressionASTC_LDR( textureCompressionASTC_LDR_ )
4202 , textureCompressionBC( textureCompressionBC_ )
4203 , occlusionQueryPrecise( occlusionQueryPrecise_ )
4204 , pipelineStatisticsQuery( pipelineStatisticsQuery_ )
4205 , vertexPipelineStoresAndAtomics( vertexPipelineStoresAndAtomics_ )
4206 , fragmentStoresAndAtomics( fragmentStoresAndAtomics_ )
4207 , shaderTessellationAndGeometryPointSize( shaderTessellationAndGeometryPointSize_ )
4208 , shaderImageGatherExtended( shaderImageGatherExtended_ )
4209 , shaderStorageImageExtendedFormats( shaderStorageImageExtendedFormats_ )
4210 , shaderStorageImageMultisample( shaderStorageImageMultisample_ )
4211 , shaderStorageImageReadWithoutFormat( shaderStorageImageReadWithoutFormat_ )
4212 , shaderStorageImageWriteWithoutFormat( shaderStorageImageWriteWithoutFormat_ )
4213 , shaderUniformBufferArrayDynamicIndexing( shaderUniformBufferArrayDynamicIndexing_ )
4214 , shaderSampledImageArrayDynamicIndexing( shaderSampledImageArrayDynamicIndexing_ )
4215 , shaderStorageBufferArrayDynamicIndexing( shaderStorageBufferArrayDynamicIndexing_ )
4216 , shaderStorageImageArrayDynamicIndexing( shaderStorageImageArrayDynamicIndexing_ )
4217 , shaderClipDistance( shaderClipDistance_ )
4218 , shaderCullDistance( shaderCullDistance_ )
4219 , shaderFloat64( shaderFloat64_ )
4220 , shaderInt64( shaderInt64_ )
4221 , shaderInt16( shaderInt16_ )
4222 , shaderResourceResidency( shaderResourceResidency_ )
4223 , shaderResourceMinLod( shaderResourceMinLod_ )
4224 , sparseBinding( sparseBinding_ )
4225 , sparseResidencyBuffer( sparseResidencyBuffer_ )
4226 , sparseResidencyImage2D( sparseResidencyImage2D_ )
4227 , sparseResidencyImage3D( sparseResidencyImage3D_ )
4228 , sparseResidency2Samples( sparseResidency2Samples_ )
4229 , sparseResidency4Samples( sparseResidency4Samples_ )
4230 , sparseResidency8Samples( sparseResidency8Samples_ )
4231 , sparseResidency16Samples( sparseResidency16Samples_ )
4232 , sparseResidencyAliased( sparseResidencyAliased_ )
4233 , variableMultisampleRate( variableMultisampleRate_ )
4234 , inheritedQueries( inheritedQueries_ )
4235 {
4236 }
4237
4238 PhysicalDeviceFeatures( VkPhysicalDeviceFeatures const & rhs )
4239 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004240 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004241 }
4242
4243 PhysicalDeviceFeatures& operator=( VkPhysicalDeviceFeatures const & rhs )
4244 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004245 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004246 return *this;
4247 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004248 PhysicalDeviceFeatures& setRobustBufferAccess( Bool32 robustBufferAccess_ )
4249 {
4250 robustBufferAccess = robustBufferAccess_;
4251 return *this;
4252 }
4253
4254 PhysicalDeviceFeatures& setFullDrawIndexUint32( Bool32 fullDrawIndexUint32_ )
4255 {
4256 fullDrawIndexUint32 = fullDrawIndexUint32_;
4257 return *this;
4258 }
4259
4260 PhysicalDeviceFeatures& setImageCubeArray( Bool32 imageCubeArray_ )
4261 {
4262 imageCubeArray = imageCubeArray_;
4263 return *this;
4264 }
4265
4266 PhysicalDeviceFeatures& setIndependentBlend( Bool32 independentBlend_ )
4267 {
4268 independentBlend = independentBlend_;
4269 return *this;
4270 }
4271
4272 PhysicalDeviceFeatures& setGeometryShader( Bool32 geometryShader_ )
4273 {
4274 geometryShader = geometryShader_;
4275 return *this;
4276 }
4277
4278 PhysicalDeviceFeatures& setTessellationShader( Bool32 tessellationShader_ )
4279 {
4280 tessellationShader = tessellationShader_;
4281 return *this;
4282 }
4283
4284 PhysicalDeviceFeatures& setSampleRateShading( Bool32 sampleRateShading_ )
4285 {
4286 sampleRateShading = sampleRateShading_;
4287 return *this;
4288 }
4289
4290 PhysicalDeviceFeatures& setDualSrcBlend( Bool32 dualSrcBlend_ )
4291 {
4292 dualSrcBlend = dualSrcBlend_;
4293 return *this;
4294 }
4295
4296 PhysicalDeviceFeatures& setLogicOp( Bool32 logicOp_ )
4297 {
4298 logicOp = logicOp_;
4299 return *this;
4300 }
4301
4302 PhysicalDeviceFeatures& setMultiDrawIndirect( Bool32 multiDrawIndirect_ )
4303 {
4304 multiDrawIndirect = multiDrawIndirect_;
4305 return *this;
4306 }
4307
4308 PhysicalDeviceFeatures& setDrawIndirectFirstInstance( Bool32 drawIndirectFirstInstance_ )
4309 {
4310 drawIndirectFirstInstance = drawIndirectFirstInstance_;
4311 return *this;
4312 }
4313
4314 PhysicalDeviceFeatures& setDepthClamp( Bool32 depthClamp_ )
4315 {
4316 depthClamp = depthClamp_;
4317 return *this;
4318 }
4319
4320 PhysicalDeviceFeatures& setDepthBiasClamp( Bool32 depthBiasClamp_ )
4321 {
4322 depthBiasClamp = depthBiasClamp_;
4323 return *this;
4324 }
4325
4326 PhysicalDeviceFeatures& setFillModeNonSolid( Bool32 fillModeNonSolid_ )
4327 {
4328 fillModeNonSolid = fillModeNonSolid_;
4329 return *this;
4330 }
4331
4332 PhysicalDeviceFeatures& setDepthBounds( Bool32 depthBounds_ )
4333 {
4334 depthBounds = depthBounds_;
4335 return *this;
4336 }
4337
4338 PhysicalDeviceFeatures& setWideLines( Bool32 wideLines_ )
4339 {
4340 wideLines = wideLines_;
4341 return *this;
4342 }
4343
4344 PhysicalDeviceFeatures& setLargePoints( Bool32 largePoints_ )
4345 {
4346 largePoints = largePoints_;
4347 return *this;
4348 }
4349
4350 PhysicalDeviceFeatures& setAlphaToOne( Bool32 alphaToOne_ )
4351 {
4352 alphaToOne = alphaToOne_;
4353 return *this;
4354 }
4355
4356 PhysicalDeviceFeatures& setMultiViewport( Bool32 multiViewport_ )
4357 {
4358 multiViewport = multiViewport_;
4359 return *this;
4360 }
4361
4362 PhysicalDeviceFeatures& setSamplerAnisotropy( Bool32 samplerAnisotropy_ )
4363 {
4364 samplerAnisotropy = samplerAnisotropy_;
4365 return *this;
4366 }
4367
4368 PhysicalDeviceFeatures& setTextureCompressionETC2( Bool32 textureCompressionETC2_ )
4369 {
4370 textureCompressionETC2 = textureCompressionETC2_;
4371 return *this;
4372 }
4373
4374 PhysicalDeviceFeatures& setTextureCompressionASTC_LDR( Bool32 textureCompressionASTC_LDR_ )
4375 {
4376 textureCompressionASTC_LDR = textureCompressionASTC_LDR_;
4377 return *this;
4378 }
4379
4380 PhysicalDeviceFeatures& setTextureCompressionBC( Bool32 textureCompressionBC_ )
4381 {
4382 textureCompressionBC = textureCompressionBC_;
4383 return *this;
4384 }
4385
4386 PhysicalDeviceFeatures& setOcclusionQueryPrecise( Bool32 occlusionQueryPrecise_ )
4387 {
4388 occlusionQueryPrecise = occlusionQueryPrecise_;
4389 return *this;
4390 }
4391
4392 PhysicalDeviceFeatures& setPipelineStatisticsQuery( Bool32 pipelineStatisticsQuery_ )
4393 {
4394 pipelineStatisticsQuery = pipelineStatisticsQuery_;
4395 return *this;
4396 }
4397
4398 PhysicalDeviceFeatures& setVertexPipelineStoresAndAtomics( Bool32 vertexPipelineStoresAndAtomics_ )
4399 {
4400 vertexPipelineStoresAndAtomics = vertexPipelineStoresAndAtomics_;
4401 return *this;
4402 }
4403
4404 PhysicalDeviceFeatures& setFragmentStoresAndAtomics( Bool32 fragmentStoresAndAtomics_ )
4405 {
4406 fragmentStoresAndAtomics = fragmentStoresAndAtomics_;
4407 return *this;
4408 }
4409
4410 PhysicalDeviceFeatures& setShaderTessellationAndGeometryPointSize( Bool32 shaderTessellationAndGeometryPointSize_ )
4411 {
4412 shaderTessellationAndGeometryPointSize = shaderTessellationAndGeometryPointSize_;
4413 return *this;
4414 }
4415
4416 PhysicalDeviceFeatures& setShaderImageGatherExtended( Bool32 shaderImageGatherExtended_ )
4417 {
4418 shaderImageGatherExtended = shaderImageGatherExtended_;
4419 return *this;
4420 }
4421
4422 PhysicalDeviceFeatures& setShaderStorageImageExtendedFormats( Bool32 shaderStorageImageExtendedFormats_ )
4423 {
4424 shaderStorageImageExtendedFormats = shaderStorageImageExtendedFormats_;
4425 return *this;
4426 }
4427
4428 PhysicalDeviceFeatures& setShaderStorageImageMultisample( Bool32 shaderStorageImageMultisample_ )
4429 {
4430 shaderStorageImageMultisample = shaderStorageImageMultisample_;
4431 return *this;
4432 }
4433
4434 PhysicalDeviceFeatures& setShaderStorageImageReadWithoutFormat( Bool32 shaderStorageImageReadWithoutFormat_ )
4435 {
4436 shaderStorageImageReadWithoutFormat = shaderStorageImageReadWithoutFormat_;
4437 return *this;
4438 }
4439
4440 PhysicalDeviceFeatures& setShaderStorageImageWriteWithoutFormat( Bool32 shaderStorageImageWriteWithoutFormat_ )
4441 {
4442 shaderStorageImageWriteWithoutFormat = shaderStorageImageWriteWithoutFormat_;
4443 return *this;
4444 }
4445
4446 PhysicalDeviceFeatures& setShaderUniformBufferArrayDynamicIndexing( Bool32 shaderUniformBufferArrayDynamicIndexing_ )
4447 {
4448 shaderUniformBufferArrayDynamicIndexing = shaderUniformBufferArrayDynamicIndexing_;
4449 return *this;
4450 }
4451
4452 PhysicalDeviceFeatures& setShaderSampledImageArrayDynamicIndexing( Bool32 shaderSampledImageArrayDynamicIndexing_ )
4453 {
4454 shaderSampledImageArrayDynamicIndexing = shaderSampledImageArrayDynamicIndexing_;
4455 return *this;
4456 }
4457
4458 PhysicalDeviceFeatures& setShaderStorageBufferArrayDynamicIndexing( Bool32 shaderStorageBufferArrayDynamicIndexing_ )
4459 {
4460 shaderStorageBufferArrayDynamicIndexing = shaderStorageBufferArrayDynamicIndexing_;
4461 return *this;
4462 }
4463
4464 PhysicalDeviceFeatures& setShaderStorageImageArrayDynamicIndexing( Bool32 shaderStorageImageArrayDynamicIndexing_ )
4465 {
4466 shaderStorageImageArrayDynamicIndexing = shaderStorageImageArrayDynamicIndexing_;
4467 return *this;
4468 }
4469
4470 PhysicalDeviceFeatures& setShaderClipDistance( Bool32 shaderClipDistance_ )
4471 {
4472 shaderClipDistance = shaderClipDistance_;
4473 return *this;
4474 }
4475
4476 PhysicalDeviceFeatures& setShaderCullDistance( Bool32 shaderCullDistance_ )
4477 {
4478 shaderCullDistance = shaderCullDistance_;
4479 return *this;
4480 }
4481
4482 PhysicalDeviceFeatures& setShaderFloat64( Bool32 shaderFloat64_ )
4483 {
4484 shaderFloat64 = shaderFloat64_;
4485 return *this;
4486 }
4487
4488 PhysicalDeviceFeatures& setShaderInt64( Bool32 shaderInt64_ )
4489 {
4490 shaderInt64 = shaderInt64_;
4491 return *this;
4492 }
4493
4494 PhysicalDeviceFeatures& setShaderInt16( Bool32 shaderInt16_ )
4495 {
4496 shaderInt16 = shaderInt16_;
4497 return *this;
4498 }
4499
4500 PhysicalDeviceFeatures& setShaderResourceResidency( Bool32 shaderResourceResidency_ )
4501 {
4502 shaderResourceResidency = shaderResourceResidency_;
4503 return *this;
4504 }
4505
4506 PhysicalDeviceFeatures& setShaderResourceMinLod( Bool32 shaderResourceMinLod_ )
4507 {
4508 shaderResourceMinLod = shaderResourceMinLod_;
4509 return *this;
4510 }
4511
4512 PhysicalDeviceFeatures& setSparseBinding( Bool32 sparseBinding_ )
4513 {
4514 sparseBinding = sparseBinding_;
4515 return *this;
4516 }
4517
4518 PhysicalDeviceFeatures& setSparseResidencyBuffer( Bool32 sparseResidencyBuffer_ )
4519 {
4520 sparseResidencyBuffer = sparseResidencyBuffer_;
4521 return *this;
4522 }
4523
4524 PhysicalDeviceFeatures& setSparseResidencyImage2D( Bool32 sparseResidencyImage2D_ )
4525 {
4526 sparseResidencyImage2D = sparseResidencyImage2D_;
4527 return *this;
4528 }
4529
4530 PhysicalDeviceFeatures& setSparseResidencyImage3D( Bool32 sparseResidencyImage3D_ )
4531 {
4532 sparseResidencyImage3D = sparseResidencyImage3D_;
4533 return *this;
4534 }
4535
4536 PhysicalDeviceFeatures& setSparseResidency2Samples( Bool32 sparseResidency2Samples_ )
4537 {
4538 sparseResidency2Samples = sparseResidency2Samples_;
4539 return *this;
4540 }
4541
4542 PhysicalDeviceFeatures& setSparseResidency4Samples( Bool32 sparseResidency4Samples_ )
4543 {
4544 sparseResidency4Samples = sparseResidency4Samples_;
4545 return *this;
4546 }
4547
4548 PhysicalDeviceFeatures& setSparseResidency8Samples( Bool32 sparseResidency8Samples_ )
4549 {
4550 sparseResidency8Samples = sparseResidency8Samples_;
4551 return *this;
4552 }
4553
4554 PhysicalDeviceFeatures& setSparseResidency16Samples( Bool32 sparseResidency16Samples_ )
4555 {
4556 sparseResidency16Samples = sparseResidency16Samples_;
4557 return *this;
4558 }
4559
4560 PhysicalDeviceFeatures& setSparseResidencyAliased( Bool32 sparseResidencyAliased_ )
4561 {
4562 sparseResidencyAliased = sparseResidencyAliased_;
4563 return *this;
4564 }
4565
4566 PhysicalDeviceFeatures& setVariableMultisampleRate( Bool32 variableMultisampleRate_ )
4567 {
4568 variableMultisampleRate = variableMultisampleRate_;
4569 return *this;
4570 }
4571
4572 PhysicalDeviceFeatures& setInheritedQueries( Bool32 inheritedQueries_ )
4573 {
4574 inheritedQueries = inheritedQueries_;
4575 return *this;
4576 }
4577
4578 operator const VkPhysicalDeviceFeatures&() const
4579 {
4580 return *reinterpret_cast<const VkPhysicalDeviceFeatures*>(this);
4581 }
4582
4583 bool operator==( PhysicalDeviceFeatures const& rhs ) const
4584 {
4585 return ( robustBufferAccess == rhs.robustBufferAccess )
4586 && ( fullDrawIndexUint32 == rhs.fullDrawIndexUint32 )
4587 && ( imageCubeArray == rhs.imageCubeArray )
4588 && ( independentBlend == rhs.independentBlend )
4589 && ( geometryShader == rhs.geometryShader )
4590 && ( tessellationShader == rhs.tessellationShader )
4591 && ( sampleRateShading == rhs.sampleRateShading )
4592 && ( dualSrcBlend == rhs.dualSrcBlend )
4593 && ( logicOp == rhs.logicOp )
4594 && ( multiDrawIndirect == rhs.multiDrawIndirect )
4595 && ( drawIndirectFirstInstance == rhs.drawIndirectFirstInstance )
4596 && ( depthClamp == rhs.depthClamp )
4597 && ( depthBiasClamp == rhs.depthBiasClamp )
4598 && ( fillModeNonSolid == rhs.fillModeNonSolid )
4599 && ( depthBounds == rhs.depthBounds )
4600 && ( wideLines == rhs.wideLines )
4601 && ( largePoints == rhs.largePoints )
4602 && ( alphaToOne == rhs.alphaToOne )
4603 && ( multiViewport == rhs.multiViewport )
4604 && ( samplerAnisotropy == rhs.samplerAnisotropy )
4605 && ( textureCompressionETC2 == rhs.textureCompressionETC2 )
4606 && ( textureCompressionASTC_LDR == rhs.textureCompressionASTC_LDR )
4607 && ( textureCompressionBC == rhs.textureCompressionBC )
4608 && ( occlusionQueryPrecise == rhs.occlusionQueryPrecise )
4609 && ( pipelineStatisticsQuery == rhs.pipelineStatisticsQuery )
4610 && ( vertexPipelineStoresAndAtomics == rhs.vertexPipelineStoresAndAtomics )
4611 && ( fragmentStoresAndAtomics == rhs.fragmentStoresAndAtomics )
4612 && ( shaderTessellationAndGeometryPointSize == rhs.shaderTessellationAndGeometryPointSize )
4613 && ( shaderImageGatherExtended == rhs.shaderImageGatherExtended )
4614 && ( shaderStorageImageExtendedFormats == rhs.shaderStorageImageExtendedFormats )
4615 && ( shaderStorageImageMultisample == rhs.shaderStorageImageMultisample )
4616 && ( shaderStorageImageReadWithoutFormat == rhs.shaderStorageImageReadWithoutFormat )
4617 && ( shaderStorageImageWriteWithoutFormat == rhs.shaderStorageImageWriteWithoutFormat )
4618 && ( shaderUniformBufferArrayDynamicIndexing == rhs.shaderUniformBufferArrayDynamicIndexing )
4619 && ( shaderSampledImageArrayDynamicIndexing == rhs.shaderSampledImageArrayDynamicIndexing )
4620 && ( shaderStorageBufferArrayDynamicIndexing == rhs.shaderStorageBufferArrayDynamicIndexing )
4621 && ( shaderStorageImageArrayDynamicIndexing == rhs.shaderStorageImageArrayDynamicIndexing )
4622 && ( shaderClipDistance == rhs.shaderClipDistance )
4623 && ( shaderCullDistance == rhs.shaderCullDistance )
4624 && ( shaderFloat64 == rhs.shaderFloat64 )
4625 && ( shaderInt64 == rhs.shaderInt64 )
4626 && ( shaderInt16 == rhs.shaderInt16 )
4627 && ( shaderResourceResidency == rhs.shaderResourceResidency )
4628 && ( shaderResourceMinLod == rhs.shaderResourceMinLod )
4629 && ( sparseBinding == rhs.sparseBinding )
4630 && ( sparseResidencyBuffer == rhs.sparseResidencyBuffer )
4631 && ( sparseResidencyImage2D == rhs.sparseResidencyImage2D )
4632 && ( sparseResidencyImage3D == rhs.sparseResidencyImage3D )
4633 && ( sparseResidency2Samples == rhs.sparseResidency2Samples )
4634 && ( sparseResidency4Samples == rhs.sparseResidency4Samples )
4635 && ( sparseResidency8Samples == rhs.sparseResidency8Samples )
4636 && ( sparseResidency16Samples == rhs.sparseResidency16Samples )
4637 && ( sparseResidencyAliased == rhs.sparseResidencyAliased )
4638 && ( variableMultisampleRate == rhs.variableMultisampleRate )
4639 && ( inheritedQueries == rhs.inheritedQueries );
4640 }
4641
4642 bool operator!=( PhysicalDeviceFeatures const& rhs ) const
4643 {
4644 return !operator==( rhs );
4645 }
4646
4647 Bool32 robustBufferAccess;
4648 Bool32 fullDrawIndexUint32;
4649 Bool32 imageCubeArray;
4650 Bool32 independentBlend;
4651 Bool32 geometryShader;
4652 Bool32 tessellationShader;
4653 Bool32 sampleRateShading;
4654 Bool32 dualSrcBlend;
4655 Bool32 logicOp;
4656 Bool32 multiDrawIndirect;
4657 Bool32 drawIndirectFirstInstance;
4658 Bool32 depthClamp;
4659 Bool32 depthBiasClamp;
4660 Bool32 fillModeNonSolid;
4661 Bool32 depthBounds;
4662 Bool32 wideLines;
4663 Bool32 largePoints;
4664 Bool32 alphaToOne;
4665 Bool32 multiViewport;
4666 Bool32 samplerAnisotropy;
4667 Bool32 textureCompressionETC2;
4668 Bool32 textureCompressionASTC_LDR;
4669 Bool32 textureCompressionBC;
4670 Bool32 occlusionQueryPrecise;
4671 Bool32 pipelineStatisticsQuery;
4672 Bool32 vertexPipelineStoresAndAtomics;
4673 Bool32 fragmentStoresAndAtomics;
4674 Bool32 shaderTessellationAndGeometryPointSize;
4675 Bool32 shaderImageGatherExtended;
4676 Bool32 shaderStorageImageExtendedFormats;
4677 Bool32 shaderStorageImageMultisample;
4678 Bool32 shaderStorageImageReadWithoutFormat;
4679 Bool32 shaderStorageImageWriteWithoutFormat;
4680 Bool32 shaderUniformBufferArrayDynamicIndexing;
4681 Bool32 shaderSampledImageArrayDynamicIndexing;
4682 Bool32 shaderStorageBufferArrayDynamicIndexing;
4683 Bool32 shaderStorageImageArrayDynamicIndexing;
4684 Bool32 shaderClipDistance;
4685 Bool32 shaderCullDistance;
4686 Bool32 shaderFloat64;
4687 Bool32 shaderInt64;
4688 Bool32 shaderInt16;
4689 Bool32 shaderResourceResidency;
4690 Bool32 shaderResourceMinLod;
4691 Bool32 sparseBinding;
4692 Bool32 sparseResidencyBuffer;
4693 Bool32 sparseResidencyImage2D;
4694 Bool32 sparseResidencyImage3D;
4695 Bool32 sparseResidency2Samples;
4696 Bool32 sparseResidency4Samples;
4697 Bool32 sparseResidency8Samples;
4698 Bool32 sparseResidency16Samples;
4699 Bool32 sparseResidencyAliased;
4700 Bool32 variableMultisampleRate;
4701 Bool32 inheritedQueries;
4702 };
4703 static_assert( sizeof( PhysicalDeviceFeatures ) == sizeof( VkPhysicalDeviceFeatures ), "struct and wrapper have different size!" );
4704
4705 struct PhysicalDeviceSparseProperties
4706 {
4707 operator const VkPhysicalDeviceSparseProperties&() const
4708 {
4709 return *reinterpret_cast<const VkPhysicalDeviceSparseProperties*>(this);
4710 }
4711
4712 bool operator==( PhysicalDeviceSparseProperties const& rhs ) const
4713 {
4714 return ( residencyStandard2DBlockShape == rhs.residencyStandard2DBlockShape )
4715 && ( residencyStandard2DMultisampleBlockShape == rhs.residencyStandard2DMultisampleBlockShape )
4716 && ( residencyStandard3DBlockShape == rhs.residencyStandard3DBlockShape )
4717 && ( residencyAlignedMipSize == rhs.residencyAlignedMipSize )
4718 && ( residencyNonResidentStrict == rhs.residencyNonResidentStrict );
4719 }
4720
4721 bool operator!=( PhysicalDeviceSparseProperties const& rhs ) const
4722 {
4723 return !operator==( rhs );
4724 }
4725
4726 Bool32 residencyStandard2DBlockShape;
4727 Bool32 residencyStandard2DMultisampleBlockShape;
4728 Bool32 residencyStandard3DBlockShape;
4729 Bool32 residencyAlignedMipSize;
4730 Bool32 residencyNonResidentStrict;
4731 };
4732 static_assert( sizeof( PhysicalDeviceSparseProperties ) == sizeof( VkPhysicalDeviceSparseProperties ), "struct and wrapper have different size!" );
4733
4734 struct DrawIndirectCommand
4735 {
4736 DrawIndirectCommand( uint32_t vertexCount_ = 0, uint32_t instanceCount_ = 0, uint32_t firstVertex_ = 0, uint32_t firstInstance_ = 0 )
4737 : vertexCount( vertexCount_ )
4738 , instanceCount( instanceCount_ )
4739 , firstVertex( firstVertex_ )
4740 , firstInstance( firstInstance_ )
4741 {
4742 }
4743
4744 DrawIndirectCommand( VkDrawIndirectCommand const & rhs )
4745 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004746 memcpy( this, &rhs, sizeof( DrawIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004747 }
4748
4749 DrawIndirectCommand& operator=( VkDrawIndirectCommand const & rhs )
4750 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004751 memcpy( this, &rhs, sizeof( DrawIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004752 return *this;
4753 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004754 DrawIndirectCommand& setVertexCount( uint32_t vertexCount_ )
4755 {
4756 vertexCount = vertexCount_;
4757 return *this;
4758 }
4759
4760 DrawIndirectCommand& setInstanceCount( uint32_t instanceCount_ )
4761 {
4762 instanceCount = instanceCount_;
4763 return *this;
4764 }
4765
4766 DrawIndirectCommand& setFirstVertex( uint32_t firstVertex_ )
4767 {
4768 firstVertex = firstVertex_;
4769 return *this;
4770 }
4771
4772 DrawIndirectCommand& setFirstInstance( uint32_t firstInstance_ )
4773 {
4774 firstInstance = firstInstance_;
4775 return *this;
4776 }
4777
4778 operator const VkDrawIndirectCommand&() const
4779 {
4780 return *reinterpret_cast<const VkDrawIndirectCommand*>(this);
4781 }
4782
4783 bool operator==( DrawIndirectCommand const& rhs ) const
4784 {
4785 return ( vertexCount == rhs.vertexCount )
4786 && ( instanceCount == rhs.instanceCount )
4787 && ( firstVertex == rhs.firstVertex )
4788 && ( firstInstance == rhs.firstInstance );
4789 }
4790
4791 bool operator!=( DrawIndirectCommand const& rhs ) const
4792 {
4793 return !operator==( rhs );
4794 }
4795
4796 uint32_t vertexCount;
4797 uint32_t instanceCount;
4798 uint32_t firstVertex;
4799 uint32_t firstInstance;
4800 };
4801 static_assert( sizeof( DrawIndirectCommand ) == sizeof( VkDrawIndirectCommand ), "struct and wrapper have different size!" );
4802
4803 struct DrawIndexedIndirectCommand
4804 {
4805 DrawIndexedIndirectCommand( uint32_t indexCount_ = 0, uint32_t instanceCount_ = 0, uint32_t firstIndex_ = 0, int32_t vertexOffset_ = 0, uint32_t firstInstance_ = 0 )
4806 : indexCount( indexCount_ )
4807 , instanceCount( instanceCount_ )
4808 , firstIndex( firstIndex_ )
4809 , vertexOffset( vertexOffset_ )
4810 , firstInstance( firstInstance_ )
4811 {
4812 }
4813
4814 DrawIndexedIndirectCommand( VkDrawIndexedIndirectCommand const & rhs )
4815 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004816 memcpy( this, &rhs, sizeof( DrawIndexedIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004817 }
4818
4819 DrawIndexedIndirectCommand& operator=( VkDrawIndexedIndirectCommand const & rhs )
4820 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004821 memcpy( this, &rhs, sizeof( DrawIndexedIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004822 return *this;
4823 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004824 DrawIndexedIndirectCommand& setIndexCount( uint32_t indexCount_ )
4825 {
4826 indexCount = indexCount_;
4827 return *this;
4828 }
4829
4830 DrawIndexedIndirectCommand& setInstanceCount( uint32_t instanceCount_ )
4831 {
4832 instanceCount = instanceCount_;
4833 return *this;
4834 }
4835
4836 DrawIndexedIndirectCommand& setFirstIndex( uint32_t firstIndex_ )
4837 {
4838 firstIndex = firstIndex_;
4839 return *this;
4840 }
4841
4842 DrawIndexedIndirectCommand& setVertexOffset( int32_t vertexOffset_ )
4843 {
4844 vertexOffset = vertexOffset_;
4845 return *this;
4846 }
4847
4848 DrawIndexedIndirectCommand& setFirstInstance( uint32_t firstInstance_ )
4849 {
4850 firstInstance = firstInstance_;
4851 return *this;
4852 }
4853
4854 operator const VkDrawIndexedIndirectCommand&() const
4855 {
4856 return *reinterpret_cast<const VkDrawIndexedIndirectCommand*>(this);
4857 }
4858
4859 bool operator==( DrawIndexedIndirectCommand const& rhs ) const
4860 {
4861 return ( indexCount == rhs.indexCount )
4862 && ( instanceCount == rhs.instanceCount )
4863 && ( firstIndex == rhs.firstIndex )
4864 && ( vertexOffset == rhs.vertexOffset )
4865 && ( firstInstance == rhs.firstInstance );
4866 }
4867
4868 bool operator!=( DrawIndexedIndirectCommand const& rhs ) const
4869 {
4870 return !operator==( rhs );
4871 }
4872
4873 uint32_t indexCount;
4874 uint32_t instanceCount;
4875 uint32_t firstIndex;
4876 int32_t vertexOffset;
4877 uint32_t firstInstance;
4878 };
4879 static_assert( sizeof( DrawIndexedIndirectCommand ) == sizeof( VkDrawIndexedIndirectCommand ), "struct and wrapper have different size!" );
4880
4881 struct DispatchIndirectCommand
4882 {
4883 DispatchIndirectCommand( uint32_t x_ = 0, uint32_t y_ = 0, uint32_t z_ = 0 )
4884 : x( x_ )
4885 , y( y_ )
4886 , z( z_ )
4887 {
4888 }
4889
4890 DispatchIndirectCommand( VkDispatchIndirectCommand const & rhs )
4891 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004892 memcpy( this, &rhs, sizeof( DispatchIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004893 }
4894
4895 DispatchIndirectCommand& operator=( VkDispatchIndirectCommand const & rhs )
4896 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004897 memcpy( this, &rhs, sizeof( DispatchIndirectCommand ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004898 return *this;
4899 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004900 DispatchIndirectCommand& setX( uint32_t x_ )
4901 {
4902 x = x_;
4903 return *this;
4904 }
4905
4906 DispatchIndirectCommand& setY( uint32_t y_ )
4907 {
4908 y = y_;
4909 return *this;
4910 }
4911
4912 DispatchIndirectCommand& setZ( uint32_t z_ )
4913 {
4914 z = z_;
4915 return *this;
4916 }
4917
4918 operator const VkDispatchIndirectCommand&() const
4919 {
4920 return *reinterpret_cast<const VkDispatchIndirectCommand*>(this);
4921 }
4922
4923 bool operator==( DispatchIndirectCommand const& rhs ) const
4924 {
4925 return ( x == rhs.x )
4926 && ( y == rhs.y )
4927 && ( z == rhs.z );
4928 }
4929
4930 bool operator!=( DispatchIndirectCommand const& rhs ) const
4931 {
4932 return !operator==( rhs );
4933 }
4934
4935 uint32_t x;
4936 uint32_t y;
4937 uint32_t z;
4938 };
4939 static_assert( sizeof( DispatchIndirectCommand ) == sizeof( VkDispatchIndirectCommand ), "struct and wrapper have different size!" );
4940
4941 struct DisplayPlanePropertiesKHR
4942 {
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004943 operator const VkDisplayPlanePropertiesKHR&() const
4944 {
4945 return *reinterpret_cast<const VkDisplayPlanePropertiesKHR*>(this);
4946 }
4947
4948 bool operator==( DisplayPlanePropertiesKHR const& rhs ) const
4949 {
4950 return ( currentDisplay == rhs.currentDisplay )
4951 && ( currentStackIndex == rhs.currentStackIndex );
4952 }
4953
4954 bool operator!=( DisplayPlanePropertiesKHR const& rhs ) const
4955 {
4956 return !operator==( rhs );
4957 }
4958
4959 DisplayKHR currentDisplay;
4960 uint32_t currentStackIndex;
4961 };
4962 static_assert( sizeof( DisplayPlanePropertiesKHR ) == sizeof( VkDisplayPlanePropertiesKHR ), "struct and wrapper have different size!" );
4963
4964 struct DisplayModeParametersKHR
4965 {
4966 DisplayModeParametersKHR( Extent2D visibleRegion_ = Extent2D(), uint32_t refreshRate_ = 0 )
4967 : visibleRegion( visibleRegion_ )
4968 , refreshRate( refreshRate_ )
4969 {
4970 }
4971
4972 DisplayModeParametersKHR( VkDisplayModeParametersKHR const & rhs )
4973 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004974 memcpy( this, &rhs, sizeof( DisplayModeParametersKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004975 }
4976
4977 DisplayModeParametersKHR& operator=( VkDisplayModeParametersKHR const & rhs )
4978 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06004979 memcpy( this, &rhs, sizeof( DisplayModeParametersKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004980 return *this;
4981 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06004982 DisplayModeParametersKHR& setVisibleRegion( Extent2D visibleRegion_ )
4983 {
4984 visibleRegion = visibleRegion_;
4985 return *this;
4986 }
4987
4988 DisplayModeParametersKHR& setRefreshRate( uint32_t refreshRate_ )
4989 {
4990 refreshRate = refreshRate_;
4991 return *this;
4992 }
4993
4994 operator const VkDisplayModeParametersKHR&() const
4995 {
4996 return *reinterpret_cast<const VkDisplayModeParametersKHR*>(this);
4997 }
4998
4999 bool operator==( DisplayModeParametersKHR const& rhs ) const
5000 {
5001 return ( visibleRegion == rhs.visibleRegion )
5002 && ( refreshRate == rhs.refreshRate );
5003 }
5004
5005 bool operator!=( DisplayModeParametersKHR const& rhs ) const
5006 {
5007 return !operator==( rhs );
5008 }
5009
5010 Extent2D visibleRegion;
5011 uint32_t refreshRate;
5012 };
5013 static_assert( sizeof( DisplayModeParametersKHR ) == sizeof( VkDisplayModeParametersKHR ), "struct and wrapper have different size!" );
5014
5015 struct DisplayModePropertiesKHR
5016 {
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005017 operator const VkDisplayModePropertiesKHR&() const
5018 {
5019 return *reinterpret_cast<const VkDisplayModePropertiesKHR*>(this);
5020 }
5021
5022 bool operator==( DisplayModePropertiesKHR const& rhs ) const
5023 {
5024 return ( displayMode == rhs.displayMode )
5025 && ( parameters == rhs.parameters );
5026 }
5027
5028 bool operator!=( DisplayModePropertiesKHR const& rhs ) const
5029 {
5030 return !operator==( rhs );
5031 }
5032
5033 DisplayModeKHR displayMode;
5034 DisplayModeParametersKHR parameters;
5035 };
5036 static_assert( sizeof( DisplayModePropertiesKHR ) == sizeof( VkDisplayModePropertiesKHR ), "struct and wrapper have different size!" );
5037
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005038 struct RectLayerKHR
5039 {
5040 RectLayerKHR( Offset2D offset_ = Offset2D(), Extent2D extent_ = Extent2D(), uint32_t layer_ = 0 )
5041 : offset( offset_ )
5042 , extent( extent_ )
5043 , layer( layer_ )
5044 {
5045 }
5046
5047 RectLayerKHR( VkRectLayerKHR const & rhs )
5048 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005049 memcpy( this, &rhs, sizeof( RectLayerKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005050 }
5051
5052 RectLayerKHR& operator=( VkRectLayerKHR const & rhs )
5053 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005054 memcpy( this, &rhs, sizeof( RectLayerKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005055 return *this;
5056 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005057 RectLayerKHR& setOffset( Offset2D offset_ )
5058 {
5059 offset = offset_;
5060 return *this;
5061 }
5062
5063 RectLayerKHR& setExtent( Extent2D extent_ )
5064 {
5065 extent = extent_;
5066 return *this;
5067 }
5068
5069 RectLayerKHR& setLayer( uint32_t layer_ )
5070 {
5071 layer = layer_;
5072 return *this;
5073 }
5074
5075 operator const VkRectLayerKHR&() const
5076 {
5077 return *reinterpret_cast<const VkRectLayerKHR*>(this);
5078 }
5079
5080 bool operator==( RectLayerKHR const& rhs ) const
5081 {
5082 return ( offset == rhs.offset )
5083 && ( extent == rhs.extent )
5084 && ( layer == rhs.layer );
5085 }
5086
5087 bool operator!=( RectLayerKHR const& rhs ) const
5088 {
5089 return !operator==( rhs );
5090 }
5091
5092 Offset2D offset;
5093 Extent2D extent;
5094 uint32_t layer;
5095 };
5096 static_assert( sizeof( RectLayerKHR ) == sizeof( VkRectLayerKHR ), "struct and wrapper have different size!" );
5097
5098 struct PresentRegionKHR
5099 {
5100 PresentRegionKHR( uint32_t rectangleCount_ = 0, const RectLayerKHR* pRectangles_ = nullptr )
5101 : rectangleCount( rectangleCount_ )
5102 , pRectangles( pRectangles_ )
5103 {
5104 }
5105
5106 PresentRegionKHR( VkPresentRegionKHR const & rhs )
5107 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005108 memcpy( this, &rhs, sizeof( PresentRegionKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005109 }
5110
5111 PresentRegionKHR& operator=( VkPresentRegionKHR const & rhs )
5112 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005113 memcpy( this, &rhs, sizeof( PresentRegionKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005114 return *this;
5115 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -06005116 PresentRegionKHR& setRectangleCount( uint32_t rectangleCount_ )
5117 {
5118 rectangleCount = rectangleCount_;
5119 return *this;
5120 }
5121
5122 PresentRegionKHR& setPRectangles( const RectLayerKHR* pRectangles_ )
5123 {
5124 pRectangles = pRectangles_;
5125 return *this;
5126 }
5127
5128 operator const VkPresentRegionKHR&() const
5129 {
5130 return *reinterpret_cast<const VkPresentRegionKHR*>(this);
5131 }
5132
5133 bool operator==( PresentRegionKHR const& rhs ) const
5134 {
5135 return ( rectangleCount == rhs.rectangleCount )
5136 && ( pRectangles == rhs.pRectangles );
5137 }
5138
5139 bool operator!=( PresentRegionKHR const& rhs ) const
5140 {
5141 return !operator==( rhs );
5142 }
5143
5144 uint32_t rectangleCount;
5145 const RectLayerKHR* pRectangles;
5146 };
5147 static_assert( sizeof( PresentRegionKHR ) == sizeof( VkPresentRegionKHR ), "struct and wrapper have different size!" );
5148
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005149 struct XYColorEXT
5150 {
5151 XYColorEXT( float x_ = 0, float y_ = 0 )
5152 : x( x_ )
5153 , y( y_ )
5154 {
5155 }
5156
5157 XYColorEXT( VkXYColorEXT const & rhs )
5158 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005159 memcpy( this, &rhs, sizeof( XYColorEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005160 }
5161
5162 XYColorEXT& operator=( VkXYColorEXT const & rhs )
5163 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005164 memcpy( this, &rhs, sizeof( XYColorEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005165 return *this;
5166 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005167 XYColorEXT& setX( float x_ )
5168 {
5169 x = x_;
5170 return *this;
5171 }
5172
5173 XYColorEXT& setY( float y_ )
5174 {
5175 y = y_;
5176 return *this;
5177 }
5178
5179 operator const VkXYColorEXT&() const
5180 {
5181 return *reinterpret_cast<const VkXYColorEXT*>(this);
5182 }
5183
5184 bool operator==( XYColorEXT const& rhs ) const
5185 {
5186 return ( x == rhs.x )
5187 && ( y == rhs.y );
5188 }
5189
5190 bool operator!=( XYColorEXT const& rhs ) const
5191 {
5192 return !operator==( rhs );
5193 }
5194
5195 float x;
5196 float y;
5197 };
5198 static_assert( sizeof( XYColorEXT ) == sizeof( VkXYColorEXT ), "struct and wrapper have different size!" );
5199
5200 struct RefreshCycleDurationGOOGLE
5201 {
5202 RefreshCycleDurationGOOGLE( uint64_t refreshDuration_ = 0 )
5203 : refreshDuration( refreshDuration_ )
5204 {
5205 }
5206
5207 RefreshCycleDurationGOOGLE( VkRefreshCycleDurationGOOGLE const & rhs )
5208 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005209 memcpy( this, &rhs, sizeof( RefreshCycleDurationGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005210 }
5211
5212 RefreshCycleDurationGOOGLE& operator=( VkRefreshCycleDurationGOOGLE const & rhs )
5213 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005214 memcpy( this, &rhs, sizeof( RefreshCycleDurationGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005215 return *this;
5216 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005217 RefreshCycleDurationGOOGLE& setRefreshDuration( uint64_t refreshDuration_ )
5218 {
5219 refreshDuration = refreshDuration_;
5220 return *this;
5221 }
5222
5223 operator const VkRefreshCycleDurationGOOGLE&() const
5224 {
5225 return *reinterpret_cast<const VkRefreshCycleDurationGOOGLE*>(this);
5226 }
5227
5228 bool operator==( RefreshCycleDurationGOOGLE const& rhs ) const
5229 {
5230 return ( refreshDuration == rhs.refreshDuration );
5231 }
5232
5233 bool operator!=( RefreshCycleDurationGOOGLE const& rhs ) const
5234 {
5235 return !operator==( rhs );
5236 }
5237
5238 uint64_t refreshDuration;
5239 };
5240 static_assert( sizeof( RefreshCycleDurationGOOGLE ) == sizeof( VkRefreshCycleDurationGOOGLE ), "struct and wrapper have different size!" );
5241
5242 struct PastPresentationTimingGOOGLE
5243 {
5244 PastPresentationTimingGOOGLE( uint32_t presentID_ = 0, uint64_t desiredPresentTime_ = 0, uint64_t actualPresentTime_ = 0, uint64_t earliestPresentTime_ = 0, uint64_t presentMargin_ = 0 )
5245 : presentID( presentID_ )
5246 , desiredPresentTime( desiredPresentTime_ )
5247 , actualPresentTime( actualPresentTime_ )
5248 , earliestPresentTime( earliestPresentTime_ )
5249 , presentMargin( presentMargin_ )
5250 {
5251 }
5252
5253 PastPresentationTimingGOOGLE( VkPastPresentationTimingGOOGLE const & rhs )
5254 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005255 memcpy( this, &rhs, sizeof( PastPresentationTimingGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005256 }
5257
5258 PastPresentationTimingGOOGLE& operator=( VkPastPresentationTimingGOOGLE const & rhs )
5259 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005260 memcpy( this, &rhs, sizeof( PastPresentationTimingGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005261 return *this;
5262 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005263 PastPresentationTimingGOOGLE& setPresentID( uint32_t presentID_ )
5264 {
5265 presentID = presentID_;
5266 return *this;
5267 }
5268
5269 PastPresentationTimingGOOGLE& setDesiredPresentTime( uint64_t desiredPresentTime_ )
5270 {
5271 desiredPresentTime = desiredPresentTime_;
5272 return *this;
5273 }
5274
5275 PastPresentationTimingGOOGLE& setActualPresentTime( uint64_t actualPresentTime_ )
5276 {
5277 actualPresentTime = actualPresentTime_;
5278 return *this;
5279 }
5280
5281 PastPresentationTimingGOOGLE& setEarliestPresentTime( uint64_t earliestPresentTime_ )
5282 {
5283 earliestPresentTime = earliestPresentTime_;
5284 return *this;
5285 }
5286
5287 PastPresentationTimingGOOGLE& setPresentMargin( uint64_t presentMargin_ )
5288 {
5289 presentMargin = presentMargin_;
5290 return *this;
5291 }
5292
5293 operator const VkPastPresentationTimingGOOGLE&() const
5294 {
5295 return *reinterpret_cast<const VkPastPresentationTimingGOOGLE*>(this);
5296 }
5297
5298 bool operator==( PastPresentationTimingGOOGLE const& rhs ) const
5299 {
5300 return ( presentID == rhs.presentID )
5301 && ( desiredPresentTime == rhs.desiredPresentTime )
5302 && ( actualPresentTime == rhs.actualPresentTime )
5303 && ( earliestPresentTime == rhs.earliestPresentTime )
5304 && ( presentMargin == rhs.presentMargin );
5305 }
5306
5307 bool operator!=( PastPresentationTimingGOOGLE const& rhs ) const
5308 {
5309 return !operator==( rhs );
5310 }
5311
5312 uint32_t presentID;
5313 uint64_t desiredPresentTime;
5314 uint64_t actualPresentTime;
5315 uint64_t earliestPresentTime;
5316 uint64_t presentMargin;
5317 };
5318 static_assert( sizeof( PastPresentationTimingGOOGLE ) == sizeof( VkPastPresentationTimingGOOGLE ), "struct and wrapper have different size!" );
5319
5320 struct PresentTimeGOOGLE
5321 {
5322 PresentTimeGOOGLE( uint32_t presentID_ = 0, uint64_t desiredPresentTime_ = 0 )
5323 : presentID( presentID_ )
5324 , desiredPresentTime( desiredPresentTime_ )
5325 {
5326 }
5327
5328 PresentTimeGOOGLE( VkPresentTimeGOOGLE const & rhs )
5329 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005330 memcpy( this, &rhs, sizeof( PresentTimeGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005331 }
5332
5333 PresentTimeGOOGLE& operator=( VkPresentTimeGOOGLE const & rhs )
5334 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005335 memcpy( this, &rhs, sizeof( PresentTimeGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005336 return *this;
5337 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06005338 PresentTimeGOOGLE& setPresentID( uint32_t presentID_ )
5339 {
5340 presentID = presentID_;
5341 return *this;
5342 }
5343
5344 PresentTimeGOOGLE& setDesiredPresentTime( uint64_t desiredPresentTime_ )
5345 {
5346 desiredPresentTime = desiredPresentTime_;
5347 return *this;
5348 }
5349
5350 operator const VkPresentTimeGOOGLE&() const
5351 {
5352 return *reinterpret_cast<const VkPresentTimeGOOGLE*>(this);
5353 }
5354
5355 bool operator==( PresentTimeGOOGLE const& rhs ) const
5356 {
5357 return ( presentID == rhs.presentID )
5358 && ( desiredPresentTime == rhs.desiredPresentTime );
5359 }
5360
5361 bool operator!=( PresentTimeGOOGLE const& rhs ) const
5362 {
5363 return !operator==( rhs );
5364 }
5365
5366 uint32_t presentID;
5367 uint64_t desiredPresentTime;
5368 };
5369 static_assert( sizeof( PresentTimeGOOGLE ) == sizeof( VkPresentTimeGOOGLE ), "struct and wrapper have different size!" );
5370
Mark Young0f183a82017-02-28 09:58:04 -07005371 struct ViewportWScalingNV
5372 {
5373 ViewportWScalingNV( float xcoeff_ = 0, float ycoeff_ = 0 )
5374 : xcoeff( xcoeff_ )
5375 , ycoeff( ycoeff_ )
5376 {
5377 }
5378
5379 ViewportWScalingNV( VkViewportWScalingNV const & rhs )
5380 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005381 memcpy( this, &rhs, sizeof( ViewportWScalingNV ) );
Mark Young0f183a82017-02-28 09:58:04 -07005382 }
5383
5384 ViewportWScalingNV& operator=( VkViewportWScalingNV const & rhs )
5385 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005386 memcpy( this, &rhs, sizeof( ViewportWScalingNV ) );
Mark Young0f183a82017-02-28 09:58:04 -07005387 return *this;
5388 }
Mark Young0f183a82017-02-28 09:58:04 -07005389 ViewportWScalingNV& setXcoeff( float xcoeff_ )
5390 {
5391 xcoeff = xcoeff_;
5392 return *this;
5393 }
5394
5395 ViewportWScalingNV& setYcoeff( float ycoeff_ )
5396 {
5397 ycoeff = ycoeff_;
5398 return *this;
5399 }
5400
5401 operator const VkViewportWScalingNV&() const
5402 {
5403 return *reinterpret_cast<const VkViewportWScalingNV*>(this);
5404 }
5405
5406 bool operator==( ViewportWScalingNV const& rhs ) const
5407 {
5408 return ( xcoeff == rhs.xcoeff )
5409 && ( ycoeff == rhs.ycoeff );
5410 }
5411
5412 bool operator!=( ViewportWScalingNV const& rhs ) const
5413 {
5414 return !operator==( rhs );
5415 }
5416
5417 float xcoeff;
5418 float ycoeff;
5419 };
5420 static_assert( sizeof( ViewportWScalingNV ) == sizeof( VkViewportWScalingNV ), "struct and wrapper have different size!" );
5421
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06005422 struct SampleLocationEXT
5423 {
5424 SampleLocationEXT( float x_ = 0, float y_ = 0 )
5425 : x( x_ )
5426 , y( y_ )
5427 {
5428 }
5429
5430 SampleLocationEXT( VkSampleLocationEXT const & rhs )
5431 {
5432 memcpy( this, &rhs, sizeof( SampleLocationEXT ) );
5433 }
5434
5435 SampleLocationEXT& operator=( VkSampleLocationEXT const & rhs )
5436 {
5437 memcpy( this, &rhs, sizeof( SampleLocationEXT ) );
5438 return *this;
5439 }
5440 SampleLocationEXT& setX( float x_ )
5441 {
5442 x = x_;
5443 return *this;
5444 }
5445
5446 SampleLocationEXT& setY( float y_ )
5447 {
5448 y = y_;
5449 return *this;
5450 }
5451
5452 operator const VkSampleLocationEXT&() const
5453 {
5454 return *reinterpret_cast<const VkSampleLocationEXT*>(this);
5455 }
5456
5457 bool operator==( SampleLocationEXT const& rhs ) const
5458 {
5459 return ( x == rhs.x )
5460 && ( y == rhs.y );
5461 }
5462
5463 bool operator!=( SampleLocationEXT const& rhs ) const
5464 {
5465 return !operator==( rhs );
5466 }
5467
5468 float x;
5469 float y;
5470 };
5471 static_assert( sizeof( SampleLocationEXT ) == sizeof( VkSampleLocationEXT ), "struct and wrapper have different size!" );
5472
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005473 enum class ImageLayout
5474 {
5475 eUndefined = VK_IMAGE_LAYOUT_UNDEFINED,
5476 eGeneral = VK_IMAGE_LAYOUT_GENERAL,
5477 eColorAttachmentOptimal = VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL,
5478 eDepthStencilAttachmentOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL,
5479 eDepthStencilReadOnlyOptimal = VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL,
5480 eShaderReadOnlyOptimal = VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL,
5481 eTransferSrcOptimal = VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
5482 eTransferDstOptimal = VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
5483 ePreinitialized = VK_IMAGE_LAYOUT_PREINITIALIZED,
Mark Lobodzinski54385432017-05-15 10:27:52 -06005484 ePresentSrcKHR = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR,
5485 eSharedPresentKHR = VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005486 };
5487
5488 struct DescriptorImageInfo
5489 {
5490 DescriptorImageInfo( Sampler sampler_ = Sampler(), ImageView imageView_ = ImageView(), ImageLayout imageLayout_ = ImageLayout::eUndefined )
5491 : sampler( sampler_ )
5492 , imageView( imageView_ )
5493 , imageLayout( imageLayout_ )
5494 {
5495 }
5496
5497 DescriptorImageInfo( VkDescriptorImageInfo const & rhs )
5498 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005499 memcpy( this, &rhs, sizeof( DescriptorImageInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005500 }
5501
5502 DescriptorImageInfo& operator=( VkDescriptorImageInfo const & rhs )
5503 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005504 memcpy( this, &rhs, sizeof( DescriptorImageInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005505 return *this;
5506 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005507 DescriptorImageInfo& setSampler( Sampler sampler_ )
5508 {
5509 sampler = sampler_;
5510 return *this;
5511 }
5512
5513 DescriptorImageInfo& setImageView( ImageView imageView_ )
5514 {
5515 imageView = imageView_;
5516 return *this;
5517 }
5518
5519 DescriptorImageInfo& setImageLayout( ImageLayout imageLayout_ )
5520 {
5521 imageLayout = imageLayout_;
5522 return *this;
5523 }
5524
5525 operator const VkDescriptorImageInfo&() const
5526 {
5527 return *reinterpret_cast<const VkDescriptorImageInfo*>(this);
5528 }
5529
5530 bool operator==( DescriptorImageInfo const& rhs ) const
5531 {
5532 return ( sampler == rhs.sampler )
5533 && ( imageView == rhs.imageView )
5534 && ( imageLayout == rhs.imageLayout );
5535 }
5536
5537 bool operator!=( DescriptorImageInfo const& rhs ) const
5538 {
5539 return !operator==( rhs );
5540 }
5541
5542 Sampler sampler;
5543 ImageView imageView;
5544 ImageLayout imageLayout;
5545 };
5546 static_assert( sizeof( DescriptorImageInfo ) == sizeof( VkDescriptorImageInfo ), "struct and wrapper have different size!" );
5547
5548 struct AttachmentReference
5549 {
5550 AttachmentReference( uint32_t attachment_ = 0, ImageLayout layout_ = ImageLayout::eUndefined )
5551 : attachment( attachment_ )
5552 , layout( layout_ )
5553 {
5554 }
5555
5556 AttachmentReference( VkAttachmentReference const & rhs )
5557 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005558 memcpy( this, &rhs, sizeof( AttachmentReference ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005559 }
5560
5561 AttachmentReference& operator=( VkAttachmentReference const & rhs )
5562 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005563 memcpy( this, &rhs, sizeof( AttachmentReference ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005564 return *this;
5565 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005566 AttachmentReference& setAttachment( uint32_t attachment_ )
5567 {
5568 attachment = attachment_;
5569 return *this;
5570 }
5571
5572 AttachmentReference& setLayout( ImageLayout layout_ )
5573 {
5574 layout = layout_;
5575 return *this;
5576 }
5577
5578 operator const VkAttachmentReference&() const
5579 {
5580 return *reinterpret_cast<const VkAttachmentReference*>(this);
5581 }
5582
5583 bool operator==( AttachmentReference const& rhs ) const
5584 {
5585 return ( attachment == rhs.attachment )
5586 && ( layout == rhs.layout );
5587 }
5588
5589 bool operator!=( AttachmentReference const& rhs ) const
5590 {
5591 return !operator==( rhs );
5592 }
5593
5594 uint32_t attachment;
5595 ImageLayout layout;
5596 };
5597 static_assert( sizeof( AttachmentReference ) == sizeof( VkAttachmentReference ), "struct and wrapper have different size!" );
5598
5599 enum class AttachmentLoadOp
5600 {
5601 eLoad = VK_ATTACHMENT_LOAD_OP_LOAD,
5602 eClear = VK_ATTACHMENT_LOAD_OP_CLEAR,
5603 eDontCare = VK_ATTACHMENT_LOAD_OP_DONT_CARE
5604 };
5605
5606 enum class AttachmentStoreOp
5607 {
5608 eStore = VK_ATTACHMENT_STORE_OP_STORE,
5609 eDontCare = VK_ATTACHMENT_STORE_OP_DONT_CARE
5610 };
5611
5612 enum class ImageType
5613 {
5614 e1D = VK_IMAGE_TYPE_1D,
5615 e2D = VK_IMAGE_TYPE_2D,
5616 e3D = VK_IMAGE_TYPE_3D
5617 };
5618
5619 enum class ImageTiling
5620 {
5621 eOptimal = VK_IMAGE_TILING_OPTIMAL,
5622 eLinear = VK_IMAGE_TILING_LINEAR
5623 };
5624
5625 enum class ImageViewType
5626 {
5627 e1D = VK_IMAGE_VIEW_TYPE_1D,
5628 e2D = VK_IMAGE_VIEW_TYPE_2D,
5629 e3D = VK_IMAGE_VIEW_TYPE_3D,
5630 eCube = VK_IMAGE_VIEW_TYPE_CUBE,
5631 e1DArray = VK_IMAGE_VIEW_TYPE_1D_ARRAY,
5632 e2DArray = VK_IMAGE_VIEW_TYPE_2D_ARRAY,
5633 eCubeArray = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY
5634 };
5635
5636 enum class CommandBufferLevel
5637 {
5638 ePrimary = VK_COMMAND_BUFFER_LEVEL_PRIMARY,
5639 eSecondary = VK_COMMAND_BUFFER_LEVEL_SECONDARY
5640 };
5641
5642 enum class ComponentSwizzle
5643 {
5644 eIdentity = VK_COMPONENT_SWIZZLE_IDENTITY,
5645 eZero = VK_COMPONENT_SWIZZLE_ZERO,
5646 eOne = VK_COMPONENT_SWIZZLE_ONE,
5647 eR = VK_COMPONENT_SWIZZLE_R,
5648 eG = VK_COMPONENT_SWIZZLE_G,
5649 eB = VK_COMPONENT_SWIZZLE_B,
5650 eA = VK_COMPONENT_SWIZZLE_A
5651 };
5652
5653 struct ComponentMapping
5654 {
5655 ComponentMapping( ComponentSwizzle r_ = ComponentSwizzle::eIdentity, ComponentSwizzle g_ = ComponentSwizzle::eIdentity, ComponentSwizzle b_ = ComponentSwizzle::eIdentity, ComponentSwizzle a_ = ComponentSwizzle::eIdentity )
5656 : r( r_ )
5657 , g( g_ )
5658 , b( b_ )
5659 , a( a_ )
5660 {
5661 }
5662
5663 ComponentMapping( VkComponentMapping const & rhs )
5664 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005665 memcpy( this, &rhs, sizeof( ComponentMapping ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005666 }
5667
5668 ComponentMapping& operator=( VkComponentMapping const & rhs )
5669 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005670 memcpy( this, &rhs, sizeof( ComponentMapping ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005671 return *this;
5672 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005673 ComponentMapping& setR( ComponentSwizzle r_ )
5674 {
5675 r = r_;
5676 return *this;
5677 }
5678
5679 ComponentMapping& setG( ComponentSwizzle g_ )
5680 {
5681 g = g_;
5682 return *this;
5683 }
5684
5685 ComponentMapping& setB( ComponentSwizzle b_ )
5686 {
5687 b = b_;
5688 return *this;
5689 }
5690
5691 ComponentMapping& setA( ComponentSwizzle a_ )
5692 {
5693 a = a_;
5694 return *this;
5695 }
5696
5697 operator const VkComponentMapping&() const
5698 {
5699 return *reinterpret_cast<const VkComponentMapping*>(this);
5700 }
5701
5702 bool operator==( ComponentMapping const& rhs ) const
5703 {
5704 return ( r == rhs.r )
5705 && ( g == rhs.g )
5706 && ( b == rhs.b )
5707 && ( a == rhs.a );
5708 }
5709
5710 bool operator!=( ComponentMapping const& rhs ) const
5711 {
5712 return !operator==( rhs );
5713 }
5714
5715 ComponentSwizzle r;
5716 ComponentSwizzle g;
5717 ComponentSwizzle b;
5718 ComponentSwizzle a;
5719 };
5720 static_assert( sizeof( ComponentMapping ) == sizeof( VkComponentMapping ), "struct and wrapper have different size!" );
5721
5722 enum class DescriptorType
5723 {
5724 eSampler = VK_DESCRIPTOR_TYPE_SAMPLER,
5725 eCombinedImageSampler = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER,
5726 eSampledImage = VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE,
5727 eStorageImage = VK_DESCRIPTOR_TYPE_STORAGE_IMAGE,
5728 eUniformTexelBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER,
5729 eStorageTexelBuffer = VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER,
5730 eUniformBuffer = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER,
5731 eStorageBuffer = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER,
5732 eUniformBufferDynamic = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC,
5733 eStorageBufferDynamic = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC,
5734 eInputAttachment = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT
5735 };
5736
5737 struct DescriptorPoolSize
5738 {
5739 DescriptorPoolSize( DescriptorType type_ = DescriptorType::eSampler, uint32_t descriptorCount_ = 0 )
5740 : type( type_ )
5741 , descriptorCount( descriptorCount_ )
5742 {
5743 }
5744
5745 DescriptorPoolSize( VkDescriptorPoolSize const & rhs )
5746 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005747 memcpy( this, &rhs, sizeof( DescriptorPoolSize ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005748 }
5749
5750 DescriptorPoolSize& operator=( VkDescriptorPoolSize const & rhs )
5751 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005752 memcpy( this, &rhs, sizeof( DescriptorPoolSize ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005753 return *this;
5754 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005755 DescriptorPoolSize& setType( DescriptorType type_ )
5756 {
5757 type = type_;
5758 return *this;
5759 }
5760
5761 DescriptorPoolSize& setDescriptorCount( uint32_t descriptorCount_ )
5762 {
5763 descriptorCount = descriptorCount_;
5764 return *this;
5765 }
5766
5767 operator const VkDescriptorPoolSize&() const
5768 {
5769 return *reinterpret_cast<const VkDescriptorPoolSize*>(this);
5770 }
5771
5772 bool operator==( DescriptorPoolSize const& rhs ) const
5773 {
5774 return ( type == rhs.type )
5775 && ( descriptorCount == rhs.descriptorCount );
5776 }
5777
5778 bool operator!=( DescriptorPoolSize const& rhs ) const
5779 {
5780 return !operator==( rhs );
5781 }
5782
5783 DescriptorType type;
5784 uint32_t descriptorCount;
5785 };
5786 static_assert( sizeof( DescriptorPoolSize ) == sizeof( VkDescriptorPoolSize ), "struct and wrapper have different size!" );
5787
Mark Young0f183a82017-02-28 09:58:04 -07005788 struct DescriptorUpdateTemplateEntryKHR
5789 {
5790 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 )
5791 : dstBinding( dstBinding_ )
5792 , dstArrayElement( dstArrayElement_ )
5793 , descriptorCount( descriptorCount_ )
5794 , descriptorType( descriptorType_ )
5795 , offset( offset_ )
5796 , stride( stride_ )
5797 {
5798 }
5799
5800 DescriptorUpdateTemplateEntryKHR( VkDescriptorUpdateTemplateEntryKHR const & rhs )
5801 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005802 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateEntryKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -07005803 }
5804
5805 DescriptorUpdateTemplateEntryKHR& operator=( VkDescriptorUpdateTemplateEntryKHR const & rhs )
5806 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06005807 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateEntryKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -07005808 return *this;
5809 }
Mark Young0f183a82017-02-28 09:58:04 -07005810 DescriptorUpdateTemplateEntryKHR& setDstBinding( uint32_t dstBinding_ )
5811 {
5812 dstBinding = dstBinding_;
5813 return *this;
5814 }
5815
5816 DescriptorUpdateTemplateEntryKHR& setDstArrayElement( uint32_t dstArrayElement_ )
5817 {
5818 dstArrayElement = dstArrayElement_;
5819 return *this;
5820 }
5821
5822 DescriptorUpdateTemplateEntryKHR& setDescriptorCount( uint32_t descriptorCount_ )
5823 {
5824 descriptorCount = descriptorCount_;
5825 return *this;
5826 }
5827
5828 DescriptorUpdateTemplateEntryKHR& setDescriptorType( DescriptorType descriptorType_ )
5829 {
5830 descriptorType = descriptorType_;
5831 return *this;
5832 }
5833
5834 DescriptorUpdateTemplateEntryKHR& setOffset( size_t offset_ )
5835 {
5836 offset = offset_;
5837 return *this;
5838 }
5839
5840 DescriptorUpdateTemplateEntryKHR& setStride( size_t stride_ )
5841 {
5842 stride = stride_;
5843 return *this;
5844 }
5845
5846 operator const VkDescriptorUpdateTemplateEntryKHR&() const
5847 {
5848 return *reinterpret_cast<const VkDescriptorUpdateTemplateEntryKHR*>(this);
5849 }
5850
5851 bool operator==( DescriptorUpdateTemplateEntryKHR const& rhs ) const
5852 {
5853 return ( dstBinding == rhs.dstBinding )
5854 && ( dstArrayElement == rhs.dstArrayElement )
5855 && ( descriptorCount == rhs.descriptorCount )
5856 && ( descriptorType == rhs.descriptorType )
5857 && ( offset == rhs.offset )
5858 && ( stride == rhs.stride );
5859 }
5860
5861 bool operator!=( DescriptorUpdateTemplateEntryKHR const& rhs ) const
5862 {
5863 return !operator==( rhs );
5864 }
5865
5866 uint32_t dstBinding;
5867 uint32_t dstArrayElement;
5868 uint32_t descriptorCount;
5869 DescriptorType descriptorType;
5870 size_t offset;
5871 size_t stride;
5872 };
5873 static_assert( sizeof( DescriptorUpdateTemplateEntryKHR ) == sizeof( VkDescriptorUpdateTemplateEntryKHR ), "struct and wrapper have different size!" );
5874
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005875 enum class QueryType
5876 {
5877 eOcclusion = VK_QUERY_TYPE_OCCLUSION,
5878 ePipelineStatistics = VK_QUERY_TYPE_PIPELINE_STATISTICS,
5879 eTimestamp = VK_QUERY_TYPE_TIMESTAMP
5880 };
5881
5882 enum class BorderColor
5883 {
5884 eFloatTransparentBlack = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,
5885 eIntTransparentBlack = VK_BORDER_COLOR_INT_TRANSPARENT_BLACK,
5886 eFloatOpaqueBlack = VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK,
5887 eIntOpaqueBlack = VK_BORDER_COLOR_INT_OPAQUE_BLACK,
5888 eFloatOpaqueWhite = VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE,
5889 eIntOpaqueWhite = VK_BORDER_COLOR_INT_OPAQUE_WHITE
5890 };
5891
5892 enum class PipelineBindPoint
5893 {
5894 eGraphics = VK_PIPELINE_BIND_POINT_GRAPHICS,
5895 eCompute = VK_PIPELINE_BIND_POINT_COMPUTE
5896 };
5897
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005898 enum class PipelineCacheHeaderVersion
5899 {
5900 eOne = VK_PIPELINE_CACHE_HEADER_VERSION_ONE
5901 };
5902
5903 enum class PrimitiveTopology
5904 {
5905 ePointList = VK_PRIMITIVE_TOPOLOGY_POINT_LIST,
5906 eLineList = VK_PRIMITIVE_TOPOLOGY_LINE_LIST,
5907 eLineStrip = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP,
5908 eTriangleList = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST,
5909 eTriangleStrip = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP,
5910 eTriangleFan = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN,
5911 eLineListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY,
5912 eLineStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY,
5913 eTriangleListWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY,
5914 eTriangleStripWithAdjacency = VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY,
5915 ePatchList = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST
5916 };
5917
5918 enum class SharingMode
5919 {
5920 eExclusive = VK_SHARING_MODE_EXCLUSIVE,
5921 eConcurrent = VK_SHARING_MODE_CONCURRENT
5922 };
5923
5924 enum class IndexType
5925 {
5926 eUint16 = VK_INDEX_TYPE_UINT16,
5927 eUint32 = VK_INDEX_TYPE_UINT32
5928 };
5929
5930 enum class Filter
5931 {
5932 eNearest = VK_FILTER_NEAREST,
5933 eLinear = VK_FILTER_LINEAR,
5934 eCubicIMG = VK_FILTER_CUBIC_IMG
5935 };
5936
5937 enum class SamplerMipmapMode
5938 {
5939 eNearest = VK_SAMPLER_MIPMAP_MODE_NEAREST,
5940 eLinear = VK_SAMPLER_MIPMAP_MODE_LINEAR
5941 };
5942
5943 enum class SamplerAddressMode
5944 {
5945 eRepeat = VK_SAMPLER_ADDRESS_MODE_REPEAT,
5946 eMirroredRepeat = VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT,
5947 eClampToEdge = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE,
5948 eClampToBorder = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER,
5949 eMirrorClampToEdge = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE
5950 };
5951
5952 enum class CompareOp
5953 {
5954 eNever = VK_COMPARE_OP_NEVER,
5955 eLess = VK_COMPARE_OP_LESS,
5956 eEqual = VK_COMPARE_OP_EQUAL,
5957 eLessOrEqual = VK_COMPARE_OP_LESS_OR_EQUAL,
5958 eGreater = VK_COMPARE_OP_GREATER,
5959 eNotEqual = VK_COMPARE_OP_NOT_EQUAL,
5960 eGreaterOrEqual = VK_COMPARE_OP_GREATER_OR_EQUAL,
5961 eAlways = VK_COMPARE_OP_ALWAYS
5962 };
5963
5964 enum class PolygonMode
5965 {
5966 eFill = VK_POLYGON_MODE_FILL,
5967 eLine = VK_POLYGON_MODE_LINE,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06005968 ePoint = VK_POLYGON_MODE_POINT,
5969 eFillRectangleNV = VK_POLYGON_MODE_FILL_RECTANGLE_NV
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005970 };
5971
5972 enum class CullModeFlagBits
5973 {
5974 eNone = VK_CULL_MODE_NONE,
5975 eFront = VK_CULL_MODE_FRONT_BIT,
5976 eBack = VK_CULL_MODE_BACK_BIT,
5977 eFrontAndBack = VK_CULL_MODE_FRONT_AND_BACK
5978 };
5979
5980 using CullModeFlags = Flags<CullModeFlagBits, VkCullModeFlags>;
5981
Mark Lobodzinski2d589822016-12-12 09:44:34 -07005982 VULKAN_HPP_INLINE CullModeFlags operator|( CullModeFlagBits bit0, CullModeFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -06005983 {
5984 return CullModeFlags( bit0 ) | bit1;
5985 }
5986
Mark Lobodzinski2d589822016-12-12 09:44:34 -07005987 VULKAN_HPP_INLINE CullModeFlags operator~( CullModeFlagBits bits )
5988 {
5989 return ~( CullModeFlags( bits ) );
5990 }
5991
5992 template <> struct FlagTraits<CullModeFlagBits>
5993 {
5994 enum
5995 {
5996 allFlags = VkFlags(CullModeFlagBits::eNone) | VkFlags(CullModeFlagBits::eFront) | VkFlags(CullModeFlagBits::eBack) | VkFlags(CullModeFlagBits::eFrontAndBack)
5997 };
5998 };
5999
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006000 enum class FrontFace
6001 {
6002 eCounterClockwise = VK_FRONT_FACE_COUNTER_CLOCKWISE,
6003 eClockwise = VK_FRONT_FACE_CLOCKWISE
6004 };
6005
6006 enum class BlendFactor
6007 {
6008 eZero = VK_BLEND_FACTOR_ZERO,
6009 eOne = VK_BLEND_FACTOR_ONE,
6010 eSrcColor = VK_BLEND_FACTOR_SRC_COLOR,
6011 eOneMinusSrcColor = VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR,
6012 eDstColor = VK_BLEND_FACTOR_DST_COLOR,
6013 eOneMinusDstColor = VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR,
6014 eSrcAlpha = VK_BLEND_FACTOR_SRC_ALPHA,
6015 eOneMinusSrcAlpha = VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA,
6016 eDstAlpha = VK_BLEND_FACTOR_DST_ALPHA,
6017 eOneMinusDstAlpha = VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA,
6018 eConstantColor = VK_BLEND_FACTOR_CONSTANT_COLOR,
6019 eOneMinusConstantColor = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR,
6020 eConstantAlpha = VK_BLEND_FACTOR_CONSTANT_ALPHA,
6021 eOneMinusConstantAlpha = VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA,
6022 eSrcAlphaSaturate = VK_BLEND_FACTOR_SRC_ALPHA_SATURATE,
6023 eSrc1Color = VK_BLEND_FACTOR_SRC1_COLOR,
6024 eOneMinusSrc1Color = VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR,
6025 eSrc1Alpha = VK_BLEND_FACTOR_SRC1_ALPHA,
6026 eOneMinusSrc1Alpha = VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA
6027 };
6028
6029 enum class BlendOp
6030 {
6031 eAdd = VK_BLEND_OP_ADD,
6032 eSubtract = VK_BLEND_OP_SUBTRACT,
6033 eReverseSubtract = VK_BLEND_OP_REVERSE_SUBTRACT,
6034 eMin = VK_BLEND_OP_MIN,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006035 eMax = VK_BLEND_OP_MAX,
6036 eZeroEXT = VK_BLEND_OP_ZERO_EXT,
6037 eSrcEXT = VK_BLEND_OP_SRC_EXT,
6038 eDstEXT = VK_BLEND_OP_DST_EXT,
6039 eSrcOverEXT = VK_BLEND_OP_SRC_OVER_EXT,
6040 eDstOverEXT = VK_BLEND_OP_DST_OVER_EXT,
6041 eSrcInEXT = VK_BLEND_OP_SRC_IN_EXT,
6042 eDstInEXT = VK_BLEND_OP_DST_IN_EXT,
6043 eSrcOutEXT = VK_BLEND_OP_SRC_OUT_EXT,
6044 eDstOutEXT = VK_BLEND_OP_DST_OUT_EXT,
6045 eSrcAtopEXT = VK_BLEND_OP_SRC_ATOP_EXT,
6046 eDstAtopEXT = VK_BLEND_OP_DST_ATOP_EXT,
6047 eXorEXT = VK_BLEND_OP_XOR_EXT,
6048 eMultiplyEXT = VK_BLEND_OP_MULTIPLY_EXT,
6049 eScreenEXT = VK_BLEND_OP_SCREEN_EXT,
6050 eOverlayEXT = VK_BLEND_OP_OVERLAY_EXT,
6051 eDarkenEXT = VK_BLEND_OP_DARKEN_EXT,
6052 eLightenEXT = VK_BLEND_OP_LIGHTEN_EXT,
6053 eColordodgeEXT = VK_BLEND_OP_COLORDODGE_EXT,
6054 eColorburnEXT = VK_BLEND_OP_COLORBURN_EXT,
6055 eHardlightEXT = VK_BLEND_OP_HARDLIGHT_EXT,
6056 eSoftlightEXT = VK_BLEND_OP_SOFTLIGHT_EXT,
6057 eDifferenceEXT = VK_BLEND_OP_DIFFERENCE_EXT,
6058 eExclusionEXT = VK_BLEND_OP_EXCLUSION_EXT,
6059 eInvertEXT = VK_BLEND_OP_INVERT_EXT,
6060 eInvertRgbEXT = VK_BLEND_OP_INVERT_RGB_EXT,
6061 eLineardodgeEXT = VK_BLEND_OP_LINEARDODGE_EXT,
6062 eLinearburnEXT = VK_BLEND_OP_LINEARBURN_EXT,
6063 eVividlightEXT = VK_BLEND_OP_VIVIDLIGHT_EXT,
6064 eLinearlightEXT = VK_BLEND_OP_LINEARLIGHT_EXT,
6065 ePinlightEXT = VK_BLEND_OP_PINLIGHT_EXT,
6066 eHardmixEXT = VK_BLEND_OP_HARDMIX_EXT,
6067 eHslHueEXT = VK_BLEND_OP_HSL_HUE_EXT,
6068 eHslSaturationEXT = VK_BLEND_OP_HSL_SATURATION_EXT,
6069 eHslColorEXT = VK_BLEND_OP_HSL_COLOR_EXT,
6070 eHslLuminosityEXT = VK_BLEND_OP_HSL_LUMINOSITY_EXT,
6071 ePlusEXT = VK_BLEND_OP_PLUS_EXT,
6072 ePlusClampedEXT = VK_BLEND_OP_PLUS_CLAMPED_EXT,
6073 ePlusClampedAlphaEXT = VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT,
6074 ePlusDarkerEXT = VK_BLEND_OP_PLUS_DARKER_EXT,
6075 eMinusEXT = VK_BLEND_OP_MINUS_EXT,
6076 eMinusClampedEXT = VK_BLEND_OP_MINUS_CLAMPED_EXT,
6077 eContrastEXT = VK_BLEND_OP_CONTRAST_EXT,
6078 eInvertOvgEXT = VK_BLEND_OP_INVERT_OVG_EXT,
6079 eRedEXT = VK_BLEND_OP_RED_EXT,
6080 eGreenEXT = VK_BLEND_OP_GREEN_EXT,
6081 eBlueEXT = VK_BLEND_OP_BLUE_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006082 };
6083
6084 enum class StencilOp
6085 {
6086 eKeep = VK_STENCIL_OP_KEEP,
6087 eZero = VK_STENCIL_OP_ZERO,
6088 eReplace = VK_STENCIL_OP_REPLACE,
6089 eIncrementAndClamp = VK_STENCIL_OP_INCREMENT_AND_CLAMP,
6090 eDecrementAndClamp = VK_STENCIL_OP_DECREMENT_AND_CLAMP,
6091 eInvert = VK_STENCIL_OP_INVERT,
6092 eIncrementAndWrap = VK_STENCIL_OP_INCREMENT_AND_WRAP,
6093 eDecrementAndWrap = VK_STENCIL_OP_DECREMENT_AND_WRAP
6094 };
6095
6096 struct StencilOpState
6097 {
6098 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 )
6099 : failOp( failOp_ )
6100 , passOp( passOp_ )
6101 , depthFailOp( depthFailOp_ )
6102 , compareOp( compareOp_ )
6103 , compareMask( compareMask_ )
6104 , writeMask( writeMask_ )
6105 , reference( reference_ )
6106 {
6107 }
6108
6109 StencilOpState( VkStencilOpState const & rhs )
6110 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006111 memcpy( this, &rhs, sizeof( StencilOpState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006112 }
6113
6114 StencilOpState& operator=( VkStencilOpState const & rhs )
6115 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006116 memcpy( this, &rhs, sizeof( StencilOpState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006117 return *this;
6118 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006119 StencilOpState& setFailOp( StencilOp failOp_ )
6120 {
6121 failOp = failOp_;
6122 return *this;
6123 }
6124
6125 StencilOpState& setPassOp( StencilOp passOp_ )
6126 {
6127 passOp = passOp_;
6128 return *this;
6129 }
6130
6131 StencilOpState& setDepthFailOp( StencilOp depthFailOp_ )
6132 {
6133 depthFailOp = depthFailOp_;
6134 return *this;
6135 }
6136
6137 StencilOpState& setCompareOp( CompareOp compareOp_ )
6138 {
6139 compareOp = compareOp_;
6140 return *this;
6141 }
6142
6143 StencilOpState& setCompareMask( uint32_t compareMask_ )
6144 {
6145 compareMask = compareMask_;
6146 return *this;
6147 }
6148
6149 StencilOpState& setWriteMask( uint32_t writeMask_ )
6150 {
6151 writeMask = writeMask_;
6152 return *this;
6153 }
6154
6155 StencilOpState& setReference( uint32_t reference_ )
6156 {
6157 reference = reference_;
6158 return *this;
6159 }
6160
6161 operator const VkStencilOpState&() const
6162 {
6163 return *reinterpret_cast<const VkStencilOpState*>(this);
6164 }
6165
6166 bool operator==( StencilOpState const& rhs ) const
6167 {
6168 return ( failOp == rhs.failOp )
6169 && ( passOp == rhs.passOp )
6170 && ( depthFailOp == rhs.depthFailOp )
6171 && ( compareOp == rhs.compareOp )
6172 && ( compareMask == rhs.compareMask )
6173 && ( writeMask == rhs.writeMask )
6174 && ( reference == rhs.reference );
6175 }
6176
6177 bool operator!=( StencilOpState const& rhs ) const
6178 {
6179 return !operator==( rhs );
6180 }
6181
6182 StencilOp failOp;
6183 StencilOp passOp;
6184 StencilOp depthFailOp;
6185 CompareOp compareOp;
6186 uint32_t compareMask;
6187 uint32_t writeMask;
6188 uint32_t reference;
6189 };
6190 static_assert( sizeof( StencilOpState ) == sizeof( VkStencilOpState ), "struct and wrapper have different size!" );
6191
6192 enum class LogicOp
6193 {
6194 eClear = VK_LOGIC_OP_CLEAR,
6195 eAnd = VK_LOGIC_OP_AND,
6196 eAndReverse = VK_LOGIC_OP_AND_REVERSE,
6197 eCopy = VK_LOGIC_OP_COPY,
6198 eAndInverted = VK_LOGIC_OP_AND_INVERTED,
6199 eNoOp = VK_LOGIC_OP_NO_OP,
6200 eXor = VK_LOGIC_OP_XOR,
6201 eOr = VK_LOGIC_OP_OR,
6202 eNor = VK_LOGIC_OP_NOR,
6203 eEquivalent = VK_LOGIC_OP_EQUIVALENT,
6204 eInvert = VK_LOGIC_OP_INVERT,
6205 eOrReverse = VK_LOGIC_OP_OR_REVERSE,
6206 eCopyInverted = VK_LOGIC_OP_COPY_INVERTED,
6207 eOrInverted = VK_LOGIC_OP_OR_INVERTED,
6208 eNand = VK_LOGIC_OP_NAND,
6209 eSet = VK_LOGIC_OP_SET
6210 };
6211
6212 enum class InternalAllocationType
6213 {
6214 eExecutable = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE
6215 };
6216
6217 enum class SystemAllocationScope
6218 {
6219 eCommand = VK_SYSTEM_ALLOCATION_SCOPE_COMMAND,
6220 eObject = VK_SYSTEM_ALLOCATION_SCOPE_OBJECT,
6221 eCache = VK_SYSTEM_ALLOCATION_SCOPE_CACHE,
6222 eDevice = VK_SYSTEM_ALLOCATION_SCOPE_DEVICE,
6223 eInstance = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE
6224 };
6225
6226 enum class PhysicalDeviceType
6227 {
6228 eOther = VK_PHYSICAL_DEVICE_TYPE_OTHER,
6229 eIntegratedGpu = VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU,
6230 eDiscreteGpu = VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU,
6231 eVirtualGpu = VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU,
6232 eCpu = VK_PHYSICAL_DEVICE_TYPE_CPU
6233 };
6234
6235 enum class VertexInputRate
6236 {
6237 eVertex = VK_VERTEX_INPUT_RATE_VERTEX,
6238 eInstance = VK_VERTEX_INPUT_RATE_INSTANCE
6239 };
6240
6241 struct VertexInputBindingDescription
6242 {
6243 VertexInputBindingDescription( uint32_t binding_ = 0, uint32_t stride_ = 0, VertexInputRate inputRate_ = VertexInputRate::eVertex )
6244 : binding( binding_ )
6245 , stride( stride_ )
6246 , inputRate( inputRate_ )
6247 {
6248 }
6249
6250 VertexInputBindingDescription( VkVertexInputBindingDescription const & rhs )
6251 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006252 memcpy( this, &rhs, sizeof( VertexInputBindingDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006253 }
6254
6255 VertexInputBindingDescription& operator=( VkVertexInputBindingDescription const & rhs )
6256 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006257 memcpy( this, &rhs, sizeof( VertexInputBindingDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006258 return *this;
6259 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006260 VertexInputBindingDescription& setBinding( uint32_t binding_ )
6261 {
6262 binding = binding_;
6263 return *this;
6264 }
6265
6266 VertexInputBindingDescription& setStride( uint32_t stride_ )
6267 {
6268 stride = stride_;
6269 return *this;
6270 }
6271
6272 VertexInputBindingDescription& setInputRate( VertexInputRate inputRate_ )
6273 {
6274 inputRate = inputRate_;
6275 return *this;
6276 }
6277
6278 operator const VkVertexInputBindingDescription&() const
6279 {
6280 return *reinterpret_cast<const VkVertexInputBindingDescription*>(this);
6281 }
6282
6283 bool operator==( VertexInputBindingDescription const& rhs ) const
6284 {
6285 return ( binding == rhs.binding )
6286 && ( stride == rhs.stride )
6287 && ( inputRate == rhs.inputRate );
6288 }
6289
6290 bool operator!=( VertexInputBindingDescription const& rhs ) const
6291 {
6292 return !operator==( rhs );
6293 }
6294
6295 uint32_t binding;
6296 uint32_t stride;
6297 VertexInputRate inputRate;
6298 };
6299 static_assert( sizeof( VertexInputBindingDescription ) == sizeof( VkVertexInputBindingDescription ), "struct and wrapper have different size!" );
6300
6301 enum class Format
6302 {
6303 eUndefined = VK_FORMAT_UNDEFINED,
6304 eR4G4UnormPack8 = VK_FORMAT_R4G4_UNORM_PACK8,
6305 eR4G4B4A4UnormPack16 = VK_FORMAT_R4G4B4A4_UNORM_PACK16,
6306 eB4G4R4A4UnormPack16 = VK_FORMAT_B4G4R4A4_UNORM_PACK16,
6307 eR5G6B5UnormPack16 = VK_FORMAT_R5G6B5_UNORM_PACK16,
6308 eB5G6R5UnormPack16 = VK_FORMAT_B5G6R5_UNORM_PACK16,
6309 eR5G5B5A1UnormPack16 = VK_FORMAT_R5G5B5A1_UNORM_PACK16,
6310 eB5G5R5A1UnormPack16 = VK_FORMAT_B5G5R5A1_UNORM_PACK16,
6311 eA1R5G5B5UnormPack16 = VK_FORMAT_A1R5G5B5_UNORM_PACK16,
6312 eR8Unorm = VK_FORMAT_R8_UNORM,
6313 eR8Snorm = VK_FORMAT_R8_SNORM,
6314 eR8Uscaled = VK_FORMAT_R8_USCALED,
6315 eR8Sscaled = VK_FORMAT_R8_SSCALED,
6316 eR8Uint = VK_FORMAT_R8_UINT,
6317 eR8Sint = VK_FORMAT_R8_SINT,
6318 eR8Srgb = VK_FORMAT_R8_SRGB,
6319 eR8G8Unorm = VK_FORMAT_R8G8_UNORM,
6320 eR8G8Snorm = VK_FORMAT_R8G8_SNORM,
6321 eR8G8Uscaled = VK_FORMAT_R8G8_USCALED,
6322 eR8G8Sscaled = VK_FORMAT_R8G8_SSCALED,
6323 eR8G8Uint = VK_FORMAT_R8G8_UINT,
6324 eR8G8Sint = VK_FORMAT_R8G8_SINT,
6325 eR8G8Srgb = VK_FORMAT_R8G8_SRGB,
6326 eR8G8B8Unorm = VK_FORMAT_R8G8B8_UNORM,
6327 eR8G8B8Snorm = VK_FORMAT_R8G8B8_SNORM,
6328 eR8G8B8Uscaled = VK_FORMAT_R8G8B8_USCALED,
6329 eR8G8B8Sscaled = VK_FORMAT_R8G8B8_SSCALED,
6330 eR8G8B8Uint = VK_FORMAT_R8G8B8_UINT,
6331 eR8G8B8Sint = VK_FORMAT_R8G8B8_SINT,
6332 eR8G8B8Srgb = VK_FORMAT_R8G8B8_SRGB,
6333 eB8G8R8Unorm = VK_FORMAT_B8G8R8_UNORM,
6334 eB8G8R8Snorm = VK_FORMAT_B8G8R8_SNORM,
6335 eB8G8R8Uscaled = VK_FORMAT_B8G8R8_USCALED,
6336 eB8G8R8Sscaled = VK_FORMAT_B8G8R8_SSCALED,
6337 eB8G8R8Uint = VK_FORMAT_B8G8R8_UINT,
6338 eB8G8R8Sint = VK_FORMAT_B8G8R8_SINT,
6339 eB8G8R8Srgb = VK_FORMAT_B8G8R8_SRGB,
6340 eR8G8B8A8Unorm = VK_FORMAT_R8G8B8A8_UNORM,
6341 eR8G8B8A8Snorm = VK_FORMAT_R8G8B8A8_SNORM,
6342 eR8G8B8A8Uscaled = VK_FORMAT_R8G8B8A8_USCALED,
6343 eR8G8B8A8Sscaled = VK_FORMAT_R8G8B8A8_SSCALED,
6344 eR8G8B8A8Uint = VK_FORMAT_R8G8B8A8_UINT,
6345 eR8G8B8A8Sint = VK_FORMAT_R8G8B8A8_SINT,
6346 eR8G8B8A8Srgb = VK_FORMAT_R8G8B8A8_SRGB,
6347 eB8G8R8A8Unorm = VK_FORMAT_B8G8R8A8_UNORM,
6348 eB8G8R8A8Snorm = VK_FORMAT_B8G8R8A8_SNORM,
6349 eB8G8R8A8Uscaled = VK_FORMAT_B8G8R8A8_USCALED,
6350 eB8G8R8A8Sscaled = VK_FORMAT_B8G8R8A8_SSCALED,
6351 eB8G8R8A8Uint = VK_FORMAT_B8G8R8A8_UINT,
6352 eB8G8R8A8Sint = VK_FORMAT_B8G8R8A8_SINT,
6353 eB8G8R8A8Srgb = VK_FORMAT_B8G8R8A8_SRGB,
6354 eA8B8G8R8UnormPack32 = VK_FORMAT_A8B8G8R8_UNORM_PACK32,
6355 eA8B8G8R8SnormPack32 = VK_FORMAT_A8B8G8R8_SNORM_PACK32,
6356 eA8B8G8R8UscaledPack32 = VK_FORMAT_A8B8G8R8_USCALED_PACK32,
6357 eA8B8G8R8SscaledPack32 = VK_FORMAT_A8B8G8R8_SSCALED_PACK32,
6358 eA8B8G8R8UintPack32 = VK_FORMAT_A8B8G8R8_UINT_PACK32,
6359 eA8B8G8R8SintPack32 = VK_FORMAT_A8B8G8R8_SINT_PACK32,
6360 eA8B8G8R8SrgbPack32 = VK_FORMAT_A8B8G8R8_SRGB_PACK32,
6361 eA2R10G10B10UnormPack32 = VK_FORMAT_A2R10G10B10_UNORM_PACK32,
6362 eA2R10G10B10SnormPack32 = VK_FORMAT_A2R10G10B10_SNORM_PACK32,
6363 eA2R10G10B10UscaledPack32 = VK_FORMAT_A2R10G10B10_USCALED_PACK32,
6364 eA2R10G10B10SscaledPack32 = VK_FORMAT_A2R10G10B10_SSCALED_PACK32,
6365 eA2R10G10B10UintPack32 = VK_FORMAT_A2R10G10B10_UINT_PACK32,
6366 eA2R10G10B10SintPack32 = VK_FORMAT_A2R10G10B10_SINT_PACK32,
6367 eA2B10G10R10UnormPack32 = VK_FORMAT_A2B10G10R10_UNORM_PACK32,
6368 eA2B10G10R10SnormPack32 = VK_FORMAT_A2B10G10R10_SNORM_PACK32,
6369 eA2B10G10R10UscaledPack32 = VK_FORMAT_A2B10G10R10_USCALED_PACK32,
6370 eA2B10G10R10SscaledPack32 = VK_FORMAT_A2B10G10R10_SSCALED_PACK32,
6371 eA2B10G10R10UintPack32 = VK_FORMAT_A2B10G10R10_UINT_PACK32,
6372 eA2B10G10R10SintPack32 = VK_FORMAT_A2B10G10R10_SINT_PACK32,
6373 eR16Unorm = VK_FORMAT_R16_UNORM,
6374 eR16Snorm = VK_FORMAT_R16_SNORM,
6375 eR16Uscaled = VK_FORMAT_R16_USCALED,
6376 eR16Sscaled = VK_FORMAT_R16_SSCALED,
6377 eR16Uint = VK_FORMAT_R16_UINT,
6378 eR16Sint = VK_FORMAT_R16_SINT,
6379 eR16Sfloat = VK_FORMAT_R16_SFLOAT,
6380 eR16G16Unorm = VK_FORMAT_R16G16_UNORM,
6381 eR16G16Snorm = VK_FORMAT_R16G16_SNORM,
6382 eR16G16Uscaled = VK_FORMAT_R16G16_USCALED,
6383 eR16G16Sscaled = VK_FORMAT_R16G16_SSCALED,
6384 eR16G16Uint = VK_FORMAT_R16G16_UINT,
6385 eR16G16Sint = VK_FORMAT_R16G16_SINT,
6386 eR16G16Sfloat = VK_FORMAT_R16G16_SFLOAT,
6387 eR16G16B16Unorm = VK_FORMAT_R16G16B16_UNORM,
6388 eR16G16B16Snorm = VK_FORMAT_R16G16B16_SNORM,
6389 eR16G16B16Uscaled = VK_FORMAT_R16G16B16_USCALED,
6390 eR16G16B16Sscaled = VK_FORMAT_R16G16B16_SSCALED,
6391 eR16G16B16Uint = VK_FORMAT_R16G16B16_UINT,
6392 eR16G16B16Sint = VK_FORMAT_R16G16B16_SINT,
6393 eR16G16B16Sfloat = VK_FORMAT_R16G16B16_SFLOAT,
6394 eR16G16B16A16Unorm = VK_FORMAT_R16G16B16A16_UNORM,
6395 eR16G16B16A16Snorm = VK_FORMAT_R16G16B16A16_SNORM,
6396 eR16G16B16A16Uscaled = VK_FORMAT_R16G16B16A16_USCALED,
6397 eR16G16B16A16Sscaled = VK_FORMAT_R16G16B16A16_SSCALED,
6398 eR16G16B16A16Uint = VK_FORMAT_R16G16B16A16_UINT,
6399 eR16G16B16A16Sint = VK_FORMAT_R16G16B16A16_SINT,
6400 eR16G16B16A16Sfloat = VK_FORMAT_R16G16B16A16_SFLOAT,
6401 eR32Uint = VK_FORMAT_R32_UINT,
6402 eR32Sint = VK_FORMAT_R32_SINT,
6403 eR32Sfloat = VK_FORMAT_R32_SFLOAT,
6404 eR32G32Uint = VK_FORMAT_R32G32_UINT,
6405 eR32G32Sint = VK_FORMAT_R32G32_SINT,
6406 eR32G32Sfloat = VK_FORMAT_R32G32_SFLOAT,
6407 eR32G32B32Uint = VK_FORMAT_R32G32B32_UINT,
6408 eR32G32B32Sint = VK_FORMAT_R32G32B32_SINT,
6409 eR32G32B32Sfloat = VK_FORMAT_R32G32B32_SFLOAT,
6410 eR32G32B32A32Uint = VK_FORMAT_R32G32B32A32_UINT,
6411 eR32G32B32A32Sint = VK_FORMAT_R32G32B32A32_SINT,
6412 eR32G32B32A32Sfloat = VK_FORMAT_R32G32B32A32_SFLOAT,
6413 eR64Uint = VK_FORMAT_R64_UINT,
6414 eR64Sint = VK_FORMAT_R64_SINT,
6415 eR64Sfloat = VK_FORMAT_R64_SFLOAT,
6416 eR64G64Uint = VK_FORMAT_R64G64_UINT,
6417 eR64G64Sint = VK_FORMAT_R64G64_SINT,
6418 eR64G64Sfloat = VK_FORMAT_R64G64_SFLOAT,
6419 eR64G64B64Uint = VK_FORMAT_R64G64B64_UINT,
6420 eR64G64B64Sint = VK_FORMAT_R64G64B64_SINT,
6421 eR64G64B64Sfloat = VK_FORMAT_R64G64B64_SFLOAT,
6422 eR64G64B64A64Uint = VK_FORMAT_R64G64B64A64_UINT,
6423 eR64G64B64A64Sint = VK_FORMAT_R64G64B64A64_SINT,
6424 eR64G64B64A64Sfloat = VK_FORMAT_R64G64B64A64_SFLOAT,
6425 eB10G11R11UfloatPack32 = VK_FORMAT_B10G11R11_UFLOAT_PACK32,
6426 eE5B9G9R9UfloatPack32 = VK_FORMAT_E5B9G9R9_UFLOAT_PACK32,
6427 eD16Unorm = VK_FORMAT_D16_UNORM,
6428 eX8D24UnormPack32 = VK_FORMAT_X8_D24_UNORM_PACK32,
6429 eD32Sfloat = VK_FORMAT_D32_SFLOAT,
6430 eS8Uint = VK_FORMAT_S8_UINT,
6431 eD16UnormS8Uint = VK_FORMAT_D16_UNORM_S8_UINT,
6432 eD24UnormS8Uint = VK_FORMAT_D24_UNORM_S8_UINT,
6433 eD32SfloatS8Uint = VK_FORMAT_D32_SFLOAT_S8_UINT,
6434 eBc1RgbUnormBlock = VK_FORMAT_BC1_RGB_UNORM_BLOCK,
6435 eBc1RgbSrgbBlock = VK_FORMAT_BC1_RGB_SRGB_BLOCK,
6436 eBc1RgbaUnormBlock = VK_FORMAT_BC1_RGBA_UNORM_BLOCK,
6437 eBc1RgbaSrgbBlock = VK_FORMAT_BC1_RGBA_SRGB_BLOCK,
6438 eBc2UnormBlock = VK_FORMAT_BC2_UNORM_BLOCK,
6439 eBc2SrgbBlock = VK_FORMAT_BC2_SRGB_BLOCK,
6440 eBc3UnormBlock = VK_FORMAT_BC3_UNORM_BLOCK,
6441 eBc3SrgbBlock = VK_FORMAT_BC3_SRGB_BLOCK,
6442 eBc4UnormBlock = VK_FORMAT_BC4_UNORM_BLOCK,
6443 eBc4SnormBlock = VK_FORMAT_BC4_SNORM_BLOCK,
6444 eBc5UnormBlock = VK_FORMAT_BC5_UNORM_BLOCK,
6445 eBc5SnormBlock = VK_FORMAT_BC5_SNORM_BLOCK,
6446 eBc6HUfloatBlock = VK_FORMAT_BC6H_UFLOAT_BLOCK,
6447 eBc6HSfloatBlock = VK_FORMAT_BC6H_SFLOAT_BLOCK,
6448 eBc7UnormBlock = VK_FORMAT_BC7_UNORM_BLOCK,
6449 eBc7SrgbBlock = VK_FORMAT_BC7_SRGB_BLOCK,
6450 eEtc2R8G8B8UnormBlock = VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK,
6451 eEtc2R8G8B8SrgbBlock = VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK,
6452 eEtc2R8G8B8A1UnormBlock = VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK,
6453 eEtc2R8G8B8A1SrgbBlock = VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK,
6454 eEtc2R8G8B8A8UnormBlock = VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK,
6455 eEtc2R8G8B8A8SrgbBlock = VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK,
6456 eEacR11UnormBlock = VK_FORMAT_EAC_R11_UNORM_BLOCK,
6457 eEacR11SnormBlock = VK_FORMAT_EAC_R11_SNORM_BLOCK,
6458 eEacR11G11UnormBlock = VK_FORMAT_EAC_R11G11_UNORM_BLOCK,
6459 eEacR11G11SnormBlock = VK_FORMAT_EAC_R11G11_SNORM_BLOCK,
6460 eAstc4x4UnormBlock = VK_FORMAT_ASTC_4x4_UNORM_BLOCK,
6461 eAstc4x4SrgbBlock = VK_FORMAT_ASTC_4x4_SRGB_BLOCK,
6462 eAstc5x4UnormBlock = VK_FORMAT_ASTC_5x4_UNORM_BLOCK,
6463 eAstc5x4SrgbBlock = VK_FORMAT_ASTC_5x4_SRGB_BLOCK,
6464 eAstc5x5UnormBlock = VK_FORMAT_ASTC_5x5_UNORM_BLOCK,
6465 eAstc5x5SrgbBlock = VK_FORMAT_ASTC_5x5_SRGB_BLOCK,
6466 eAstc6x5UnormBlock = VK_FORMAT_ASTC_6x5_UNORM_BLOCK,
6467 eAstc6x5SrgbBlock = VK_FORMAT_ASTC_6x5_SRGB_BLOCK,
6468 eAstc6x6UnormBlock = VK_FORMAT_ASTC_6x6_UNORM_BLOCK,
6469 eAstc6x6SrgbBlock = VK_FORMAT_ASTC_6x6_SRGB_BLOCK,
6470 eAstc8x5UnormBlock = VK_FORMAT_ASTC_8x5_UNORM_BLOCK,
6471 eAstc8x5SrgbBlock = VK_FORMAT_ASTC_8x5_SRGB_BLOCK,
6472 eAstc8x6UnormBlock = VK_FORMAT_ASTC_8x6_UNORM_BLOCK,
6473 eAstc8x6SrgbBlock = VK_FORMAT_ASTC_8x6_SRGB_BLOCK,
6474 eAstc8x8UnormBlock = VK_FORMAT_ASTC_8x8_UNORM_BLOCK,
6475 eAstc8x8SrgbBlock = VK_FORMAT_ASTC_8x8_SRGB_BLOCK,
6476 eAstc10x5UnormBlock = VK_FORMAT_ASTC_10x5_UNORM_BLOCK,
6477 eAstc10x5SrgbBlock = VK_FORMAT_ASTC_10x5_SRGB_BLOCK,
6478 eAstc10x6UnormBlock = VK_FORMAT_ASTC_10x6_UNORM_BLOCK,
6479 eAstc10x6SrgbBlock = VK_FORMAT_ASTC_10x6_SRGB_BLOCK,
6480 eAstc10x8UnormBlock = VK_FORMAT_ASTC_10x8_UNORM_BLOCK,
6481 eAstc10x8SrgbBlock = VK_FORMAT_ASTC_10x8_SRGB_BLOCK,
6482 eAstc10x10UnormBlock = VK_FORMAT_ASTC_10x10_UNORM_BLOCK,
6483 eAstc10x10SrgbBlock = VK_FORMAT_ASTC_10x10_SRGB_BLOCK,
6484 eAstc12x10UnormBlock = VK_FORMAT_ASTC_12x10_UNORM_BLOCK,
6485 eAstc12x10SrgbBlock = VK_FORMAT_ASTC_12x10_SRGB_BLOCK,
6486 eAstc12x12UnormBlock = VK_FORMAT_ASTC_12x12_UNORM_BLOCK,
Lenny Komowebf33162016-08-26 14:10:08 -06006487 eAstc12x12SrgbBlock = VK_FORMAT_ASTC_12x12_SRGB_BLOCK,
6488 ePvrtc12BppUnormBlockIMG = VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG,
6489 ePvrtc14BppUnormBlockIMG = VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG,
6490 ePvrtc22BppUnormBlockIMG = VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG,
6491 ePvrtc24BppUnormBlockIMG = VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG,
6492 ePvrtc12BppSrgbBlockIMG = VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG,
6493 ePvrtc14BppSrgbBlockIMG = VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG,
6494 ePvrtc22BppSrgbBlockIMG = VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG,
6495 ePvrtc24BppSrgbBlockIMG = VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006496 };
6497
6498 struct VertexInputAttributeDescription
6499 {
6500 VertexInputAttributeDescription( uint32_t location_ = 0, uint32_t binding_ = 0, Format format_ = Format::eUndefined, uint32_t offset_ = 0 )
6501 : location( location_ )
6502 , binding( binding_ )
6503 , format( format_ )
6504 , offset( offset_ )
6505 {
6506 }
6507
6508 VertexInputAttributeDescription( VkVertexInputAttributeDescription const & rhs )
6509 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006510 memcpy( this, &rhs, sizeof( VertexInputAttributeDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006511 }
6512
6513 VertexInputAttributeDescription& operator=( VkVertexInputAttributeDescription const & rhs )
6514 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006515 memcpy( this, &rhs, sizeof( VertexInputAttributeDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006516 return *this;
6517 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006518 VertexInputAttributeDescription& setLocation( uint32_t location_ )
6519 {
6520 location = location_;
6521 return *this;
6522 }
6523
6524 VertexInputAttributeDescription& setBinding( uint32_t binding_ )
6525 {
6526 binding = binding_;
6527 return *this;
6528 }
6529
6530 VertexInputAttributeDescription& setFormat( Format format_ )
6531 {
6532 format = format_;
6533 return *this;
6534 }
6535
6536 VertexInputAttributeDescription& setOffset( uint32_t offset_ )
6537 {
6538 offset = offset_;
6539 return *this;
6540 }
6541
6542 operator const VkVertexInputAttributeDescription&() const
6543 {
6544 return *reinterpret_cast<const VkVertexInputAttributeDescription*>(this);
6545 }
6546
6547 bool operator==( VertexInputAttributeDescription const& rhs ) const
6548 {
6549 return ( location == rhs.location )
6550 && ( binding == rhs.binding )
6551 && ( format == rhs.format )
6552 && ( offset == rhs.offset );
6553 }
6554
6555 bool operator!=( VertexInputAttributeDescription const& rhs ) const
6556 {
6557 return !operator==( rhs );
6558 }
6559
6560 uint32_t location;
6561 uint32_t binding;
6562 Format format;
6563 uint32_t offset;
6564 };
6565 static_assert( sizeof( VertexInputAttributeDescription ) == sizeof( VkVertexInputAttributeDescription ), "struct and wrapper have different size!" );
6566
6567 enum class StructureType
6568 {
6569 eApplicationInfo = VK_STRUCTURE_TYPE_APPLICATION_INFO,
6570 eInstanceCreateInfo = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
6571 eDeviceQueueCreateInfo = VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO,
6572 eDeviceCreateInfo = VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,
6573 eSubmitInfo = VK_STRUCTURE_TYPE_SUBMIT_INFO,
6574 eMemoryAllocateInfo = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO,
6575 eMappedMemoryRange = VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE,
6576 eBindSparseInfo = VK_STRUCTURE_TYPE_BIND_SPARSE_INFO,
6577 eFenceCreateInfo = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO,
6578 eSemaphoreCreateInfo = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO,
6579 eEventCreateInfo = VK_STRUCTURE_TYPE_EVENT_CREATE_INFO,
6580 eQueryPoolCreateInfo = VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO,
6581 eBufferCreateInfo = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO,
6582 eBufferViewCreateInfo = VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO,
6583 eImageCreateInfo = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
6584 eImageViewCreateInfo = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO,
6585 eShaderModuleCreateInfo = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO,
6586 ePipelineCacheCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO,
6587 ePipelineShaderStageCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO,
6588 ePipelineVertexInputStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO,
6589 ePipelineInputAssemblyStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO,
6590 ePipelineTessellationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO,
6591 ePipelineViewportStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO,
6592 ePipelineRasterizationStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO,
6593 ePipelineMultisampleStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO,
6594 ePipelineDepthStencilStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO,
6595 ePipelineColorBlendStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO,
6596 ePipelineDynamicStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO,
6597 eGraphicsPipelineCreateInfo = VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO,
6598 eComputePipelineCreateInfo = VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO,
6599 ePipelineLayoutCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO,
6600 eSamplerCreateInfo = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO,
6601 eDescriptorSetLayoutCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO,
6602 eDescriptorPoolCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO,
6603 eDescriptorSetAllocateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO,
6604 eWriteDescriptorSet = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET,
6605 eCopyDescriptorSet = VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET,
6606 eFramebufferCreateInfo = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO,
6607 eRenderPassCreateInfo = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO,
6608 eCommandPoolCreateInfo = VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO,
6609 eCommandBufferAllocateInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO,
6610 eCommandBufferInheritanceInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO,
6611 eCommandBufferBeginInfo = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO,
6612 eRenderPassBeginInfo = VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO,
6613 eBufferMemoryBarrier = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER,
6614 eImageMemoryBarrier = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER,
6615 eMemoryBarrier = VK_STRUCTURE_TYPE_MEMORY_BARRIER,
6616 eLoaderInstanceCreateInfo = VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO,
6617 eLoaderDeviceCreateInfo = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
6618 eSwapchainCreateInfoKHR = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR,
6619 ePresentInfoKHR = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR,
6620 eDisplayModeCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR,
6621 eDisplaySurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR,
6622 eDisplayPresentInfoKHR = VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR,
6623 eXlibSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR,
6624 eXcbSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR,
6625 eWaylandSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR,
6626 eMirSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR,
6627 eAndroidSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR,
6628 eWin32SurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR,
6629 eDebugReportCallbackCreateInfoEXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
6630 ePipelineRasterizationStateRasterizationOrderAMD = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD,
6631 eDebugMarkerObjectNameInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT,
6632 eDebugMarkerObjectTagInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT,
6633 eDebugMarkerMarkerInfoEXT = VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT,
6634 eDedicatedAllocationImageCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV,
6635 eDedicatedAllocationBufferCreateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV,
Lenny Komow6501c122016-08-31 15:03:49 -06006636 eDedicatedAllocationMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV,
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006637 eTextureLodGatherFormatPropertiesAMD = VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD,
Mark Young0f183a82017-02-28 09:58:04 -07006638 eRenderPassMultiviewCreateInfoKHX = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX,
6639 ePhysicalDeviceMultiviewFeaturesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHX,
6640 ePhysicalDeviceMultiviewPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHX,
Lenny Komow6501c122016-08-31 15:03:49 -06006641 eExternalMemoryImageCreateInfoNV = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV,
6642 eExportMemoryAllocateInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV,
6643 eImportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV,
6644 eExportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV,
Lenny Komow68432d72016-09-29 14:16:59 -06006645 eWin32KeyedMutexAcquireReleaseInfoNV = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV,
Mark Young39389872017-01-19 21:10:49 -07006646 ePhysicalDeviceFeatures2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR,
6647 ePhysicalDeviceProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR,
6648 eFormatProperties2KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR,
6649 eImageFormatProperties2KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR,
6650 ePhysicalDeviceImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR,
6651 eQueueFamilyProperties2KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR,
6652 ePhysicalDeviceMemoryProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR,
6653 eSparseImageFormatProperties2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR,
6654 ePhysicalDeviceSparseImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006655 eMemoryAllocateFlagsInfoKHX = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHX,
6656 eBindBufferMemoryInfoKHX = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHX,
6657 eBindImageMemoryInfoKHX = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHX,
6658 eDeviceGroupRenderPassBeginInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHX,
6659 eDeviceGroupCommandBufferBeginInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX,
6660 eDeviceGroupSubmitInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX,
6661 eDeviceGroupBindSparseInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06006662 eAcquireNextImageInfoKHX = VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX,
Mark Young0f183a82017-02-28 09:58:04 -07006663 eDeviceGroupPresentCapabilitiesKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX,
6664 eImageSwapchainCreateInfoKHX = VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX,
6665 eBindImageMemorySwapchainInfoKHX = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX,
Mark Young0f183a82017-02-28 09:58:04 -07006666 eDeviceGroupPresentInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX,
6667 eDeviceGroupSwapchainCreateInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX,
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006668 eValidationFlagsEXT = VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT,
Mark Young39389872017-01-19 21:10:49 -07006669 eViSurfaceCreateInfoNN = VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN,
Mark Young0f183a82017-02-28 09:58:04 -07006670 ePhysicalDeviceGroupPropertiesKHX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHX,
6671 eDeviceGroupDeviceCreateInfoKHX = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHX,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006672 ePhysicalDeviceExternalImageFormatInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR,
6673 eExternalImageFormatPropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR,
6674 ePhysicalDeviceExternalBufferInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR,
6675 eExternalBufferPropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR,
6676 ePhysicalDeviceIdPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR,
6677 eExternalMemoryBufferCreateInfoKHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR,
6678 eExternalMemoryImageCreateInfoKHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR,
6679 eExportMemoryAllocateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR,
6680 eImportMemoryWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
6681 eExportMemoryWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR,
6682 eMemoryWin32HandlePropertiesKHR = VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR,
6683 eMemoryGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR,
6684 eImportMemoryFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR,
6685 eMemoryFdPropertiesKHR = VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR,
6686 eMemoryGetFdInfoKHR = VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR,
6687 eWin32KeyedMutexAcquireReleaseInfoKHR = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR,
6688 ePhysicalDeviceExternalSemaphoreInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR,
6689 eExternalSemaphorePropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR,
6690 eExportSemaphoreCreateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR,
6691 eImportSemaphoreWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
6692 eExportSemaphoreWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR,
6693 eD3D12FenceSubmitInfoKHR = VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR,
6694 eSemaphoreGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR,
6695 eImportSemaphoreFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR,
6696 eSemaphoreGetFdInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006697 ePhysicalDevicePushDescriptorPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006698 ePhysicalDevice16BitStorageFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR,
Mark Lobodzinski3289d762017-04-03 08:22:04 -06006699 ePresentRegionsKHR = VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006700 eDescriptorUpdateTemplateCreateInfoKHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR,
Mark Lobodzinski2d589822016-12-12 09:44:34 -07006701 eObjectTableCreateInfoNVX = VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX,
6702 eIndirectCommandsLayoutCreateInfoNVX = VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX,
6703 eCmdProcessCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX,
6704 eCmdReserveSpaceForCommandsInfoNVX = VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX,
6705 eDeviceGeneratedCommandsLimitsNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX,
Mark Young39389872017-01-19 21:10:49 -07006706 eDeviceGeneratedCommandsFeaturesNVX = VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX,
Mark Young0f183a82017-02-28 09:58:04 -07006707 ePipelineViewportWScalingStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV,
Mark Lobodzinski11a1a342017-08-21 10:34:38 -06006708 eSurfaceCapabilities2EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT,
Mark Young39389872017-01-19 21:10:49 -07006709 eDisplayPowerInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT,
6710 eDeviceEventInfoEXT = VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT,
6711 eDisplayEventInfoEXT = VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT,
Mark Young0f183a82017-02-28 09:58:04 -07006712 eSwapchainCounterCreateInfoEXT = VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT,
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06006713 ePresentTimesInfoGOOGLE = VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE,
Mark Young0f183a82017-02-28 09:58:04 -07006714 ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX,
6715 ePipelineViewportSwizzleStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV,
6716 ePhysicalDeviceDiscardRectanglePropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT,
6717 ePipelineDiscardRectangleStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT,
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -06006718 eHdrMetadataEXT = VK_STRUCTURE_TYPE_HDR_METADATA_EXT,
Mark Lobodzinski54385432017-05-15 10:27:52 -06006719 eSharedPresentSurfaceCapabilitiesKHR = VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006720 ePhysicalDeviceExternalFenceInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR,
6721 eExternalFencePropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR,
6722 eExportFenceCreateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR,
6723 eImportFenceWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR,
6724 eExportFenceWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR,
6725 eFenceGetWin32HandleInfoKHR = VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR,
6726 eImportFenceFdInfoKHR = VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR,
6727 eFenceGetFdInfoKHR = VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR,
Mark Lobodzinski54385432017-05-15 10:27:52 -06006728 ePhysicalDeviceSurfaceInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR,
6729 eSurfaceCapabilities2KHR = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR,
6730 eSurfaceFormat2KHR = VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006731 ePhysicalDeviceVariablePointerFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR,
Mark Young0f183a82017-02-28 09:58:04 -07006732 eIosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006733 eMacosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006734 eMemoryDedicatedRequirementsKHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR,
6735 eMemoryDedicatedAllocateInfoKHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006736 ePhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT,
6737 eSamplerReductionModeCreateInfoEXT = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06006738 eSampleLocationsInfoEXT = VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT,
6739 eRenderPassSampleLocationsBeginInfoEXT = VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT,
6740 ePipelineSampleLocationsStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT,
6741 ePhysicalDeviceSampleLocationsPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT,
6742 eMultisamplePropertiesEXT = VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT,
Mark Youngabc2d6e2017-07-07 07:59:56 -06006743 eBufferMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR,
6744 eImageMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR,
6745 eImageSparseMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR,
6746 eMemoryRequirements2KHR = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR,
6747 eSparseImageMemoryRequirements2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -06006748 ePhysicalDeviceBlendOperationAdvancedFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT,
6749 ePhysicalDeviceBlendOperationAdvancedPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT,
6750 ePipelineColorBlendAdvancedStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT,
6751 ePipelineCoverageToColorStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -06006752 ePipelineCoverageModulationStateCreateInfoNV = VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV,
6753 eValidationCacheCreateInfoEXT = VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT,
6754 eShaderModuleValidationCacheCreateInfoEXT = VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006755 };
6756
6757 struct ApplicationInfo
6758 {
6759 ApplicationInfo( const char* pApplicationName_ = nullptr, uint32_t applicationVersion_ = 0, const char* pEngineName_ = nullptr, uint32_t engineVersion_ = 0, uint32_t apiVersion_ = 0 )
6760 : sType( StructureType::eApplicationInfo )
6761 , pNext( nullptr )
6762 , pApplicationName( pApplicationName_ )
6763 , applicationVersion( applicationVersion_ )
6764 , pEngineName( pEngineName_ )
6765 , engineVersion( engineVersion_ )
6766 , apiVersion( apiVersion_ )
6767 {
6768 }
6769
6770 ApplicationInfo( VkApplicationInfo const & rhs )
6771 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006772 memcpy( this, &rhs, sizeof( ApplicationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006773 }
6774
6775 ApplicationInfo& operator=( VkApplicationInfo const & rhs )
6776 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006777 memcpy( this, &rhs, sizeof( ApplicationInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006778 return *this;
6779 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006780 ApplicationInfo& setPNext( const void* pNext_ )
6781 {
6782 pNext = pNext_;
6783 return *this;
6784 }
6785
6786 ApplicationInfo& setPApplicationName( const char* pApplicationName_ )
6787 {
6788 pApplicationName = pApplicationName_;
6789 return *this;
6790 }
6791
6792 ApplicationInfo& setApplicationVersion( uint32_t applicationVersion_ )
6793 {
6794 applicationVersion = applicationVersion_;
6795 return *this;
6796 }
6797
6798 ApplicationInfo& setPEngineName( const char* pEngineName_ )
6799 {
6800 pEngineName = pEngineName_;
6801 return *this;
6802 }
6803
6804 ApplicationInfo& setEngineVersion( uint32_t engineVersion_ )
6805 {
6806 engineVersion = engineVersion_;
6807 return *this;
6808 }
6809
6810 ApplicationInfo& setApiVersion( uint32_t apiVersion_ )
6811 {
6812 apiVersion = apiVersion_;
6813 return *this;
6814 }
6815
6816 operator const VkApplicationInfo&() const
6817 {
6818 return *reinterpret_cast<const VkApplicationInfo*>(this);
6819 }
6820
6821 bool operator==( ApplicationInfo const& rhs ) const
6822 {
6823 return ( sType == rhs.sType )
6824 && ( pNext == rhs.pNext )
6825 && ( pApplicationName == rhs.pApplicationName )
6826 && ( applicationVersion == rhs.applicationVersion )
6827 && ( pEngineName == rhs.pEngineName )
6828 && ( engineVersion == rhs.engineVersion )
6829 && ( apiVersion == rhs.apiVersion );
6830 }
6831
6832 bool operator!=( ApplicationInfo const& rhs ) const
6833 {
6834 return !operator==( rhs );
6835 }
6836
6837 private:
6838 StructureType sType;
6839
6840 public:
6841 const void* pNext;
6842 const char* pApplicationName;
6843 uint32_t applicationVersion;
6844 const char* pEngineName;
6845 uint32_t engineVersion;
6846 uint32_t apiVersion;
6847 };
6848 static_assert( sizeof( ApplicationInfo ) == sizeof( VkApplicationInfo ), "struct and wrapper have different size!" );
6849
6850 struct DeviceQueueCreateInfo
6851 {
6852 DeviceQueueCreateInfo( DeviceQueueCreateFlags flags_ = DeviceQueueCreateFlags(), uint32_t queueFamilyIndex_ = 0, uint32_t queueCount_ = 0, const float* pQueuePriorities_ = nullptr )
6853 : sType( StructureType::eDeviceQueueCreateInfo )
6854 , pNext( nullptr )
6855 , flags( flags_ )
6856 , queueFamilyIndex( queueFamilyIndex_ )
6857 , queueCount( queueCount_ )
6858 , pQueuePriorities( pQueuePriorities_ )
6859 {
6860 }
6861
6862 DeviceQueueCreateInfo( VkDeviceQueueCreateInfo const & rhs )
6863 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006864 memcpy( this, &rhs, sizeof( DeviceQueueCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006865 }
6866
6867 DeviceQueueCreateInfo& operator=( VkDeviceQueueCreateInfo const & rhs )
6868 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006869 memcpy( this, &rhs, sizeof( DeviceQueueCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006870 return *this;
6871 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006872 DeviceQueueCreateInfo& setPNext( const void* pNext_ )
6873 {
6874 pNext = pNext_;
6875 return *this;
6876 }
6877
6878 DeviceQueueCreateInfo& setFlags( DeviceQueueCreateFlags flags_ )
6879 {
6880 flags = flags_;
6881 return *this;
6882 }
6883
6884 DeviceQueueCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
6885 {
6886 queueFamilyIndex = queueFamilyIndex_;
6887 return *this;
6888 }
6889
6890 DeviceQueueCreateInfo& setQueueCount( uint32_t queueCount_ )
6891 {
6892 queueCount = queueCount_;
6893 return *this;
6894 }
6895
6896 DeviceQueueCreateInfo& setPQueuePriorities( const float* pQueuePriorities_ )
6897 {
6898 pQueuePriorities = pQueuePriorities_;
6899 return *this;
6900 }
6901
6902 operator const VkDeviceQueueCreateInfo&() const
6903 {
6904 return *reinterpret_cast<const VkDeviceQueueCreateInfo*>(this);
6905 }
6906
6907 bool operator==( DeviceQueueCreateInfo const& rhs ) const
6908 {
6909 return ( sType == rhs.sType )
6910 && ( pNext == rhs.pNext )
6911 && ( flags == rhs.flags )
6912 && ( queueFamilyIndex == rhs.queueFamilyIndex )
6913 && ( queueCount == rhs.queueCount )
6914 && ( pQueuePriorities == rhs.pQueuePriorities );
6915 }
6916
6917 bool operator!=( DeviceQueueCreateInfo const& rhs ) const
6918 {
6919 return !operator==( rhs );
6920 }
6921
6922 private:
6923 StructureType sType;
6924
6925 public:
6926 const void* pNext;
6927 DeviceQueueCreateFlags flags;
6928 uint32_t queueFamilyIndex;
6929 uint32_t queueCount;
6930 const float* pQueuePriorities;
6931 };
6932 static_assert( sizeof( DeviceQueueCreateInfo ) == sizeof( VkDeviceQueueCreateInfo ), "struct and wrapper have different size!" );
6933
6934 struct DeviceCreateInfo
6935 {
6936 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 )
6937 : sType( StructureType::eDeviceCreateInfo )
6938 , pNext( nullptr )
6939 , flags( flags_ )
6940 , queueCreateInfoCount( queueCreateInfoCount_ )
6941 , pQueueCreateInfos( pQueueCreateInfos_ )
6942 , enabledLayerCount( enabledLayerCount_ )
6943 , ppEnabledLayerNames( ppEnabledLayerNames_ )
6944 , enabledExtensionCount( enabledExtensionCount_ )
6945 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
6946 , pEnabledFeatures( pEnabledFeatures_ )
6947 {
6948 }
6949
6950 DeviceCreateInfo( VkDeviceCreateInfo const & rhs )
6951 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006952 memcpy( this, &rhs, sizeof( DeviceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006953 }
6954
6955 DeviceCreateInfo& operator=( VkDeviceCreateInfo const & rhs )
6956 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06006957 memcpy( this, &rhs, sizeof( DeviceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006958 return *this;
6959 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06006960 DeviceCreateInfo& setPNext( const void* pNext_ )
6961 {
6962 pNext = pNext_;
6963 return *this;
6964 }
6965
6966 DeviceCreateInfo& setFlags( DeviceCreateFlags flags_ )
6967 {
6968 flags = flags_;
6969 return *this;
6970 }
6971
6972 DeviceCreateInfo& setQueueCreateInfoCount( uint32_t queueCreateInfoCount_ )
6973 {
6974 queueCreateInfoCount = queueCreateInfoCount_;
6975 return *this;
6976 }
6977
6978 DeviceCreateInfo& setPQueueCreateInfos( const DeviceQueueCreateInfo* pQueueCreateInfos_ )
6979 {
6980 pQueueCreateInfos = pQueueCreateInfos_;
6981 return *this;
6982 }
6983
6984 DeviceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
6985 {
6986 enabledLayerCount = enabledLayerCount_;
6987 return *this;
6988 }
6989
6990 DeviceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
6991 {
6992 ppEnabledLayerNames = ppEnabledLayerNames_;
6993 return *this;
6994 }
6995
6996 DeviceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
6997 {
6998 enabledExtensionCount = enabledExtensionCount_;
6999 return *this;
7000 }
7001
7002 DeviceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
7003 {
7004 ppEnabledExtensionNames = ppEnabledExtensionNames_;
7005 return *this;
7006 }
7007
7008 DeviceCreateInfo& setPEnabledFeatures( const PhysicalDeviceFeatures* pEnabledFeatures_ )
7009 {
7010 pEnabledFeatures = pEnabledFeatures_;
7011 return *this;
7012 }
7013
7014 operator const VkDeviceCreateInfo&() const
7015 {
7016 return *reinterpret_cast<const VkDeviceCreateInfo*>(this);
7017 }
7018
7019 bool operator==( DeviceCreateInfo const& rhs ) const
7020 {
7021 return ( sType == rhs.sType )
7022 && ( pNext == rhs.pNext )
7023 && ( flags == rhs.flags )
7024 && ( queueCreateInfoCount == rhs.queueCreateInfoCount )
7025 && ( pQueueCreateInfos == rhs.pQueueCreateInfos )
7026 && ( enabledLayerCount == rhs.enabledLayerCount )
7027 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
7028 && ( enabledExtensionCount == rhs.enabledExtensionCount )
7029 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames )
7030 && ( pEnabledFeatures == rhs.pEnabledFeatures );
7031 }
7032
7033 bool operator!=( DeviceCreateInfo const& rhs ) const
7034 {
7035 return !operator==( rhs );
7036 }
7037
7038 private:
7039 StructureType sType;
7040
7041 public:
7042 const void* pNext;
7043 DeviceCreateFlags flags;
7044 uint32_t queueCreateInfoCount;
7045 const DeviceQueueCreateInfo* pQueueCreateInfos;
7046 uint32_t enabledLayerCount;
7047 const char* const* ppEnabledLayerNames;
7048 uint32_t enabledExtensionCount;
7049 const char* const* ppEnabledExtensionNames;
7050 const PhysicalDeviceFeatures* pEnabledFeatures;
7051 };
7052 static_assert( sizeof( DeviceCreateInfo ) == sizeof( VkDeviceCreateInfo ), "struct and wrapper have different size!" );
7053
7054 struct InstanceCreateInfo
7055 {
7056 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 )
7057 : sType( StructureType::eInstanceCreateInfo )
7058 , pNext( nullptr )
7059 , flags( flags_ )
7060 , pApplicationInfo( pApplicationInfo_ )
7061 , enabledLayerCount( enabledLayerCount_ )
7062 , ppEnabledLayerNames( ppEnabledLayerNames_ )
7063 , enabledExtensionCount( enabledExtensionCount_ )
7064 , ppEnabledExtensionNames( ppEnabledExtensionNames_ )
7065 {
7066 }
7067
7068 InstanceCreateInfo( VkInstanceCreateInfo const & rhs )
7069 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007070 memcpy( this, &rhs, sizeof( InstanceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007071 }
7072
7073 InstanceCreateInfo& operator=( VkInstanceCreateInfo const & rhs )
7074 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007075 memcpy( this, &rhs, sizeof( InstanceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007076 return *this;
7077 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007078 InstanceCreateInfo& setPNext( const void* pNext_ )
7079 {
7080 pNext = pNext_;
7081 return *this;
7082 }
7083
7084 InstanceCreateInfo& setFlags( InstanceCreateFlags flags_ )
7085 {
7086 flags = flags_;
7087 return *this;
7088 }
7089
7090 InstanceCreateInfo& setPApplicationInfo( const ApplicationInfo* pApplicationInfo_ )
7091 {
7092 pApplicationInfo = pApplicationInfo_;
7093 return *this;
7094 }
7095
7096 InstanceCreateInfo& setEnabledLayerCount( uint32_t enabledLayerCount_ )
7097 {
7098 enabledLayerCount = enabledLayerCount_;
7099 return *this;
7100 }
7101
7102 InstanceCreateInfo& setPpEnabledLayerNames( const char* const* ppEnabledLayerNames_ )
7103 {
7104 ppEnabledLayerNames = ppEnabledLayerNames_;
7105 return *this;
7106 }
7107
7108 InstanceCreateInfo& setEnabledExtensionCount( uint32_t enabledExtensionCount_ )
7109 {
7110 enabledExtensionCount = enabledExtensionCount_;
7111 return *this;
7112 }
7113
7114 InstanceCreateInfo& setPpEnabledExtensionNames( const char* const* ppEnabledExtensionNames_ )
7115 {
7116 ppEnabledExtensionNames = ppEnabledExtensionNames_;
7117 return *this;
7118 }
7119
7120 operator const VkInstanceCreateInfo&() const
7121 {
7122 return *reinterpret_cast<const VkInstanceCreateInfo*>(this);
7123 }
7124
7125 bool operator==( InstanceCreateInfo const& rhs ) const
7126 {
7127 return ( sType == rhs.sType )
7128 && ( pNext == rhs.pNext )
7129 && ( flags == rhs.flags )
7130 && ( pApplicationInfo == rhs.pApplicationInfo )
7131 && ( enabledLayerCount == rhs.enabledLayerCount )
7132 && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames )
7133 && ( enabledExtensionCount == rhs.enabledExtensionCount )
7134 && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames );
7135 }
7136
7137 bool operator!=( InstanceCreateInfo const& rhs ) const
7138 {
7139 return !operator==( rhs );
7140 }
7141
7142 private:
7143 StructureType sType;
7144
7145 public:
7146 const void* pNext;
7147 InstanceCreateFlags flags;
7148 const ApplicationInfo* pApplicationInfo;
7149 uint32_t enabledLayerCount;
7150 const char* const* ppEnabledLayerNames;
7151 uint32_t enabledExtensionCount;
7152 const char* const* ppEnabledExtensionNames;
7153 };
7154 static_assert( sizeof( InstanceCreateInfo ) == sizeof( VkInstanceCreateInfo ), "struct and wrapper have different size!" );
7155
7156 struct MemoryAllocateInfo
7157 {
7158 MemoryAllocateInfo( DeviceSize allocationSize_ = 0, uint32_t memoryTypeIndex_ = 0 )
7159 : sType( StructureType::eMemoryAllocateInfo )
7160 , pNext( nullptr )
7161 , allocationSize( allocationSize_ )
7162 , memoryTypeIndex( memoryTypeIndex_ )
7163 {
7164 }
7165
7166 MemoryAllocateInfo( VkMemoryAllocateInfo const & rhs )
7167 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007168 memcpy( this, &rhs, sizeof( MemoryAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007169 }
7170
7171 MemoryAllocateInfo& operator=( VkMemoryAllocateInfo const & rhs )
7172 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007173 memcpy( this, &rhs, sizeof( MemoryAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007174 return *this;
7175 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007176 MemoryAllocateInfo& setPNext( const void* pNext_ )
7177 {
7178 pNext = pNext_;
7179 return *this;
7180 }
7181
7182 MemoryAllocateInfo& setAllocationSize( DeviceSize allocationSize_ )
7183 {
7184 allocationSize = allocationSize_;
7185 return *this;
7186 }
7187
7188 MemoryAllocateInfo& setMemoryTypeIndex( uint32_t memoryTypeIndex_ )
7189 {
7190 memoryTypeIndex = memoryTypeIndex_;
7191 return *this;
7192 }
7193
7194 operator const VkMemoryAllocateInfo&() const
7195 {
7196 return *reinterpret_cast<const VkMemoryAllocateInfo*>(this);
7197 }
7198
7199 bool operator==( MemoryAllocateInfo const& rhs ) const
7200 {
7201 return ( sType == rhs.sType )
7202 && ( pNext == rhs.pNext )
7203 && ( allocationSize == rhs.allocationSize )
7204 && ( memoryTypeIndex == rhs.memoryTypeIndex );
7205 }
7206
7207 bool operator!=( MemoryAllocateInfo const& rhs ) const
7208 {
7209 return !operator==( rhs );
7210 }
7211
7212 private:
7213 StructureType sType;
7214
7215 public:
7216 const void* pNext;
7217 DeviceSize allocationSize;
7218 uint32_t memoryTypeIndex;
7219 };
7220 static_assert( sizeof( MemoryAllocateInfo ) == sizeof( VkMemoryAllocateInfo ), "struct and wrapper have different size!" );
7221
7222 struct MappedMemoryRange
7223 {
7224 MappedMemoryRange( DeviceMemory memory_ = DeviceMemory(), DeviceSize offset_ = 0, DeviceSize size_ = 0 )
7225 : sType( StructureType::eMappedMemoryRange )
7226 , pNext( nullptr )
7227 , memory( memory_ )
7228 , offset( offset_ )
7229 , size( size_ )
7230 {
7231 }
7232
7233 MappedMemoryRange( VkMappedMemoryRange const & rhs )
7234 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007235 memcpy( this, &rhs, sizeof( MappedMemoryRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007236 }
7237
7238 MappedMemoryRange& operator=( VkMappedMemoryRange const & rhs )
7239 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007240 memcpy( this, &rhs, sizeof( MappedMemoryRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007241 return *this;
7242 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007243 MappedMemoryRange& setPNext( const void* pNext_ )
7244 {
7245 pNext = pNext_;
7246 return *this;
7247 }
7248
7249 MappedMemoryRange& setMemory( DeviceMemory memory_ )
7250 {
7251 memory = memory_;
7252 return *this;
7253 }
7254
7255 MappedMemoryRange& setOffset( DeviceSize offset_ )
7256 {
7257 offset = offset_;
7258 return *this;
7259 }
7260
7261 MappedMemoryRange& setSize( DeviceSize size_ )
7262 {
7263 size = size_;
7264 return *this;
7265 }
7266
7267 operator const VkMappedMemoryRange&() const
7268 {
7269 return *reinterpret_cast<const VkMappedMemoryRange*>(this);
7270 }
7271
7272 bool operator==( MappedMemoryRange const& rhs ) const
7273 {
7274 return ( sType == rhs.sType )
7275 && ( pNext == rhs.pNext )
7276 && ( memory == rhs.memory )
7277 && ( offset == rhs.offset )
7278 && ( size == rhs.size );
7279 }
7280
7281 bool operator!=( MappedMemoryRange const& rhs ) const
7282 {
7283 return !operator==( rhs );
7284 }
7285
7286 private:
7287 StructureType sType;
7288
7289 public:
7290 const void* pNext;
7291 DeviceMemory memory;
7292 DeviceSize offset;
7293 DeviceSize size;
7294 };
7295 static_assert( sizeof( MappedMemoryRange ) == sizeof( VkMappedMemoryRange ), "struct and wrapper have different size!" );
7296
7297 struct WriteDescriptorSet
7298 {
7299 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 )
7300 : sType( StructureType::eWriteDescriptorSet )
7301 , pNext( nullptr )
7302 , dstSet( dstSet_ )
7303 , dstBinding( dstBinding_ )
7304 , dstArrayElement( dstArrayElement_ )
7305 , descriptorCount( descriptorCount_ )
7306 , descriptorType( descriptorType_ )
7307 , pImageInfo( pImageInfo_ )
7308 , pBufferInfo( pBufferInfo_ )
7309 , pTexelBufferView( pTexelBufferView_ )
7310 {
7311 }
7312
7313 WriteDescriptorSet( VkWriteDescriptorSet const & rhs )
7314 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007315 memcpy( this, &rhs, sizeof( WriteDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007316 }
7317
7318 WriteDescriptorSet& operator=( VkWriteDescriptorSet const & rhs )
7319 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007320 memcpy( this, &rhs, sizeof( WriteDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007321 return *this;
7322 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007323 WriteDescriptorSet& setPNext( const void* pNext_ )
7324 {
7325 pNext = pNext_;
7326 return *this;
7327 }
7328
7329 WriteDescriptorSet& setDstSet( DescriptorSet dstSet_ )
7330 {
7331 dstSet = dstSet_;
7332 return *this;
7333 }
7334
7335 WriteDescriptorSet& setDstBinding( uint32_t dstBinding_ )
7336 {
7337 dstBinding = dstBinding_;
7338 return *this;
7339 }
7340
7341 WriteDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
7342 {
7343 dstArrayElement = dstArrayElement_;
7344 return *this;
7345 }
7346
7347 WriteDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
7348 {
7349 descriptorCount = descriptorCount_;
7350 return *this;
7351 }
7352
7353 WriteDescriptorSet& setDescriptorType( DescriptorType descriptorType_ )
7354 {
7355 descriptorType = descriptorType_;
7356 return *this;
7357 }
7358
7359 WriteDescriptorSet& setPImageInfo( const DescriptorImageInfo* pImageInfo_ )
7360 {
7361 pImageInfo = pImageInfo_;
7362 return *this;
7363 }
7364
7365 WriteDescriptorSet& setPBufferInfo( const DescriptorBufferInfo* pBufferInfo_ )
7366 {
7367 pBufferInfo = pBufferInfo_;
7368 return *this;
7369 }
7370
7371 WriteDescriptorSet& setPTexelBufferView( const BufferView* pTexelBufferView_ )
7372 {
7373 pTexelBufferView = pTexelBufferView_;
7374 return *this;
7375 }
7376
7377 operator const VkWriteDescriptorSet&() const
7378 {
7379 return *reinterpret_cast<const VkWriteDescriptorSet*>(this);
7380 }
7381
7382 bool operator==( WriteDescriptorSet const& rhs ) const
7383 {
7384 return ( sType == rhs.sType )
7385 && ( pNext == rhs.pNext )
7386 && ( dstSet == rhs.dstSet )
7387 && ( dstBinding == rhs.dstBinding )
7388 && ( dstArrayElement == rhs.dstArrayElement )
7389 && ( descriptorCount == rhs.descriptorCount )
7390 && ( descriptorType == rhs.descriptorType )
7391 && ( pImageInfo == rhs.pImageInfo )
7392 && ( pBufferInfo == rhs.pBufferInfo )
7393 && ( pTexelBufferView == rhs.pTexelBufferView );
7394 }
7395
7396 bool operator!=( WriteDescriptorSet const& rhs ) const
7397 {
7398 return !operator==( rhs );
7399 }
7400
7401 private:
7402 StructureType sType;
7403
7404 public:
7405 const void* pNext;
7406 DescriptorSet dstSet;
7407 uint32_t dstBinding;
7408 uint32_t dstArrayElement;
7409 uint32_t descriptorCount;
7410 DescriptorType descriptorType;
7411 const DescriptorImageInfo* pImageInfo;
7412 const DescriptorBufferInfo* pBufferInfo;
7413 const BufferView* pTexelBufferView;
7414 };
7415 static_assert( sizeof( WriteDescriptorSet ) == sizeof( VkWriteDescriptorSet ), "struct and wrapper have different size!" );
7416
7417 struct CopyDescriptorSet
7418 {
7419 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 )
7420 : sType( StructureType::eCopyDescriptorSet )
7421 , pNext( nullptr )
7422 , srcSet( srcSet_ )
7423 , srcBinding( srcBinding_ )
7424 , srcArrayElement( srcArrayElement_ )
7425 , dstSet( dstSet_ )
7426 , dstBinding( dstBinding_ )
7427 , dstArrayElement( dstArrayElement_ )
7428 , descriptorCount( descriptorCount_ )
7429 {
7430 }
7431
7432 CopyDescriptorSet( VkCopyDescriptorSet const & rhs )
7433 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007434 memcpy( this, &rhs, sizeof( CopyDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007435 }
7436
7437 CopyDescriptorSet& operator=( VkCopyDescriptorSet const & rhs )
7438 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007439 memcpy( this, &rhs, sizeof( CopyDescriptorSet ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007440 return *this;
7441 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007442 CopyDescriptorSet& setPNext( const void* pNext_ )
7443 {
7444 pNext = pNext_;
7445 return *this;
7446 }
7447
7448 CopyDescriptorSet& setSrcSet( DescriptorSet srcSet_ )
7449 {
7450 srcSet = srcSet_;
7451 return *this;
7452 }
7453
7454 CopyDescriptorSet& setSrcBinding( uint32_t srcBinding_ )
7455 {
7456 srcBinding = srcBinding_;
7457 return *this;
7458 }
7459
7460 CopyDescriptorSet& setSrcArrayElement( uint32_t srcArrayElement_ )
7461 {
7462 srcArrayElement = srcArrayElement_;
7463 return *this;
7464 }
7465
7466 CopyDescriptorSet& setDstSet( DescriptorSet dstSet_ )
7467 {
7468 dstSet = dstSet_;
7469 return *this;
7470 }
7471
7472 CopyDescriptorSet& setDstBinding( uint32_t dstBinding_ )
7473 {
7474 dstBinding = dstBinding_;
7475 return *this;
7476 }
7477
7478 CopyDescriptorSet& setDstArrayElement( uint32_t dstArrayElement_ )
7479 {
7480 dstArrayElement = dstArrayElement_;
7481 return *this;
7482 }
7483
7484 CopyDescriptorSet& setDescriptorCount( uint32_t descriptorCount_ )
7485 {
7486 descriptorCount = descriptorCount_;
7487 return *this;
7488 }
7489
7490 operator const VkCopyDescriptorSet&() const
7491 {
7492 return *reinterpret_cast<const VkCopyDescriptorSet*>(this);
7493 }
7494
7495 bool operator==( CopyDescriptorSet const& rhs ) const
7496 {
7497 return ( sType == rhs.sType )
7498 && ( pNext == rhs.pNext )
7499 && ( srcSet == rhs.srcSet )
7500 && ( srcBinding == rhs.srcBinding )
7501 && ( srcArrayElement == rhs.srcArrayElement )
7502 && ( dstSet == rhs.dstSet )
7503 && ( dstBinding == rhs.dstBinding )
7504 && ( dstArrayElement == rhs.dstArrayElement )
7505 && ( descriptorCount == rhs.descriptorCount );
7506 }
7507
7508 bool operator!=( CopyDescriptorSet const& rhs ) const
7509 {
7510 return !operator==( rhs );
7511 }
7512
7513 private:
7514 StructureType sType;
7515
7516 public:
7517 const void* pNext;
7518 DescriptorSet srcSet;
7519 uint32_t srcBinding;
7520 uint32_t srcArrayElement;
7521 DescriptorSet dstSet;
7522 uint32_t dstBinding;
7523 uint32_t dstArrayElement;
7524 uint32_t descriptorCount;
7525 };
7526 static_assert( sizeof( CopyDescriptorSet ) == sizeof( VkCopyDescriptorSet ), "struct and wrapper have different size!" );
7527
7528 struct BufferViewCreateInfo
7529 {
7530 BufferViewCreateInfo( BufferViewCreateFlags flags_ = BufferViewCreateFlags(), Buffer buffer_ = Buffer(), Format format_ = Format::eUndefined, DeviceSize offset_ = 0, DeviceSize range_ = 0 )
7531 : sType( StructureType::eBufferViewCreateInfo )
7532 , pNext( nullptr )
7533 , flags( flags_ )
7534 , buffer( buffer_ )
7535 , format( format_ )
7536 , offset( offset_ )
7537 , range( range_ )
7538 {
7539 }
7540
7541 BufferViewCreateInfo( VkBufferViewCreateInfo const & rhs )
7542 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007543 memcpy( this, &rhs, sizeof( BufferViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007544 }
7545
7546 BufferViewCreateInfo& operator=( VkBufferViewCreateInfo const & rhs )
7547 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007548 memcpy( this, &rhs, sizeof( BufferViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007549 return *this;
7550 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007551 BufferViewCreateInfo& setPNext( const void* pNext_ )
7552 {
7553 pNext = pNext_;
7554 return *this;
7555 }
7556
7557 BufferViewCreateInfo& setFlags( BufferViewCreateFlags flags_ )
7558 {
7559 flags = flags_;
7560 return *this;
7561 }
7562
7563 BufferViewCreateInfo& setBuffer( Buffer buffer_ )
7564 {
7565 buffer = buffer_;
7566 return *this;
7567 }
7568
7569 BufferViewCreateInfo& setFormat( Format format_ )
7570 {
7571 format = format_;
7572 return *this;
7573 }
7574
7575 BufferViewCreateInfo& setOffset( DeviceSize offset_ )
7576 {
7577 offset = offset_;
7578 return *this;
7579 }
7580
7581 BufferViewCreateInfo& setRange( DeviceSize range_ )
7582 {
7583 range = range_;
7584 return *this;
7585 }
7586
7587 operator const VkBufferViewCreateInfo&() const
7588 {
7589 return *reinterpret_cast<const VkBufferViewCreateInfo*>(this);
7590 }
7591
7592 bool operator==( BufferViewCreateInfo const& rhs ) const
7593 {
7594 return ( sType == rhs.sType )
7595 && ( pNext == rhs.pNext )
7596 && ( flags == rhs.flags )
7597 && ( buffer == rhs.buffer )
7598 && ( format == rhs.format )
7599 && ( offset == rhs.offset )
7600 && ( range == rhs.range );
7601 }
7602
7603 bool operator!=( BufferViewCreateInfo const& rhs ) const
7604 {
7605 return !operator==( rhs );
7606 }
7607
7608 private:
7609 StructureType sType;
7610
7611 public:
7612 const void* pNext;
7613 BufferViewCreateFlags flags;
7614 Buffer buffer;
7615 Format format;
7616 DeviceSize offset;
7617 DeviceSize range;
7618 };
7619 static_assert( sizeof( BufferViewCreateInfo ) == sizeof( VkBufferViewCreateInfo ), "struct and wrapper have different size!" );
7620
7621 struct ShaderModuleCreateInfo
7622 {
7623 ShaderModuleCreateInfo( ShaderModuleCreateFlags flags_ = ShaderModuleCreateFlags(), size_t codeSize_ = 0, const uint32_t* pCode_ = nullptr )
7624 : sType( StructureType::eShaderModuleCreateInfo )
7625 , pNext( nullptr )
7626 , flags( flags_ )
7627 , codeSize( codeSize_ )
7628 , pCode( pCode_ )
7629 {
7630 }
7631
7632 ShaderModuleCreateInfo( VkShaderModuleCreateInfo const & rhs )
7633 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007634 memcpy( this, &rhs, sizeof( ShaderModuleCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007635 }
7636
7637 ShaderModuleCreateInfo& operator=( VkShaderModuleCreateInfo const & rhs )
7638 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007639 memcpy( this, &rhs, sizeof( ShaderModuleCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007640 return *this;
7641 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007642 ShaderModuleCreateInfo& setPNext( const void* pNext_ )
7643 {
7644 pNext = pNext_;
7645 return *this;
7646 }
7647
7648 ShaderModuleCreateInfo& setFlags( ShaderModuleCreateFlags flags_ )
7649 {
7650 flags = flags_;
7651 return *this;
7652 }
7653
7654 ShaderModuleCreateInfo& setCodeSize( size_t codeSize_ )
7655 {
7656 codeSize = codeSize_;
7657 return *this;
7658 }
7659
7660 ShaderModuleCreateInfo& setPCode( const uint32_t* pCode_ )
7661 {
7662 pCode = pCode_;
7663 return *this;
7664 }
7665
7666 operator const VkShaderModuleCreateInfo&() const
7667 {
7668 return *reinterpret_cast<const VkShaderModuleCreateInfo*>(this);
7669 }
7670
7671 bool operator==( ShaderModuleCreateInfo const& rhs ) const
7672 {
7673 return ( sType == rhs.sType )
7674 && ( pNext == rhs.pNext )
7675 && ( flags == rhs.flags )
7676 && ( codeSize == rhs.codeSize )
7677 && ( pCode == rhs.pCode );
7678 }
7679
7680 bool operator!=( ShaderModuleCreateInfo const& rhs ) const
7681 {
7682 return !operator==( rhs );
7683 }
7684
7685 private:
7686 StructureType sType;
7687
7688 public:
7689 const void* pNext;
7690 ShaderModuleCreateFlags flags;
7691 size_t codeSize;
7692 const uint32_t* pCode;
7693 };
7694 static_assert( sizeof( ShaderModuleCreateInfo ) == sizeof( VkShaderModuleCreateInfo ), "struct and wrapper have different size!" );
7695
7696 struct DescriptorSetAllocateInfo
7697 {
7698 DescriptorSetAllocateInfo( DescriptorPool descriptorPool_ = DescriptorPool(), uint32_t descriptorSetCount_ = 0, const DescriptorSetLayout* pSetLayouts_ = nullptr )
7699 : sType( StructureType::eDescriptorSetAllocateInfo )
7700 , pNext( nullptr )
7701 , descriptorPool( descriptorPool_ )
7702 , descriptorSetCount( descriptorSetCount_ )
7703 , pSetLayouts( pSetLayouts_ )
7704 {
7705 }
7706
7707 DescriptorSetAllocateInfo( VkDescriptorSetAllocateInfo const & rhs )
7708 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007709 memcpy( this, &rhs, sizeof( DescriptorSetAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007710 }
7711
7712 DescriptorSetAllocateInfo& operator=( VkDescriptorSetAllocateInfo const & rhs )
7713 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007714 memcpy( this, &rhs, sizeof( DescriptorSetAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007715 return *this;
7716 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007717 DescriptorSetAllocateInfo& setPNext( const void* pNext_ )
7718 {
7719 pNext = pNext_;
7720 return *this;
7721 }
7722
7723 DescriptorSetAllocateInfo& setDescriptorPool( DescriptorPool descriptorPool_ )
7724 {
7725 descriptorPool = descriptorPool_;
7726 return *this;
7727 }
7728
7729 DescriptorSetAllocateInfo& setDescriptorSetCount( uint32_t descriptorSetCount_ )
7730 {
7731 descriptorSetCount = descriptorSetCount_;
7732 return *this;
7733 }
7734
7735 DescriptorSetAllocateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
7736 {
7737 pSetLayouts = pSetLayouts_;
7738 return *this;
7739 }
7740
7741 operator const VkDescriptorSetAllocateInfo&() const
7742 {
7743 return *reinterpret_cast<const VkDescriptorSetAllocateInfo*>(this);
7744 }
7745
7746 bool operator==( DescriptorSetAllocateInfo const& rhs ) const
7747 {
7748 return ( sType == rhs.sType )
7749 && ( pNext == rhs.pNext )
7750 && ( descriptorPool == rhs.descriptorPool )
7751 && ( descriptorSetCount == rhs.descriptorSetCount )
7752 && ( pSetLayouts == rhs.pSetLayouts );
7753 }
7754
7755 bool operator!=( DescriptorSetAllocateInfo const& rhs ) const
7756 {
7757 return !operator==( rhs );
7758 }
7759
7760 private:
7761 StructureType sType;
7762
7763 public:
7764 const void* pNext;
7765 DescriptorPool descriptorPool;
7766 uint32_t descriptorSetCount;
7767 const DescriptorSetLayout* pSetLayouts;
7768 };
7769 static_assert( sizeof( DescriptorSetAllocateInfo ) == sizeof( VkDescriptorSetAllocateInfo ), "struct and wrapper have different size!" );
7770
7771 struct PipelineVertexInputStateCreateInfo
7772 {
7773 PipelineVertexInputStateCreateInfo( PipelineVertexInputStateCreateFlags flags_ = PipelineVertexInputStateCreateFlags(), uint32_t vertexBindingDescriptionCount_ = 0, const VertexInputBindingDescription* pVertexBindingDescriptions_ = nullptr, uint32_t vertexAttributeDescriptionCount_ = 0, const VertexInputAttributeDescription* pVertexAttributeDescriptions_ = nullptr )
7774 : sType( StructureType::ePipelineVertexInputStateCreateInfo )
7775 , pNext( nullptr )
7776 , flags( flags_ )
7777 , vertexBindingDescriptionCount( vertexBindingDescriptionCount_ )
7778 , pVertexBindingDescriptions( pVertexBindingDescriptions_ )
7779 , vertexAttributeDescriptionCount( vertexAttributeDescriptionCount_ )
7780 , pVertexAttributeDescriptions( pVertexAttributeDescriptions_ )
7781 {
7782 }
7783
7784 PipelineVertexInputStateCreateInfo( VkPipelineVertexInputStateCreateInfo const & rhs )
7785 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007786 memcpy( this, &rhs, sizeof( PipelineVertexInputStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007787 }
7788
7789 PipelineVertexInputStateCreateInfo& operator=( VkPipelineVertexInputStateCreateInfo const & rhs )
7790 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007791 memcpy( this, &rhs, sizeof( PipelineVertexInputStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007792 return *this;
7793 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007794 PipelineVertexInputStateCreateInfo& setPNext( const void* pNext_ )
7795 {
7796 pNext = pNext_;
7797 return *this;
7798 }
7799
7800 PipelineVertexInputStateCreateInfo& setFlags( PipelineVertexInputStateCreateFlags flags_ )
7801 {
7802 flags = flags_;
7803 return *this;
7804 }
7805
7806 PipelineVertexInputStateCreateInfo& setVertexBindingDescriptionCount( uint32_t vertexBindingDescriptionCount_ )
7807 {
7808 vertexBindingDescriptionCount = vertexBindingDescriptionCount_;
7809 return *this;
7810 }
7811
7812 PipelineVertexInputStateCreateInfo& setPVertexBindingDescriptions( const VertexInputBindingDescription* pVertexBindingDescriptions_ )
7813 {
7814 pVertexBindingDescriptions = pVertexBindingDescriptions_;
7815 return *this;
7816 }
7817
7818 PipelineVertexInputStateCreateInfo& setVertexAttributeDescriptionCount( uint32_t vertexAttributeDescriptionCount_ )
7819 {
7820 vertexAttributeDescriptionCount = vertexAttributeDescriptionCount_;
7821 return *this;
7822 }
7823
7824 PipelineVertexInputStateCreateInfo& setPVertexAttributeDescriptions( const VertexInputAttributeDescription* pVertexAttributeDescriptions_ )
7825 {
7826 pVertexAttributeDescriptions = pVertexAttributeDescriptions_;
7827 return *this;
7828 }
7829
7830 operator const VkPipelineVertexInputStateCreateInfo&() const
7831 {
7832 return *reinterpret_cast<const VkPipelineVertexInputStateCreateInfo*>(this);
7833 }
7834
7835 bool operator==( PipelineVertexInputStateCreateInfo const& rhs ) const
7836 {
7837 return ( sType == rhs.sType )
7838 && ( pNext == rhs.pNext )
7839 && ( flags == rhs.flags )
7840 && ( vertexBindingDescriptionCount == rhs.vertexBindingDescriptionCount )
7841 && ( pVertexBindingDescriptions == rhs.pVertexBindingDescriptions )
7842 && ( vertexAttributeDescriptionCount == rhs.vertexAttributeDescriptionCount )
7843 && ( pVertexAttributeDescriptions == rhs.pVertexAttributeDescriptions );
7844 }
7845
7846 bool operator!=( PipelineVertexInputStateCreateInfo const& rhs ) const
7847 {
7848 return !operator==( rhs );
7849 }
7850
7851 private:
7852 StructureType sType;
7853
7854 public:
7855 const void* pNext;
7856 PipelineVertexInputStateCreateFlags flags;
7857 uint32_t vertexBindingDescriptionCount;
7858 const VertexInputBindingDescription* pVertexBindingDescriptions;
7859 uint32_t vertexAttributeDescriptionCount;
7860 const VertexInputAttributeDescription* pVertexAttributeDescriptions;
7861 };
7862 static_assert( sizeof( PipelineVertexInputStateCreateInfo ) == sizeof( VkPipelineVertexInputStateCreateInfo ), "struct and wrapper have different size!" );
7863
7864 struct PipelineInputAssemblyStateCreateInfo
7865 {
7866 PipelineInputAssemblyStateCreateInfo( PipelineInputAssemblyStateCreateFlags flags_ = PipelineInputAssemblyStateCreateFlags(), PrimitiveTopology topology_ = PrimitiveTopology::ePointList, Bool32 primitiveRestartEnable_ = 0 )
7867 : sType( StructureType::ePipelineInputAssemblyStateCreateInfo )
7868 , pNext( nullptr )
7869 , flags( flags_ )
7870 , topology( topology_ )
7871 , primitiveRestartEnable( primitiveRestartEnable_ )
7872 {
7873 }
7874
7875 PipelineInputAssemblyStateCreateInfo( VkPipelineInputAssemblyStateCreateInfo const & rhs )
7876 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007877 memcpy( this, &rhs, sizeof( PipelineInputAssemblyStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007878 }
7879
7880 PipelineInputAssemblyStateCreateInfo& operator=( VkPipelineInputAssemblyStateCreateInfo const & rhs )
7881 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007882 memcpy( this, &rhs, sizeof( PipelineInputAssemblyStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007883 return *this;
7884 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007885 PipelineInputAssemblyStateCreateInfo& setPNext( const void* pNext_ )
7886 {
7887 pNext = pNext_;
7888 return *this;
7889 }
7890
7891 PipelineInputAssemblyStateCreateInfo& setFlags( PipelineInputAssemblyStateCreateFlags flags_ )
7892 {
7893 flags = flags_;
7894 return *this;
7895 }
7896
7897 PipelineInputAssemblyStateCreateInfo& setTopology( PrimitiveTopology topology_ )
7898 {
7899 topology = topology_;
7900 return *this;
7901 }
7902
7903 PipelineInputAssemblyStateCreateInfo& setPrimitiveRestartEnable( Bool32 primitiveRestartEnable_ )
7904 {
7905 primitiveRestartEnable = primitiveRestartEnable_;
7906 return *this;
7907 }
7908
7909 operator const VkPipelineInputAssemblyStateCreateInfo&() const
7910 {
7911 return *reinterpret_cast<const VkPipelineInputAssemblyStateCreateInfo*>(this);
7912 }
7913
7914 bool operator==( PipelineInputAssemblyStateCreateInfo const& rhs ) const
7915 {
7916 return ( sType == rhs.sType )
7917 && ( pNext == rhs.pNext )
7918 && ( flags == rhs.flags )
7919 && ( topology == rhs.topology )
7920 && ( primitiveRestartEnable == rhs.primitiveRestartEnable );
7921 }
7922
7923 bool operator!=( PipelineInputAssemblyStateCreateInfo const& rhs ) const
7924 {
7925 return !operator==( rhs );
7926 }
7927
7928 private:
7929 StructureType sType;
7930
7931 public:
7932 const void* pNext;
7933 PipelineInputAssemblyStateCreateFlags flags;
7934 PrimitiveTopology topology;
7935 Bool32 primitiveRestartEnable;
7936 };
7937 static_assert( sizeof( PipelineInputAssemblyStateCreateInfo ) == sizeof( VkPipelineInputAssemblyStateCreateInfo ), "struct and wrapper have different size!" );
7938
7939 struct PipelineTessellationStateCreateInfo
7940 {
7941 PipelineTessellationStateCreateInfo( PipelineTessellationStateCreateFlags flags_ = PipelineTessellationStateCreateFlags(), uint32_t patchControlPoints_ = 0 )
7942 : sType( StructureType::ePipelineTessellationStateCreateInfo )
7943 , pNext( nullptr )
7944 , flags( flags_ )
7945 , patchControlPoints( patchControlPoints_ )
7946 {
7947 }
7948
7949 PipelineTessellationStateCreateInfo( VkPipelineTessellationStateCreateInfo const & rhs )
7950 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007951 memcpy( this, &rhs, sizeof( PipelineTessellationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007952 }
7953
7954 PipelineTessellationStateCreateInfo& operator=( VkPipelineTessellationStateCreateInfo const & rhs )
7955 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06007956 memcpy( this, &rhs, sizeof( PipelineTessellationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007957 return *this;
7958 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06007959 PipelineTessellationStateCreateInfo& setPNext( const void* pNext_ )
7960 {
7961 pNext = pNext_;
7962 return *this;
7963 }
7964
7965 PipelineTessellationStateCreateInfo& setFlags( PipelineTessellationStateCreateFlags flags_ )
7966 {
7967 flags = flags_;
7968 return *this;
7969 }
7970
7971 PipelineTessellationStateCreateInfo& setPatchControlPoints( uint32_t patchControlPoints_ )
7972 {
7973 patchControlPoints = patchControlPoints_;
7974 return *this;
7975 }
7976
7977 operator const VkPipelineTessellationStateCreateInfo&() const
7978 {
7979 return *reinterpret_cast<const VkPipelineTessellationStateCreateInfo*>(this);
7980 }
7981
7982 bool operator==( PipelineTessellationStateCreateInfo const& rhs ) const
7983 {
7984 return ( sType == rhs.sType )
7985 && ( pNext == rhs.pNext )
7986 && ( flags == rhs.flags )
7987 && ( patchControlPoints == rhs.patchControlPoints );
7988 }
7989
7990 bool operator!=( PipelineTessellationStateCreateInfo const& rhs ) const
7991 {
7992 return !operator==( rhs );
7993 }
7994
7995 private:
7996 StructureType sType;
7997
7998 public:
7999 const void* pNext;
8000 PipelineTessellationStateCreateFlags flags;
8001 uint32_t patchControlPoints;
8002 };
8003 static_assert( sizeof( PipelineTessellationStateCreateInfo ) == sizeof( VkPipelineTessellationStateCreateInfo ), "struct and wrapper have different size!" );
8004
8005 struct PipelineViewportStateCreateInfo
8006 {
8007 PipelineViewportStateCreateInfo( PipelineViewportStateCreateFlags flags_ = PipelineViewportStateCreateFlags(), uint32_t viewportCount_ = 0, const Viewport* pViewports_ = nullptr, uint32_t scissorCount_ = 0, const Rect2D* pScissors_ = nullptr )
8008 : sType( StructureType::ePipelineViewportStateCreateInfo )
8009 , pNext( nullptr )
8010 , flags( flags_ )
8011 , viewportCount( viewportCount_ )
8012 , pViewports( pViewports_ )
8013 , scissorCount( scissorCount_ )
8014 , pScissors( pScissors_ )
8015 {
8016 }
8017
8018 PipelineViewportStateCreateInfo( VkPipelineViewportStateCreateInfo const & rhs )
8019 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008020 memcpy( this, &rhs, sizeof( PipelineViewportStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008021 }
8022
8023 PipelineViewportStateCreateInfo& operator=( VkPipelineViewportStateCreateInfo const & rhs )
8024 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008025 memcpy( this, &rhs, sizeof( PipelineViewportStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008026 return *this;
8027 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008028 PipelineViewportStateCreateInfo& setPNext( const void* pNext_ )
8029 {
8030 pNext = pNext_;
8031 return *this;
8032 }
8033
8034 PipelineViewportStateCreateInfo& setFlags( PipelineViewportStateCreateFlags flags_ )
8035 {
8036 flags = flags_;
8037 return *this;
8038 }
8039
8040 PipelineViewportStateCreateInfo& setViewportCount( uint32_t viewportCount_ )
8041 {
8042 viewportCount = viewportCount_;
8043 return *this;
8044 }
8045
8046 PipelineViewportStateCreateInfo& setPViewports( const Viewport* pViewports_ )
8047 {
8048 pViewports = pViewports_;
8049 return *this;
8050 }
8051
8052 PipelineViewportStateCreateInfo& setScissorCount( uint32_t scissorCount_ )
8053 {
8054 scissorCount = scissorCount_;
8055 return *this;
8056 }
8057
8058 PipelineViewportStateCreateInfo& setPScissors( const Rect2D* pScissors_ )
8059 {
8060 pScissors = pScissors_;
8061 return *this;
8062 }
8063
8064 operator const VkPipelineViewportStateCreateInfo&() const
8065 {
8066 return *reinterpret_cast<const VkPipelineViewportStateCreateInfo*>(this);
8067 }
8068
8069 bool operator==( PipelineViewportStateCreateInfo const& rhs ) const
8070 {
8071 return ( sType == rhs.sType )
8072 && ( pNext == rhs.pNext )
8073 && ( flags == rhs.flags )
8074 && ( viewportCount == rhs.viewportCount )
8075 && ( pViewports == rhs.pViewports )
8076 && ( scissorCount == rhs.scissorCount )
8077 && ( pScissors == rhs.pScissors );
8078 }
8079
8080 bool operator!=( PipelineViewportStateCreateInfo const& rhs ) const
8081 {
8082 return !operator==( rhs );
8083 }
8084
8085 private:
8086 StructureType sType;
8087
8088 public:
8089 const void* pNext;
8090 PipelineViewportStateCreateFlags flags;
8091 uint32_t viewportCount;
8092 const Viewport* pViewports;
8093 uint32_t scissorCount;
8094 const Rect2D* pScissors;
8095 };
8096 static_assert( sizeof( PipelineViewportStateCreateInfo ) == sizeof( VkPipelineViewportStateCreateInfo ), "struct and wrapper have different size!" );
8097
8098 struct PipelineRasterizationStateCreateInfo
8099 {
8100 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 )
8101 : sType( StructureType::ePipelineRasterizationStateCreateInfo )
8102 , pNext( nullptr )
8103 , flags( flags_ )
8104 , depthClampEnable( depthClampEnable_ )
8105 , rasterizerDiscardEnable( rasterizerDiscardEnable_ )
8106 , polygonMode( polygonMode_ )
8107 , cullMode( cullMode_ )
8108 , frontFace( frontFace_ )
8109 , depthBiasEnable( depthBiasEnable_ )
8110 , depthBiasConstantFactor( depthBiasConstantFactor_ )
8111 , depthBiasClamp( depthBiasClamp_ )
8112 , depthBiasSlopeFactor( depthBiasSlopeFactor_ )
8113 , lineWidth( lineWidth_ )
8114 {
8115 }
8116
8117 PipelineRasterizationStateCreateInfo( VkPipelineRasterizationStateCreateInfo const & rhs )
8118 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008119 memcpy( this, &rhs, sizeof( PipelineRasterizationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008120 }
8121
8122 PipelineRasterizationStateCreateInfo& operator=( VkPipelineRasterizationStateCreateInfo const & rhs )
8123 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008124 memcpy( this, &rhs, sizeof( PipelineRasterizationStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008125 return *this;
8126 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008127 PipelineRasterizationStateCreateInfo& setPNext( const void* pNext_ )
8128 {
8129 pNext = pNext_;
8130 return *this;
8131 }
8132
8133 PipelineRasterizationStateCreateInfo& setFlags( PipelineRasterizationStateCreateFlags flags_ )
8134 {
8135 flags = flags_;
8136 return *this;
8137 }
8138
8139 PipelineRasterizationStateCreateInfo& setDepthClampEnable( Bool32 depthClampEnable_ )
8140 {
8141 depthClampEnable = depthClampEnable_;
8142 return *this;
8143 }
8144
8145 PipelineRasterizationStateCreateInfo& setRasterizerDiscardEnable( Bool32 rasterizerDiscardEnable_ )
8146 {
8147 rasterizerDiscardEnable = rasterizerDiscardEnable_;
8148 return *this;
8149 }
8150
8151 PipelineRasterizationStateCreateInfo& setPolygonMode( PolygonMode polygonMode_ )
8152 {
8153 polygonMode = polygonMode_;
8154 return *this;
8155 }
8156
8157 PipelineRasterizationStateCreateInfo& setCullMode( CullModeFlags cullMode_ )
8158 {
8159 cullMode = cullMode_;
8160 return *this;
8161 }
8162
8163 PipelineRasterizationStateCreateInfo& setFrontFace( FrontFace frontFace_ )
8164 {
8165 frontFace = frontFace_;
8166 return *this;
8167 }
8168
8169 PipelineRasterizationStateCreateInfo& setDepthBiasEnable( Bool32 depthBiasEnable_ )
8170 {
8171 depthBiasEnable = depthBiasEnable_;
8172 return *this;
8173 }
8174
8175 PipelineRasterizationStateCreateInfo& setDepthBiasConstantFactor( float depthBiasConstantFactor_ )
8176 {
8177 depthBiasConstantFactor = depthBiasConstantFactor_;
8178 return *this;
8179 }
8180
8181 PipelineRasterizationStateCreateInfo& setDepthBiasClamp( float depthBiasClamp_ )
8182 {
8183 depthBiasClamp = depthBiasClamp_;
8184 return *this;
8185 }
8186
8187 PipelineRasterizationStateCreateInfo& setDepthBiasSlopeFactor( float depthBiasSlopeFactor_ )
8188 {
8189 depthBiasSlopeFactor = depthBiasSlopeFactor_;
8190 return *this;
8191 }
8192
8193 PipelineRasterizationStateCreateInfo& setLineWidth( float lineWidth_ )
8194 {
8195 lineWidth = lineWidth_;
8196 return *this;
8197 }
8198
8199 operator const VkPipelineRasterizationStateCreateInfo&() const
8200 {
8201 return *reinterpret_cast<const VkPipelineRasterizationStateCreateInfo*>(this);
8202 }
8203
8204 bool operator==( PipelineRasterizationStateCreateInfo const& rhs ) const
8205 {
8206 return ( sType == rhs.sType )
8207 && ( pNext == rhs.pNext )
8208 && ( flags == rhs.flags )
8209 && ( depthClampEnable == rhs.depthClampEnable )
8210 && ( rasterizerDiscardEnable == rhs.rasterizerDiscardEnable )
8211 && ( polygonMode == rhs.polygonMode )
8212 && ( cullMode == rhs.cullMode )
8213 && ( frontFace == rhs.frontFace )
8214 && ( depthBiasEnable == rhs.depthBiasEnable )
8215 && ( depthBiasConstantFactor == rhs.depthBiasConstantFactor )
8216 && ( depthBiasClamp == rhs.depthBiasClamp )
8217 && ( depthBiasSlopeFactor == rhs.depthBiasSlopeFactor )
8218 && ( lineWidth == rhs.lineWidth );
8219 }
8220
8221 bool operator!=( PipelineRasterizationStateCreateInfo const& rhs ) const
8222 {
8223 return !operator==( rhs );
8224 }
8225
8226 private:
8227 StructureType sType;
8228
8229 public:
8230 const void* pNext;
8231 PipelineRasterizationStateCreateFlags flags;
8232 Bool32 depthClampEnable;
8233 Bool32 rasterizerDiscardEnable;
8234 PolygonMode polygonMode;
8235 CullModeFlags cullMode;
8236 FrontFace frontFace;
8237 Bool32 depthBiasEnable;
8238 float depthBiasConstantFactor;
8239 float depthBiasClamp;
8240 float depthBiasSlopeFactor;
8241 float lineWidth;
8242 };
8243 static_assert( sizeof( PipelineRasterizationStateCreateInfo ) == sizeof( VkPipelineRasterizationStateCreateInfo ), "struct and wrapper have different size!" );
8244
8245 struct PipelineDepthStencilStateCreateInfo
8246 {
8247 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 )
8248 : sType( StructureType::ePipelineDepthStencilStateCreateInfo )
8249 , pNext( nullptr )
8250 , flags( flags_ )
8251 , depthTestEnable( depthTestEnable_ )
8252 , depthWriteEnable( depthWriteEnable_ )
8253 , depthCompareOp( depthCompareOp_ )
8254 , depthBoundsTestEnable( depthBoundsTestEnable_ )
8255 , stencilTestEnable( stencilTestEnable_ )
8256 , front( front_ )
8257 , back( back_ )
8258 , minDepthBounds( minDepthBounds_ )
8259 , maxDepthBounds( maxDepthBounds_ )
8260 {
8261 }
8262
8263 PipelineDepthStencilStateCreateInfo( VkPipelineDepthStencilStateCreateInfo const & rhs )
8264 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008265 memcpy( this, &rhs, sizeof( PipelineDepthStencilStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008266 }
8267
8268 PipelineDepthStencilStateCreateInfo& operator=( VkPipelineDepthStencilStateCreateInfo const & rhs )
8269 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008270 memcpy( this, &rhs, sizeof( PipelineDepthStencilStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008271 return *this;
8272 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008273 PipelineDepthStencilStateCreateInfo& setPNext( const void* pNext_ )
8274 {
8275 pNext = pNext_;
8276 return *this;
8277 }
8278
8279 PipelineDepthStencilStateCreateInfo& setFlags( PipelineDepthStencilStateCreateFlags flags_ )
8280 {
8281 flags = flags_;
8282 return *this;
8283 }
8284
8285 PipelineDepthStencilStateCreateInfo& setDepthTestEnable( Bool32 depthTestEnable_ )
8286 {
8287 depthTestEnable = depthTestEnable_;
8288 return *this;
8289 }
8290
8291 PipelineDepthStencilStateCreateInfo& setDepthWriteEnable( Bool32 depthWriteEnable_ )
8292 {
8293 depthWriteEnable = depthWriteEnable_;
8294 return *this;
8295 }
8296
8297 PipelineDepthStencilStateCreateInfo& setDepthCompareOp( CompareOp depthCompareOp_ )
8298 {
8299 depthCompareOp = depthCompareOp_;
8300 return *this;
8301 }
8302
8303 PipelineDepthStencilStateCreateInfo& setDepthBoundsTestEnable( Bool32 depthBoundsTestEnable_ )
8304 {
8305 depthBoundsTestEnable = depthBoundsTestEnable_;
8306 return *this;
8307 }
8308
8309 PipelineDepthStencilStateCreateInfo& setStencilTestEnable( Bool32 stencilTestEnable_ )
8310 {
8311 stencilTestEnable = stencilTestEnable_;
8312 return *this;
8313 }
8314
8315 PipelineDepthStencilStateCreateInfo& setFront( StencilOpState front_ )
8316 {
8317 front = front_;
8318 return *this;
8319 }
8320
8321 PipelineDepthStencilStateCreateInfo& setBack( StencilOpState back_ )
8322 {
8323 back = back_;
8324 return *this;
8325 }
8326
8327 PipelineDepthStencilStateCreateInfo& setMinDepthBounds( float minDepthBounds_ )
8328 {
8329 minDepthBounds = minDepthBounds_;
8330 return *this;
8331 }
8332
8333 PipelineDepthStencilStateCreateInfo& setMaxDepthBounds( float maxDepthBounds_ )
8334 {
8335 maxDepthBounds = maxDepthBounds_;
8336 return *this;
8337 }
8338
8339 operator const VkPipelineDepthStencilStateCreateInfo&() const
8340 {
8341 return *reinterpret_cast<const VkPipelineDepthStencilStateCreateInfo*>(this);
8342 }
8343
8344 bool operator==( PipelineDepthStencilStateCreateInfo const& rhs ) const
8345 {
8346 return ( sType == rhs.sType )
8347 && ( pNext == rhs.pNext )
8348 && ( flags == rhs.flags )
8349 && ( depthTestEnable == rhs.depthTestEnable )
8350 && ( depthWriteEnable == rhs.depthWriteEnable )
8351 && ( depthCompareOp == rhs.depthCompareOp )
8352 && ( depthBoundsTestEnable == rhs.depthBoundsTestEnable )
8353 && ( stencilTestEnable == rhs.stencilTestEnable )
8354 && ( front == rhs.front )
8355 && ( back == rhs.back )
8356 && ( minDepthBounds == rhs.minDepthBounds )
8357 && ( maxDepthBounds == rhs.maxDepthBounds );
8358 }
8359
8360 bool operator!=( PipelineDepthStencilStateCreateInfo const& rhs ) const
8361 {
8362 return !operator==( rhs );
8363 }
8364
8365 private:
8366 StructureType sType;
8367
8368 public:
8369 const void* pNext;
8370 PipelineDepthStencilStateCreateFlags flags;
8371 Bool32 depthTestEnable;
8372 Bool32 depthWriteEnable;
8373 CompareOp depthCompareOp;
8374 Bool32 depthBoundsTestEnable;
8375 Bool32 stencilTestEnable;
8376 StencilOpState front;
8377 StencilOpState back;
8378 float minDepthBounds;
8379 float maxDepthBounds;
8380 };
8381 static_assert( sizeof( PipelineDepthStencilStateCreateInfo ) == sizeof( VkPipelineDepthStencilStateCreateInfo ), "struct and wrapper have different size!" );
8382
8383 struct PipelineCacheCreateInfo
8384 {
8385 PipelineCacheCreateInfo( PipelineCacheCreateFlags flags_ = PipelineCacheCreateFlags(), size_t initialDataSize_ = 0, const void* pInitialData_ = nullptr )
8386 : sType( StructureType::ePipelineCacheCreateInfo )
8387 , pNext( nullptr )
8388 , flags( flags_ )
8389 , initialDataSize( initialDataSize_ )
8390 , pInitialData( pInitialData_ )
8391 {
8392 }
8393
8394 PipelineCacheCreateInfo( VkPipelineCacheCreateInfo const & rhs )
8395 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008396 memcpy( this, &rhs, sizeof( PipelineCacheCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008397 }
8398
8399 PipelineCacheCreateInfo& operator=( VkPipelineCacheCreateInfo const & rhs )
8400 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008401 memcpy( this, &rhs, sizeof( PipelineCacheCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008402 return *this;
8403 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008404 PipelineCacheCreateInfo& setPNext( const void* pNext_ )
8405 {
8406 pNext = pNext_;
8407 return *this;
8408 }
8409
8410 PipelineCacheCreateInfo& setFlags( PipelineCacheCreateFlags flags_ )
8411 {
8412 flags = flags_;
8413 return *this;
8414 }
8415
8416 PipelineCacheCreateInfo& setInitialDataSize( size_t initialDataSize_ )
8417 {
8418 initialDataSize = initialDataSize_;
8419 return *this;
8420 }
8421
8422 PipelineCacheCreateInfo& setPInitialData( const void* pInitialData_ )
8423 {
8424 pInitialData = pInitialData_;
8425 return *this;
8426 }
8427
8428 operator const VkPipelineCacheCreateInfo&() const
8429 {
8430 return *reinterpret_cast<const VkPipelineCacheCreateInfo*>(this);
8431 }
8432
8433 bool operator==( PipelineCacheCreateInfo const& rhs ) const
8434 {
8435 return ( sType == rhs.sType )
8436 && ( pNext == rhs.pNext )
8437 && ( flags == rhs.flags )
8438 && ( initialDataSize == rhs.initialDataSize )
8439 && ( pInitialData == rhs.pInitialData );
8440 }
8441
8442 bool operator!=( PipelineCacheCreateInfo const& rhs ) const
8443 {
8444 return !operator==( rhs );
8445 }
8446
8447 private:
8448 StructureType sType;
8449
8450 public:
8451 const void* pNext;
8452 PipelineCacheCreateFlags flags;
8453 size_t initialDataSize;
8454 const void* pInitialData;
8455 };
8456 static_assert( sizeof( PipelineCacheCreateInfo ) == sizeof( VkPipelineCacheCreateInfo ), "struct and wrapper have different size!" );
8457
8458 struct SamplerCreateInfo
8459 {
8460 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 )
8461 : sType( StructureType::eSamplerCreateInfo )
8462 , pNext( nullptr )
8463 , flags( flags_ )
8464 , magFilter( magFilter_ )
8465 , minFilter( minFilter_ )
8466 , mipmapMode( mipmapMode_ )
8467 , addressModeU( addressModeU_ )
8468 , addressModeV( addressModeV_ )
8469 , addressModeW( addressModeW_ )
8470 , mipLodBias( mipLodBias_ )
8471 , anisotropyEnable( anisotropyEnable_ )
8472 , maxAnisotropy( maxAnisotropy_ )
8473 , compareEnable( compareEnable_ )
8474 , compareOp( compareOp_ )
8475 , minLod( minLod_ )
8476 , maxLod( maxLod_ )
8477 , borderColor( borderColor_ )
8478 , unnormalizedCoordinates( unnormalizedCoordinates_ )
8479 {
8480 }
8481
8482 SamplerCreateInfo( VkSamplerCreateInfo const & rhs )
8483 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008484 memcpy( this, &rhs, sizeof( SamplerCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008485 }
8486
8487 SamplerCreateInfo& operator=( VkSamplerCreateInfo const & rhs )
8488 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008489 memcpy( this, &rhs, sizeof( SamplerCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008490 return *this;
8491 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008492 SamplerCreateInfo& setPNext( const void* pNext_ )
8493 {
8494 pNext = pNext_;
8495 return *this;
8496 }
8497
8498 SamplerCreateInfo& setFlags( SamplerCreateFlags flags_ )
8499 {
8500 flags = flags_;
8501 return *this;
8502 }
8503
8504 SamplerCreateInfo& setMagFilter( Filter magFilter_ )
8505 {
8506 magFilter = magFilter_;
8507 return *this;
8508 }
8509
8510 SamplerCreateInfo& setMinFilter( Filter minFilter_ )
8511 {
8512 minFilter = minFilter_;
8513 return *this;
8514 }
8515
8516 SamplerCreateInfo& setMipmapMode( SamplerMipmapMode mipmapMode_ )
8517 {
8518 mipmapMode = mipmapMode_;
8519 return *this;
8520 }
8521
8522 SamplerCreateInfo& setAddressModeU( SamplerAddressMode addressModeU_ )
8523 {
8524 addressModeU = addressModeU_;
8525 return *this;
8526 }
8527
8528 SamplerCreateInfo& setAddressModeV( SamplerAddressMode addressModeV_ )
8529 {
8530 addressModeV = addressModeV_;
8531 return *this;
8532 }
8533
8534 SamplerCreateInfo& setAddressModeW( SamplerAddressMode addressModeW_ )
8535 {
8536 addressModeW = addressModeW_;
8537 return *this;
8538 }
8539
8540 SamplerCreateInfo& setMipLodBias( float mipLodBias_ )
8541 {
8542 mipLodBias = mipLodBias_;
8543 return *this;
8544 }
8545
8546 SamplerCreateInfo& setAnisotropyEnable( Bool32 anisotropyEnable_ )
8547 {
8548 anisotropyEnable = anisotropyEnable_;
8549 return *this;
8550 }
8551
8552 SamplerCreateInfo& setMaxAnisotropy( float maxAnisotropy_ )
8553 {
8554 maxAnisotropy = maxAnisotropy_;
8555 return *this;
8556 }
8557
8558 SamplerCreateInfo& setCompareEnable( Bool32 compareEnable_ )
8559 {
8560 compareEnable = compareEnable_;
8561 return *this;
8562 }
8563
8564 SamplerCreateInfo& setCompareOp( CompareOp compareOp_ )
8565 {
8566 compareOp = compareOp_;
8567 return *this;
8568 }
8569
8570 SamplerCreateInfo& setMinLod( float minLod_ )
8571 {
8572 minLod = minLod_;
8573 return *this;
8574 }
8575
8576 SamplerCreateInfo& setMaxLod( float maxLod_ )
8577 {
8578 maxLod = maxLod_;
8579 return *this;
8580 }
8581
8582 SamplerCreateInfo& setBorderColor( BorderColor borderColor_ )
8583 {
8584 borderColor = borderColor_;
8585 return *this;
8586 }
8587
8588 SamplerCreateInfo& setUnnormalizedCoordinates( Bool32 unnormalizedCoordinates_ )
8589 {
8590 unnormalizedCoordinates = unnormalizedCoordinates_;
8591 return *this;
8592 }
8593
8594 operator const VkSamplerCreateInfo&() const
8595 {
8596 return *reinterpret_cast<const VkSamplerCreateInfo*>(this);
8597 }
8598
8599 bool operator==( SamplerCreateInfo const& rhs ) const
8600 {
8601 return ( sType == rhs.sType )
8602 && ( pNext == rhs.pNext )
8603 && ( flags == rhs.flags )
8604 && ( magFilter == rhs.magFilter )
8605 && ( minFilter == rhs.minFilter )
8606 && ( mipmapMode == rhs.mipmapMode )
8607 && ( addressModeU == rhs.addressModeU )
8608 && ( addressModeV == rhs.addressModeV )
8609 && ( addressModeW == rhs.addressModeW )
8610 && ( mipLodBias == rhs.mipLodBias )
8611 && ( anisotropyEnable == rhs.anisotropyEnable )
8612 && ( maxAnisotropy == rhs.maxAnisotropy )
8613 && ( compareEnable == rhs.compareEnable )
8614 && ( compareOp == rhs.compareOp )
8615 && ( minLod == rhs.minLod )
8616 && ( maxLod == rhs.maxLod )
8617 && ( borderColor == rhs.borderColor )
8618 && ( unnormalizedCoordinates == rhs.unnormalizedCoordinates );
8619 }
8620
8621 bool operator!=( SamplerCreateInfo const& rhs ) const
8622 {
8623 return !operator==( rhs );
8624 }
8625
8626 private:
8627 StructureType sType;
8628
8629 public:
8630 const void* pNext;
8631 SamplerCreateFlags flags;
8632 Filter magFilter;
8633 Filter minFilter;
8634 SamplerMipmapMode mipmapMode;
8635 SamplerAddressMode addressModeU;
8636 SamplerAddressMode addressModeV;
8637 SamplerAddressMode addressModeW;
8638 float mipLodBias;
8639 Bool32 anisotropyEnable;
8640 float maxAnisotropy;
8641 Bool32 compareEnable;
8642 CompareOp compareOp;
8643 float minLod;
8644 float maxLod;
8645 BorderColor borderColor;
8646 Bool32 unnormalizedCoordinates;
8647 };
8648 static_assert( sizeof( SamplerCreateInfo ) == sizeof( VkSamplerCreateInfo ), "struct and wrapper have different size!" );
8649
8650 struct CommandBufferAllocateInfo
8651 {
8652 CommandBufferAllocateInfo( CommandPool commandPool_ = CommandPool(), CommandBufferLevel level_ = CommandBufferLevel::ePrimary, uint32_t commandBufferCount_ = 0 )
8653 : sType( StructureType::eCommandBufferAllocateInfo )
8654 , pNext( nullptr )
8655 , commandPool( commandPool_ )
8656 , level( level_ )
8657 , commandBufferCount( commandBufferCount_ )
8658 {
8659 }
8660
8661 CommandBufferAllocateInfo( VkCommandBufferAllocateInfo const & rhs )
8662 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008663 memcpy( this, &rhs, sizeof( CommandBufferAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008664 }
8665
8666 CommandBufferAllocateInfo& operator=( VkCommandBufferAllocateInfo const & rhs )
8667 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008668 memcpy( this, &rhs, sizeof( CommandBufferAllocateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008669 return *this;
8670 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008671 CommandBufferAllocateInfo& setPNext( const void* pNext_ )
8672 {
8673 pNext = pNext_;
8674 return *this;
8675 }
8676
8677 CommandBufferAllocateInfo& setCommandPool( CommandPool commandPool_ )
8678 {
8679 commandPool = commandPool_;
8680 return *this;
8681 }
8682
8683 CommandBufferAllocateInfo& setLevel( CommandBufferLevel level_ )
8684 {
8685 level = level_;
8686 return *this;
8687 }
8688
8689 CommandBufferAllocateInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
8690 {
8691 commandBufferCount = commandBufferCount_;
8692 return *this;
8693 }
8694
8695 operator const VkCommandBufferAllocateInfo&() const
8696 {
8697 return *reinterpret_cast<const VkCommandBufferAllocateInfo*>(this);
8698 }
8699
8700 bool operator==( CommandBufferAllocateInfo const& rhs ) const
8701 {
8702 return ( sType == rhs.sType )
8703 && ( pNext == rhs.pNext )
8704 && ( commandPool == rhs.commandPool )
8705 && ( level == rhs.level )
8706 && ( commandBufferCount == rhs.commandBufferCount );
8707 }
8708
8709 bool operator!=( CommandBufferAllocateInfo const& rhs ) const
8710 {
8711 return !operator==( rhs );
8712 }
8713
8714 private:
8715 StructureType sType;
8716
8717 public:
8718 const void* pNext;
8719 CommandPool commandPool;
8720 CommandBufferLevel level;
8721 uint32_t commandBufferCount;
8722 };
8723 static_assert( sizeof( CommandBufferAllocateInfo ) == sizeof( VkCommandBufferAllocateInfo ), "struct and wrapper have different size!" );
8724
8725 struct RenderPassBeginInfo
8726 {
8727 RenderPassBeginInfo( RenderPass renderPass_ = RenderPass(), Framebuffer framebuffer_ = Framebuffer(), Rect2D renderArea_ = Rect2D(), uint32_t clearValueCount_ = 0, const ClearValue* pClearValues_ = nullptr )
8728 : sType( StructureType::eRenderPassBeginInfo )
8729 , pNext( nullptr )
8730 , renderPass( renderPass_ )
8731 , framebuffer( framebuffer_ )
8732 , renderArea( renderArea_ )
8733 , clearValueCount( clearValueCount_ )
8734 , pClearValues( pClearValues_ )
8735 {
8736 }
8737
8738 RenderPassBeginInfo( VkRenderPassBeginInfo const & rhs )
8739 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008740 memcpy( this, &rhs, sizeof( RenderPassBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008741 }
8742
8743 RenderPassBeginInfo& operator=( VkRenderPassBeginInfo const & rhs )
8744 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008745 memcpy( this, &rhs, sizeof( RenderPassBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008746 return *this;
8747 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008748 RenderPassBeginInfo& setPNext( const void* pNext_ )
8749 {
8750 pNext = pNext_;
8751 return *this;
8752 }
8753
8754 RenderPassBeginInfo& setRenderPass( RenderPass renderPass_ )
8755 {
8756 renderPass = renderPass_;
8757 return *this;
8758 }
8759
8760 RenderPassBeginInfo& setFramebuffer( Framebuffer framebuffer_ )
8761 {
8762 framebuffer = framebuffer_;
8763 return *this;
8764 }
8765
8766 RenderPassBeginInfo& setRenderArea( Rect2D renderArea_ )
8767 {
8768 renderArea = renderArea_;
8769 return *this;
8770 }
8771
8772 RenderPassBeginInfo& setClearValueCount( uint32_t clearValueCount_ )
8773 {
8774 clearValueCount = clearValueCount_;
8775 return *this;
8776 }
8777
8778 RenderPassBeginInfo& setPClearValues( const ClearValue* pClearValues_ )
8779 {
8780 pClearValues = pClearValues_;
8781 return *this;
8782 }
8783
8784 operator const VkRenderPassBeginInfo&() const
8785 {
8786 return *reinterpret_cast<const VkRenderPassBeginInfo*>(this);
8787 }
8788
8789 bool operator==( RenderPassBeginInfo const& rhs ) const
8790 {
8791 return ( sType == rhs.sType )
8792 && ( pNext == rhs.pNext )
8793 && ( renderPass == rhs.renderPass )
8794 && ( framebuffer == rhs.framebuffer )
8795 && ( renderArea == rhs.renderArea )
8796 && ( clearValueCount == rhs.clearValueCount )
8797 && ( pClearValues == rhs.pClearValues );
8798 }
8799
8800 bool operator!=( RenderPassBeginInfo const& rhs ) const
8801 {
8802 return !operator==( rhs );
8803 }
8804
8805 private:
8806 StructureType sType;
8807
8808 public:
8809 const void* pNext;
8810 RenderPass renderPass;
8811 Framebuffer framebuffer;
8812 Rect2D renderArea;
8813 uint32_t clearValueCount;
8814 const ClearValue* pClearValues;
8815 };
8816 static_assert( sizeof( RenderPassBeginInfo ) == sizeof( VkRenderPassBeginInfo ), "struct and wrapper have different size!" );
8817
8818 struct EventCreateInfo
8819 {
8820 EventCreateInfo( EventCreateFlags flags_ = EventCreateFlags() )
8821 : sType( StructureType::eEventCreateInfo )
8822 , pNext( nullptr )
8823 , flags( flags_ )
8824 {
8825 }
8826
8827 EventCreateInfo( VkEventCreateInfo const & rhs )
8828 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008829 memcpy( this, &rhs, sizeof( EventCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008830 }
8831
8832 EventCreateInfo& operator=( VkEventCreateInfo const & rhs )
8833 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008834 memcpy( this, &rhs, sizeof( EventCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008835 return *this;
8836 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008837 EventCreateInfo& setPNext( const void* pNext_ )
8838 {
8839 pNext = pNext_;
8840 return *this;
8841 }
8842
8843 EventCreateInfo& setFlags( EventCreateFlags flags_ )
8844 {
8845 flags = flags_;
8846 return *this;
8847 }
8848
8849 operator const VkEventCreateInfo&() const
8850 {
8851 return *reinterpret_cast<const VkEventCreateInfo*>(this);
8852 }
8853
8854 bool operator==( EventCreateInfo const& rhs ) const
8855 {
8856 return ( sType == rhs.sType )
8857 && ( pNext == rhs.pNext )
8858 && ( flags == rhs.flags );
8859 }
8860
8861 bool operator!=( EventCreateInfo const& rhs ) const
8862 {
8863 return !operator==( rhs );
8864 }
8865
8866 private:
8867 StructureType sType;
8868
8869 public:
8870 const void* pNext;
8871 EventCreateFlags flags;
8872 };
8873 static_assert( sizeof( EventCreateInfo ) == sizeof( VkEventCreateInfo ), "struct and wrapper have different size!" );
8874
8875 struct SemaphoreCreateInfo
8876 {
8877 SemaphoreCreateInfo( SemaphoreCreateFlags flags_ = SemaphoreCreateFlags() )
8878 : sType( StructureType::eSemaphoreCreateInfo )
8879 , pNext( nullptr )
8880 , flags( flags_ )
8881 {
8882 }
8883
8884 SemaphoreCreateInfo( VkSemaphoreCreateInfo const & rhs )
8885 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008886 memcpy( this, &rhs, sizeof( SemaphoreCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008887 }
8888
8889 SemaphoreCreateInfo& operator=( VkSemaphoreCreateInfo const & rhs )
8890 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008891 memcpy( this, &rhs, sizeof( SemaphoreCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008892 return *this;
8893 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008894 SemaphoreCreateInfo& setPNext( const void* pNext_ )
8895 {
8896 pNext = pNext_;
8897 return *this;
8898 }
8899
8900 SemaphoreCreateInfo& setFlags( SemaphoreCreateFlags flags_ )
8901 {
8902 flags = flags_;
8903 return *this;
8904 }
8905
8906 operator const VkSemaphoreCreateInfo&() const
8907 {
8908 return *reinterpret_cast<const VkSemaphoreCreateInfo*>(this);
8909 }
8910
8911 bool operator==( SemaphoreCreateInfo const& rhs ) const
8912 {
8913 return ( sType == rhs.sType )
8914 && ( pNext == rhs.pNext )
8915 && ( flags == rhs.flags );
8916 }
8917
8918 bool operator!=( SemaphoreCreateInfo const& rhs ) const
8919 {
8920 return !operator==( rhs );
8921 }
8922
8923 private:
8924 StructureType sType;
8925
8926 public:
8927 const void* pNext;
8928 SemaphoreCreateFlags flags;
8929 };
8930 static_assert( sizeof( SemaphoreCreateInfo ) == sizeof( VkSemaphoreCreateInfo ), "struct and wrapper have different size!" );
8931
8932 struct FramebufferCreateInfo
8933 {
8934 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 )
8935 : sType( StructureType::eFramebufferCreateInfo )
8936 , pNext( nullptr )
8937 , flags( flags_ )
8938 , renderPass( renderPass_ )
8939 , attachmentCount( attachmentCount_ )
8940 , pAttachments( pAttachments_ )
8941 , width( width_ )
8942 , height( height_ )
8943 , layers( layers_ )
8944 {
8945 }
8946
8947 FramebufferCreateInfo( VkFramebufferCreateInfo const & rhs )
8948 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008949 memcpy( this, &rhs, sizeof( FramebufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008950 }
8951
8952 FramebufferCreateInfo& operator=( VkFramebufferCreateInfo const & rhs )
8953 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06008954 memcpy( this, &rhs, sizeof( FramebufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008955 return *this;
8956 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06008957 FramebufferCreateInfo& setPNext( const void* pNext_ )
8958 {
8959 pNext = pNext_;
8960 return *this;
8961 }
8962
8963 FramebufferCreateInfo& setFlags( FramebufferCreateFlags flags_ )
8964 {
8965 flags = flags_;
8966 return *this;
8967 }
8968
8969 FramebufferCreateInfo& setRenderPass( RenderPass renderPass_ )
8970 {
8971 renderPass = renderPass_;
8972 return *this;
8973 }
8974
8975 FramebufferCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
8976 {
8977 attachmentCount = attachmentCount_;
8978 return *this;
8979 }
8980
8981 FramebufferCreateInfo& setPAttachments( const ImageView* pAttachments_ )
8982 {
8983 pAttachments = pAttachments_;
8984 return *this;
8985 }
8986
8987 FramebufferCreateInfo& setWidth( uint32_t width_ )
8988 {
8989 width = width_;
8990 return *this;
8991 }
8992
8993 FramebufferCreateInfo& setHeight( uint32_t height_ )
8994 {
8995 height = height_;
8996 return *this;
8997 }
8998
8999 FramebufferCreateInfo& setLayers( uint32_t layers_ )
9000 {
9001 layers = layers_;
9002 return *this;
9003 }
9004
9005 operator const VkFramebufferCreateInfo&() const
9006 {
9007 return *reinterpret_cast<const VkFramebufferCreateInfo*>(this);
9008 }
9009
9010 bool operator==( FramebufferCreateInfo const& rhs ) const
9011 {
9012 return ( sType == rhs.sType )
9013 && ( pNext == rhs.pNext )
9014 && ( flags == rhs.flags )
9015 && ( renderPass == rhs.renderPass )
9016 && ( attachmentCount == rhs.attachmentCount )
9017 && ( pAttachments == rhs.pAttachments )
9018 && ( width == rhs.width )
9019 && ( height == rhs.height )
9020 && ( layers == rhs.layers );
9021 }
9022
9023 bool operator!=( FramebufferCreateInfo const& rhs ) const
9024 {
9025 return !operator==( rhs );
9026 }
9027
9028 private:
9029 StructureType sType;
9030
9031 public:
9032 const void* pNext;
9033 FramebufferCreateFlags flags;
9034 RenderPass renderPass;
9035 uint32_t attachmentCount;
9036 const ImageView* pAttachments;
9037 uint32_t width;
9038 uint32_t height;
9039 uint32_t layers;
9040 };
9041 static_assert( sizeof( FramebufferCreateInfo ) == sizeof( VkFramebufferCreateInfo ), "struct and wrapper have different size!" );
9042
9043 struct DisplayModeCreateInfoKHR
9044 {
9045 DisplayModeCreateInfoKHR( DisplayModeCreateFlagsKHR flags_ = DisplayModeCreateFlagsKHR(), DisplayModeParametersKHR parameters_ = DisplayModeParametersKHR() )
9046 : sType( StructureType::eDisplayModeCreateInfoKHR )
9047 , pNext( nullptr )
9048 , flags( flags_ )
9049 , parameters( parameters_ )
9050 {
9051 }
9052
9053 DisplayModeCreateInfoKHR( VkDisplayModeCreateInfoKHR const & rhs )
9054 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009055 memcpy( this, &rhs, sizeof( DisplayModeCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009056 }
9057
9058 DisplayModeCreateInfoKHR& operator=( VkDisplayModeCreateInfoKHR const & rhs )
9059 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009060 memcpy( this, &rhs, sizeof( DisplayModeCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009061 return *this;
9062 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009063 DisplayModeCreateInfoKHR& setPNext( const void* pNext_ )
9064 {
9065 pNext = pNext_;
9066 return *this;
9067 }
9068
9069 DisplayModeCreateInfoKHR& setFlags( DisplayModeCreateFlagsKHR flags_ )
9070 {
9071 flags = flags_;
9072 return *this;
9073 }
9074
9075 DisplayModeCreateInfoKHR& setParameters( DisplayModeParametersKHR parameters_ )
9076 {
9077 parameters = parameters_;
9078 return *this;
9079 }
9080
9081 operator const VkDisplayModeCreateInfoKHR&() const
9082 {
9083 return *reinterpret_cast<const VkDisplayModeCreateInfoKHR*>(this);
9084 }
9085
9086 bool operator==( DisplayModeCreateInfoKHR const& rhs ) const
9087 {
9088 return ( sType == rhs.sType )
9089 && ( pNext == rhs.pNext )
9090 && ( flags == rhs.flags )
9091 && ( parameters == rhs.parameters );
9092 }
9093
9094 bool operator!=( DisplayModeCreateInfoKHR const& rhs ) const
9095 {
9096 return !operator==( rhs );
9097 }
9098
9099 private:
9100 StructureType sType;
9101
9102 public:
9103 const void* pNext;
9104 DisplayModeCreateFlagsKHR flags;
9105 DisplayModeParametersKHR parameters;
9106 };
9107 static_assert( sizeof( DisplayModeCreateInfoKHR ) == sizeof( VkDisplayModeCreateInfoKHR ), "struct and wrapper have different size!" );
9108
9109 struct DisplayPresentInfoKHR
9110 {
9111 DisplayPresentInfoKHR( Rect2D srcRect_ = Rect2D(), Rect2D dstRect_ = Rect2D(), Bool32 persistent_ = 0 )
9112 : sType( StructureType::eDisplayPresentInfoKHR )
9113 , pNext( nullptr )
9114 , srcRect( srcRect_ )
9115 , dstRect( dstRect_ )
9116 , persistent( persistent_ )
9117 {
9118 }
9119
9120 DisplayPresentInfoKHR( VkDisplayPresentInfoKHR const & rhs )
9121 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009122 memcpy( this, &rhs, sizeof( DisplayPresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009123 }
9124
9125 DisplayPresentInfoKHR& operator=( VkDisplayPresentInfoKHR const & rhs )
9126 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009127 memcpy( this, &rhs, sizeof( DisplayPresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009128 return *this;
9129 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009130 DisplayPresentInfoKHR& setPNext( const void* pNext_ )
9131 {
9132 pNext = pNext_;
9133 return *this;
9134 }
9135
9136 DisplayPresentInfoKHR& setSrcRect( Rect2D srcRect_ )
9137 {
9138 srcRect = srcRect_;
9139 return *this;
9140 }
9141
9142 DisplayPresentInfoKHR& setDstRect( Rect2D dstRect_ )
9143 {
9144 dstRect = dstRect_;
9145 return *this;
9146 }
9147
9148 DisplayPresentInfoKHR& setPersistent( Bool32 persistent_ )
9149 {
9150 persistent = persistent_;
9151 return *this;
9152 }
9153
9154 operator const VkDisplayPresentInfoKHR&() const
9155 {
9156 return *reinterpret_cast<const VkDisplayPresentInfoKHR*>(this);
9157 }
9158
9159 bool operator==( DisplayPresentInfoKHR const& rhs ) const
9160 {
9161 return ( sType == rhs.sType )
9162 && ( pNext == rhs.pNext )
9163 && ( srcRect == rhs.srcRect )
9164 && ( dstRect == rhs.dstRect )
9165 && ( persistent == rhs.persistent );
9166 }
9167
9168 bool operator!=( DisplayPresentInfoKHR const& rhs ) const
9169 {
9170 return !operator==( rhs );
9171 }
9172
9173 private:
9174 StructureType sType;
9175
9176 public:
9177 const void* pNext;
9178 Rect2D srcRect;
9179 Rect2D dstRect;
9180 Bool32 persistent;
9181 };
9182 static_assert( sizeof( DisplayPresentInfoKHR ) == sizeof( VkDisplayPresentInfoKHR ), "struct and wrapper have different size!" );
9183
9184#ifdef VK_USE_PLATFORM_ANDROID_KHR
9185 struct AndroidSurfaceCreateInfoKHR
9186 {
9187 AndroidSurfaceCreateInfoKHR( AndroidSurfaceCreateFlagsKHR flags_ = AndroidSurfaceCreateFlagsKHR(), ANativeWindow* window_ = nullptr )
9188 : sType( StructureType::eAndroidSurfaceCreateInfoKHR )
9189 , pNext( nullptr )
9190 , flags( flags_ )
9191 , window( window_ )
9192 {
9193 }
9194
9195 AndroidSurfaceCreateInfoKHR( VkAndroidSurfaceCreateInfoKHR const & rhs )
9196 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009197 memcpy( this, &rhs, sizeof( AndroidSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009198 }
9199
9200 AndroidSurfaceCreateInfoKHR& operator=( VkAndroidSurfaceCreateInfoKHR const & rhs )
9201 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009202 memcpy( this, &rhs, sizeof( AndroidSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009203 return *this;
9204 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009205 AndroidSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9206 {
9207 pNext = pNext_;
9208 return *this;
9209 }
9210
9211 AndroidSurfaceCreateInfoKHR& setFlags( AndroidSurfaceCreateFlagsKHR flags_ )
9212 {
9213 flags = flags_;
9214 return *this;
9215 }
9216
9217 AndroidSurfaceCreateInfoKHR& setWindow( ANativeWindow* window_ )
9218 {
9219 window = window_;
9220 return *this;
9221 }
9222
9223 operator const VkAndroidSurfaceCreateInfoKHR&() const
9224 {
9225 return *reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>(this);
9226 }
9227
9228 bool operator==( AndroidSurfaceCreateInfoKHR const& rhs ) const
9229 {
9230 return ( sType == rhs.sType )
9231 && ( pNext == rhs.pNext )
9232 && ( flags == rhs.flags )
9233 && ( window == rhs.window );
9234 }
9235
9236 bool operator!=( AndroidSurfaceCreateInfoKHR const& rhs ) const
9237 {
9238 return !operator==( rhs );
9239 }
9240
9241 private:
9242 StructureType sType;
9243
9244 public:
9245 const void* pNext;
9246 AndroidSurfaceCreateFlagsKHR flags;
9247 ANativeWindow* window;
9248 };
9249 static_assert( sizeof( AndroidSurfaceCreateInfoKHR ) == sizeof( VkAndroidSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9250#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
9251
9252#ifdef VK_USE_PLATFORM_MIR_KHR
9253 struct MirSurfaceCreateInfoKHR
9254 {
9255 MirSurfaceCreateInfoKHR( MirSurfaceCreateFlagsKHR flags_ = MirSurfaceCreateFlagsKHR(), MirConnection* connection_ = nullptr, MirSurface* mirSurface_ = nullptr )
9256 : sType( StructureType::eMirSurfaceCreateInfoKHR )
9257 , pNext( nullptr )
9258 , flags( flags_ )
9259 , connection( connection_ )
9260 , mirSurface( mirSurface_ )
9261 {
9262 }
9263
9264 MirSurfaceCreateInfoKHR( VkMirSurfaceCreateInfoKHR const & rhs )
9265 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009266 memcpy( this, &rhs, sizeof( MirSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009267 }
9268
9269 MirSurfaceCreateInfoKHR& operator=( VkMirSurfaceCreateInfoKHR const & rhs )
9270 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009271 memcpy( this, &rhs, sizeof( MirSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009272 return *this;
9273 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009274 MirSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9275 {
9276 pNext = pNext_;
9277 return *this;
9278 }
9279
9280 MirSurfaceCreateInfoKHR& setFlags( MirSurfaceCreateFlagsKHR flags_ )
9281 {
9282 flags = flags_;
9283 return *this;
9284 }
9285
9286 MirSurfaceCreateInfoKHR& setConnection( MirConnection* connection_ )
9287 {
9288 connection = connection_;
9289 return *this;
9290 }
9291
9292 MirSurfaceCreateInfoKHR& setMirSurface( MirSurface* mirSurface_ )
9293 {
9294 mirSurface = mirSurface_;
9295 return *this;
9296 }
9297
9298 operator const VkMirSurfaceCreateInfoKHR&() const
9299 {
9300 return *reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>(this);
9301 }
9302
9303 bool operator==( MirSurfaceCreateInfoKHR const& rhs ) const
9304 {
9305 return ( sType == rhs.sType )
9306 && ( pNext == rhs.pNext )
9307 && ( flags == rhs.flags )
9308 && ( connection == rhs.connection )
9309 && ( mirSurface == rhs.mirSurface );
9310 }
9311
9312 bool operator!=( MirSurfaceCreateInfoKHR const& rhs ) const
9313 {
9314 return !operator==( rhs );
9315 }
9316
9317 private:
9318 StructureType sType;
9319
9320 public:
9321 const void* pNext;
9322 MirSurfaceCreateFlagsKHR flags;
9323 MirConnection* connection;
9324 MirSurface* mirSurface;
9325 };
9326 static_assert( sizeof( MirSurfaceCreateInfoKHR ) == sizeof( VkMirSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9327#endif /*VK_USE_PLATFORM_MIR_KHR*/
9328
Mark Young39389872017-01-19 21:10:49 -07009329#ifdef VK_USE_PLATFORM_VI_NN
9330 struct ViSurfaceCreateInfoNN
9331 {
9332 ViSurfaceCreateInfoNN( ViSurfaceCreateFlagsNN flags_ = ViSurfaceCreateFlagsNN(), void* window_ = nullptr )
9333 : sType( StructureType::eViSurfaceCreateInfoNN )
9334 , pNext( nullptr )
9335 , flags( flags_ )
9336 , window( window_ )
9337 {
9338 }
9339
9340 ViSurfaceCreateInfoNN( VkViSurfaceCreateInfoNN const & rhs )
9341 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009342 memcpy( this, &rhs, sizeof( ViSurfaceCreateInfoNN ) );
Mark Young39389872017-01-19 21:10:49 -07009343 }
9344
9345 ViSurfaceCreateInfoNN& operator=( VkViSurfaceCreateInfoNN const & rhs )
9346 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009347 memcpy( this, &rhs, sizeof( ViSurfaceCreateInfoNN ) );
Mark Young39389872017-01-19 21:10:49 -07009348 return *this;
9349 }
Mark Young39389872017-01-19 21:10:49 -07009350 ViSurfaceCreateInfoNN& setPNext( const void* pNext_ )
9351 {
9352 pNext = pNext_;
9353 return *this;
9354 }
9355
9356 ViSurfaceCreateInfoNN& setFlags( ViSurfaceCreateFlagsNN flags_ )
9357 {
9358 flags = flags_;
9359 return *this;
9360 }
9361
9362 ViSurfaceCreateInfoNN& setWindow( void* window_ )
9363 {
9364 window = window_;
9365 return *this;
9366 }
9367
9368 operator const VkViSurfaceCreateInfoNN&() const
9369 {
9370 return *reinterpret_cast<const VkViSurfaceCreateInfoNN*>(this);
9371 }
9372
9373 bool operator==( ViSurfaceCreateInfoNN const& rhs ) const
9374 {
9375 return ( sType == rhs.sType )
9376 && ( pNext == rhs.pNext )
9377 && ( flags == rhs.flags )
9378 && ( window == rhs.window );
9379 }
9380
9381 bool operator!=( ViSurfaceCreateInfoNN const& rhs ) const
9382 {
9383 return !operator==( rhs );
9384 }
9385
9386 private:
9387 StructureType sType;
9388
9389 public:
9390 const void* pNext;
9391 ViSurfaceCreateFlagsNN flags;
9392 void* window;
9393 };
9394 static_assert( sizeof( ViSurfaceCreateInfoNN ) == sizeof( VkViSurfaceCreateInfoNN ), "struct and wrapper have different size!" );
9395#endif /*VK_USE_PLATFORM_VI_NN*/
9396
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009397#ifdef VK_USE_PLATFORM_WAYLAND_KHR
9398 struct WaylandSurfaceCreateInfoKHR
9399 {
9400 WaylandSurfaceCreateInfoKHR( WaylandSurfaceCreateFlagsKHR flags_ = WaylandSurfaceCreateFlagsKHR(), struct wl_display* display_ = nullptr, struct wl_surface* surface_ = nullptr )
9401 : sType( StructureType::eWaylandSurfaceCreateInfoKHR )
9402 , pNext( nullptr )
9403 , flags( flags_ )
9404 , display( display_ )
9405 , surface( surface_ )
9406 {
9407 }
9408
9409 WaylandSurfaceCreateInfoKHR( VkWaylandSurfaceCreateInfoKHR const & rhs )
9410 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009411 memcpy( this, &rhs, sizeof( WaylandSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009412 }
9413
9414 WaylandSurfaceCreateInfoKHR& operator=( VkWaylandSurfaceCreateInfoKHR const & rhs )
9415 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009416 memcpy( this, &rhs, sizeof( WaylandSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009417 return *this;
9418 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009419 WaylandSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9420 {
9421 pNext = pNext_;
9422 return *this;
9423 }
9424
9425 WaylandSurfaceCreateInfoKHR& setFlags( WaylandSurfaceCreateFlagsKHR flags_ )
9426 {
9427 flags = flags_;
9428 return *this;
9429 }
9430
9431 WaylandSurfaceCreateInfoKHR& setDisplay( struct wl_display* display_ )
9432 {
9433 display = display_;
9434 return *this;
9435 }
9436
9437 WaylandSurfaceCreateInfoKHR& setSurface( struct wl_surface* surface_ )
9438 {
9439 surface = surface_;
9440 return *this;
9441 }
9442
9443 operator const VkWaylandSurfaceCreateInfoKHR&() const
9444 {
9445 return *reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>(this);
9446 }
9447
9448 bool operator==( WaylandSurfaceCreateInfoKHR const& rhs ) const
9449 {
9450 return ( sType == rhs.sType )
9451 && ( pNext == rhs.pNext )
9452 && ( flags == rhs.flags )
9453 && ( display == rhs.display )
9454 && ( surface == rhs.surface );
9455 }
9456
9457 bool operator!=( WaylandSurfaceCreateInfoKHR const& rhs ) const
9458 {
9459 return !operator==( rhs );
9460 }
9461
9462 private:
9463 StructureType sType;
9464
9465 public:
9466 const void* pNext;
9467 WaylandSurfaceCreateFlagsKHR flags;
9468 struct wl_display* display;
9469 struct wl_surface* surface;
9470 };
9471 static_assert( sizeof( WaylandSurfaceCreateInfoKHR ) == sizeof( VkWaylandSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9472#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
9473
9474#ifdef VK_USE_PLATFORM_WIN32_KHR
9475 struct Win32SurfaceCreateInfoKHR
9476 {
9477 Win32SurfaceCreateInfoKHR( Win32SurfaceCreateFlagsKHR flags_ = Win32SurfaceCreateFlagsKHR(), HINSTANCE hinstance_ = 0, HWND hwnd_ = 0 )
9478 : sType( StructureType::eWin32SurfaceCreateInfoKHR )
9479 , pNext( nullptr )
9480 , flags( flags_ )
9481 , hinstance( hinstance_ )
9482 , hwnd( hwnd_ )
9483 {
9484 }
9485
9486 Win32SurfaceCreateInfoKHR( VkWin32SurfaceCreateInfoKHR const & rhs )
9487 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009488 memcpy( this, &rhs, sizeof( Win32SurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009489 }
9490
9491 Win32SurfaceCreateInfoKHR& operator=( VkWin32SurfaceCreateInfoKHR const & rhs )
9492 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009493 memcpy( this, &rhs, sizeof( Win32SurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009494 return *this;
9495 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009496 Win32SurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9497 {
9498 pNext = pNext_;
9499 return *this;
9500 }
9501
9502 Win32SurfaceCreateInfoKHR& setFlags( Win32SurfaceCreateFlagsKHR flags_ )
9503 {
9504 flags = flags_;
9505 return *this;
9506 }
9507
9508 Win32SurfaceCreateInfoKHR& setHinstance( HINSTANCE hinstance_ )
9509 {
9510 hinstance = hinstance_;
9511 return *this;
9512 }
9513
9514 Win32SurfaceCreateInfoKHR& setHwnd( HWND hwnd_ )
9515 {
9516 hwnd = hwnd_;
9517 return *this;
9518 }
9519
9520 operator const VkWin32SurfaceCreateInfoKHR&() const
9521 {
9522 return *reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>(this);
9523 }
9524
9525 bool operator==( Win32SurfaceCreateInfoKHR const& rhs ) const
9526 {
9527 return ( sType == rhs.sType )
9528 && ( pNext == rhs.pNext )
9529 && ( flags == rhs.flags )
9530 && ( hinstance == rhs.hinstance )
9531 && ( hwnd == rhs.hwnd );
9532 }
9533
9534 bool operator!=( Win32SurfaceCreateInfoKHR const& rhs ) const
9535 {
9536 return !operator==( rhs );
9537 }
9538
9539 private:
9540 StructureType sType;
9541
9542 public:
9543 const void* pNext;
9544 Win32SurfaceCreateFlagsKHR flags;
9545 HINSTANCE hinstance;
9546 HWND hwnd;
9547 };
9548 static_assert( sizeof( Win32SurfaceCreateInfoKHR ) == sizeof( VkWin32SurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9549#endif /*VK_USE_PLATFORM_WIN32_KHR*/
9550
9551#ifdef VK_USE_PLATFORM_XLIB_KHR
9552 struct XlibSurfaceCreateInfoKHR
9553 {
9554 XlibSurfaceCreateInfoKHR( XlibSurfaceCreateFlagsKHR flags_ = XlibSurfaceCreateFlagsKHR(), Display* dpy_ = nullptr, Window window_ = 0 )
9555 : sType( StructureType::eXlibSurfaceCreateInfoKHR )
9556 , pNext( nullptr )
9557 , flags( flags_ )
9558 , dpy( dpy_ )
9559 , window( window_ )
9560 {
9561 }
9562
9563 XlibSurfaceCreateInfoKHR( VkXlibSurfaceCreateInfoKHR const & rhs )
9564 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009565 memcpy( this, &rhs, sizeof( XlibSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009566 }
9567
9568 XlibSurfaceCreateInfoKHR& operator=( VkXlibSurfaceCreateInfoKHR const & rhs )
9569 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009570 memcpy( this, &rhs, sizeof( XlibSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009571 return *this;
9572 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009573 XlibSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9574 {
9575 pNext = pNext_;
9576 return *this;
9577 }
9578
9579 XlibSurfaceCreateInfoKHR& setFlags( XlibSurfaceCreateFlagsKHR flags_ )
9580 {
9581 flags = flags_;
9582 return *this;
9583 }
9584
9585 XlibSurfaceCreateInfoKHR& setDpy( Display* dpy_ )
9586 {
9587 dpy = dpy_;
9588 return *this;
9589 }
9590
9591 XlibSurfaceCreateInfoKHR& setWindow( Window window_ )
9592 {
9593 window = window_;
9594 return *this;
9595 }
9596
9597 operator const VkXlibSurfaceCreateInfoKHR&() const
9598 {
9599 return *reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>(this);
9600 }
9601
9602 bool operator==( XlibSurfaceCreateInfoKHR const& rhs ) const
9603 {
9604 return ( sType == rhs.sType )
9605 && ( pNext == rhs.pNext )
9606 && ( flags == rhs.flags )
9607 && ( dpy == rhs.dpy )
9608 && ( window == rhs.window );
9609 }
9610
9611 bool operator!=( XlibSurfaceCreateInfoKHR const& rhs ) const
9612 {
9613 return !operator==( rhs );
9614 }
9615
9616 private:
9617 StructureType sType;
9618
9619 public:
9620 const void* pNext;
9621 XlibSurfaceCreateFlagsKHR flags;
9622 Display* dpy;
9623 Window window;
9624 };
9625 static_assert( sizeof( XlibSurfaceCreateInfoKHR ) == sizeof( VkXlibSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9626#endif /*VK_USE_PLATFORM_XLIB_KHR*/
9627
9628#ifdef VK_USE_PLATFORM_XCB_KHR
9629 struct XcbSurfaceCreateInfoKHR
9630 {
9631 XcbSurfaceCreateInfoKHR( XcbSurfaceCreateFlagsKHR flags_ = XcbSurfaceCreateFlagsKHR(), xcb_connection_t* connection_ = nullptr, xcb_window_t window_ = 0 )
9632 : sType( StructureType::eXcbSurfaceCreateInfoKHR )
9633 , pNext( nullptr )
9634 , flags( flags_ )
9635 , connection( connection_ )
9636 , window( window_ )
9637 {
9638 }
9639
9640 XcbSurfaceCreateInfoKHR( VkXcbSurfaceCreateInfoKHR const & rhs )
9641 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009642 memcpy( this, &rhs, sizeof( XcbSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009643 }
9644
9645 XcbSurfaceCreateInfoKHR& operator=( VkXcbSurfaceCreateInfoKHR const & rhs )
9646 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009647 memcpy( this, &rhs, sizeof( XcbSurfaceCreateInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009648 return *this;
9649 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009650 XcbSurfaceCreateInfoKHR& setPNext( const void* pNext_ )
9651 {
9652 pNext = pNext_;
9653 return *this;
9654 }
9655
9656 XcbSurfaceCreateInfoKHR& setFlags( XcbSurfaceCreateFlagsKHR flags_ )
9657 {
9658 flags = flags_;
9659 return *this;
9660 }
9661
9662 XcbSurfaceCreateInfoKHR& setConnection( xcb_connection_t* connection_ )
9663 {
9664 connection = connection_;
9665 return *this;
9666 }
9667
9668 XcbSurfaceCreateInfoKHR& setWindow( xcb_window_t window_ )
9669 {
9670 window = window_;
9671 return *this;
9672 }
9673
9674 operator const VkXcbSurfaceCreateInfoKHR&() const
9675 {
9676 return *reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>(this);
9677 }
9678
9679 bool operator==( XcbSurfaceCreateInfoKHR const& rhs ) const
9680 {
9681 return ( sType == rhs.sType )
9682 && ( pNext == rhs.pNext )
9683 && ( flags == rhs.flags )
9684 && ( connection == rhs.connection )
9685 && ( window == rhs.window );
9686 }
9687
9688 bool operator!=( XcbSurfaceCreateInfoKHR const& rhs ) const
9689 {
9690 return !operator==( rhs );
9691 }
9692
9693 private:
9694 StructureType sType;
9695
9696 public:
9697 const void* pNext;
9698 XcbSurfaceCreateFlagsKHR flags;
9699 xcb_connection_t* connection;
9700 xcb_window_t window;
9701 };
9702 static_assert( sizeof( XcbSurfaceCreateInfoKHR ) == sizeof( VkXcbSurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
9703#endif /*VK_USE_PLATFORM_XCB_KHR*/
9704
9705 struct DebugMarkerMarkerInfoEXT
9706 {
9707 DebugMarkerMarkerInfoEXT( const char* pMarkerName_ = nullptr, std::array<float,4> const& color_ = { { 0, 0, 0, 0 } } )
9708 : sType( StructureType::eDebugMarkerMarkerInfoEXT )
9709 , pNext( nullptr )
9710 , pMarkerName( pMarkerName_ )
9711 {
9712 memcpy( &color, color_.data(), 4 * sizeof( float ) );
9713 }
9714
9715 DebugMarkerMarkerInfoEXT( VkDebugMarkerMarkerInfoEXT const & rhs )
9716 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009717 memcpy( this, &rhs, sizeof( DebugMarkerMarkerInfoEXT ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009718 }
9719
9720 DebugMarkerMarkerInfoEXT& operator=( VkDebugMarkerMarkerInfoEXT const & rhs )
9721 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009722 memcpy( this, &rhs, sizeof( DebugMarkerMarkerInfoEXT ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009723 return *this;
9724 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009725 DebugMarkerMarkerInfoEXT& setPNext( const void* pNext_ )
9726 {
9727 pNext = pNext_;
9728 return *this;
9729 }
9730
9731 DebugMarkerMarkerInfoEXT& setPMarkerName( const char* pMarkerName_ )
9732 {
9733 pMarkerName = pMarkerName_;
9734 return *this;
9735 }
9736
9737 DebugMarkerMarkerInfoEXT& setColor( std::array<float,4> color_ )
9738 {
9739 memcpy( &color, color_.data(), 4 * sizeof( float ) );
9740 return *this;
9741 }
9742
9743 operator const VkDebugMarkerMarkerInfoEXT&() const
9744 {
9745 return *reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>(this);
9746 }
9747
9748 bool operator==( DebugMarkerMarkerInfoEXT const& rhs ) const
9749 {
9750 return ( sType == rhs.sType )
9751 && ( pNext == rhs.pNext )
9752 && ( pMarkerName == rhs.pMarkerName )
9753 && ( memcmp( color, rhs.color, 4 * sizeof( float ) ) == 0 );
9754 }
9755
9756 bool operator!=( DebugMarkerMarkerInfoEXT const& rhs ) const
9757 {
9758 return !operator==( rhs );
9759 }
9760
9761 private:
9762 StructureType sType;
9763
9764 public:
9765 const void* pNext;
9766 const char* pMarkerName;
9767 float color[4];
9768 };
9769 static_assert( sizeof( DebugMarkerMarkerInfoEXT ) == sizeof( VkDebugMarkerMarkerInfoEXT ), "struct and wrapper have different size!" );
9770
9771 struct DedicatedAllocationImageCreateInfoNV
9772 {
9773 DedicatedAllocationImageCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
9774 : sType( StructureType::eDedicatedAllocationImageCreateInfoNV )
9775 , pNext( nullptr )
9776 , dedicatedAllocation( dedicatedAllocation_ )
9777 {
9778 }
9779
9780 DedicatedAllocationImageCreateInfoNV( VkDedicatedAllocationImageCreateInfoNV const & rhs )
9781 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009782 memcpy( this, &rhs, sizeof( DedicatedAllocationImageCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009783 }
9784
9785 DedicatedAllocationImageCreateInfoNV& operator=( VkDedicatedAllocationImageCreateInfoNV const & rhs )
9786 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009787 memcpy( this, &rhs, sizeof( DedicatedAllocationImageCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009788 return *this;
9789 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009790 DedicatedAllocationImageCreateInfoNV& setPNext( const void* pNext_ )
9791 {
9792 pNext = pNext_;
9793 return *this;
9794 }
9795
9796 DedicatedAllocationImageCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
9797 {
9798 dedicatedAllocation = dedicatedAllocation_;
9799 return *this;
9800 }
9801
9802 operator const VkDedicatedAllocationImageCreateInfoNV&() const
9803 {
9804 return *reinterpret_cast<const VkDedicatedAllocationImageCreateInfoNV*>(this);
9805 }
9806
9807 bool operator==( DedicatedAllocationImageCreateInfoNV const& rhs ) const
9808 {
9809 return ( sType == rhs.sType )
9810 && ( pNext == rhs.pNext )
9811 && ( dedicatedAllocation == rhs.dedicatedAllocation );
9812 }
9813
9814 bool operator!=( DedicatedAllocationImageCreateInfoNV const& rhs ) const
9815 {
9816 return !operator==( rhs );
9817 }
9818
9819 private:
9820 StructureType sType;
9821
9822 public:
9823 const void* pNext;
9824 Bool32 dedicatedAllocation;
9825 };
9826 static_assert( sizeof( DedicatedAllocationImageCreateInfoNV ) == sizeof( VkDedicatedAllocationImageCreateInfoNV ), "struct and wrapper have different size!" );
9827
9828 struct DedicatedAllocationBufferCreateInfoNV
9829 {
9830 DedicatedAllocationBufferCreateInfoNV( Bool32 dedicatedAllocation_ = 0 )
9831 : sType( StructureType::eDedicatedAllocationBufferCreateInfoNV )
9832 , pNext( nullptr )
9833 , dedicatedAllocation( dedicatedAllocation_ )
9834 {
9835 }
9836
9837 DedicatedAllocationBufferCreateInfoNV( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
9838 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009839 memcpy( this, &rhs, sizeof( DedicatedAllocationBufferCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009840 }
9841
9842 DedicatedAllocationBufferCreateInfoNV& operator=( VkDedicatedAllocationBufferCreateInfoNV const & rhs )
9843 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009844 memcpy( this, &rhs, sizeof( DedicatedAllocationBufferCreateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009845 return *this;
9846 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009847 DedicatedAllocationBufferCreateInfoNV& setPNext( const void* pNext_ )
9848 {
9849 pNext = pNext_;
9850 return *this;
9851 }
9852
9853 DedicatedAllocationBufferCreateInfoNV& setDedicatedAllocation( Bool32 dedicatedAllocation_ )
9854 {
9855 dedicatedAllocation = dedicatedAllocation_;
9856 return *this;
9857 }
9858
9859 operator const VkDedicatedAllocationBufferCreateInfoNV&() const
9860 {
9861 return *reinterpret_cast<const VkDedicatedAllocationBufferCreateInfoNV*>(this);
9862 }
9863
9864 bool operator==( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
9865 {
9866 return ( sType == rhs.sType )
9867 && ( pNext == rhs.pNext )
9868 && ( dedicatedAllocation == rhs.dedicatedAllocation );
9869 }
9870
9871 bool operator!=( DedicatedAllocationBufferCreateInfoNV const& rhs ) const
9872 {
9873 return !operator==( rhs );
9874 }
9875
9876 private:
9877 StructureType sType;
9878
9879 public:
9880 const void* pNext;
9881 Bool32 dedicatedAllocation;
9882 };
9883 static_assert( sizeof( DedicatedAllocationBufferCreateInfoNV ) == sizeof( VkDedicatedAllocationBufferCreateInfoNV ), "struct and wrapper have different size!" );
9884
9885 struct DedicatedAllocationMemoryAllocateInfoNV
9886 {
9887 DedicatedAllocationMemoryAllocateInfoNV( Image image_ = Image(), Buffer buffer_ = Buffer() )
9888 : sType( StructureType::eDedicatedAllocationMemoryAllocateInfoNV )
9889 , pNext( nullptr )
9890 , image( image_ )
9891 , buffer( buffer_ )
9892 {
9893 }
9894
9895 DedicatedAllocationMemoryAllocateInfoNV( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
9896 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009897 memcpy( this, &rhs, sizeof( DedicatedAllocationMemoryAllocateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009898 }
9899
9900 DedicatedAllocationMemoryAllocateInfoNV& operator=( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs )
9901 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009902 memcpy( this, &rhs, sizeof( DedicatedAllocationMemoryAllocateInfoNV ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009903 return *this;
9904 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -06009905 DedicatedAllocationMemoryAllocateInfoNV& setPNext( const void* pNext_ )
9906 {
9907 pNext = pNext_;
9908 return *this;
9909 }
9910
9911 DedicatedAllocationMemoryAllocateInfoNV& setImage( Image image_ )
9912 {
9913 image = image_;
9914 return *this;
9915 }
9916
9917 DedicatedAllocationMemoryAllocateInfoNV& setBuffer( Buffer buffer_ )
9918 {
9919 buffer = buffer_;
9920 return *this;
9921 }
9922
9923 operator const VkDedicatedAllocationMemoryAllocateInfoNV&() const
9924 {
9925 return *reinterpret_cast<const VkDedicatedAllocationMemoryAllocateInfoNV*>(this);
9926 }
9927
9928 bool operator==( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
9929 {
9930 return ( sType == rhs.sType )
9931 && ( pNext == rhs.pNext )
9932 && ( image == rhs.image )
9933 && ( buffer == rhs.buffer );
9934 }
9935
9936 bool operator!=( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const
9937 {
9938 return !operator==( rhs );
9939 }
9940
9941 private:
9942 StructureType sType;
9943
9944 public:
9945 const void* pNext;
9946 Image image;
9947 Buffer buffer;
9948 };
9949 static_assert( sizeof( DedicatedAllocationMemoryAllocateInfoNV ) == sizeof( VkDedicatedAllocationMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
9950
Lenny Komow6501c122016-08-31 15:03:49 -06009951#ifdef VK_USE_PLATFORM_WIN32_KHR
9952 struct ExportMemoryWin32HandleInfoNV
9953 {
9954 ExportMemoryWin32HandleInfoNV( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0 )
9955 : sType( StructureType::eExportMemoryWin32HandleInfoNV )
9956 , pNext( nullptr )
9957 , pAttributes( pAttributes_ )
9958 , dwAccess( dwAccess_ )
9959 {
9960 }
9961
9962 ExportMemoryWin32HandleInfoNV( VkExportMemoryWin32HandleInfoNV const & rhs )
9963 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009964 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -06009965 }
9966
9967 ExportMemoryWin32HandleInfoNV& operator=( VkExportMemoryWin32HandleInfoNV const & rhs )
9968 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -06009969 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -06009970 return *this;
9971 }
Lenny Komow6501c122016-08-31 15:03:49 -06009972 ExportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
9973 {
9974 pNext = pNext_;
9975 return *this;
9976 }
9977
9978 ExportMemoryWin32HandleInfoNV& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
9979 {
9980 pAttributes = pAttributes_;
9981 return *this;
9982 }
9983
9984 ExportMemoryWin32HandleInfoNV& setDwAccess( DWORD dwAccess_ )
9985 {
9986 dwAccess = dwAccess_;
9987 return *this;
9988 }
9989
9990 operator const VkExportMemoryWin32HandleInfoNV&() const
9991 {
9992 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoNV*>(this);
9993 }
9994
9995 bool operator==( ExportMemoryWin32HandleInfoNV const& rhs ) const
9996 {
9997 return ( sType == rhs.sType )
9998 && ( pNext == rhs.pNext )
9999 && ( pAttributes == rhs.pAttributes )
10000 && ( dwAccess == rhs.dwAccess );
10001 }
10002
10003 bool operator!=( ExportMemoryWin32HandleInfoNV const& rhs ) const
10004 {
10005 return !operator==( rhs );
10006 }
10007
10008 private:
10009 StructureType sType;
10010
10011 public:
10012 const void* pNext;
10013 const SECURITY_ATTRIBUTES* pAttributes;
10014 DWORD dwAccess;
10015 };
10016 static_assert( sizeof( ExportMemoryWin32HandleInfoNV ) == sizeof( VkExportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
10017#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10018
10019#ifdef VK_USE_PLATFORM_WIN32_KHR
10020 struct Win32KeyedMutexAcquireReleaseInfoNV
10021 {
10022 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 )
10023 : sType( StructureType::eWin32KeyedMutexAcquireReleaseInfoNV )
10024 , pNext( nullptr )
10025 , acquireCount( acquireCount_ )
10026 , pAcquireSyncs( pAcquireSyncs_ )
10027 , pAcquireKeys( pAcquireKeys_ )
10028 , pAcquireTimeoutMilliseconds( pAcquireTimeoutMilliseconds_ )
10029 , releaseCount( releaseCount_ )
10030 , pReleaseSyncs( pReleaseSyncs_ )
10031 , pReleaseKeys( pReleaseKeys_ )
10032 {
10033 }
10034
10035 Win32KeyedMutexAcquireReleaseInfoNV( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
10036 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010037 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -060010038 }
10039
10040 Win32KeyedMutexAcquireReleaseInfoNV& operator=( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs )
10041 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010042 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) );
Lenny Komow6501c122016-08-31 15:03:49 -060010043 return *this;
10044 }
Lenny Komow6501c122016-08-31 15:03:49 -060010045 Win32KeyedMutexAcquireReleaseInfoNV& setPNext( const void* pNext_ )
10046 {
10047 pNext = pNext_;
10048 return *this;
10049 }
10050
10051 Win32KeyedMutexAcquireReleaseInfoNV& setAcquireCount( uint32_t acquireCount_ )
10052 {
10053 acquireCount = acquireCount_;
10054 return *this;
10055 }
10056
10057 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
10058 {
10059 pAcquireSyncs = pAcquireSyncs_;
10060 return *this;
10061 }
10062
10063 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
10064 {
10065 pAcquireKeys = pAcquireKeys_;
10066 return *this;
10067 }
10068
10069 Win32KeyedMutexAcquireReleaseInfoNV& setPAcquireTimeoutMilliseconds( const uint32_t* pAcquireTimeoutMilliseconds_ )
10070 {
10071 pAcquireTimeoutMilliseconds = pAcquireTimeoutMilliseconds_;
10072 return *this;
10073 }
10074
10075 Win32KeyedMutexAcquireReleaseInfoNV& setReleaseCount( uint32_t releaseCount_ )
10076 {
10077 releaseCount = releaseCount_;
10078 return *this;
10079 }
10080
10081 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
10082 {
10083 pReleaseSyncs = pReleaseSyncs_;
10084 return *this;
10085 }
10086
10087 Win32KeyedMutexAcquireReleaseInfoNV& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
10088 {
10089 pReleaseKeys = pReleaseKeys_;
10090 return *this;
10091 }
10092
10093 operator const VkWin32KeyedMutexAcquireReleaseInfoNV&() const
10094 {
10095 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoNV*>(this);
10096 }
10097
10098 bool operator==( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
10099 {
10100 return ( sType == rhs.sType )
10101 && ( pNext == rhs.pNext )
10102 && ( acquireCount == rhs.acquireCount )
10103 && ( pAcquireSyncs == rhs.pAcquireSyncs )
10104 && ( pAcquireKeys == rhs.pAcquireKeys )
10105 && ( pAcquireTimeoutMilliseconds == rhs.pAcquireTimeoutMilliseconds )
10106 && ( releaseCount == rhs.releaseCount )
10107 && ( pReleaseSyncs == rhs.pReleaseSyncs )
10108 && ( pReleaseKeys == rhs.pReleaseKeys );
10109 }
10110
10111 bool operator!=( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const
10112 {
10113 return !operator==( rhs );
10114 }
10115
10116 private:
10117 StructureType sType;
10118
10119 public:
10120 const void* pNext;
10121 uint32_t acquireCount;
10122 const DeviceMemory* pAcquireSyncs;
10123 const uint64_t* pAcquireKeys;
10124 const uint32_t* pAcquireTimeoutMilliseconds;
10125 uint32_t releaseCount;
10126 const DeviceMemory* pReleaseSyncs;
10127 const uint64_t* pReleaseKeys;
10128 };
10129 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoNV ), "struct and wrapper have different size!" );
10130#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10131
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010132 struct DeviceGeneratedCommandsFeaturesNVX
10133 {
10134 DeviceGeneratedCommandsFeaturesNVX( Bool32 computeBindingPointSupport_ = 0 )
10135 : sType( StructureType::eDeviceGeneratedCommandsFeaturesNVX )
10136 , pNext( nullptr )
10137 , computeBindingPointSupport( computeBindingPointSupport_ )
10138 {
10139 }
10140
10141 DeviceGeneratedCommandsFeaturesNVX( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
10142 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010143 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsFeaturesNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010144 }
10145
10146 DeviceGeneratedCommandsFeaturesNVX& operator=( VkDeviceGeneratedCommandsFeaturesNVX const & rhs )
10147 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010148 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsFeaturesNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010149 return *this;
10150 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010151 DeviceGeneratedCommandsFeaturesNVX& setPNext( const void* pNext_ )
10152 {
10153 pNext = pNext_;
10154 return *this;
10155 }
10156
10157 DeviceGeneratedCommandsFeaturesNVX& setComputeBindingPointSupport( Bool32 computeBindingPointSupport_ )
10158 {
10159 computeBindingPointSupport = computeBindingPointSupport_;
10160 return *this;
10161 }
10162
10163 operator const VkDeviceGeneratedCommandsFeaturesNVX&() const
10164 {
10165 return *reinterpret_cast<const VkDeviceGeneratedCommandsFeaturesNVX*>(this);
10166 }
10167
10168 bool operator==( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
10169 {
10170 return ( sType == rhs.sType )
10171 && ( pNext == rhs.pNext )
10172 && ( computeBindingPointSupport == rhs.computeBindingPointSupport );
10173 }
10174
10175 bool operator!=( DeviceGeneratedCommandsFeaturesNVX const& rhs ) const
10176 {
10177 return !operator==( rhs );
10178 }
10179
10180 private:
10181 StructureType sType;
10182
10183 public:
10184 const void* pNext;
10185 Bool32 computeBindingPointSupport;
10186 };
10187 static_assert( sizeof( DeviceGeneratedCommandsFeaturesNVX ) == sizeof( VkDeviceGeneratedCommandsFeaturesNVX ), "struct and wrapper have different size!" );
10188
10189 struct DeviceGeneratedCommandsLimitsNVX
10190 {
10191 DeviceGeneratedCommandsLimitsNVX( uint32_t maxIndirectCommandsLayoutTokenCount_ = 0, uint32_t maxObjectEntryCounts_ = 0, uint32_t minSequenceCountBufferOffsetAlignment_ = 0, uint32_t minSequenceIndexBufferOffsetAlignment_ = 0, uint32_t minCommandsTokenBufferOffsetAlignment_ = 0 )
10192 : sType( StructureType::eDeviceGeneratedCommandsLimitsNVX )
10193 , pNext( nullptr )
10194 , maxIndirectCommandsLayoutTokenCount( maxIndirectCommandsLayoutTokenCount_ )
10195 , maxObjectEntryCounts( maxObjectEntryCounts_ )
10196 , minSequenceCountBufferOffsetAlignment( minSequenceCountBufferOffsetAlignment_ )
10197 , minSequenceIndexBufferOffsetAlignment( minSequenceIndexBufferOffsetAlignment_ )
10198 , minCommandsTokenBufferOffsetAlignment( minCommandsTokenBufferOffsetAlignment_ )
10199 {
10200 }
10201
10202 DeviceGeneratedCommandsLimitsNVX( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
10203 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010204 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsLimitsNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010205 }
10206
10207 DeviceGeneratedCommandsLimitsNVX& operator=( VkDeviceGeneratedCommandsLimitsNVX const & rhs )
10208 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010209 memcpy( this, &rhs, sizeof( DeviceGeneratedCommandsLimitsNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010210 return *this;
10211 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010212 DeviceGeneratedCommandsLimitsNVX& setPNext( const void* pNext_ )
10213 {
10214 pNext = pNext_;
10215 return *this;
10216 }
10217
10218 DeviceGeneratedCommandsLimitsNVX& setMaxIndirectCommandsLayoutTokenCount( uint32_t maxIndirectCommandsLayoutTokenCount_ )
10219 {
10220 maxIndirectCommandsLayoutTokenCount = maxIndirectCommandsLayoutTokenCount_;
10221 return *this;
10222 }
10223
10224 DeviceGeneratedCommandsLimitsNVX& setMaxObjectEntryCounts( uint32_t maxObjectEntryCounts_ )
10225 {
10226 maxObjectEntryCounts = maxObjectEntryCounts_;
10227 return *this;
10228 }
10229
10230 DeviceGeneratedCommandsLimitsNVX& setMinSequenceCountBufferOffsetAlignment( uint32_t minSequenceCountBufferOffsetAlignment_ )
10231 {
10232 minSequenceCountBufferOffsetAlignment = minSequenceCountBufferOffsetAlignment_;
10233 return *this;
10234 }
10235
10236 DeviceGeneratedCommandsLimitsNVX& setMinSequenceIndexBufferOffsetAlignment( uint32_t minSequenceIndexBufferOffsetAlignment_ )
10237 {
10238 minSequenceIndexBufferOffsetAlignment = minSequenceIndexBufferOffsetAlignment_;
10239 return *this;
10240 }
10241
10242 DeviceGeneratedCommandsLimitsNVX& setMinCommandsTokenBufferOffsetAlignment( uint32_t minCommandsTokenBufferOffsetAlignment_ )
10243 {
10244 minCommandsTokenBufferOffsetAlignment = minCommandsTokenBufferOffsetAlignment_;
10245 return *this;
10246 }
10247
10248 operator const VkDeviceGeneratedCommandsLimitsNVX&() const
10249 {
10250 return *reinterpret_cast<const VkDeviceGeneratedCommandsLimitsNVX*>(this);
10251 }
10252
10253 bool operator==( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
10254 {
10255 return ( sType == rhs.sType )
10256 && ( pNext == rhs.pNext )
10257 && ( maxIndirectCommandsLayoutTokenCount == rhs.maxIndirectCommandsLayoutTokenCount )
10258 && ( maxObjectEntryCounts == rhs.maxObjectEntryCounts )
10259 && ( minSequenceCountBufferOffsetAlignment == rhs.minSequenceCountBufferOffsetAlignment )
10260 && ( minSequenceIndexBufferOffsetAlignment == rhs.minSequenceIndexBufferOffsetAlignment )
10261 && ( minCommandsTokenBufferOffsetAlignment == rhs.minCommandsTokenBufferOffsetAlignment );
10262 }
10263
10264 bool operator!=( DeviceGeneratedCommandsLimitsNVX const& rhs ) const
10265 {
10266 return !operator==( rhs );
10267 }
10268
10269 private:
10270 StructureType sType;
10271
10272 public:
10273 const void* pNext;
10274 uint32_t maxIndirectCommandsLayoutTokenCount;
10275 uint32_t maxObjectEntryCounts;
10276 uint32_t minSequenceCountBufferOffsetAlignment;
10277 uint32_t minSequenceIndexBufferOffsetAlignment;
10278 uint32_t minCommandsTokenBufferOffsetAlignment;
10279 };
10280 static_assert( sizeof( DeviceGeneratedCommandsLimitsNVX ) == sizeof( VkDeviceGeneratedCommandsLimitsNVX ), "struct and wrapper have different size!" );
10281
10282 struct CmdReserveSpaceForCommandsInfoNVX
10283 {
10284 CmdReserveSpaceForCommandsInfoNVX( ObjectTableNVX objectTable_ = ObjectTableNVX(), IndirectCommandsLayoutNVX indirectCommandsLayout_ = IndirectCommandsLayoutNVX(), uint32_t maxSequencesCount_ = 0 )
10285 : sType( StructureType::eCmdReserveSpaceForCommandsInfoNVX )
10286 , pNext( nullptr )
10287 , objectTable( objectTable_ )
10288 , indirectCommandsLayout( indirectCommandsLayout_ )
10289 , maxSequencesCount( maxSequencesCount_ )
10290 {
10291 }
10292
10293 CmdReserveSpaceForCommandsInfoNVX( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
10294 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010295 memcpy( this, &rhs, sizeof( CmdReserveSpaceForCommandsInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010296 }
10297
10298 CmdReserveSpaceForCommandsInfoNVX& operator=( VkCmdReserveSpaceForCommandsInfoNVX const & rhs )
10299 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010300 memcpy( this, &rhs, sizeof( CmdReserveSpaceForCommandsInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010301 return *this;
10302 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070010303 CmdReserveSpaceForCommandsInfoNVX& setPNext( const void* pNext_ )
10304 {
10305 pNext = pNext_;
10306 return *this;
10307 }
10308
10309 CmdReserveSpaceForCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
10310 {
10311 objectTable = objectTable_;
10312 return *this;
10313 }
10314
10315 CmdReserveSpaceForCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
10316 {
10317 indirectCommandsLayout = indirectCommandsLayout_;
10318 return *this;
10319 }
10320
10321 CmdReserveSpaceForCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
10322 {
10323 maxSequencesCount = maxSequencesCount_;
10324 return *this;
10325 }
10326
10327 operator const VkCmdReserveSpaceForCommandsInfoNVX&() const
10328 {
10329 return *reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>(this);
10330 }
10331
10332 bool operator==( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
10333 {
10334 return ( sType == rhs.sType )
10335 && ( pNext == rhs.pNext )
10336 && ( objectTable == rhs.objectTable )
10337 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
10338 && ( maxSequencesCount == rhs.maxSequencesCount );
10339 }
10340
10341 bool operator!=( CmdReserveSpaceForCommandsInfoNVX const& rhs ) const
10342 {
10343 return !operator==( rhs );
10344 }
10345
10346 private:
10347 StructureType sType;
10348
10349 public:
10350 const void* pNext;
10351 ObjectTableNVX objectTable;
10352 IndirectCommandsLayoutNVX indirectCommandsLayout;
10353 uint32_t maxSequencesCount;
10354 };
10355 static_assert( sizeof( CmdReserveSpaceForCommandsInfoNVX ) == sizeof( VkCmdReserveSpaceForCommandsInfoNVX ), "struct and wrapper have different size!" );
10356
Mark Young39389872017-01-19 21:10:49 -070010357 struct PhysicalDeviceFeatures2KHR
10358 {
10359 PhysicalDeviceFeatures2KHR( PhysicalDeviceFeatures features_ = PhysicalDeviceFeatures() )
10360 : sType( StructureType::ePhysicalDeviceFeatures2KHR )
10361 , pNext( nullptr )
10362 , features( features_ )
10363 {
10364 }
10365
10366 PhysicalDeviceFeatures2KHR( VkPhysicalDeviceFeatures2KHR const & rhs )
10367 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010368 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070010369 }
10370
10371 PhysicalDeviceFeatures2KHR& operator=( VkPhysicalDeviceFeatures2KHR const & rhs )
10372 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010373 memcpy( this, &rhs, sizeof( PhysicalDeviceFeatures2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070010374 return *this;
10375 }
Mark Young39389872017-01-19 21:10:49 -070010376 PhysicalDeviceFeatures2KHR& setPNext( void* pNext_ )
10377 {
10378 pNext = pNext_;
10379 return *this;
10380 }
10381
10382 PhysicalDeviceFeatures2KHR& setFeatures( PhysicalDeviceFeatures features_ )
10383 {
10384 features = features_;
10385 return *this;
10386 }
10387
10388 operator const VkPhysicalDeviceFeatures2KHR&() const
10389 {
10390 return *reinterpret_cast<const VkPhysicalDeviceFeatures2KHR*>(this);
10391 }
10392
10393 bool operator==( PhysicalDeviceFeatures2KHR const& rhs ) const
10394 {
10395 return ( sType == rhs.sType )
10396 && ( pNext == rhs.pNext )
10397 && ( features == rhs.features );
10398 }
10399
10400 bool operator!=( PhysicalDeviceFeatures2KHR const& rhs ) const
10401 {
10402 return !operator==( rhs );
10403 }
10404
10405 private:
10406 StructureType sType;
10407
10408 public:
10409 void* pNext;
10410 PhysicalDeviceFeatures features;
10411 };
10412 static_assert( sizeof( PhysicalDeviceFeatures2KHR ) == sizeof( VkPhysicalDeviceFeatures2KHR ), "struct and wrapper have different size!" );
10413
Mark Young0f183a82017-02-28 09:58:04 -070010414 struct PhysicalDevicePushDescriptorPropertiesKHR
10415 {
10416 PhysicalDevicePushDescriptorPropertiesKHR( uint32_t maxPushDescriptors_ = 0 )
10417 : sType( StructureType::ePhysicalDevicePushDescriptorPropertiesKHR )
10418 , pNext( nullptr )
10419 , maxPushDescriptors( maxPushDescriptors_ )
10420 {
10421 }
10422
10423 PhysicalDevicePushDescriptorPropertiesKHR( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
10424 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010425 memcpy( this, &rhs, sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010426 }
10427
10428 PhysicalDevicePushDescriptorPropertiesKHR& operator=( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs )
10429 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010430 memcpy( this, &rhs, sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010431 return *this;
10432 }
Mark Young0f183a82017-02-28 09:58:04 -070010433 PhysicalDevicePushDescriptorPropertiesKHR& setPNext( void* pNext_ )
10434 {
10435 pNext = pNext_;
10436 return *this;
10437 }
10438
10439 PhysicalDevicePushDescriptorPropertiesKHR& setMaxPushDescriptors( uint32_t maxPushDescriptors_ )
10440 {
10441 maxPushDescriptors = maxPushDescriptors_;
10442 return *this;
10443 }
10444
10445 operator const VkPhysicalDevicePushDescriptorPropertiesKHR&() const
10446 {
10447 return *reinterpret_cast<const VkPhysicalDevicePushDescriptorPropertiesKHR*>(this);
10448 }
10449
10450 bool operator==( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
10451 {
10452 return ( sType == rhs.sType )
10453 && ( pNext == rhs.pNext )
10454 && ( maxPushDescriptors == rhs.maxPushDescriptors );
10455 }
10456
10457 bool operator!=( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const
10458 {
10459 return !operator==( rhs );
10460 }
10461
10462 private:
10463 StructureType sType;
10464
10465 public:
10466 void* pNext;
10467 uint32_t maxPushDescriptors;
10468 };
10469 static_assert( sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) == sizeof( VkPhysicalDevicePushDescriptorPropertiesKHR ), "struct and wrapper have different size!" );
10470
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010471 struct PresentRegionsKHR
10472 {
10473 PresentRegionsKHR( uint32_t swapchainCount_ = 0, const PresentRegionKHR* pRegions_ = nullptr )
10474 : sType( StructureType::ePresentRegionsKHR )
10475 , pNext( nullptr )
10476 , swapchainCount( swapchainCount_ )
10477 , pRegions( pRegions_ )
10478 {
10479 }
10480
10481 PresentRegionsKHR( VkPresentRegionsKHR const & rhs )
10482 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010483 memcpy( this, &rhs, sizeof( PresentRegionsKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010484 }
10485
10486 PresentRegionsKHR& operator=( VkPresentRegionsKHR const & rhs )
10487 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060010488 memcpy( this, &rhs, sizeof( PresentRegionsKHR ) );
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010489 return *this;
10490 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -060010491 PresentRegionsKHR& setPNext( const void* pNext_ )
10492 {
10493 pNext = pNext_;
10494 return *this;
10495 }
10496
10497 PresentRegionsKHR& setSwapchainCount( uint32_t swapchainCount_ )
10498 {
10499 swapchainCount = swapchainCount_;
10500 return *this;
10501 }
10502
10503 PresentRegionsKHR& setPRegions( const PresentRegionKHR* pRegions_ )
10504 {
10505 pRegions = pRegions_;
10506 return *this;
10507 }
10508
10509 operator const VkPresentRegionsKHR&() const
10510 {
10511 return *reinterpret_cast<const VkPresentRegionsKHR*>(this);
10512 }
10513
10514 bool operator==( PresentRegionsKHR const& rhs ) const
10515 {
10516 return ( sType == rhs.sType )
10517 && ( pNext == rhs.pNext )
10518 && ( swapchainCount == rhs.swapchainCount )
10519 && ( pRegions == rhs.pRegions );
10520 }
10521
10522 bool operator!=( PresentRegionsKHR const& rhs ) const
10523 {
10524 return !operator==( rhs );
10525 }
10526
10527 private:
10528 StructureType sType;
10529
10530 public:
10531 const void* pNext;
10532 uint32_t swapchainCount;
10533 const PresentRegionKHR* pRegions;
10534 };
10535 static_assert( sizeof( PresentRegionsKHR ) == sizeof( VkPresentRegionsKHR ), "struct and wrapper have different size!" );
10536
Mark Youngabc2d6e2017-07-07 07:59:56 -060010537 struct PhysicalDeviceVariablePointerFeaturesKHR
Mark Young0f183a82017-02-28 09:58:04 -070010538 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010539 PhysicalDeviceVariablePointerFeaturesKHR( Bool32 variablePointersStorageBuffer_ = 0, Bool32 variablePointers_ = 0 )
10540 : sType( StructureType::ePhysicalDeviceVariablePointerFeaturesKHR )
10541 , pNext( nullptr )
10542 , variablePointersStorageBuffer( variablePointersStorageBuffer_ )
10543 , variablePointers( variablePointers_ )
Mark Young0f183a82017-02-28 09:58:04 -070010544 {
Mark Young0f183a82017-02-28 09:58:04 -070010545 }
10546
Mark Youngabc2d6e2017-07-07 07:59:56 -060010547 PhysicalDeviceVariablePointerFeaturesKHR( VkPhysicalDeviceVariablePointerFeaturesKHR const & rhs )
10548 {
10549 memcpy( this, &rhs, sizeof( PhysicalDeviceVariablePointerFeaturesKHR ) );
10550 }
10551
10552 PhysicalDeviceVariablePointerFeaturesKHR& operator=( VkPhysicalDeviceVariablePointerFeaturesKHR const & rhs )
10553 {
10554 memcpy( this, &rhs, sizeof( PhysicalDeviceVariablePointerFeaturesKHR ) );
10555 return *this;
10556 }
10557 PhysicalDeviceVariablePointerFeaturesKHR& setPNext( void* pNext_ )
10558 {
10559 pNext = pNext_;
10560 return *this;
10561 }
10562
10563 PhysicalDeviceVariablePointerFeaturesKHR& setVariablePointersStorageBuffer( Bool32 variablePointersStorageBuffer_ )
10564 {
10565 variablePointersStorageBuffer = variablePointersStorageBuffer_;
10566 return *this;
10567 }
10568
10569 PhysicalDeviceVariablePointerFeaturesKHR& setVariablePointers( Bool32 variablePointers_ )
10570 {
10571 variablePointers = variablePointers_;
10572 return *this;
10573 }
10574
10575 operator const VkPhysicalDeviceVariablePointerFeaturesKHR&() const
10576 {
10577 return *reinterpret_cast<const VkPhysicalDeviceVariablePointerFeaturesKHR*>(this);
10578 }
10579
10580 bool operator==( PhysicalDeviceVariablePointerFeaturesKHR const& rhs ) const
10581 {
10582 return ( sType == rhs.sType )
10583 && ( pNext == rhs.pNext )
10584 && ( variablePointersStorageBuffer == rhs.variablePointersStorageBuffer )
10585 && ( variablePointers == rhs.variablePointers );
10586 }
10587
10588 bool operator!=( PhysicalDeviceVariablePointerFeaturesKHR const& rhs ) const
10589 {
10590 return !operator==( rhs );
10591 }
10592
10593 private:
10594 StructureType sType;
10595
10596 public:
10597 void* pNext;
10598 Bool32 variablePointersStorageBuffer;
10599 Bool32 variablePointers;
10600 };
10601 static_assert( sizeof( PhysicalDeviceVariablePointerFeaturesKHR ) == sizeof( VkPhysicalDeviceVariablePointerFeaturesKHR ), "struct and wrapper have different size!" );
10602
10603 struct PhysicalDeviceIDPropertiesKHR
10604 {
10605 operator const VkPhysicalDeviceIDPropertiesKHR&() const
10606 {
10607 return *reinterpret_cast<const VkPhysicalDeviceIDPropertiesKHR*>(this);
10608 }
10609
10610 bool operator==( PhysicalDeviceIDPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010611 {
10612 return ( sType == rhs.sType )
10613 && ( pNext == rhs.pNext )
10614 && ( memcmp( deviceUUID, rhs.deviceUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
10615 && ( memcmp( driverUUID, rhs.driverUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
Mark Youngabc2d6e2017-07-07 07:59:56 -060010616 && ( memcmp( deviceLUID, rhs.deviceLUID, VK_LUID_SIZE_KHR * sizeof( uint8_t ) ) == 0 )
10617 && ( deviceNodeMask == rhs.deviceNodeMask )
Mark Young0f183a82017-02-28 09:58:04 -070010618 && ( deviceLUIDValid == rhs.deviceLUIDValid );
10619 }
10620
Mark Youngabc2d6e2017-07-07 07:59:56 -060010621 bool operator!=( PhysicalDeviceIDPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010622 {
10623 return !operator==( rhs );
10624 }
10625
10626 private:
10627 StructureType sType;
10628
10629 public:
10630 void* pNext;
10631 uint8_t deviceUUID[VK_UUID_SIZE];
10632 uint8_t driverUUID[VK_UUID_SIZE];
Mark Youngabc2d6e2017-07-07 07:59:56 -060010633 uint8_t deviceLUID[VK_LUID_SIZE_KHR];
10634 uint32_t deviceNodeMask;
Mark Young0f183a82017-02-28 09:58:04 -070010635 Bool32 deviceLUIDValid;
10636 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060010637 static_assert( sizeof( PhysicalDeviceIDPropertiesKHR ) == sizeof( VkPhysicalDeviceIDPropertiesKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070010638
Mark Youngabc2d6e2017-07-07 07:59:56 -060010639#ifdef VK_USE_PLATFORM_WIN32_KHR
10640 struct ExportMemoryWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070010641 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010642 ExportMemoryWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
10643 : sType( StructureType::eExportMemoryWin32HandleInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070010644 , pNext( nullptr )
10645 , pAttributes( pAttributes_ )
10646 , dwAccess( dwAccess_ )
10647 , name( name_ )
10648 {
10649 }
10650
Mark Youngabc2d6e2017-07-07 07:59:56 -060010651 ExportMemoryWin32HandleInfoKHR( VkExportMemoryWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010652 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010653 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010654 }
10655
Mark Youngabc2d6e2017-07-07 07:59:56 -060010656 ExportMemoryWin32HandleInfoKHR& operator=( VkExportMemoryWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010657 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010658 memcpy( this, &rhs, sizeof( ExportMemoryWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010659 return *this;
10660 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060010661 ExportMemoryWin32HandleInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070010662 {
10663 pNext = pNext_;
10664 return *this;
10665 }
10666
Mark Youngabc2d6e2017-07-07 07:59:56 -060010667 ExportMemoryWin32HandleInfoKHR& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
Mark Young0f183a82017-02-28 09:58:04 -070010668 {
10669 pAttributes = pAttributes_;
10670 return *this;
10671 }
10672
Mark Youngabc2d6e2017-07-07 07:59:56 -060010673 ExportMemoryWin32HandleInfoKHR& setDwAccess( DWORD dwAccess_ )
Mark Young0f183a82017-02-28 09:58:04 -070010674 {
10675 dwAccess = dwAccess_;
10676 return *this;
10677 }
10678
Mark Youngabc2d6e2017-07-07 07:59:56 -060010679 ExportMemoryWin32HandleInfoKHR& setName( LPCWSTR name_ )
Mark Young0f183a82017-02-28 09:58:04 -070010680 {
10681 name = name_;
10682 return *this;
10683 }
10684
Mark Youngabc2d6e2017-07-07 07:59:56 -060010685 operator const VkExportMemoryWin32HandleInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070010686 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010687 return *reinterpret_cast<const VkExportMemoryWin32HandleInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070010688 }
10689
Mark Youngabc2d6e2017-07-07 07:59:56 -060010690 bool operator==( ExportMemoryWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010691 {
10692 return ( sType == rhs.sType )
10693 && ( pNext == rhs.pNext )
10694 && ( pAttributes == rhs.pAttributes )
10695 && ( dwAccess == rhs.dwAccess )
10696 && ( name == rhs.name );
10697 }
10698
Mark Youngabc2d6e2017-07-07 07:59:56 -060010699 bool operator!=( ExportMemoryWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010700 {
10701 return !operator==( rhs );
10702 }
10703
10704 private:
10705 StructureType sType;
10706
10707 public:
10708 const void* pNext;
10709 const SECURITY_ATTRIBUTES* pAttributes;
10710 DWORD dwAccess;
10711 LPCWSTR name;
10712 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060010713 static_assert( sizeof( ExportMemoryWin32HandleInfoKHR ) == sizeof( VkExportMemoryWin32HandleInfoKHR ), "struct and wrapper have different size!" );
10714#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070010715
10716#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Youngabc2d6e2017-07-07 07:59:56 -060010717 struct MemoryWin32HandlePropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070010718 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010719 operator const VkMemoryWin32HandlePropertiesKHR&() const
10720 {
10721 return *reinterpret_cast<const VkMemoryWin32HandlePropertiesKHR*>(this);
10722 }
10723
10724 bool operator==( MemoryWin32HandlePropertiesKHR const& rhs ) const
10725 {
10726 return ( sType == rhs.sType )
10727 && ( pNext == rhs.pNext )
10728 && ( memoryTypeBits == rhs.memoryTypeBits );
10729 }
10730
10731 bool operator!=( MemoryWin32HandlePropertiesKHR const& rhs ) const
10732 {
10733 return !operator==( rhs );
10734 }
10735
10736 private:
10737 StructureType sType;
10738
10739 public:
10740 void* pNext;
10741 uint32_t memoryTypeBits;
10742 };
10743 static_assert( sizeof( MemoryWin32HandlePropertiesKHR ) == sizeof( VkMemoryWin32HandlePropertiesKHR ), "struct and wrapper have different size!" );
10744#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10745
10746 struct MemoryFdPropertiesKHR
10747 {
10748 operator const VkMemoryFdPropertiesKHR&() const
10749 {
10750 return *reinterpret_cast<const VkMemoryFdPropertiesKHR*>(this);
10751 }
10752
10753 bool operator==( MemoryFdPropertiesKHR const& rhs ) const
10754 {
10755 return ( sType == rhs.sType )
10756 && ( pNext == rhs.pNext )
10757 && ( memoryTypeBits == rhs.memoryTypeBits );
10758 }
10759
10760 bool operator!=( MemoryFdPropertiesKHR const& rhs ) const
10761 {
10762 return !operator==( rhs );
10763 }
10764
10765 private:
10766 StructureType sType;
10767
10768 public:
10769 void* pNext;
10770 uint32_t memoryTypeBits;
10771 };
10772 static_assert( sizeof( MemoryFdPropertiesKHR ) == sizeof( VkMemoryFdPropertiesKHR ), "struct and wrapper have different size!" );
10773
10774#ifdef VK_USE_PLATFORM_WIN32_KHR
10775 struct Win32KeyedMutexAcquireReleaseInfoKHR
10776 {
10777 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 )
10778 : sType( StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070010779 , pNext( nullptr )
10780 , acquireCount( acquireCount_ )
10781 , pAcquireSyncs( pAcquireSyncs_ )
10782 , pAcquireKeys( pAcquireKeys_ )
10783 , pAcquireTimeouts( pAcquireTimeouts_ )
10784 , releaseCount( releaseCount_ )
10785 , pReleaseSyncs( pReleaseSyncs_ )
10786 , pReleaseKeys( pReleaseKeys_ )
10787 {
10788 }
10789
Mark Youngabc2d6e2017-07-07 07:59:56 -060010790 Win32KeyedMutexAcquireReleaseInfoKHR( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010791 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010792 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010793 }
10794
Mark Youngabc2d6e2017-07-07 07:59:56 -060010795 Win32KeyedMutexAcquireReleaseInfoKHR& operator=( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010796 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010797 memcpy( this, &rhs, sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010798 return *this;
10799 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060010800 Win32KeyedMutexAcquireReleaseInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070010801 {
10802 pNext = pNext_;
10803 return *this;
10804 }
10805
Mark Youngabc2d6e2017-07-07 07:59:56 -060010806 Win32KeyedMutexAcquireReleaseInfoKHR& setAcquireCount( uint32_t acquireCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070010807 {
10808 acquireCount = acquireCount_;
10809 return *this;
10810 }
10811
Mark Youngabc2d6e2017-07-07 07:59:56 -060010812 Win32KeyedMutexAcquireReleaseInfoKHR& setPAcquireSyncs( const DeviceMemory* pAcquireSyncs_ )
Mark Young0f183a82017-02-28 09:58:04 -070010813 {
10814 pAcquireSyncs = pAcquireSyncs_;
10815 return *this;
10816 }
10817
Mark Youngabc2d6e2017-07-07 07:59:56 -060010818 Win32KeyedMutexAcquireReleaseInfoKHR& setPAcquireKeys( const uint64_t* pAcquireKeys_ )
Mark Young0f183a82017-02-28 09:58:04 -070010819 {
10820 pAcquireKeys = pAcquireKeys_;
10821 return *this;
10822 }
10823
Mark Youngabc2d6e2017-07-07 07:59:56 -060010824 Win32KeyedMutexAcquireReleaseInfoKHR& setPAcquireTimeouts( const uint32_t* pAcquireTimeouts_ )
Mark Young0f183a82017-02-28 09:58:04 -070010825 {
10826 pAcquireTimeouts = pAcquireTimeouts_;
10827 return *this;
10828 }
10829
Mark Youngabc2d6e2017-07-07 07:59:56 -060010830 Win32KeyedMutexAcquireReleaseInfoKHR& setReleaseCount( uint32_t releaseCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070010831 {
10832 releaseCount = releaseCount_;
10833 return *this;
10834 }
10835
Mark Youngabc2d6e2017-07-07 07:59:56 -060010836 Win32KeyedMutexAcquireReleaseInfoKHR& setPReleaseSyncs( const DeviceMemory* pReleaseSyncs_ )
Mark Young0f183a82017-02-28 09:58:04 -070010837 {
10838 pReleaseSyncs = pReleaseSyncs_;
10839 return *this;
10840 }
10841
Mark Youngabc2d6e2017-07-07 07:59:56 -060010842 Win32KeyedMutexAcquireReleaseInfoKHR& setPReleaseKeys( const uint64_t* pReleaseKeys_ )
Mark Young0f183a82017-02-28 09:58:04 -070010843 {
10844 pReleaseKeys = pReleaseKeys_;
10845 return *this;
10846 }
10847
Mark Youngabc2d6e2017-07-07 07:59:56 -060010848 operator const VkWin32KeyedMutexAcquireReleaseInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070010849 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010850 return *reinterpret_cast<const VkWin32KeyedMutexAcquireReleaseInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070010851 }
10852
Mark Youngabc2d6e2017-07-07 07:59:56 -060010853 bool operator==( Win32KeyedMutexAcquireReleaseInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010854 {
10855 return ( sType == rhs.sType )
10856 && ( pNext == rhs.pNext )
10857 && ( acquireCount == rhs.acquireCount )
10858 && ( pAcquireSyncs == rhs.pAcquireSyncs )
10859 && ( pAcquireKeys == rhs.pAcquireKeys )
10860 && ( pAcquireTimeouts == rhs.pAcquireTimeouts )
10861 && ( releaseCount == rhs.releaseCount )
10862 && ( pReleaseSyncs == rhs.pReleaseSyncs )
10863 && ( pReleaseKeys == rhs.pReleaseKeys );
10864 }
10865
Mark Youngabc2d6e2017-07-07 07:59:56 -060010866 bool operator!=( Win32KeyedMutexAcquireReleaseInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010867 {
10868 return !operator==( rhs );
10869 }
10870
10871 private:
10872 StructureType sType;
10873
10874 public:
10875 const void* pNext;
10876 uint32_t acquireCount;
10877 const DeviceMemory* pAcquireSyncs;
10878 const uint64_t* pAcquireKeys;
10879 const uint32_t* pAcquireTimeouts;
10880 uint32_t releaseCount;
10881 const DeviceMemory* pReleaseSyncs;
10882 const uint64_t* pReleaseKeys;
10883 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060010884 static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070010885#endif /*VK_USE_PLATFORM_WIN32_KHR*/
10886
Mark Youngabc2d6e2017-07-07 07:59:56 -060010887#ifdef VK_USE_PLATFORM_WIN32_KHR
10888 struct ExportSemaphoreWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070010889 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010890 ExportSemaphoreWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
10891 : sType( StructureType::eExportSemaphoreWin32HandleInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070010892 , pNext( nullptr )
10893 , pAttributes( pAttributes_ )
10894 , dwAccess( dwAccess_ )
10895 , name( name_ )
10896 {
10897 }
10898
Mark Youngabc2d6e2017-07-07 07:59:56 -060010899 ExportSemaphoreWin32HandleInfoKHR( VkExportSemaphoreWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010900 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010901 memcpy( this, &rhs, sizeof( ExportSemaphoreWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010902 }
10903
Mark Youngabc2d6e2017-07-07 07:59:56 -060010904 ExportSemaphoreWin32HandleInfoKHR& operator=( VkExportSemaphoreWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010905 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010906 memcpy( this, &rhs, sizeof( ExportSemaphoreWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010907 return *this;
10908 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060010909 ExportSemaphoreWin32HandleInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070010910 {
10911 pNext = pNext_;
10912 return *this;
10913 }
10914
Mark Youngabc2d6e2017-07-07 07:59:56 -060010915 ExportSemaphoreWin32HandleInfoKHR& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
Mark Young0f183a82017-02-28 09:58:04 -070010916 {
10917 pAttributes = pAttributes_;
10918 return *this;
10919 }
10920
Mark Youngabc2d6e2017-07-07 07:59:56 -060010921 ExportSemaphoreWin32HandleInfoKHR& setDwAccess( DWORD dwAccess_ )
Mark Young0f183a82017-02-28 09:58:04 -070010922 {
10923 dwAccess = dwAccess_;
10924 return *this;
10925 }
10926
Mark Youngabc2d6e2017-07-07 07:59:56 -060010927 ExportSemaphoreWin32HandleInfoKHR& setName( LPCWSTR name_ )
Mark Young0f183a82017-02-28 09:58:04 -070010928 {
10929 name = name_;
10930 return *this;
10931 }
10932
Mark Youngabc2d6e2017-07-07 07:59:56 -060010933 operator const VkExportSemaphoreWin32HandleInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070010934 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010935 return *reinterpret_cast<const VkExportSemaphoreWin32HandleInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070010936 }
10937
Mark Youngabc2d6e2017-07-07 07:59:56 -060010938 bool operator==( ExportSemaphoreWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010939 {
10940 return ( sType == rhs.sType )
10941 && ( pNext == rhs.pNext )
10942 && ( pAttributes == rhs.pAttributes )
10943 && ( dwAccess == rhs.dwAccess )
10944 && ( name == rhs.name );
10945 }
10946
Mark Youngabc2d6e2017-07-07 07:59:56 -060010947 bool operator!=( ExportSemaphoreWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070010948 {
10949 return !operator==( rhs );
10950 }
10951
10952 private:
10953 StructureType sType;
10954
10955 public:
10956 const void* pNext;
10957 const SECURITY_ATTRIBUTES* pAttributes;
10958 DWORD dwAccess;
10959 LPCWSTR name;
10960 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060010961 static_assert( sizeof( ExportSemaphoreWin32HandleInfoKHR ) == sizeof( VkExportSemaphoreWin32HandleInfoKHR ), "struct and wrapper have different size!" );
10962#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070010963
Mark Youngabc2d6e2017-07-07 07:59:56 -060010964#ifdef VK_USE_PLATFORM_WIN32_KHR
10965 struct D3D12FenceSubmitInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070010966 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010967 D3D12FenceSubmitInfoKHR( uint32_t waitSemaphoreValuesCount_ = 0, const uint64_t* pWaitSemaphoreValues_ = nullptr, uint32_t signalSemaphoreValuesCount_ = 0, const uint64_t* pSignalSemaphoreValues_ = nullptr )
10968 : sType( StructureType::eD3D12FenceSubmitInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070010969 , pNext( nullptr )
10970 , waitSemaphoreValuesCount( waitSemaphoreValuesCount_ )
10971 , pWaitSemaphoreValues( pWaitSemaphoreValues_ )
10972 , signalSemaphoreValuesCount( signalSemaphoreValuesCount_ )
10973 , pSignalSemaphoreValues( pSignalSemaphoreValues_ )
10974 {
10975 }
10976
Mark Youngabc2d6e2017-07-07 07:59:56 -060010977 D3D12FenceSubmitInfoKHR( VkD3D12FenceSubmitInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010978 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010979 memcpy( this, &rhs, sizeof( D3D12FenceSubmitInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010980 }
10981
Mark Youngabc2d6e2017-07-07 07:59:56 -060010982 D3D12FenceSubmitInfoKHR& operator=( VkD3D12FenceSubmitInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070010983 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060010984 memcpy( this, &rhs, sizeof( D3D12FenceSubmitInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070010985 return *this;
10986 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060010987 D3D12FenceSubmitInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070010988 {
10989 pNext = pNext_;
10990 return *this;
10991 }
10992
Mark Youngabc2d6e2017-07-07 07:59:56 -060010993 D3D12FenceSubmitInfoKHR& setWaitSemaphoreValuesCount( uint32_t waitSemaphoreValuesCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070010994 {
10995 waitSemaphoreValuesCount = waitSemaphoreValuesCount_;
10996 return *this;
10997 }
10998
Mark Youngabc2d6e2017-07-07 07:59:56 -060010999 D3D12FenceSubmitInfoKHR& setPWaitSemaphoreValues( const uint64_t* pWaitSemaphoreValues_ )
Mark Young0f183a82017-02-28 09:58:04 -070011000 {
11001 pWaitSemaphoreValues = pWaitSemaphoreValues_;
11002 return *this;
11003 }
11004
Mark Youngabc2d6e2017-07-07 07:59:56 -060011005 D3D12FenceSubmitInfoKHR& setSignalSemaphoreValuesCount( uint32_t signalSemaphoreValuesCount_ )
Mark Young0f183a82017-02-28 09:58:04 -070011006 {
11007 signalSemaphoreValuesCount = signalSemaphoreValuesCount_;
11008 return *this;
11009 }
11010
Mark Youngabc2d6e2017-07-07 07:59:56 -060011011 D3D12FenceSubmitInfoKHR& setPSignalSemaphoreValues( const uint64_t* pSignalSemaphoreValues_ )
Mark Young0f183a82017-02-28 09:58:04 -070011012 {
11013 pSignalSemaphoreValues = pSignalSemaphoreValues_;
11014 return *this;
11015 }
11016
Mark Youngabc2d6e2017-07-07 07:59:56 -060011017 operator const VkD3D12FenceSubmitInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070011018 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060011019 return *reinterpret_cast<const VkD3D12FenceSubmitInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070011020 }
11021
Mark Youngabc2d6e2017-07-07 07:59:56 -060011022 bool operator==( D3D12FenceSubmitInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011023 {
11024 return ( sType == rhs.sType )
11025 && ( pNext == rhs.pNext )
11026 && ( waitSemaphoreValuesCount == rhs.waitSemaphoreValuesCount )
11027 && ( pWaitSemaphoreValues == rhs.pWaitSemaphoreValues )
11028 && ( signalSemaphoreValuesCount == rhs.signalSemaphoreValuesCount )
11029 && ( pSignalSemaphoreValues == rhs.pSignalSemaphoreValues );
11030 }
11031
Mark Youngabc2d6e2017-07-07 07:59:56 -060011032 bool operator!=( D3D12FenceSubmitInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070011033 {
11034 return !operator==( rhs );
11035 }
11036
11037 private:
11038 StructureType sType;
11039
11040 public:
11041 const void* pNext;
11042 uint32_t waitSemaphoreValuesCount;
11043 const uint64_t* pWaitSemaphoreValues;
11044 uint32_t signalSemaphoreValuesCount;
11045 const uint64_t* pSignalSemaphoreValues;
11046 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060011047 static_assert( sizeof( D3D12FenceSubmitInfoKHR ) == sizeof( VkD3D12FenceSubmitInfoKHR ), "struct and wrapper have different size!" );
11048#endif /*VK_USE_PLATFORM_WIN32_KHR*/
11049
11050#ifdef VK_USE_PLATFORM_WIN32_KHR
11051 struct ExportFenceWin32HandleInfoKHR
11052 {
11053 ExportFenceWin32HandleInfoKHR( const SECURITY_ATTRIBUTES* pAttributes_ = nullptr, DWORD dwAccess_ = 0, LPCWSTR name_ = 0 )
11054 : sType( StructureType::eExportFenceWin32HandleInfoKHR )
11055 , pNext( nullptr )
11056 , pAttributes( pAttributes_ )
11057 , dwAccess( dwAccess_ )
11058 , name( name_ )
11059 {
11060 }
11061
11062 ExportFenceWin32HandleInfoKHR( VkExportFenceWin32HandleInfoKHR const & rhs )
11063 {
11064 memcpy( this, &rhs, sizeof( ExportFenceWin32HandleInfoKHR ) );
11065 }
11066
11067 ExportFenceWin32HandleInfoKHR& operator=( VkExportFenceWin32HandleInfoKHR const & rhs )
11068 {
11069 memcpy( this, &rhs, sizeof( ExportFenceWin32HandleInfoKHR ) );
11070 return *this;
11071 }
11072 ExportFenceWin32HandleInfoKHR& setPNext( const void* pNext_ )
11073 {
11074 pNext = pNext_;
11075 return *this;
11076 }
11077
11078 ExportFenceWin32HandleInfoKHR& setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ )
11079 {
11080 pAttributes = pAttributes_;
11081 return *this;
11082 }
11083
11084 ExportFenceWin32HandleInfoKHR& setDwAccess( DWORD dwAccess_ )
11085 {
11086 dwAccess = dwAccess_;
11087 return *this;
11088 }
11089
11090 ExportFenceWin32HandleInfoKHR& setName( LPCWSTR name_ )
11091 {
11092 name = name_;
11093 return *this;
11094 }
11095
11096 operator const VkExportFenceWin32HandleInfoKHR&() const
11097 {
11098 return *reinterpret_cast<const VkExportFenceWin32HandleInfoKHR*>(this);
11099 }
11100
11101 bool operator==( ExportFenceWin32HandleInfoKHR const& rhs ) const
11102 {
11103 return ( sType == rhs.sType )
11104 && ( pNext == rhs.pNext )
11105 && ( pAttributes == rhs.pAttributes )
11106 && ( dwAccess == rhs.dwAccess )
11107 && ( name == rhs.name );
11108 }
11109
11110 bool operator!=( ExportFenceWin32HandleInfoKHR const& rhs ) const
11111 {
11112 return !operator==( rhs );
11113 }
11114
11115 private:
11116 StructureType sType;
11117
11118 public:
11119 const void* pNext;
11120 const SECURITY_ATTRIBUTES* pAttributes;
11121 DWORD dwAccess;
11122 LPCWSTR name;
11123 };
11124 static_assert( sizeof( ExportFenceWin32HandleInfoKHR ) == sizeof( VkExportFenceWin32HandleInfoKHR ), "struct and wrapper have different size!" );
11125#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070011126
11127 struct PhysicalDeviceMultiviewFeaturesKHX
11128 {
11129 PhysicalDeviceMultiviewFeaturesKHX( Bool32 multiview_ = 0, Bool32 multiviewGeometryShader_ = 0, Bool32 multiviewTessellationShader_ = 0 )
11130 : sType( StructureType::ePhysicalDeviceMultiviewFeaturesKHX )
11131 , pNext( nullptr )
11132 , multiview( multiview_ )
11133 , multiviewGeometryShader( multiviewGeometryShader_ )
11134 , multiviewTessellationShader( multiviewTessellationShader_ )
11135 {
11136 }
11137
11138 PhysicalDeviceMultiviewFeaturesKHX( VkPhysicalDeviceMultiviewFeaturesKHX const & rhs )
11139 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011140 memcpy( this, &rhs, sizeof( PhysicalDeviceMultiviewFeaturesKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011141 }
11142
11143 PhysicalDeviceMultiviewFeaturesKHX& operator=( VkPhysicalDeviceMultiviewFeaturesKHX const & rhs )
11144 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011145 memcpy( this, &rhs, sizeof( PhysicalDeviceMultiviewFeaturesKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011146 return *this;
11147 }
Mark Young0f183a82017-02-28 09:58:04 -070011148 PhysicalDeviceMultiviewFeaturesKHX& setPNext( void* pNext_ )
11149 {
11150 pNext = pNext_;
11151 return *this;
11152 }
11153
11154 PhysicalDeviceMultiviewFeaturesKHX& setMultiview( Bool32 multiview_ )
11155 {
11156 multiview = multiview_;
11157 return *this;
11158 }
11159
11160 PhysicalDeviceMultiviewFeaturesKHX& setMultiviewGeometryShader( Bool32 multiviewGeometryShader_ )
11161 {
11162 multiviewGeometryShader = multiviewGeometryShader_;
11163 return *this;
11164 }
11165
11166 PhysicalDeviceMultiviewFeaturesKHX& setMultiviewTessellationShader( Bool32 multiviewTessellationShader_ )
11167 {
11168 multiviewTessellationShader = multiviewTessellationShader_;
11169 return *this;
11170 }
11171
11172 operator const VkPhysicalDeviceMultiviewFeaturesKHX&() const
11173 {
11174 return *reinterpret_cast<const VkPhysicalDeviceMultiviewFeaturesKHX*>(this);
11175 }
11176
11177 bool operator==( PhysicalDeviceMultiviewFeaturesKHX const& rhs ) const
11178 {
11179 return ( sType == rhs.sType )
11180 && ( pNext == rhs.pNext )
11181 && ( multiview == rhs.multiview )
11182 && ( multiviewGeometryShader == rhs.multiviewGeometryShader )
11183 && ( multiviewTessellationShader == rhs.multiviewTessellationShader );
11184 }
11185
11186 bool operator!=( PhysicalDeviceMultiviewFeaturesKHX const& rhs ) const
11187 {
11188 return !operator==( rhs );
11189 }
11190
11191 private:
11192 StructureType sType;
11193
11194 public:
11195 void* pNext;
11196 Bool32 multiview;
11197 Bool32 multiviewGeometryShader;
11198 Bool32 multiviewTessellationShader;
11199 };
11200 static_assert( sizeof( PhysicalDeviceMultiviewFeaturesKHX ) == sizeof( VkPhysicalDeviceMultiviewFeaturesKHX ), "struct and wrapper have different size!" );
11201
11202 struct PhysicalDeviceMultiviewPropertiesKHX
11203 {
11204 operator const VkPhysicalDeviceMultiviewPropertiesKHX&() const
11205 {
11206 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPropertiesKHX*>(this);
11207 }
11208
11209 bool operator==( PhysicalDeviceMultiviewPropertiesKHX const& rhs ) const
11210 {
11211 return ( sType == rhs.sType )
11212 && ( pNext == rhs.pNext )
11213 && ( maxMultiviewViewCount == rhs.maxMultiviewViewCount )
11214 && ( maxMultiviewInstanceIndex == rhs.maxMultiviewInstanceIndex );
11215 }
11216
11217 bool operator!=( PhysicalDeviceMultiviewPropertiesKHX const& rhs ) const
11218 {
11219 return !operator==( rhs );
11220 }
11221
11222 private:
11223 StructureType sType;
11224
11225 public:
11226 void* pNext;
11227 uint32_t maxMultiviewViewCount;
11228 uint32_t maxMultiviewInstanceIndex;
11229 };
11230 static_assert( sizeof( PhysicalDeviceMultiviewPropertiesKHX ) == sizeof( VkPhysicalDeviceMultiviewPropertiesKHX ), "struct and wrapper have different size!" );
11231
11232 struct RenderPassMultiviewCreateInfoKHX
11233 {
11234 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 )
11235 : sType( StructureType::eRenderPassMultiviewCreateInfoKHX )
11236 , pNext( nullptr )
11237 , subpassCount( subpassCount_ )
11238 , pViewMasks( pViewMasks_ )
11239 , dependencyCount( dependencyCount_ )
11240 , pViewOffsets( pViewOffsets_ )
11241 , correlationMaskCount( correlationMaskCount_ )
11242 , pCorrelationMasks( pCorrelationMasks_ )
11243 {
11244 }
11245
11246 RenderPassMultiviewCreateInfoKHX( VkRenderPassMultiviewCreateInfoKHX const & rhs )
11247 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011248 memcpy( this, &rhs, sizeof( RenderPassMultiviewCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011249 }
11250
11251 RenderPassMultiviewCreateInfoKHX& operator=( VkRenderPassMultiviewCreateInfoKHX const & rhs )
11252 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011253 memcpy( this, &rhs, sizeof( RenderPassMultiviewCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011254 return *this;
11255 }
Mark Young0f183a82017-02-28 09:58:04 -070011256 RenderPassMultiviewCreateInfoKHX& setPNext( const void* pNext_ )
11257 {
11258 pNext = pNext_;
11259 return *this;
11260 }
11261
11262 RenderPassMultiviewCreateInfoKHX& setSubpassCount( uint32_t subpassCount_ )
11263 {
11264 subpassCount = subpassCount_;
11265 return *this;
11266 }
11267
11268 RenderPassMultiviewCreateInfoKHX& setPViewMasks( const uint32_t* pViewMasks_ )
11269 {
11270 pViewMasks = pViewMasks_;
11271 return *this;
11272 }
11273
11274 RenderPassMultiviewCreateInfoKHX& setDependencyCount( uint32_t dependencyCount_ )
11275 {
11276 dependencyCount = dependencyCount_;
11277 return *this;
11278 }
11279
11280 RenderPassMultiviewCreateInfoKHX& setPViewOffsets( const int32_t* pViewOffsets_ )
11281 {
11282 pViewOffsets = pViewOffsets_;
11283 return *this;
11284 }
11285
11286 RenderPassMultiviewCreateInfoKHX& setCorrelationMaskCount( uint32_t correlationMaskCount_ )
11287 {
11288 correlationMaskCount = correlationMaskCount_;
11289 return *this;
11290 }
11291
11292 RenderPassMultiviewCreateInfoKHX& setPCorrelationMasks( const uint32_t* pCorrelationMasks_ )
11293 {
11294 pCorrelationMasks = pCorrelationMasks_;
11295 return *this;
11296 }
11297
11298 operator const VkRenderPassMultiviewCreateInfoKHX&() const
11299 {
11300 return *reinterpret_cast<const VkRenderPassMultiviewCreateInfoKHX*>(this);
11301 }
11302
11303 bool operator==( RenderPassMultiviewCreateInfoKHX const& rhs ) const
11304 {
11305 return ( sType == rhs.sType )
11306 && ( pNext == rhs.pNext )
11307 && ( subpassCount == rhs.subpassCount )
11308 && ( pViewMasks == rhs.pViewMasks )
11309 && ( dependencyCount == rhs.dependencyCount )
11310 && ( pViewOffsets == rhs.pViewOffsets )
11311 && ( correlationMaskCount == rhs.correlationMaskCount )
11312 && ( pCorrelationMasks == rhs.pCorrelationMasks );
11313 }
11314
11315 bool operator!=( RenderPassMultiviewCreateInfoKHX const& rhs ) const
11316 {
11317 return !operator==( rhs );
11318 }
11319
11320 private:
11321 StructureType sType;
11322
11323 public:
11324 const void* pNext;
11325 uint32_t subpassCount;
11326 const uint32_t* pViewMasks;
11327 uint32_t dependencyCount;
11328 const int32_t* pViewOffsets;
11329 uint32_t correlationMaskCount;
11330 const uint32_t* pCorrelationMasks;
11331 };
11332 static_assert( sizeof( RenderPassMultiviewCreateInfoKHX ) == sizeof( VkRenderPassMultiviewCreateInfoKHX ), "struct and wrapper have different size!" );
11333
11334 struct BindBufferMemoryInfoKHX
11335 {
11336 BindBufferMemoryInfoKHX( Buffer buffer_ = Buffer(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, uint32_t deviceIndexCount_ = 0, const uint32_t* pDeviceIndices_ = nullptr )
11337 : sType( StructureType::eBindBufferMemoryInfoKHX )
11338 , pNext( nullptr )
11339 , buffer( buffer_ )
11340 , memory( memory_ )
11341 , memoryOffset( memoryOffset_ )
11342 , deviceIndexCount( deviceIndexCount_ )
11343 , pDeviceIndices( pDeviceIndices_ )
11344 {
11345 }
11346
11347 BindBufferMemoryInfoKHX( VkBindBufferMemoryInfoKHX const & rhs )
11348 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011349 memcpy( this, &rhs, sizeof( BindBufferMemoryInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011350 }
11351
11352 BindBufferMemoryInfoKHX& operator=( VkBindBufferMemoryInfoKHX const & rhs )
11353 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011354 memcpy( this, &rhs, sizeof( BindBufferMemoryInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011355 return *this;
11356 }
Mark Young0f183a82017-02-28 09:58:04 -070011357 BindBufferMemoryInfoKHX& setPNext( const void* pNext_ )
11358 {
11359 pNext = pNext_;
11360 return *this;
11361 }
11362
11363 BindBufferMemoryInfoKHX& setBuffer( Buffer buffer_ )
11364 {
11365 buffer = buffer_;
11366 return *this;
11367 }
11368
11369 BindBufferMemoryInfoKHX& setMemory( DeviceMemory memory_ )
11370 {
11371 memory = memory_;
11372 return *this;
11373 }
11374
11375 BindBufferMemoryInfoKHX& setMemoryOffset( DeviceSize memoryOffset_ )
11376 {
11377 memoryOffset = memoryOffset_;
11378 return *this;
11379 }
11380
11381 BindBufferMemoryInfoKHX& setDeviceIndexCount( uint32_t deviceIndexCount_ )
11382 {
11383 deviceIndexCount = deviceIndexCount_;
11384 return *this;
11385 }
11386
11387 BindBufferMemoryInfoKHX& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
11388 {
11389 pDeviceIndices = pDeviceIndices_;
11390 return *this;
11391 }
11392
11393 operator const VkBindBufferMemoryInfoKHX&() const
11394 {
11395 return *reinterpret_cast<const VkBindBufferMemoryInfoKHX*>(this);
11396 }
11397
11398 bool operator==( BindBufferMemoryInfoKHX const& rhs ) const
11399 {
11400 return ( sType == rhs.sType )
11401 && ( pNext == rhs.pNext )
11402 && ( buffer == rhs.buffer )
11403 && ( memory == rhs.memory )
11404 && ( memoryOffset == rhs.memoryOffset )
11405 && ( deviceIndexCount == rhs.deviceIndexCount )
11406 && ( pDeviceIndices == rhs.pDeviceIndices );
11407 }
11408
11409 bool operator!=( BindBufferMemoryInfoKHX const& rhs ) const
11410 {
11411 return !operator==( rhs );
11412 }
11413
11414 private:
11415 StructureType sType;
11416
11417 public:
11418 const void* pNext;
11419 Buffer buffer;
11420 DeviceMemory memory;
11421 DeviceSize memoryOffset;
11422 uint32_t deviceIndexCount;
11423 const uint32_t* pDeviceIndices;
11424 };
11425 static_assert( sizeof( BindBufferMemoryInfoKHX ) == sizeof( VkBindBufferMemoryInfoKHX ), "struct and wrapper have different size!" );
11426
11427 struct BindImageMemoryInfoKHX
11428 {
11429 BindImageMemoryInfoKHX( Image image_ = Image(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, uint32_t deviceIndexCount_ = 0, const uint32_t* pDeviceIndices_ = nullptr, uint32_t SFRRectCount_ = 0, const Rect2D* pSFRRects_ = nullptr )
11430 : sType( StructureType::eBindImageMemoryInfoKHX )
11431 , pNext( nullptr )
11432 , image( image_ )
11433 , memory( memory_ )
11434 , memoryOffset( memoryOffset_ )
11435 , deviceIndexCount( deviceIndexCount_ )
11436 , pDeviceIndices( pDeviceIndices_ )
11437 , SFRRectCount( SFRRectCount_ )
11438 , pSFRRects( pSFRRects_ )
11439 {
11440 }
11441
11442 BindImageMemoryInfoKHX( VkBindImageMemoryInfoKHX const & rhs )
11443 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011444 memcpy( this, &rhs, sizeof( BindImageMemoryInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011445 }
11446
11447 BindImageMemoryInfoKHX& operator=( VkBindImageMemoryInfoKHX const & rhs )
11448 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011449 memcpy( this, &rhs, sizeof( BindImageMemoryInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011450 return *this;
11451 }
Mark Young0f183a82017-02-28 09:58:04 -070011452 BindImageMemoryInfoKHX& setPNext( const void* pNext_ )
11453 {
11454 pNext = pNext_;
11455 return *this;
11456 }
11457
11458 BindImageMemoryInfoKHX& setImage( Image image_ )
11459 {
11460 image = image_;
11461 return *this;
11462 }
11463
11464 BindImageMemoryInfoKHX& setMemory( DeviceMemory memory_ )
11465 {
11466 memory = memory_;
11467 return *this;
11468 }
11469
11470 BindImageMemoryInfoKHX& setMemoryOffset( DeviceSize memoryOffset_ )
11471 {
11472 memoryOffset = memoryOffset_;
11473 return *this;
11474 }
11475
11476 BindImageMemoryInfoKHX& setDeviceIndexCount( uint32_t deviceIndexCount_ )
11477 {
11478 deviceIndexCount = deviceIndexCount_;
11479 return *this;
11480 }
11481
11482 BindImageMemoryInfoKHX& setPDeviceIndices( const uint32_t* pDeviceIndices_ )
11483 {
11484 pDeviceIndices = pDeviceIndices_;
11485 return *this;
11486 }
11487
11488 BindImageMemoryInfoKHX& setSFRRectCount( uint32_t SFRRectCount_ )
11489 {
11490 SFRRectCount = SFRRectCount_;
11491 return *this;
11492 }
11493
11494 BindImageMemoryInfoKHX& setPSFRRects( const Rect2D* pSFRRects_ )
11495 {
11496 pSFRRects = pSFRRects_;
11497 return *this;
11498 }
11499
11500 operator const VkBindImageMemoryInfoKHX&() const
11501 {
11502 return *reinterpret_cast<const VkBindImageMemoryInfoKHX*>(this);
11503 }
11504
11505 bool operator==( BindImageMemoryInfoKHX const& rhs ) const
11506 {
11507 return ( sType == rhs.sType )
11508 && ( pNext == rhs.pNext )
11509 && ( image == rhs.image )
11510 && ( memory == rhs.memory )
11511 && ( memoryOffset == rhs.memoryOffset )
11512 && ( deviceIndexCount == rhs.deviceIndexCount )
11513 && ( pDeviceIndices == rhs.pDeviceIndices )
11514 && ( SFRRectCount == rhs.SFRRectCount )
11515 && ( pSFRRects == rhs.pSFRRects );
11516 }
11517
11518 bool operator!=( BindImageMemoryInfoKHX const& rhs ) const
11519 {
11520 return !operator==( rhs );
11521 }
11522
11523 private:
11524 StructureType sType;
11525
11526 public:
11527 const void* pNext;
11528 Image image;
11529 DeviceMemory memory;
11530 DeviceSize memoryOffset;
11531 uint32_t deviceIndexCount;
11532 const uint32_t* pDeviceIndices;
11533 uint32_t SFRRectCount;
11534 const Rect2D* pSFRRects;
11535 };
11536 static_assert( sizeof( BindImageMemoryInfoKHX ) == sizeof( VkBindImageMemoryInfoKHX ), "struct and wrapper have different size!" );
11537
11538 struct DeviceGroupRenderPassBeginInfoKHX
11539 {
11540 DeviceGroupRenderPassBeginInfoKHX( uint32_t deviceMask_ = 0, uint32_t deviceRenderAreaCount_ = 0, const Rect2D* pDeviceRenderAreas_ = nullptr )
11541 : sType( StructureType::eDeviceGroupRenderPassBeginInfoKHX )
11542 , pNext( nullptr )
11543 , deviceMask( deviceMask_ )
11544 , deviceRenderAreaCount( deviceRenderAreaCount_ )
11545 , pDeviceRenderAreas( pDeviceRenderAreas_ )
11546 {
11547 }
11548
11549 DeviceGroupRenderPassBeginInfoKHX( VkDeviceGroupRenderPassBeginInfoKHX const & rhs )
11550 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011551 memcpy( this, &rhs, sizeof( DeviceGroupRenderPassBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011552 }
11553
11554 DeviceGroupRenderPassBeginInfoKHX& operator=( VkDeviceGroupRenderPassBeginInfoKHX const & rhs )
11555 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011556 memcpy( this, &rhs, sizeof( DeviceGroupRenderPassBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011557 return *this;
11558 }
Mark Young0f183a82017-02-28 09:58:04 -070011559 DeviceGroupRenderPassBeginInfoKHX& setPNext( const void* pNext_ )
11560 {
11561 pNext = pNext_;
11562 return *this;
11563 }
11564
11565 DeviceGroupRenderPassBeginInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11566 {
11567 deviceMask = deviceMask_;
11568 return *this;
11569 }
11570
11571 DeviceGroupRenderPassBeginInfoKHX& setDeviceRenderAreaCount( uint32_t deviceRenderAreaCount_ )
11572 {
11573 deviceRenderAreaCount = deviceRenderAreaCount_;
11574 return *this;
11575 }
11576
11577 DeviceGroupRenderPassBeginInfoKHX& setPDeviceRenderAreas( const Rect2D* pDeviceRenderAreas_ )
11578 {
11579 pDeviceRenderAreas = pDeviceRenderAreas_;
11580 return *this;
11581 }
11582
11583 operator const VkDeviceGroupRenderPassBeginInfoKHX&() const
11584 {
11585 return *reinterpret_cast<const VkDeviceGroupRenderPassBeginInfoKHX*>(this);
11586 }
11587
11588 bool operator==( DeviceGroupRenderPassBeginInfoKHX const& rhs ) const
11589 {
11590 return ( sType == rhs.sType )
11591 && ( pNext == rhs.pNext )
11592 && ( deviceMask == rhs.deviceMask )
11593 && ( deviceRenderAreaCount == rhs.deviceRenderAreaCount )
11594 && ( pDeviceRenderAreas == rhs.pDeviceRenderAreas );
11595 }
11596
11597 bool operator!=( DeviceGroupRenderPassBeginInfoKHX const& rhs ) const
11598 {
11599 return !operator==( rhs );
11600 }
11601
11602 private:
11603 StructureType sType;
11604
11605 public:
11606 const void* pNext;
11607 uint32_t deviceMask;
11608 uint32_t deviceRenderAreaCount;
11609 const Rect2D* pDeviceRenderAreas;
11610 };
11611 static_assert( sizeof( DeviceGroupRenderPassBeginInfoKHX ) == sizeof( VkDeviceGroupRenderPassBeginInfoKHX ), "struct and wrapper have different size!" );
11612
11613 struct DeviceGroupCommandBufferBeginInfoKHX
11614 {
11615 DeviceGroupCommandBufferBeginInfoKHX( uint32_t deviceMask_ = 0 )
11616 : sType( StructureType::eDeviceGroupCommandBufferBeginInfoKHX )
11617 , pNext( nullptr )
11618 , deviceMask( deviceMask_ )
11619 {
11620 }
11621
11622 DeviceGroupCommandBufferBeginInfoKHX( VkDeviceGroupCommandBufferBeginInfoKHX const & rhs )
11623 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011624 memcpy( this, &rhs, sizeof( DeviceGroupCommandBufferBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011625 }
11626
11627 DeviceGroupCommandBufferBeginInfoKHX& operator=( VkDeviceGroupCommandBufferBeginInfoKHX const & rhs )
11628 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011629 memcpy( this, &rhs, sizeof( DeviceGroupCommandBufferBeginInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011630 return *this;
11631 }
Mark Young0f183a82017-02-28 09:58:04 -070011632 DeviceGroupCommandBufferBeginInfoKHX& setPNext( const void* pNext_ )
11633 {
11634 pNext = pNext_;
11635 return *this;
11636 }
11637
11638 DeviceGroupCommandBufferBeginInfoKHX& setDeviceMask( uint32_t deviceMask_ )
11639 {
11640 deviceMask = deviceMask_;
11641 return *this;
11642 }
11643
11644 operator const VkDeviceGroupCommandBufferBeginInfoKHX&() const
11645 {
11646 return *reinterpret_cast<const VkDeviceGroupCommandBufferBeginInfoKHX*>(this);
11647 }
11648
11649 bool operator==( DeviceGroupCommandBufferBeginInfoKHX const& rhs ) const
11650 {
11651 return ( sType == rhs.sType )
11652 && ( pNext == rhs.pNext )
11653 && ( deviceMask == rhs.deviceMask );
11654 }
11655
11656 bool operator!=( DeviceGroupCommandBufferBeginInfoKHX const& rhs ) const
11657 {
11658 return !operator==( rhs );
11659 }
11660
11661 private:
11662 StructureType sType;
11663
11664 public:
11665 const void* pNext;
11666 uint32_t deviceMask;
11667 };
11668 static_assert( sizeof( DeviceGroupCommandBufferBeginInfoKHX ) == sizeof( VkDeviceGroupCommandBufferBeginInfoKHX ), "struct and wrapper have different size!" );
11669
11670 struct DeviceGroupSubmitInfoKHX
11671 {
11672 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 )
11673 : sType( StructureType::eDeviceGroupSubmitInfoKHX )
11674 , pNext( nullptr )
11675 , waitSemaphoreCount( waitSemaphoreCount_ )
11676 , pWaitSemaphoreDeviceIndices( pWaitSemaphoreDeviceIndices_ )
11677 , commandBufferCount( commandBufferCount_ )
11678 , pCommandBufferDeviceMasks( pCommandBufferDeviceMasks_ )
11679 , signalSemaphoreCount( signalSemaphoreCount_ )
11680 , pSignalSemaphoreDeviceIndices( pSignalSemaphoreDeviceIndices_ )
11681 {
11682 }
11683
11684 DeviceGroupSubmitInfoKHX( VkDeviceGroupSubmitInfoKHX const & rhs )
11685 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011686 memcpy( this, &rhs, sizeof( DeviceGroupSubmitInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011687 }
11688
11689 DeviceGroupSubmitInfoKHX& operator=( VkDeviceGroupSubmitInfoKHX const & rhs )
11690 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011691 memcpy( this, &rhs, sizeof( DeviceGroupSubmitInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011692 return *this;
11693 }
Mark Young0f183a82017-02-28 09:58:04 -070011694 DeviceGroupSubmitInfoKHX& setPNext( const void* pNext_ )
11695 {
11696 pNext = pNext_;
11697 return *this;
11698 }
11699
11700 DeviceGroupSubmitInfoKHX& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
11701 {
11702 waitSemaphoreCount = waitSemaphoreCount_;
11703 return *this;
11704 }
11705
11706 DeviceGroupSubmitInfoKHX& setPWaitSemaphoreDeviceIndices( const uint32_t* pWaitSemaphoreDeviceIndices_ )
11707 {
11708 pWaitSemaphoreDeviceIndices = pWaitSemaphoreDeviceIndices_;
11709 return *this;
11710 }
11711
11712 DeviceGroupSubmitInfoKHX& setCommandBufferCount( uint32_t commandBufferCount_ )
11713 {
11714 commandBufferCount = commandBufferCount_;
11715 return *this;
11716 }
11717
11718 DeviceGroupSubmitInfoKHX& setPCommandBufferDeviceMasks( const uint32_t* pCommandBufferDeviceMasks_ )
11719 {
11720 pCommandBufferDeviceMasks = pCommandBufferDeviceMasks_;
11721 return *this;
11722 }
11723
11724 DeviceGroupSubmitInfoKHX& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
11725 {
11726 signalSemaphoreCount = signalSemaphoreCount_;
11727 return *this;
11728 }
11729
11730 DeviceGroupSubmitInfoKHX& setPSignalSemaphoreDeviceIndices( const uint32_t* pSignalSemaphoreDeviceIndices_ )
11731 {
11732 pSignalSemaphoreDeviceIndices = pSignalSemaphoreDeviceIndices_;
11733 return *this;
11734 }
11735
11736 operator const VkDeviceGroupSubmitInfoKHX&() const
11737 {
11738 return *reinterpret_cast<const VkDeviceGroupSubmitInfoKHX*>(this);
11739 }
11740
11741 bool operator==( DeviceGroupSubmitInfoKHX const& rhs ) const
11742 {
11743 return ( sType == rhs.sType )
11744 && ( pNext == rhs.pNext )
11745 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
11746 && ( pWaitSemaphoreDeviceIndices == rhs.pWaitSemaphoreDeviceIndices )
11747 && ( commandBufferCount == rhs.commandBufferCount )
11748 && ( pCommandBufferDeviceMasks == rhs.pCommandBufferDeviceMasks )
11749 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
11750 && ( pSignalSemaphoreDeviceIndices == rhs.pSignalSemaphoreDeviceIndices );
11751 }
11752
11753 bool operator!=( DeviceGroupSubmitInfoKHX const& rhs ) const
11754 {
11755 return !operator==( rhs );
11756 }
11757
11758 private:
11759 StructureType sType;
11760
11761 public:
11762 const void* pNext;
11763 uint32_t waitSemaphoreCount;
11764 const uint32_t* pWaitSemaphoreDeviceIndices;
11765 uint32_t commandBufferCount;
11766 const uint32_t* pCommandBufferDeviceMasks;
11767 uint32_t signalSemaphoreCount;
11768 const uint32_t* pSignalSemaphoreDeviceIndices;
11769 };
11770 static_assert( sizeof( DeviceGroupSubmitInfoKHX ) == sizeof( VkDeviceGroupSubmitInfoKHX ), "struct and wrapper have different size!" );
11771
11772 struct DeviceGroupBindSparseInfoKHX
11773 {
11774 DeviceGroupBindSparseInfoKHX( uint32_t resourceDeviceIndex_ = 0, uint32_t memoryDeviceIndex_ = 0 )
11775 : sType( StructureType::eDeviceGroupBindSparseInfoKHX )
11776 , pNext( nullptr )
11777 , resourceDeviceIndex( resourceDeviceIndex_ )
11778 , memoryDeviceIndex( memoryDeviceIndex_ )
11779 {
11780 }
11781
11782 DeviceGroupBindSparseInfoKHX( VkDeviceGroupBindSparseInfoKHX const & rhs )
11783 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011784 memcpy( this, &rhs, sizeof( DeviceGroupBindSparseInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011785 }
11786
11787 DeviceGroupBindSparseInfoKHX& operator=( VkDeviceGroupBindSparseInfoKHX const & rhs )
11788 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011789 memcpy( this, &rhs, sizeof( DeviceGroupBindSparseInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011790 return *this;
11791 }
Mark Young0f183a82017-02-28 09:58:04 -070011792 DeviceGroupBindSparseInfoKHX& setPNext( const void* pNext_ )
11793 {
11794 pNext = pNext_;
11795 return *this;
11796 }
11797
11798 DeviceGroupBindSparseInfoKHX& setResourceDeviceIndex( uint32_t resourceDeviceIndex_ )
11799 {
11800 resourceDeviceIndex = resourceDeviceIndex_;
11801 return *this;
11802 }
11803
11804 DeviceGroupBindSparseInfoKHX& setMemoryDeviceIndex( uint32_t memoryDeviceIndex_ )
11805 {
11806 memoryDeviceIndex = memoryDeviceIndex_;
11807 return *this;
11808 }
11809
11810 operator const VkDeviceGroupBindSparseInfoKHX&() const
11811 {
11812 return *reinterpret_cast<const VkDeviceGroupBindSparseInfoKHX*>(this);
11813 }
11814
11815 bool operator==( DeviceGroupBindSparseInfoKHX const& rhs ) const
11816 {
11817 return ( sType == rhs.sType )
11818 && ( pNext == rhs.pNext )
11819 && ( resourceDeviceIndex == rhs.resourceDeviceIndex )
11820 && ( memoryDeviceIndex == rhs.memoryDeviceIndex );
11821 }
11822
11823 bool operator!=( DeviceGroupBindSparseInfoKHX const& rhs ) const
11824 {
11825 return !operator==( rhs );
11826 }
11827
11828 private:
11829 StructureType sType;
11830
11831 public:
11832 const void* pNext;
11833 uint32_t resourceDeviceIndex;
11834 uint32_t memoryDeviceIndex;
11835 };
11836 static_assert( sizeof( DeviceGroupBindSparseInfoKHX ) == sizeof( VkDeviceGroupBindSparseInfoKHX ), "struct and wrapper have different size!" );
11837
11838 struct ImageSwapchainCreateInfoKHX
11839 {
11840 ImageSwapchainCreateInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR() )
11841 : sType( StructureType::eImageSwapchainCreateInfoKHX )
11842 , pNext( nullptr )
11843 , swapchain( swapchain_ )
11844 {
11845 }
11846
11847 ImageSwapchainCreateInfoKHX( VkImageSwapchainCreateInfoKHX const & rhs )
11848 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011849 memcpy( this, &rhs, sizeof( ImageSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011850 }
11851
11852 ImageSwapchainCreateInfoKHX& operator=( VkImageSwapchainCreateInfoKHX const & rhs )
11853 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011854 memcpy( this, &rhs, sizeof( ImageSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011855 return *this;
11856 }
Mark Young0f183a82017-02-28 09:58:04 -070011857 ImageSwapchainCreateInfoKHX& setPNext( const void* pNext_ )
11858 {
11859 pNext = pNext_;
11860 return *this;
11861 }
11862
11863 ImageSwapchainCreateInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11864 {
11865 swapchain = swapchain_;
11866 return *this;
11867 }
11868
11869 operator const VkImageSwapchainCreateInfoKHX&() const
11870 {
11871 return *reinterpret_cast<const VkImageSwapchainCreateInfoKHX*>(this);
11872 }
11873
11874 bool operator==( ImageSwapchainCreateInfoKHX const& rhs ) const
11875 {
11876 return ( sType == rhs.sType )
11877 && ( pNext == rhs.pNext )
11878 && ( swapchain == rhs.swapchain );
11879 }
11880
11881 bool operator!=( ImageSwapchainCreateInfoKHX const& rhs ) const
11882 {
11883 return !operator==( rhs );
11884 }
11885
11886 private:
11887 StructureType sType;
11888
11889 public:
11890 const void* pNext;
11891 SwapchainKHR swapchain;
11892 };
11893 static_assert( sizeof( ImageSwapchainCreateInfoKHX ) == sizeof( VkImageSwapchainCreateInfoKHX ), "struct and wrapper have different size!" );
11894
11895 struct BindImageMemorySwapchainInfoKHX
11896 {
11897 BindImageMemorySwapchainInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR(), uint32_t imageIndex_ = 0 )
11898 : sType( StructureType::eBindImageMemorySwapchainInfoKHX )
11899 , pNext( nullptr )
11900 , swapchain( swapchain_ )
11901 , imageIndex( imageIndex_ )
11902 {
11903 }
11904
11905 BindImageMemorySwapchainInfoKHX( VkBindImageMemorySwapchainInfoKHX const & rhs )
11906 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011907 memcpy( this, &rhs, sizeof( BindImageMemorySwapchainInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011908 }
11909
11910 BindImageMemorySwapchainInfoKHX& operator=( VkBindImageMemorySwapchainInfoKHX const & rhs )
11911 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011912 memcpy( this, &rhs, sizeof( BindImageMemorySwapchainInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011913 return *this;
11914 }
Mark Young0f183a82017-02-28 09:58:04 -070011915 BindImageMemorySwapchainInfoKHX& setPNext( const void* pNext_ )
11916 {
11917 pNext = pNext_;
11918 return *this;
11919 }
11920
11921 BindImageMemorySwapchainInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11922 {
11923 swapchain = swapchain_;
11924 return *this;
11925 }
11926
11927 BindImageMemorySwapchainInfoKHX& setImageIndex( uint32_t imageIndex_ )
11928 {
11929 imageIndex = imageIndex_;
11930 return *this;
11931 }
11932
11933 operator const VkBindImageMemorySwapchainInfoKHX&() const
11934 {
11935 return *reinterpret_cast<const VkBindImageMemorySwapchainInfoKHX*>(this);
11936 }
11937
11938 bool operator==( BindImageMemorySwapchainInfoKHX const& rhs ) const
11939 {
11940 return ( sType == rhs.sType )
11941 && ( pNext == rhs.pNext )
11942 && ( swapchain == rhs.swapchain )
11943 && ( imageIndex == rhs.imageIndex );
11944 }
11945
11946 bool operator!=( BindImageMemorySwapchainInfoKHX const& rhs ) const
11947 {
11948 return !operator==( rhs );
11949 }
11950
11951 private:
11952 StructureType sType;
11953
11954 public:
11955 const void* pNext;
11956 SwapchainKHR swapchain;
11957 uint32_t imageIndex;
11958 };
11959 static_assert( sizeof( BindImageMemorySwapchainInfoKHX ) == sizeof( VkBindImageMemorySwapchainInfoKHX ), "struct and wrapper have different size!" );
11960
11961 struct AcquireNextImageInfoKHX
11962 {
11963 AcquireNextImageInfoKHX( SwapchainKHR swapchain_ = SwapchainKHR(), uint64_t timeout_ = 0, Semaphore semaphore_ = Semaphore(), Fence fence_ = Fence(), uint32_t deviceMask_ = 0 )
11964 : sType( StructureType::eAcquireNextImageInfoKHX )
11965 , pNext( nullptr )
11966 , swapchain( swapchain_ )
11967 , timeout( timeout_ )
11968 , semaphore( semaphore_ )
11969 , fence( fence_ )
11970 , deviceMask( deviceMask_ )
11971 {
11972 }
11973
11974 AcquireNextImageInfoKHX( VkAcquireNextImageInfoKHX const & rhs )
11975 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011976 memcpy( this, &rhs, sizeof( AcquireNextImageInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011977 }
11978
11979 AcquireNextImageInfoKHX& operator=( VkAcquireNextImageInfoKHX const & rhs )
11980 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060011981 memcpy( this, &rhs, sizeof( AcquireNextImageInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070011982 return *this;
11983 }
Mark Young0f183a82017-02-28 09:58:04 -070011984 AcquireNextImageInfoKHX& setPNext( const void* pNext_ )
11985 {
11986 pNext = pNext_;
11987 return *this;
11988 }
11989
11990 AcquireNextImageInfoKHX& setSwapchain( SwapchainKHR swapchain_ )
11991 {
11992 swapchain = swapchain_;
11993 return *this;
11994 }
11995
11996 AcquireNextImageInfoKHX& setTimeout( uint64_t timeout_ )
11997 {
11998 timeout = timeout_;
11999 return *this;
12000 }
12001
12002 AcquireNextImageInfoKHX& setSemaphore( Semaphore semaphore_ )
12003 {
12004 semaphore = semaphore_;
12005 return *this;
12006 }
12007
12008 AcquireNextImageInfoKHX& setFence( Fence fence_ )
12009 {
12010 fence = fence_;
12011 return *this;
12012 }
12013
12014 AcquireNextImageInfoKHX& setDeviceMask( uint32_t deviceMask_ )
12015 {
12016 deviceMask = deviceMask_;
12017 return *this;
12018 }
12019
12020 operator const VkAcquireNextImageInfoKHX&() const
12021 {
12022 return *reinterpret_cast<const VkAcquireNextImageInfoKHX*>(this);
12023 }
12024
12025 bool operator==( AcquireNextImageInfoKHX const& rhs ) const
12026 {
12027 return ( sType == rhs.sType )
12028 && ( pNext == rhs.pNext )
12029 && ( swapchain == rhs.swapchain )
12030 && ( timeout == rhs.timeout )
12031 && ( semaphore == rhs.semaphore )
12032 && ( fence == rhs.fence )
12033 && ( deviceMask == rhs.deviceMask );
12034 }
12035
12036 bool operator!=( AcquireNextImageInfoKHX const& rhs ) const
12037 {
12038 return !operator==( rhs );
12039 }
12040
12041 private:
12042 StructureType sType;
12043
12044 public:
12045 const void* pNext;
12046 SwapchainKHR swapchain;
12047 uint64_t timeout;
12048 Semaphore semaphore;
12049 Fence fence;
12050 uint32_t deviceMask;
12051 };
12052 static_assert( sizeof( AcquireNextImageInfoKHX ) == sizeof( VkAcquireNextImageInfoKHX ), "struct and wrapper have different size!" );
12053
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012054 struct HdrMetadataEXT
12055 {
12056 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 )
12057 : sType( StructureType::eHdrMetadataEXT )
12058 , pNext( nullptr )
12059 , displayPrimaryRed( displayPrimaryRed_ )
12060 , displayPrimaryGreen( displayPrimaryGreen_ )
12061 , displayPrimaryBlue( displayPrimaryBlue_ )
12062 , whitePoint( whitePoint_ )
12063 , maxLuminance( maxLuminance_ )
12064 , minLuminance( minLuminance_ )
12065 , maxContentLightLevel( maxContentLightLevel_ )
12066 , maxFrameAverageLightLevel( maxFrameAverageLightLevel_ )
12067 {
12068 }
12069
12070 HdrMetadataEXT( VkHdrMetadataEXT const & rhs )
12071 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012072 memcpy( this, &rhs, sizeof( HdrMetadataEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012073 }
12074
12075 HdrMetadataEXT& operator=( VkHdrMetadataEXT const & rhs )
12076 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012077 memcpy( this, &rhs, sizeof( HdrMetadataEXT ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012078 return *this;
12079 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012080 HdrMetadataEXT& setPNext( const void* pNext_ )
12081 {
12082 pNext = pNext_;
12083 return *this;
12084 }
12085
12086 HdrMetadataEXT& setDisplayPrimaryRed( XYColorEXT displayPrimaryRed_ )
12087 {
12088 displayPrimaryRed = displayPrimaryRed_;
12089 return *this;
12090 }
12091
12092 HdrMetadataEXT& setDisplayPrimaryGreen( XYColorEXT displayPrimaryGreen_ )
12093 {
12094 displayPrimaryGreen = displayPrimaryGreen_;
12095 return *this;
12096 }
12097
12098 HdrMetadataEXT& setDisplayPrimaryBlue( XYColorEXT displayPrimaryBlue_ )
12099 {
12100 displayPrimaryBlue = displayPrimaryBlue_;
12101 return *this;
12102 }
12103
12104 HdrMetadataEXT& setWhitePoint( XYColorEXT whitePoint_ )
12105 {
12106 whitePoint = whitePoint_;
12107 return *this;
12108 }
12109
12110 HdrMetadataEXT& setMaxLuminance( float maxLuminance_ )
12111 {
12112 maxLuminance = maxLuminance_;
12113 return *this;
12114 }
12115
12116 HdrMetadataEXT& setMinLuminance( float minLuminance_ )
12117 {
12118 minLuminance = minLuminance_;
12119 return *this;
12120 }
12121
12122 HdrMetadataEXT& setMaxContentLightLevel( float maxContentLightLevel_ )
12123 {
12124 maxContentLightLevel = maxContentLightLevel_;
12125 return *this;
12126 }
12127
12128 HdrMetadataEXT& setMaxFrameAverageLightLevel( float maxFrameAverageLightLevel_ )
12129 {
12130 maxFrameAverageLightLevel = maxFrameAverageLightLevel_;
12131 return *this;
12132 }
12133
12134 operator const VkHdrMetadataEXT&() const
12135 {
12136 return *reinterpret_cast<const VkHdrMetadataEXT*>(this);
12137 }
12138
12139 bool operator==( HdrMetadataEXT const& rhs ) const
12140 {
12141 return ( sType == rhs.sType )
12142 && ( pNext == rhs.pNext )
12143 && ( displayPrimaryRed == rhs.displayPrimaryRed )
12144 && ( displayPrimaryGreen == rhs.displayPrimaryGreen )
12145 && ( displayPrimaryBlue == rhs.displayPrimaryBlue )
12146 && ( whitePoint == rhs.whitePoint )
12147 && ( maxLuminance == rhs.maxLuminance )
12148 && ( minLuminance == rhs.minLuminance )
12149 && ( maxContentLightLevel == rhs.maxContentLightLevel )
12150 && ( maxFrameAverageLightLevel == rhs.maxFrameAverageLightLevel );
12151 }
12152
12153 bool operator!=( HdrMetadataEXT const& rhs ) const
12154 {
12155 return !operator==( rhs );
12156 }
12157
12158 private:
12159 StructureType sType;
12160
12161 public:
12162 const void* pNext;
12163 XYColorEXT displayPrimaryRed;
12164 XYColorEXT displayPrimaryGreen;
12165 XYColorEXT displayPrimaryBlue;
12166 XYColorEXT whitePoint;
12167 float maxLuminance;
12168 float minLuminance;
12169 float maxContentLightLevel;
12170 float maxFrameAverageLightLevel;
12171 };
12172 static_assert( sizeof( HdrMetadataEXT ) == sizeof( VkHdrMetadataEXT ), "struct and wrapper have different size!" );
12173
12174 struct PresentTimesInfoGOOGLE
12175 {
12176 PresentTimesInfoGOOGLE( uint32_t swapchainCount_ = 0, const PresentTimeGOOGLE* pTimes_ = nullptr )
12177 : sType( StructureType::ePresentTimesInfoGOOGLE )
12178 , pNext( nullptr )
12179 , swapchainCount( swapchainCount_ )
12180 , pTimes( pTimes_ )
12181 {
12182 }
12183
12184 PresentTimesInfoGOOGLE( VkPresentTimesInfoGOOGLE const & rhs )
12185 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012186 memcpy( this, &rhs, sizeof( PresentTimesInfoGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012187 }
12188
12189 PresentTimesInfoGOOGLE& operator=( VkPresentTimesInfoGOOGLE const & rhs )
12190 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012191 memcpy( this, &rhs, sizeof( PresentTimesInfoGOOGLE ) );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012192 return *this;
12193 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060012194 PresentTimesInfoGOOGLE& setPNext( const void* pNext_ )
12195 {
12196 pNext = pNext_;
12197 return *this;
12198 }
12199
12200 PresentTimesInfoGOOGLE& setSwapchainCount( uint32_t swapchainCount_ )
12201 {
12202 swapchainCount = swapchainCount_;
12203 return *this;
12204 }
12205
12206 PresentTimesInfoGOOGLE& setPTimes( const PresentTimeGOOGLE* pTimes_ )
12207 {
12208 pTimes = pTimes_;
12209 return *this;
12210 }
12211
12212 operator const VkPresentTimesInfoGOOGLE&() const
12213 {
12214 return *reinterpret_cast<const VkPresentTimesInfoGOOGLE*>(this);
12215 }
12216
12217 bool operator==( PresentTimesInfoGOOGLE const& rhs ) const
12218 {
12219 return ( sType == rhs.sType )
12220 && ( pNext == rhs.pNext )
12221 && ( swapchainCount == rhs.swapchainCount )
12222 && ( pTimes == rhs.pTimes );
12223 }
12224
12225 bool operator!=( PresentTimesInfoGOOGLE const& rhs ) const
12226 {
12227 return !operator==( rhs );
12228 }
12229
12230 private:
12231 StructureType sType;
12232
12233 public:
12234 const void* pNext;
12235 uint32_t swapchainCount;
12236 const PresentTimeGOOGLE* pTimes;
12237 };
12238 static_assert( sizeof( PresentTimesInfoGOOGLE ) == sizeof( VkPresentTimesInfoGOOGLE ), "struct and wrapper have different size!" );
12239
Mark Young0f183a82017-02-28 09:58:04 -070012240#ifdef VK_USE_PLATFORM_IOS_MVK
12241 struct IOSSurfaceCreateInfoMVK
12242 {
12243 IOSSurfaceCreateInfoMVK( IOSSurfaceCreateFlagsMVK flags_ = IOSSurfaceCreateFlagsMVK(), const void* pView_ = nullptr )
12244 : sType( StructureType::eIOSSurfaceCreateInfoMVK )
12245 , pNext( nullptr )
12246 , flags( flags_ )
12247 , pView( pView_ )
12248 {
12249 }
12250
12251 IOSSurfaceCreateInfoMVK( VkIOSSurfaceCreateInfoMVK const & rhs )
12252 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012253 memcpy( this, &rhs, sizeof( IOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070012254 }
12255
12256 IOSSurfaceCreateInfoMVK& operator=( VkIOSSurfaceCreateInfoMVK const & rhs )
12257 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012258 memcpy( this, &rhs, sizeof( IOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070012259 return *this;
12260 }
Mark Young0f183a82017-02-28 09:58:04 -070012261 IOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
12262 {
12263 pNext = pNext_;
12264 return *this;
12265 }
12266
12267 IOSSurfaceCreateInfoMVK& setFlags( IOSSurfaceCreateFlagsMVK flags_ )
12268 {
12269 flags = flags_;
12270 return *this;
12271 }
12272
12273 IOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
12274 {
12275 pView = pView_;
12276 return *this;
12277 }
12278
12279 operator const VkIOSSurfaceCreateInfoMVK&() const
12280 {
12281 return *reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>(this);
12282 }
12283
12284 bool operator==( IOSSurfaceCreateInfoMVK const& rhs ) const
12285 {
12286 return ( sType == rhs.sType )
12287 && ( pNext == rhs.pNext )
12288 && ( flags == rhs.flags )
12289 && ( pView == rhs.pView );
12290 }
12291
12292 bool operator!=( IOSSurfaceCreateInfoMVK const& rhs ) const
12293 {
12294 return !operator==( rhs );
12295 }
12296
12297 private:
12298 StructureType sType;
12299
12300 public:
12301 const void* pNext;
12302 IOSSurfaceCreateFlagsMVK flags;
12303 const void* pView;
12304 };
12305 static_assert( sizeof( IOSSurfaceCreateInfoMVK ) == sizeof( VkIOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
12306#endif /*VK_USE_PLATFORM_IOS_MVK*/
12307
12308#ifdef VK_USE_PLATFORM_MACOS_MVK
12309 struct MacOSSurfaceCreateInfoMVK
12310 {
12311 MacOSSurfaceCreateInfoMVK( MacOSSurfaceCreateFlagsMVK flags_ = MacOSSurfaceCreateFlagsMVK(), const void* pView_ = nullptr )
12312 : sType( StructureType::eMacOSSurfaceCreateInfoMVK )
12313 , pNext( nullptr )
12314 , flags( flags_ )
12315 , pView( pView_ )
12316 {
12317 }
12318
12319 MacOSSurfaceCreateInfoMVK( VkMacOSSurfaceCreateInfoMVK const & rhs )
12320 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012321 memcpy( this, &rhs, sizeof( MacOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070012322 }
12323
12324 MacOSSurfaceCreateInfoMVK& operator=( VkMacOSSurfaceCreateInfoMVK const & rhs )
12325 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012326 memcpy( this, &rhs, sizeof( MacOSSurfaceCreateInfoMVK ) );
Mark Young0f183a82017-02-28 09:58:04 -070012327 return *this;
12328 }
Mark Young0f183a82017-02-28 09:58:04 -070012329 MacOSSurfaceCreateInfoMVK& setPNext( const void* pNext_ )
12330 {
12331 pNext = pNext_;
12332 return *this;
12333 }
12334
12335 MacOSSurfaceCreateInfoMVK& setFlags( MacOSSurfaceCreateFlagsMVK flags_ )
12336 {
12337 flags = flags_;
12338 return *this;
12339 }
12340
12341 MacOSSurfaceCreateInfoMVK& setPView( const void* pView_ )
12342 {
12343 pView = pView_;
12344 return *this;
12345 }
12346
12347 operator const VkMacOSSurfaceCreateInfoMVK&() const
12348 {
12349 return *reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>(this);
12350 }
12351
12352 bool operator==( MacOSSurfaceCreateInfoMVK const& rhs ) const
12353 {
12354 return ( sType == rhs.sType )
12355 && ( pNext == rhs.pNext )
12356 && ( flags == rhs.flags )
12357 && ( pView == rhs.pView );
12358 }
12359
12360 bool operator!=( MacOSSurfaceCreateInfoMVK const& rhs ) const
12361 {
12362 return !operator==( rhs );
12363 }
12364
12365 private:
12366 StructureType sType;
12367
12368 public:
12369 const void* pNext;
12370 MacOSSurfaceCreateFlagsMVK flags;
12371 const void* pView;
12372 };
12373 static_assert( sizeof( MacOSSurfaceCreateInfoMVK ) == sizeof( VkMacOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" );
12374#endif /*VK_USE_PLATFORM_MACOS_MVK*/
12375
12376 struct PipelineViewportWScalingStateCreateInfoNV
12377 {
12378 PipelineViewportWScalingStateCreateInfoNV( Bool32 viewportWScalingEnable_ = 0, uint32_t viewportCount_ = 0, const ViewportWScalingNV* pViewportWScalings_ = nullptr )
12379 : sType( StructureType::ePipelineViewportWScalingStateCreateInfoNV )
12380 , pNext( nullptr )
12381 , viewportWScalingEnable( viewportWScalingEnable_ )
12382 , viewportCount( viewportCount_ )
12383 , pViewportWScalings( pViewportWScalings_ )
12384 {
12385 }
12386
12387 PipelineViewportWScalingStateCreateInfoNV( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
12388 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012389 memcpy( this, &rhs, sizeof( PipelineViewportWScalingStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070012390 }
12391
12392 PipelineViewportWScalingStateCreateInfoNV& operator=( VkPipelineViewportWScalingStateCreateInfoNV const & rhs )
12393 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012394 memcpy( this, &rhs, sizeof( PipelineViewportWScalingStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070012395 return *this;
12396 }
Mark Young0f183a82017-02-28 09:58:04 -070012397 PipelineViewportWScalingStateCreateInfoNV& setPNext( const void* pNext_ )
12398 {
12399 pNext = pNext_;
12400 return *this;
12401 }
12402
12403 PipelineViewportWScalingStateCreateInfoNV& setViewportWScalingEnable( Bool32 viewportWScalingEnable_ )
12404 {
12405 viewportWScalingEnable = viewportWScalingEnable_;
12406 return *this;
12407 }
12408
12409 PipelineViewportWScalingStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
12410 {
12411 viewportCount = viewportCount_;
12412 return *this;
12413 }
12414
12415 PipelineViewportWScalingStateCreateInfoNV& setPViewportWScalings( const ViewportWScalingNV* pViewportWScalings_ )
12416 {
12417 pViewportWScalings = pViewportWScalings_;
12418 return *this;
12419 }
12420
12421 operator const VkPipelineViewportWScalingStateCreateInfoNV&() const
12422 {
12423 return *reinterpret_cast<const VkPipelineViewportWScalingStateCreateInfoNV*>(this);
12424 }
12425
12426 bool operator==( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
12427 {
12428 return ( sType == rhs.sType )
12429 && ( pNext == rhs.pNext )
12430 && ( viewportWScalingEnable == rhs.viewportWScalingEnable )
12431 && ( viewportCount == rhs.viewportCount )
12432 && ( pViewportWScalings == rhs.pViewportWScalings );
12433 }
12434
12435 bool operator!=( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const
12436 {
12437 return !operator==( rhs );
12438 }
12439
12440 private:
12441 StructureType sType;
12442
12443 public:
12444 const void* pNext;
12445 Bool32 viewportWScalingEnable;
12446 uint32_t viewportCount;
12447 const ViewportWScalingNV* pViewportWScalings;
12448 };
12449 static_assert( sizeof( PipelineViewportWScalingStateCreateInfoNV ) == sizeof( VkPipelineViewportWScalingStateCreateInfoNV ), "struct and wrapper have different size!" );
12450
12451 struct PhysicalDeviceDiscardRectanglePropertiesEXT
12452 {
12453 PhysicalDeviceDiscardRectanglePropertiesEXT( uint32_t maxDiscardRectangles_ = 0 )
12454 : sType( StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT )
12455 , pNext( nullptr )
12456 , maxDiscardRectangles( maxDiscardRectangles_ )
12457 {
12458 }
12459
12460 PhysicalDeviceDiscardRectanglePropertiesEXT( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
12461 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012462 memcpy( this, &rhs, sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070012463 }
12464
12465 PhysicalDeviceDiscardRectanglePropertiesEXT& operator=( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs )
12466 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012467 memcpy( this, &rhs, sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070012468 return *this;
12469 }
Mark Lobodzinski3289d762017-04-03 08:22:04 -060012470 PhysicalDeviceDiscardRectanglePropertiesEXT& setPNext( void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070012471 {
12472 pNext = pNext_;
12473 return *this;
12474 }
12475
12476 PhysicalDeviceDiscardRectanglePropertiesEXT& setMaxDiscardRectangles( uint32_t maxDiscardRectangles_ )
12477 {
12478 maxDiscardRectangles = maxDiscardRectangles_;
12479 return *this;
12480 }
12481
12482 operator const VkPhysicalDeviceDiscardRectanglePropertiesEXT&() const
12483 {
12484 return *reinterpret_cast<const VkPhysicalDeviceDiscardRectanglePropertiesEXT*>(this);
12485 }
12486
12487 bool operator==( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
12488 {
12489 return ( sType == rhs.sType )
12490 && ( pNext == rhs.pNext )
12491 && ( maxDiscardRectangles == rhs.maxDiscardRectangles );
12492 }
12493
12494 bool operator!=( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const
12495 {
12496 return !operator==( rhs );
12497 }
12498
12499 private:
12500 StructureType sType;
12501
12502 public:
Mark Lobodzinski3289d762017-04-03 08:22:04 -060012503 void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070012504 uint32_t maxDiscardRectangles;
12505 };
12506 static_assert( sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) == sizeof( VkPhysicalDeviceDiscardRectanglePropertiesEXT ), "struct and wrapper have different size!" );
12507
12508 struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX
12509 {
12510 operator const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX&() const
12511 {
12512 return *reinterpret_cast<const VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX*>(this);
12513 }
12514
12515 bool operator==( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
12516 {
12517 return ( sType == rhs.sType )
12518 && ( pNext == rhs.pNext )
12519 && ( perViewPositionAllComponents == rhs.perViewPositionAllComponents );
12520 }
12521
12522 bool operator!=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const
12523 {
12524 return !operator==( rhs );
12525 }
12526
12527 private:
12528 StructureType sType;
12529
12530 public:
12531 void* pNext;
12532 Bool32 perViewPositionAllComponents;
12533 };
12534 static_assert( sizeof( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ) == sizeof( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ), "struct and wrapper have different size!" );
12535
Mark Lobodzinski54385432017-05-15 10:27:52 -060012536 struct PhysicalDeviceSurfaceInfo2KHR
12537 {
12538 PhysicalDeviceSurfaceInfo2KHR( SurfaceKHR surface_ = SurfaceKHR() )
12539 : sType( StructureType::ePhysicalDeviceSurfaceInfo2KHR )
12540 , pNext( nullptr )
12541 , surface( surface_ )
12542 {
12543 }
12544
12545 PhysicalDeviceSurfaceInfo2KHR( VkPhysicalDeviceSurfaceInfo2KHR const & rhs )
12546 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012547 memcpy( this, &rhs, sizeof( PhysicalDeviceSurfaceInfo2KHR ) );
Mark Lobodzinski54385432017-05-15 10:27:52 -060012548 }
12549
12550 PhysicalDeviceSurfaceInfo2KHR& operator=( VkPhysicalDeviceSurfaceInfo2KHR const & rhs )
12551 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012552 memcpy( this, &rhs, sizeof( PhysicalDeviceSurfaceInfo2KHR ) );
Mark Lobodzinski54385432017-05-15 10:27:52 -060012553 return *this;
12554 }
Mark Lobodzinski54385432017-05-15 10:27:52 -060012555 PhysicalDeviceSurfaceInfo2KHR& setPNext( const void* pNext_ )
12556 {
12557 pNext = pNext_;
12558 return *this;
12559 }
12560
12561 PhysicalDeviceSurfaceInfo2KHR& setSurface( SurfaceKHR surface_ )
12562 {
12563 surface = surface_;
12564 return *this;
12565 }
12566
12567 operator const VkPhysicalDeviceSurfaceInfo2KHR&() const
12568 {
12569 return *reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>(this);
12570 }
12571
12572 bool operator==( PhysicalDeviceSurfaceInfo2KHR const& rhs ) const
12573 {
12574 return ( sType == rhs.sType )
12575 && ( pNext == rhs.pNext )
12576 && ( surface == rhs.surface );
12577 }
12578
12579 bool operator!=( PhysicalDeviceSurfaceInfo2KHR const& rhs ) const
12580 {
12581 return !operator==( rhs );
12582 }
12583
12584 private:
12585 StructureType sType;
12586
12587 public:
12588 const void* pNext;
12589 SurfaceKHR surface;
12590 };
12591 static_assert( sizeof( PhysicalDeviceSurfaceInfo2KHR ) == sizeof( VkPhysicalDeviceSurfaceInfo2KHR ), "struct and wrapper have different size!" );
12592
Mark Youngabc2d6e2017-07-07 07:59:56 -060012593 struct PhysicalDevice16BitStorageFeaturesKHR
12594 {
12595 PhysicalDevice16BitStorageFeaturesKHR( Bool32 storageBuffer16BitAccess_ = 0, Bool32 uniformAndStorageBuffer16BitAccess_ = 0, Bool32 storagePushConstant16_ = 0, Bool32 storageInputOutput16_ = 0 )
12596 : sType( StructureType::ePhysicalDevice16BitStorageFeaturesKHR )
12597 , pNext( nullptr )
12598 , storageBuffer16BitAccess( storageBuffer16BitAccess_ )
12599 , uniformAndStorageBuffer16BitAccess( uniformAndStorageBuffer16BitAccess_ )
12600 , storagePushConstant16( storagePushConstant16_ )
12601 , storageInputOutput16( storageInputOutput16_ )
12602 {
12603 }
12604
12605 PhysicalDevice16BitStorageFeaturesKHR( VkPhysicalDevice16BitStorageFeaturesKHR const & rhs )
12606 {
12607 memcpy( this, &rhs, sizeof( PhysicalDevice16BitStorageFeaturesKHR ) );
12608 }
12609
12610 PhysicalDevice16BitStorageFeaturesKHR& operator=( VkPhysicalDevice16BitStorageFeaturesKHR const & rhs )
12611 {
12612 memcpy( this, &rhs, sizeof( PhysicalDevice16BitStorageFeaturesKHR ) );
12613 return *this;
12614 }
12615 PhysicalDevice16BitStorageFeaturesKHR& setPNext( void* pNext_ )
12616 {
12617 pNext = pNext_;
12618 return *this;
12619 }
12620
12621 PhysicalDevice16BitStorageFeaturesKHR& setStorageBuffer16BitAccess( Bool32 storageBuffer16BitAccess_ )
12622 {
12623 storageBuffer16BitAccess = storageBuffer16BitAccess_;
12624 return *this;
12625 }
12626
12627 PhysicalDevice16BitStorageFeaturesKHR& setUniformAndStorageBuffer16BitAccess( Bool32 uniformAndStorageBuffer16BitAccess_ )
12628 {
12629 uniformAndStorageBuffer16BitAccess = uniformAndStorageBuffer16BitAccess_;
12630 return *this;
12631 }
12632
12633 PhysicalDevice16BitStorageFeaturesKHR& setStoragePushConstant16( Bool32 storagePushConstant16_ )
12634 {
12635 storagePushConstant16 = storagePushConstant16_;
12636 return *this;
12637 }
12638
12639 PhysicalDevice16BitStorageFeaturesKHR& setStorageInputOutput16( Bool32 storageInputOutput16_ )
12640 {
12641 storageInputOutput16 = storageInputOutput16_;
12642 return *this;
12643 }
12644
12645 operator const VkPhysicalDevice16BitStorageFeaturesKHR&() const
12646 {
12647 return *reinterpret_cast<const VkPhysicalDevice16BitStorageFeaturesKHR*>(this);
12648 }
12649
12650 bool operator==( PhysicalDevice16BitStorageFeaturesKHR const& rhs ) const
12651 {
12652 return ( sType == rhs.sType )
12653 && ( pNext == rhs.pNext )
12654 && ( storageBuffer16BitAccess == rhs.storageBuffer16BitAccess )
12655 && ( uniformAndStorageBuffer16BitAccess == rhs.uniformAndStorageBuffer16BitAccess )
12656 && ( storagePushConstant16 == rhs.storagePushConstant16 )
12657 && ( storageInputOutput16 == rhs.storageInputOutput16 );
12658 }
12659
12660 bool operator!=( PhysicalDevice16BitStorageFeaturesKHR const& rhs ) const
12661 {
12662 return !operator==( rhs );
12663 }
12664
12665 private:
12666 StructureType sType;
12667
12668 public:
12669 void* pNext;
12670 Bool32 storageBuffer16BitAccess;
12671 Bool32 uniformAndStorageBuffer16BitAccess;
12672 Bool32 storagePushConstant16;
12673 Bool32 storageInputOutput16;
12674 };
12675 static_assert( sizeof( PhysicalDevice16BitStorageFeaturesKHR ) == sizeof( VkPhysicalDevice16BitStorageFeaturesKHR ), "struct and wrapper have different size!" );
12676
12677 struct BufferMemoryRequirementsInfo2KHR
12678 {
12679 BufferMemoryRequirementsInfo2KHR( Buffer buffer_ = Buffer() )
12680 : sType( StructureType::eBufferMemoryRequirementsInfo2KHR )
12681 , pNext( nullptr )
12682 , buffer( buffer_ )
12683 {
12684 }
12685
12686 BufferMemoryRequirementsInfo2KHR( VkBufferMemoryRequirementsInfo2KHR const & rhs )
12687 {
12688 memcpy( this, &rhs, sizeof( BufferMemoryRequirementsInfo2KHR ) );
12689 }
12690
12691 BufferMemoryRequirementsInfo2KHR& operator=( VkBufferMemoryRequirementsInfo2KHR const & rhs )
12692 {
12693 memcpy( this, &rhs, sizeof( BufferMemoryRequirementsInfo2KHR ) );
12694 return *this;
12695 }
12696 BufferMemoryRequirementsInfo2KHR& setPNext( const void* pNext_ )
12697 {
12698 pNext = pNext_;
12699 return *this;
12700 }
12701
12702 BufferMemoryRequirementsInfo2KHR& setBuffer( Buffer buffer_ )
12703 {
12704 buffer = buffer_;
12705 return *this;
12706 }
12707
12708 operator const VkBufferMemoryRequirementsInfo2KHR&() const
12709 {
12710 return *reinterpret_cast<const VkBufferMemoryRequirementsInfo2KHR*>(this);
12711 }
12712
12713 bool operator==( BufferMemoryRequirementsInfo2KHR const& rhs ) const
12714 {
12715 return ( sType == rhs.sType )
12716 && ( pNext == rhs.pNext )
12717 && ( buffer == rhs.buffer );
12718 }
12719
12720 bool operator!=( BufferMemoryRequirementsInfo2KHR const& rhs ) const
12721 {
12722 return !operator==( rhs );
12723 }
12724
12725 private:
12726 StructureType sType;
12727
12728 public:
12729 const void* pNext;
12730 Buffer buffer;
12731 };
12732 static_assert( sizeof( BufferMemoryRequirementsInfo2KHR ) == sizeof( VkBufferMemoryRequirementsInfo2KHR ), "struct and wrapper have different size!" );
12733
12734 struct ImageMemoryRequirementsInfo2KHR
12735 {
12736 ImageMemoryRequirementsInfo2KHR( Image image_ = Image() )
12737 : sType( StructureType::eImageMemoryRequirementsInfo2KHR )
12738 , pNext( nullptr )
12739 , image( image_ )
12740 {
12741 }
12742
12743 ImageMemoryRequirementsInfo2KHR( VkImageMemoryRequirementsInfo2KHR const & rhs )
12744 {
12745 memcpy( this, &rhs, sizeof( ImageMemoryRequirementsInfo2KHR ) );
12746 }
12747
12748 ImageMemoryRequirementsInfo2KHR& operator=( VkImageMemoryRequirementsInfo2KHR const & rhs )
12749 {
12750 memcpy( this, &rhs, sizeof( ImageMemoryRequirementsInfo2KHR ) );
12751 return *this;
12752 }
12753 ImageMemoryRequirementsInfo2KHR& setPNext( const void* pNext_ )
12754 {
12755 pNext = pNext_;
12756 return *this;
12757 }
12758
12759 ImageMemoryRequirementsInfo2KHR& setImage( Image image_ )
12760 {
12761 image = image_;
12762 return *this;
12763 }
12764
12765 operator const VkImageMemoryRequirementsInfo2KHR&() const
12766 {
12767 return *reinterpret_cast<const VkImageMemoryRequirementsInfo2KHR*>(this);
12768 }
12769
12770 bool operator==( ImageMemoryRequirementsInfo2KHR const& rhs ) const
12771 {
12772 return ( sType == rhs.sType )
12773 && ( pNext == rhs.pNext )
12774 && ( image == rhs.image );
12775 }
12776
12777 bool operator!=( ImageMemoryRequirementsInfo2KHR const& rhs ) const
12778 {
12779 return !operator==( rhs );
12780 }
12781
12782 private:
12783 StructureType sType;
12784
12785 public:
12786 const void* pNext;
12787 Image image;
12788 };
12789 static_assert( sizeof( ImageMemoryRequirementsInfo2KHR ) == sizeof( VkImageMemoryRequirementsInfo2KHR ), "struct and wrapper have different size!" );
12790
12791 struct ImageSparseMemoryRequirementsInfo2KHR
12792 {
12793 ImageSparseMemoryRequirementsInfo2KHR( Image image_ = Image() )
12794 : sType( StructureType::eImageSparseMemoryRequirementsInfo2KHR )
12795 , pNext( nullptr )
12796 , image( image_ )
12797 {
12798 }
12799
12800 ImageSparseMemoryRequirementsInfo2KHR( VkImageSparseMemoryRequirementsInfo2KHR const & rhs )
12801 {
12802 memcpy( this, &rhs, sizeof( ImageSparseMemoryRequirementsInfo2KHR ) );
12803 }
12804
12805 ImageSparseMemoryRequirementsInfo2KHR& operator=( VkImageSparseMemoryRequirementsInfo2KHR const & rhs )
12806 {
12807 memcpy( this, &rhs, sizeof( ImageSparseMemoryRequirementsInfo2KHR ) );
12808 return *this;
12809 }
12810 ImageSparseMemoryRequirementsInfo2KHR& setPNext( const void* pNext_ )
12811 {
12812 pNext = pNext_;
12813 return *this;
12814 }
12815
12816 ImageSparseMemoryRequirementsInfo2KHR& setImage( Image image_ )
12817 {
12818 image = image_;
12819 return *this;
12820 }
12821
12822 operator const VkImageSparseMemoryRequirementsInfo2KHR&() const
12823 {
12824 return *reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2KHR*>(this);
12825 }
12826
12827 bool operator==( ImageSparseMemoryRequirementsInfo2KHR const& rhs ) const
12828 {
12829 return ( sType == rhs.sType )
12830 && ( pNext == rhs.pNext )
12831 && ( image == rhs.image );
12832 }
12833
12834 bool operator!=( ImageSparseMemoryRequirementsInfo2KHR const& rhs ) const
12835 {
12836 return !operator==( rhs );
12837 }
12838
12839 private:
12840 StructureType sType;
12841
12842 public:
12843 const void* pNext;
12844 Image image;
12845 };
12846 static_assert( sizeof( ImageSparseMemoryRequirementsInfo2KHR ) == sizeof( VkImageSparseMemoryRequirementsInfo2KHR ), "struct and wrapper have different size!" );
12847
12848 struct MemoryRequirements2KHR
12849 {
12850 operator const VkMemoryRequirements2KHR&() const
12851 {
12852 return *reinterpret_cast<const VkMemoryRequirements2KHR*>(this);
12853 }
12854
12855 bool operator==( MemoryRequirements2KHR const& rhs ) const
12856 {
12857 return ( sType == rhs.sType )
12858 && ( pNext == rhs.pNext )
12859 && ( memoryRequirements == rhs.memoryRequirements );
12860 }
12861
12862 bool operator!=( MemoryRequirements2KHR const& rhs ) const
12863 {
12864 return !operator==( rhs );
12865 }
12866
12867 private:
12868 StructureType sType;
12869
12870 public:
12871 void* pNext;
12872 MemoryRequirements memoryRequirements;
12873 };
12874 static_assert( sizeof( MemoryRequirements2KHR ) == sizeof( VkMemoryRequirements2KHR ), "struct and wrapper have different size!" );
12875
12876 struct MemoryDedicatedRequirementsKHR
12877 {
12878 operator const VkMemoryDedicatedRequirementsKHR&() const
12879 {
12880 return *reinterpret_cast<const VkMemoryDedicatedRequirementsKHR*>(this);
12881 }
12882
12883 bool operator==( MemoryDedicatedRequirementsKHR const& rhs ) const
12884 {
12885 return ( sType == rhs.sType )
12886 && ( pNext == rhs.pNext )
12887 && ( prefersDedicatedAllocation == rhs.prefersDedicatedAllocation )
12888 && ( requiresDedicatedAllocation == rhs.requiresDedicatedAllocation );
12889 }
12890
12891 bool operator!=( MemoryDedicatedRequirementsKHR const& rhs ) const
12892 {
12893 return !operator==( rhs );
12894 }
12895
12896 private:
12897 StructureType sType;
12898
12899 public:
12900 void* pNext;
12901 Bool32 prefersDedicatedAllocation;
12902 Bool32 requiresDedicatedAllocation;
12903 };
12904 static_assert( sizeof( MemoryDedicatedRequirementsKHR ) == sizeof( VkMemoryDedicatedRequirementsKHR ), "struct and wrapper have different size!" );
12905
12906 struct MemoryDedicatedAllocateInfoKHR
12907 {
12908 MemoryDedicatedAllocateInfoKHR( Image image_ = Image(), Buffer buffer_ = Buffer() )
12909 : sType( StructureType::eMemoryDedicatedAllocateInfoKHR )
12910 , pNext( nullptr )
12911 , image( image_ )
12912 , buffer( buffer_ )
12913 {
12914 }
12915
12916 MemoryDedicatedAllocateInfoKHR( VkMemoryDedicatedAllocateInfoKHR const & rhs )
12917 {
12918 memcpy( this, &rhs, sizeof( MemoryDedicatedAllocateInfoKHR ) );
12919 }
12920
12921 MemoryDedicatedAllocateInfoKHR& operator=( VkMemoryDedicatedAllocateInfoKHR const & rhs )
12922 {
12923 memcpy( this, &rhs, sizeof( MemoryDedicatedAllocateInfoKHR ) );
12924 return *this;
12925 }
12926 MemoryDedicatedAllocateInfoKHR& setPNext( const void* pNext_ )
12927 {
12928 pNext = pNext_;
12929 return *this;
12930 }
12931
12932 MemoryDedicatedAllocateInfoKHR& setImage( Image image_ )
12933 {
12934 image = image_;
12935 return *this;
12936 }
12937
12938 MemoryDedicatedAllocateInfoKHR& setBuffer( Buffer buffer_ )
12939 {
12940 buffer = buffer_;
12941 return *this;
12942 }
12943
12944 operator const VkMemoryDedicatedAllocateInfoKHR&() const
12945 {
12946 return *reinterpret_cast<const VkMemoryDedicatedAllocateInfoKHR*>(this);
12947 }
12948
12949 bool operator==( MemoryDedicatedAllocateInfoKHR const& rhs ) const
12950 {
12951 return ( sType == rhs.sType )
12952 && ( pNext == rhs.pNext )
12953 && ( image == rhs.image )
12954 && ( buffer == rhs.buffer );
12955 }
12956
12957 bool operator!=( MemoryDedicatedAllocateInfoKHR const& rhs ) const
12958 {
12959 return !operator==( rhs );
12960 }
12961
12962 private:
12963 StructureType sType;
12964
12965 public:
12966 const void* pNext;
12967 Image image;
12968 Buffer buffer;
12969 };
12970 static_assert( sizeof( MemoryDedicatedAllocateInfoKHR ) == sizeof( VkMemoryDedicatedAllocateInfoKHR ), "struct and wrapper have different size!" );
12971
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060012972 struct TextureLODGatherFormatPropertiesAMD
12973 {
12974 operator const VkTextureLODGatherFormatPropertiesAMD&() const
12975 {
12976 return *reinterpret_cast<const VkTextureLODGatherFormatPropertiesAMD*>(this);
12977 }
12978
12979 bool operator==( TextureLODGatherFormatPropertiesAMD const& rhs ) const
12980 {
12981 return ( sType == rhs.sType )
12982 && ( pNext == rhs.pNext )
12983 && ( supportsTextureGatherLODBiasAMD == rhs.supportsTextureGatherLODBiasAMD );
12984 }
12985
12986 bool operator!=( TextureLODGatherFormatPropertiesAMD const& rhs ) const
12987 {
12988 return !operator==( rhs );
12989 }
12990
12991 private:
12992 StructureType sType;
12993
12994 public:
12995 void* pNext;
12996 Bool32 supportsTextureGatherLODBiasAMD;
12997 };
12998 static_assert( sizeof( TextureLODGatherFormatPropertiesAMD ) == sizeof( VkTextureLODGatherFormatPropertiesAMD ), "struct and wrapper have different size!" );
12999
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060013000 struct PipelineCoverageToColorStateCreateInfoNV
13001 {
13002 PipelineCoverageToColorStateCreateInfoNV( PipelineCoverageToColorStateCreateFlagsNV flags_ = PipelineCoverageToColorStateCreateFlagsNV(), Bool32 coverageToColorEnable_ = 0, uint32_t coverageToColorLocation_ = 0 )
13003 : sType( StructureType::ePipelineCoverageToColorStateCreateInfoNV )
13004 , pNext( nullptr )
13005 , flags( flags_ )
13006 , coverageToColorEnable( coverageToColorEnable_ )
13007 , coverageToColorLocation( coverageToColorLocation_ )
13008 {
13009 }
13010
13011 PipelineCoverageToColorStateCreateInfoNV( VkPipelineCoverageToColorStateCreateInfoNV const & rhs )
13012 {
13013 memcpy( this, &rhs, sizeof( PipelineCoverageToColorStateCreateInfoNV ) );
13014 }
13015
13016 PipelineCoverageToColorStateCreateInfoNV& operator=( VkPipelineCoverageToColorStateCreateInfoNV const & rhs )
13017 {
13018 memcpy( this, &rhs, sizeof( PipelineCoverageToColorStateCreateInfoNV ) );
13019 return *this;
13020 }
13021 PipelineCoverageToColorStateCreateInfoNV& setPNext( const void* pNext_ )
13022 {
13023 pNext = pNext_;
13024 return *this;
13025 }
13026
13027 PipelineCoverageToColorStateCreateInfoNV& setFlags( PipelineCoverageToColorStateCreateFlagsNV flags_ )
13028 {
13029 flags = flags_;
13030 return *this;
13031 }
13032
13033 PipelineCoverageToColorStateCreateInfoNV& setCoverageToColorEnable( Bool32 coverageToColorEnable_ )
13034 {
13035 coverageToColorEnable = coverageToColorEnable_;
13036 return *this;
13037 }
13038
13039 PipelineCoverageToColorStateCreateInfoNV& setCoverageToColorLocation( uint32_t coverageToColorLocation_ )
13040 {
13041 coverageToColorLocation = coverageToColorLocation_;
13042 return *this;
13043 }
13044
13045 operator const VkPipelineCoverageToColorStateCreateInfoNV&() const
13046 {
13047 return *reinterpret_cast<const VkPipelineCoverageToColorStateCreateInfoNV*>(this);
13048 }
13049
13050 bool operator==( PipelineCoverageToColorStateCreateInfoNV const& rhs ) const
13051 {
13052 return ( sType == rhs.sType )
13053 && ( pNext == rhs.pNext )
13054 && ( flags == rhs.flags )
13055 && ( coverageToColorEnable == rhs.coverageToColorEnable )
13056 && ( coverageToColorLocation == rhs.coverageToColorLocation );
13057 }
13058
13059 bool operator!=( PipelineCoverageToColorStateCreateInfoNV const& rhs ) const
13060 {
13061 return !operator==( rhs );
13062 }
13063
13064 private:
13065 StructureType sType;
13066
13067 public:
13068 const void* pNext;
13069 PipelineCoverageToColorStateCreateFlagsNV flags;
13070 Bool32 coverageToColorEnable;
13071 uint32_t coverageToColorLocation;
13072 };
13073 static_assert( sizeof( PipelineCoverageToColorStateCreateInfoNV ) == sizeof( VkPipelineCoverageToColorStateCreateInfoNV ), "struct and wrapper have different size!" );
13074
13075 struct PhysicalDeviceSamplerFilterMinmaxPropertiesEXT
13076 {
13077 operator const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT&() const
13078 {
13079 return *reinterpret_cast<const VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT*>(this);
13080 }
13081
13082 bool operator==( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT const& rhs ) const
13083 {
13084 return ( sType == rhs.sType )
13085 && ( pNext == rhs.pNext )
13086 && ( filterMinmaxSingleComponentFormats == rhs.filterMinmaxSingleComponentFormats )
13087 && ( filterMinmaxImageComponentMapping == rhs.filterMinmaxImageComponentMapping );
13088 }
13089
13090 bool operator!=( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT const& rhs ) const
13091 {
13092 return !operator==( rhs );
13093 }
13094
13095 private:
13096 StructureType sType;
13097
13098 public:
13099 void* pNext;
13100 Bool32 filterMinmaxSingleComponentFormats;
13101 Bool32 filterMinmaxImageComponentMapping;
13102 };
13103 static_assert( sizeof( PhysicalDeviceSamplerFilterMinmaxPropertiesEXT ) == sizeof( VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT ), "struct and wrapper have different size!" );
13104
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060013105 struct MultisamplePropertiesEXT
13106 {
13107 operator const VkMultisamplePropertiesEXT&() const
13108 {
13109 return *reinterpret_cast<const VkMultisamplePropertiesEXT*>(this);
13110 }
13111
13112 bool operator==( MultisamplePropertiesEXT const& rhs ) const
13113 {
13114 return ( sType == rhs.sType )
13115 && ( pNext == rhs.pNext )
13116 && ( maxSampleLocationGridSize == rhs.maxSampleLocationGridSize );
13117 }
13118
13119 bool operator!=( MultisamplePropertiesEXT const& rhs ) const
13120 {
13121 return !operator==( rhs );
13122 }
13123
13124 private:
13125 StructureType sType;
13126
13127 public:
13128 void* pNext;
13129 Extent2D maxSampleLocationGridSize;
13130 };
13131 static_assert( sizeof( MultisamplePropertiesEXT ) == sizeof( VkMultisamplePropertiesEXT ), "struct and wrapper have different size!" );
13132
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060013133 struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT
13134 {
13135 PhysicalDeviceBlendOperationAdvancedFeaturesEXT( Bool32 advancedBlendCoherentOperations_ = 0 )
13136 : sType( StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT )
13137 , pNext( nullptr )
13138 , advancedBlendCoherentOperations( advancedBlendCoherentOperations_ )
13139 {
13140 }
13141
13142 PhysicalDeviceBlendOperationAdvancedFeaturesEXT( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs )
13143 {
13144 memcpy( this, &rhs, sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) );
13145 }
13146
13147 PhysicalDeviceBlendOperationAdvancedFeaturesEXT& operator=( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs )
13148 {
13149 memcpy( this, &rhs, sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) );
13150 return *this;
13151 }
13152 PhysicalDeviceBlendOperationAdvancedFeaturesEXT& setPNext( void* pNext_ )
13153 {
13154 pNext = pNext_;
13155 return *this;
13156 }
13157
13158 PhysicalDeviceBlendOperationAdvancedFeaturesEXT& setAdvancedBlendCoherentOperations( Bool32 advancedBlendCoherentOperations_ )
13159 {
13160 advancedBlendCoherentOperations = advancedBlendCoherentOperations_;
13161 return *this;
13162 }
13163
13164 operator const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT&() const
13165 {
13166 return *reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT*>(this);
13167 }
13168
13169 bool operator==( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const& rhs ) const
13170 {
13171 return ( sType == rhs.sType )
13172 && ( pNext == rhs.pNext )
13173 && ( advancedBlendCoherentOperations == rhs.advancedBlendCoherentOperations );
13174 }
13175
13176 bool operator!=( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const& rhs ) const
13177 {
13178 return !operator==( rhs );
13179 }
13180
13181 private:
13182 StructureType sType;
13183
13184 public:
13185 void* pNext;
13186 Bool32 advancedBlendCoherentOperations;
13187 };
13188 static_assert( sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) == sizeof( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT ), "struct and wrapper have different size!" );
13189
13190 struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT
13191 {
13192 operator const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT&() const
13193 {
13194 return *reinterpret_cast<const VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT*>(this);
13195 }
13196
13197 bool operator==( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const& rhs ) const
13198 {
13199 return ( sType == rhs.sType )
13200 && ( pNext == rhs.pNext )
13201 && ( advancedBlendMaxColorAttachments == rhs.advancedBlendMaxColorAttachments )
13202 && ( advancedBlendIndependentBlend == rhs.advancedBlendIndependentBlend )
13203 && ( advancedBlendNonPremultipliedSrcColor == rhs.advancedBlendNonPremultipliedSrcColor )
13204 && ( advancedBlendNonPremultipliedDstColor == rhs.advancedBlendNonPremultipliedDstColor )
13205 && ( advancedBlendCorrelatedOverlap == rhs.advancedBlendCorrelatedOverlap )
13206 && ( advancedBlendAllOperations == rhs.advancedBlendAllOperations );
13207 }
13208
13209 bool operator!=( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const& rhs ) const
13210 {
13211 return !operator==( rhs );
13212 }
13213
13214 private:
13215 StructureType sType;
13216
13217 public:
13218 void* pNext;
13219 uint32_t advancedBlendMaxColorAttachments;
13220 Bool32 advancedBlendIndependentBlend;
13221 Bool32 advancedBlendNonPremultipliedSrcColor;
13222 Bool32 advancedBlendNonPremultipliedDstColor;
13223 Bool32 advancedBlendCorrelatedOverlap;
13224 Bool32 advancedBlendAllOperations;
13225 };
13226 static_assert( sizeof( PhysicalDeviceBlendOperationAdvancedPropertiesEXT ) == sizeof( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT ), "struct and wrapper have different size!" );
13227
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060013228 struct ValidationCacheCreateInfoEXT
13229 {
13230 ValidationCacheCreateInfoEXT( ValidationCacheCreateFlagsEXT flags_ = ValidationCacheCreateFlagsEXT(), size_t initialDataSize_ = 0, const void* pInitialData_ = nullptr )
13231 : sType( StructureType::eValidationCacheCreateInfoEXT )
13232 , pNext( nullptr )
13233 , flags( flags_ )
13234 , initialDataSize( initialDataSize_ )
13235 , pInitialData( pInitialData_ )
13236 {
13237 }
13238
13239 ValidationCacheCreateInfoEXT( VkValidationCacheCreateInfoEXT const & rhs )
13240 {
13241 memcpy( this, &rhs, sizeof( ValidationCacheCreateInfoEXT ) );
13242 }
13243
13244 ValidationCacheCreateInfoEXT& operator=( VkValidationCacheCreateInfoEXT const & rhs )
13245 {
13246 memcpy( this, &rhs, sizeof( ValidationCacheCreateInfoEXT ) );
13247 return *this;
13248 }
13249 ValidationCacheCreateInfoEXT& setPNext( const void* pNext_ )
13250 {
13251 pNext = pNext_;
13252 return *this;
13253 }
13254
13255 ValidationCacheCreateInfoEXT& setFlags( ValidationCacheCreateFlagsEXT flags_ )
13256 {
13257 flags = flags_;
13258 return *this;
13259 }
13260
13261 ValidationCacheCreateInfoEXT& setInitialDataSize( size_t initialDataSize_ )
13262 {
13263 initialDataSize = initialDataSize_;
13264 return *this;
13265 }
13266
13267 ValidationCacheCreateInfoEXT& setPInitialData( const void* pInitialData_ )
13268 {
13269 pInitialData = pInitialData_;
13270 return *this;
13271 }
13272
13273 operator const VkValidationCacheCreateInfoEXT&() const
13274 {
13275 return *reinterpret_cast<const VkValidationCacheCreateInfoEXT*>(this);
13276 }
13277
13278 bool operator==( ValidationCacheCreateInfoEXT const& rhs ) const
13279 {
13280 return ( sType == rhs.sType )
13281 && ( pNext == rhs.pNext )
13282 && ( flags == rhs.flags )
13283 && ( initialDataSize == rhs.initialDataSize )
13284 && ( pInitialData == rhs.pInitialData );
13285 }
13286
13287 bool operator!=( ValidationCacheCreateInfoEXT const& rhs ) const
13288 {
13289 return !operator==( rhs );
13290 }
13291
13292 private:
13293 StructureType sType;
13294
13295 public:
13296 const void* pNext;
13297 ValidationCacheCreateFlagsEXT flags;
13298 size_t initialDataSize;
13299 const void* pInitialData;
13300 };
13301 static_assert( sizeof( ValidationCacheCreateInfoEXT ) == sizeof( VkValidationCacheCreateInfoEXT ), "struct and wrapper have different size!" );
13302
13303 struct ShaderModuleValidationCacheCreateInfoEXT
13304 {
13305 ShaderModuleValidationCacheCreateInfoEXT( ValidationCacheEXT validationCache_ = ValidationCacheEXT() )
13306 : sType( StructureType::eShaderModuleValidationCacheCreateInfoEXT )
13307 , pNext( nullptr )
13308 , validationCache( validationCache_ )
13309 {
13310 }
13311
13312 ShaderModuleValidationCacheCreateInfoEXT( VkShaderModuleValidationCacheCreateInfoEXT const & rhs )
13313 {
13314 memcpy( this, &rhs, sizeof( ShaderModuleValidationCacheCreateInfoEXT ) );
13315 }
13316
13317 ShaderModuleValidationCacheCreateInfoEXT& operator=( VkShaderModuleValidationCacheCreateInfoEXT const & rhs )
13318 {
13319 memcpy( this, &rhs, sizeof( ShaderModuleValidationCacheCreateInfoEXT ) );
13320 return *this;
13321 }
13322 ShaderModuleValidationCacheCreateInfoEXT& setPNext( const void* pNext_ )
13323 {
13324 pNext = pNext_;
13325 return *this;
13326 }
13327
13328 ShaderModuleValidationCacheCreateInfoEXT& setValidationCache( ValidationCacheEXT validationCache_ )
13329 {
13330 validationCache = validationCache_;
13331 return *this;
13332 }
13333
13334 operator const VkShaderModuleValidationCacheCreateInfoEXT&() const
13335 {
13336 return *reinterpret_cast<const VkShaderModuleValidationCacheCreateInfoEXT*>(this);
13337 }
13338
13339 bool operator==( ShaderModuleValidationCacheCreateInfoEXT const& rhs ) const
13340 {
13341 return ( sType == rhs.sType )
13342 && ( pNext == rhs.pNext )
13343 && ( validationCache == rhs.validationCache );
13344 }
13345
13346 bool operator!=( ShaderModuleValidationCacheCreateInfoEXT const& rhs ) const
13347 {
13348 return !operator==( rhs );
13349 }
13350
13351 private:
13352 StructureType sType;
13353
13354 public:
13355 const void* pNext;
13356 ValidationCacheEXT validationCache;
13357 };
13358 static_assert( sizeof( ShaderModuleValidationCacheCreateInfoEXT ) == sizeof( VkShaderModuleValidationCacheCreateInfoEXT ), "struct and wrapper have different size!" );
13359
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013360 enum class SubpassContents
13361 {
13362 eInline = VK_SUBPASS_CONTENTS_INLINE,
13363 eSecondaryCommandBuffers = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS
13364 };
13365
13366 struct PresentInfoKHR
13367 {
13368 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 )
13369 : sType( StructureType::ePresentInfoKHR )
13370 , pNext( nullptr )
13371 , waitSemaphoreCount( waitSemaphoreCount_ )
13372 , pWaitSemaphores( pWaitSemaphores_ )
13373 , swapchainCount( swapchainCount_ )
13374 , pSwapchains( pSwapchains_ )
13375 , pImageIndices( pImageIndices_ )
13376 , pResults( pResults_ )
13377 {
13378 }
13379
13380 PresentInfoKHR( VkPresentInfoKHR const & rhs )
13381 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013382 memcpy( this, &rhs, sizeof( PresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013383 }
13384
13385 PresentInfoKHR& operator=( VkPresentInfoKHR const & rhs )
13386 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013387 memcpy( this, &rhs, sizeof( PresentInfoKHR ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013388 return *this;
13389 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013390 PresentInfoKHR& setPNext( const void* pNext_ )
13391 {
13392 pNext = pNext_;
13393 return *this;
13394 }
13395
13396 PresentInfoKHR& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
13397 {
13398 waitSemaphoreCount = waitSemaphoreCount_;
13399 return *this;
13400 }
13401
13402 PresentInfoKHR& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
13403 {
13404 pWaitSemaphores = pWaitSemaphores_;
13405 return *this;
13406 }
13407
13408 PresentInfoKHR& setSwapchainCount( uint32_t swapchainCount_ )
13409 {
13410 swapchainCount = swapchainCount_;
13411 return *this;
13412 }
13413
13414 PresentInfoKHR& setPSwapchains( const SwapchainKHR* pSwapchains_ )
13415 {
13416 pSwapchains = pSwapchains_;
13417 return *this;
13418 }
13419
13420 PresentInfoKHR& setPImageIndices( const uint32_t* pImageIndices_ )
13421 {
13422 pImageIndices = pImageIndices_;
13423 return *this;
13424 }
13425
13426 PresentInfoKHR& setPResults( Result* pResults_ )
13427 {
13428 pResults = pResults_;
13429 return *this;
13430 }
13431
13432 operator const VkPresentInfoKHR&() const
13433 {
13434 return *reinterpret_cast<const VkPresentInfoKHR*>(this);
13435 }
13436
13437 bool operator==( PresentInfoKHR const& rhs ) const
13438 {
13439 return ( sType == rhs.sType )
13440 && ( pNext == rhs.pNext )
13441 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
13442 && ( pWaitSemaphores == rhs.pWaitSemaphores )
13443 && ( swapchainCount == rhs.swapchainCount )
13444 && ( pSwapchains == rhs.pSwapchains )
13445 && ( pImageIndices == rhs.pImageIndices )
13446 && ( pResults == rhs.pResults );
13447 }
13448
13449 bool operator!=( PresentInfoKHR const& rhs ) const
13450 {
13451 return !operator==( rhs );
13452 }
13453
13454 private:
13455 StructureType sType;
13456
13457 public:
13458 const void* pNext;
13459 uint32_t waitSemaphoreCount;
13460 const Semaphore* pWaitSemaphores;
13461 uint32_t swapchainCount;
13462 const SwapchainKHR* pSwapchains;
13463 const uint32_t* pImageIndices;
13464 Result* pResults;
13465 };
13466 static_assert( sizeof( PresentInfoKHR ) == sizeof( VkPresentInfoKHR ), "struct and wrapper have different size!" );
13467
13468 enum class DynamicState
13469 {
13470 eViewport = VK_DYNAMIC_STATE_VIEWPORT,
13471 eScissor = VK_DYNAMIC_STATE_SCISSOR,
13472 eLineWidth = VK_DYNAMIC_STATE_LINE_WIDTH,
13473 eDepthBias = VK_DYNAMIC_STATE_DEPTH_BIAS,
13474 eBlendConstants = VK_DYNAMIC_STATE_BLEND_CONSTANTS,
13475 eDepthBounds = VK_DYNAMIC_STATE_DEPTH_BOUNDS,
13476 eStencilCompareMask = VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK,
13477 eStencilWriteMask = VK_DYNAMIC_STATE_STENCIL_WRITE_MASK,
Mark Young0f183a82017-02-28 09:58:04 -070013478 eStencilReference = VK_DYNAMIC_STATE_STENCIL_REFERENCE,
13479 eViewportWScalingNV = VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060013480 eDiscardRectangleEXT = VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT,
13481 eSampleLocationsEXT = VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013482 };
13483
13484 struct PipelineDynamicStateCreateInfo
13485 {
13486 PipelineDynamicStateCreateInfo( PipelineDynamicStateCreateFlags flags_ = PipelineDynamicStateCreateFlags(), uint32_t dynamicStateCount_ = 0, const DynamicState* pDynamicStates_ = nullptr )
13487 : sType( StructureType::ePipelineDynamicStateCreateInfo )
13488 , pNext( nullptr )
13489 , flags( flags_ )
13490 , dynamicStateCount( dynamicStateCount_ )
13491 , pDynamicStates( pDynamicStates_ )
13492 {
13493 }
13494
13495 PipelineDynamicStateCreateInfo( VkPipelineDynamicStateCreateInfo const & rhs )
13496 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013497 memcpy( this, &rhs, sizeof( PipelineDynamicStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013498 }
13499
13500 PipelineDynamicStateCreateInfo& operator=( VkPipelineDynamicStateCreateInfo const & rhs )
13501 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013502 memcpy( this, &rhs, sizeof( PipelineDynamicStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013503 return *this;
13504 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013505 PipelineDynamicStateCreateInfo& setPNext( const void* pNext_ )
13506 {
13507 pNext = pNext_;
13508 return *this;
13509 }
13510
13511 PipelineDynamicStateCreateInfo& setFlags( PipelineDynamicStateCreateFlags flags_ )
13512 {
13513 flags = flags_;
13514 return *this;
13515 }
13516
13517 PipelineDynamicStateCreateInfo& setDynamicStateCount( uint32_t dynamicStateCount_ )
13518 {
13519 dynamicStateCount = dynamicStateCount_;
13520 return *this;
13521 }
13522
13523 PipelineDynamicStateCreateInfo& setPDynamicStates( const DynamicState* pDynamicStates_ )
13524 {
13525 pDynamicStates = pDynamicStates_;
13526 return *this;
13527 }
13528
13529 operator const VkPipelineDynamicStateCreateInfo&() const
13530 {
13531 return *reinterpret_cast<const VkPipelineDynamicStateCreateInfo*>(this);
13532 }
13533
13534 bool operator==( PipelineDynamicStateCreateInfo const& rhs ) const
13535 {
13536 return ( sType == rhs.sType )
13537 && ( pNext == rhs.pNext )
13538 && ( flags == rhs.flags )
13539 && ( dynamicStateCount == rhs.dynamicStateCount )
13540 && ( pDynamicStates == rhs.pDynamicStates );
13541 }
13542
13543 bool operator!=( PipelineDynamicStateCreateInfo const& rhs ) const
13544 {
13545 return !operator==( rhs );
13546 }
13547
13548 private:
13549 StructureType sType;
13550
13551 public:
13552 const void* pNext;
13553 PipelineDynamicStateCreateFlags flags;
13554 uint32_t dynamicStateCount;
13555 const DynamicState* pDynamicStates;
13556 };
13557 static_assert( sizeof( PipelineDynamicStateCreateInfo ) == sizeof( VkPipelineDynamicStateCreateInfo ), "struct and wrapper have different size!" );
13558
Mark Young0f183a82017-02-28 09:58:04 -070013559 enum class DescriptorUpdateTemplateTypeKHR
13560 {
13561 eDescriptorSet = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR,
13562 ePushDescriptors = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR
13563 };
13564
13565 struct DescriptorUpdateTemplateCreateInfoKHR
13566 {
13567 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 )
13568 : sType( StructureType::eDescriptorUpdateTemplateCreateInfoKHR )
13569 , pNext( nullptr )
13570 , flags( flags_ )
13571 , descriptorUpdateEntryCount( descriptorUpdateEntryCount_ )
13572 , pDescriptorUpdateEntries( pDescriptorUpdateEntries_ )
13573 , templateType( templateType_ )
13574 , descriptorSetLayout( descriptorSetLayout_ )
13575 , pipelineBindPoint( pipelineBindPoint_ )
13576 , pipelineLayout( pipelineLayout_ )
13577 , set( set_ )
13578 {
13579 }
13580
13581 DescriptorUpdateTemplateCreateInfoKHR( VkDescriptorUpdateTemplateCreateInfoKHR const & rhs )
13582 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013583 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070013584 }
13585
13586 DescriptorUpdateTemplateCreateInfoKHR& operator=( VkDescriptorUpdateTemplateCreateInfoKHR const & rhs )
13587 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060013588 memcpy( this, &rhs, sizeof( DescriptorUpdateTemplateCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070013589 return *this;
13590 }
Mark Young0f183a82017-02-28 09:58:04 -070013591 DescriptorUpdateTemplateCreateInfoKHR& setPNext( void* pNext_ )
13592 {
13593 pNext = pNext_;
13594 return *this;
13595 }
13596
13597 DescriptorUpdateTemplateCreateInfoKHR& setFlags( DescriptorUpdateTemplateCreateFlagsKHR flags_ )
13598 {
13599 flags = flags_;
13600 return *this;
13601 }
13602
13603 DescriptorUpdateTemplateCreateInfoKHR& setDescriptorUpdateEntryCount( uint32_t descriptorUpdateEntryCount_ )
13604 {
13605 descriptorUpdateEntryCount = descriptorUpdateEntryCount_;
13606 return *this;
13607 }
13608
13609 DescriptorUpdateTemplateCreateInfoKHR& setPDescriptorUpdateEntries( const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries_ )
13610 {
13611 pDescriptorUpdateEntries = pDescriptorUpdateEntries_;
13612 return *this;
13613 }
13614
13615 DescriptorUpdateTemplateCreateInfoKHR& setTemplateType( DescriptorUpdateTemplateTypeKHR templateType_ )
13616 {
13617 templateType = templateType_;
13618 return *this;
13619 }
13620
13621 DescriptorUpdateTemplateCreateInfoKHR& setDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout_ )
13622 {
13623 descriptorSetLayout = descriptorSetLayout_;
13624 return *this;
13625 }
13626
13627 DescriptorUpdateTemplateCreateInfoKHR& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
13628 {
13629 pipelineBindPoint = pipelineBindPoint_;
13630 return *this;
13631 }
13632
13633 DescriptorUpdateTemplateCreateInfoKHR& setPipelineLayout( PipelineLayout pipelineLayout_ )
13634 {
13635 pipelineLayout = pipelineLayout_;
13636 return *this;
13637 }
13638
13639 DescriptorUpdateTemplateCreateInfoKHR& setSet( uint32_t set_ )
13640 {
13641 set = set_;
13642 return *this;
13643 }
13644
13645 operator const VkDescriptorUpdateTemplateCreateInfoKHR&() const
13646 {
13647 return *reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>(this);
13648 }
13649
13650 bool operator==( DescriptorUpdateTemplateCreateInfoKHR const& rhs ) const
13651 {
13652 return ( sType == rhs.sType )
13653 && ( pNext == rhs.pNext )
13654 && ( flags == rhs.flags )
13655 && ( descriptorUpdateEntryCount == rhs.descriptorUpdateEntryCount )
13656 && ( pDescriptorUpdateEntries == rhs.pDescriptorUpdateEntries )
13657 && ( templateType == rhs.templateType )
13658 && ( descriptorSetLayout == rhs.descriptorSetLayout )
13659 && ( pipelineBindPoint == rhs.pipelineBindPoint )
13660 && ( pipelineLayout == rhs.pipelineLayout )
13661 && ( set == rhs.set );
13662 }
13663
13664 bool operator!=( DescriptorUpdateTemplateCreateInfoKHR const& rhs ) const
13665 {
13666 return !operator==( rhs );
13667 }
13668
13669 private:
13670 StructureType sType;
13671
13672 public:
13673 void* pNext;
13674 DescriptorUpdateTemplateCreateFlagsKHR flags;
13675 uint32_t descriptorUpdateEntryCount;
13676 const DescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries;
13677 DescriptorUpdateTemplateTypeKHR templateType;
13678 DescriptorSetLayout descriptorSetLayout;
13679 PipelineBindPoint pipelineBindPoint;
13680 PipelineLayout pipelineLayout;
13681 uint32_t set;
13682 };
13683 static_assert( sizeof( DescriptorUpdateTemplateCreateInfoKHR ) == sizeof( VkDescriptorUpdateTemplateCreateInfoKHR ), "struct and wrapper have different size!" );
13684
Mark Lobodzinski54385432017-05-15 10:27:52 -060013685 enum class ObjectType
13686 {
13687 eUnknown = VK_OBJECT_TYPE_UNKNOWN,
13688 eInstance = VK_OBJECT_TYPE_INSTANCE,
13689 ePhysicalDevice = VK_OBJECT_TYPE_PHYSICAL_DEVICE,
13690 eDevice = VK_OBJECT_TYPE_DEVICE,
13691 eQueue = VK_OBJECT_TYPE_QUEUE,
13692 eSemaphore = VK_OBJECT_TYPE_SEMAPHORE,
13693 eCommandBuffer = VK_OBJECT_TYPE_COMMAND_BUFFER,
13694 eFence = VK_OBJECT_TYPE_FENCE,
13695 eDeviceMemory = VK_OBJECT_TYPE_DEVICE_MEMORY,
13696 eBuffer = VK_OBJECT_TYPE_BUFFER,
13697 eImage = VK_OBJECT_TYPE_IMAGE,
13698 eEvent = VK_OBJECT_TYPE_EVENT,
13699 eQueryPool = VK_OBJECT_TYPE_QUERY_POOL,
13700 eBufferView = VK_OBJECT_TYPE_BUFFER_VIEW,
13701 eImageView = VK_OBJECT_TYPE_IMAGE_VIEW,
13702 eShaderModule = VK_OBJECT_TYPE_SHADER_MODULE,
13703 ePipelineCache = VK_OBJECT_TYPE_PIPELINE_CACHE,
13704 ePipelineLayout = VK_OBJECT_TYPE_PIPELINE_LAYOUT,
13705 eRenderPass = VK_OBJECT_TYPE_RENDER_PASS,
13706 ePipeline = VK_OBJECT_TYPE_PIPELINE,
13707 eDescriptorSetLayout = VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT,
13708 eSampler = VK_OBJECT_TYPE_SAMPLER,
13709 eDescriptorPool = VK_OBJECT_TYPE_DESCRIPTOR_POOL,
13710 eDescriptorSet = VK_OBJECT_TYPE_DESCRIPTOR_SET,
13711 eFramebuffer = VK_OBJECT_TYPE_FRAMEBUFFER,
13712 eCommandPool = VK_OBJECT_TYPE_COMMAND_POOL,
13713 eSurfaceKHR = VK_OBJECT_TYPE_SURFACE_KHR,
13714 eSwapchainKHR = VK_OBJECT_TYPE_SWAPCHAIN_KHR,
13715 eDisplayKHR = VK_OBJECT_TYPE_DISPLAY_KHR,
13716 eDisplayModeKHR = VK_OBJECT_TYPE_DISPLAY_MODE_KHR,
13717 eDebugReportCallbackEXT = VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT,
13718 eDescriptorUpdateTemplateKHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR,
13719 eObjectTableNVX = VK_OBJECT_TYPE_OBJECT_TABLE_NVX,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060013720 eIndirectCommandsLayoutNVX = VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX,
13721 eValidationCacheEXT = VK_OBJECT_TYPE_VALIDATION_CACHE_EXT
Mark Lobodzinski54385432017-05-15 10:27:52 -060013722 };
13723
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013724 enum class QueueFlagBits
13725 {
13726 eGraphics = VK_QUEUE_GRAPHICS_BIT,
13727 eCompute = VK_QUEUE_COMPUTE_BIT,
13728 eTransfer = VK_QUEUE_TRANSFER_BIT,
13729 eSparseBinding = VK_QUEUE_SPARSE_BINDING_BIT
13730 };
13731
13732 using QueueFlags = Flags<QueueFlagBits, VkQueueFlags>;
13733
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013734 VULKAN_HPP_INLINE QueueFlags operator|( QueueFlagBits bit0, QueueFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013735 {
13736 return QueueFlags( bit0 ) | bit1;
13737 }
13738
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013739 VULKAN_HPP_INLINE QueueFlags operator~( QueueFlagBits bits )
13740 {
13741 return ~( QueueFlags( bits ) );
13742 }
13743
13744 template <> struct FlagTraits<QueueFlagBits>
13745 {
13746 enum
13747 {
13748 allFlags = VkFlags(QueueFlagBits::eGraphics) | VkFlags(QueueFlagBits::eCompute) | VkFlags(QueueFlagBits::eTransfer) | VkFlags(QueueFlagBits::eSparseBinding)
13749 };
13750 };
13751
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013752 struct QueueFamilyProperties
13753 {
13754 operator const VkQueueFamilyProperties&() const
13755 {
13756 return *reinterpret_cast<const VkQueueFamilyProperties*>(this);
13757 }
13758
13759 bool operator==( QueueFamilyProperties const& rhs ) const
13760 {
13761 return ( queueFlags == rhs.queueFlags )
13762 && ( queueCount == rhs.queueCount )
13763 && ( timestampValidBits == rhs.timestampValidBits )
13764 && ( minImageTransferGranularity == rhs.minImageTransferGranularity );
13765 }
13766
13767 bool operator!=( QueueFamilyProperties const& rhs ) const
13768 {
13769 return !operator==( rhs );
13770 }
13771
13772 QueueFlags queueFlags;
13773 uint32_t queueCount;
13774 uint32_t timestampValidBits;
13775 Extent3D minImageTransferGranularity;
13776 };
13777 static_assert( sizeof( QueueFamilyProperties ) == sizeof( VkQueueFamilyProperties ), "struct and wrapper have different size!" );
13778
Mark Young39389872017-01-19 21:10:49 -070013779 struct QueueFamilyProperties2KHR
13780 {
13781 operator const VkQueueFamilyProperties2KHR&() const
13782 {
13783 return *reinterpret_cast<const VkQueueFamilyProperties2KHR*>(this);
13784 }
13785
13786 bool operator==( QueueFamilyProperties2KHR const& rhs ) const
13787 {
13788 return ( sType == rhs.sType )
13789 && ( pNext == rhs.pNext )
13790 && ( queueFamilyProperties == rhs.queueFamilyProperties );
13791 }
13792
13793 bool operator!=( QueueFamilyProperties2KHR const& rhs ) const
13794 {
13795 return !operator==( rhs );
13796 }
13797
13798 private:
13799 StructureType sType;
13800
13801 public:
13802 void* pNext;
13803 QueueFamilyProperties queueFamilyProperties;
13804 };
13805 static_assert( sizeof( QueueFamilyProperties2KHR ) == sizeof( VkQueueFamilyProperties2KHR ), "struct and wrapper have different size!" );
13806
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013807 enum class MemoryPropertyFlagBits
13808 {
13809 eDeviceLocal = VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT,
13810 eHostVisible = VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT,
13811 eHostCoherent = VK_MEMORY_PROPERTY_HOST_COHERENT_BIT,
13812 eHostCached = VK_MEMORY_PROPERTY_HOST_CACHED_BIT,
13813 eLazilyAllocated = VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT
13814 };
13815
13816 using MemoryPropertyFlags = Flags<MemoryPropertyFlagBits, VkMemoryPropertyFlags>;
13817
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013818 VULKAN_HPP_INLINE MemoryPropertyFlags operator|( MemoryPropertyFlagBits bit0, MemoryPropertyFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013819 {
13820 return MemoryPropertyFlags( bit0 ) | bit1;
13821 }
13822
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013823 VULKAN_HPP_INLINE MemoryPropertyFlags operator~( MemoryPropertyFlagBits bits )
13824 {
13825 return ~( MemoryPropertyFlags( bits ) );
13826 }
13827
13828 template <> struct FlagTraits<MemoryPropertyFlagBits>
13829 {
13830 enum
13831 {
13832 allFlags = VkFlags(MemoryPropertyFlagBits::eDeviceLocal) | VkFlags(MemoryPropertyFlagBits::eHostVisible) | VkFlags(MemoryPropertyFlagBits::eHostCoherent) | VkFlags(MemoryPropertyFlagBits::eHostCached) | VkFlags(MemoryPropertyFlagBits::eLazilyAllocated)
13833 };
13834 };
13835
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013836 struct MemoryType
13837 {
13838 operator const VkMemoryType&() const
13839 {
13840 return *reinterpret_cast<const VkMemoryType*>(this);
13841 }
13842
13843 bool operator==( MemoryType const& rhs ) const
13844 {
13845 return ( propertyFlags == rhs.propertyFlags )
13846 && ( heapIndex == rhs.heapIndex );
13847 }
13848
13849 bool operator!=( MemoryType const& rhs ) const
13850 {
13851 return !operator==( rhs );
13852 }
13853
13854 MemoryPropertyFlags propertyFlags;
13855 uint32_t heapIndex;
13856 };
13857 static_assert( sizeof( MemoryType ) == sizeof( VkMemoryType ), "struct and wrapper have different size!" );
13858
13859 enum class MemoryHeapFlagBits
13860 {
Mark Young0f183a82017-02-28 09:58:04 -070013861 eDeviceLocal = VK_MEMORY_HEAP_DEVICE_LOCAL_BIT,
13862 eMultiInstanceKHX = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013863 };
13864
13865 using MemoryHeapFlags = Flags<MemoryHeapFlagBits, VkMemoryHeapFlags>;
13866
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013867 VULKAN_HPP_INLINE MemoryHeapFlags operator|( MemoryHeapFlagBits bit0, MemoryHeapFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013868 {
13869 return MemoryHeapFlags( bit0 ) | bit1;
13870 }
13871
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013872 VULKAN_HPP_INLINE MemoryHeapFlags operator~( MemoryHeapFlagBits bits )
13873 {
13874 return ~( MemoryHeapFlags( bits ) );
13875 }
13876
13877 template <> struct FlagTraits<MemoryHeapFlagBits>
13878 {
13879 enum
13880 {
Mark Young0f183a82017-02-28 09:58:04 -070013881 allFlags = VkFlags(MemoryHeapFlagBits::eDeviceLocal) | VkFlags(MemoryHeapFlagBits::eMultiInstanceKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013882 };
13883 };
13884
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013885 struct MemoryHeap
13886 {
13887 operator const VkMemoryHeap&() const
13888 {
13889 return *reinterpret_cast<const VkMemoryHeap*>(this);
13890 }
13891
13892 bool operator==( MemoryHeap const& rhs ) const
13893 {
13894 return ( size == rhs.size )
13895 && ( flags == rhs.flags );
13896 }
13897
13898 bool operator!=( MemoryHeap const& rhs ) const
13899 {
13900 return !operator==( rhs );
13901 }
13902
13903 DeviceSize size;
13904 MemoryHeapFlags flags;
13905 };
13906 static_assert( sizeof( MemoryHeap ) == sizeof( VkMemoryHeap ), "struct and wrapper have different size!" );
13907
13908 struct PhysicalDeviceMemoryProperties
13909 {
13910 operator const VkPhysicalDeviceMemoryProperties&() const
13911 {
13912 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties*>(this);
13913 }
13914
13915 bool operator==( PhysicalDeviceMemoryProperties const& rhs ) const
13916 {
13917 return ( memoryTypeCount == rhs.memoryTypeCount )
13918 && ( memcmp( memoryTypes, rhs.memoryTypes, VK_MAX_MEMORY_TYPES * sizeof( MemoryType ) ) == 0 )
13919 && ( memoryHeapCount == rhs.memoryHeapCount )
13920 && ( memcmp( memoryHeaps, rhs.memoryHeaps, VK_MAX_MEMORY_HEAPS * sizeof( MemoryHeap ) ) == 0 );
13921 }
13922
13923 bool operator!=( PhysicalDeviceMemoryProperties const& rhs ) const
13924 {
13925 return !operator==( rhs );
13926 }
13927
13928 uint32_t memoryTypeCount;
13929 MemoryType memoryTypes[VK_MAX_MEMORY_TYPES];
13930 uint32_t memoryHeapCount;
13931 MemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS];
13932 };
13933 static_assert( sizeof( PhysicalDeviceMemoryProperties ) == sizeof( VkPhysicalDeviceMemoryProperties ), "struct and wrapper have different size!" );
13934
Mark Young39389872017-01-19 21:10:49 -070013935 struct PhysicalDeviceMemoryProperties2KHR
13936 {
13937 operator const VkPhysicalDeviceMemoryProperties2KHR&() const
13938 {
13939 return *reinterpret_cast<const VkPhysicalDeviceMemoryProperties2KHR*>(this);
13940 }
13941
13942 bool operator==( PhysicalDeviceMemoryProperties2KHR const& rhs ) const
13943 {
13944 return ( sType == rhs.sType )
13945 && ( pNext == rhs.pNext )
13946 && ( memoryProperties == rhs.memoryProperties );
13947 }
13948
13949 bool operator!=( PhysicalDeviceMemoryProperties2KHR const& rhs ) const
13950 {
13951 return !operator==( rhs );
13952 }
13953
13954 private:
13955 StructureType sType;
13956
13957 public:
13958 void* pNext;
13959 PhysicalDeviceMemoryProperties memoryProperties;
13960 };
13961 static_assert( sizeof( PhysicalDeviceMemoryProperties2KHR ) == sizeof( VkPhysicalDeviceMemoryProperties2KHR ), "struct and wrapper have different size!" );
13962
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013963 enum class AccessFlagBits
13964 {
13965 eIndirectCommandRead = VK_ACCESS_INDIRECT_COMMAND_READ_BIT,
13966 eIndexRead = VK_ACCESS_INDEX_READ_BIT,
13967 eVertexAttributeRead = VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT,
13968 eUniformRead = VK_ACCESS_UNIFORM_READ_BIT,
13969 eInputAttachmentRead = VK_ACCESS_INPUT_ATTACHMENT_READ_BIT,
13970 eShaderRead = VK_ACCESS_SHADER_READ_BIT,
13971 eShaderWrite = VK_ACCESS_SHADER_WRITE_BIT,
13972 eColorAttachmentRead = VK_ACCESS_COLOR_ATTACHMENT_READ_BIT,
13973 eColorAttachmentWrite = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT,
13974 eDepthStencilAttachmentRead = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT,
13975 eDepthStencilAttachmentWrite = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT,
13976 eTransferRead = VK_ACCESS_TRANSFER_READ_BIT,
13977 eTransferWrite = VK_ACCESS_TRANSFER_WRITE_BIT,
13978 eHostRead = VK_ACCESS_HOST_READ_BIT,
13979 eHostWrite = VK_ACCESS_HOST_WRITE_BIT,
13980 eMemoryRead = VK_ACCESS_MEMORY_READ_BIT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013981 eMemoryWrite = VK_ACCESS_MEMORY_WRITE_BIT,
13982 eCommandProcessReadNVX = VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060013983 eCommandProcessWriteNVX = VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX,
13984 eColorAttachmentReadNoncoherentEXT = VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013985 };
13986
13987 using AccessFlags = Flags<AccessFlagBits, VkAccessFlags>;
13988
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013989 VULKAN_HPP_INLINE AccessFlags operator|( AccessFlagBits bit0, AccessFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060013990 {
13991 return AccessFlags( bit0 ) | bit1;
13992 }
13993
Mark Lobodzinski2d589822016-12-12 09:44:34 -070013994 VULKAN_HPP_INLINE AccessFlags operator~( AccessFlagBits bits )
13995 {
13996 return ~( AccessFlags( bits ) );
13997 }
13998
13999 template <> struct FlagTraits<AccessFlagBits>
14000 {
14001 enum
14002 {
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060014003 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 -070014004 };
14005 };
14006
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014007 struct MemoryBarrier
14008 {
14009 MemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags() )
14010 : sType( StructureType::eMemoryBarrier )
14011 , pNext( nullptr )
14012 , srcAccessMask( srcAccessMask_ )
14013 , dstAccessMask( dstAccessMask_ )
14014 {
14015 }
14016
14017 MemoryBarrier( VkMemoryBarrier const & rhs )
14018 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014019 memcpy( this, &rhs, sizeof( MemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014020 }
14021
14022 MemoryBarrier& operator=( VkMemoryBarrier const & rhs )
14023 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014024 memcpy( this, &rhs, sizeof( MemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014025 return *this;
14026 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014027 MemoryBarrier& setPNext( const void* pNext_ )
14028 {
14029 pNext = pNext_;
14030 return *this;
14031 }
14032
14033 MemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
14034 {
14035 srcAccessMask = srcAccessMask_;
14036 return *this;
14037 }
14038
14039 MemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
14040 {
14041 dstAccessMask = dstAccessMask_;
14042 return *this;
14043 }
14044
14045 operator const VkMemoryBarrier&() const
14046 {
14047 return *reinterpret_cast<const VkMemoryBarrier*>(this);
14048 }
14049
14050 bool operator==( MemoryBarrier const& rhs ) const
14051 {
14052 return ( sType == rhs.sType )
14053 && ( pNext == rhs.pNext )
14054 && ( srcAccessMask == rhs.srcAccessMask )
14055 && ( dstAccessMask == rhs.dstAccessMask );
14056 }
14057
14058 bool operator!=( MemoryBarrier const& rhs ) const
14059 {
14060 return !operator==( rhs );
14061 }
14062
14063 private:
14064 StructureType sType;
14065
14066 public:
14067 const void* pNext;
14068 AccessFlags srcAccessMask;
14069 AccessFlags dstAccessMask;
14070 };
14071 static_assert( sizeof( MemoryBarrier ) == sizeof( VkMemoryBarrier ), "struct and wrapper have different size!" );
14072
14073 struct BufferMemoryBarrier
14074 {
14075 BufferMemoryBarrier( AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), uint32_t srcQueueFamilyIndex_ = 0, uint32_t dstQueueFamilyIndex_ = 0, Buffer buffer_ = Buffer(), DeviceSize offset_ = 0, DeviceSize size_ = 0 )
14076 : sType( StructureType::eBufferMemoryBarrier )
14077 , pNext( nullptr )
14078 , srcAccessMask( srcAccessMask_ )
14079 , dstAccessMask( dstAccessMask_ )
14080 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
14081 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
14082 , buffer( buffer_ )
14083 , offset( offset_ )
14084 , size( size_ )
14085 {
14086 }
14087
14088 BufferMemoryBarrier( VkBufferMemoryBarrier const & rhs )
14089 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014090 memcpy( this, &rhs, sizeof( BufferMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014091 }
14092
14093 BufferMemoryBarrier& operator=( VkBufferMemoryBarrier const & rhs )
14094 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014095 memcpy( this, &rhs, sizeof( BufferMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014096 return *this;
14097 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014098 BufferMemoryBarrier& setPNext( const void* pNext_ )
14099 {
14100 pNext = pNext_;
14101 return *this;
14102 }
14103
14104 BufferMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
14105 {
14106 srcAccessMask = srcAccessMask_;
14107 return *this;
14108 }
14109
14110 BufferMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
14111 {
14112 dstAccessMask = dstAccessMask_;
14113 return *this;
14114 }
14115
14116 BufferMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
14117 {
14118 srcQueueFamilyIndex = srcQueueFamilyIndex_;
14119 return *this;
14120 }
14121
14122 BufferMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
14123 {
14124 dstQueueFamilyIndex = dstQueueFamilyIndex_;
14125 return *this;
14126 }
14127
14128 BufferMemoryBarrier& setBuffer( Buffer buffer_ )
14129 {
14130 buffer = buffer_;
14131 return *this;
14132 }
14133
14134 BufferMemoryBarrier& setOffset( DeviceSize offset_ )
14135 {
14136 offset = offset_;
14137 return *this;
14138 }
14139
14140 BufferMemoryBarrier& setSize( DeviceSize size_ )
14141 {
14142 size = size_;
14143 return *this;
14144 }
14145
14146 operator const VkBufferMemoryBarrier&() const
14147 {
14148 return *reinterpret_cast<const VkBufferMemoryBarrier*>(this);
14149 }
14150
14151 bool operator==( BufferMemoryBarrier const& rhs ) const
14152 {
14153 return ( sType == rhs.sType )
14154 && ( pNext == rhs.pNext )
14155 && ( srcAccessMask == rhs.srcAccessMask )
14156 && ( dstAccessMask == rhs.dstAccessMask )
14157 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
14158 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
14159 && ( buffer == rhs.buffer )
14160 && ( offset == rhs.offset )
14161 && ( size == rhs.size );
14162 }
14163
14164 bool operator!=( BufferMemoryBarrier const& rhs ) const
14165 {
14166 return !operator==( rhs );
14167 }
14168
14169 private:
14170 StructureType sType;
14171
14172 public:
14173 const void* pNext;
14174 AccessFlags srcAccessMask;
14175 AccessFlags dstAccessMask;
14176 uint32_t srcQueueFamilyIndex;
14177 uint32_t dstQueueFamilyIndex;
14178 Buffer buffer;
14179 DeviceSize offset;
14180 DeviceSize size;
14181 };
14182 static_assert( sizeof( BufferMemoryBarrier ) == sizeof( VkBufferMemoryBarrier ), "struct and wrapper have different size!" );
14183
14184 enum class BufferUsageFlagBits
14185 {
14186 eTransferSrc = VK_BUFFER_USAGE_TRANSFER_SRC_BIT,
14187 eTransferDst = VK_BUFFER_USAGE_TRANSFER_DST_BIT,
14188 eUniformTexelBuffer = VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT,
14189 eStorageTexelBuffer = VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT,
14190 eUniformBuffer = VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT,
14191 eStorageBuffer = VK_BUFFER_USAGE_STORAGE_BUFFER_BIT,
14192 eIndexBuffer = VK_BUFFER_USAGE_INDEX_BUFFER_BIT,
14193 eVertexBuffer = VK_BUFFER_USAGE_VERTEX_BUFFER_BIT,
14194 eIndirectBuffer = VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT
14195 };
14196
14197 using BufferUsageFlags = Flags<BufferUsageFlagBits, VkBufferUsageFlags>;
14198
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014199 VULKAN_HPP_INLINE BufferUsageFlags operator|( BufferUsageFlagBits bit0, BufferUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014200 {
14201 return BufferUsageFlags( bit0 ) | bit1;
14202 }
14203
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014204 VULKAN_HPP_INLINE BufferUsageFlags operator~( BufferUsageFlagBits bits )
14205 {
14206 return ~( BufferUsageFlags( bits ) );
14207 }
14208
14209 template <> struct FlagTraits<BufferUsageFlagBits>
14210 {
14211 enum
14212 {
14213 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)
14214 };
14215 };
14216
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014217 enum class BufferCreateFlagBits
14218 {
14219 eSparseBinding = VK_BUFFER_CREATE_SPARSE_BINDING_BIT,
14220 eSparseResidency = VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT,
14221 eSparseAliased = VK_BUFFER_CREATE_SPARSE_ALIASED_BIT
14222 };
14223
14224 using BufferCreateFlags = Flags<BufferCreateFlagBits, VkBufferCreateFlags>;
14225
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014226 VULKAN_HPP_INLINE BufferCreateFlags operator|( BufferCreateFlagBits bit0, BufferCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014227 {
14228 return BufferCreateFlags( bit0 ) | bit1;
14229 }
14230
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014231 VULKAN_HPP_INLINE BufferCreateFlags operator~( BufferCreateFlagBits bits )
14232 {
14233 return ~( BufferCreateFlags( bits ) );
14234 }
14235
14236 template <> struct FlagTraits<BufferCreateFlagBits>
14237 {
14238 enum
14239 {
14240 allFlags = VkFlags(BufferCreateFlagBits::eSparseBinding) | VkFlags(BufferCreateFlagBits::eSparseResidency) | VkFlags(BufferCreateFlagBits::eSparseAliased)
14241 };
14242 };
14243
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014244 struct BufferCreateInfo
14245 {
14246 BufferCreateInfo( BufferCreateFlags flags_ = BufferCreateFlags(), DeviceSize size_ = 0, BufferUsageFlags usage_ = BufferUsageFlags(), SharingMode sharingMode_ = SharingMode::eExclusive, uint32_t queueFamilyIndexCount_ = 0, const uint32_t* pQueueFamilyIndices_ = nullptr )
14247 : sType( StructureType::eBufferCreateInfo )
14248 , pNext( nullptr )
14249 , flags( flags_ )
14250 , size( size_ )
14251 , usage( usage_ )
14252 , sharingMode( sharingMode_ )
14253 , queueFamilyIndexCount( queueFamilyIndexCount_ )
14254 , pQueueFamilyIndices( pQueueFamilyIndices_ )
14255 {
14256 }
14257
14258 BufferCreateInfo( VkBufferCreateInfo const & rhs )
14259 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014260 memcpy( this, &rhs, sizeof( BufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014261 }
14262
14263 BufferCreateInfo& operator=( VkBufferCreateInfo const & rhs )
14264 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014265 memcpy( this, &rhs, sizeof( BufferCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014266 return *this;
14267 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014268 BufferCreateInfo& setPNext( const void* pNext_ )
14269 {
14270 pNext = pNext_;
14271 return *this;
14272 }
14273
14274 BufferCreateInfo& setFlags( BufferCreateFlags flags_ )
14275 {
14276 flags = flags_;
14277 return *this;
14278 }
14279
14280 BufferCreateInfo& setSize( DeviceSize size_ )
14281 {
14282 size = size_;
14283 return *this;
14284 }
14285
14286 BufferCreateInfo& setUsage( BufferUsageFlags usage_ )
14287 {
14288 usage = usage_;
14289 return *this;
14290 }
14291
14292 BufferCreateInfo& setSharingMode( SharingMode sharingMode_ )
14293 {
14294 sharingMode = sharingMode_;
14295 return *this;
14296 }
14297
14298 BufferCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
14299 {
14300 queueFamilyIndexCount = queueFamilyIndexCount_;
14301 return *this;
14302 }
14303
14304 BufferCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
14305 {
14306 pQueueFamilyIndices = pQueueFamilyIndices_;
14307 return *this;
14308 }
14309
14310 operator const VkBufferCreateInfo&() const
14311 {
14312 return *reinterpret_cast<const VkBufferCreateInfo*>(this);
14313 }
14314
14315 bool operator==( BufferCreateInfo const& rhs ) const
14316 {
14317 return ( sType == rhs.sType )
14318 && ( pNext == rhs.pNext )
14319 && ( flags == rhs.flags )
14320 && ( size == rhs.size )
14321 && ( usage == rhs.usage )
14322 && ( sharingMode == rhs.sharingMode )
14323 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
14324 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices );
14325 }
14326
14327 bool operator!=( BufferCreateInfo const& rhs ) const
14328 {
14329 return !operator==( rhs );
14330 }
14331
14332 private:
14333 StructureType sType;
14334
14335 public:
14336 const void* pNext;
14337 BufferCreateFlags flags;
14338 DeviceSize size;
14339 BufferUsageFlags usage;
14340 SharingMode sharingMode;
14341 uint32_t queueFamilyIndexCount;
14342 const uint32_t* pQueueFamilyIndices;
14343 };
14344 static_assert( sizeof( BufferCreateInfo ) == sizeof( VkBufferCreateInfo ), "struct and wrapper have different size!" );
14345
14346 enum class ShaderStageFlagBits
14347 {
14348 eVertex = VK_SHADER_STAGE_VERTEX_BIT,
14349 eTessellationControl = VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT,
14350 eTessellationEvaluation = VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT,
14351 eGeometry = VK_SHADER_STAGE_GEOMETRY_BIT,
14352 eFragment = VK_SHADER_STAGE_FRAGMENT_BIT,
14353 eCompute = VK_SHADER_STAGE_COMPUTE_BIT,
14354 eAllGraphics = VK_SHADER_STAGE_ALL_GRAPHICS,
14355 eAll = VK_SHADER_STAGE_ALL
14356 };
14357
14358 using ShaderStageFlags = Flags<ShaderStageFlagBits, VkShaderStageFlags>;
14359
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014360 VULKAN_HPP_INLINE ShaderStageFlags operator|( ShaderStageFlagBits bit0, ShaderStageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014361 {
14362 return ShaderStageFlags( bit0 ) | bit1;
14363 }
14364
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014365 VULKAN_HPP_INLINE ShaderStageFlags operator~( ShaderStageFlagBits bits )
14366 {
14367 return ~( ShaderStageFlags( bits ) );
14368 }
14369
14370 template <> struct FlagTraits<ShaderStageFlagBits>
14371 {
14372 enum
14373 {
14374 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)
14375 };
14376 };
14377
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014378 struct DescriptorSetLayoutBinding
14379 {
14380 DescriptorSetLayoutBinding( uint32_t binding_ = 0, DescriptorType descriptorType_ = DescriptorType::eSampler, uint32_t descriptorCount_ = 0, ShaderStageFlags stageFlags_ = ShaderStageFlags(), const Sampler* pImmutableSamplers_ = nullptr )
14381 : binding( binding_ )
14382 , descriptorType( descriptorType_ )
14383 , descriptorCount( descriptorCount_ )
14384 , stageFlags( stageFlags_ )
14385 , pImmutableSamplers( pImmutableSamplers_ )
14386 {
14387 }
14388
14389 DescriptorSetLayoutBinding( VkDescriptorSetLayoutBinding const & rhs )
14390 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014391 memcpy( this, &rhs, sizeof( DescriptorSetLayoutBinding ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014392 }
14393
14394 DescriptorSetLayoutBinding& operator=( VkDescriptorSetLayoutBinding const & rhs )
14395 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014396 memcpy( this, &rhs, sizeof( DescriptorSetLayoutBinding ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014397 return *this;
14398 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014399 DescriptorSetLayoutBinding& setBinding( uint32_t binding_ )
14400 {
14401 binding = binding_;
14402 return *this;
14403 }
14404
14405 DescriptorSetLayoutBinding& setDescriptorType( DescriptorType descriptorType_ )
14406 {
14407 descriptorType = descriptorType_;
14408 return *this;
14409 }
14410
14411 DescriptorSetLayoutBinding& setDescriptorCount( uint32_t descriptorCount_ )
14412 {
14413 descriptorCount = descriptorCount_;
14414 return *this;
14415 }
14416
14417 DescriptorSetLayoutBinding& setStageFlags( ShaderStageFlags stageFlags_ )
14418 {
14419 stageFlags = stageFlags_;
14420 return *this;
14421 }
14422
14423 DescriptorSetLayoutBinding& setPImmutableSamplers( const Sampler* pImmutableSamplers_ )
14424 {
14425 pImmutableSamplers = pImmutableSamplers_;
14426 return *this;
14427 }
14428
14429 operator const VkDescriptorSetLayoutBinding&() const
14430 {
14431 return *reinterpret_cast<const VkDescriptorSetLayoutBinding*>(this);
14432 }
14433
14434 bool operator==( DescriptorSetLayoutBinding const& rhs ) const
14435 {
14436 return ( binding == rhs.binding )
14437 && ( descriptorType == rhs.descriptorType )
14438 && ( descriptorCount == rhs.descriptorCount )
14439 && ( stageFlags == rhs.stageFlags )
14440 && ( pImmutableSamplers == rhs.pImmutableSamplers );
14441 }
14442
14443 bool operator!=( DescriptorSetLayoutBinding const& rhs ) const
14444 {
14445 return !operator==( rhs );
14446 }
14447
14448 uint32_t binding;
14449 DescriptorType descriptorType;
14450 uint32_t descriptorCount;
14451 ShaderStageFlags stageFlags;
14452 const Sampler* pImmutableSamplers;
14453 };
14454 static_assert( sizeof( DescriptorSetLayoutBinding ) == sizeof( VkDescriptorSetLayoutBinding ), "struct and wrapper have different size!" );
14455
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014456 struct PipelineShaderStageCreateInfo
14457 {
14458 PipelineShaderStageCreateInfo( PipelineShaderStageCreateFlags flags_ = PipelineShaderStageCreateFlags(), ShaderStageFlagBits stage_ = ShaderStageFlagBits::eVertex, ShaderModule module_ = ShaderModule(), const char* pName_ = nullptr, const SpecializationInfo* pSpecializationInfo_ = nullptr )
14459 : sType( StructureType::ePipelineShaderStageCreateInfo )
14460 , pNext( nullptr )
14461 , flags( flags_ )
14462 , stage( stage_ )
14463 , module( module_ )
14464 , pName( pName_ )
14465 , pSpecializationInfo( pSpecializationInfo_ )
14466 {
14467 }
14468
14469 PipelineShaderStageCreateInfo( VkPipelineShaderStageCreateInfo const & rhs )
14470 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014471 memcpy( this, &rhs, sizeof( PipelineShaderStageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014472 }
14473
14474 PipelineShaderStageCreateInfo& operator=( VkPipelineShaderStageCreateInfo const & rhs )
14475 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014476 memcpy( this, &rhs, sizeof( PipelineShaderStageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014477 return *this;
14478 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014479 PipelineShaderStageCreateInfo& setPNext( const void* pNext_ )
14480 {
14481 pNext = pNext_;
14482 return *this;
14483 }
14484
14485 PipelineShaderStageCreateInfo& setFlags( PipelineShaderStageCreateFlags flags_ )
14486 {
14487 flags = flags_;
14488 return *this;
14489 }
14490
14491 PipelineShaderStageCreateInfo& setStage( ShaderStageFlagBits stage_ )
14492 {
14493 stage = stage_;
14494 return *this;
14495 }
14496
14497 PipelineShaderStageCreateInfo& setModule( ShaderModule module_ )
14498 {
14499 module = module_;
14500 return *this;
14501 }
14502
14503 PipelineShaderStageCreateInfo& setPName( const char* pName_ )
14504 {
14505 pName = pName_;
14506 return *this;
14507 }
14508
14509 PipelineShaderStageCreateInfo& setPSpecializationInfo( const SpecializationInfo* pSpecializationInfo_ )
14510 {
14511 pSpecializationInfo = pSpecializationInfo_;
14512 return *this;
14513 }
14514
14515 operator const VkPipelineShaderStageCreateInfo&() const
14516 {
14517 return *reinterpret_cast<const VkPipelineShaderStageCreateInfo*>(this);
14518 }
14519
14520 bool operator==( PipelineShaderStageCreateInfo const& rhs ) const
14521 {
14522 return ( sType == rhs.sType )
14523 && ( pNext == rhs.pNext )
14524 && ( flags == rhs.flags )
14525 && ( stage == rhs.stage )
14526 && ( module == rhs.module )
14527 && ( pName == rhs.pName )
14528 && ( pSpecializationInfo == rhs.pSpecializationInfo );
14529 }
14530
14531 bool operator!=( PipelineShaderStageCreateInfo const& rhs ) const
14532 {
14533 return !operator==( rhs );
14534 }
14535
14536 private:
14537 StructureType sType;
14538
14539 public:
14540 const void* pNext;
14541 PipelineShaderStageCreateFlags flags;
14542 ShaderStageFlagBits stage;
14543 ShaderModule module;
14544 const char* pName;
14545 const SpecializationInfo* pSpecializationInfo;
14546 };
14547 static_assert( sizeof( PipelineShaderStageCreateInfo ) == sizeof( VkPipelineShaderStageCreateInfo ), "struct and wrapper have different size!" );
14548
14549 struct PushConstantRange
14550 {
14551 PushConstantRange( ShaderStageFlags stageFlags_ = ShaderStageFlags(), uint32_t offset_ = 0, uint32_t size_ = 0 )
14552 : stageFlags( stageFlags_ )
14553 , offset( offset_ )
14554 , size( size_ )
14555 {
14556 }
14557
14558 PushConstantRange( VkPushConstantRange const & rhs )
14559 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014560 memcpy( this, &rhs, sizeof( PushConstantRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014561 }
14562
14563 PushConstantRange& operator=( VkPushConstantRange const & rhs )
14564 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014565 memcpy( this, &rhs, sizeof( PushConstantRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014566 return *this;
14567 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014568 PushConstantRange& setStageFlags( ShaderStageFlags stageFlags_ )
14569 {
14570 stageFlags = stageFlags_;
14571 return *this;
14572 }
14573
14574 PushConstantRange& setOffset( uint32_t offset_ )
14575 {
14576 offset = offset_;
14577 return *this;
14578 }
14579
14580 PushConstantRange& setSize( uint32_t size_ )
14581 {
14582 size = size_;
14583 return *this;
14584 }
14585
14586 operator const VkPushConstantRange&() const
14587 {
14588 return *reinterpret_cast<const VkPushConstantRange*>(this);
14589 }
14590
14591 bool operator==( PushConstantRange const& rhs ) const
14592 {
14593 return ( stageFlags == rhs.stageFlags )
14594 && ( offset == rhs.offset )
14595 && ( size == rhs.size );
14596 }
14597
14598 bool operator!=( PushConstantRange const& rhs ) const
14599 {
14600 return !operator==( rhs );
14601 }
14602
14603 ShaderStageFlags stageFlags;
14604 uint32_t offset;
14605 uint32_t size;
14606 };
14607 static_assert( sizeof( PushConstantRange ) == sizeof( VkPushConstantRange ), "struct and wrapper have different size!" );
14608
14609 struct PipelineLayoutCreateInfo
14610 {
14611 PipelineLayoutCreateInfo( PipelineLayoutCreateFlags flags_ = PipelineLayoutCreateFlags(), uint32_t setLayoutCount_ = 0, const DescriptorSetLayout* pSetLayouts_ = nullptr, uint32_t pushConstantRangeCount_ = 0, const PushConstantRange* pPushConstantRanges_ = nullptr )
14612 : sType( StructureType::ePipelineLayoutCreateInfo )
14613 , pNext( nullptr )
14614 , flags( flags_ )
14615 , setLayoutCount( setLayoutCount_ )
14616 , pSetLayouts( pSetLayouts_ )
14617 , pushConstantRangeCount( pushConstantRangeCount_ )
14618 , pPushConstantRanges( pPushConstantRanges_ )
14619 {
14620 }
14621
14622 PipelineLayoutCreateInfo( VkPipelineLayoutCreateInfo const & rhs )
14623 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014624 memcpy( this, &rhs, sizeof( PipelineLayoutCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014625 }
14626
14627 PipelineLayoutCreateInfo& operator=( VkPipelineLayoutCreateInfo const & rhs )
14628 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014629 memcpy( this, &rhs, sizeof( PipelineLayoutCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014630 return *this;
14631 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014632 PipelineLayoutCreateInfo& setPNext( const void* pNext_ )
14633 {
14634 pNext = pNext_;
14635 return *this;
14636 }
14637
14638 PipelineLayoutCreateInfo& setFlags( PipelineLayoutCreateFlags flags_ )
14639 {
14640 flags = flags_;
14641 return *this;
14642 }
14643
14644 PipelineLayoutCreateInfo& setSetLayoutCount( uint32_t setLayoutCount_ )
14645 {
14646 setLayoutCount = setLayoutCount_;
14647 return *this;
14648 }
14649
14650 PipelineLayoutCreateInfo& setPSetLayouts( const DescriptorSetLayout* pSetLayouts_ )
14651 {
14652 pSetLayouts = pSetLayouts_;
14653 return *this;
14654 }
14655
14656 PipelineLayoutCreateInfo& setPushConstantRangeCount( uint32_t pushConstantRangeCount_ )
14657 {
14658 pushConstantRangeCount = pushConstantRangeCount_;
14659 return *this;
14660 }
14661
14662 PipelineLayoutCreateInfo& setPPushConstantRanges( const PushConstantRange* pPushConstantRanges_ )
14663 {
14664 pPushConstantRanges = pPushConstantRanges_;
14665 return *this;
14666 }
14667
14668 operator const VkPipelineLayoutCreateInfo&() const
14669 {
14670 return *reinterpret_cast<const VkPipelineLayoutCreateInfo*>(this);
14671 }
14672
14673 bool operator==( PipelineLayoutCreateInfo const& rhs ) const
14674 {
14675 return ( sType == rhs.sType )
14676 && ( pNext == rhs.pNext )
14677 && ( flags == rhs.flags )
14678 && ( setLayoutCount == rhs.setLayoutCount )
14679 && ( pSetLayouts == rhs.pSetLayouts )
14680 && ( pushConstantRangeCount == rhs.pushConstantRangeCount )
14681 && ( pPushConstantRanges == rhs.pPushConstantRanges );
14682 }
14683
14684 bool operator!=( PipelineLayoutCreateInfo const& rhs ) const
14685 {
14686 return !operator==( rhs );
14687 }
14688
14689 private:
14690 StructureType sType;
14691
14692 public:
14693 const void* pNext;
14694 PipelineLayoutCreateFlags flags;
14695 uint32_t setLayoutCount;
14696 const DescriptorSetLayout* pSetLayouts;
14697 uint32_t pushConstantRangeCount;
14698 const PushConstantRange* pPushConstantRanges;
14699 };
14700 static_assert( sizeof( PipelineLayoutCreateInfo ) == sizeof( VkPipelineLayoutCreateInfo ), "struct and wrapper have different size!" );
14701
14702 enum class ImageUsageFlagBits
14703 {
14704 eTransferSrc = VK_IMAGE_USAGE_TRANSFER_SRC_BIT,
14705 eTransferDst = VK_IMAGE_USAGE_TRANSFER_DST_BIT,
14706 eSampled = VK_IMAGE_USAGE_SAMPLED_BIT,
14707 eStorage = VK_IMAGE_USAGE_STORAGE_BIT,
14708 eColorAttachment = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
14709 eDepthStencilAttachment = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT,
14710 eTransientAttachment = VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT,
14711 eInputAttachment = VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT
14712 };
14713
14714 using ImageUsageFlags = Flags<ImageUsageFlagBits, VkImageUsageFlags>;
14715
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014716 VULKAN_HPP_INLINE ImageUsageFlags operator|( ImageUsageFlagBits bit0, ImageUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014717 {
14718 return ImageUsageFlags( bit0 ) | bit1;
14719 }
14720
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014721 VULKAN_HPP_INLINE ImageUsageFlags operator~( ImageUsageFlagBits bits )
14722 {
14723 return ~( ImageUsageFlags( bits ) );
14724 }
14725
14726 template <> struct FlagTraits<ImageUsageFlagBits>
14727 {
14728 enum
14729 {
14730 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)
14731 };
14732 };
14733
Mark Lobodzinski54385432017-05-15 10:27:52 -060014734 struct SharedPresentSurfaceCapabilitiesKHR
14735 {
14736 operator const VkSharedPresentSurfaceCapabilitiesKHR&() const
14737 {
14738 return *reinterpret_cast<const VkSharedPresentSurfaceCapabilitiesKHR*>(this);
14739 }
14740
14741 bool operator==( SharedPresentSurfaceCapabilitiesKHR const& rhs ) const
14742 {
14743 return ( sType == rhs.sType )
14744 && ( pNext == rhs.pNext )
14745 && ( sharedPresentSupportedUsageFlags == rhs.sharedPresentSupportedUsageFlags );
14746 }
14747
14748 bool operator!=( SharedPresentSurfaceCapabilitiesKHR const& rhs ) const
14749 {
14750 return !operator==( rhs );
14751 }
14752
14753 private:
14754 StructureType sType;
14755
14756 public:
14757 void* pNext;
14758 ImageUsageFlags sharedPresentSupportedUsageFlags;
14759 };
14760 static_assert( sizeof( SharedPresentSurfaceCapabilitiesKHR ) == sizeof( VkSharedPresentSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" );
14761
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014762 enum class ImageCreateFlagBits
14763 {
14764 eSparseBinding = VK_IMAGE_CREATE_SPARSE_BINDING_BIT,
14765 eSparseResidency = VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT,
14766 eSparseAliased = VK_IMAGE_CREATE_SPARSE_ALIASED_BIT,
14767 eMutableFormat = VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT,
Mark Young39389872017-01-19 21:10:49 -070014768 eCubeCompatible = VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT,
Mark Young0f183a82017-02-28 09:58:04 -070014769 eBindSfrKHX = VK_IMAGE_CREATE_BIND_SFR_BIT_KHX,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060014770 e2DArrayCompatibleKHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR,
14771 eSampleLocationsCompatibleDepthEXT = VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014772 };
14773
14774 using ImageCreateFlags = Flags<ImageCreateFlagBits, VkImageCreateFlags>;
14775
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014776 VULKAN_HPP_INLINE ImageCreateFlags operator|( ImageCreateFlagBits bit0, ImageCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014777 {
14778 return ImageCreateFlags( bit0 ) | bit1;
14779 }
14780
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014781 VULKAN_HPP_INLINE ImageCreateFlags operator~( ImageCreateFlagBits bits )
14782 {
14783 return ~( ImageCreateFlags( bits ) );
14784 }
14785
14786 template <> struct FlagTraits<ImageCreateFlagBits>
14787 {
14788 enum
14789 {
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060014790 allFlags = VkFlags(ImageCreateFlagBits::eSparseBinding) | VkFlags(ImageCreateFlagBits::eSparseResidency) | VkFlags(ImageCreateFlagBits::eSparseAliased) | VkFlags(ImageCreateFlagBits::eMutableFormat) | VkFlags(ImageCreateFlagBits::eCubeCompatible) | VkFlags(ImageCreateFlagBits::eBindSfrKHX) | VkFlags(ImageCreateFlagBits::e2DArrayCompatibleKHR) | VkFlags(ImageCreateFlagBits::eSampleLocationsCompatibleDepthEXT)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014791 };
14792 };
14793
Mark Young39389872017-01-19 21:10:49 -070014794 struct PhysicalDeviceImageFormatInfo2KHR
14795 {
14796 PhysicalDeviceImageFormatInfo2KHR( Format format_ = Format::eUndefined, ImageType type_ = ImageType::e1D, ImageTiling tiling_ = ImageTiling::eOptimal, ImageUsageFlags usage_ = ImageUsageFlags(), ImageCreateFlags flags_ = ImageCreateFlags() )
14797 : sType( StructureType::ePhysicalDeviceImageFormatInfo2KHR )
14798 , pNext( nullptr )
14799 , format( format_ )
14800 , type( type_ )
14801 , tiling( tiling_ )
14802 , usage( usage_ )
14803 , flags( flags_ )
14804 {
14805 }
14806
14807 PhysicalDeviceImageFormatInfo2KHR( VkPhysicalDeviceImageFormatInfo2KHR const & rhs )
14808 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014809 memcpy( this, &rhs, sizeof( PhysicalDeviceImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070014810 }
14811
14812 PhysicalDeviceImageFormatInfo2KHR& operator=( VkPhysicalDeviceImageFormatInfo2KHR const & rhs )
14813 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014814 memcpy( this, &rhs, sizeof( PhysicalDeviceImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070014815 return *this;
14816 }
Mark Young39389872017-01-19 21:10:49 -070014817 PhysicalDeviceImageFormatInfo2KHR& setPNext( const void* pNext_ )
14818 {
14819 pNext = pNext_;
14820 return *this;
14821 }
14822
14823 PhysicalDeviceImageFormatInfo2KHR& setFormat( Format format_ )
14824 {
14825 format = format_;
14826 return *this;
14827 }
14828
14829 PhysicalDeviceImageFormatInfo2KHR& setType( ImageType type_ )
14830 {
14831 type = type_;
14832 return *this;
14833 }
14834
14835 PhysicalDeviceImageFormatInfo2KHR& setTiling( ImageTiling tiling_ )
14836 {
14837 tiling = tiling_;
14838 return *this;
14839 }
14840
14841 PhysicalDeviceImageFormatInfo2KHR& setUsage( ImageUsageFlags usage_ )
14842 {
14843 usage = usage_;
14844 return *this;
14845 }
14846
14847 PhysicalDeviceImageFormatInfo2KHR& setFlags( ImageCreateFlags flags_ )
14848 {
14849 flags = flags_;
14850 return *this;
14851 }
14852
14853 operator const VkPhysicalDeviceImageFormatInfo2KHR&() const
14854 {
14855 return *reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>(this);
14856 }
14857
14858 bool operator==( PhysicalDeviceImageFormatInfo2KHR const& rhs ) const
14859 {
14860 return ( sType == rhs.sType )
14861 && ( pNext == rhs.pNext )
14862 && ( format == rhs.format )
14863 && ( type == rhs.type )
14864 && ( tiling == rhs.tiling )
14865 && ( usage == rhs.usage )
14866 && ( flags == rhs.flags );
14867 }
14868
14869 bool operator!=( PhysicalDeviceImageFormatInfo2KHR const& rhs ) const
14870 {
14871 return !operator==( rhs );
14872 }
14873
14874 private:
14875 StructureType sType;
14876
14877 public:
14878 const void* pNext;
14879 Format format;
14880 ImageType type;
14881 ImageTiling tiling;
14882 ImageUsageFlags usage;
14883 ImageCreateFlags flags;
14884 };
14885 static_assert( sizeof( PhysicalDeviceImageFormatInfo2KHR ) == sizeof( VkPhysicalDeviceImageFormatInfo2KHR ), "struct and wrapper have different size!" );
14886
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014887 enum class PipelineCreateFlagBits
14888 {
14889 eDisableOptimization = VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT,
14890 eAllowDerivatives = VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT,
Mark Young0f183a82017-02-28 09:58:04 -070014891 eDerivative = VK_PIPELINE_CREATE_DERIVATIVE_BIT,
14892 eViewIndexFromDeviceIndexKHX = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX,
14893 eDispatchBaseKHX = VK_PIPELINE_CREATE_DISPATCH_BASE_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014894 };
14895
14896 using PipelineCreateFlags = Flags<PipelineCreateFlagBits, VkPipelineCreateFlags>;
14897
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014898 VULKAN_HPP_INLINE PipelineCreateFlags operator|( PipelineCreateFlagBits bit0, PipelineCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014899 {
14900 return PipelineCreateFlags( bit0 ) | bit1;
14901 }
14902
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014903 VULKAN_HPP_INLINE PipelineCreateFlags operator~( PipelineCreateFlagBits bits )
14904 {
14905 return ~( PipelineCreateFlags( bits ) );
14906 }
14907
14908 template <> struct FlagTraits<PipelineCreateFlagBits>
14909 {
14910 enum
14911 {
Mark Young0f183a82017-02-28 09:58:04 -070014912 allFlags = VkFlags(PipelineCreateFlagBits::eDisableOptimization) | VkFlags(PipelineCreateFlagBits::eAllowDerivatives) | VkFlags(PipelineCreateFlagBits::eDerivative) | VkFlags(PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX) | VkFlags(PipelineCreateFlagBits::eDispatchBaseKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070014913 };
14914 };
14915
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014916 struct ComputePipelineCreateInfo
14917 {
14918 ComputePipelineCreateInfo( PipelineCreateFlags flags_ = PipelineCreateFlags(), PipelineShaderStageCreateInfo stage_ = PipelineShaderStageCreateInfo(), PipelineLayout layout_ = PipelineLayout(), Pipeline basePipelineHandle_ = Pipeline(), int32_t basePipelineIndex_ = 0 )
14919 : sType( StructureType::eComputePipelineCreateInfo )
14920 , pNext( nullptr )
14921 , flags( flags_ )
14922 , stage( stage_ )
14923 , layout( layout_ )
14924 , basePipelineHandle( basePipelineHandle_ )
14925 , basePipelineIndex( basePipelineIndex_ )
14926 {
14927 }
14928
14929 ComputePipelineCreateInfo( VkComputePipelineCreateInfo const & rhs )
14930 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014931 memcpy( this, &rhs, sizeof( ComputePipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014932 }
14933
14934 ComputePipelineCreateInfo& operator=( VkComputePipelineCreateInfo const & rhs )
14935 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060014936 memcpy( this, &rhs, sizeof( ComputePipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014937 return *this;
14938 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060014939 ComputePipelineCreateInfo& setPNext( const void* pNext_ )
14940 {
14941 pNext = pNext_;
14942 return *this;
14943 }
14944
14945 ComputePipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
14946 {
14947 flags = flags_;
14948 return *this;
14949 }
14950
14951 ComputePipelineCreateInfo& setStage( PipelineShaderStageCreateInfo stage_ )
14952 {
14953 stage = stage_;
14954 return *this;
14955 }
14956
14957 ComputePipelineCreateInfo& setLayout( PipelineLayout layout_ )
14958 {
14959 layout = layout_;
14960 return *this;
14961 }
14962
14963 ComputePipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
14964 {
14965 basePipelineHandle = basePipelineHandle_;
14966 return *this;
14967 }
14968
14969 ComputePipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
14970 {
14971 basePipelineIndex = basePipelineIndex_;
14972 return *this;
14973 }
14974
14975 operator const VkComputePipelineCreateInfo&() const
14976 {
14977 return *reinterpret_cast<const VkComputePipelineCreateInfo*>(this);
14978 }
14979
14980 bool operator==( ComputePipelineCreateInfo const& rhs ) const
14981 {
14982 return ( sType == rhs.sType )
14983 && ( pNext == rhs.pNext )
14984 && ( flags == rhs.flags )
14985 && ( stage == rhs.stage )
14986 && ( layout == rhs.layout )
14987 && ( basePipelineHandle == rhs.basePipelineHandle )
14988 && ( basePipelineIndex == rhs.basePipelineIndex );
14989 }
14990
14991 bool operator!=( ComputePipelineCreateInfo const& rhs ) const
14992 {
14993 return !operator==( rhs );
14994 }
14995
14996 private:
14997 StructureType sType;
14998
14999 public:
15000 const void* pNext;
15001 PipelineCreateFlags flags;
15002 PipelineShaderStageCreateInfo stage;
15003 PipelineLayout layout;
15004 Pipeline basePipelineHandle;
15005 int32_t basePipelineIndex;
15006 };
15007 static_assert( sizeof( ComputePipelineCreateInfo ) == sizeof( VkComputePipelineCreateInfo ), "struct and wrapper have different size!" );
15008
15009 enum class ColorComponentFlagBits
15010 {
15011 eR = VK_COLOR_COMPONENT_R_BIT,
15012 eG = VK_COLOR_COMPONENT_G_BIT,
15013 eB = VK_COLOR_COMPONENT_B_BIT,
15014 eA = VK_COLOR_COMPONENT_A_BIT
15015 };
15016
15017 using ColorComponentFlags = Flags<ColorComponentFlagBits, VkColorComponentFlags>;
15018
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015019 VULKAN_HPP_INLINE ColorComponentFlags operator|( ColorComponentFlagBits bit0, ColorComponentFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015020 {
15021 return ColorComponentFlags( bit0 ) | bit1;
15022 }
15023
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015024 VULKAN_HPP_INLINE ColorComponentFlags operator~( ColorComponentFlagBits bits )
15025 {
15026 return ~( ColorComponentFlags( bits ) );
15027 }
15028
15029 template <> struct FlagTraits<ColorComponentFlagBits>
15030 {
15031 enum
15032 {
15033 allFlags = VkFlags(ColorComponentFlagBits::eR) | VkFlags(ColorComponentFlagBits::eG) | VkFlags(ColorComponentFlagBits::eB) | VkFlags(ColorComponentFlagBits::eA)
15034 };
15035 };
15036
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015037 struct PipelineColorBlendAttachmentState
15038 {
15039 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() )
15040 : blendEnable( blendEnable_ )
15041 , srcColorBlendFactor( srcColorBlendFactor_ )
15042 , dstColorBlendFactor( dstColorBlendFactor_ )
15043 , colorBlendOp( colorBlendOp_ )
15044 , srcAlphaBlendFactor( srcAlphaBlendFactor_ )
15045 , dstAlphaBlendFactor( dstAlphaBlendFactor_ )
15046 , alphaBlendOp( alphaBlendOp_ )
15047 , colorWriteMask( colorWriteMask_ )
15048 {
15049 }
15050
15051 PipelineColorBlendAttachmentState( VkPipelineColorBlendAttachmentState const & rhs )
15052 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015053 memcpy( this, &rhs, sizeof( PipelineColorBlendAttachmentState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015054 }
15055
15056 PipelineColorBlendAttachmentState& operator=( VkPipelineColorBlendAttachmentState const & rhs )
15057 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015058 memcpy( this, &rhs, sizeof( PipelineColorBlendAttachmentState ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015059 return *this;
15060 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015061 PipelineColorBlendAttachmentState& setBlendEnable( Bool32 blendEnable_ )
15062 {
15063 blendEnable = blendEnable_;
15064 return *this;
15065 }
15066
15067 PipelineColorBlendAttachmentState& setSrcColorBlendFactor( BlendFactor srcColorBlendFactor_ )
15068 {
15069 srcColorBlendFactor = srcColorBlendFactor_;
15070 return *this;
15071 }
15072
15073 PipelineColorBlendAttachmentState& setDstColorBlendFactor( BlendFactor dstColorBlendFactor_ )
15074 {
15075 dstColorBlendFactor = dstColorBlendFactor_;
15076 return *this;
15077 }
15078
15079 PipelineColorBlendAttachmentState& setColorBlendOp( BlendOp colorBlendOp_ )
15080 {
15081 colorBlendOp = colorBlendOp_;
15082 return *this;
15083 }
15084
15085 PipelineColorBlendAttachmentState& setSrcAlphaBlendFactor( BlendFactor srcAlphaBlendFactor_ )
15086 {
15087 srcAlphaBlendFactor = srcAlphaBlendFactor_;
15088 return *this;
15089 }
15090
15091 PipelineColorBlendAttachmentState& setDstAlphaBlendFactor( BlendFactor dstAlphaBlendFactor_ )
15092 {
15093 dstAlphaBlendFactor = dstAlphaBlendFactor_;
15094 return *this;
15095 }
15096
15097 PipelineColorBlendAttachmentState& setAlphaBlendOp( BlendOp alphaBlendOp_ )
15098 {
15099 alphaBlendOp = alphaBlendOp_;
15100 return *this;
15101 }
15102
15103 PipelineColorBlendAttachmentState& setColorWriteMask( ColorComponentFlags colorWriteMask_ )
15104 {
15105 colorWriteMask = colorWriteMask_;
15106 return *this;
15107 }
15108
15109 operator const VkPipelineColorBlendAttachmentState&() const
15110 {
15111 return *reinterpret_cast<const VkPipelineColorBlendAttachmentState*>(this);
15112 }
15113
15114 bool operator==( PipelineColorBlendAttachmentState const& rhs ) const
15115 {
15116 return ( blendEnable == rhs.blendEnable )
15117 && ( srcColorBlendFactor == rhs.srcColorBlendFactor )
15118 && ( dstColorBlendFactor == rhs.dstColorBlendFactor )
15119 && ( colorBlendOp == rhs.colorBlendOp )
15120 && ( srcAlphaBlendFactor == rhs.srcAlphaBlendFactor )
15121 && ( dstAlphaBlendFactor == rhs.dstAlphaBlendFactor )
15122 && ( alphaBlendOp == rhs.alphaBlendOp )
15123 && ( colorWriteMask == rhs.colorWriteMask );
15124 }
15125
15126 bool operator!=( PipelineColorBlendAttachmentState const& rhs ) const
15127 {
15128 return !operator==( rhs );
15129 }
15130
15131 Bool32 blendEnable;
15132 BlendFactor srcColorBlendFactor;
15133 BlendFactor dstColorBlendFactor;
15134 BlendOp colorBlendOp;
15135 BlendFactor srcAlphaBlendFactor;
15136 BlendFactor dstAlphaBlendFactor;
15137 BlendOp alphaBlendOp;
15138 ColorComponentFlags colorWriteMask;
15139 };
15140 static_assert( sizeof( PipelineColorBlendAttachmentState ) == sizeof( VkPipelineColorBlendAttachmentState ), "struct and wrapper have different size!" );
15141
15142 struct PipelineColorBlendStateCreateInfo
15143 {
15144 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 } } )
15145 : sType( StructureType::ePipelineColorBlendStateCreateInfo )
15146 , pNext( nullptr )
15147 , flags( flags_ )
15148 , logicOpEnable( logicOpEnable_ )
15149 , logicOp( logicOp_ )
15150 , attachmentCount( attachmentCount_ )
15151 , pAttachments( pAttachments_ )
15152 {
15153 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
15154 }
15155
15156 PipelineColorBlendStateCreateInfo( VkPipelineColorBlendStateCreateInfo const & rhs )
15157 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015158 memcpy( this, &rhs, sizeof( PipelineColorBlendStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015159 }
15160
15161 PipelineColorBlendStateCreateInfo& operator=( VkPipelineColorBlendStateCreateInfo const & rhs )
15162 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015163 memcpy( this, &rhs, sizeof( PipelineColorBlendStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015164 return *this;
15165 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015166 PipelineColorBlendStateCreateInfo& setPNext( const void* pNext_ )
15167 {
15168 pNext = pNext_;
15169 return *this;
15170 }
15171
15172 PipelineColorBlendStateCreateInfo& setFlags( PipelineColorBlendStateCreateFlags flags_ )
15173 {
15174 flags = flags_;
15175 return *this;
15176 }
15177
15178 PipelineColorBlendStateCreateInfo& setLogicOpEnable( Bool32 logicOpEnable_ )
15179 {
15180 logicOpEnable = logicOpEnable_;
15181 return *this;
15182 }
15183
15184 PipelineColorBlendStateCreateInfo& setLogicOp( LogicOp logicOp_ )
15185 {
15186 logicOp = logicOp_;
15187 return *this;
15188 }
15189
15190 PipelineColorBlendStateCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
15191 {
15192 attachmentCount = attachmentCount_;
15193 return *this;
15194 }
15195
15196 PipelineColorBlendStateCreateInfo& setPAttachments( const PipelineColorBlendAttachmentState* pAttachments_ )
15197 {
15198 pAttachments = pAttachments_;
15199 return *this;
15200 }
15201
15202 PipelineColorBlendStateCreateInfo& setBlendConstants( std::array<float,4> blendConstants_ )
15203 {
15204 memcpy( &blendConstants, blendConstants_.data(), 4 * sizeof( float ) );
15205 return *this;
15206 }
15207
15208 operator const VkPipelineColorBlendStateCreateInfo&() const
15209 {
15210 return *reinterpret_cast<const VkPipelineColorBlendStateCreateInfo*>(this);
15211 }
15212
15213 bool operator==( PipelineColorBlendStateCreateInfo const& rhs ) const
15214 {
15215 return ( sType == rhs.sType )
15216 && ( pNext == rhs.pNext )
15217 && ( flags == rhs.flags )
15218 && ( logicOpEnable == rhs.logicOpEnable )
15219 && ( logicOp == rhs.logicOp )
15220 && ( attachmentCount == rhs.attachmentCount )
15221 && ( pAttachments == rhs.pAttachments )
15222 && ( memcmp( blendConstants, rhs.blendConstants, 4 * sizeof( float ) ) == 0 );
15223 }
15224
15225 bool operator!=( PipelineColorBlendStateCreateInfo const& rhs ) const
15226 {
15227 return !operator==( rhs );
15228 }
15229
15230 private:
15231 StructureType sType;
15232
15233 public:
15234 const void* pNext;
15235 PipelineColorBlendStateCreateFlags flags;
15236 Bool32 logicOpEnable;
15237 LogicOp logicOp;
15238 uint32_t attachmentCount;
15239 const PipelineColorBlendAttachmentState* pAttachments;
15240 float blendConstants[4];
15241 };
15242 static_assert( sizeof( PipelineColorBlendStateCreateInfo ) == sizeof( VkPipelineColorBlendStateCreateInfo ), "struct and wrapper have different size!" );
15243
15244 enum class FenceCreateFlagBits
15245 {
15246 eSignaled = VK_FENCE_CREATE_SIGNALED_BIT
15247 };
15248
15249 using FenceCreateFlags = Flags<FenceCreateFlagBits, VkFenceCreateFlags>;
15250
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015251 VULKAN_HPP_INLINE FenceCreateFlags operator|( FenceCreateFlagBits bit0, FenceCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015252 {
15253 return FenceCreateFlags( bit0 ) | bit1;
15254 }
15255
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015256 VULKAN_HPP_INLINE FenceCreateFlags operator~( FenceCreateFlagBits bits )
15257 {
15258 return ~( FenceCreateFlags( bits ) );
15259 }
15260
15261 template <> struct FlagTraits<FenceCreateFlagBits>
15262 {
15263 enum
15264 {
15265 allFlags = VkFlags(FenceCreateFlagBits::eSignaled)
15266 };
15267 };
15268
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015269 struct FenceCreateInfo
15270 {
15271 FenceCreateInfo( FenceCreateFlags flags_ = FenceCreateFlags() )
15272 : sType( StructureType::eFenceCreateInfo )
15273 , pNext( nullptr )
15274 , flags( flags_ )
15275 {
15276 }
15277
15278 FenceCreateInfo( VkFenceCreateInfo const & rhs )
15279 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015280 memcpy( this, &rhs, sizeof( FenceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015281 }
15282
15283 FenceCreateInfo& operator=( VkFenceCreateInfo const & rhs )
15284 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015285 memcpy( this, &rhs, sizeof( FenceCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015286 return *this;
15287 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015288 FenceCreateInfo& setPNext( const void* pNext_ )
15289 {
15290 pNext = pNext_;
15291 return *this;
15292 }
15293
15294 FenceCreateInfo& setFlags( FenceCreateFlags flags_ )
15295 {
15296 flags = flags_;
15297 return *this;
15298 }
15299
15300 operator const VkFenceCreateInfo&() const
15301 {
15302 return *reinterpret_cast<const VkFenceCreateInfo*>(this);
15303 }
15304
15305 bool operator==( FenceCreateInfo const& rhs ) const
15306 {
15307 return ( sType == rhs.sType )
15308 && ( pNext == rhs.pNext )
15309 && ( flags == rhs.flags );
15310 }
15311
15312 bool operator!=( FenceCreateInfo const& rhs ) const
15313 {
15314 return !operator==( rhs );
15315 }
15316
15317 private:
15318 StructureType sType;
15319
15320 public:
15321 const void* pNext;
15322 FenceCreateFlags flags;
15323 };
15324 static_assert( sizeof( FenceCreateInfo ) == sizeof( VkFenceCreateInfo ), "struct and wrapper have different size!" );
15325
15326 enum class FormatFeatureFlagBits
15327 {
15328 eSampledImage = VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT,
15329 eStorageImage = VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT,
15330 eStorageImageAtomic = VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT,
15331 eUniformTexelBuffer = VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT,
15332 eStorageTexelBuffer = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT,
15333 eStorageTexelBufferAtomic = VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT,
15334 eVertexBuffer = VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT,
15335 eColorAttachment = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT,
15336 eColorAttachmentBlend = VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT,
15337 eDepthStencilAttachment = VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT,
15338 eBlitSrc = VK_FORMAT_FEATURE_BLIT_SRC_BIT,
15339 eBlitDst = VK_FORMAT_FEATURE_BLIT_DST_BIT,
15340 eSampledImageFilterLinear = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT,
Mark Young39389872017-01-19 21:10:49 -070015341 eSampledImageFilterCubicIMG = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG,
15342 eTransferSrcKHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR,
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060015343 eTransferDstKHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR,
15344 eSampledImageFilterMinmaxEXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015345 };
15346
15347 using FormatFeatureFlags = Flags<FormatFeatureFlagBits, VkFormatFeatureFlags>;
15348
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015349 VULKAN_HPP_INLINE FormatFeatureFlags operator|( FormatFeatureFlagBits bit0, FormatFeatureFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015350 {
15351 return FormatFeatureFlags( bit0 ) | bit1;
15352 }
15353
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015354 VULKAN_HPP_INLINE FormatFeatureFlags operator~( FormatFeatureFlagBits bits )
15355 {
15356 return ~( FormatFeatureFlags( bits ) );
15357 }
15358
15359 template <> struct FlagTraits<FormatFeatureFlagBits>
15360 {
15361 enum
15362 {
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060015363 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)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015364 };
15365 };
15366
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015367 struct FormatProperties
15368 {
15369 operator const VkFormatProperties&() const
15370 {
15371 return *reinterpret_cast<const VkFormatProperties*>(this);
15372 }
15373
15374 bool operator==( FormatProperties const& rhs ) const
15375 {
15376 return ( linearTilingFeatures == rhs.linearTilingFeatures )
15377 && ( optimalTilingFeatures == rhs.optimalTilingFeatures )
15378 && ( bufferFeatures == rhs.bufferFeatures );
15379 }
15380
15381 bool operator!=( FormatProperties const& rhs ) const
15382 {
15383 return !operator==( rhs );
15384 }
15385
15386 FormatFeatureFlags linearTilingFeatures;
15387 FormatFeatureFlags optimalTilingFeatures;
15388 FormatFeatureFlags bufferFeatures;
15389 };
15390 static_assert( sizeof( FormatProperties ) == sizeof( VkFormatProperties ), "struct and wrapper have different size!" );
15391
Mark Young39389872017-01-19 21:10:49 -070015392 struct FormatProperties2KHR
15393 {
15394 operator const VkFormatProperties2KHR&() const
15395 {
15396 return *reinterpret_cast<const VkFormatProperties2KHR*>(this);
15397 }
15398
15399 bool operator==( FormatProperties2KHR const& rhs ) const
15400 {
15401 return ( sType == rhs.sType )
15402 && ( pNext == rhs.pNext )
15403 && ( formatProperties == rhs.formatProperties );
15404 }
15405
15406 bool operator!=( FormatProperties2KHR const& rhs ) const
15407 {
15408 return !operator==( rhs );
15409 }
15410
15411 private:
15412 StructureType sType;
15413
15414 public:
15415 void* pNext;
15416 FormatProperties formatProperties;
15417 };
15418 static_assert( sizeof( FormatProperties2KHR ) == sizeof( VkFormatProperties2KHR ), "struct and wrapper have different size!" );
15419
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015420 enum class QueryControlFlagBits
15421 {
15422 ePrecise = VK_QUERY_CONTROL_PRECISE_BIT
15423 };
15424
15425 using QueryControlFlags = Flags<QueryControlFlagBits, VkQueryControlFlags>;
15426
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015427 VULKAN_HPP_INLINE QueryControlFlags operator|( QueryControlFlagBits bit0, QueryControlFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015428 {
15429 return QueryControlFlags( bit0 ) | bit1;
15430 }
15431
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015432 VULKAN_HPP_INLINE QueryControlFlags operator~( QueryControlFlagBits bits )
15433 {
15434 return ~( QueryControlFlags( bits ) );
15435 }
15436
15437 template <> struct FlagTraits<QueryControlFlagBits>
15438 {
15439 enum
15440 {
15441 allFlags = VkFlags(QueryControlFlagBits::ePrecise)
15442 };
15443 };
15444
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015445 enum class QueryResultFlagBits
15446 {
15447 e64 = VK_QUERY_RESULT_64_BIT,
15448 eWait = VK_QUERY_RESULT_WAIT_BIT,
15449 eWithAvailability = VK_QUERY_RESULT_WITH_AVAILABILITY_BIT,
15450 ePartial = VK_QUERY_RESULT_PARTIAL_BIT
15451 };
15452
15453 using QueryResultFlags = Flags<QueryResultFlagBits, VkQueryResultFlags>;
15454
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015455 VULKAN_HPP_INLINE QueryResultFlags operator|( QueryResultFlagBits bit0, QueryResultFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015456 {
15457 return QueryResultFlags( bit0 ) | bit1;
15458 }
15459
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015460 VULKAN_HPP_INLINE QueryResultFlags operator~( QueryResultFlagBits bits )
15461 {
15462 return ~( QueryResultFlags( bits ) );
15463 }
15464
15465 template <> struct FlagTraits<QueryResultFlagBits>
15466 {
15467 enum
15468 {
15469 allFlags = VkFlags(QueryResultFlagBits::e64) | VkFlags(QueryResultFlagBits::eWait) | VkFlags(QueryResultFlagBits::eWithAvailability) | VkFlags(QueryResultFlagBits::ePartial)
15470 };
15471 };
15472
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015473 enum class CommandBufferUsageFlagBits
15474 {
15475 eOneTimeSubmit = VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT,
15476 eRenderPassContinue = VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT,
15477 eSimultaneousUse = VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT
15478 };
15479
15480 using CommandBufferUsageFlags = Flags<CommandBufferUsageFlagBits, VkCommandBufferUsageFlags>;
15481
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015482 VULKAN_HPP_INLINE CommandBufferUsageFlags operator|( CommandBufferUsageFlagBits bit0, CommandBufferUsageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015483 {
15484 return CommandBufferUsageFlags( bit0 ) | bit1;
15485 }
15486
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015487 VULKAN_HPP_INLINE CommandBufferUsageFlags operator~( CommandBufferUsageFlagBits bits )
15488 {
15489 return ~( CommandBufferUsageFlags( bits ) );
15490 }
15491
15492 template <> struct FlagTraits<CommandBufferUsageFlagBits>
15493 {
15494 enum
15495 {
15496 allFlags = VkFlags(CommandBufferUsageFlagBits::eOneTimeSubmit) | VkFlags(CommandBufferUsageFlagBits::eRenderPassContinue) | VkFlags(CommandBufferUsageFlagBits::eSimultaneousUse)
15497 };
15498 };
15499
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015500 enum class QueryPipelineStatisticFlagBits
15501 {
15502 eInputAssemblyVertices = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT,
15503 eInputAssemblyPrimitives = VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT,
15504 eVertexShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT,
15505 eGeometryShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT,
15506 eGeometryShaderPrimitives = VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT,
15507 eClippingInvocations = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT,
15508 eClippingPrimitives = VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT,
15509 eFragmentShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT,
15510 eTessellationControlShaderPatches = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT,
15511 eTessellationEvaluationShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT,
15512 eComputeShaderInvocations = VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT
15513 };
15514
15515 using QueryPipelineStatisticFlags = Flags<QueryPipelineStatisticFlagBits, VkQueryPipelineStatisticFlags>;
15516
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015517 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator|( QueryPipelineStatisticFlagBits bit0, QueryPipelineStatisticFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015518 {
15519 return QueryPipelineStatisticFlags( bit0 ) | bit1;
15520 }
15521
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015522 VULKAN_HPP_INLINE QueryPipelineStatisticFlags operator~( QueryPipelineStatisticFlagBits bits )
15523 {
15524 return ~( QueryPipelineStatisticFlags( bits ) );
15525 }
15526
15527 template <> struct FlagTraits<QueryPipelineStatisticFlagBits>
15528 {
15529 enum
15530 {
15531 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)
15532 };
15533 };
15534
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015535 struct CommandBufferInheritanceInfo
15536 {
15537 CommandBufferInheritanceInfo( RenderPass renderPass_ = RenderPass(), uint32_t subpass_ = 0, Framebuffer framebuffer_ = Framebuffer(), Bool32 occlusionQueryEnable_ = 0, QueryControlFlags queryFlags_ = QueryControlFlags(), QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
15538 : sType( StructureType::eCommandBufferInheritanceInfo )
15539 , pNext( nullptr )
15540 , renderPass( renderPass_ )
15541 , subpass( subpass_ )
15542 , framebuffer( framebuffer_ )
15543 , occlusionQueryEnable( occlusionQueryEnable_ )
15544 , queryFlags( queryFlags_ )
15545 , pipelineStatistics( pipelineStatistics_ )
15546 {
15547 }
15548
15549 CommandBufferInheritanceInfo( VkCommandBufferInheritanceInfo const & rhs )
15550 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015551 memcpy( this, &rhs, sizeof( CommandBufferInheritanceInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015552 }
15553
15554 CommandBufferInheritanceInfo& operator=( VkCommandBufferInheritanceInfo const & rhs )
15555 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015556 memcpy( this, &rhs, sizeof( CommandBufferInheritanceInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015557 return *this;
15558 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015559 CommandBufferInheritanceInfo& setPNext( const void* pNext_ )
15560 {
15561 pNext = pNext_;
15562 return *this;
15563 }
15564
15565 CommandBufferInheritanceInfo& setRenderPass( RenderPass renderPass_ )
15566 {
15567 renderPass = renderPass_;
15568 return *this;
15569 }
15570
15571 CommandBufferInheritanceInfo& setSubpass( uint32_t subpass_ )
15572 {
15573 subpass = subpass_;
15574 return *this;
15575 }
15576
15577 CommandBufferInheritanceInfo& setFramebuffer( Framebuffer framebuffer_ )
15578 {
15579 framebuffer = framebuffer_;
15580 return *this;
15581 }
15582
15583 CommandBufferInheritanceInfo& setOcclusionQueryEnable( Bool32 occlusionQueryEnable_ )
15584 {
15585 occlusionQueryEnable = occlusionQueryEnable_;
15586 return *this;
15587 }
15588
15589 CommandBufferInheritanceInfo& setQueryFlags( QueryControlFlags queryFlags_ )
15590 {
15591 queryFlags = queryFlags_;
15592 return *this;
15593 }
15594
15595 CommandBufferInheritanceInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
15596 {
15597 pipelineStatistics = pipelineStatistics_;
15598 return *this;
15599 }
15600
15601 operator const VkCommandBufferInheritanceInfo&() const
15602 {
15603 return *reinterpret_cast<const VkCommandBufferInheritanceInfo*>(this);
15604 }
15605
15606 bool operator==( CommandBufferInheritanceInfo const& rhs ) const
15607 {
15608 return ( sType == rhs.sType )
15609 && ( pNext == rhs.pNext )
15610 && ( renderPass == rhs.renderPass )
15611 && ( subpass == rhs.subpass )
15612 && ( framebuffer == rhs.framebuffer )
15613 && ( occlusionQueryEnable == rhs.occlusionQueryEnable )
15614 && ( queryFlags == rhs.queryFlags )
15615 && ( pipelineStatistics == rhs.pipelineStatistics );
15616 }
15617
15618 bool operator!=( CommandBufferInheritanceInfo const& rhs ) const
15619 {
15620 return !operator==( rhs );
15621 }
15622
15623 private:
15624 StructureType sType;
15625
15626 public:
15627 const void* pNext;
15628 RenderPass renderPass;
15629 uint32_t subpass;
15630 Framebuffer framebuffer;
15631 Bool32 occlusionQueryEnable;
15632 QueryControlFlags queryFlags;
15633 QueryPipelineStatisticFlags pipelineStatistics;
15634 };
15635 static_assert( sizeof( CommandBufferInheritanceInfo ) == sizeof( VkCommandBufferInheritanceInfo ), "struct and wrapper have different size!" );
15636
15637 struct CommandBufferBeginInfo
15638 {
15639 CommandBufferBeginInfo( CommandBufferUsageFlags flags_ = CommandBufferUsageFlags(), const CommandBufferInheritanceInfo* pInheritanceInfo_ = nullptr )
15640 : sType( StructureType::eCommandBufferBeginInfo )
15641 , pNext( nullptr )
15642 , flags( flags_ )
15643 , pInheritanceInfo( pInheritanceInfo_ )
15644 {
15645 }
15646
15647 CommandBufferBeginInfo( VkCommandBufferBeginInfo const & rhs )
15648 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015649 memcpy( this, &rhs, sizeof( CommandBufferBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015650 }
15651
15652 CommandBufferBeginInfo& operator=( VkCommandBufferBeginInfo const & rhs )
15653 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015654 memcpy( this, &rhs, sizeof( CommandBufferBeginInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015655 return *this;
15656 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015657 CommandBufferBeginInfo& setPNext( const void* pNext_ )
15658 {
15659 pNext = pNext_;
15660 return *this;
15661 }
15662
15663 CommandBufferBeginInfo& setFlags( CommandBufferUsageFlags flags_ )
15664 {
15665 flags = flags_;
15666 return *this;
15667 }
15668
15669 CommandBufferBeginInfo& setPInheritanceInfo( const CommandBufferInheritanceInfo* pInheritanceInfo_ )
15670 {
15671 pInheritanceInfo = pInheritanceInfo_;
15672 return *this;
15673 }
15674
15675 operator const VkCommandBufferBeginInfo&() const
15676 {
15677 return *reinterpret_cast<const VkCommandBufferBeginInfo*>(this);
15678 }
15679
15680 bool operator==( CommandBufferBeginInfo const& rhs ) const
15681 {
15682 return ( sType == rhs.sType )
15683 && ( pNext == rhs.pNext )
15684 && ( flags == rhs.flags )
15685 && ( pInheritanceInfo == rhs.pInheritanceInfo );
15686 }
15687
15688 bool operator!=( CommandBufferBeginInfo const& rhs ) const
15689 {
15690 return !operator==( rhs );
15691 }
15692
15693 private:
15694 StructureType sType;
15695
15696 public:
15697 const void* pNext;
15698 CommandBufferUsageFlags flags;
15699 const CommandBufferInheritanceInfo* pInheritanceInfo;
15700 };
15701 static_assert( sizeof( CommandBufferBeginInfo ) == sizeof( VkCommandBufferBeginInfo ), "struct and wrapper have different size!" );
15702
15703 struct QueryPoolCreateInfo
15704 {
15705 QueryPoolCreateInfo( QueryPoolCreateFlags flags_ = QueryPoolCreateFlags(), QueryType queryType_ = QueryType::eOcclusion, uint32_t queryCount_ = 0, QueryPipelineStatisticFlags pipelineStatistics_ = QueryPipelineStatisticFlags() )
15706 : sType( StructureType::eQueryPoolCreateInfo )
15707 , pNext( nullptr )
15708 , flags( flags_ )
15709 , queryType( queryType_ )
15710 , queryCount( queryCount_ )
15711 , pipelineStatistics( pipelineStatistics_ )
15712 {
15713 }
15714
15715 QueryPoolCreateInfo( VkQueryPoolCreateInfo const & rhs )
15716 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015717 memcpy( this, &rhs, sizeof( QueryPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015718 }
15719
15720 QueryPoolCreateInfo& operator=( VkQueryPoolCreateInfo const & rhs )
15721 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015722 memcpy( this, &rhs, sizeof( QueryPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015723 return *this;
15724 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015725 QueryPoolCreateInfo& setPNext( const void* pNext_ )
15726 {
15727 pNext = pNext_;
15728 return *this;
15729 }
15730
15731 QueryPoolCreateInfo& setFlags( QueryPoolCreateFlags flags_ )
15732 {
15733 flags = flags_;
15734 return *this;
15735 }
15736
15737 QueryPoolCreateInfo& setQueryType( QueryType queryType_ )
15738 {
15739 queryType = queryType_;
15740 return *this;
15741 }
15742
15743 QueryPoolCreateInfo& setQueryCount( uint32_t queryCount_ )
15744 {
15745 queryCount = queryCount_;
15746 return *this;
15747 }
15748
15749 QueryPoolCreateInfo& setPipelineStatistics( QueryPipelineStatisticFlags pipelineStatistics_ )
15750 {
15751 pipelineStatistics = pipelineStatistics_;
15752 return *this;
15753 }
15754
15755 operator const VkQueryPoolCreateInfo&() const
15756 {
15757 return *reinterpret_cast<const VkQueryPoolCreateInfo*>(this);
15758 }
15759
15760 bool operator==( QueryPoolCreateInfo const& rhs ) const
15761 {
15762 return ( sType == rhs.sType )
15763 && ( pNext == rhs.pNext )
15764 && ( flags == rhs.flags )
15765 && ( queryType == rhs.queryType )
15766 && ( queryCount == rhs.queryCount )
15767 && ( pipelineStatistics == rhs.pipelineStatistics );
15768 }
15769
15770 bool operator!=( QueryPoolCreateInfo const& rhs ) const
15771 {
15772 return !operator==( rhs );
15773 }
15774
15775 private:
15776 StructureType sType;
15777
15778 public:
15779 const void* pNext;
15780 QueryPoolCreateFlags flags;
15781 QueryType queryType;
15782 uint32_t queryCount;
15783 QueryPipelineStatisticFlags pipelineStatistics;
15784 };
15785 static_assert( sizeof( QueryPoolCreateInfo ) == sizeof( VkQueryPoolCreateInfo ), "struct and wrapper have different size!" );
15786
15787 enum class ImageAspectFlagBits
15788 {
15789 eColor = VK_IMAGE_ASPECT_COLOR_BIT,
15790 eDepth = VK_IMAGE_ASPECT_DEPTH_BIT,
15791 eStencil = VK_IMAGE_ASPECT_STENCIL_BIT,
15792 eMetadata = VK_IMAGE_ASPECT_METADATA_BIT
15793 };
15794
15795 using ImageAspectFlags = Flags<ImageAspectFlagBits, VkImageAspectFlags>;
15796
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015797 VULKAN_HPP_INLINE ImageAspectFlags operator|( ImageAspectFlagBits bit0, ImageAspectFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015798 {
15799 return ImageAspectFlags( bit0 ) | bit1;
15800 }
15801
Mark Lobodzinski2d589822016-12-12 09:44:34 -070015802 VULKAN_HPP_INLINE ImageAspectFlags operator~( ImageAspectFlagBits bits )
15803 {
15804 return ~( ImageAspectFlags( bits ) );
15805 }
15806
15807 template <> struct FlagTraits<ImageAspectFlagBits>
15808 {
15809 enum
15810 {
15811 allFlags = VkFlags(ImageAspectFlagBits::eColor) | VkFlags(ImageAspectFlagBits::eDepth) | VkFlags(ImageAspectFlagBits::eStencil) | VkFlags(ImageAspectFlagBits::eMetadata)
15812 };
15813 };
15814
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015815 struct ImageSubresource
15816 {
15817 ImageSubresource( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t mipLevel_ = 0, uint32_t arrayLayer_ = 0 )
15818 : aspectMask( aspectMask_ )
15819 , mipLevel( mipLevel_ )
15820 , arrayLayer( arrayLayer_ )
15821 {
15822 }
15823
15824 ImageSubresource( VkImageSubresource const & rhs )
15825 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015826 memcpy( this, &rhs, sizeof( ImageSubresource ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015827 }
15828
15829 ImageSubresource& operator=( VkImageSubresource const & rhs )
15830 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015831 memcpy( this, &rhs, sizeof( ImageSubresource ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015832 return *this;
15833 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015834 ImageSubresource& setAspectMask( ImageAspectFlags aspectMask_ )
15835 {
15836 aspectMask = aspectMask_;
15837 return *this;
15838 }
15839
15840 ImageSubresource& setMipLevel( uint32_t mipLevel_ )
15841 {
15842 mipLevel = mipLevel_;
15843 return *this;
15844 }
15845
15846 ImageSubresource& setArrayLayer( uint32_t arrayLayer_ )
15847 {
15848 arrayLayer = arrayLayer_;
15849 return *this;
15850 }
15851
15852 operator const VkImageSubresource&() const
15853 {
15854 return *reinterpret_cast<const VkImageSubresource*>(this);
15855 }
15856
15857 bool operator==( ImageSubresource const& rhs ) const
15858 {
15859 return ( aspectMask == rhs.aspectMask )
15860 && ( mipLevel == rhs.mipLevel )
15861 && ( arrayLayer == rhs.arrayLayer );
15862 }
15863
15864 bool operator!=( ImageSubresource const& rhs ) const
15865 {
15866 return !operator==( rhs );
15867 }
15868
15869 ImageAspectFlags aspectMask;
15870 uint32_t mipLevel;
15871 uint32_t arrayLayer;
15872 };
15873 static_assert( sizeof( ImageSubresource ) == sizeof( VkImageSubresource ), "struct and wrapper have different size!" );
15874
15875 struct ImageSubresourceLayers
15876 {
15877 ImageSubresourceLayers( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t mipLevel_ = 0, uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
15878 : aspectMask( aspectMask_ )
15879 , mipLevel( mipLevel_ )
15880 , baseArrayLayer( baseArrayLayer_ )
15881 , layerCount( layerCount_ )
15882 {
15883 }
15884
15885 ImageSubresourceLayers( VkImageSubresourceLayers const & rhs )
15886 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015887 memcpy( this, &rhs, sizeof( ImageSubresourceLayers ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015888 }
15889
15890 ImageSubresourceLayers& operator=( VkImageSubresourceLayers const & rhs )
15891 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015892 memcpy( this, &rhs, sizeof( ImageSubresourceLayers ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015893 return *this;
15894 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015895 ImageSubresourceLayers& setAspectMask( ImageAspectFlags aspectMask_ )
15896 {
15897 aspectMask = aspectMask_;
15898 return *this;
15899 }
15900
15901 ImageSubresourceLayers& setMipLevel( uint32_t mipLevel_ )
15902 {
15903 mipLevel = mipLevel_;
15904 return *this;
15905 }
15906
15907 ImageSubresourceLayers& setBaseArrayLayer( uint32_t baseArrayLayer_ )
15908 {
15909 baseArrayLayer = baseArrayLayer_;
15910 return *this;
15911 }
15912
15913 ImageSubresourceLayers& setLayerCount( uint32_t layerCount_ )
15914 {
15915 layerCount = layerCount_;
15916 return *this;
15917 }
15918
15919 operator const VkImageSubresourceLayers&() const
15920 {
15921 return *reinterpret_cast<const VkImageSubresourceLayers*>(this);
15922 }
15923
15924 bool operator==( ImageSubresourceLayers const& rhs ) const
15925 {
15926 return ( aspectMask == rhs.aspectMask )
15927 && ( mipLevel == rhs.mipLevel )
15928 && ( baseArrayLayer == rhs.baseArrayLayer )
15929 && ( layerCount == rhs.layerCount );
15930 }
15931
15932 bool operator!=( ImageSubresourceLayers const& rhs ) const
15933 {
15934 return !operator==( rhs );
15935 }
15936
15937 ImageAspectFlags aspectMask;
15938 uint32_t mipLevel;
15939 uint32_t baseArrayLayer;
15940 uint32_t layerCount;
15941 };
15942 static_assert( sizeof( ImageSubresourceLayers ) == sizeof( VkImageSubresourceLayers ), "struct and wrapper have different size!" );
15943
15944 struct ImageSubresourceRange
15945 {
15946 ImageSubresourceRange( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t baseMipLevel_ = 0, uint32_t levelCount_ = 0, uint32_t baseArrayLayer_ = 0, uint32_t layerCount_ = 0 )
15947 : aspectMask( aspectMask_ )
15948 , baseMipLevel( baseMipLevel_ )
15949 , levelCount( levelCount_ )
15950 , baseArrayLayer( baseArrayLayer_ )
15951 , layerCount( layerCount_ )
15952 {
15953 }
15954
15955 ImageSubresourceRange( VkImageSubresourceRange const & rhs )
15956 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015957 memcpy( this, &rhs, sizeof( ImageSubresourceRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015958 }
15959
15960 ImageSubresourceRange& operator=( VkImageSubresourceRange const & rhs )
15961 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060015962 memcpy( this, &rhs, sizeof( ImageSubresourceRange ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015963 return *this;
15964 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060015965 ImageSubresourceRange& setAspectMask( ImageAspectFlags aspectMask_ )
15966 {
15967 aspectMask = aspectMask_;
15968 return *this;
15969 }
15970
15971 ImageSubresourceRange& setBaseMipLevel( uint32_t baseMipLevel_ )
15972 {
15973 baseMipLevel = baseMipLevel_;
15974 return *this;
15975 }
15976
15977 ImageSubresourceRange& setLevelCount( uint32_t levelCount_ )
15978 {
15979 levelCount = levelCount_;
15980 return *this;
15981 }
15982
15983 ImageSubresourceRange& setBaseArrayLayer( uint32_t baseArrayLayer_ )
15984 {
15985 baseArrayLayer = baseArrayLayer_;
15986 return *this;
15987 }
15988
15989 ImageSubresourceRange& setLayerCount( uint32_t layerCount_ )
15990 {
15991 layerCount = layerCount_;
15992 return *this;
15993 }
15994
15995 operator const VkImageSubresourceRange&() const
15996 {
15997 return *reinterpret_cast<const VkImageSubresourceRange*>(this);
15998 }
15999
16000 bool operator==( ImageSubresourceRange const& rhs ) const
16001 {
16002 return ( aspectMask == rhs.aspectMask )
16003 && ( baseMipLevel == rhs.baseMipLevel )
16004 && ( levelCount == rhs.levelCount )
16005 && ( baseArrayLayer == rhs.baseArrayLayer )
16006 && ( layerCount == rhs.layerCount );
16007 }
16008
16009 bool operator!=( ImageSubresourceRange const& rhs ) const
16010 {
16011 return !operator==( rhs );
16012 }
16013
16014 ImageAspectFlags aspectMask;
16015 uint32_t baseMipLevel;
16016 uint32_t levelCount;
16017 uint32_t baseArrayLayer;
16018 uint32_t layerCount;
16019 };
16020 static_assert( sizeof( ImageSubresourceRange ) == sizeof( VkImageSubresourceRange ), "struct and wrapper have different size!" );
16021
16022 struct ImageMemoryBarrier
16023 {
16024 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() )
16025 : sType( StructureType::eImageMemoryBarrier )
16026 , pNext( nullptr )
16027 , srcAccessMask( srcAccessMask_ )
16028 , dstAccessMask( dstAccessMask_ )
16029 , oldLayout( oldLayout_ )
16030 , newLayout( newLayout_ )
16031 , srcQueueFamilyIndex( srcQueueFamilyIndex_ )
16032 , dstQueueFamilyIndex( dstQueueFamilyIndex_ )
16033 , image( image_ )
16034 , subresourceRange( subresourceRange_ )
16035 {
16036 }
16037
16038 ImageMemoryBarrier( VkImageMemoryBarrier const & rhs )
16039 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016040 memcpy( this, &rhs, sizeof( ImageMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016041 }
16042
16043 ImageMemoryBarrier& operator=( VkImageMemoryBarrier const & rhs )
16044 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016045 memcpy( this, &rhs, sizeof( ImageMemoryBarrier ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016046 return *this;
16047 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016048 ImageMemoryBarrier& setPNext( const void* pNext_ )
16049 {
16050 pNext = pNext_;
16051 return *this;
16052 }
16053
16054 ImageMemoryBarrier& setSrcAccessMask( AccessFlags srcAccessMask_ )
16055 {
16056 srcAccessMask = srcAccessMask_;
16057 return *this;
16058 }
16059
16060 ImageMemoryBarrier& setDstAccessMask( AccessFlags dstAccessMask_ )
16061 {
16062 dstAccessMask = dstAccessMask_;
16063 return *this;
16064 }
16065
16066 ImageMemoryBarrier& setOldLayout( ImageLayout oldLayout_ )
16067 {
16068 oldLayout = oldLayout_;
16069 return *this;
16070 }
16071
16072 ImageMemoryBarrier& setNewLayout( ImageLayout newLayout_ )
16073 {
16074 newLayout = newLayout_;
16075 return *this;
16076 }
16077
16078 ImageMemoryBarrier& setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ )
16079 {
16080 srcQueueFamilyIndex = srcQueueFamilyIndex_;
16081 return *this;
16082 }
16083
16084 ImageMemoryBarrier& setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ )
16085 {
16086 dstQueueFamilyIndex = dstQueueFamilyIndex_;
16087 return *this;
16088 }
16089
16090 ImageMemoryBarrier& setImage( Image image_ )
16091 {
16092 image = image_;
16093 return *this;
16094 }
16095
16096 ImageMemoryBarrier& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
16097 {
16098 subresourceRange = subresourceRange_;
16099 return *this;
16100 }
16101
16102 operator const VkImageMemoryBarrier&() const
16103 {
16104 return *reinterpret_cast<const VkImageMemoryBarrier*>(this);
16105 }
16106
16107 bool operator==( ImageMemoryBarrier const& rhs ) const
16108 {
16109 return ( sType == rhs.sType )
16110 && ( pNext == rhs.pNext )
16111 && ( srcAccessMask == rhs.srcAccessMask )
16112 && ( dstAccessMask == rhs.dstAccessMask )
16113 && ( oldLayout == rhs.oldLayout )
16114 && ( newLayout == rhs.newLayout )
16115 && ( srcQueueFamilyIndex == rhs.srcQueueFamilyIndex )
16116 && ( dstQueueFamilyIndex == rhs.dstQueueFamilyIndex )
16117 && ( image == rhs.image )
16118 && ( subresourceRange == rhs.subresourceRange );
16119 }
16120
16121 bool operator!=( ImageMemoryBarrier const& rhs ) const
16122 {
16123 return !operator==( rhs );
16124 }
16125
16126 private:
16127 StructureType sType;
16128
16129 public:
16130 const void* pNext;
16131 AccessFlags srcAccessMask;
16132 AccessFlags dstAccessMask;
16133 ImageLayout oldLayout;
16134 ImageLayout newLayout;
16135 uint32_t srcQueueFamilyIndex;
16136 uint32_t dstQueueFamilyIndex;
16137 Image image;
16138 ImageSubresourceRange subresourceRange;
16139 };
16140 static_assert( sizeof( ImageMemoryBarrier ) == sizeof( VkImageMemoryBarrier ), "struct and wrapper have different size!" );
16141
16142 struct ImageViewCreateInfo
16143 {
16144 ImageViewCreateInfo( ImageViewCreateFlags flags_ = ImageViewCreateFlags(), Image image_ = Image(), ImageViewType viewType_ = ImageViewType::e1D, Format format_ = Format::eUndefined, ComponentMapping components_ = ComponentMapping(), ImageSubresourceRange subresourceRange_ = ImageSubresourceRange() )
16145 : sType( StructureType::eImageViewCreateInfo )
16146 , pNext( nullptr )
16147 , flags( flags_ )
16148 , image( image_ )
16149 , viewType( viewType_ )
16150 , format( format_ )
16151 , components( components_ )
16152 , subresourceRange( subresourceRange_ )
16153 {
16154 }
16155
16156 ImageViewCreateInfo( VkImageViewCreateInfo const & rhs )
16157 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016158 memcpy( this, &rhs, sizeof( ImageViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016159 }
16160
16161 ImageViewCreateInfo& operator=( VkImageViewCreateInfo const & rhs )
16162 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016163 memcpy( this, &rhs, sizeof( ImageViewCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016164 return *this;
16165 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016166 ImageViewCreateInfo& setPNext( const void* pNext_ )
16167 {
16168 pNext = pNext_;
16169 return *this;
16170 }
16171
16172 ImageViewCreateInfo& setFlags( ImageViewCreateFlags flags_ )
16173 {
16174 flags = flags_;
16175 return *this;
16176 }
16177
16178 ImageViewCreateInfo& setImage( Image image_ )
16179 {
16180 image = image_;
16181 return *this;
16182 }
16183
16184 ImageViewCreateInfo& setViewType( ImageViewType viewType_ )
16185 {
16186 viewType = viewType_;
16187 return *this;
16188 }
16189
16190 ImageViewCreateInfo& setFormat( Format format_ )
16191 {
16192 format = format_;
16193 return *this;
16194 }
16195
16196 ImageViewCreateInfo& setComponents( ComponentMapping components_ )
16197 {
16198 components = components_;
16199 return *this;
16200 }
16201
16202 ImageViewCreateInfo& setSubresourceRange( ImageSubresourceRange subresourceRange_ )
16203 {
16204 subresourceRange = subresourceRange_;
16205 return *this;
16206 }
16207
16208 operator const VkImageViewCreateInfo&() const
16209 {
16210 return *reinterpret_cast<const VkImageViewCreateInfo*>(this);
16211 }
16212
16213 bool operator==( ImageViewCreateInfo const& rhs ) const
16214 {
16215 return ( sType == rhs.sType )
16216 && ( pNext == rhs.pNext )
16217 && ( flags == rhs.flags )
16218 && ( image == rhs.image )
16219 && ( viewType == rhs.viewType )
16220 && ( format == rhs.format )
16221 && ( components == rhs.components )
16222 && ( subresourceRange == rhs.subresourceRange );
16223 }
16224
16225 bool operator!=( ImageViewCreateInfo const& rhs ) const
16226 {
16227 return !operator==( rhs );
16228 }
16229
16230 private:
16231 StructureType sType;
16232
16233 public:
16234 const void* pNext;
16235 ImageViewCreateFlags flags;
16236 Image image;
16237 ImageViewType viewType;
16238 Format format;
16239 ComponentMapping components;
16240 ImageSubresourceRange subresourceRange;
16241 };
16242 static_assert( sizeof( ImageViewCreateInfo ) == sizeof( VkImageViewCreateInfo ), "struct and wrapper have different size!" );
16243
16244 struct ImageCopy
16245 {
16246 ImageCopy( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), Offset3D srcOffset_ = Offset3D(), ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), Offset3D dstOffset_ = Offset3D(), Extent3D extent_ = Extent3D() )
16247 : srcSubresource( srcSubresource_ )
16248 , srcOffset( srcOffset_ )
16249 , dstSubresource( dstSubresource_ )
16250 , dstOffset( dstOffset_ )
16251 , extent( extent_ )
16252 {
16253 }
16254
16255 ImageCopy( VkImageCopy const & rhs )
16256 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016257 memcpy( this, &rhs, sizeof( ImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016258 }
16259
16260 ImageCopy& operator=( VkImageCopy const & rhs )
16261 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016262 memcpy( this, &rhs, sizeof( ImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016263 return *this;
16264 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016265 ImageCopy& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
16266 {
16267 srcSubresource = srcSubresource_;
16268 return *this;
16269 }
16270
16271 ImageCopy& setSrcOffset( Offset3D srcOffset_ )
16272 {
16273 srcOffset = srcOffset_;
16274 return *this;
16275 }
16276
16277 ImageCopy& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
16278 {
16279 dstSubresource = dstSubresource_;
16280 return *this;
16281 }
16282
16283 ImageCopy& setDstOffset( Offset3D dstOffset_ )
16284 {
16285 dstOffset = dstOffset_;
16286 return *this;
16287 }
16288
16289 ImageCopy& setExtent( Extent3D extent_ )
16290 {
16291 extent = extent_;
16292 return *this;
16293 }
16294
16295 operator const VkImageCopy&() const
16296 {
16297 return *reinterpret_cast<const VkImageCopy*>(this);
16298 }
16299
16300 bool operator==( ImageCopy const& rhs ) const
16301 {
16302 return ( srcSubresource == rhs.srcSubresource )
16303 && ( srcOffset == rhs.srcOffset )
16304 && ( dstSubresource == rhs.dstSubresource )
16305 && ( dstOffset == rhs.dstOffset )
16306 && ( extent == rhs.extent );
16307 }
16308
16309 bool operator!=( ImageCopy const& rhs ) const
16310 {
16311 return !operator==( rhs );
16312 }
16313
16314 ImageSubresourceLayers srcSubresource;
16315 Offset3D srcOffset;
16316 ImageSubresourceLayers dstSubresource;
16317 Offset3D dstOffset;
16318 Extent3D extent;
16319 };
16320 static_assert( sizeof( ImageCopy ) == sizeof( VkImageCopy ), "struct and wrapper have different size!" );
16321
16322 struct ImageBlit
16323 {
16324 ImageBlit( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), std::array<Offset3D,2> const& srcOffsets_ = { { Offset3D(), Offset3D() } }, ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), std::array<Offset3D,2> const& dstOffsets_ = { { Offset3D(), Offset3D() } } )
16325 : srcSubresource( srcSubresource_ )
16326 , dstSubresource( dstSubresource_ )
16327 {
16328 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
16329 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
16330 }
16331
16332 ImageBlit( VkImageBlit const & rhs )
16333 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016334 memcpy( this, &rhs, sizeof( ImageBlit ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016335 }
16336
16337 ImageBlit& operator=( VkImageBlit const & rhs )
16338 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016339 memcpy( this, &rhs, sizeof( ImageBlit ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016340 return *this;
16341 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016342 ImageBlit& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
16343 {
16344 srcSubresource = srcSubresource_;
16345 return *this;
16346 }
16347
16348 ImageBlit& setSrcOffsets( std::array<Offset3D,2> srcOffsets_ )
16349 {
16350 memcpy( &srcOffsets, srcOffsets_.data(), 2 * sizeof( Offset3D ) );
16351 return *this;
16352 }
16353
16354 ImageBlit& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
16355 {
16356 dstSubresource = dstSubresource_;
16357 return *this;
16358 }
16359
16360 ImageBlit& setDstOffsets( std::array<Offset3D,2> dstOffsets_ )
16361 {
16362 memcpy( &dstOffsets, dstOffsets_.data(), 2 * sizeof( Offset3D ) );
16363 return *this;
16364 }
16365
16366 operator const VkImageBlit&() const
16367 {
16368 return *reinterpret_cast<const VkImageBlit*>(this);
16369 }
16370
16371 bool operator==( ImageBlit const& rhs ) const
16372 {
16373 return ( srcSubresource == rhs.srcSubresource )
16374 && ( memcmp( srcOffsets, rhs.srcOffsets, 2 * sizeof( Offset3D ) ) == 0 )
16375 && ( dstSubresource == rhs.dstSubresource )
16376 && ( memcmp( dstOffsets, rhs.dstOffsets, 2 * sizeof( Offset3D ) ) == 0 );
16377 }
16378
16379 bool operator!=( ImageBlit const& rhs ) const
16380 {
16381 return !operator==( rhs );
16382 }
16383
16384 ImageSubresourceLayers srcSubresource;
16385 Offset3D srcOffsets[2];
16386 ImageSubresourceLayers dstSubresource;
16387 Offset3D dstOffsets[2];
16388 };
16389 static_assert( sizeof( ImageBlit ) == sizeof( VkImageBlit ), "struct and wrapper have different size!" );
16390
16391 struct BufferImageCopy
16392 {
16393 BufferImageCopy( DeviceSize bufferOffset_ = 0, uint32_t bufferRowLength_ = 0, uint32_t bufferImageHeight_ = 0, ImageSubresourceLayers imageSubresource_ = ImageSubresourceLayers(), Offset3D imageOffset_ = Offset3D(), Extent3D imageExtent_ = Extent3D() )
16394 : bufferOffset( bufferOffset_ )
16395 , bufferRowLength( bufferRowLength_ )
16396 , bufferImageHeight( bufferImageHeight_ )
16397 , imageSubresource( imageSubresource_ )
16398 , imageOffset( imageOffset_ )
16399 , imageExtent( imageExtent_ )
16400 {
16401 }
16402
16403 BufferImageCopy( VkBufferImageCopy const & rhs )
16404 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016405 memcpy( this, &rhs, sizeof( BufferImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016406 }
16407
16408 BufferImageCopy& operator=( VkBufferImageCopy const & rhs )
16409 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016410 memcpy( this, &rhs, sizeof( BufferImageCopy ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016411 return *this;
16412 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016413 BufferImageCopy& setBufferOffset( DeviceSize bufferOffset_ )
16414 {
16415 bufferOffset = bufferOffset_;
16416 return *this;
16417 }
16418
16419 BufferImageCopy& setBufferRowLength( uint32_t bufferRowLength_ )
16420 {
16421 bufferRowLength = bufferRowLength_;
16422 return *this;
16423 }
16424
16425 BufferImageCopy& setBufferImageHeight( uint32_t bufferImageHeight_ )
16426 {
16427 bufferImageHeight = bufferImageHeight_;
16428 return *this;
16429 }
16430
16431 BufferImageCopy& setImageSubresource( ImageSubresourceLayers imageSubresource_ )
16432 {
16433 imageSubresource = imageSubresource_;
16434 return *this;
16435 }
16436
16437 BufferImageCopy& setImageOffset( Offset3D imageOffset_ )
16438 {
16439 imageOffset = imageOffset_;
16440 return *this;
16441 }
16442
16443 BufferImageCopy& setImageExtent( Extent3D imageExtent_ )
16444 {
16445 imageExtent = imageExtent_;
16446 return *this;
16447 }
16448
16449 operator const VkBufferImageCopy&() const
16450 {
16451 return *reinterpret_cast<const VkBufferImageCopy*>(this);
16452 }
16453
16454 bool operator==( BufferImageCopy const& rhs ) const
16455 {
16456 return ( bufferOffset == rhs.bufferOffset )
16457 && ( bufferRowLength == rhs.bufferRowLength )
16458 && ( bufferImageHeight == rhs.bufferImageHeight )
16459 && ( imageSubresource == rhs.imageSubresource )
16460 && ( imageOffset == rhs.imageOffset )
16461 && ( imageExtent == rhs.imageExtent );
16462 }
16463
16464 bool operator!=( BufferImageCopy const& rhs ) const
16465 {
16466 return !operator==( rhs );
16467 }
16468
16469 DeviceSize bufferOffset;
16470 uint32_t bufferRowLength;
16471 uint32_t bufferImageHeight;
16472 ImageSubresourceLayers imageSubresource;
16473 Offset3D imageOffset;
16474 Extent3D imageExtent;
16475 };
16476 static_assert( sizeof( BufferImageCopy ) == sizeof( VkBufferImageCopy ), "struct and wrapper have different size!" );
16477
16478 struct ImageResolve
16479 {
16480 ImageResolve( ImageSubresourceLayers srcSubresource_ = ImageSubresourceLayers(), Offset3D srcOffset_ = Offset3D(), ImageSubresourceLayers dstSubresource_ = ImageSubresourceLayers(), Offset3D dstOffset_ = Offset3D(), Extent3D extent_ = Extent3D() )
16481 : srcSubresource( srcSubresource_ )
16482 , srcOffset( srcOffset_ )
16483 , dstSubresource( dstSubresource_ )
16484 , dstOffset( dstOffset_ )
16485 , extent( extent_ )
16486 {
16487 }
16488
16489 ImageResolve( VkImageResolve const & rhs )
16490 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016491 memcpy( this, &rhs, sizeof( ImageResolve ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016492 }
16493
16494 ImageResolve& operator=( VkImageResolve const & rhs )
16495 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016496 memcpy( this, &rhs, sizeof( ImageResolve ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016497 return *this;
16498 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016499 ImageResolve& setSrcSubresource( ImageSubresourceLayers srcSubresource_ )
16500 {
16501 srcSubresource = srcSubresource_;
16502 return *this;
16503 }
16504
16505 ImageResolve& setSrcOffset( Offset3D srcOffset_ )
16506 {
16507 srcOffset = srcOffset_;
16508 return *this;
16509 }
16510
16511 ImageResolve& setDstSubresource( ImageSubresourceLayers dstSubresource_ )
16512 {
16513 dstSubresource = dstSubresource_;
16514 return *this;
16515 }
16516
16517 ImageResolve& setDstOffset( Offset3D dstOffset_ )
16518 {
16519 dstOffset = dstOffset_;
16520 return *this;
16521 }
16522
16523 ImageResolve& setExtent( Extent3D extent_ )
16524 {
16525 extent = extent_;
16526 return *this;
16527 }
16528
16529 operator const VkImageResolve&() const
16530 {
16531 return *reinterpret_cast<const VkImageResolve*>(this);
16532 }
16533
16534 bool operator==( ImageResolve const& rhs ) const
16535 {
16536 return ( srcSubresource == rhs.srcSubresource )
16537 && ( srcOffset == rhs.srcOffset )
16538 && ( dstSubresource == rhs.dstSubresource )
16539 && ( dstOffset == rhs.dstOffset )
16540 && ( extent == rhs.extent );
16541 }
16542
16543 bool operator!=( ImageResolve const& rhs ) const
16544 {
16545 return !operator==( rhs );
16546 }
16547
16548 ImageSubresourceLayers srcSubresource;
16549 Offset3D srcOffset;
16550 ImageSubresourceLayers dstSubresource;
16551 Offset3D dstOffset;
16552 Extent3D extent;
16553 };
16554 static_assert( sizeof( ImageResolve ) == sizeof( VkImageResolve ), "struct and wrapper have different size!" );
16555
16556 struct ClearAttachment
16557 {
16558 ClearAttachment( ImageAspectFlags aspectMask_ = ImageAspectFlags(), uint32_t colorAttachment_ = 0, ClearValue clearValue_ = ClearValue() )
16559 : aspectMask( aspectMask_ )
16560 , colorAttachment( colorAttachment_ )
16561 , clearValue( clearValue_ )
16562 {
16563 }
16564
16565 ClearAttachment( VkClearAttachment const & rhs )
16566 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016567 memcpy( this, &rhs, sizeof( ClearAttachment ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016568 }
16569
16570 ClearAttachment& operator=( VkClearAttachment const & rhs )
16571 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016572 memcpy( this, &rhs, sizeof( ClearAttachment ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016573 return *this;
16574 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016575 ClearAttachment& setAspectMask( ImageAspectFlags aspectMask_ )
16576 {
16577 aspectMask = aspectMask_;
16578 return *this;
16579 }
16580
16581 ClearAttachment& setColorAttachment( uint32_t colorAttachment_ )
16582 {
16583 colorAttachment = colorAttachment_;
16584 return *this;
16585 }
16586
16587 ClearAttachment& setClearValue( ClearValue clearValue_ )
16588 {
16589 clearValue = clearValue_;
16590 return *this;
16591 }
16592
16593 operator const VkClearAttachment&() const
16594 {
16595 return *reinterpret_cast<const VkClearAttachment*>(this);
16596 }
16597
16598 ImageAspectFlags aspectMask;
16599 uint32_t colorAttachment;
16600 ClearValue clearValue;
16601 };
16602 static_assert( sizeof( ClearAttachment ) == sizeof( VkClearAttachment ), "struct and wrapper have different size!" );
16603
16604 enum class SparseImageFormatFlagBits
16605 {
16606 eSingleMiptail = VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT,
16607 eAlignedMipSize = VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT,
16608 eNonstandardBlockSize = VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT
16609 };
16610
16611 using SparseImageFormatFlags = Flags<SparseImageFormatFlagBits, VkSparseImageFormatFlags>;
16612
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016613 VULKAN_HPP_INLINE SparseImageFormatFlags operator|( SparseImageFormatFlagBits bit0, SparseImageFormatFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016614 {
16615 return SparseImageFormatFlags( bit0 ) | bit1;
16616 }
16617
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016618 VULKAN_HPP_INLINE SparseImageFormatFlags operator~( SparseImageFormatFlagBits bits )
16619 {
16620 return ~( SparseImageFormatFlags( bits ) );
16621 }
16622
16623 template <> struct FlagTraits<SparseImageFormatFlagBits>
16624 {
16625 enum
16626 {
16627 allFlags = VkFlags(SparseImageFormatFlagBits::eSingleMiptail) | VkFlags(SparseImageFormatFlagBits::eAlignedMipSize) | VkFlags(SparseImageFormatFlagBits::eNonstandardBlockSize)
16628 };
16629 };
16630
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016631 struct SparseImageFormatProperties
16632 {
16633 operator const VkSparseImageFormatProperties&() const
16634 {
16635 return *reinterpret_cast<const VkSparseImageFormatProperties*>(this);
16636 }
16637
16638 bool operator==( SparseImageFormatProperties const& rhs ) const
16639 {
16640 return ( aspectMask == rhs.aspectMask )
16641 && ( imageGranularity == rhs.imageGranularity )
16642 && ( flags == rhs.flags );
16643 }
16644
16645 bool operator!=( SparseImageFormatProperties const& rhs ) const
16646 {
16647 return !operator==( rhs );
16648 }
16649
16650 ImageAspectFlags aspectMask;
16651 Extent3D imageGranularity;
16652 SparseImageFormatFlags flags;
16653 };
16654 static_assert( sizeof( SparseImageFormatProperties ) == sizeof( VkSparseImageFormatProperties ), "struct and wrapper have different size!" );
16655
16656 struct SparseImageMemoryRequirements
16657 {
16658 operator const VkSparseImageMemoryRequirements&() const
16659 {
16660 return *reinterpret_cast<const VkSparseImageMemoryRequirements*>(this);
16661 }
16662
16663 bool operator==( SparseImageMemoryRequirements const& rhs ) const
16664 {
16665 return ( formatProperties == rhs.formatProperties )
16666 && ( imageMipTailFirstLod == rhs.imageMipTailFirstLod )
16667 && ( imageMipTailSize == rhs.imageMipTailSize )
16668 && ( imageMipTailOffset == rhs.imageMipTailOffset )
16669 && ( imageMipTailStride == rhs.imageMipTailStride );
16670 }
16671
16672 bool operator!=( SparseImageMemoryRequirements const& rhs ) const
16673 {
16674 return !operator==( rhs );
16675 }
16676
16677 SparseImageFormatProperties formatProperties;
16678 uint32_t imageMipTailFirstLod;
16679 DeviceSize imageMipTailSize;
16680 DeviceSize imageMipTailOffset;
16681 DeviceSize imageMipTailStride;
16682 };
16683 static_assert( sizeof( SparseImageMemoryRequirements ) == sizeof( VkSparseImageMemoryRequirements ), "struct and wrapper have different size!" );
16684
Mark Young39389872017-01-19 21:10:49 -070016685 struct SparseImageFormatProperties2KHR
16686 {
16687 operator const VkSparseImageFormatProperties2KHR&() const
16688 {
16689 return *reinterpret_cast<const VkSparseImageFormatProperties2KHR*>(this);
16690 }
16691
16692 bool operator==( SparseImageFormatProperties2KHR const& rhs ) const
16693 {
16694 return ( sType == rhs.sType )
16695 && ( pNext == rhs.pNext )
16696 && ( properties == rhs.properties );
16697 }
16698
16699 bool operator!=( SparseImageFormatProperties2KHR const& rhs ) const
16700 {
16701 return !operator==( rhs );
16702 }
16703
16704 private:
16705 StructureType sType;
16706
16707 public:
16708 void* pNext;
16709 SparseImageFormatProperties properties;
16710 };
16711 static_assert( sizeof( SparseImageFormatProperties2KHR ) == sizeof( VkSparseImageFormatProperties2KHR ), "struct and wrapper have different size!" );
16712
Mark Youngabc2d6e2017-07-07 07:59:56 -060016713 struct SparseImageMemoryRequirements2KHR
16714 {
16715 operator const VkSparseImageMemoryRequirements2KHR&() const
16716 {
16717 return *reinterpret_cast<const VkSparseImageMemoryRequirements2KHR*>(this);
16718 }
16719
16720 bool operator==( SparseImageMemoryRequirements2KHR const& rhs ) const
16721 {
16722 return ( sType == rhs.sType )
16723 && ( pNext == rhs.pNext )
16724 && ( memoryRequirements == rhs.memoryRequirements );
16725 }
16726
16727 bool operator!=( SparseImageMemoryRequirements2KHR const& rhs ) const
16728 {
16729 return !operator==( rhs );
16730 }
16731
16732 private:
16733 StructureType sType;
16734
16735 public:
16736 void* pNext;
16737 SparseImageMemoryRequirements memoryRequirements;
16738 };
16739 static_assert( sizeof( SparseImageMemoryRequirements2KHR ) == sizeof( VkSparseImageMemoryRequirements2KHR ), "struct and wrapper have different size!" );
16740
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016741 enum class SparseMemoryBindFlagBits
16742 {
16743 eMetadata = VK_SPARSE_MEMORY_BIND_METADATA_BIT
16744 };
16745
16746 using SparseMemoryBindFlags = Flags<SparseMemoryBindFlagBits, VkSparseMemoryBindFlags>;
16747
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016748 VULKAN_HPP_INLINE SparseMemoryBindFlags operator|( SparseMemoryBindFlagBits bit0, SparseMemoryBindFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016749 {
16750 return SparseMemoryBindFlags( bit0 ) | bit1;
16751 }
16752
Mark Lobodzinski2d589822016-12-12 09:44:34 -070016753 VULKAN_HPP_INLINE SparseMemoryBindFlags operator~( SparseMemoryBindFlagBits bits )
16754 {
16755 return ~( SparseMemoryBindFlags( bits ) );
16756 }
16757
16758 template <> struct FlagTraits<SparseMemoryBindFlagBits>
16759 {
16760 enum
16761 {
16762 allFlags = VkFlags(SparseMemoryBindFlagBits::eMetadata)
16763 };
16764 };
16765
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016766 struct SparseMemoryBind
16767 {
16768 SparseMemoryBind( DeviceSize resourceOffset_ = 0, DeviceSize size_ = 0, DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
16769 : resourceOffset( resourceOffset_ )
16770 , size( size_ )
16771 , memory( memory_ )
16772 , memoryOffset( memoryOffset_ )
16773 , flags( flags_ )
16774 {
16775 }
16776
16777 SparseMemoryBind( VkSparseMemoryBind const & rhs )
16778 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016779 memcpy( this, &rhs, sizeof( SparseMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016780 }
16781
16782 SparseMemoryBind& operator=( VkSparseMemoryBind const & rhs )
16783 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016784 memcpy( this, &rhs, sizeof( SparseMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016785 return *this;
16786 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016787 SparseMemoryBind& setResourceOffset( DeviceSize resourceOffset_ )
16788 {
16789 resourceOffset = resourceOffset_;
16790 return *this;
16791 }
16792
16793 SparseMemoryBind& setSize( DeviceSize size_ )
16794 {
16795 size = size_;
16796 return *this;
16797 }
16798
16799 SparseMemoryBind& setMemory( DeviceMemory memory_ )
16800 {
16801 memory = memory_;
16802 return *this;
16803 }
16804
16805 SparseMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
16806 {
16807 memoryOffset = memoryOffset_;
16808 return *this;
16809 }
16810
16811 SparseMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
16812 {
16813 flags = flags_;
16814 return *this;
16815 }
16816
16817 operator const VkSparseMemoryBind&() const
16818 {
16819 return *reinterpret_cast<const VkSparseMemoryBind*>(this);
16820 }
16821
16822 bool operator==( SparseMemoryBind const& rhs ) const
16823 {
16824 return ( resourceOffset == rhs.resourceOffset )
16825 && ( size == rhs.size )
16826 && ( memory == rhs.memory )
16827 && ( memoryOffset == rhs.memoryOffset )
16828 && ( flags == rhs.flags );
16829 }
16830
16831 bool operator!=( SparseMemoryBind const& rhs ) const
16832 {
16833 return !operator==( rhs );
16834 }
16835
16836 DeviceSize resourceOffset;
16837 DeviceSize size;
16838 DeviceMemory memory;
16839 DeviceSize memoryOffset;
16840 SparseMemoryBindFlags flags;
16841 };
16842 static_assert( sizeof( SparseMemoryBind ) == sizeof( VkSparseMemoryBind ), "struct and wrapper have different size!" );
16843
16844 struct SparseImageMemoryBind
16845 {
16846 SparseImageMemoryBind( ImageSubresource subresource_ = ImageSubresource(), Offset3D offset_ = Offset3D(), Extent3D extent_ = Extent3D(), DeviceMemory memory_ = DeviceMemory(), DeviceSize memoryOffset_ = 0, SparseMemoryBindFlags flags_ = SparseMemoryBindFlags() )
16847 : subresource( subresource_ )
16848 , offset( offset_ )
16849 , extent( extent_ )
16850 , memory( memory_ )
16851 , memoryOffset( memoryOffset_ )
16852 , flags( flags_ )
16853 {
16854 }
16855
16856 SparseImageMemoryBind( VkSparseImageMemoryBind const & rhs )
16857 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016858 memcpy( this, &rhs, sizeof( SparseImageMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016859 }
16860
16861 SparseImageMemoryBind& operator=( VkSparseImageMemoryBind const & rhs )
16862 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016863 memcpy( this, &rhs, sizeof( SparseImageMemoryBind ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016864 return *this;
16865 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016866 SparseImageMemoryBind& setSubresource( ImageSubresource subresource_ )
16867 {
16868 subresource = subresource_;
16869 return *this;
16870 }
16871
16872 SparseImageMemoryBind& setOffset( Offset3D offset_ )
16873 {
16874 offset = offset_;
16875 return *this;
16876 }
16877
16878 SparseImageMemoryBind& setExtent( Extent3D extent_ )
16879 {
16880 extent = extent_;
16881 return *this;
16882 }
16883
16884 SparseImageMemoryBind& setMemory( DeviceMemory memory_ )
16885 {
16886 memory = memory_;
16887 return *this;
16888 }
16889
16890 SparseImageMemoryBind& setMemoryOffset( DeviceSize memoryOffset_ )
16891 {
16892 memoryOffset = memoryOffset_;
16893 return *this;
16894 }
16895
16896 SparseImageMemoryBind& setFlags( SparseMemoryBindFlags flags_ )
16897 {
16898 flags = flags_;
16899 return *this;
16900 }
16901
16902 operator const VkSparseImageMemoryBind&() const
16903 {
16904 return *reinterpret_cast<const VkSparseImageMemoryBind*>(this);
16905 }
16906
16907 bool operator==( SparseImageMemoryBind const& rhs ) const
16908 {
16909 return ( subresource == rhs.subresource )
16910 && ( offset == rhs.offset )
16911 && ( extent == rhs.extent )
16912 && ( memory == rhs.memory )
16913 && ( memoryOffset == rhs.memoryOffset )
16914 && ( flags == rhs.flags );
16915 }
16916
16917 bool operator!=( SparseImageMemoryBind const& rhs ) const
16918 {
16919 return !operator==( rhs );
16920 }
16921
16922 ImageSubresource subresource;
16923 Offset3D offset;
16924 Extent3D extent;
16925 DeviceMemory memory;
16926 DeviceSize memoryOffset;
16927 SparseMemoryBindFlags flags;
16928 };
16929 static_assert( sizeof( SparseImageMemoryBind ) == sizeof( VkSparseImageMemoryBind ), "struct and wrapper have different size!" );
16930
16931 struct SparseBufferMemoryBindInfo
16932 {
16933 SparseBufferMemoryBindInfo( Buffer buffer_ = Buffer(), uint32_t bindCount_ = 0, const SparseMemoryBind* pBinds_ = nullptr )
16934 : buffer( buffer_ )
16935 , bindCount( bindCount_ )
16936 , pBinds( pBinds_ )
16937 {
16938 }
16939
16940 SparseBufferMemoryBindInfo( VkSparseBufferMemoryBindInfo const & rhs )
16941 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016942 memcpy( this, &rhs, sizeof( SparseBufferMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016943 }
16944
16945 SparseBufferMemoryBindInfo& operator=( VkSparseBufferMemoryBindInfo const & rhs )
16946 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060016947 memcpy( this, &rhs, sizeof( SparseBufferMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016948 return *this;
16949 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060016950 SparseBufferMemoryBindInfo& setBuffer( Buffer buffer_ )
16951 {
16952 buffer = buffer_;
16953 return *this;
16954 }
16955
16956 SparseBufferMemoryBindInfo& setBindCount( uint32_t bindCount_ )
16957 {
16958 bindCount = bindCount_;
16959 return *this;
16960 }
16961
16962 SparseBufferMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
16963 {
16964 pBinds = pBinds_;
16965 return *this;
16966 }
16967
16968 operator const VkSparseBufferMemoryBindInfo&() const
16969 {
16970 return *reinterpret_cast<const VkSparseBufferMemoryBindInfo*>(this);
16971 }
16972
16973 bool operator==( SparseBufferMemoryBindInfo const& rhs ) const
16974 {
16975 return ( buffer == rhs.buffer )
16976 && ( bindCount == rhs.bindCount )
16977 && ( pBinds == rhs.pBinds );
16978 }
16979
16980 bool operator!=( SparseBufferMemoryBindInfo const& rhs ) const
16981 {
16982 return !operator==( rhs );
16983 }
16984
16985 Buffer buffer;
16986 uint32_t bindCount;
16987 const SparseMemoryBind* pBinds;
16988 };
16989 static_assert( sizeof( SparseBufferMemoryBindInfo ) == sizeof( VkSparseBufferMemoryBindInfo ), "struct and wrapper have different size!" );
16990
16991 struct SparseImageOpaqueMemoryBindInfo
16992 {
16993 SparseImageOpaqueMemoryBindInfo( Image image_ = Image(), uint32_t bindCount_ = 0, const SparseMemoryBind* pBinds_ = nullptr )
16994 : image( image_ )
16995 , bindCount( bindCount_ )
16996 , pBinds( pBinds_ )
16997 {
16998 }
16999
17000 SparseImageOpaqueMemoryBindInfo( VkSparseImageOpaqueMemoryBindInfo const & rhs )
17001 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017002 memcpy( this, &rhs, sizeof( SparseImageOpaqueMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017003 }
17004
17005 SparseImageOpaqueMemoryBindInfo& operator=( VkSparseImageOpaqueMemoryBindInfo const & rhs )
17006 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017007 memcpy( this, &rhs, sizeof( SparseImageOpaqueMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017008 return *this;
17009 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017010 SparseImageOpaqueMemoryBindInfo& setImage( Image image_ )
17011 {
17012 image = image_;
17013 return *this;
17014 }
17015
17016 SparseImageOpaqueMemoryBindInfo& setBindCount( uint32_t bindCount_ )
17017 {
17018 bindCount = bindCount_;
17019 return *this;
17020 }
17021
17022 SparseImageOpaqueMemoryBindInfo& setPBinds( const SparseMemoryBind* pBinds_ )
17023 {
17024 pBinds = pBinds_;
17025 return *this;
17026 }
17027
17028 operator const VkSparseImageOpaqueMemoryBindInfo&() const
17029 {
17030 return *reinterpret_cast<const VkSparseImageOpaqueMemoryBindInfo*>(this);
17031 }
17032
17033 bool operator==( SparseImageOpaqueMemoryBindInfo const& rhs ) const
17034 {
17035 return ( image == rhs.image )
17036 && ( bindCount == rhs.bindCount )
17037 && ( pBinds == rhs.pBinds );
17038 }
17039
17040 bool operator!=( SparseImageOpaqueMemoryBindInfo const& rhs ) const
17041 {
17042 return !operator==( rhs );
17043 }
17044
17045 Image image;
17046 uint32_t bindCount;
17047 const SparseMemoryBind* pBinds;
17048 };
17049 static_assert( sizeof( SparseImageOpaqueMemoryBindInfo ) == sizeof( VkSparseImageOpaqueMemoryBindInfo ), "struct and wrapper have different size!" );
17050
17051 struct SparseImageMemoryBindInfo
17052 {
17053 SparseImageMemoryBindInfo( Image image_ = Image(), uint32_t bindCount_ = 0, const SparseImageMemoryBind* pBinds_ = nullptr )
17054 : image( image_ )
17055 , bindCount( bindCount_ )
17056 , pBinds( pBinds_ )
17057 {
17058 }
17059
17060 SparseImageMemoryBindInfo( VkSparseImageMemoryBindInfo const & rhs )
17061 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017062 memcpy( this, &rhs, sizeof( SparseImageMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017063 }
17064
17065 SparseImageMemoryBindInfo& operator=( VkSparseImageMemoryBindInfo const & rhs )
17066 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017067 memcpy( this, &rhs, sizeof( SparseImageMemoryBindInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017068 return *this;
17069 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017070 SparseImageMemoryBindInfo& setImage( Image image_ )
17071 {
17072 image = image_;
17073 return *this;
17074 }
17075
17076 SparseImageMemoryBindInfo& setBindCount( uint32_t bindCount_ )
17077 {
17078 bindCount = bindCount_;
17079 return *this;
17080 }
17081
17082 SparseImageMemoryBindInfo& setPBinds( const SparseImageMemoryBind* pBinds_ )
17083 {
17084 pBinds = pBinds_;
17085 return *this;
17086 }
17087
17088 operator const VkSparseImageMemoryBindInfo&() const
17089 {
17090 return *reinterpret_cast<const VkSparseImageMemoryBindInfo*>(this);
17091 }
17092
17093 bool operator==( SparseImageMemoryBindInfo const& rhs ) const
17094 {
17095 return ( image == rhs.image )
17096 && ( bindCount == rhs.bindCount )
17097 && ( pBinds == rhs.pBinds );
17098 }
17099
17100 bool operator!=( SparseImageMemoryBindInfo const& rhs ) const
17101 {
17102 return !operator==( rhs );
17103 }
17104
17105 Image image;
17106 uint32_t bindCount;
17107 const SparseImageMemoryBind* pBinds;
17108 };
17109 static_assert( sizeof( SparseImageMemoryBindInfo ) == sizeof( VkSparseImageMemoryBindInfo ), "struct and wrapper have different size!" );
17110
17111 struct BindSparseInfo
17112 {
17113 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 )
17114 : sType( StructureType::eBindSparseInfo )
17115 , pNext( nullptr )
17116 , waitSemaphoreCount( waitSemaphoreCount_ )
17117 , pWaitSemaphores( pWaitSemaphores_ )
17118 , bufferBindCount( bufferBindCount_ )
17119 , pBufferBinds( pBufferBinds_ )
17120 , imageOpaqueBindCount( imageOpaqueBindCount_ )
17121 , pImageOpaqueBinds( pImageOpaqueBinds_ )
17122 , imageBindCount( imageBindCount_ )
17123 , pImageBinds( pImageBinds_ )
17124 , signalSemaphoreCount( signalSemaphoreCount_ )
17125 , pSignalSemaphores( pSignalSemaphores_ )
17126 {
17127 }
17128
17129 BindSparseInfo( VkBindSparseInfo const & rhs )
17130 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017131 memcpy( this, &rhs, sizeof( BindSparseInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017132 }
17133
17134 BindSparseInfo& operator=( VkBindSparseInfo const & rhs )
17135 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017136 memcpy( this, &rhs, sizeof( BindSparseInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017137 return *this;
17138 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017139 BindSparseInfo& setPNext( const void* pNext_ )
17140 {
17141 pNext = pNext_;
17142 return *this;
17143 }
17144
17145 BindSparseInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
17146 {
17147 waitSemaphoreCount = waitSemaphoreCount_;
17148 return *this;
17149 }
17150
17151 BindSparseInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
17152 {
17153 pWaitSemaphores = pWaitSemaphores_;
17154 return *this;
17155 }
17156
17157 BindSparseInfo& setBufferBindCount( uint32_t bufferBindCount_ )
17158 {
17159 bufferBindCount = bufferBindCount_;
17160 return *this;
17161 }
17162
17163 BindSparseInfo& setPBufferBinds( const SparseBufferMemoryBindInfo* pBufferBinds_ )
17164 {
17165 pBufferBinds = pBufferBinds_;
17166 return *this;
17167 }
17168
17169 BindSparseInfo& setImageOpaqueBindCount( uint32_t imageOpaqueBindCount_ )
17170 {
17171 imageOpaqueBindCount = imageOpaqueBindCount_;
17172 return *this;
17173 }
17174
17175 BindSparseInfo& setPImageOpaqueBinds( const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds_ )
17176 {
17177 pImageOpaqueBinds = pImageOpaqueBinds_;
17178 return *this;
17179 }
17180
17181 BindSparseInfo& setImageBindCount( uint32_t imageBindCount_ )
17182 {
17183 imageBindCount = imageBindCount_;
17184 return *this;
17185 }
17186
17187 BindSparseInfo& setPImageBinds( const SparseImageMemoryBindInfo* pImageBinds_ )
17188 {
17189 pImageBinds = pImageBinds_;
17190 return *this;
17191 }
17192
17193 BindSparseInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
17194 {
17195 signalSemaphoreCount = signalSemaphoreCount_;
17196 return *this;
17197 }
17198
17199 BindSparseInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
17200 {
17201 pSignalSemaphores = pSignalSemaphores_;
17202 return *this;
17203 }
17204
17205 operator const VkBindSparseInfo&() const
17206 {
17207 return *reinterpret_cast<const VkBindSparseInfo*>(this);
17208 }
17209
17210 bool operator==( BindSparseInfo const& rhs ) const
17211 {
17212 return ( sType == rhs.sType )
17213 && ( pNext == rhs.pNext )
17214 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
17215 && ( pWaitSemaphores == rhs.pWaitSemaphores )
17216 && ( bufferBindCount == rhs.bufferBindCount )
17217 && ( pBufferBinds == rhs.pBufferBinds )
17218 && ( imageOpaqueBindCount == rhs.imageOpaqueBindCount )
17219 && ( pImageOpaqueBinds == rhs.pImageOpaqueBinds )
17220 && ( imageBindCount == rhs.imageBindCount )
17221 && ( pImageBinds == rhs.pImageBinds )
17222 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
17223 && ( pSignalSemaphores == rhs.pSignalSemaphores );
17224 }
17225
17226 bool operator!=( BindSparseInfo const& rhs ) const
17227 {
17228 return !operator==( rhs );
17229 }
17230
17231 private:
17232 StructureType sType;
17233
17234 public:
17235 const void* pNext;
17236 uint32_t waitSemaphoreCount;
17237 const Semaphore* pWaitSemaphores;
17238 uint32_t bufferBindCount;
17239 const SparseBufferMemoryBindInfo* pBufferBinds;
17240 uint32_t imageOpaqueBindCount;
17241 const SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds;
17242 uint32_t imageBindCount;
17243 const SparseImageMemoryBindInfo* pImageBinds;
17244 uint32_t signalSemaphoreCount;
17245 const Semaphore* pSignalSemaphores;
17246 };
17247 static_assert( sizeof( BindSparseInfo ) == sizeof( VkBindSparseInfo ), "struct and wrapper have different size!" );
17248
17249 enum class PipelineStageFlagBits
17250 {
17251 eTopOfPipe = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT,
17252 eDrawIndirect = VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT,
17253 eVertexInput = VK_PIPELINE_STAGE_VERTEX_INPUT_BIT,
17254 eVertexShader = VK_PIPELINE_STAGE_VERTEX_SHADER_BIT,
17255 eTessellationControlShader = VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT,
17256 eTessellationEvaluationShader = VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT,
17257 eGeometryShader = VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT,
17258 eFragmentShader = VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT,
17259 eEarlyFragmentTests = VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT,
17260 eLateFragmentTests = VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT,
17261 eColorAttachmentOutput = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT,
17262 eComputeShader = VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT,
17263 eTransfer = VK_PIPELINE_STAGE_TRANSFER_BIT,
17264 eBottomOfPipe = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT,
17265 eHost = VK_PIPELINE_STAGE_HOST_BIT,
17266 eAllGraphics = VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017267 eAllCommands = VK_PIPELINE_STAGE_ALL_COMMANDS_BIT,
17268 eCommandProcessNVX = VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017269 };
17270
17271 using PipelineStageFlags = Flags<PipelineStageFlagBits, VkPipelineStageFlags>;
17272
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017273 VULKAN_HPP_INLINE PipelineStageFlags operator|( PipelineStageFlagBits bit0, PipelineStageFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017274 {
17275 return PipelineStageFlags( bit0 ) | bit1;
17276 }
17277
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017278 VULKAN_HPP_INLINE PipelineStageFlags operator~( PipelineStageFlagBits bits )
17279 {
17280 return ~( PipelineStageFlags( bits ) );
17281 }
17282
17283 template <> struct FlagTraits<PipelineStageFlagBits>
17284 {
17285 enum
17286 {
17287 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)
17288 };
17289 };
17290
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017291 enum class CommandPoolCreateFlagBits
17292 {
17293 eTransient = VK_COMMAND_POOL_CREATE_TRANSIENT_BIT,
17294 eResetCommandBuffer = VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT
17295 };
17296
17297 using CommandPoolCreateFlags = Flags<CommandPoolCreateFlagBits, VkCommandPoolCreateFlags>;
17298
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017299 VULKAN_HPP_INLINE CommandPoolCreateFlags operator|( CommandPoolCreateFlagBits bit0, CommandPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017300 {
17301 return CommandPoolCreateFlags( bit0 ) | bit1;
17302 }
17303
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017304 VULKAN_HPP_INLINE CommandPoolCreateFlags operator~( CommandPoolCreateFlagBits bits )
17305 {
17306 return ~( CommandPoolCreateFlags( bits ) );
17307 }
17308
17309 template <> struct FlagTraits<CommandPoolCreateFlagBits>
17310 {
17311 enum
17312 {
17313 allFlags = VkFlags(CommandPoolCreateFlagBits::eTransient) | VkFlags(CommandPoolCreateFlagBits::eResetCommandBuffer)
17314 };
17315 };
17316
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017317 struct CommandPoolCreateInfo
17318 {
17319 CommandPoolCreateInfo( CommandPoolCreateFlags flags_ = CommandPoolCreateFlags(), uint32_t queueFamilyIndex_ = 0 )
17320 : sType( StructureType::eCommandPoolCreateInfo )
17321 , pNext( nullptr )
17322 , flags( flags_ )
17323 , queueFamilyIndex( queueFamilyIndex_ )
17324 {
17325 }
17326
17327 CommandPoolCreateInfo( VkCommandPoolCreateInfo const & rhs )
17328 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017329 memcpy( this, &rhs, sizeof( CommandPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017330 }
17331
17332 CommandPoolCreateInfo& operator=( VkCommandPoolCreateInfo const & rhs )
17333 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017334 memcpy( this, &rhs, sizeof( CommandPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017335 return *this;
17336 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017337 CommandPoolCreateInfo& setPNext( const void* pNext_ )
17338 {
17339 pNext = pNext_;
17340 return *this;
17341 }
17342
17343 CommandPoolCreateInfo& setFlags( CommandPoolCreateFlags flags_ )
17344 {
17345 flags = flags_;
17346 return *this;
17347 }
17348
17349 CommandPoolCreateInfo& setQueueFamilyIndex( uint32_t queueFamilyIndex_ )
17350 {
17351 queueFamilyIndex = queueFamilyIndex_;
17352 return *this;
17353 }
17354
17355 operator const VkCommandPoolCreateInfo&() const
17356 {
17357 return *reinterpret_cast<const VkCommandPoolCreateInfo*>(this);
17358 }
17359
17360 bool operator==( CommandPoolCreateInfo const& rhs ) const
17361 {
17362 return ( sType == rhs.sType )
17363 && ( pNext == rhs.pNext )
17364 && ( flags == rhs.flags )
17365 && ( queueFamilyIndex == rhs.queueFamilyIndex );
17366 }
17367
17368 bool operator!=( CommandPoolCreateInfo const& rhs ) const
17369 {
17370 return !operator==( rhs );
17371 }
17372
17373 private:
17374 StructureType sType;
17375
17376 public:
17377 const void* pNext;
17378 CommandPoolCreateFlags flags;
17379 uint32_t queueFamilyIndex;
17380 };
17381 static_assert( sizeof( CommandPoolCreateInfo ) == sizeof( VkCommandPoolCreateInfo ), "struct and wrapper have different size!" );
17382
17383 enum class CommandPoolResetFlagBits
17384 {
17385 eReleaseResources = VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT
17386 };
17387
17388 using CommandPoolResetFlags = Flags<CommandPoolResetFlagBits, VkCommandPoolResetFlags>;
17389
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017390 VULKAN_HPP_INLINE CommandPoolResetFlags operator|( CommandPoolResetFlagBits bit0, CommandPoolResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017391 {
17392 return CommandPoolResetFlags( bit0 ) | bit1;
17393 }
17394
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017395 VULKAN_HPP_INLINE CommandPoolResetFlags operator~( CommandPoolResetFlagBits bits )
17396 {
17397 return ~( CommandPoolResetFlags( bits ) );
17398 }
17399
17400 template <> struct FlagTraits<CommandPoolResetFlagBits>
17401 {
17402 enum
17403 {
17404 allFlags = VkFlags(CommandPoolResetFlagBits::eReleaseResources)
17405 };
17406 };
17407
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017408 enum class CommandBufferResetFlagBits
17409 {
17410 eReleaseResources = VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT
17411 };
17412
17413 using CommandBufferResetFlags = Flags<CommandBufferResetFlagBits, VkCommandBufferResetFlags>;
17414
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017415 VULKAN_HPP_INLINE CommandBufferResetFlags operator|( CommandBufferResetFlagBits bit0, CommandBufferResetFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017416 {
17417 return CommandBufferResetFlags( bit0 ) | bit1;
17418 }
17419
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017420 VULKAN_HPP_INLINE CommandBufferResetFlags operator~( CommandBufferResetFlagBits bits )
17421 {
17422 return ~( CommandBufferResetFlags( bits ) );
17423 }
17424
17425 template <> struct FlagTraits<CommandBufferResetFlagBits>
17426 {
17427 enum
17428 {
17429 allFlags = VkFlags(CommandBufferResetFlagBits::eReleaseResources)
17430 };
17431 };
17432
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017433 enum class SampleCountFlagBits
17434 {
17435 e1 = VK_SAMPLE_COUNT_1_BIT,
17436 e2 = VK_SAMPLE_COUNT_2_BIT,
17437 e4 = VK_SAMPLE_COUNT_4_BIT,
17438 e8 = VK_SAMPLE_COUNT_8_BIT,
17439 e16 = VK_SAMPLE_COUNT_16_BIT,
17440 e32 = VK_SAMPLE_COUNT_32_BIT,
17441 e64 = VK_SAMPLE_COUNT_64_BIT
17442 };
17443
17444 using SampleCountFlags = Flags<SampleCountFlagBits, VkSampleCountFlags>;
17445
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017446 VULKAN_HPP_INLINE SampleCountFlags operator|( SampleCountFlagBits bit0, SampleCountFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017447 {
17448 return SampleCountFlags( bit0 ) | bit1;
17449 }
17450
Mark Lobodzinski2d589822016-12-12 09:44:34 -070017451 VULKAN_HPP_INLINE SampleCountFlags operator~( SampleCountFlagBits bits )
17452 {
17453 return ~( SampleCountFlags( bits ) );
17454 }
17455
17456 template <> struct FlagTraits<SampleCountFlagBits>
17457 {
17458 enum
17459 {
17460 allFlags = VkFlags(SampleCountFlagBits::e1) | VkFlags(SampleCountFlagBits::e2) | VkFlags(SampleCountFlagBits::e4) | VkFlags(SampleCountFlagBits::e8) | VkFlags(SampleCountFlagBits::e16) | VkFlags(SampleCountFlagBits::e32) | VkFlags(SampleCountFlagBits::e64)
17461 };
17462 };
17463
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017464 struct ImageFormatProperties
17465 {
17466 operator const VkImageFormatProperties&() const
17467 {
17468 return *reinterpret_cast<const VkImageFormatProperties*>(this);
17469 }
17470
17471 bool operator==( ImageFormatProperties const& rhs ) const
17472 {
17473 return ( maxExtent == rhs.maxExtent )
17474 && ( maxMipLevels == rhs.maxMipLevels )
17475 && ( maxArrayLayers == rhs.maxArrayLayers )
17476 && ( sampleCounts == rhs.sampleCounts )
17477 && ( maxResourceSize == rhs.maxResourceSize );
17478 }
17479
17480 bool operator!=( ImageFormatProperties const& rhs ) const
17481 {
17482 return !operator==( rhs );
17483 }
17484
17485 Extent3D maxExtent;
17486 uint32_t maxMipLevels;
17487 uint32_t maxArrayLayers;
17488 SampleCountFlags sampleCounts;
17489 DeviceSize maxResourceSize;
17490 };
17491 static_assert( sizeof( ImageFormatProperties ) == sizeof( VkImageFormatProperties ), "struct and wrapper have different size!" );
17492
17493 struct ImageCreateInfo
17494 {
17495 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 )
17496 : sType( StructureType::eImageCreateInfo )
17497 , pNext( nullptr )
17498 , flags( flags_ )
17499 , imageType( imageType_ )
17500 , format( format_ )
17501 , extent( extent_ )
17502 , mipLevels( mipLevels_ )
17503 , arrayLayers( arrayLayers_ )
17504 , samples( samples_ )
17505 , tiling( tiling_ )
17506 , usage( usage_ )
17507 , sharingMode( sharingMode_ )
17508 , queueFamilyIndexCount( queueFamilyIndexCount_ )
17509 , pQueueFamilyIndices( pQueueFamilyIndices_ )
17510 , initialLayout( initialLayout_ )
17511 {
17512 }
17513
17514 ImageCreateInfo( VkImageCreateInfo const & rhs )
17515 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017516 memcpy( this, &rhs, sizeof( ImageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017517 }
17518
17519 ImageCreateInfo& operator=( VkImageCreateInfo const & rhs )
17520 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017521 memcpy( this, &rhs, sizeof( ImageCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017522 return *this;
17523 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017524 ImageCreateInfo& setPNext( const void* pNext_ )
17525 {
17526 pNext = pNext_;
17527 return *this;
17528 }
17529
17530 ImageCreateInfo& setFlags( ImageCreateFlags flags_ )
17531 {
17532 flags = flags_;
17533 return *this;
17534 }
17535
17536 ImageCreateInfo& setImageType( ImageType imageType_ )
17537 {
17538 imageType = imageType_;
17539 return *this;
17540 }
17541
17542 ImageCreateInfo& setFormat( Format format_ )
17543 {
17544 format = format_;
17545 return *this;
17546 }
17547
17548 ImageCreateInfo& setExtent( Extent3D extent_ )
17549 {
17550 extent = extent_;
17551 return *this;
17552 }
17553
17554 ImageCreateInfo& setMipLevels( uint32_t mipLevels_ )
17555 {
17556 mipLevels = mipLevels_;
17557 return *this;
17558 }
17559
17560 ImageCreateInfo& setArrayLayers( uint32_t arrayLayers_ )
17561 {
17562 arrayLayers = arrayLayers_;
17563 return *this;
17564 }
17565
17566 ImageCreateInfo& setSamples( SampleCountFlagBits samples_ )
17567 {
17568 samples = samples_;
17569 return *this;
17570 }
17571
17572 ImageCreateInfo& setTiling( ImageTiling tiling_ )
17573 {
17574 tiling = tiling_;
17575 return *this;
17576 }
17577
17578 ImageCreateInfo& setUsage( ImageUsageFlags usage_ )
17579 {
17580 usage = usage_;
17581 return *this;
17582 }
17583
17584 ImageCreateInfo& setSharingMode( SharingMode sharingMode_ )
17585 {
17586 sharingMode = sharingMode_;
17587 return *this;
17588 }
17589
17590 ImageCreateInfo& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
17591 {
17592 queueFamilyIndexCount = queueFamilyIndexCount_;
17593 return *this;
17594 }
17595
17596 ImageCreateInfo& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
17597 {
17598 pQueueFamilyIndices = pQueueFamilyIndices_;
17599 return *this;
17600 }
17601
17602 ImageCreateInfo& setInitialLayout( ImageLayout initialLayout_ )
17603 {
17604 initialLayout = initialLayout_;
17605 return *this;
17606 }
17607
17608 operator const VkImageCreateInfo&() const
17609 {
17610 return *reinterpret_cast<const VkImageCreateInfo*>(this);
17611 }
17612
17613 bool operator==( ImageCreateInfo const& rhs ) const
17614 {
17615 return ( sType == rhs.sType )
17616 && ( pNext == rhs.pNext )
17617 && ( flags == rhs.flags )
17618 && ( imageType == rhs.imageType )
17619 && ( format == rhs.format )
17620 && ( extent == rhs.extent )
17621 && ( mipLevels == rhs.mipLevels )
17622 && ( arrayLayers == rhs.arrayLayers )
17623 && ( samples == rhs.samples )
17624 && ( tiling == rhs.tiling )
17625 && ( usage == rhs.usage )
17626 && ( sharingMode == rhs.sharingMode )
17627 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
17628 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
17629 && ( initialLayout == rhs.initialLayout );
17630 }
17631
17632 bool operator!=( ImageCreateInfo const& rhs ) const
17633 {
17634 return !operator==( rhs );
17635 }
17636
17637 private:
17638 StructureType sType;
17639
17640 public:
17641 const void* pNext;
17642 ImageCreateFlags flags;
17643 ImageType imageType;
17644 Format format;
17645 Extent3D extent;
17646 uint32_t mipLevels;
17647 uint32_t arrayLayers;
17648 SampleCountFlagBits samples;
17649 ImageTiling tiling;
17650 ImageUsageFlags usage;
17651 SharingMode sharingMode;
17652 uint32_t queueFamilyIndexCount;
17653 const uint32_t* pQueueFamilyIndices;
17654 ImageLayout initialLayout;
17655 };
17656 static_assert( sizeof( ImageCreateInfo ) == sizeof( VkImageCreateInfo ), "struct and wrapper have different size!" );
17657
17658 struct PipelineMultisampleStateCreateInfo
17659 {
17660 PipelineMultisampleStateCreateInfo( PipelineMultisampleStateCreateFlags flags_ = PipelineMultisampleStateCreateFlags(), SampleCountFlagBits rasterizationSamples_ = SampleCountFlagBits::e1, Bool32 sampleShadingEnable_ = 0, float minSampleShading_ = 0, const SampleMask* pSampleMask_ = nullptr, Bool32 alphaToCoverageEnable_ = 0, Bool32 alphaToOneEnable_ = 0 )
17661 : sType( StructureType::ePipelineMultisampleStateCreateInfo )
17662 , pNext( nullptr )
17663 , flags( flags_ )
17664 , rasterizationSamples( rasterizationSamples_ )
17665 , sampleShadingEnable( sampleShadingEnable_ )
17666 , minSampleShading( minSampleShading_ )
17667 , pSampleMask( pSampleMask_ )
17668 , alphaToCoverageEnable( alphaToCoverageEnable_ )
17669 , alphaToOneEnable( alphaToOneEnable_ )
17670 {
17671 }
17672
17673 PipelineMultisampleStateCreateInfo( VkPipelineMultisampleStateCreateInfo const & rhs )
17674 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017675 memcpy( this, &rhs, sizeof( PipelineMultisampleStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017676 }
17677
17678 PipelineMultisampleStateCreateInfo& operator=( VkPipelineMultisampleStateCreateInfo const & rhs )
17679 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017680 memcpy( this, &rhs, sizeof( PipelineMultisampleStateCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017681 return *this;
17682 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017683 PipelineMultisampleStateCreateInfo& setPNext( const void* pNext_ )
17684 {
17685 pNext = pNext_;
17686 return *this;
17687 }
17688
17689 PipelineMultisampleStateCreateInfo& setFlags( PipelineMultisampleStateCreateFlags flags_ )
17690 {
17691 flags = flags_;
17692 return *this;
17693 }
17694
17695 PipelineMultisampleStateCreateInfo& setRasterizationSamples( SampleCountFlagBits rasterizationSamples_ )
17696 {
17697 rasterizationSamples = rasterizationSamples_;
17698 return *this;
17699 }
17700
17701 PipelineMultisampleStateCreateInfo& setSampleShadingEnable( Bool32 sampleShadingEnable_ )
17702 {
17703 sampleShadingEnable = sampleShadingEnable_;
17704 return *this;
17705 }
17706
17707 PipelineMultisampleStateCreateInfo& setMinSampleShading( float minSampleShading_ )
17708 {
17709 minSampleShading = minSampleShading_;
17710 return *this;
17711 }
17712
17713 PipelineMultisampleStateCreateInfo& setPSampleMask( const SampleMask* pSampleMask_ )
17714 {
17715 pSampleMask = pSampleMask_;
17716 return *this;
17717 }
17718
17719 PipelineMultisampleStateCreateInfo& setAlphaToCoverageEnable( Bool32 alphaToCoverageEnable_ )
17720 {
17721 alphaToCoverageEnable = alphaToCoverageEnable_;
17722 return *this;
17723 }
17724
17725 PipelineMultisampleStateCreateInfo& setAlphaToOneEnable( Bool32 alphaToOneEnable_ )
17726 {
17727 alphaToOneEnable = alphaToOneEnable_;
17728 return *this;
17729 }
17730
17731 operator const VkPipelineMultisampleStateCreateInfo&() const
17732 {
17733 return *reinterpret_cast<const VkPipelineMultisampleStateCreateInfo*>(this);
17734 }
17735
17736 bool operator==( PipelineMultisampleStateCreateInfo const& rhs ) const
17737 {
17738 return ( sType == rhs.sType )
17739 && ( pNext == rhs.pNext )
17740 && ( flags == rhs.flags )
17741 && ( rasterizationSamples == rhs.rasterizationSamples )
17742 && ( sampleShadingEnable == rhs.sampleShadingEnable )
17743 && ( minSampleShading == rhs.minSampleShading )
17744 && ( pSampleMask == rhs.pSampleMask )
17745 && ( alphaToCoverageEnable == rhs.alphaToCoverageEnable )
17746 && ( alphaToOneEnable == rhs.alphaToOneEnable );
17747 }
17748
17749 bool operator!=( PipelineMultisampleStateCreateInfo const& rhs ) const
17750 {
17751 return !operator==( rhs );
17752 }
17753
17754 private:
17755 StructureType sType;
17756
17757 public:
17758 const void* pNext;
17759 PipelineMultisampleStateCreateFlags flags;
17760 SampleCountFlagBits rasterizationSamples;
17761 Bool32 sampleShadingEnable;
17762 float minSampleShading;
17763 const SampleMask* pSampleMask;
17764 Bool32 alphaToCoverageEnable;
17765 Bool32 alphaToOneEnable;
17766 };
17767 static_assert( sizeof( PipelineMultisampleStateCreateInfo ) == sizeof( VkPipelineMultisampleStateCreateInfo ), "struct and wrapper have different size!" );
17768
17769 struct GraphicsPipelineCreateInfo
17770 {
17771 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 )
17772 : sType( StructureType::eGraphicsPipelineCreateInfo )
17773 , pNext( nullptr )
17774 , flags( flags_ )
17775 , stageCount( stageCount_ )
17776 , pStages( pStages_ )
17777 , pVertexInputState( pVertexInputState_ )
17778 , pInputAssemblyState( pInputAssemblyState_ )
17779 , pTessellationState( pTessellationState_ )
17780 , pViewportState( pViewportState_ )
17781 , pRasterizationState( pRasterizationState_ )
17782 , pMultisampleState( pMultisampleState_ )
17783 , pDepthStencilState( pDepthStencilState_ )
17784 , pColorBlendState( pColorBlendState_ )
17785 , pDynamicState( pDynamicState_ )
17786 , layout( layout_ )
17787 , renderPass( renderPass_ )
17788 , subpass( subpass_ )
17789 , basePipelineHandle( basePipelineHandle_ )
17790 , basePipelineIndex( basePipelineIndex_ )
17791 {
17792 }
17793
17794 GraphicsPipelineCreateInfo( VkGraphicsPipelineCreateInfo const & rhs )
17795 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017796 memcpy( this, &rhs, sizeof( GraphicsPipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017797 }
17798
17799 GraphicsPipelineCreateInfo& operator=( VkGraphicsPipelineCreateInfo const & rhs )
17800 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060017801 memcpy( this, &rhs, sizeof( GraphicsPipelineCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017802 return *this;
17803 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060017804 GraphicsPipelineCreateInfo& setPNext( const void* pNext_ )
17805 {
17806 pNext = pNext_;
17807 return *this;
17808 }
17809
17810 GraphicsPipelineCreateInfo& setFlags( PipelineCreateFlags flags_ )
17811 {
17812 flags = flags_;
17813 return *this;
17814 }
17815
17816 GraphicsPipelineCreateInfo& setStageCount( uint32_t stageCount_ )
17817 {
17818 stageCount = stageCount_;
17819 return *this;
17820 }
17821
17822 GraphicsPipelineCreateInfo& setPStages( const PipelineShaderStageCreateInfo* pStages_ )
17823 {
17824 pStages = pStages_;
17825 return *this;
17826 }
17827
17828 GraphicsPipelineCreateInfo& setPVertexInputState( const PipelineVertexInputStateCreateInfo* pVertexInputState_ )
17829 {
17830 pVertexInputState = pVertexInputState_;
17831 return *this;
17832 }
17833
17834 GraphicsPipelineCreateInfo& setPInputAssemblyState( const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState_ )
17835 {
17836 pInputAssemblyState = pInputAssemblyState_;
17837 return *this;
17838 }
17839
17840 GraphicsPipelineCreateInfo& setPTessellationState( const PipelineTessellationStateCreateInfo* pTessellationState_ )
17841 {
17842 pTessellationState = pTessellationState_;
17843 return *this;
17844 }
17845
17846 GraphicsPipelineCreateInfo& setPViewportState( const PipelineViewportStateCreateInfo* pViewportState_ )
17847 {
17848 pViewportState = pViewportState_;
17849 return *this;
17850 }
17851
17852 GraphicsPipelineCreateInfo& setPRasterizationState( const PipelineRasterizationStateCreateInfo* pRasterizationState_ )
17853 {
17854 pRasterizationState = pRasterizationState_;
17855 return *this;
17856 }
17857
17858 GraphicsPipelineCreateInfo& setPMultisampleState( const PipelineMultisampleStateCreateInfo* pMultisampleState_ )
17859 {
17860 pMultisampleState = pMultisampleState_;
17861 return *this;
17862 }
17863
17864 GraphicsPipelineCreateInfo& setPDepthStencilState( const PipelineDepthStencilStateCreateInfo* pDepthStencilState_ )
17865 {
17866 pDepthStencilState = pDepthStencilState_;
17867 return *this;
17868 }
17869
17870 GraphicsPipelineCreateInfo& setPColorBlendState( const PipelineColorBlendStateCreateInfo* pColorBlendState_ )
17871 {
17872 pColorBlendState = pColorBlendState_;
17873 return *this;
17874 }
17875
17876 GraphicsPipelineCreateInfo& setPDynamicState( const PipelineDynamicStateCreateInfo* pDynamicState_ )
17877 {
17878 pDynamicState = pDynamicState_;
17879 return *this;
17880 }
17881
17882 GraphicsPipelineCreateInfo& setLayout( PipelineLayout layout_ )
17883 {
17884 layout = layout_;
17885 return *this;
17886 }
17887
17888 GraphicsPipelineCreateInfo& setRenderPass( RenderPass renderPass_ )
17889 {
17890 renderPass = renderPass_;
17891 return *this;
17892 }
17893
17894 GraphicsPipelineCreateInfo& setSubpass( uint32_t subpass_ )
17895 {
17896 subpass = subpass_;
17897 return *this;
17898 }
17899
17900 GraphicsPipelineCreateInfo& setBasePipelineHandle( Pipeline basePipelineHandle_ )
17901 {
17902 basePipelineHandle = basePipelineHandle_;
17903 return *this;
17904 }
17905
17906 GraphicsPipelineCreateInfo& setBasePipelineIndex( int32_t basePipelineIndex_ )
17907 {
17908 basePipelineIndex = basePipelineIndex_;
17909 return *this;
17910 }
17911
17912 operator const VkGraphicsPipelineCreateInfo&() const
17913 {
17914 return *reinterpret_cast<const VkGraphicsPipelineCreateInfo*>(this);
17915 }
17916
17917 bool operator==( GraphicsPipelineCreateInfo const& rhs ) const
17918 {
17919 return ( sType == rhs.sType )
17920 && ( pNext == rhs.pNext )
17921 && ( flags == rhs.flags )
17922 && ( stageCount == rhs.stageCount )
17923 && ( pStages == rhs.pStages )
17924 && ( pVertexInputState == rhs.pVertexInputState )
17925 && ( pInputAssemblyState == rhs.pInputAssemblyState )
17926 && ( pTessellationState == rhs.pTessellationState )
17927 && ( pViewportState == rhs.pViewportState )
17928 && ( pRasterizationState == rhs.pRasterizationState )
17929 && ( pMultisampleState == rhs.pMultisampleState )
17930 && ( pDepthStencilState == rhs.pDepthStencilState )
17931 && ( pColorBlendState == rhs.pColorBlendState )
17932 && ( pDynamicState == rhs.pDynamicState )
17933 && ( layout == rhs.layout )
17934 && ( renderPass == rhs.renderPass )
17935 && ( subpass == rhs.subpass )
17936 && ( basePipelineHandle == rhs.basePipelineHandle )
17937 && ( basePipelineIndex == rhs.basePipelineIndex );
17938 }
17939
17940 bool operator!=( GraphicsPipelineCreateInfo const& rhs ) const
17941 {
17942 return !operator==( rhs );
17943 }
17944
17945 private:
17946 StructureType sType;
17947
17948 public:
17949 const void* pNext;
17950 PipelineCreateFlags flags;
17951 uint32_t stageCount;
17952 const PipelineShaderStageCreateInfo* pStages;
17953 const PipelineVertexInputStateCreateInfo* pVertexInputState;
17954 const PipelineInputAssemblyStateCreateInfo* pInputAssemblyState;
17955 const PipelineTessellationStateCreateInfo* pTessellationState;
17956 const PipelineViewportStateCreateInfo* pViewportState;
17957 const PipelineRasterizationStateCreateInfo* pRasterizationState;
17958 const PipelineMultisampleStateCreateInfo* pMultisampleState;
17959 const PipelineDepthStencilStateCreateInfo* pDepthStencilState;
17960 const PipelineColorBlendStateCreateInfo* pColorBlendState;
17961 const PipelineDynamicStateCreateInfo* pDynamicState;
17962 PipelineLayout layout;
17963 RenderPass renderPass;
17964 uint32_t subpass;
17965 Pipeline basePipelineHandle;
17966 int32_t basePipelineIndex;
17967 };
17968 static_assert( sizeof( GraphicsPipelineCreateInfo ) == sizeof( VkGraphicsPipelineCreateInfo ), "struct and wrapper have different size!" );
17969
17970 struct PhysicalDeviceLimits
17971 {
17972 operator const VkPhysicalDeviceLimits&() const
17973 {
17974 return *reinterpret_cast<const VkPhysicalDeviceLimits*>(this);
17975 }
17976
17977 bool operator==( PhysicalDeviceLimits const& rhs ) const
17978 {
17979 return ( maxImageDimension1D == rhs.maxImageDimension1D )
17980 && ( maxImageDimension2D == rhs.maxImageDimension2D )
17981 && ( maxImageDimension3D == rhs.maxImageDimension3D )
17982 && ( maxImageDimensionCube == rhs.maxImageDimensionCube )
17983 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
17984 && ( maxTexelBufferElements == rhs.maxTexelBufferElements )
17985 && ( maxUniformBufferRange == rhs.maxUniformBufferRange )
17986 && ( maxStorageBufferRange == rhs.maxStorageBufferRange )
17987 && ( maxPushConstantsSize == rhs.maxPushConstantsSize )
17988 && ( maxMemoryAllocationCount == rhs.maxMemoryAllocationCount )
17989 && ( maxSamplerAllocationCount == rhs.maxSamplerAllocationCount )
17990 && ( bufferImageGranularity == rhs.bufferImageGranularity )
17991 && ( sparseAddressSpaceSize == rhs.sparseAddressSpaceSize )
17992 && ( maxBoundDescriptorSets == rhs.maxBoundDescriptorSets )
17993 && ( maxPerStageDescriptorSamplers == rhs.maxPerStageDescriptorSamplers )
17994 && ( maxPerStageDescriptorUniformBuffers == rhs.maxPerStageDescriptorUniformBuffers )
17995 && ( maxPerStageDescriptorStorageBuffers == rhs.maxPerStageDescriptorStorageBuffers )
17996 && ( maxPerStageDescriptorSampledImages == rhs.maxPerStageDescriptorSampledImages )
17997 && ( maxPerStageDescriptorStorageImages == rhs.maxPerStageDescriptorStorageImages )
17998 && ( maxPerStageDescriptorInputAttachments == rhs.maxPerStageDescriptorInputAttachments )
17999 && ( maxPerStageResources == rhs.maxPerStageResources )
18000 && ( maxDescriptorSetSamplers == rhs.maxDescriptorSetSamplers )
18001 && ( maxDescriptorSetUniformBuffers == rhs.maxDescriptorSetUniformBuffers )
18002 && ( maxDescriptorSetUniformBuffersDynamic == rhs.maxDescriptorSetUniformBuffersDynamic )
18003 && ( maxDescriptorSetStorageBuffers == rhs.maxDescriptorSetStorageBuffers )
18004 && ( maxDescriptorSetStorageBuffersDynamic == rhs.maxDescriptorSetStorageBuffersDynamic )
18005 && ( maxDescriptorSetSampledImages == rhs.maxDescriptorSetSampledImages )
18006 && ( maxDescriptorSetStorageImages == rhs.maxDescriptorSetStorageImages )
18007 && ( maxDescriptorSetInputAttachments == rhs.maxDescriptorSetInputAttachments )
18008 && ( maxVertexInputAttributes == rhs.maxVertexInputAttributes )
18009 && ( maxVertexInputBindings == rhs.maxVertexInputBindings )
18010 && ( maxVertexInputAttributeOffset == rhs.maxVertexInputAttributeOffset )
18011 && ( maxVertexInputBindingStride == rhs.maxVertexInputBindingStride )
18012 && ( maxVertexOutputComponents == rhs.maxVertexOutputComponents )
18013 && ( maxTessellationGenerationLevel == rhs.maxTessellationGenerationLevel )
18014 && ( maxTessellationPatchSize == rhs.maxTessellationPatchSize )
18015 && ( maxTessellationControlPerVertexInputComponents == rhs.maxTessellationControlPerVertexInputComponents )
18016 && ( maxTessellationControlPerVertexOutputComponents == rhs.maxTessellationControlPerVertexOutputComponents )
18017 && ( maxTessellationControlPerPatchOutputComponents == rhs.maxTessellationControlPerPatchOutputComponents )
18018 && ( maxTessellationControlTotalOutputComponents == rhs.maxTessellationControlTotalOutputComponents )
18019 && ( maxTessellationEvaluationInputComponents == rhs.maxTessellationEvaluationInputComponents )
18020 && ( maxTessellationEvaluationOutputComponents == rhs.maxTessellationEvaluationOutputComponents )
18021 && ( maxGeometryShaderInvocations == rhs.maxGeometryShaderInvocations )
18022 && ( maxGeometryInputComponents == rhs.maxGeometryInputComponents )
18023 && ( maxGeometryOutputComponents == rhs.maxGeometryOutputComponents )
18024 && ( maxGeometryOutputVertices == rhs.maxGeometryOutputVertices )
18025 && ( maxGeometryTotalOutputComponents == rhs.maxGeometryTotalOutputComponents )
18026 && ( maxFragmentInputComponents == rhs.maxFragmentInputComponents )
18027 && ( maxFragmentOutputAttachments == rhs.maxFragmentOutputAttachments )
18028 && ( maxFragmentDualSrcAttachments == rhs.maxFragmentDualSrcAttachments )
18029 && ( maxFragmentCombinedOutputResources == rhs.maxFragmentCombinedOutputResources )
18030 && ( maxComputeSharedMemorySize == rhs.maxComputeSharedMemorySize )
18031 && ( memcmp( maxComputeWorkGroupCount, rhs.maxComputeWorkGroupCount, 3 * sizeof( uint32_t ) ) == 0 )
18032 && ( maxComputeWorkGroupInvocations == rhs.maxComputeWorkGroupInvocations )
18033 && ( memcmp( maxComputeWorkGroupSize, rhs.maxComputeWorkGroupSize, 3 * sizeof( uint32_t ) ) == 0 )
18034 && ( subPixelPrecisionBits == rhs.subPixelPrecisionBits )
18035 && ( subTexelPrecisionBits == rhs.subTexelPrecisionBits )
18036 && ( mipmapPrecisionBits == rhs.mipmapPrecisionBits )
18037 && ( maxDrawIndexedIndexValue == rhs.maxDrawIndexedIndexValue )
18038 && ( maxDrawIndirectCount == rhs.maxDrawIndirectCount )
18039 && ( maxSamplerLodBias == rhs.maxSamplerLodBias )
18040 && ( maxSamplerAnisotropy == rhs.maxSamplerAnisotropy )
18041 && ( maxViewports == rhs.maxViewports )
18042 && ( memcmp( maxViewportDimensions, rhs.maxViewportDimensions, 2 * sizeof( uint32_t ) ) == 0 )
18043 && ( memcmp( viewportBoundsRange, rhs.viewportBoundsRange, 2 * sizeof( float ) ) == 0 )
18044 && ( viewportSubPixelBits == rhs.viewportSubPixelBits )
18045 && ( minMemoryMapAlignment == rhs.minMemoryMapAlignment )
18046 && ( minTexelBufferOffsetAlignment == rhs.minTexelBufferOffsetAlignment )
18047 && ( minUniformBufferOffsetAlignment == rhs.minUniformBufferOffsetAlignment )
18048 && ( minStorageBufferOffsetAlignment == rhs.minStorageBufferOffsetAlignment )
18049 && ( minTexelOffset == rhs.minTexelOffset )
18050 && ( maxTexelOffset == rhs.maxTexelOffset )
18051 && ( minTexelGatherOffset == rhs.minTexelGatherOffset )
18052 && ( maxTexelGatherOffset == rhs.maxTexelGatherOffset )
18053 && ( minInterpolationOffset == rhs.minInterpolationOffset )
18054 && ( maxInterpolationOffset == rhs.maxInterpolationOffset )
18055 && ( subPixelInterpolationOffsetBits == rhs.subPixelInterpolationOffsetBits )
18056 && ( maxFramebufferWidth == rhs.maxFramebufferWidth )
18057 && ( maxFramebufferHeight == rhs.maxFramebufferHeight )
18058 && ( maxFramebufferLayers == rhs.maxFramebufferLayers )
18059 && ( framebufferColorSampleCounts == rhs.framebufferColorSampleCounts )
18060 && ( framebufferDepthSampleCounts == rhs.framebufferDepthSampleCounts )
18061 && ( framebufferStencilSampleCounts == rhs.framebufferStencilSampleCounts )
18062 && ( framebufferNoAttachmentsSampleCounts == rhs.framebufferNoAttachmentsSampleCounts )
18063 && ( maxColorAttachments == rhs.maxColorAttachments )
18064 && ( sampledImageColorSampleCounts == rhs.sampledImageColorSampleCounts )
18065 && ( sampledImageIntegerSampleCounts == rhs.sampledImageIntegerSampleCounts )
18066 && ( sampledImageDepthSampleCounts == rhs.sampledImageDepthSampleCounts )
18067 && ( sampledImageStencilSampleCounts == rhs.sampledImageStencilSampleCounts )
18068 && ( storageImageSampleCounts == rhs.storageImageSampleCounts )
18069 && ( maxSampleMaskWords == rhs.maxSampleMaskWords )
18070 && ( timestampComputeAndGraphics == rhs.timestampComputeAndGraphics )
18071 && ( timestampPeriod == rhs.timestampPeriod )
18072 && ( maxClipDistances == rhs.maxClipDistances )
18073 && ( maxCullDistances == rhs.maxCullDistances )
18074 && ( maxCombinedClipAndCullDistances == rhs.maxCombinedClipAndCullDistances )
18075 && ( discreteQueuePriorities == rhs.discreteQueuePriorities )
18076 && ( memcmp( pointSizeRange, rhs.pointSizeRange, 2 * sizeof( float ) ) == 0 )
18077 && ( memcmp( lineWidthRange, rhs.lineWidthRange, 2 * sizeof( float ) ) == 0 )
18078 && ( pointSizeGranularity == rhs.pointSizeGranularity )
18079 && ( lineWidthGranularity == rhs.lineWidthGranularity )
18080 && ( strictLines == rhs.strictLines )
18081 && ( standardSampleLocations == rhs.standardSampleLocations )
18082 && ( optimalBufferCopyOffsetAlignment == rhs.optimalBufferCopyOffsetAlignment )
18083 && ( optimalBufferCopyRowPitchAlignment == rhs.optimalBufferCopyRowPitchAlignment )
18084 && ( nonCoherentAtomSize == rhs.nonCoherentAtomSize );
18085 }
18086
18087 bool operator!=( PhysicalDeviceLimits const& rhs ) const
18088 {
18089 return !operator==( rhs );
18090 }
18091
18092 uint32_t maxImageDimension1D;
18093 uint32_t maxImageDimension2D;
18094 uint32_t maxImageDimension3D;
18095 uint32_t maxImageDimensionCube;
18096 uint32_t maxImageArrayLayers;
18097 uint32_t maxTexelBufferElements;
18098 uint32_t maxUniformBufferRange;
18099 uint32_t maxStorageBufferRange;
18100 uint32_t maxPushConstantsSize;
18101 uint32_t maxMemoryAllocationCount;
18102 uint32_t maxSamplerAllocationCount;
18103 DeviceSize bufferImageGranularity;
18104 DeviceSize sparseAddressSpaceSize;
18105 uint32_t maxBoundDescriptorSets;
18106 uint32_t maxPerStageDescriptorSamplers;
18107 uint32_t maxPerStageDescriptorUniformBuffers;
18108 uint32_t maxPerStageDescriptorStorageBuffers;
18109 uint32_t maxPerStageDescriptorSampledImages;
18110 uint32_t maxPerStageDescriptorStorageImages;
18111 uint32_t maxPerStageDescriptorInputAttachments;
18112 uint32_t maxPerStageResources;
18113 uint32_t maxDescriptorSetSamplers;
18114 uint32_t maxDescriptorSetUniformBuffers;
18115 uint32_t maxDescriptorSetUniformBuffersDynamic;
18116 uint32_t maxDescriptorSetStorageBuffers;
18117 uint32_t maxDescriptorSetStorageBuffersDynamic;
18118 uint32_t maxDescriptorSetSampledImages;
18119 uint32_t maxDescriptorSetStorageImages;
18120 uint32_t maxDescriptorSetInputAttachments;
18121 uint32_t maxVertexInputAttributes;
18122 uint32_t maxVertexInputBindings;
18123 uint32_t maxVertexInputAttributeOffset;
18124 uint32_t maxVertexInputBindingStride;
18125 uint32_t maxVertexOutputComponents;
18126 uint32_t maxTessellationGenerationLevel;
18127 uint32_t maxTessellationPatchSize;
18128 uint32_t maxTessellationControlPerVertexInputComponents;
18129 uint32_t maxTessellationControlPerVertexOutputComponents;
18130 uint32_t maxTessellationControlPerPatchOutputComponents;
18131 uint32_t maxTessellationControlTotalOutputComponents;
18132 uint32_t maxTessellationEvaluationInputComponents;
18133 uint32_t maxTessellationEvaluationOutputComponents;
18134 uint32_t maxGeometryShaderInvocations;
18135 uint32_t maxGeometryInputComponents;
18136 uint32_t maxGeometryOutputComponents;
18137 uint32_t maxGeometryOutputVertices;
18138 uint32_t maxGeometryTotalOutputComponents;
18139 uint32_t maxFragmentInputComponents;
18140 uint32_t maxFragmentOutputAttachments;
18141 uint32_t maxFragmentDualSrcAttachments;
18142 uint32_t maxFragmentCombinedOutputResources;
18143 uint32_t maxComputeSharedMemorySize;
18144 uint32_t maxComputeWorkGroupCount[3];
18145 uint32_t maxComputeWorkGroupInvocations;
18146 uint32_t maxComputeWorkGroupSize[3];
18147 uint32_t subPixelPrecisionBits;
18148 uint32_t subTexelPrecisionBits;
18149 uint32_t mipmapPrecisionBits;
18150 uint32_t maxDrawIndexedIndexValue;
18151 uint32_t maxDrawIndirectCount;
18152 float maxSamplerLodBias;
18153 float maxSamplerAnisotropy;
18154 uint32_t maxViewports;
18155 uint32_t maxViewportDimensions[2];
18156 float viewportBoundsRange[2];
18157 uint32_t viewportSubPixelBits;
18158 size_t minMemoryMapAlignment;
18159 DeviceSize minTexelBufferOffsetAlignment;
18160 DeviceSize minUniformBufferOffsetAlignment;
18161 DeviceSize minStorageBufferOffsetAlignment;
18162 int32_t minTexelOffset;
18163 uint32_t maxTexelOffset;
18164 int32_t minTexelGatherOffset;
18165 uint32_t maxTexelGatherOffset;
18166 float minInterpolationOffset;
18167 float maxInterpolationOffset;
18168 uint32_t subPixelInterpolationOffsetBits;
18169 uint32_t maxFramebufferWidth;
18170 uint32_t maxFramebufferHeight;
18171 uint32_t maxFramebufferLayers;
18172 SampleCountFlags framebufferColorSampleCounts;
18173 SampleCountFlags framebufferDepthSampleCounts;
18174 SampleCountFlags framebufferStencilSampleCounts;
18175 SampleCountFlags framebufferNoAttachmentsSampleCounts;
18176 uint32_t maxColorAttachments;
18177 SampleCountFlags sampledImageColorSampleCounts;
18178 SampleCountFlags sampledImageIntegerSampleCounts;
18179 SampleCountFlags sampledImageDepthSampleCounts;
18180 SampleCountFlags sampledImageStencilSampleCounts;
18181 SampleCountFlags storageImageSampleCounts;
18182 uint32_t maxSampleMaskWords;
18183 Bool32 timestampComputeAndGraphics;
18184 float timestampPeriod;
18185 uint32_t maxClipDistances;
18186 uint32_t maxCullDistances;
18187 uint32_t maxCombinedClipAndCullDistances;
18188 uint32_t discreteQueuePriorities;
18189 float pointSizeRange[2];
18190 float lineWidthRange[2];
18191 float pointSizeGranularity;
18192 float lineWidthGranularity;
18193 Bool32 strictLines;
18194 Bool32 standardSampleLocations;
18195 DeviceSize optimalBufferCopyOffsetAlignment;
18196 DeviceSize optimalBufferCopyRowPitchAlignment;
18197 DeviceSize nonCoherentAtomSize;
18198 };
18199 static_assert( sizeof( PhysicalDeviceLimits ) == sizeof( VkPhysicalDeviceLimits ), "struct and wrapper have different size!" );
18200
18201 struct PhysicalDeviceProperties
18202 {
18203 operator const VkPhysicalDeviceProperties&() const
18204 {
18205 return *reinterpret_cast<const VkPhysicalDeviceProperties*>(this);
18206 }
18207
18208 bool operator==( PhysicalDeviceProperties const& rhs ) const
18209 {
18210 return ( apiVersion == rhs.apiVersion )
18211 && ( driverVersion == rhs.driverVersion )
18212 && ( vendorID == rhs.vendorID )
18213 && ( deviceID == rhs.deviceID )
18214 && ( deviceType == rhs.deviceType )
18215 && ( memcmp( deviceName, rhs.deviceName, VK_MAX_PHYSICAL_DEVICE_NAME_SIZE * sizeof( char ) ) == 0 )
18216 && ( memcmp( pipelineCacheUUID, rhs.pipelineCacheUUID, VK_UUID_SIZE * sizeof( uint8_t ) ) == 0 )
18217 && ( limits == rhs.limits )
18218 && ( sparseProperties == rhs.sparseProperties );
18219 }
18220
18221 bool operator!=( PhysicalDeviceProperties const& rhs ) const
18222 {
18223 return !operator==( rhs );
18224 }
18225
18226 uint32_t apiVersion;
18227 uint32_t driverVersion;
18228 uint32_t vendorID;
18229 uint32_t deviceID;
18230 PhysicalDeviceType deviceType;
18231 char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
18232 uint8_t pipelineCacheUUID[VK_UUID_SIZE];
18233 PhysicalDeviceLimits limits;
18234 PhysicalDeviceSparseProperties sparseProperties;
18235 };
18236 static_assert( sizeof( PhysicalDeviceProperties ) == sizeof( VkPhysicalDeviceProperties ), "struct and wrapper have different size!" );
18237
Mark Young39389872017-01-19 21:10:49 -070018238 struct PhysicalDeviceProperties2KHR
18239 {
18240 operator const VkPhysicalDeviceProperties2KHR&() const
18241 {
18242 return *reinterpret_cast<const VkPhysicalDeviceProperties2KHR*>(this);
18243 }
18244
18245 bool operator==( PhysicalDeviceProperties2KHR const& rhs ) const
18246 {
18247 return ( sType == rhs.sType )
18248 && ( pNext == rhs.pNext )
18249 && ( properties == rhs.properties );
18250 }
18251
18252 bool operator!=( PhysicalDeviceProperties2KHR const& rhs ) const
18253 {
18254 return !operator==( rhs );
18255 }
18256
18257 private:
18258 StructureType sType;
18259
18260 public:
18261 void* pNext;
18262 PhysicalDeviceProperties properties;
18263 };
18264 static_assert( sizeof( PhysicalDeviceProperties2KHR ) == sizeof( VkPhysicalDeviceProperties2KHR ), "struct and wrapper have different size!" );
18265
18266 struct ImageFormatProperties2KHR
18267 {
18268 operator const VkImageFormatProperties2KHR&() const
18269 {
18270 return *reinterpret_cast<const VkImageFormatProperties2KHR*>(this);
18271 }
18272
18273 bool operator==( ImageFormatProperties2KHR const& rhs ) const
18274 {
18275 return ( sType == rhs.sType )
18276 && ( pNext == rhs.pNext )
18277 && ( imageFormatProperties == rhs.imageFormatProperties );
18278 }
18279
18280 bool operator!=( ImageFormatProperties2KHR const& rhs ) const
18281 {
18282 return !operator==( rhs );
18283 }
18284
18285 private:
18286 StructureType sType;
18287
18288 public:
18289 void* pNext;
18290 ImageFormatProperties imageFormatProperties;
18291 };
18292 static_assert( sizeof( ImageFormatProperties2KHR ) == sizeof( VkImageFormatProperties2KHR ), "struct and wrapper have different size!" );
18293
18294 struct PhysicalDeviceSparseImageFormatInfo2KHR
18295 {
18296 PhysicalDeviceSparseImageFormatInfo2KHR( Format format_ = Format::eUndefined, ImageType type_ = ImageType::e1D, SampleCountFlagBits samples_ = SampleCountFlagBits::e1, ImageUsageFlags usage_ = ImageUsageFlags(), ImageTiling tiling_ = ImageTiling::eOptimal )
18297 : sType( StructureType::ePhysicalDeviceSparseImageFormatInfo2KHR )
18298 , pNext( nullptr )
18299 , format( format_ )
18300 , type( type_ )
18301 , samples( samples_ )
18302 , usage( usage_ )
18303 , tiling( tiling_ )
18304 {
18305 }
18306
18307 PhysicalDeviceSparseImageFormatInfo2KHR( VkPhysicalDeviceSparseImageFormatInfo2KHR const & rhs )
18308 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018309 memcpy( this, &rhs, sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070018310 }
18311
18312 PhysicalDeviceSparseImageFormatInfo2KHR& operator=( VkPhysicalDeviceSparseImageFormatInfo2KHR const & rhs )
18313 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018314 memcpy( this, &rhs, sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) );
Mark Young39389872017-01-19 21:10:49 -070018315 return *this;
18316 }
Mark Young39389872017-01-19 21:10:49 -070018317 PhysicalDeviceSparseImageFormatInfo2KHR& setPNext( const void* pNext_ )
18318 {
18319 pNext = pNext_;
18320 return *this;
18321 }
18322
18323 PhysicalDeviceSparseImageFormatInfo2KHR& setFormat( Format format_ )
18324 {
18325 format = format_;
18326 return *this;
18327 }
18328
18329 PhysicalDeviceSparseImageFormatInfo2KHR& setType( ImageType type_ )
18330 {
18331 type = type_;
18332 return *this;
18333 }
18334
18335 PhysicalDeviceSparseImageFormatInfo2KHR& setSamples( SampleCountFlagBits samples_ )
18336 {
18337 samples = samples_;
18338 return *this;
18339 }
18340
18341 PhysicalDeviceSparseImageFormatInfo2KHR& setUsage( ImageUsageFlags usage_ )
18342 {
18343 usage = usage_;
18344 return *this;
18345 }
18346
18347 PhysicalDeviceSparseImageFormatInfo2KHR& setTiling( ImageTiling tiling_ )
18348 {
18349 tiling = tiling_;
18350 return *this;
18351 }
18352
18353 operator const VkPhysicalDeviceSparseImageFormatInfo2KHR&() const
18354 {
18355 return *reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>(this);
18356 }
18357
18358 bool operator==( PhysicalDeviceSparseImageFormatInfo2KHR const& rhs ) const
18359 {
18360 return ( sType == rhs.sType )
18361 && ( pNext == rhs.pNext )
18362 && ( format == rhs.format )
18363 && ( type == rhs.type )
18364 && ( samples == rhs.samples )
18365 && ( usage == rhs.usage )
18366 && ( tiling == rhs.tiling );
18367 }
18368
18369 bool operator!=( PhysicalDeviceSparseImageFormatInfo2KHR const& rhs ) const
18370 {
18371 return !operator==( rhs );
18372 }
18373
18374 private:
18375 StructureType sType;
18376
18377 public:
18378 const void* pNext;
18379 Format format;
18380 ImageType type;
18381 SampleCountFlagBits samples;
18382 ImageUsageFlags usage;
18383 ImageTiling tiling;
18384 };
18385 static_assert( sizeof( PhysicalDeviceSparseImageFormatInfo2KHR ) == sizeof( VkPhysicalDeviceSparseImageFormatInfo2KHR ), "struct and wrapper have different size!" );
18386
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060018387 struct SampleLocationsInfoEXT
18388 {
18389 SampleLocationsInfoEXT( SampleCountFlagBits sampleLocationsPerPixel_ = SampleCountFlagBits::e1, Extent2D sampleLocationGridSize_ = Extent2D(), uint32_t sampleLocationsCount_ = 0, const SampleLocationEXT* pSampleLocations_ = nullptr )
18390 : sType( StructureType::eSampleLocationsInfoEXT )
18391 , pNext( nullptr )
18392 , sampleLocationsPerPixel( sampleLocationsPerPixel_ )
18393 , sampleLocationGridSize( sampleLocationGridSize_ )
18394 , sampleLocationsCount( sampleLocationsCount_ )
18395 , pSampleLocations( pSampleLocations_ )
18396 {
18397 }
18398
18399 SampleLocationsInfoEXT( VkSampleLocationsInfoEXT const & rhs )
18400 {
18401 memcpy( this, &rhs, sizeof( SampleLocationsInfoEXT ) );
18402 }
18403
18404 SampleLocationsInfoEXT& operator=( VkSampleLocationsInfoEXT const & rhs )
18405 {
18406 memcpy( this, &rhs, sizeof( SampleLocationsInfoEXT ) );
18407 return *this;
18408 }
18409 SampleLocationsInfoEXT& setPNext( const void* pNext_ )
18410 {
18411 pNext = pNext_;
18412 return *this;
18413 }
18414
18415 SampleLocationsInfoEXT& setSampleLocationsPerPixel( SampleCountFlagBits sampleLocationsPerPixel_ )
18416 {
18417 sampleLocationsPerPixel = sampleLocationsPerPixel_;
18418 return *this;
18419 }
18420
18421 SampleLocationsInfoEXT& setSampleLocationGridSize( Extent2D sampleLocationGridSize_ )
18422 {
18423 sampleLocationGridSize = sampleLocationGridSize_;
18424 return *this;
18425 }
18426
18427 SampleLocationsInfoEXT& setSampleLocationsCount( uint32_t sampleLocationsCount_ )
18428 {
18429 sampleLocationsCount = sampleLocationsCount_;
18430 return *this;
18431 }
18432
18433 SampleLocationsInfoEXT& setPSampleLocations( const SampleLocationEXT* pSampleLocations_ )
18434 {
18435 pSampleLocations = pSampleLocations_;
18436 return *this;
18437 }
18438
18439 operator const VkSampleLocationsInfoEXT&() const
18440 {
18441 return *reinterpret_cast<const VkSampleLocationsInfoEXT*>(this);
18442 }
18443
18444 bool operator==( SampleLocationsInfoEXT const& rhs ) const
18445 {
18446 return ( sType == rhs.sType )
18447 && ( pNext == rhs.pNext )
18448 && ( sampleLocationsPerPixel == rhs.sampleLocationsPerPixel )
18449 && ( sampleLocationGridSize == rhs.sampleLocationGridSize )
18450 && ( sampleLocationsCount == rhs.sampleLocationsCount )
18451 && ( pSampleLocations == rhs.pSampleLocations );
18452 }
18453
18454 bool operator!=( SampleLocationsInfoEXT const& rhs ) const
18455 {
18456 return !operator==( rhs );
18457 }
18458
18459 private:
18460 StructureType sType;
18461
18462 public:
18463 const void* pNext;
18464 SampleCountFlagBits sampleLocationsPerPixel;
18465 Extent2D sampleLocationGridSize;
18466 uint32_t sampleLocationsCount;
18467 const SampleLocationEXT* pSampleLocations;
18468 };
18469 static_assert( sizeof( SampleLocationsInfoEXT ) == sizeof( VkSampleLocationsInfoEXT ), "struct and wrapper have different size!" );
18470
18471 struct AttachmentSampleLocationsEXT
18472 {
18473 AttachmentSampleLocationsEXT( uint32_t attachmentIndex_ = 0, SampleLocationsInfoEXT sampleLocationsInfo_ = SampleLocationsInfoEXT() )
18474 : attachmentIndex( attachmentIndex_ )
18475 , sampleLocationsInfo( sampleLocationsInfo_ )
18476 {
18477 }
18478
18479 AttachmentSampleLocationsEXT( VkAttachmentSampleLocationsEXT const & rhs )
18480 {
18481 memcpy( this, &rhs, sizeof( AttachmentSampleLocationsEXT ) );
18482 }
18483
18484 AttachmentSampleLocationsEXT& operator=( VkAttachmentSampleLocationsEXT const & rhs )
18485 {
18486 memcpy( this, &rhs, sizeof( AttachmentSampleLocationsEXT ) );
18487 return *this;
18488 }
18489 AttachmentSampleLocationsEXT& setAttachmentIndex( uint32_t attachmentIndex_ )
18490 {
18491 attachmentIndex = attachmentIndex_;
18492 return *this;
18493 }
18494
18495 AttachmentSampleLocationsEXT& setSampleLocationsInfo( SampleLocationsInfoEXT sampleLocationsInfo_ )
18496 {
18497 sampleLocationsInfo = sampleLocationsInfo_;
18498 return *this;
18499 }
18500
18501 operator const VkAttachmentSampleLocationsEXT&() const
18502 {
18503 return *reinterpret_cast<const VkAttachmentSampleLocationsEXT*>(this);
18504 }
18505
18506 bool operator==( AttachmentSampleLocationsEXT const& rhs ) const
18507 {
18508 return ( attachmentIndex == rhs.attachmentIndex )
18509 && ( sampleLocationsInfo == rhs.sampleLocationsInfo );
18510 }
18511
18512 bool operator!=( AttachmentSampleLocationsEXT const& rhs ) const
18513 {
18514 return !operator==( rhs );
18515 }
18516
18517 uint32_t attachmentIndex;
18518 SampleLocationsInfoEXT sampleLocationsInfo;
18519 };
18520 static_assert( sizeof( AttachmentSampleLocationsEXT ) == sizeof( VkAttachmentSampleLocationsEXT ), "struct and wrapper have different size!" );
18521
18522 struct SubpassSampleLocationsEXT
18523 {
18524 SubpassSampleLocationsEXT( uint32_t subpassIndex_ = 0, SampleLocationsInfoEXT sampleLocationsInfo_ = SampleLocationsInfoEXT() )
18525 : subpassIndex( subpassIndex_ )
18526 , sampleLocationsInfo( sampleLocationsInfo_ )
18527 {
18528 }
18529
18530 SubpassSampleLocationsEXT( VkSubpassSampleLocationsEXT const & rhs )
18531 {
18532 memcpy( this, &rhs, sizeof( SubpassSampleLocationsEXT ) );
18533 }
18534
18535 SubpassSampleLocationsEXT& operator=( VkSubpassSampleLocationsEXT const & rhs )
18536 {
18537 memcpy( this, &rhs, sizeof( SubpassSampleLocationsEXT ) );
18538 return *this;
18539 }
18540 SubpassSampleLocationsEXT& setSubpassIndex( uint32_t subpassIndex_ )
18541 {
18542 subpassIndex = subpassIndex_;
18543 return *this;
18544 }
18545
18546 SubpassSampleLocationsEXT& setSampleLocationsInfo( SampleLocationsInfoEXT sampleLocationsInfo_ )
18547 {
18548 sampleLocationsInfo = sampleLocationsInfo_;
18549 return *this;
18550 }
18551
18552 operator const VkSubpassSampleLocationsEXT&() const
18553 {
18554 return *reinterpret_cast<const VkSubpassSampleLocationsEXT*>(this);
18555 }
18556
18557 bool operator==( SubpassSampleLocationsEXT const& rhs ) const
18558 {
18559 return ( subpassIndex == rhs.subpassIndex )
18560 && ( sampleLocationsInfo == rhs.sampleLocationsInfo );
18561 }
18562
18563 bool operator!=( SubpassSampleLocationsEXT const& rhs ) const
18564 {
18565 return !operator==( rhs );
18566 }
18567
18568 uint32_t subpassIndex;
18569 SampleLocationsInfoEXT sampleLocationsInfo;
18570 };
18571 static_assert( sizeof( SubpassSampleLocationsEXT ) == sizeof( VkSubpassSampleLocationsEXT ), "struct and wrapper have different size!" );
18572
18573 struct RenderPassSampleLocationsBeginInfoEXT
18574 {
18575 RenderPassSampleLocationsBeginInfoEXT( uint32_t attachmentInitialSampleLocationsCount_ = 0, const AttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations_ = nullptr, uint32_t postSubpassSampleLocationsCount_ = 0, const SubpassSampleLocationsEXT* pSubpassSampleLocations_ = nullptr )
18576 : sType( StructureType::eRenderPassSampleLocationsBeginInfoEXT )
18577 , pNext( nullptr )
18578 , attachmentInitialSampleLocationsCount( attachmentInitialSampleLocationsCount_ )
18579 , pAttachmentInitialSampleLocations( pAttachmentInitialSampleLocations_ )
18580 , postSubpassSampleLocationsCount( postSubpassSampleLocationsCount_ )
18581 , pSubpassSampleLocations( pSubpassSampleLocations_ )
18582 {
18583 }
18584
18585 RenderPassSampleLocationsBeginInfoEXT( VkRenderPassSampleLocationsBeginInfoEXT const & rhs )
18586 {
18587 memcpy( this, &rhs, sizeof( RenderPassSampleLocationsBeginInfoEXT ) );
18588 }
18589
18590 RenderPassSampleLocationsBeginInfoEXT& operator=( VkRenderPassSampleLocationsBeginInfoEXT const & rhs )
18591 {
18592 memcpy( this, &rhs, sizeof( RenderPassSampleLocationsBeginInfoEXT ) );
18593 return *this;
18594 }
18595 RenderPassSampleLocationsBeginInfoEXT& setPNext( const void* pNext_ )
18596 {
18597 pNext = pNext_;
18598 return *this;
18599 }
18600
18601 RenderPassSampleLocationsBeginInfoEXT& setAttachmentInitialSampleLocationsCount( uint32_t attachmentInitialSampleLocationsCount_ )
18602 {
18603 attachmentInitialSampleLocationsCount = attachmentInitialSampleLocationsCount_;
18604 return *this;
18605 }
18606
18607 RenderPassSampleLocationsBeginInfoEXT& setPAttachmentInitialSampleLocations( const AttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations_ )
18608 {
18609 pAttachmentInitialSampleLocations = pAttachmentInitialSampleLocations_;
18610 return *this;
18611 }
18612
18613 RenderPassSampleLocationsBeginInfoEXT& setPostSubpassSampleLocationsCount( uint32_t postSubpassSampleLocationsCount_ )
18614 {
18615 postSubpassSampleLocationsCount = postSubpassSampleLocationsCount_;
18616 return *this;
18617 }
18618
18619 RenderPassSampleLocationsBeginInfoEXT& setPSubpassSampleLocations( const SubpassSampleLocationsEXT* pSubpassSampleLocations_ )
18620 {
18621 pSubpassSampleLocations = pSubpassSampleLocations_;
18622 return *this;
18623 }
18624
18625 operator const VkRenderPassSampleLocationsBeginInfoEXT&() const
18626 {
18627 return *reinterpret_cast<const VkRenderPassSampleLocationsBeginInfoEXT*>(this);
18628 }
18629
18630 bool operator==( RenderPassSampleLocationsBeginInfoEXT const& rhs ) const
18631 {
18632 return ( sType == rhs.sType )
18633 && ( pNext == rhs.pNext )
18634 && ( attachmentInitialSampleLocationsCount == rhs.attachmentInitialSampleLocationsCount )
18635 && ( pAttachmentInitialSampleLocations == rhs.pAttachmentInitialSampleLocations )
18636 && ( postSubpassSampleLocationsCount == rhs.postSubpassSampleLocationsCount )
18637 && ( pSubpassSampleLocations == rhs.pSubpassSampleLocations );
18638 }
18639
18640 bool operator!=( RenderPassSampleLocationsBeginInfoEXT const& rhs ) const
18641 {
18642 return !operator==( rhs );
18643 }
18644
18645 private:
18646 StructureType sType;
18647
18648 public:
18649 const void* pNext;
18650 uint32_t attachmentInitialSampleLocationsCount;
18651 const AttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations;
18652 uint32_t postSubpassSampleLocationsCount;
18653 const SubpassSampleLocationsEXT* pSubpassSampleLocations;
18654 };
18655 static_assert( sizeof( RenderPassSampleLocationsBeginInfoEXT ) == sizeof( VkRenderPassSampleLocationsBeginInfoEXT ), "struct and wrapper have different size!" );
18656
18657 struct PipelineSampleLocationsStateCreateInfoEXT
18658 {
18659 PipelineSampleLocationsStateCreateInfoEXT( Bool32 sampleLocationsEnable_ = 0, SampleLocationsInfoEXT sampleLocationsInfo_ = SampleLocationsInfoEXT() )
18660 : sType( StructureType::ePipelineSampleLocationsStateCreateInfoEXT )
18661 , pNext( nullptr )
18662 , sampleLocationsEnable( sampleLocationsEnable_ )
18663 , sampleLocationsInfo( sampleLocationsInfo_ )
18664 {
18665 }
18666
18667 PipelineSampleLocationsStateCreateInfoEXT( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs )
18668 {
18669 memcpy( this, &rhs, sizeof( PipelineSampleLocationsStateCreateInfoEXT ) );
18670 }
18671
18672 PipelineSampleLocationsStateCreateInfoEXT& operator=( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs )
18673 {
18674 memcpy( this, &rhs, sizeof( PipelineSampleLocationsStateCreateInfoEXT ) );
18675 return *this;
18676 }
18677 PipelineSampleLocationsStateCreateInfoEXT& setPNext( const void* pNext_ )
18678 {
18679 pNext = pNext_;
18680 return *this;
18681 }
18682
18683 PipelineSampleLocationsStateCreateInfoEXT& setSampleLocationsEnable( Bool32 sampleLocationsEnable_ )
18684 {
18685 sampleLocationsEnable = sampleLocationsEnable_;
18686 return *this;
18687 }
18688
18689 PipelineSampleLocationsStateCreateInfoEXT& setSampleLocationsInfo( SampleLocationsInfoEXT sampleLocationsInfo_ )
18690 {
18691 sampleLocationsInfo = sampleLocationsInfo_;
18692 return *this;
18693 }
18694
18695 operator const VkPipelineSampleLocationsStateCreateInfoEXT&() const
18696 {
18697 return *reinterpret_cast<const VkPipelineSampleLocationsStateCreateInfoEXT*>(this);
18698 }
18699
18700 bool operator==( PipelineSampleLocationsStateCreateInfoEXT const& rhs ) const
18701 {
18702 return ( sType == rhs.sType )
18703 && ( pNext == rhs.pNext )
18704 && ( sampleLocationsEnable == rhs.sampleLocationsEnable )
18705 && ( sampleLocationsInfo == rhs.sampleLocationsInfo );
18706 }
18707
18708 bool operator!=( PipelineSampleLocationsStateCreateInfoEXT const& rhs ) const
18709 {
18710 return !operator==( rhs );
18711 }
18712
18713 private:
18714 StructureType sType;
18715
18716 public:
18717 const void* pNext;
18718 Bool32 sampleLocationsEnable;
18719 SampleLocationsInfoEXT sampleLocationsInfo;
18720 };
18721 static_assert( sizeof( PipelineSampleLocationsStateCreateInfoEXT ) == sizeof( VkPipelineSampleLocationsStateCreateInfoEXT ), "struct and wrapper have different size!" );
18722
18723 struct PhysicalDeviceSampleLocationsPropertiesEXT
18724 {
18725 operator const VkPhysicalDeviceSampleLocationsPropertiesEXT&() const
18726 {
18727 return *reinterpret_cast<const VkPhysicalDeviceSampleLocationsPropertiesEXT*>(this);
18728 }
18729
18730 bool operator==( PhysicalDeviceSampleLocationsPropertiesEXT const& rhs ) const
18731 {
18732 return ( sType == rhs.sType )
18733 && ( pNext == rhs.pNext )
18734 && ( sampleLocationSampleCounts == rhs.sampleLocationSampleCounts )
18735 && ( maxSampleLocationGridSize == rhs.maxSampleLocationGridSize )
18736 && ( memcmp( sampleLocationCoordinateRange, rhs.sampleLocationCoordinateRange, 2 * sizeof( float ) ) == 0 )
18737 && ( sampleLocationSubPixelBits == rhs.sampleLocationSubPixelBits )
18738 && ( variableSampleLocations == rhs.variableSampleLocations );
18739 }
18740
18741 bool operator!=( PhysicalDeviceSampleLocationsPropertiesEXT const& rhs ) const
18742 {
18743 return !operator==( rhs );
18744 }
18745
18746 private:
18747 StructureType sType;
18748
18749 public:
18750 void* pNext;
18751 SampleCountFlags sampleLocationSampleCounts;
18752 Extent2D maxSampleLocationGridSize;
18753 float sampleLocationCoordinateRange[2];
18754 uint32_t sampleLocationSubPixelBits;
18755 Bool32 variableSampleLocations;
18756 };
18757 static_assert( sizeof( PhysicalDeviceSampleLocationsPropertiesEXT ) == sizeof( VkPhysicalDeviceSampleLocationsPropertiesEXT ), "struct and wrapper have different size!" );
18758
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018759 enum class AttachmentDescriptionFlagBits
18760 {
18761 eMayAlias = VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT
18762 };
18763
18764 using AttachmentDescriptionFlags = Flags<AttachmentDescriptionFlagBits, VkAttachmentDescriptionFlags>;
18765
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018766 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator|( AttachmentDescriptionFlagBits bit0, AttachmentDescriptionFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018767 {
18768 return AttachmentDescriptionFlags( bit0 ) | bit1;
18769 }
18770
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018771 VULKAN_HPP_INLINE AttachmentDescriptionFlags operator~( AttachmentDescriptionFlagBits bits )
18772 {
18773 return ~( AttachmentDescriptionFlags( bits ) );
18774 }
18775
18776 template <> struct FlagTraits<AttachmentDescriptionFlagBits>
18777 {
18778 enum
18779 {
18780 allFlags = VkFlags(AttachmentDescriptionFlagBits::eMayAlias)
18781 };
18782 };
18783
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018784 struct AttachmentDescription
18785 {
18786 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 )
18787 : flags( flags_ )
18788 , format( format_ )
18789 , samples( samples_ )
18790 , loadOp( loadOp_ )
18791 , storeOp( storeOp_ )
18792 , stencilLoadOp( stencilLoadOp_ )
18793 , stencilStoreOp( stencilStoreOp_ )
18794 , initialLayout( initialLayout_ )
18795 , finalLayout( finalLayout_ )
18796 {
18797 }
18798
18799 AttachmentDescription( VkAttachmentDescription const & rhs )
18800 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018801 memcpy( this, &rhs, sizeof( AttachmentDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018802 }
18803
18804 AttachmentDescription& operator=( VkAttachmentDescription const & rhs )
18805 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018806 memcpy( this, &rhs, sizeof( AttachmentDescription ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018807 return *this;
18808 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018809 AttachmentDescription& setFlags( AttachmentDescriptionFlags flags_ )
18810 {
18811 flags = flags_;
18812 return *this;
18813 }
18814
18815 AttachmentDescription& setFormat( Format format_ )
18816 {
18817 format = format_;
18818 return *this;
18819 }
18820
18821 AttachmentDescription& setSamples( SampleCountFlagBits samples_ )
18822 {
18823 samples = samples_;
18824 return *this;
18825 }
18826
18827 AttachmentDescription& setLoadOp( AttachmentLoadOp loadOp_ )
18828 {
18829 loadOp = loadOp_;
18830 return *this;
18831 }
18832
18833 AttachmentDescription& setStoreOp( AttachmentStoreOp storeOp_ )
18834 {
18835 storeOp = storeOp_;
18836 return *this;
18837 }
18838
18839 AttachmentDescription& setStencilLoadOp( AttachmentLoadOp stencilLoadOp_ )
18840 {
18841 stencilLoadOp = stencilLoadOp_;
18842 return *this;
18843 }
18844
18845 AttachmentDescription& setStencilStoreOp( AttachmentStoreOp stencilStoreOp_ )
18846 {
18847 stencilStoreOp = stencilStoreOp_;
18848 return *this;
18849 }
18850
18851 AttachmentDescription& setInitialLayout( ImageLayout initialLayout_ )
18852 {
18853 initialLayout = initialLayout_;
18854 return *this;
18855 }
18856
18857 AttachmentDescription& setFinalLayout( ImageLayout finalLayout_ )
18858 {
18859 finalLayout = finalLayout_;
18860 return *this;
18861 }
18862
18863 operator const VkAttachmentDescription&() const
18864 {
18865 return *reinterpret_cast<const VkAttachmentDescription*>(this);
18866 }
18867
18868 bool operator==( AttachmentDescription const& rhs ) const
18869 {
18870 return ( flags == rhs.flags )
18871 && ( format == rhs.format )
18872 && ( samples == rhs.samples )
18873 && ( loadOp == rhs.loadOp )
18874 && ( storeOp == rhs.storeOp )
18875 && ( stencilLoadOp == rhs.stencilLoadOp )
18876 && ( stencilStoreOp == rhs.stencilStoreOp )
18877 && ( initialLayout == rhs.initialLayout )
18878 && ( finalLayout == rhs.finalLayout );
18879 }
18880
18881 bool operator!=( AttachmentDescription const& rhs ) const
18882 {
18883 return !operator==( rhs );
18884 }
18885
18886 AttachmentDescriptionFlags flags;
18887 Format format;
18888 SampleCountFlagBits samples;
18889 AttachmentLoadOp loadOp;
18890 AttachmentStoreOp storeOp;
18891 AttachmentLoadOp stencilLoadOp;
18892 AttachmentStoreOp stencilStoreOp;
18893 ImageLayout initialLayout;
18894 ImageLayout finalLayout;
18895 };
18896 static_assert( sizeof( AttachmentDescription ) == sizeof( VkAttachmentDescription ), "struct and wrapper have different size!" );
18897
18898 enum class StencilFaceFlagBits
18899 {
18900 eFront = VK_STENCIL_FACE_FRONT_BIT,
18901 eBack = VK_STENCIL_FACE_BACK_BIT,
18902 eVkStencilFrontAndBack = VK_STENCIL_FRONT_AND_BACK
18903 };
18904
18905 using StencilFaceFlags = Flags<StencilFaceFlagBits, VkStencilFaceFlags>;
18906
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018907 VULKAN_HPP_INLINE StencilFaceFlags operator|( StencilFaceFlagBits bit0, StencilFaceFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018908 {
18909 return StencilFaceFlags( bit0 ) | bit1;
18910 }
18911
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018912 VULKAN_HPP_INLINE StencilFaceFlags operator~( StencilFaceFlagBits bits )
18913 {
18914 return ~( StencilFaceFlags( bits ) );
18915 }
18916
18917 template <> struct FlagTraits<StencilFaceFlagBits>
18918 {
18919 enum
18920 {
18921 allFlags = VkFlags(StencilFaceFlagBits::eFront) | VkFlags(StencilFaceFlagBits::eBack) | VkFlags(StencilFaceFlagBits::eVkStencilFrontAndBack)
18922 };
18923 };
18924
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018925 enum class DescriptorPoolCreateFlagBits
18926 {
18927 eFreeDescriptorSet = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT
18928 };
18929
18930 using DescriptorPoolCreateFlags = Flags<DescriptorPoolCreateFlagBits, VkDescriptorPoolCreateFlags>;
18931
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018932 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator|( DescriptorPoolCreateFlagBits bit0, DescriptorPoolCreateFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018933 {
18934 return DescriptorPoolCreateFlags( bit0 ) | bit1;
18935 }
18936
Mark Lobodzinski2d589822016-12-12 09:44:34 -070018937 VULKAN_HPP_INLINE DescriptorPoolCreateFlags operator~( DescriptorPoolCreateFlagBits bits )
18938 {
18939 return ~( DescriptorPoolCreateFlags( bits ) );
18940 }
18941
18942 template <> struct FlagTraits<DescriptorPoolCreateFlagBits>
18943 {
18944 enum
18945 {
18946 allFlags = VkFlags(DescriptorPoolCreateFlagBits::eFreeDescriptorSet)
18947 };
18948 };
18949
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018950 struct DescriptorPoolCreateInfo
18951 {
18952 DescriptorPoolCreateInfo( DescriptorPoolCreateFlags flags_ = DescriptorPoolCreateFlags(), uint32_t maxSets_ = 0, uint32_t poolSizeCount_ = 0, const DescriptorPoolSize* pPoolSizes_ = nullptr )
18953 : sType( StructureType::eDescriptorPoolCreateInfo )
18954 , pNext( nullptr )
18955 , flags( flags_ )
18956 , maxSets( maxSets_ )
18957 , poolSizeCount( poolSizeCount_ )
18958 , pPoolSizes( pPoolSizes_ )
18959 {
18960 }
18961
18962 DescriptorPoolCreateInfo( VkDescriptorPoolCreateInfo const & rhs )
18963 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018964 memcpy( this, &rhs, sizeof( DescriptorPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018965 }
18966
18967 DescriptorPoolCreateInfo& operator=( VkDescriptorPoolCreateInfo const & rhs )
18968 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060018969 memcpy( this, &rhs, sizeof( DescriptorPoolCreateInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018970 return *this;
18971 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060018972 DescriptorPoolCreateInfo& setPNext( const void* pNext_ )
18973 {
18974 pNext = pNext_;
18975 return *this;
18976 }
18977
18978 DescriptorPoolCreateInfo& setFlags( DescriptorPoolCreateFlags flags_ )
18979 {
18980 flags = flags_;
18981 return *this;
18982 }
18983
18984 DescriptorPoolCreateInfo& setMaxSets( uint32_t maxSets_ )
18985 {
18986 maxSets = maxSets_;
18987 return *this;
18988 }
18989
18990 DescriptorPoolCreateInfo& setPoolSizeCount( uint32_t poolSizeCount_ )
18991 {
18992 poolSizeCount = poolSizeCount_;
18993 return *this;
18994 }
18995
18996 DescriptorPoolCreateInfo& setPPoolSizes( const DescriptorPoolSize* pPoolSizes_ )
18997 {
18998 pPoolSizes = pPoolSizes_;
18999 return *this;
19000 }
19001
19002 operator const VkDescriptorPoolCreateInfo&() const
19003 {
19004 return *reinterpret_cast<const VkDescriptorPoolCreateInfo*>(this);
19005 }
19006
19007 bool operator==( DescriptorPoolCreateInfo const& rhs ) const
19008 {
19009 return ( sType == rhs.sType )
19010 && ( pNext == rhs.pNext )
19011 && ( flags == rhs.flags )
19012 && ( maxSets == rhs.maxSets )
19013 && ( poolSizeCount == rhs.poolSizeCount )
19014 && ( pPoolSizes == rhs.pPoolSizes );
19015 }
19016
19017 bool operator!=( DescriptorPoolCreateInfo const& rhs ) const
19018 {
19019 return !operator==( rhs );
19020 }
19021
19022 private:
19023 StructureType sType;
19024
19025 public:
19026 const void* pNext;
19027 DescriptorPoolCreateFlags flags;
19028 uint32_t maxSets;
19029 uint32_t poolSizeCount;
19030 const DescriptorPoolSize* pPoolSizes;
19031 };
19032 static_assert( sizeof( DescriptorPoolCreateInfo ) == sizeof( VkDescriptorPoolCreateInfo ), "struct and wrapper have different size!" );
19033
19034 enum class DependencyFlagBits
19035 {
Mark Young0f183a82017-02-28 09:58:04 -070019036 eByRegion = VK_DEPENDENCY_BY_REGION_BIT,
19037 eViewLocalKHX = VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX,
19038 eDeviceGroupKHX = VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019039 };
19040
19041 using DependencyFlags = Flags<DependencyFlagBits, VkDependencyFlags>;
19042
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019043 VULKAN_HPP_INLINE DependencyFlags operator|( DependencyFlagBits bit0, DependencyFlagBits bit1 )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060019044 {
19045 return DependencyFlags( bit0 ) | bit1;
19046 }
19047
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019048 VULKAN_HPP_INLINE DependencyFlags operator~( DependencyFlagBits bits )
19049 {
19050 return ~( DependencyFlags( bits ) );
19051 }
19052
19053 template <> struct FlagTraits<DependencyFlagBits>
19054 {
19055 enum
19056 {
Mark Young0f183a82017-02-28 09:58:04 -070019057 allFlags = VkFlags(DependencyFlagBits::eByRegion) | VkFlags(DependencyFlagBits::eViewLocalKHX) | VkFlags(DependencyFlagBits::eDeviceGroupKHX)
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019058 };
19059 };
19060
19061 struct SubpassDependency
19062 {
19063 SubpassDependency( uint32_t srcSubpass_ = 0, uint32_t dstSubpass_ = 0, PipelineStageFlags srcStageMask_ = PipelineStageFlags(), PipelineStageFlags dstStageMask_ = PipelineStageFlags(), AccessFlags srcAccessMask_ = AccessFlags(), AccessFlags dstAccessMask_ = AccessFlags(), DependencyFlags dependencyFlags_ = DependencyFlags() )
19064 : srcSubpass( srcSubpass_ )
19065 , dstSubpass( dstSubpass_ )
19066 , srcStageMask( srcStageMask_ )
19067 , dstStageMask( dstStageMask_ )
19068 , srcAccessMask( srcAccessMask_ )
19069 , dstAccessMask( dstAccessMask_ )
19070 , dependencyFlags( dependencyFlags_ )
19071 {
19072 }
19073
19074 SubpassDependency( VkSubpassDependency const & rhs )
19075 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019076 memcpy( this, &rhs, sizeof( SubpassDependency ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019077 }
19078
19079 SubpassDependency& operator=( VkSubpassDependency const & rhs )
19080 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019081 memcpy( this, &rhs, sizeof( SubpassDependency ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019082 return *this;
19083 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019084 SubpassDependency& setSrcSubpass( uint32_t srcSubpass_ )
19085 {
19086 srcSubpass = srcSubpass_;
19087 return *this;
19088 }
19089
19090 SubpassDependency& setDstSubpass( uint32_t dstSubpass_ )
19091 {
19092 dstSubpass = dstSubpass_;
19093 return *this;
19094 }
19095
19096 SubpassDependency& setSrcStageMask( PipelineStageFlags srcStageMask_ )
19097 {
19098 srcStageMask = srcStageMask_;
19099 return *this;
19100 }
19101
19102 SubpassDependency& setDstStageMask( PipelineStageFlags dstStageMask_ )
19103 {
19104 dstStageMask = dstStageMask_;
19105 return *this;
19106 }
19107
19108 SubpassDependency& setSrcAccessMask( AccessFlags srcAccessMask_ )
19109 {
19110 srcAccessMask = srcAccessMask_;
19111 return *this;
19112 }
19113
19114 SubpassDependency& setDstAccessMask( AccessFlags dstAccessMask_ )
19115 {
19116 dstAccessMask = dstAccessMask_;
19117 return *this;
19118 }
19119
19120 SubpassDependency& setDependencyFlags( DependencyFlags dependencyFlags_ )
19121 {
19122 dependencyFlags = dependencyFlags_;
19123 return *this;
19124 }
19125
19126 operator const VkSubpassDependency&() const
19127 {
19128 return *reinterpret_cast<const VkSubpassDependency*>(this);
19129 }
19130
19131 bool operator==( SubpassDependency const& rhs ) const
19132 {
19133 return ( srcSubpass == rhs.srcSubpass )
19134 && ( dstSubpass == rhs.dstSubpass )
19135 && ( srcStageMask == rhs.srcStageMask )
19136 && ( dstStageMask == rhs.dstStageMask )
19137 && ( srcAccessMask == rhs.srcAccessMask )
19138 && ( dstAccessMask == rhs.dstAccessMask )
19139 && ( dependencyFlags == rhs.dependencyFlags );
19140 }
19141
19142 bool operator!=( SubpassDependency const& rhs ) const
19143 {
19144 return !operator==( rhs );
19145 }
19146
19147 uint32_t srcSubpass;
19148 uint32_t dstSubpass;
19149 PipelineStageFlags srcStageMask;
19150 PipelineStageFlags dstStageMask;
19151 AccessFlags srcAccessMask;
19152 AccessFlags dstAccessMask;
19153 DependencyFlags dependencyFlags;
19154 };
19155 static_assert( sizeof( SubpassDependency ) == sizeof( VkSubpassDependency ), "struct and wrapper have different size!" );
19156
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019157 enum class PresentModeKHR
19158 {
19159 eImmediate = VK_PRESENT_MODE_IMMEDIATE_KHR,
19160 eMailbox = VK_PRESENT_MODE_MAILBOX_KHR,
19161 eFifo = VK_PRESENT_MODE_FIFO_KHR,
Mark Lobodzinski54385432017-05-15 10:27:52 -060019162 eFifoRelaxed = VK_PRESENT_MODE_FIFO_RELAXED_KHR,
19163 eSharedDemandRefresh = VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR,
19164 eSharedContinuousRefresh = VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019165 };
19166
19167 enum class ColorSpaceKHR
19168 {
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060019169 eSrgbNonlinear = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
19170 eDisplayP3NonlinearEXT = VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT,
19171 eExtendedSrgbLinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT,
19172 eDciP3LinearEXT = VK_COLOR_SPACE_DCI_P3_LINEAR_EXT,
19173 eDciP3NonlinearEXT = VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT,
19174 eBt709LinearEXT = VK_COLOR_SPACE_BT709_LINEAR_EXT,
19175 eBt709NonlinearEXT = VK_COLOR_SPACE_BT709_NONLINEAR_EXT,
19176 eBt2020LinearEXT = VK_COLOR_SPACE_BT2020_LINEAR_EXT,
19177 eHdr10St2084EXT = VK_COLOR_SPACE_HDR10_ST2084_EXT,
19178 eDolbyvisionEXT = VK_COLOR_SPACE_DOLBYVISION_EXT,
19179 eHdr10HlgEXT = VK_COLOR_SPACE_HDR10_HLG_EXT,
19180 eAdobergbLinearEXT = VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT,
19181 eAdobergbNonlinearEXT = VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT,
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060019182 ePassThroughEXT = VK_COLOR_SPACE_PASS_THROUGH_EXT,
19183 eExtendedSrgbNonlinearEXT = VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019184 };
19185
19186 struct SurfaceFormatKHR
19187 {
19188 operator const VkSurfaceFormatKHR&() const
19189 {
19190 return *reinterpret_cast<const VkSurfaceFormatKHR*>(this);
19191 }
19192
19193 bool operator==( SurfaceFormatKHR const& rhs ) const
19194 {
19195 return ( format == rhs.format )
19196 && ( colorSpace == rhs.colorSpace );
19197 }
19198
19199 bool operator!=( SurfaceFormatKHR const& rhs ) const
19200 {
19201 return !operator==( rhs );
19202 }
19203
19204 Format format;
19205 ColorSpaceKHR colorSpace;
19206 };
19207 static_assert( sizeof( SurfaceFormatKHR ) == sizeof( VkSurfaceFormatKHR ), "struct and wrapper have different size!" );
19208
Mark Lobodzinski54385432017-05-15 10:27:52 -060019209 struct SurfaceFormat2KHR
19210 {
19211 operator const VkSurfaceFormat2KHR&() const
19212 {
19213 return *reinterpret_cast<const VkSurfaceFormat2KHR*>(this);
19214 }
19215
19216 bool operator==( SurfaceFormat2KHR const& rhs ) const
19217 {
19218 return ( sType == rhs.sType )
19219 && ( pNext == rhs.pNext )
19220 && ( surfaceFormat == rhs.surfaceFormat );
19221 }
19222
19223 bool operator!=( SurfaceFormat2KHR const& rhs ) const
19224 {
19225 return !operator==( rhs );
19226 }
19227
19228 private:
19229 StructureType sType;
19230
19231 public:
19232 void* pNext;
19233 SurfaceFormatKHR surfaceFormat;
19234 };
19235 static_assert( sizeof( SurfaceFormat2KHR ) == sizeof( VkSurfaceFormat2KHR ), "struct and wrapper have different size!" );
19236
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019237 enum class DisplayPlaneAlphaFlagBitsKHR
19238 {
19239 eOpaque = VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR,
19240 eGlobal = VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR,
19241 ePerPixel = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR,
19242 ePerPixelPremultiplied = VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR
19243 };
19244
19245 using DisplayPlaneAlphaFlagsKHR = Flags<DisplayPlaneAlphaFlagBitsKHR, VkDisplayPlaneAlphaFlagsKHR>;
19246
19247 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator|( DisplayPlaneAlphaFlagBitsKHR bit0, DisplayPlaneAlphaFlagBitsKHR bit1 )
19248 {
19249 return DisplayPlaneAlphaFlagsKHR( bit0 ) | bit1;
19250 }
19251
19252 VULKAN_HPP_INLINE DisplayPlaneAlphaFlagsKHR operator~( DisplayPlaneAlphaFlagBitsKHR bits )
19253 {
19254 return ~( DisplayPlaneAlphaFlagsKHR( bits ) );
19255 }
19256
19257 template <> struct FlagTraits<DisplayPlaneAlphaFlagBitsKHR>
19258 {
19259 enum
19260 {
19261 allFlags = VkFlags(DisplayPlaneAlphaFlagBitsKHR::eOpaque) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::eGlobal) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixel) | VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied)
19262 };
19263 };
19264
19265 struct DisplayPlaneCapabilitiesKHR
19266 {
19267 operator const VkDisplayPlaneCapabilitiesKHR&() const
19268 {
19269 return *reinterpret_cast<const VkDisplayPlaneCapabilitiesKHR*>(this);
19270 }
19271
19272 bool operator==( DisplayPlaneCapabilitiesKHR const& rhs ) const
19273 {
19274 return ( supportedAlpha == rhs.supportedAlpha )
19275 && ( minSrcPosition == rhs.minSrcPosition )
19276 && ( maxSrcPosition == rhs.maxSrcPosition )
19277 && ( minSrcExtent == rhs.minSrcExtent )
19278 && ( maxSrcExtent == rhs.maxSrcExtent )
19279 && ( minDstPosition == rhs.minDstPosition )
19280 && ( maxDstPosition == rhs.maxDstPosition )
19281 && ( minDstExtent == rhs.minDstExtent )
19282 && ( maxDstExtent == rhs.maxDstExtent );
19283 }
19284
19285 bool operator!=( DisplayPlaneCapabilitiesKHR const& rhs ) const
19286 {
19287 return !operator==( rhs );
19288 }
19289
19290 DisplayPlaneAlphaFlagsKHR supportedAlpha;
19291 Offset2D minSrcPosition;
19292 Offset2D maxSrcPosition;
19293 Extent2D minSrcExtent;
19294 Extent2D maxSrcExtent;
19295 Offset2D minDstPosition;
19296 Offset2D maxDstPosition;
19297 Extent2D minDstExtent;
19298 Extent2D maxDstExtent;
19299 };
19300 static_assert( sizeof( DisplayPlaneCapabilitiesKHR ) == sizeof( VkDisplayPlaneCapabilitiesKHR ), "struct and wrapper have different size!" );
19301
19302 enum class CompositeAlphaFlagBitsKHR
19303 {
19304 eOpaque = VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR,
19305 ePreMultiplied = VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR,
19306 ePostMultiplied = VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR,
19307 eInherit = VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR
19308 };
19309
19310 using CompositeAlphaFlagsKHR = Flags<CompositeAlphaFlagBitsKHR, VkCompositeAlphaFlagsKHR>;
19311
19312 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator|( CompositeAlphaFlagBitsKHR bit0, CompositeAlphaFlagBitsKHR bit1 )
19313 {
19314 return CompositeAlphaFlagsKHR( bit0 ) | bit1;
19315 }
19316
19317 VULKAN_HPP_INLINE CompositeAlphaFlagsKHR operator~( CompositeAlphaFlagBitsKHR bits )
19318 {
19319 return ~( CompositeAlphaFlagsKHR( bits ) );
19320 }
19321
19322 template <> struct FlagTraits<CompositeAlphaFlagBitsKHR>
19323 {
19324 enum
19325 {
19326 allFlags = VkFlags(CompositeAlphaFlagBitsKHR::eOpaque) | VkFlags(CompositeAlphaFlagBitsKHR::ePreMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::ePostMultiplied) | VkFlags(CompositeAlphaFlagBitsKHR::eInherit)
19327 };
19328 };
19329
19330 enum class SurfaceTransformFlagBitsKHR
19331 {
19332 eIdentity = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR,
19333 eRotate90 = VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR,
19334 eRotate180 = VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR,
19335 eRotate270 = VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR,
19336 eHorizontalMirror = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR,
19337 eHorizontalMirrorRotate90 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR,
19338 eHorizontalMirrorRotate180 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR,
19339 eHorizontalMirrorRotate270 = VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR,
19340 eInherit = VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR
19341 };
19342
19343 using SurfaceTransformFlagsKHR = Flags<SurfaceTransformFlagBitsKHR, VkSurfaceTransformFlagsKHR>;
19344
19345 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator|( SurfaceTransformFlagBitsKHR bit0, SurfaceTransformFlagBitsKHR bit1 )
19346 {
19347 return SurfaceTransformFlagsKHR( bit0 ) | bit1;
19348 }
19349
19350 VULKAN_HPP_INLINE SurfaceTransformFlagsKHR operator~( SurfaceTransformFlagBitsKHR bits )
19351 {
19352 return ~( SurfaceTransformFlagsKHR( bits ) );
19353 }
19354
19355 template <> struct FlagTraits<SurfaceTransformFlagBitsKHR>
19356 {
19357 enum
19358 {
19359 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)
19360 };
19361 };
19362
19363 struct DisplayPropertiesKHR
19364 {
19365 operator const VkDisplayPropertiesKHR&() const
19366 {
19367 return *reinterpret_cast<const VkDisplayPropertiesKHR*>(this);
19368 }
19369
19370 bool operator==( DisplayPropertiesKHR const& rhs ) const
19371 {
19372 return ( display == rhs.display )
19373 && ( displayName == rhs.displayName )
19374 && ( physicalDimensions == rhs.physicalDimensions )
19375 && ( physicalResolution == rhs.physicalResolution )
19376 && ( supportedTransforms == rhs.supportedTransforms )
19377 && ( planeReorderPossible == rhs.planeReorderPossible )
19378 && ( persistentContent == rhs.persistentContent );
19379 }
19380
19381 bool operator!=( DisplayPropertiesKHR const& rhs ) const
19382 {
19383 return !operator==( rhs );
19384 }
19385
19386 DisplayKHR display;
19387 const char* displayName;
19388 Extent2D physicalDimensions;
19389 Extent2D physicalResolution;
19390 SurfaceTransformFlagsKHR supportedTransforms;
19391 Bool32 planeReorderPossible;
19392 Bool32 persistentContent;
19393 };
19394 static_assert( sizeof( DisplayPropertiesKHR ) == sizeof( VkDisplayPropertiesKHR ), "struct and wrapper have different size!" );
19395
19396 struct DisplaySurfaceCreateInfoKHR
19397 {
19398 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() )
19399 : sType( StructureType::eDisplaySurfaceCreateInfoKHR )
19400 , pNext( nullptr )
19401 , flags( flags_ )
19402 , displayMode( displayMode_ )
19403 , planeIndex( planeIndex_ )
19404 , planeStackIndex( planeStackIndex_ )
19405 , transform( transform_ )
19406 , globalAlpha( globalAlpha_ )
19407 , alphaMode( alphaMode_ )
19408 , imageExtent( imageExtent_ )
19409 {
19410 }
19411
19412 DisplaySurfaceCreateInfoKHR( VkDisplaySurfaceCreateInfoKHR const & rhs )
19413 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019414 memcpy( this, &rhs, sizeof( DisplaySurfaceCreateInfoKHR ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019415 }
19416
19417 DisplaySurfaceCreateInfoKHR& operator=( VkDisplaySurfaceCreateInfoKHR const & rhs )
19418 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019419 memcpy( this, &rhs, sizeof( DisplaySurfaceCreateInfoKHR ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019420 return *this;
19421 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019422 DisplaySurfaceCreateInfoKHR& setPNext( const void* pNext_ )
19423 {
19424 pNext = pNext_;
19425 return *this;
19426 }
19427
19428 DisplaySurfaceCreateInfoKHR& setFlags( DisplaySurfaceCreateFlagsKHR flags_ )
19429 {
19430 flags = flags_;
19431 return *this;
19432 }
19433
19434 DisplaySurfaceCreateInfoKHR& setDisplayMode( DisplayModeKHR displayMode_ )
19435 {
19436 displayMode = displayMode_;
19437 return *this;
19438 }
19439
19440 DisplaySurfaceCreateInfoKHR& setPlaneIndex( uint32_t planeIndex_ )
19441 {
19442 planeIndex = planeIndex_;
19443 return *this;
19444 }
19445
19446 DisplaySurfaceCreateInfoKHR& setPlaneStackIndex( uint32_t planeStackIndex_ )
19447 {
19448 planeStackIndex = planeStackIndex_;
19449 return *this;
19450 }
19451
19452 DisplaySurfaceCreateInfoKHR& setTransform( SurfaceTransformFlagBitsKHR transform_ )
19453 {
19454 transform = transform_;
19455 return *this;
19456 }
19457
19458 DisplaySurfaceCreateInfoKHR& setGlobalAlpha( float globalAlpha_ )
19459 {
19460 globalAlpha = globalAlpha_;
19461 return *this;
19462 }
19463
19464 DisplaySurfaceCreateInfoKHR& setAlphaMode( DisplayPlaneAlphaFlagBitsKHR alphaMode_ )
19465 {
19466 alphaMode = alphaMode_;
19467 return *this;
19468 }
19469
19470 DisplaySurfaceCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
19471 {
19472 imageExtent = imageExtent_;
19473 return *this;
19474 }
19475
19476 operator const VkDisplaySurfaceCreateInfoKHR&() const
19477 {
19478 return *reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>(this);
19479 }
19480
19481 bool operator==( DisplaySurfaceCreateInfoKHR const& rhs ) const
19482 {
19483 return ( sType == rhs.sType )
19484 && ( pNext == rhs.pNext )
19485 && ( flags == rhs.flags )
19486 && ( displayMode == rhs.displayMode )
19487 && ( planeIndex == rhs.planeIndex )
19488 && ( planeStackIndex == rhs.planeStackIndex )
19489 && ( transform == rhs.transform )
19490 && ( globalAlpha == rhs.globalAlpha )
19491 && ( alphaMode == rhs.alphaMode )
19492 && ( imageExtent == rhs.imageExtent );
19493 }
19494
19495 bool operator!=( DisplaySurfaceCreateInfoKHR const& rhs ) const
19496 {
19497 return !operator==( rhs );
19498 }
19499
19500 private:
19501 StructureType sType;
19502
19503 public:
19504 const void* pNext;
19505 DisplaySurfaceCreateFlagsKHR flags;
19506 DisplayModeKHR displayMode;
19507 uint32_t planeIndex;
19508 uint32_t planeStackIndex;
19509 SurfaceTransformFlagBitsKHR transform;
19510 float globalAlpha;
19511 DisplayPlaneAlphaFlagBitsKHR alphaMode;
19512 Extent2D imageExtent;
19513 };
19514 static_assert( sizeof( DisplaySurfaceCreateInfoKHR ) == sizeof( VkDisplaySurfaceCreateInfoKHR ), "struct and wrapper have different size!" );
19515
19516 struct SurfaceCapabilitiesKHR
19517 {
19518 operator const VkSurfaceCapabilitiesKHR&() const
19519 {
19520 return *reinterpret_cast<const VkSurfaceCapabilitiesKHR*>(this);
19521 }
19522
19523 bool operator==( SurfaceCapabilitiesKHR const& rhs ) const
19524 {
19525 return ( minImageCount == rhs.minImageCount )
19526 && ( maxImageCount == rhs.maxImageCount )
19527 && ( currentExtent == rhs.currentExtent )
19528 && ( minImageExtent == rhs.minImageExtent )
19529 && ( maxImageExtent == rhs.maxImageExtent )
19530 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
19531 && ( supportedTransforms == rhs.supportedTransforms )
19532 && ( currentTransform == rhs.currentTransform )
19533 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
19534 && ( supportedUsageFlags == rhs.supportedUsageFlags );
19535 }
19536
19537 bool operator!=( SurfaceCapabilitiesKHR const& rhs ) const
19538 {
19539 return !operator==( rhs );
19540 }
19541
19542 uint32_t minImageCount;
19543 uint32_t maxImageCount;
19544 Extent2D currentExtent;
19545 Extent2D minImageExtent;
19546 Extent2D maxImageExtent;
19547 uint32_t maxImageArrayLayers;
19548 SurfaceTransformFlagsKHR supportedTransforms;
19549 SurfaceTransformFlagBitsKHR currentTransform;
19550 CompositeAlphaFlagsKHR supportedCompositeAlpha;
19551 ImageUsageFlags supportedUsageFlags;
19552 };
19553 static_assert( sizeof( SurfaceCapabilitiesKHR ) == sizeof( VkSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" );
19554
Mark Lobodzinski54385432017-05-15 10:27:52 -060019555 struct SurfaceCapabilities2KHR
19556 {
19557 operator const VkSurfaceCapabilities2KHR&() const
19558 {
19559 return *reinterpret_cast<const VkSurfaceCapabilities2KHR*>(this);
19560 }
19561
19562 bool operator==( SurfaceCapabilities2KHR const& rhs ) const
19563 {
19564 return ( sType == rhs.sType )
19565 && ( pNext == rhs.pNext )
19566 && ( surfaceCapabilities == rhs.surfaceCapabilities );
19567 }
19568
19569 bool operator!=( SurfaceCapabilities2KHR const& rhs ) const
19570 {
19571 return !operator==( rhs );
19572 }
19573
19574 private:
19575 StructureType sType;
19576
19577 public:
19578 void* pNext;
19579 SurfaceCapabilitiesKHR surfaceCapabilities;
19580 };
19581 static_assert( sizeof( SurfaceCapabilities2KHR ) == sizeof( VkSurfaceCapabilities2KHR ), "struct and wrapper have different size!" );
19582
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019583 enum class DebugReportFlagBitsEXT
19584 {
19585 eInformation = VK_DEBUG_REPORT_INFORMATION_BIT_EXT,
19586 eWarning = VK_DEBUG_REPORT_WARNING_BIT_EXT,
19587 ePerformanceWarning = VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT,
19588 eError = VK_DEBUG_REPORT_ERROR_BIT_EXT,
19589 eDebug = VK_DEBUG_REPORT_DEBUG_BIT_EXT
19590 };
19591
19592 using DebugReportFlagsEXT = Flags<DebugReportFlagBitsEXT, VkDebugReportFlagsEXT>;
19593
19594 VULKAN_HPP_INLINE DebugReportFlagsEXT operator|( DebugReportFlagBitsEXT bit0, DebugReportFlagBitsEXT bit1 )
19595 {
19596 return DebugReportFlagsEXT( bit0 ) | bit1;
19597 }
19598
19599 VULKAN_HPP_INLINE DebugReportFlagsEXT operator~( DebugReportFlagBitsEXT bits )
19600 {
19601 return ~( DebugReportFlagsEXT( bits ) );
19602 }
19603
19604 template <> struct FlagTraits<DebugReportFlagBitsEXT>
19605 {
19606 enum
19607 {
19608 allFlags = VkFlags(DebugReportFlagBitsEXT::eInformation) | VkFlags(DebugReportFlagBitsEXT::eWarning) | VkFlags(DebugReportFlagBitsEXT::ePerformanceWarning) | VkFlags(DebugReportFlagBitsEXT::eError) | VkFlags(DebugReportFlagBitsEXT::eDebug)
19609 };
19610 };
19611
19612 struct DebugReportCallbackCreateInfoEXT
19613 {
19614 DebugReportCallbackCreateInfoEXT( DebugReportFlagsEXT flags_ = DebugReportFlagsEXT(), PFN_vkDebugReportCallbackEXT pfnCallback_ = nullptr, void* pUserData_ = nullptr )
19615 : sType( StructureType::eDebugReportCallbackCreateInfoEXT )
19616 , pNext( nullptr )
19617 , flags( flags_ )
19618 , pfnCallback( pfnCallback_ )
19619 , pUserData( pUserData_ )
19620 {
19621 }
19622
19623 DebugReportCallbackCreateInfoEXT( VkDebugReportCallbackCreateInfoEXT const & rhs )
19624 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019625 memcpy( this, &rhs, sizeof( DebugReportCallbackCreateInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019626 }
19627
19628 DebugReportCallbackCreateInfoEXT& operator=( VkDebugReportCallbackCreateInfoEXT const & rhs )
19629 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019630 memcpy( this, &rhs, sizeof( DebugReportCallbackCreateInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019631 return *this;
19632 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019633 DebugReportCallbackCreateInfoEXT& setPNext( const void* pNext_ )
19634 {
19635 pNext = pNext_;
19636 return *this;
19637 }
19638
19639 DebugReportCallbackCreateInfoEXT& setFlags( DebugReportFlagsEXT flags_ )
19640 {
19641 flags = flags_;
19642 return *this;
19643 }
19644
19645 DebugReportCallbackCreateInfoEXT& setPfnCallback( PFN_vkDebugReportCallbackEXT pfnCallback_ )
19646 {
19647 pfnCallback = pfnCallback_;
19648 return *this;
19649 }
19650
19651 DebugReportCallbackCreateInfoEXT& setPUserData( void* pUserData_ )
19652 {
19653 pUserData = pUserData_;
19654 return *this;
19655 }
19656
19657 operator const VkDebugReportCallbackCreateInfoEXT&() const
19658 {
19659 return *reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>(this);
19660 }
19661
19662 bool operator==( DebugReportCallbackCreateInfoEXT const& rhs ) const
19663 {
19664 return ( sType == rhs.sType )
19665 && ( pNext == rhs.pNext )
19666 && ( flags == rhs.flags )
19667 && ( pfnCallback == rhs.pfnCallback )
19668 && ( pUserData == rhs.pUserData );
19669 }
19670
19671 bool operator!=( DebugReportCallbackCreateInfoEXT const& rhs ) const
19672 {
19673 return !operator==( rhs );
19674 }
19675
19676 private:
19677 StructureType sType;
19678
19679 public:
19680 const void* pNext;
19681 DebugReportFlagsEXT flags;
19682 PFN_vkDebugReportCallbackEXT pfnCallback;
19683 void* pUserData;
19684 };
19685 static_assert( sizeof( DebugReportCallbackCreateInfoEXT ) == sizeof( VkDebugReportCallbackCreateInfoEXT ), "struct and wrapper have different size!" );
19686
19687 enum class DebugReportObjectTypeEXT
19688 {
19689 eUnknown = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT,
19690 eInstance = VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT,
19691 ePhysicalDevice = VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT,
19692 eDevice = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT,
19693 eQueue = VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT,
19694 eSemaphore = VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT,
19695 eCommandBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT,
19696 eFence = VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT,
19697 eDeviceMemory = VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT,
19698 eBuffer = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT,
19699 eImage = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT,
19700 eEvent = VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT,
19701 eQueryPool = VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT,
19702 eBufferView = VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT,
19703 eImageView = VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT,
19704 eShaderModule = VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT,
19705 ePipelineCache = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT,
19706 ePipelineLayout = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT,
19707 eRenderPass = VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT,
19708 ePipeline = VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT,
19709 eDescriptorSetLayout = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT,
19710 eSampler = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT,
19711 eDescriptorPool = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT,
19712 eDescriptorSet = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT,
19713 eFramebuffer = VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT,
19714 eCommandPool = VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT,
19715 eSurfaceKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT,
19716 eSwapchainKhr = VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT,
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019717 eDebugReportCallbackExt = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT,
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019718 eDisplayKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT,
19719 eDisplayModeKhr = VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT,
19720 eObjectTableNvx = VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT,
Mark Lobodzinski3289d762017-04-03 08:22:04 -060019721 eIndirectCommandsLayoutNvx = VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT,
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060019722 eValidationCache = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT,
Mark Lobodzinski54385432017-05-15 10:27:52 -060019723 eDescriptorUpdateTemplateKHR = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019724 };
19725
19726 struct DebugMarkerObjectNameInfoEXT
19727 {
19728 DebugMarkerObjectNameInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = 0, const char* pObjectName_ = nullptr )
19729 : sType( StructureType::eDebugMarkerObjectNameInfoEXT )
19730 , pNext( nullptr )
19731 , objectType( objectType_ )
19732 , object( object_ )
19733 , pObjectName( pObjectName_ )
19734 {
19735 }
19736
19737 DebugMarkerObjectNameInfoEXT( VkDebugMarkerObjectNameInfoEXT const & rhs )
19738 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019739 memcpy( this, &rhs, sizeof( DebugMarkerObjectNameInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019740 }
19741
19742 DebugMarkerObjectNameInfoEXT& operator=( VkDebugMarkerObjectNameInfoEXT const & rhs )
19743 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019744 memcpy( this, &rhs, sizeof( DebugMarkerObjectNameInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019745 return *this;
19746 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019747 DebugMarkerObjectNameInfoEXT& setPNext( const void* pNext_ )
19748 {
19749 pNext = pNext_;
19750 return *this;
19751 }
19752
19753 DebugMarkerObjectNameInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
19754 {
19755 objectType = objectType_;
19756 return *this;
19757 }
19758
19759 DebugMarkerObjectNameInfoEXT& setObject( uint64_t object_ )
19760 {
19761 object = object_;
19762 return *this;
19763 }
19764
19765 DebugMarkerObjectNameInfoEXT& setPObjectName( const char* pObjectName_ )
19766 {
19767 pObjectName = pObjectName_;
19768 return *this;
19769 }
19770
19771 operator const VkDebugMarkerObjectNameInfoEXT&() const
19772 {
19773 return *reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>(this);
19774 }
19775
19776 bool operator==( DebugMarkerObjectNameInfoEXT const& rhs ) const
19777 {
19778 return ( sType == rhs.sType )
19779 && ( pNext == rhs.pNext )
19780 && ( objectType == rhs.objectType )
19781 && ( object == rhs.object )
19782 && ( pObjectName == rhs.pObjectName );
19783 }
19784
19785 bool operator!=( DebugMarkerObjectNameInfoEXT const& rhs ) const
19786 {
19787 return !operator==( rhs );
19788 }
19789
19790 private:
19791 StructureType sType;
19792
19793 public:
19794 const void* pNext;
19795 DebugReportObjectTypeEXT objectType;
19796 uint64_t object;
19797 const char* pObjectName;
19798 };
19799 static_assert( sizeof( DebugMarkerObjectNameInfoEXT ) == sizeof( VkDebugMarkerObjectNameInfoEXT ), "struct and wrapper have different size!" );
19800
19801 struct DebugMarkerObjectTagInfoEXT
19802 {
19803 DebugMarkerObjectTagInfoEXT( DebugReportObjectTypeEXT objectType_ = DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = 0, uint64_t tagName_ = 0, size_t tagSize_ = 0, const void* pTag_ = nullptr )
19804 : sType( StructureType::eDebugMarkerObjectTagInfoEXT )
19805 , pNext( nullptr )
19806 , objectType( objectType_ )
19807 , object( object_ )
19808 , tagName( tagName_ )
19809 , tagSize( tagSize_ )
19810 , pTag( pTag_ )
19811 {
19812 }
19813
19814 DebugMarkerObjectTagInfoEXT( VkDebugMarkerObjectTagInfoEXT const & rhs )
19815 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019816 memcpy( this, &rhs, sizeof( DebugMarkerObjectTagInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019817 }
19818
19819 DebugMarkerObjectTagInfoEXT& operator=( VkDebugMarkerObjectTagInfoEXT const & rhs )
19820 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019821 memcpy( this, &rhs, sizeof( DebugMarkerObjectTagInfoEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019822 return *this;
19823 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019824 DebugMarkerObjectTagInfoEXT& setPNext( const void* pNext_ )
19825 {
19826 pNext = pNext_;
19827 return *this;
19828 }
19829
19830 DebugMarkerObjectTagInfoEXT& setObjectType( DebugReportObjectTypeEXT objectType_ )
19831 {
19832 objectType = objectType_;
19833 return *this;
19834 }
19835
19836 DebugMarkerObjectTagInfoEXT& setObject( uint64_t object_ )
19837 {
19838 object = object_;
19839 return *this;
19840 }
19841
19842 DebugMarkerObjectTagInfoEXT& setTagName( uint64_t tagName_ )
19843 {
19844 tagName = tagName_;
19845 return *this;
19846 }
19847
19848 DebugMarkerObjectTagInfoEXT& setTagSize( size_t tagSize_ )
19849 {
19850 tagSize = tagSize_;
19851 return *this;
19852 }
19853
19854 DebugMarkerObjectTagInfoEXT& setPTag( const void* pTag_ )
19855 {
19856 pTag = pTag_;
19857 return *this;
19858 }
19859
19860 operator const VkDebugMarkerObjectTagInfoEXT&() const
19861 {
19862 return *reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>(this);
19863 }
19864
19865 bool operator==( DebugMarkerObjectTagInfoEXT const& rhs ) const
19866 {
19867 return ( sType == rhs.sType )
19868 && ( pNext == rhs.pNext )
19869 && ( objectType == rhs.objectType )
19870 && ( object == rhs.object )
19871 && ( tagName == rhs.tagName )
19872 && ( tagSize == rhs.tagSize )
19873 && ( pTag == rhs.pTag );
19874 }
19875
19876 bool operator!=( DebugMarkerObjectTagInfoEXT const& rhs ) const
19877 {
19878 return !operator==( rhs );
19879 }
19880
19881 private:
19882 StructureType sType;
19883
19884 public:
19885 const void* pNext;
19886 DebugReportObjectTypeEXT objectType;
19887 uint64_t object;
19888 uint64_t tagName;
19889 size_t tagSize;
19890 const void* pTag;
19891 };
19892 static_assert( sizeof( DebugMarkerObjectTagInfoEXT ) == sizeof( VkDebugMarkerObjectTagInfoEXT ), "struct and wrapper have different size!" );
19893
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019894 enum class RasterizationOrderAMD
19895 {
19896 eStrict = VK_RASTERIZATION_ORDER_STRICT_AMD,
19897 eRelaxed = VK_RASTERIZATION_ORDER_RELAXED_AMD
19898 };
19899
19900 struct PipelineRasterizationStateRasterizationOrderAMD
19901 {
19902 PipelineRasterizationStateRasterizationOrderAMD( RasterizationOrderAMD rasterizationOrder_ = RasterizationOrderAMD::eStrict )
19903 : sType( StructureType::ePipelineRasterizationStateRasterizationOrderAMD )
19904 , pNext( nullptr )
19905 , rasterizationOrder( rasterizationOrder_ )
19906 {
19907 }
19908
19909 PipelineRasterizationStateRasterizationOrderAMD( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
19910 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019911 memcpy( this, &rhs, sizeof( PipelineRasterizationStateRasterizationOrderAMD ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019912 }
19913
19914 PipelineRasterizationStateRasterizationOrderAMD& operator=( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs )
19915 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019916 memcpy( this, &rhs, sizeof( PipelineRasterizationStateRasterizationOrderAMD ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019917 return *this;
19918 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019919 PipelineRasterizationStateRasterizationOrderAMD& setPNext( const void* pNext_ )
19920 {
19921 pNext = pNext_;
19922 return *this;
19923 }
19924
19925 PipelineRasterizationStateRasterizationOrderAMD& setRasterizationOrder( RasterizationOrderAMD rasterizationOrder_ )
19926 {
19927 rasterizationOrder = rasterizationOrder_;
19928 return *this;
19929 }
19930
19931 operator const VkPipelineRasterizationStateRasterizationOrderAMD&() const
19932 {
19933 return *reinterpret_cast<const VkPipelineRasterizationStateRasterizationOrderAMD*>(this);
19934 }
19935
19936 bool operator==( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
19937 {
19938 return ( sType == rhs.sType )
19939 && ( pNext == rhs.pNext )
19940 && ( rasterizationOrder == rhs.rasterizationOrder );
19941 }
19942
19943 bool operator!=( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const
19944 {
19945 return !operator==( rhs );
19946 }
19947
19948 private:
19949 StructureType sType;
19950
19951 public:
19952 const void* pNext;
19953 RasterizationOrderAMD rasterizationOrder;
19954 };
19955 static_assert( sizeof( PipelineRasterizationStateRasterizationOrderAMD ) == sizeof( VkPipelineRasterizationStateRasterizationOrderAMD ), "struct and wrapper have different size!" );
19956
19957 enum class ExternalMemoryHandleTypeFlagBitsNV
19958 {
19959 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV,
19960 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV,
19961 eD3D11Image = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV,
19962 eD3D11ImageKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV
19963 };
19964
19965 using ExternalMemoryHandleTypeFlagsNV = Flags<ExternalMemoryHandleTypeFlagBitsNV, VkExternalMemoryHandleTypeFlagsNV>;
19966
19967 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator|( ExternalMemoryHandleTypeFlagBitsNV bit0, ExternalMemoryHandleTypeFlagBitsNV bit1 )
19968 {
19969 return ExternalMemoryHandleTypeFlagsNV( bit0 ) | bit1;
19970 }
19971
19972 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsNV operator~( ExternalMemoryHandleTypeFlagBitsNV bits )
19973 {
19974 return ~( ExternalMemoryHandleTypeFlagsNV( bits ) );
19975 }
19976
19977 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsNV>
19978 {
19979 enum
19980 {
19981 allFlags = VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) | VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt)
19982 };
19983 };
19984
19985 struct ExternalMemoryImageCreateInfoNV
19986 {
19987 ExternalMemoryImageCreateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
19988 : sType( StructureType::eExternalMemoryImageCreateInfoNV )
19989 , pNext( nullptr )
19990 , handleTypes( handleTypes_ )
19991 {
19992 }
19993
19994 ExternalMemoryImageCreateInfoNV( VkExternalMemoryImageCreateInfoNV const & rhs )
19995 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060019996 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070019997 }
19998
19999 ExternalMemoryImageCreateInfoNV& operator=( VkExternalMemoryImageCreateInfoNV const & rhs )
20000 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020001 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020002 return *this;
20003 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020004 ExternalMemoryImageCreateInfoNV& setPNext( const void* pNext_ )
20005 {
20006 pNext = pNext_;
20007 return *this;
20008 }
20009
20010 ExternalMemoryImageCreateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
20011 {
20012 handleTypes = handleTypes_;
20013 return *this;
20014 }
20015
20016 operator const VkExternalMemoryImageCreateInfoNV&() const
20017 {
20018 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoNV*>(this);
20019 }
20020
20021 bool operator==( ExternalMemoryImageCreateInfoNV const& rhs ) const
20022 {
20023 return ( sType == rhs.sType )
20024 && ( pNext == rhs.pNext )
20025 && ( handleTypes == rhs.handleTypes );
20026 }
20027
20028 bool operator!=( ExternalMemoryImageCreateInfoNV const& rhs ) const
20029 {
20030 return !operator==( rhs );
20031 }
20032
20033 private:
20034 StructureType sType;
20035
20036 public:
20037 const void* pNext;
20038 ExternalMemoryHandleTypeFlagsNV handleTypes;
20039 };
20040 static_assert( sizeof( ExternalMemoryImageCreateInfoNV ) == sizeof( VkExternalMemoryImageCreateInfoNV ), "struct and wrapper have different size!" );
20041
20042 struct ExportMemoryAllocateInfoNV
20043 {
20044 ExportMemoryAllocateInfoNV( ExternalMemoryHandleTypeFlagsNV handleTypes_ = ExternalMemoryHandleTypeFlagsNV() )
20045 : sType( StructureType::eExportMemoryAllocateInfoNV )
20046 , pNext( nullptr )
20047 , handleTypes( handleTypes_ )
20048 {
20049 }
20050
20051 ExportMemoryAllocateInfoNV( VkExportMemoryAllocateInfoNV const & rhs )
20052 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020053 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020054 }
20055
20056 ExportMemoryAllocateInfoNV& operator=( VkExportMemoryAllocateInfoNV const & rhs )
20057 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020058 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020059 return *this;
20060 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020061 ExportMemoryAllocateInfoNV& setPNext( const void* pNext_ )
20062 {
20063 pNext = pNext_;
20064 return *this;
20065 }
20066
20067 ExportMemoryAllocateInfoNV& setHandleTypes( ExternalMemoryHandleTypeFlagsNV handleTypes_ )
20068 {
20069 handleTypes = handleTypes_;
20070 return *this;
20071 }
20072
20073 operator const VkExportMemoryAllocateInfoNV&() const
20074 {
20075 return *reinterpret_cast<const VkExportMemoryAllocateInfoNV*>(this);
20076 }
20077
20078 bool operator==( ExportMemoryAllocateInfoNV const& rhs ) const
20079 {
20080 return ( sType == rhs.sType )
20081 && ( pNext == rhs.pNext )
20082 && ( handleTypes == rhs.handleTypes );
20083 }
20084
20085 bool operator!=( ExportMemoryAllocateInfoNV const& rhs ) const
20086 {
20087 return !operator==( rhs );
20088 }
20089
20090 private:
20091 StructureType sType;
20092
20093 public:
20094 const void* pNext;
20095 ExternalMemoryHandleTypeFlagsNV handleTypes;
20096 };
20097 static_assert( sizeof( ExportMemoryAllocateInfoNV ) == sizeof( VkExportMemoryAllocateInfoNV ), "struct and wrapper have different size!" );
20098
20099#ifdef VK_USE_PLATFORM_WIN32_KHR
20100 struct ImportMemoryWin32HandleInfoNV
20101 {
20102 ImportMemoryWin32HandleInfoNV( ExternalMemoryHandleTypeFlagsNV handleType_ = ExternalMemoryHandleTypeFlagsNV(), HANDLE handle_ = 0 )
20103 : sType( StructureType::eImportMemoryWin32HandleInfoNV )
20104 , pNext( nullptr )
20105 , handleType( handleType_ )
20106 , handle( handle_ )
20107 {
20108 }
20109
20110 ImportMemoryWin32HandleInfoNV( VkImportMemoryWin32HandleInfoNV const & rhs )
20111 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020112 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020113 }
20114
20115 ImportMemoryWin32HandleInfoNV& operator=( VkImportMemoryWin32HandleInfoNV const & rhs )
20116 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020117 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoNV ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020118 return *this;
20119 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020120 ImportMemoryWin32HandleInfoNV& setPNext( const void* pNext_ )
20121 {
20122 pNext = pNext_;
20123 return *this;
20124 }
20125
20126 ImportMemoryWin32HandleInfoNV& setHandleType( ExternalMemoryHandleTypeFlagsNV handleType_ )
20127 {
20128 handleType = handleType_;
20129 return *this;
20130 }
20131
20132 ImportMemoryWin32HandleInfoNV& setHandle( HANDLE handle_ )
20133 {
20134 handle = handle_;
20135 return *this;
20136 }
20137
20138 operator const VkImportMemoryWin32HandleInfoNV&() const
20139 {
20140 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoNV*>(this);
20141 }
20142
20143 bool operator==( ImportMemoryWin32HandleInfoNV const& rhs ) const
20144 {
20145 return ( sType == rhs.sType )
20146 && ( pNext == rhs.pNext )
20147 && ( handleType == rhs.handleType )
20148 && ( handle == rhs.handle );
20149 }
20150
20151 bool operator!=( ImportMemoryWin32HandleInfoNV const& rhs ) const
20152 {
20153 return !operator==( rhs );
20154 }
20155
20156 private:
20157 StructureType sType;
20158
20159 public:
20160 const void* pNext;
20161 ExternalMemoryHandleTypeFlagsNV handleType;
20162 HANDLE handle;
20163 };
20164 static_assert( sizeof( ImportMemoryWin32HandleInfoNV ) == sizeof( VkImportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" );
20165#endif /*VK_USE_PLATFORM_WIN32_KHR*/
20166
20167 enum class ExternalMemoryFeatureFlagBitsNV
20168 {
20169 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV,
20170 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV,
20171 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV
20172 };
20173
20174 using ExternalMemoryFeatureFlagsNV = Flags<ExternalMemoryFeatureFlagBitsNV, VkExternalMemoryFeatureFlagsNV>;
20175
20176 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator|( ExternalMemoryFeatureFlagBitsNV bit0, ExternalMemoryFeatureFlagBitsNV bit1 )
20177 {
20178 return ExternalMemoryFeatureFlagsNV( bit0 ) | bit1;
20179 }
20180
20181 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsNV operator~( ExternalMemoryFeatureFlagBitsNV bits )
20182 {
20183 return ~( ExternalMemoryFeatureFlagsNV( bits ) );
20184 }
20185
20186 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsNV>
20187 {
20188 enum
20189 {
20190 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsNV::eImportable)
20191 };
20192 };
20193
20194 struct ExternalImageFormatPropertiesNV
20195 {
20196 operator const VkExternalImageFormatPropertiesNV&() const
20197 {
20198 return *reinterpret_cast<const VkExternalImageFormatPropertiesNV*>(this);
20199 }
20200
20201 bool operator==( ExternalImageFormatPropertiesNV const& rhs ) const
20202 {
20203 return ( imageFormatProperties == rhs.imageFormatProperties )
20204 && ( externalMemoryFeatures == rhs.externalMemoryFeatures )
20205 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
20206 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
20207 }
20208
20209 bool operator!=( ExternalImageFormatPropertiesNV const& rhs ) const
20210 {
20211 return !operator==( rhs );
20212 }
20213
20214 ImageFormatProperties imageFormatProperties;
20215 ExternalMemoryFeatureFlagsNV externalMemoryFeatures;
20216 ExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes;
20217 ExternalMemoryHandleTypeFlagsNV compatibleHandleTypes;
20218 };
20219 static_assert( sizeof( ExternalImageFormatPropertiesNV ) == sizeof( VkExternalImageFormatPropertiesNV ), "struct and wrapper have different size!" );
20220
20221 enum class ValidationCheckEXT
20222 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020223 eAll = VK_VALIDATION_CHECK_ALL_EXT,
20224 eShaders = VK_VALIDATION_CHECK_SHADERS_EXT
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020225 };
20226
20227 struct ValidationFlagsEXT
20228 {
20229 ValidationFlagsEXT( uint32_t disabledValidationCheckCount_ = 0, ValidationCheckEXT* pDisabledValidationChecks_ = nullptr )
20230 : sType( StructureType::eValidationFlagsEXT )
20231 , pNext( nullptr )
20232 , disabledValidationCheckCount( disabledValidationCheckCount_ )
20233 , pDisabledValidationChecks( pDisabledValidationChecks_ )
20234 {
20235 }
20236
20237 ValidationFlagsEXT( VkValidationFlagsEXT const & rhs )
20238 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020239 memcpy( this, &rhs, sizeof( ValidationFlagsEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020240 }
20241
20242 ValidationFlagsEXT& operator=( VkValidationFlagsEXT const & rhs )
20243 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020244 memcpy( this, &rhs, sizeof( ValidationFlagsEXT ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020245 return *this;
20246 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020247 ValidationFlagsEXT& setPNext( const void* pNext_ )
20248 {
20249 pNext = pNext_;
20250 return *this;
20251 }
20252
20253 ValidationFlagsEXT& setDisabledValidationCheckCount( uint32_t disabledValidationCheckCount_ )
20254 {
20255 disabledValidationCheckCount = disabledValidationCheckCount_;
20256 return *this;
20257 }
20258
20259 ValidationFlagsEXT& setPDisabledValidationChecks( ValidationCheckEXT* pDisabledValidationChecks_ )
20260 {
20261 pDisabledValidationChecks = pDisabledValidationChecks_;
20262 return *this;
20263 }
20264
20265 operator const VkValidationFlagsEXT&() const
20266 {
20267 return *reinterpret_cast<const VkValidationFlagsEXT*>(this);
20268 }
20269
20270 bool operator==( ValidationFlagsEXT const& rhs ) const
20271 {
20272 return ( sType == rhs.sType )
20273 && ( pNext == rhs.pNext )
20274 && ( disabledValidationCheckCount == rhs.disabledValidationCheckCount )
20275 && ( pDisabledValidationChecks == rhs.pDisabledValidationChecks );
20276 }
20277
20278 bool operator!=( ValidationFlagsEXT const& rhs ) const
20279 {
20280 return !operator==( rhs );
20281 }
20282
20283 private:
20284 StructureType sType;
20285
20286 public:
20287 const void* pNext;
20288 uint32_t disabledValidationCheckCount;
20289 ValidationCheckEXT* pDisabledValidationChecks;
20290 };
20291 static_assert( sizeof( ValidationFlagsEXT ) == sizeof( VkValidationFlagsEXT ), "struct and wrapper have different size!" );
20292
20293 enum class IndirectCommandsLayoutUsageFlagBitsNVX
20294 {
20295 eUnorderedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX,
20296 eSparseSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX,
20297 eEmptyExecutions = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX,
20298 eIndexedSequences = VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX
20299 };
20300
20301 using IndirectCommandsLayoutUsageFlagsNVX = Flags<IndirectCommandsLayoutUsageFlagBitsNVX, VkIndirectCommandsLayoutUsageFlagsNVX>;
20302
20303 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator|( IndirectCommandsLayoutUsageFlagBitsNVX bit0, IndirectCommandsLayoutUsageFlagBitsNVX bit1 )
20304 {
20305 return IndirectCommandsLayoutUsageFlagsNVX( bit0 ) | bit1;
20306 }
20307
20308 VULKAN_HPP_INLINE IndirectCommandsLayoutUsageFlagsNVX operator~( IndirectCommandsLayoutUsageFlagBitsNVX bits )
20309 {
20310 return ~( IndirectCommandsLayoutUsageFlagsNVX( bits ) );
20311 }
20312
20313 template <> struct FlagTraits<IndirectCommandsLayoutUsageFlagBitsNVX>
20314 {
20315 enum
20316 {
20317 allFlags = VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) | VkFlags(IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences)
20318 };
20319 };
20320
20321 enum class ObjectEntryUsageFlagBitsNVX
20322 {
20323 eGraphics = VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX,
20324 eCompute = VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX
20325 };
20326
20327 using ObjectEntryUsageFlagsNVX = Flags<ObjectEntryUsageFlagBitsNVX, VkObjectEntryUsageFlagsNVX>;
20328
20329 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator|( ObjectEntryUsageFlagBitsNVX bit0, ObjectEntryUsageFlagBitsNVX bit1 )
20330 {
20331 return ObjectEntryUsageFlagsNVX( bit0 ) | bit1;
20332 }
20333
20334 VULKAN_HPP_INLINE ObjectEntryUsageFlagsNVX operator~( ObjectEntryUsageFlagBitsNVX bits )
20335 {
20336 return ~( ObjectEntryUsageFlagsNVX( bits ) );
20337 }
20338
20339 template <> struct FlagTraits<ObjectEntryUsageFlagBitsNVX>
20340 {
20341 enum
20342 {
20343 allFlags = VkFlags(ObjectEntryUsageFlagBitsNVX::eGraphics) | VkFlags(ObjectEntryUsageFlagBitsNVX::eCompute)
20344 };
20345 };
20346
20347 enum class IndirectCommandsTokenTypeNVX
20348 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060020349 ePipeline = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX,
20350 eDescriptorSet = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX,
20351 eIndexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX,
20352 eVertexBuffer = VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX,
20353 ePushConstant = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX,
20354 eDrawIndexed = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX,
20355 eDraw = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX,
20356 eDispatch = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020357 };
20358
20359 struct IndirectCommandsTokenNVX
20360 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060020361 IndirectCommandsTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::ePipeline, Buffer buffer_ = Buffer(), DeviceSize offset_ = 0 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020362 : tokenType( tokenType_ )
20363 , buffer( buffer_ )
20364 , offset( offset_ )
20365 {
20366 }
20367
20368 IndirectCommandsTokenNVX( VkIndirectCommandsTokenNVX const & rhs )
20369 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020370 memcpy( this, &rhs, sizeof( IndirectCommandsTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020371 }
20372
20373 IndirectCommandsTokenNVX& operator=( VkIndirectCommandsTokenNVX const & rhs )
20374 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020375 memcpy( this, &rhs, sizeof( IndirectCommandsTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020376 return *this;
20377 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020378 IndirectCommandsTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
20379 {
20380 tokenType = tokenType_;
20381 return *this;
20382 }
20383
20384 IndirectCommandsTokenNVX& setBuffer( Buffer buffer_ )
20385 {
20386 buffer = buffer_;
20387 return *this;
20388 }
20389
20390 IndirectCommandsTokenNVX& setOffset( DeviceSize offset_ )
20391 {
20392 offset = offset_;
20393 return *this;
20394 }
20395
20396 operator const VkIndirectCommandsTokenNVX&() const
20397 {
20398 return *reinterpret_cast<const VkIndirectCommandsTokenNVX*>(this);
20399 }
20400
20401 bool operator==( IndirectCommandsTokenNVX const& rhs ) const
20402 {
20403 return ( tokenType == rhs.tokenType )
20404 && ( buffer == rhs.buffer )
20405 && ( offset == rhs.offset );
20406 }
20407
20408 bool operator!=( IndirectCommandsTokenNVX const& rhs ) const
20409 {
20410 return !operator==( rhs );
20411 }
20412
20413 IndirectCommandsTokenTypeNVX tokenType;
20414 Buffer buffer;
20415 DeviceSize offset;
20416 };
20417 static_assert( sizeof( IndirectCommandsTokenNVX ) == sizeof( VkIndirectCommandsTokenNVX ), "struct and wrapper have different size!" );
20418
20419 struct IndirectCommandsLayoutTokenNVX
20420 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060020421 IndirectCommandsLayoutTokenNVX( IndirectCommandsTokenTypeNVX tokenType_ = IndirectCommandsTokenTypeNVX::ePipeline, uint32_t bindingUnit_ = 0, uint32_t dynamicCount_ = 0, uint32_t divisor_ = 0 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020422 : tokenType( tokenType_ )
20423 , bindingUnit( bindingUnit_ )
20424 , dynamicCount( dynamicCount_ )
20425 , divisor( divisor_ )
20426 {
20427 }
20428
20429 IndirectCommandsLayoutTokenNVX( VkIndirectCommandsLayoutTokenNVX const & rhs )
20430 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020431 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020432 }
20433
20434 IndirectCommandsLayoutTokenNVX& operator=( VkIndirectCommandsLayoutTokenNVX const & rhs )
20435 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020436 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutTokenNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020437 return *this;
20438 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020439 IndirectCommandsLayoutTokenNVX& setTokenType( IndirectCommandsTokenTypeNVX tokenType_ )
20440 {
20441 tokenType = tokenType_;
20442 return *this;
20443 }
20444
20445 IndirectCommandsLayoutTokenNVX& setBindingUnit( uint32_t bindingUnit_ )
20446 {
20447 bindingUnit = bindingUnit_;
20448 return *this;
20449 }
20450
20451 IndirectCommandsLayoutTokenNVX& setDynamicCount( uint32_t dynamicCount_ )
20452 {
20453 dynamicCount = dynamicCount_;
20454 return *this;
20455 }
20456
20457 IndirectCommandsLayoutTokenNVX& setDivisor( uint32_t divisor_ )
20458 {
20459 divisor = divisor_;
20460 return *this;
20461 }
20462
20463 operator const VkIndirectCommandsLayoutTokenNVX&() const
20464 {
20465 return *reinterpret_cast<const VkIndirectCommandsLayoutTokenNVX*>(this);
20466 }
20467
20468 bool operator==( IndirectCommandsLayoutTokenNVX const& rhs ) const
20469 {
20470 return ( tokenType == rhs.tokenType )
20471 && ( bindingUnit == rhs.bindingUnit )
20472 && ( dynamicCount == rhs.dynamicCount )
20473 && ( divisor == rhs.divisor );
20474 }
20475
20476 bool operator!=( IndirectCommandsLayoutTokenNVX const& rhs ) const
20477 {
20478 return !operator==( rhs );
20479 }
20480
20481 IndirectCommandsTokenTypeNVX tokenType;
20482 uint32_t bindingUnit;
20483 uint32_t dynamicCount;
20484 uint32_t divisor;
20485 };
20486 static_assert( sizeof( IndirectCommandsLayoutTokenNVX ) == sizeof( VkIndirectCommandsLayoutTokenNVX ), "struct and wrapper have different size!" );
20487
20488 struct IndirectCommandsLayoutCreateInfoNVX
20489 {
20490 IndirectCommandsLayoutCreateInfoNVX( PipelineBindPoint pipelineBindPoint_ = PipelineBindPoint::eGraphics, IndirectCommandsLayoutUsageFlagsNVX flags_ = IndirectCommandsLayoutUsageFlagsNVX(), uint32_t tokenCount_ = 0, const IndirectCommandsLayoutTokenNVX* pTokens_ = nullptr )
20491 : sType( StructureType::eIndirectCommandsLayoutCreateInfoNVX )
20492 , pNext( nullptr )
20493 , pipelineBindPoint( pipelineBindPoint_ )
20494 , flags( flags_ )
20495 , tokenCount( tokenCount_ )
20496 , pTokens( pTokens_ )
20497 {
20498 }
20499
20500 IndirectCommandsLayoutCreateInfoNVX( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
20501 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020502 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020503 }
20504
20505 IndirectCommandsLayoutCreateInfoNVX& operator=( VkIndirectCommandsLayoutCreateInfoNVX const & rhs )
20506 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020507 memcpy( this, &rhs, sizeof( IndirectCommandsLayoutCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020508 return *this;
20509 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020510 IndirectCommandsLayoutCreateInfoNVX& setPNext( const void* pNext_ )
20511 {
20512 pNext = pNext_;
20513 return *this;
20514 }
20515
20516 IndirectCommandsLayoutCreateInfoNVX& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
20517 {
20518 pipelineBindPoint = pipelineBindPoint_;
20519 return *this;
20520 }
20521
20522 IndirectCommandsLayoutCreateInfoNVX& setFlags( IndirectCommandsLayoutUsageFlagsNVX flags_ )
20523 {
20524 flags = flags_;
20525 return *this;
20526 }
20527
20528 IndirectCommandsLayoutCreateInfoNVX& setTokenCount( uint32_t tokenCount_ )
20529 {
20530 tokenCount = tokenCount_;
20531 return *this;
20532 }
20533
20534 IndirectCommandsLayoutCreateInfoNVX& setPTokens( const IndirectCommandsLayoutTokenNVX* pTokens_ )
20535 {
20536 pTokens = pTokens_;
20537 return *this;
20538 }
20539
20540 operator const VkIndirectCommandsLayoutCreateInfoNVX&() const
20541 {
20542 return *reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>(this);
20543 }
20544
20545 bool operator==( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
20546 {
20547 return ( sType == rhs.sType )
20548 && ( pNext == rhs.pNext )
20549 && ( pipelineBindPoint == rhs.pipelineBindPoint )
20550 && ( flags == rhs.flags )
20551 && ( tokenCount == rhs.tokenCount )
20552 && ( pTokens == rhs.pTokens );
20553 }
20554
20555 bool operator!=( IndirectCommandsLayoutCreateInfoNVX const& rhs ) const
20556 {
20557 return !operator==( rhs );
20558 }
20559
20560 private:
20561 StructureType sType;
20562
20563 public:
20564 const void* pNext;
20565 PipelineBindPoint pipelineBindPoint;
20566 IndirectCommandsLayoutUsageFlagsNVX flags;
20567 uint32_t tokenCount;
20568 const IndirectCommandsLayoutTokenNVX* pTokens;
20569 };
20570 static_assert( sizeof( IndirectCommandsLayoutCreateInfoNVX ) == sizeof( VkIndirectCommandsLayoutCreateInfoNVX ), "struct and wrapper have different size!" );
20571
20572 enum class ObjectEntryTypeNVX
20573 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060020574 eDescriptorSet = VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX,
20575 ePipeline = VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX,
20576 eIndexBuffer = VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX,
20577 eVertexBuffer = VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX,
20578 ePushConstant = VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020579 };
20580
20581 struct ObjectTableCreateInfoNVX
20582 {
20583 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 )
20584 : sType( StructureType::eObjectTableCreateInfoNVX )
20585 , pNext( nullptr )
20586 , objectCount( objectCount_ )
20587 , pObjectEntryTypes( pObjectEntryTypes_ )
20588 , pObjectEntryCounts( pObjectEntryCounts_ )
20589 , pObjectEntryUsageFlags( pObjectEntryUsageFlags_ )
20590 , maxUniformBuffersPerDescriptor( maxUniformBuffersPerDescriptor_ )
20591 , maxStorageBuffersPerDescriptor( maxStorageBuffersPerDescriptor_ )
20592 , maxStorageImagesPerDescriptor( maxStorageImagesPerDescriptor_ )
20593 , maxSampledImagesPerDescriptor( maxSampledImagesPerDescriptor_ )
20594 , maxPipelineLayouts( maxPipelineLayouts_ )
20595 {
20596 }
20597
20598 ObjectTableCreateInfoNVX( VkObjectTableCreateInfoNVX const & rhs )
20599 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020600 memcpy( this, &rhs, sizeof( ObjectTableCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020601 }
20602
20603 ObjectTableCreateInfoNVX& operator=( VkObjectTableCreateInfoNVX const & rhs )
20604 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020605 memcpy( this, &rhs, sizeof( ObjectTableCreateInfoNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020606 return *this;
20607 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020608 ObjectTableCreateInfoNVX& setPNext( const void* pNext_ )
20609 {
20610 pNext = pNext_;
20611 return *this;
20612 }
20613
20614 ObjectTableCreateInfoNVX& setObjectCount( uint32_t objectCount_ )
20615 {
20616 objectCount = objectCount_;
20617 return *this;
20618 }
20619
20620 ObjectTableCreateInfoNVX& setPObjectEntryTypes( const ObjectEntryTypeNVX* pObjectEntryTypes_ )
20621 {
20622 pObjectEntryTypes = pObjectEntryTypes_;
20623 return *this;
20624 }
20625
20626 ObjectTableCreateInfoNVX& setPObjectEntryCounts( const uint32_t* pObjectEntryCounts_ )
20627 {
20628 pObjectEntryCounts = pObjectEntryCounts_;
20629 return *this;
20630 }
20631
20632 ObjectTableCreateInfoNVX& setPObjectEntryUsageFlags( const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags_ )
20633 {
20634 pObjectEntryUsageFlags = pObjectEntryUsageFlags_;
20635 return *this;
20636 }
20637
20638 ObjectTableCreateInfoNVX& setMaxUniformBuffersPerDescriptor( uint32_t maxUniformBuffersPerDescriptor_ )
20639 {
20640 maxUniformBuffersPerDescriptor = maxUniformBuffersPerDescriptor_;
20641 return *this;
20642 }
20643
20644 ObjectTableCreateInfoNVX& setMaxStorageBuffersPerDescriptor( uint32_t maxStorageBuffersPerDescriptor_ )
20645 {
20646 maxStorageBuffersPerDescriptor = maxStorageBuffersPerDescriptor_;
20647 return *this;
20648 }
20649
20650 ObjectTableCreateInfoNVX& setMaxStorageImagesPerDescriptor( uint32_t maxStorageImagesPerDescriptor_ )
20651 {
20652 maxStorageImagesPerDescriptor = maxStorageImagesPerDescriptor_;
20653 return *this;
20654 }
20655
20656 ObjectTableCreateInfoNVX& setMaxSampledImagesPerDescriptor( uint32_t maxSampledImagesPerDescriptor_ )
20657 {
20658 maxSampledImagesPerDescriptor = maxSampledImagesPerDescriptor_;
20659 return *this;
20660 }
20661
20662 ObjectTableCreateInfoNVX& setMaxPipelineLayouts( uint32_t maxPipelineLayouts_ )
20663 {
20664 maxPipelineLayouts = maxPipelineLayouts_;
20665 return *this;
20666 }
20667
20668 operator const VkObjectTableCreateInfoNVX&() const
20669 {
20670 return *reinterpret_cast<const VkObjectTableCreateInfoNVX*>(this);
20671 }
20672
20673 bool operator==( ObjectTableCreateInfoNVX const& rhs ) const
20674 {
20675 return ( sType == rhs.sType )
20676 && ( pNext == rhs.pNext )
20677 && ( objectCount == rhs.objectCount )
20678 && ( pObjectEntryTypes == rhs.pObjectEntryTypes )
20679 && ( pObjectEntryCounts == rhs.pObjectEntryCounts )
20680 && ( pObjectEntryUsageFlags == rhs.pObjectEntryUsageFlags )
20681 && ( maxUniformBuffersPerDescriptor == rhs.maxUniformBuffersPerDescriptor )
20682 && ( maxStorageBuffersPerDescriptor == rhs.maxStorageBuffersPerDescriptor )
20683 && ( maxStorageImagesPerDescriptor == rhs.maxStorageImagesPerDescriptor )
20684 && ( maxSampledImagesPerDescriptor == rhs.maxSampledImagesPerDescriptor )
20685 && ( maxPipelineLayouts == rhs.maxPipelineLayouts );
20686 }
20687
20688 bool operator!=( ObjectTableCreateInfoNVX const& rhs ) const
20689 {
20690 return !operator==( rhs );
20691 }
20692
20693 private:
20694 StructureType sType;
20695
20696 public:
20697 const void* pNext;
20698 uint32_t objectCount;
20699 const ObjectEntryTypeNVX* pObjectEntryTypes;
20700 const uint32_t* pObjectEntryCounts;
20701 const ObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags;
20702 uint32_t maxUniformBuffersPerDescriptor;
20703 uint32_t maxStorageBuffersPerDescriptor;
20704 uint32_t maxStorageImagesPerDescriptor;
20705 uint32_t maxSampledImagesPerDescriptor;
20706 uint32_t maxPipelineLayouts;
20707 };
20708 static_assert( sizeof( ObjectTableCreateInfoNVX ) == sizeof( VkObjectTableCreateInfoNVX ), "struct and wrapper have different size!" );
20709
20710 struct ObjectTableEntryNVX
20711 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060020712 ObjectTableEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020713 : type( type_ )
20714 , flags( flags_ )
20715 {
20716 }
20717
20718 ObjectTableEntryNVX( VkObjectTableEntryNVX const & rhs )
20719 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020720 memcpy( this, &rhs, sizeof( ObjectTableEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020721 }
20722
20723 ObjectTableEntryNVX& operator=( VkObjectTableEntryNVX const & rhs )
20724 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020725 memcpy( this, &rhs, sizeof( ObjectTableEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020726 return *this;
20727 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020728 ObjectTableEntryNVX& setType( ObjectEntryTypeNVX type_ )
20729 {
20730 type = type_;
20731 return *this;
20732 }
20733
20734 ObjectTableEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
20735 {
20736 flags = flags_;
20737 return *this;
20738 }
20739
20740 operator const VkObjectTableEntryNVX&() const
20741 {
20742 return *reinterpret_cast<const VkObjectTableEntryNVX*>(this);
20743 }
20744
20745 bool operator==( ObjectTableEntryNVX const& rhs ) const
20746 {
20747 return ( type == rhs.type )
20748 && ( flags == rhs.flags );
20749 }
20750
20751 bool operator!=( ObjectTableEntryNVX const& rhs ) const
20752 {
20753 return !operator==( rhs );
20754 }
20755
20756 ObjectEntryTypeNVX type;
20757 ObjectEntryUsageFlagsNVX flags;
20758 };
20759 static_assert( sizeof( ObjectTableEntryNVX ) == sizeof( VkObjectTableEntryNVX ), "struct and wrapper have different size!" );
20760
20761 struct ObjectTablePipelineEntryNVX
20762 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060020763 ObjectTablePipelineEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Pipeline pipeline_ = Pipeline() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020764 : type( type_ )
20765 , flags( flags_ )
20766 , pipeline( pipeline_ )
20767 {
20768 }
20769
20770 ObjectTablePipelineEntryNVX( VkObjectTablePipelineEntryNVX const & rhs )
20771 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020772 memcpy( this, &rhs, sizeof( ObjectTablePipelineEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020773 }
20774
20775 ObjectTablePipelineEntryNVX& operator=( VkObjectTablePipelineEntryNVX const & rhs )
20776 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020777 memcpy( this, &rhs, sizeof( ObjectTablePipelineEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020778 return *this;
20779 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020780 ObjectTablePipelineEntryNVX& setType( ObjectEntryTypeNVX type_ )
20781 {
20782 type = type_;
20783 return *this;
20784 }
20785
20786 ObjectTablePipelineEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
20787 {
20788 flags = flags_;
20789 return *this;
20790 }
20791
20792 ObjectTablePipelineEntryNVX& setPipeline( Pipeline pipeline_ )
20793 {
20794 pipeline = pipeline_;
20795 return *this;
20796 }
20797
20798 operator const VkObjectTablePipelineEntryNVX&() const
20799 {
20800 return *reinterpret_cast<const VkObjectTablePipelineEntryNVX*>(this);
20801 }
20802
20803 bool operator==( ObjectTablePipelineEntryNVX const& rhs ) const
20804 {
20805 return ( type == rhs.type )
20806 && ( flags == rhs.flags )
20807 && ( pipeline == rhs.pipeline );
20808 }
20809
20810 bool operator!=( ObjectTablePipelineEntryNVX const& rhs ) const
20811 {
20812 return !operator==( rhs );
20813 }
20814
20815 ObjectEntryTypeNVX type;
20816 ObjectEntryUsageFlagsNVX flags;
20817 Pipeline pipeline;
20818 };
20819 static_assert( sizeof( ObjectTablePipelineEntryNVX ) == sizeof( VkObjectTablePipelineEntryNVX ), "struct and wrapper have different size!" );
20820
20821 struct ObjectTableDescriptorSetEntryNVX
20822 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060020823 ObjectTableDescriptorSetEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), PipelineLayout pipelineLayout_ = PipelineLayout(), DescriptorSet descriptorSet_ = DescriptorSet() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020824 : type( type_ )
20825 , flags( flags_ )
20826 , pipelineLayout( pipelineLayout_ )
20827 , descriptorSet( descriptorSet_ )
20828 {
20829 }
20830
20831 ObjectTableDescriptorSetEntryNVX( VkObjectTableDescriptorSetEntryNVX const & rhs )
20832 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020833 memcpy( this, &rhs, sizeof( ObjectTableDescriptorSetEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020834 }
20835
20836 ObjectTableDescriptorSetEntryNVX& operator=( VkObjectTableDescriptorSetEntryNVX const & rhs )
20837 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020838 memcpy( this, &rhs, sizeof( ObjectTableDescriptorSetEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020839 return *this;
20840 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020841 ObjectTableDescriptorSetEntryNVX& setType( ObjectEntryTypeNVX type_ )
20842 {
20843 type = type_;
20844 return *this;
20845 }
20846
20847 ObjectTableDescriptorSetEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
20848 {
20849 flags = flags_;
20850 return *this;
20851 }
20852
20853 ObjectTableDescriptorSetEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
20854 {
20855 pipelineLayout = pipelineLayout_;
20856 return *this;
20857 }
20858
20859 ObjectTableDescriptorSetEntryNVX& setDescriptorSet( DescriptorSet descriptorSet_ )
20860 {
20861 descriptorSet = descriptorSet_;
20862 return *this;
20863 }
20864
20865 operator const VkObjectTableDescriptorSetEntryNVX&() const
20866 {
20867 return *reinterpret_cast<const VkObjectTableDescriptorSetEntryNVX*>(this);
20868 }
20869
20870 bool operator==( ObjectTableDescriptorSetEntryNVX const& rhs ) const
20871 {
20872 return ( type == rhs.type )
20873 && ( flags == rhs.flags )
20874 && ( pipelineLayout == rhs.pipelineLayout )
20875 && ( descriptorSet == rhs.descriptorSet );
20876 }
20877
20878 bool operator!=( ObjectTableDescriptorSetEntryNVX const& rhs ) const
20879 {
20880 return !operator==( rhs );
20881 }
20882
20883 ObjectEntryTypeNVX type;
20884 ObjectEntryUsageFlagsNVX flags;
20885 PipelineLayout pipelineLayout;
20886 DescriptorSet descriptorSet;
20887 };
20888 static_assert( sizeof( ObjectTableDescriptorSetEntryNVX ) == sizeof( VkObjectTableDescriptorSetEntryNVX ), "struct and wrapper have different size!" );
20889
20890 struct ObjectTableVertexBufferEntryNVX
20891 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060020892 ObjectTableVertexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Buffer buffer_ = Buffer() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020893 : type( type_ )
20894 , flags( flags_ )
20895 , buffer( buffer_ )
20896 {
20897 }
20898
20899 ObjectTableVertexBufferEntryNVX( VkObjectTableVertexBufferEntryNVX const & rhs )
20900 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020901 memcpy( this, &rhs, sizeof( ObjectTableVertexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020902 }
20903
20904 ObjectTableVertexBufferEntryNVX& operator=( VkObjectTableVertexBufferEntryNVX const & rhs )
20905 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020906 memcpy( this, &rhs, sizeof( ObjectTableVertexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020907 return *this;
20908 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020909 ObjectTableVertexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
20910 {
20911 type = type_;
20912 return *this;
20913 }
20914
20915 ObjectTableVertexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
20916 {
20917 flags = flags_;
20918 return *this;
20919 }
20920
20921 ObjectTableVertexBufferEntryNVX& setBuffer( Buffer buffer_ )
20922 {
20923 buffer = buffer_;
20924 return *this;
20925 }
20926
20927 operator const VkObjectTableVertexBufferEntryNVX&() const
20928 {
20929 return *reinterpret_cast<const VkObjectTableVertexBufferEntryNVX*>(this);
20930 }
20931
20932 bool operator==( ObjectTableVertexBufferEntryNVX const& rhs ) const
20933 {
20934 return ( type == rhs.type )
20935 && ( flags == rhs.flags )
20936 && ( buffer == rhs.buffer );
20937 }
20938
20939 bool operator!=( ObjectTableVertexBufferEntryNVX const& rhs ) const
20940 {
20941 return !operator==( rhs );
20942 }
20943
20944 ObjectEntryTypeNVX type;
20945 ObjectEntryUsageFlagsNVX flags;
20946 Buffer buffer;
20947 };
20948 static_assert( sizeof( ObjectTableVertexBufferEntryNVX ) == sizeof( VkObjectTableVertexBufferEntryNVX ), "struct and wrapper have different size!" );
20949
20950 struct ObjectTableIndexBufferEntryNVX
20951 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060020952 ObjectTableIndexBufferEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), Buffer buffer_ = Buffer(), IndexType indexType_ = IndexType::eUint16 )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020953 : type( type_ )
20954 , flags( flags_ )
20955 , buffer( buffer_ )
Mark Young39389872017-01-19 21:10:49 -070020956 , indexType( indexType_ )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020957 {
20958 }
20959
20960 ObjectTableIndexBufferEntryNVX( VkObjectTableIndexBufferEntryNVX const & rhs )
20961 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020962 memcpy( this, &rhs, sizeof( ObjectTableIndexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020963 }
20964
20965 ObjectTableIndexBufferEntryNVX& operator=( VkObjectTableIndexBufferEntryNVX const & rhs )
20966 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060020967 memcpy( this, &rhs, sizeof( ObjectTableIndexBufferEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020968 return *this;
20969 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020970 ObjectTableIndexBufferEntryNVX& setType( ObjectEntryTypeNVX type_ )
20971 {
20972 type = type_;
20973 return *this;
20974 }
20975
20976 ObjectTableIndexBufferEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
20977 {
20978 flags = flags_;
20979 return *this;
20980 }
20981
20982 ObjectTableIndexBufferEntryNVX& setBuffer( Buffer buffer_ )
20983 {
20984 buffer = buffer_;
20985 return *this;
20986 }
20987
Mark Young39389872017-01-19 21:10:49 -070020988 ObjectTableIndexBufferEntryNVX& setIndexType( IndexType indexType_ )
20989 {
20990 indexType = indexType_;
20991 return *this;
20992 }
20993
Mark Lobodzinski2d589822016-12-12 09:44:34 -070020994 operator const VkObjectTableIndexBufferEntryNVX&() const
20995 {
20996 return *reinterpret_cast<const VkObjectTableIndexBufferEntryNVX*>(this);
20997 }
20998
20999 bool operator==( ObjectTableIndexBufferEntryNVX const& rhs ) const
21000 {
21001 return ( type == rhs.type )
21002 && ( flags == rhs.flags )
Mark Young39389872017-01-19 21:10:49 -070021003 && ( buffer == rhs.buffer )
21004 && ( indexType == rhs.indexType );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021005 }
21006
21007 bool operator!=( ObjectTableIndexBufferEntryNVX const& rhs ) const
21008 {
21009 return !operator==( rhs );
21010 }
21011
21012 ObjectEntryTypeNVX type;
21013 ObjectEntryUsageFlagsNVX flags;
21014 Buffer buffer;
Mark Young39389872017-01-19 21:10:49 -070021015 IndexType indexType;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021016 };
21017 static_assert( sizeof( ObjectTableIndexBufferEntryNVX ) == sizeof( VkObjectTableIndexBufferEntryNVX ), "struct and wrapper have different size!" );
21018
21019 struct ObjectTablePushConstantEntryNVX
21020 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060021021 ObjectTablePushConstantEntryNVX( ObjectEntryTypeNVX type_ = ObjectEntryTypeNVX::eDescriptorSet, ObjectEntryUsageFlagsNVX flags_ = ObjectEntryUsageFlagsNVX(), PipelineLayout pipelineLayout_ = PipelineLayout(), ShaderStageFlags stageFlags_ = ShaderStageFlags() )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021022 : type( type_ )
21023 , flags( flags_ )
21024 , pipelineLayout( pipelineLayout_ )
21025 , stageFlags( stageFlags_ )
21026 {
21027 }
21028
21029 ObjectTablePushConstantEntryNVX( VkObjectTablePushConstantEntryNVX const & rhs )
21030 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021031 memcpy( this, &rhs, sizeof( ObjectTablePushConstantEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021032 }
21033
21034 ObjectTablePushConstantEntryNVX& operator=( VkObjectTablePushConstantEntryNVX const & rhs )
21035 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021036 memcpy( this, &rhs, sizeof( ObjectTablePushConstantEntryNVX ) );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021037 return *this;
21038 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070021039 ObjectTablePushConstantEntryNVX& setType( ObjectEntryTypeNVX type_ )
21040 {
21041 type = type_;
21042 return *this;
21043 }
21044
21045 ObjectTablePushConstantEntryNVX& setFlags( ObjectEntryUsageFlagsNVX flags_ )
21046 {
21047 flags = flags_;
21048 return *this;
21049 }
21050
21051 ObjectTablePushConstantEntryNVX& setPipelineLayout( PipelineLayout pipelineLayout_ )
21052 {
21053 pipelineLayout = pipelineLayout_;
21054 return *this;
21055 }
21056
21057 ObjectTablePushConstantEntryNVX& setStageFlags( ShaderStageFlags stageFlags_ )
21058 {
21059 stageFlags = stageFlags_;
21060 return *this;
21061 }
21062
21063 operator const VkObjectTablePushConstantEntryNVX&() const
21064 {
21065 return *reinterpret_cast<const VkObjectTablePushConstantEntryNVX*>(this);
21066 }
21067
21068 bool operator==( ObjectTablePushConstantEntryNVX const& rhs ) const
21069 {
21070 return ( type == rhs.type )
21071 && ( flags == rhs.flags )
21072 && ( pipelineLayout == rhs.pipelineLayout )
21073 && ( stageFlags == rhs.stageFlags );
21074 }
21075
21076 bool operator!=( ObjectTablePushConstantEntryNVX const& rhs ) const
21077 {
21078 return !operator==( rhs );
21079 }
21080
21081 ObjectEntryTypeNVX type;
21082 ObjectEntryUsageFlagsNVX flags;
21083 PipelineLayout pipelineLayout;
21084 ShaderStageFlags stageFlags;
21085 };
21086 static_assert( sizeof( ObjectTablePushConstantEntryNVX ) == sizeof( VkObjectTablePushConstantEntryNVX ), "struct and wrapper have different size!" );
21087
Mark Young0f183a82017-02-28 09:58:04 -070021088 enum class DescriptorSetLayoutCreateFlagBits
21089 {
21090 ePushDescriptorKHR = VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR
21091 };
21092
21093 using DescriptorSetLayoutCreateFlags = Flags<DescriptorSetLayoutCreateFlagBits, VkDescriptorSetLayoutCreateFlags>;
21094
21095 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator|( DescriptorSetLayoutCreateFlagBits bit0, DescriptorSetLayoutCreateFlagBits bit1 )
21096 {
21097 return DescriptorSetLayoutCreateFlags( bit0 ) | bit1;
21098 }
21099
21100 VULKAN_HPP_INLINE DescriptorSetLayoutCreateFlags operator~( DescriptorSetLayoutCreateFlagBits bits )
21101 {
21102 return ~( DescriptorSetLayoutCreateFlags( bits ) );
21103 }
21104
21105 template <> struct FlagTraits<DescriptorSetLayoutCreateFlagBits>
21106 {
21107 enum
21108 {
21109 allFlags = VkFlags(DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR)
21110 };
21111 };
21112
21113 struct DescriptorSetLayoutCreateInfo
21114 {
21115 DescriptorSetLayoutCreateInfo( DescriptorSetLayoutCreateFlags flags_ = DescriptorSetLayoutCreateFlags(), uint32_t bindingCount_ = 0, const DescriptorSetLayoutBinding* pBindings_ = nullptr )
21116 : sType( StructureType::eDescriptorSetLayoutCreateInfo )
21117 , pNext( nullptr )
21118 , flags( flags_ )
21119 , bindingCount( bindingCount_ )
21120 , pBindings( pBindings_ )
21121 {
21122 }
21123
21124 DescriptorSetLayoutCreateInfo( VkDescriptorSetLayoutCreateInfo const & rhs )
21125 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021126 memcpy( this, &rhs, sizeof( DescriptorSetLayoutCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070021127 }
21128
21129 DescriptorSetLayoutCreateInfo& operator=( VkDescriptorSetLayoutCreateInfo const & rhs )
21130 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060021131 memcpy( this, &rhs, sizeof( DescriptorSetLayoutCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070021132 return *this;
21133 }
Mark Young0f183a82017-02-28 09:58:04 -070021134 DescriptorSetLayoutCreateInfo& setPNext( const void* pNext_ )
21135 {
21136 pNext = pNext_;
21137 return *this;
21138 }
21139
21140 DescriptorSetLayoutCreateInfo& setFlags( DescriptorSetLayoutCreateFlags flags_ )
21141 {
21142 flags = flags_;
21143 return *this;
21144 }
21145
21146 DescriptorSetLayoutCreateInfo& setBindingCount( uint32_t bindingCount_ )
21147 {
21148 bindingCount = bindingCount_;
21149 return *this;
21150 }
21151
21152 DescriptorSetLayoutCreateInfo& setPBindings( const DescriptorSetLayoutBinding* pBindings_ )
21153 {
21154 pBindings = pBindings_;
21155 return *this;
21156 }
21157
21158 operator const VkDescriptorSetLayoutCreateInfo&() const
21159 {
21160 return *reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>(this);
21161 }
21162
21163 bool operator==( DescriptorSetLayoutCreateInfo const& rhs ) const
21164 {
21165 return ( sType == rhs.sType )
21166 && ( pNext == rhs.pNext )
21167 && ( flags == rhs.flags )
21168 && ( bindingCount == rhs.bindingCount )
21169 && ( pBindings == rhs.pBindings );
21170 }
21171
21172 bool operator!=( DescriptorSetLayoutCreateInfo const& rhs ) const
21173 {
21174 return !operator==( rhs );
21175 }
21176
21177 private:
21178 StructureType sType;
21179
21180 public:
21181 const void* pNext;
21182 DescriptorSetLayoutCreateFlags flags;
21183 uint32_t bindingCount;
21184 const DescriptorSetLayoutBinding* pBindings;
21185 };
21186 static_assert( sizeof( DescriptorSetLayoutCreateInfo ) == sizeof( VkDescriptorSetLayoutCreateInfo ), "struct and wrapper have different size!" );
21187
Mark Youngabc2d6e2017-07-07 07:59:56 -060021188 enum class ExternalMemoryHandleTypeFlagBitsKHR
Mark Young0f183a82017-02-28 09:58:04 -070021189 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021190 eOpaqueFd = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
21191 eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
21192 eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
21193 eD3D11Texture = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR,
21194 eD3D11TextureKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR,
21195 eD3D12Heap = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR,
21196 eD3D12Resource = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR
Mark Young0f183a82017-02-28 09:58:04 -070021197 };
21198
Mark Youngabc2d6e2017-07-07 07:59:56 -060021199 using ExternalMemoryHandleTypeFlagsKHR = Flags<ExternalMemoryHandleTypeFlagBitsKHR, VkExternalMemoryHandleTypeFlagsKHR>;
Mark Young0f183a82017-02-28 09:58:04 -070021200
Mark Youngabc2d6e2017-07-07 07:59:56 -060021201 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsKHR operator|( ExternalMemoryHandleTypeFlagBitsKHR bit0, ExternalMemoryHandleTypeFlagBitsKHR bit1 )
Mark Young0f183a82017-02-28 09:58:04 -070021202 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021203 return ExternalMemoryHandleTypeFlagsKHR( bit0 ) | bit1;
Mark Young0f183a82017-02-28 09:58:04 -070021204 }
21205
Mark Youngabc2d6e2017-07-07 07:59:56 -060021206 VULKAN_HPP_INLINE ExternalMemoryHandleTypeFlagsKHR operator~( ExternalMemoryHandleTypeFlagBitsKHR bits )
Mark Young0f183a82017-02-28 09:58:04 -070021207 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021208 return ~( ExternalMemoryHandleTypeFlagsKHR( bits ) );
Mark Young0f183a82017-02-28 09:58:04 -070021209 }
21210
Mark Youngabc2d6e2017-07-07 07:59:56 -060021211 template <> struct FlagTraits<ExternalMemoryHandleTypeFlagBitsKHR>
Mark Young0f183a82017-02-28 09:58:04 -070021212 {
21213 enum
21214 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021215 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 -070021216 };
21217 };
21218
Mark Youngabc2d6e2017-07-07 07:59:56 -060021219 struct PhysicalDeviceExternalImageFormatInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070021220 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021221 PhysicalDeviceExternalImageFormatInfoKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd )
21222 : sType( StructureType::ePhysicalDeviceExternalImageFormatInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070021223 , pNext( nullptr )
21224 , handleType( handleType_ )
21225 {
21226 }
21227
Mark Youngabc2d6e2017-07-07 07:59:56 -060021228 PhysicalDeviceExternalImageFormatInfoKHR( VkPhysicalDeviceExternalImageFormatInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021229 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021230 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalImageFormatInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021231 }
21232
Mark Youngabc2d6e2017-07-07 07:59:56 -060021233 PhysicalDeviceExternalImageFormatInfoKHR& operator=( VkPhysicalDeviceExternalImageFormatInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021234 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021235 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalImageFormatInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021236 return *this;
21237 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060021238 PhysicalDeviceExternalImageFormatInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070021239 {
21240 pNext = pNext_;
21241 return *this;
21242 }
21243
Mark Youngabc2d6e2017-07-07 07:59:56 -060021244 PhysicalDeviceExternalImageFormatInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070021245 {
21246 handleType = handleType_;
21247 return *this;
21248 }
21249
Mark Youngabc2d6e2017-07-07 07:59:56 -060021250 operator const VkPhysicalDeviceExternalImageFormatInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070021251 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021252 return *reinterpret_cast<const VkPhysicalDeviceExternalImageFormatInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070021253 }
21254
Mark Youngabc2d6e2017-07-07 07:59:56 -060021255 bool operator==( PhysicalDeviceExternalImageFormatInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021256 {
21257 return ( sType == rhs.sType )
21258 && ( pNext == rhs.pNext )
21259 && ( handleType == rhs.handleType );
21260 }
21261
Mark Youngabc2d6e2017-07-07 07:59:56 -060021262 bool operator!=( PhysicalDeviceExternalImageFormatInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021263 {
21264 return !operator==( rhs );
21265 }
21266
21267 private:
21268 StructureType sType;
21269
21270 public:
21271 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060021272 ExternalMemoryHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070021273 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060021274 static_assert( sizeof( PhysicalDeviceExternalImageFormatInfoKHR ) == sizeof( VkPhysicalDeviceExternalImageFormatInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070021275
Mark Youngabc2d6e2017-07-07 07:59:56 -060021276 struct PhysicalDeviceExternalBufferInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070021277 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021278 PhysicalDeviceExternalBufferInfoKHR( BufferCreateFlags flags_ = BufferCreateFlags(), BufferUsageFlags usage_ = BufferUsageFlags(), ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd )
21279 : sType( StructureType::ePhysicalDeviceExternalBufferInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070021280 , pNext( nullptr )
21281 , flags( flags_ )
21282 , usage( usage_ )
21283 , handleType( handleType_ )
21284 {
21285 }
21286
Mark Youngabc2d6e2017-07-07 07:59:56 -060021287 PhysicalDeviceExternalBufferInfoKHR( VkPhysicalDeviceExternalBufferInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021288 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021289 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalBufferInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021290 }
21291
Mark Youngabc2d6e2017-07-07 07:59:56 -060021292 PhysicalDeviceExternalBufferInfoKHR& operator=( VkPhysicalDeviceExternalBufferInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021293 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021294 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalBufferInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021295 return *this;
21296 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060021297 PhysicalDeviceExternalBufferInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070021298 {
21299 pNext = pNext_;
21300 return *this;
21301 }
21302
Mark Youngabc2d6e2017-07-07 07:59:56 -060021303 PhysicalDeviceExternalBufferInfoKHR& setFlags( BufferCreateFlags flags_ )
Mark Young0f183a82017-02-28 09:58:04 -070021304 {
21305 flags = flags_;
21306 return *this;
21307 }
21308
Mark Youngabc2d6e2017-07-07 07:59:56 -060021309 PhysicalDeviceExternalBufferInfoKHR& setUsage( BufferUsageFlags usage_ )
Mark Young0f183a82017-02-28 09:58:04 -070021310 {
21311 usage = usage_;
21312 return *this;
21313 }
21314
Mark Youngabc2d6e2017-07-07 07:59:56 -060021315 PhysicalDeviceExternalBufferInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070021316 {
21317 handleType = handleType_;
21318 return *this;
21319 }
21320
Mark Youngabc2d6e2017-07-07 07:59:56 -060021321 operator const VkPhysicalDeviceExternalBufferInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070021322 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021323 return *reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070021324 }
21325
Mark Youngabc2d6e2017-07-07 07:59:56 -060021326 bool operator==( PhysicalDeviceExternalBufferInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021327 {
21328 return ( sType == rhs.sType )
21329 && ( pNext == rhs.pNext )
21330 && ( flags == rhs.flags )
21331 && ( usage == rhs.usage )
21332 && ( handleType == rhs.handleType );
21333 }
21334
Mark Youngabc2d6e2017-07-07 07:59:56 -060021335 bool operator!=( PhysicalDeviceExternalBufferInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021336 {
21337 return !operator==( rhs );
21338 }
21339
21340 private:
21341 StructureType sType;
21342
21343 public:
21344 const void* pNext;
21345 BufferCreateFlags flags;
21346 BufferUsageFlags usage;
Mark Youngabc2d6e2017-07-07 07:59:56 -060021347 ExternalMemoryHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070021348 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060021349 static_assert( sizeof( PhysicalDeviceExternalBufferInfoKHR ) == sizeof( VkPhysicalDeviceExternalBufferInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070021350
Mark Youngabc2d6e2017-07-07 07:59:56 -060021351 struct ExternalMemoryImageCreateInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070021352 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021353 ExternalMemoryImageCreateInfoKHR( ExternalMemoryHandleTypeFlagsKHR handleTypes_ = ExternalMemoryHandleTypeFlagsKHR() )
21354 : sType( StructureType::eExternalMemoryImageCreateInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070021355 , pNext( nullptr )
21356 , handleTypes( handleTypes_ )
21357 {
21358 }
21359
Mark Youngabc2d6e2017-07-07 07:59:56 -060021360 ExternalMemoryImageCreateInfoKHR( VkExternalMemoryImageCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021361 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021362 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021363 }
21364
Mark Youngabc2d6e2017-07-07 07:59:56 -060021365 ExternalMemoryImageCreateInfoKHR& operator=( VkExternalMemoryImageCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021366 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021367 memcpy( this, &rhs, sizeof( ExternalMemoryImageCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021368 return *this;
21369 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060021370 ExternalMemoryImageCreateInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070021371 {
21372 pNext = pNext_;
21373 return *this;
21374 }
21375
Mark Youngabc2d6e2017-07-07 07:59:56 -060021376 ExternalMemoryImageCreateInfoKHR& setHandleTypes( ExternalMemoryHandleTypeFlagsKHR handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070021377 {
21378 handleTypes = handleTypes_;
21379 return *this;
21380 }
21381
Mark Youngabc2d6e2017-07-07 07:59:56 -060021382 operator const VkExternalMemoryImageCreateInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070021383 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021384 return *reinterpret_cast<const VkExternalMemoryImageCreateInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070021385 }
21386
Mark Youngabc2d6e2017-07-07 07:59:56 -060021387 bool operator==( ExternalMemoryImageCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021388 {
21389 return ( sType == rhs.sType )
21390 && ( pNext == rhs.pNext )
21391 && ( handleTypes == rhs.handleTypes );
21392 }
21393
Mark Youngabc2d6e2017-07-07 07:59:56 -060021394 bool operator!=( ExternalMemoryImageCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021395 {
21396 return !operator==( rhs );
21397 }
21398
21399 private:
21400 StructureType sType;
21401
21402 public:
21403 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060021404 ExternalMemoryHandleTypeFlagsKHR handleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070021405 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060021406 static_assert( sizeof( ExternalMemoryImageCreateInfoKHR ) == sizeof( VkExternalMemoryImageCreateInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070021407
Mark Youngabc2d6e2017-07-07 07:59:56 -060021408 struct ExternalMemoryBufferCreateInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070021409 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021410 ExternalMemoryBufferCreateInfoKHR( ExternalMemoryHandleTypeFlagsKHR handleTypes_ = ExternalMemoryHandleTypeFlagsKHR() )
21411 : sType( StructureType::eExternalMemoryBufferCreateInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070021412 , pNext( nullptr )
21413 , handleTypes( handleTypes_ )
21414 {
21415 }
21416
Mark Youngabc2d6e2017-07-07 07:59:56 -060021417 ExternalMemoryBufferCreateInfoKHR( VkExternalMemoryBufferCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021418 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021419 memcpy( this, &rhs, sizeof( ExternalMemoryBufferCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021420 }
21421
Mark Youngabc2d6e2017-07-07 07:59:56 -060021422 ExternalMemoryBufferCreateInfoKHR& operator=( VkExternalMemoryBufferCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021423 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021424 memcpy( this, &rhs, sizeof( ExternalMemoryBufferCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021425 return *this;
21426 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060021427 ExternalMemoryBufferCreateInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070021428 {
21429 pNext = pNext_;
21430 return *this;
21431 }
21432
Mark Youngabc2d6e2017-07-07 07:59:56 -060021433 ExternalMemoryBufferCreateInfoKHR& setHandleTypes( ExternalMemoryHandleTypeFlagsKHR handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070021434 {
21435 handleTypes = handleTypes_;
21436 return *this;
21437 }
21438
Mark Youngabc2d6e2017-07-07 07:59:56 -060021439 operator const VkExternalMemoryBufferCreateInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070021440 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021441 return *reinterpret_cast<const VkExternalMemoryBufferCreateInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070021442 }
21443
Mark Youngabc2d6e2017-07-07 07:59:56 -060021444 bool operator==( ExternalMemoryBufferCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021445 {
21446 return ( sType == rhs.sType )
21447 && ( pNext == rhs.pNext )
21448 && ( handleTypes == rhs.handleTypes );
21449 }
21450
Mark Youngabc2d6e2017-07-07 07:59:56 -060021451 bool operator!=( ExternalMemoryBufferCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021452 {
21453 return !operator==( rhs );
21454 }
21455
21456 private:
21457 StructureType sType;
21458
21459 public:
21460 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060021461 ExternalMemoryHandleTypeFlagsKHR handleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070021462 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060021463 static_assert( sizeof( ExternalMemoryBufferCreateInfoKHR ) == sizeof( VkExternalMemoryBufferCreateInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070021464
Mark Youngabc2d6e2017-07-07 07:59:56 -060021465 struct ExportMemoryAllocateInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070021466 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021467 ExportMemoryAllocateInfoKHR( ExternalMemoryHandleTypeFlagsKHR handleTypes_ = ExternalMemoryHandleTypeFlagsKHR() )
21468 : sType( StructureType::eExportMemoryAllocateInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070021469 , pNext( nullptr )
21470 , handleTypes( handleTypes_ )
21471 {
21472 }
21473
Mark Youngabc2d6e2017-07-07 07:59:56 -060021474 ExportMemoryAllocateInfoKHR( VkExportMemoryAllocateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021475 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021476 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021477 }
21478
Mark Youngabc2d6e2017-07-07 07:59:56 -060021479 ExportMemoryAllocateInfoKHR& operator=( VkExportMemoryAllocateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021480 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021481 memcpy( this, &rhs, sizeof( ExportMemoryAllocateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021482 return *this;
21483 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060021484 ExportMemoryAllocateInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070021485 {
21486 pNext = pNext_;
21487 return *this;
21488 }
21489
Mark Youngabc2d6e2017-07-07 07:59:56 -060021490 ExportMemoryAllocateInfoKHR& setHandleTypes( ExternalMemoryHandleTypeFlagsKHR handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070021491 {
21492 handleTypes = handleTypes_;
21493 return *this;
21494 }
21495
Mark Youngabc2d6e2017-07-07 07:59:56 -060021496 operator const VkExportMemoryAllocateInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070021497 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021498 return *reinterpret_cast<const VkExportMemoryAllocateInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070021499 }
21500
Mark Youngabc2d6e2017-07-07 07:59:56 -060021501 bool operator==( ExportMemoryAllocateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021502 {
21503 return ( sType == rhs.sType )
21504 && ( pNext == rhs.pNext )
21505 && ( handleTypes == rhs.handleTypes );
21506 }
21507
Mark Youngabc2d6e2017-07-07 07:59:56 -060021508 bool operator!=( ExportMemoryAllocateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021509 {
21510 return !operator==( rhs );
21511 }
21512
21513 private:
21514 StructureType sType;
21515
21516 public:
21517 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060021518 ExternalMemoryHandleTypeFlagsKHR handleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070021519 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060021520 static_assert( sizeof( ExportMemoryAllocateInfoKHR ) == sizeof( VkExportMemoryAllocateInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070021521
Mark Youngabc2d6e2017-07-07 07:59:56 -060021522#ifdef VK_USE_PLATFORM_WIN32_KHR
21523 struct ImportMemoryWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070021524 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021525 ImportMemoryWin32HandleInfoKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd, HANDLE handle_ = 0, LPCWSTR name_ = 0 )
21526 : sType( StructureType::eImportMemoryWin32HandleInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070021527 , pNext( nullptr )
21528 , handleType( handleType_ )
21529 , handle( handle_ )
Mark Youngabc2d6e2017-07-07 07:59:56 -060021530 , name( name_ )
Mark Young0f183a82017-02-28 09:58:04 -070021531 {
21532 }
21533
Mark Youngabc2d6e2017-07-07 07:59:56 -060021534 ImportMemoryWin32HandleInfoKHR( VkImportMemoryWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021535 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021536 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021537 }
21538
Mark Youngabc2d6e2017-07-07 07:59:56 -060021539 ImportMemoryWin32HandleInfoKHR& operator=( VkImportMemoryWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021540 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021541 memcpy( this, &rhs, sizeof( ImportMemoryWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021542 return *this;
21543 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060021544 ImportMemoryWin32HandleInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070021545 {
21546 pNext = pNext_;
21547 return *this;
21548 }
21549
Mark Youngabc2d6e2017-07-07 07:59:56 -060021550 ImportMemoryWin32HandleInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070021551 {
21552 handleType = handleType_;
21553 return *this;
21554 }
21555
Mark Youngabc2d6e2017-07-07 07:59:56 -060021556 ImportMemoryWin32HandleInfoKHR& setHandle( HANDLE handle_ )
Mark Young0f183a82017-02-28 09:58:04 -070021557 {
21558 handle = handle_;
21559 return *this;
21560 }
21561
Mark Youngabc2d6e2017-07-07 07:59:56 -060021562 ImportMemoryWin32HandleInfoKHR& setName( LPCWSTR name_ )
Mark Young0f183a82017-02-28 09:58:04 -070021563 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021564 name = name_;
21565 return *this;
Mark Young0f183a82017-02-28 09:58:04 -070021566 }
21567
Mark Youngabc2d6e2017-07-07 07:59:56 -060021568 operator const VkImportMemoryWin32HandleInfoKHR&() const
21569 {
21570 return *reinterpret_cast<const VkImportMemoryWin32HandleInfoKHR*>(this);
21571 }
21572
21573 bool operator==( ImportMemoryWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021574 {
21575 return ( sType == rhs.sType )
21576 && ( pNext == rhs.pNext )
21577 && ( handleType == rhs.handleType )
Mark Youngabc2d6e2017-07-07 07:59:56 -060021578 && ( handle == rhs.handle )
21579 && ( name == rhs.name );
Mark Young0f183a82017-02-28 09:58:04 -070021580 }
21581
Mark Youngabc2d6e2017-07-07 07:59:56 -060021582 bool operator!=( ImportMemoryWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021583 {
21584 return !operator==( rhs );
21585 }
21586
21587 private:
21588 StructureType sType;
21589
21590 public:
21591 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060021592 ExternalMemoryHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070021593 HANDLE handle;
Mark Youngabc2d6e2017-07-07 07:59:56 -060021594 LPCWSTR name;
Mark Young0f183a82017-02-28 09:58:04 -070021595 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060021596 static_assert( sizeof( ImportMemoryWin32HandleInfoKHR ) == sizeof( VkImportMemoryWin32HandleInfoKHR ), "struct and wrapper have different size!" );
21597#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070021598
Mark Youngabc2d6e2017-07-07 07:59:56 -060021599#ifdef VK_USE_PLATFORM_WIN32_KHR
21600 struct MemoryGetWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070021601 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021602 MemoryGetWin32HandleInfoKHR( DeviceMemory memory_ = DeviceMemory(), ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd )
21603 : sType( StructureType::eMemoryGetWin32HandleInfoKHR )
21604 , pNext( nullptr )
21605 , memory( memory_ )
21606 , handleType( handleType_ )
21607 {
21608 }
21609
21610 MemoryGetWin32HandleInfoKHR( VkMemoryGetWin32HandleInfoKHR const & rhs )
21611 {
21612 memcpy( this, &rhs, sizeof( MemoryGetWin32HandleInfoKHR ) );
21613 }
21614
21615 MemoryGetWin32HandleInfoKHR& operator=( VkMemoryGetWin32HandleInfoKHR const & rhs )
21616 {
21617 memcpy( this, &rhs, sizeof( MemoryGetWin32HandleInfoKHR ) );
21618 return *this;
21619 }
21620 MemoryGetWin32HandleInfoKHR& setPNext( const void* pNext_ )
21621 {
21622 pNext = pNext_;
21623 return *this;
21624 }
21625
21626 MemoryGetWin32HandleInfoKHR& setMemory( DeviceMemory memory_ )
21627 {
21628 memory = memory_;
21629 return *this;
21630 }
21631
21632 MemoryGetWin32HandleInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
21633 {
21634 handleType = handleType_;
21635 return *this;
21636 }
21637
21638 operator const VkMemoryGetWin32HandleInfoKHR&() const
21639 {
21640 return *reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR*>(this);
21641 }
21642
21643 bool operator==( MemoryGetWin32HandleInfoKHR const& rhs ) const
21644 {
21645 return ( sType == rhs.sType )
21646 && ( pNext == rhs.pNext )
21647 && ( memory == rhs.memory )
21648 && ( handleType == rhs.handleType );
21649 }
21650
21651 bool operator!=( MemoryGetWin32HandleInfoKHR const& rhs ) const
21652 {
21653 return !operator==( rhs );
21654 }
21655
21656 private:
21657 StructureType sType;
21658
21659 public:
21660 const void* pNext;
21661 DeviceMemory memory;
21662 ExternalMemoryHandleTypeFlagBitsKHR handleType;
21663 };
21664 static_assert( sizeof( MemoryGetWin32HandleInfoKHR ) == sizeof( VkMemoryGetWin32HandleInfoKHR ), "struct and wrapper have different size!" );
21665#endif /*VK_USE_PLATFORM_WIN32_KHR*/
21666
21667 struct ImportMemoryFdInfoKHR
21668 {
21669 ImportMemoryFdInfoKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd, int fd_ = 0 )
21670 : sType( StructureType::eImportMemoryFdInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070021671 , pNext( nullptr )
21672 , handleType( handleType_ )
21673 , fd( fd_ )
21674 {
21675 }
21676
Mark Youngabc2d6e2017-07-07 07:59:56 -060021677 ImportMemoryFdInfoKHR( VkImportMemoryFdInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021678 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021679 memcpy( this, &rhs, sizeof( ImportMemoryFdInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021680 }
21681
Mark Youngabc2d6e2017-07-07 07:59:56 -060021682 ImportMemoryFdInfoKHR& operator=( VkImportMemoryFdInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021683 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021684 memcpy( this, &rhs, sizeof( ImportMemoryFdInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021685 return *this;
21686 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060021687 ImportMemoryFdInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070021688 {
21689 pNext = pNext_;
21690 return *this;
21691 }
21692
Mark Youngabc2d6e2017-07-07 07:59:56 -060021693 ImportMemoryFdInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070021694 {
21695 handleType = handleType_;
21696 return *this;
21697 }
21698
Mark Youngabc2d6e2017-07-07 07:59:56 -060021699 ImportMemoryFdInfoKHR& setFd( int fd_ )
Mark Young0f183a82017-02-28 09:58:04 -070021700 {
21701 fd = fd_;
21702 return *this;
21703 }
21704
Mark Youngabc2d6e2017-07-07 07:59:56 -060021705 operator const VkImportMemoryFdInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070021706 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021707 return *reinterpret_cast<const VkImportMemoryFdInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070021708 }
21709
Mark Youngabc2d6e2017-07-07 07:59:56 -060021710 bool operator==( ImportMemoryFdInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021711 {
21712 return ( sType == rhs.sType )
21713 && ( pNext == rhs.pNext )
21714 && ( handleType == rhs.handleType )
21715 && ( fd == rhs.fd );
21716 }
21717
Mark Youngabc2d6e2017-07-07 07:59:56 -060021718 bool operator!=( ImportMemoryFdInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021719 {
21720 return !operator==( rhs );
21721 }
21722
21723 private:
21724 StructureType sType;
21725
21726 public:
21727 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060021728 ExternalMemoryHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070021729 int fd;
21730 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060021731 static_assert( sizeof( ImportMemoryFdInfoKHR ) == sizeof( VkImportMemoryFdInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070021732
Mark Youngabc2d6e2017-07-07 07:59:56 -060021733 struct MemoryGetFdInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070021734 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021735 MemoryGetFdInfoKHR( DeviceMemory memory_ = DeviceMemory(), ExternalMemoryHandleTypeFlagBitsKHR handleType_ = ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd )
21736 : sType( StructureType::eMemoryGetFdInfoKHR )
21737 , pNext( nullptr )
21738 , memory( memory_ )
21739 , handleType( handleType_ )
21740 {
21741 }
21742
21743 MemoryGetFdInfoKHR( VkMemoryGetFdInfoKHR const & rhs )
21744 {
21745 memcpy( this, &rhs, sizeof( MemoryGetFdInfoKHR ) );
21746 }
21747
21748 MemoryGetFdInfoKHR& operator=( VkMemoryGetFdInfoKHR const & rhs )
21749 {
21750 memcpy( this, &rhs, sizeof( MemoryGetFdInfoKHR ) );
21751 return *this;
21752 }
21753 MemoryGetFdInfoKHR& setPNext( const void* pNext_ )
21754 {
21755 pNext = pNext_;
21756 return *this;
21757 }
21758
21759 MemoryGetFdInfoKHR& setMemory( DeviceMemory memory_ )
21760 {
21761 memory = memory_;
21762 return *this;
21763 }
21764
21765 MemoryGetFdInfoKHR& setHandleType( ExternalMemoryHandleTypeFlagBitsKHR handleType_ )
21766 {
21767 handleType = handleType_;
21768 return *this;
21769 }
21770
21771 operator const VkMemoryGetFdInfoKHR&() const
21772 {
21773 return *reinterpret_cast<const VkMemoryGetFdInfoKHR*>(this);
21774 }
21775
21776 bool operator==( MemoryGetFdInfoKHR const& rhs ) const
21777 {
21778 return ( sType == rhs.sType )
21779 && ( pNext == rhs.pNext )
21780 && ( memory == rhs.memory )
21781 && ( handleType == rhs.handleType );
21782 }
21783
21784 bool operator!=( MemoryGetFdInfoKHR const& rhs ) const
21785 {
21786 return !operator==( rhs );
21787 }
21788
21789 private:
21790 StructureType sType;
21791
21792 public:
21793 const void* pNext;
21794 DeviceMemory memory;
21795 ExternalMemoryHandleTypeFlagBitsKHR handleType;
21796 };
21797 static_assert( sizeof( MemoryGetFdInfoKHR ) == sizeof( VkMemoryGetFdInfoKHR ), "struct and wrapper have different size!" );
21798
21799 enum class ExternalMemoryFeatureFlagBitsKHR
21800 {
21801 eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR,
21802 eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR,
21803 eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR
Mark Young0f183a82017-02-28 09:58:04 -070021804 };
21805
Mark Youngabc2d6e2017-07-07 07:59:56 -060021806 using ExternalMemoryFeatureFlagsKHR = Flags<ExternalMemoryFeatureFlagBitsKHR, VkExternalMemoryFeatureFlagsKHR>;
Mark Young0f183a82017-02-28 09:58:04 -070021807
Mark Youngabc2d6e2017-07-07 07:59:56 -060021808 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsKHR operator|( ExternalMemoryFeatureFlagBitsKHR bit0, ExternalMemoryFeatureFlagBitsKHR bit1 )
Mark Young0f183a82017-02-28 09:58:04 -070021809 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021810 return ExternalMemoryFeatureFlagsKHR( bit0 ) | bit1;
Mark Young0f183a82017-02-28 09:58:04 -070021811 }
21812
Mark Youngabc2d6e2017-07-07 07:59:56 -060021813 VULKAN_HPP_INLINE ExternalMemoryFeatureFlagsKHR operator~( ExternalMemoryFeatureFlagBitsKHR bits )
Mark Young0f183a82017-02-28 09:58:04 -070021814 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021815 return ~( ExternalMemoryFeatureFlagsKHR( bits ) );
Mark Young0f183a82017-02-28 09:58:04 -070021816 }
21817
Mark Youngabc2d6e2017-07-07 07:59:56 -060021818 template <> struct FlagTraits<ExternalMemoryFeatureFlagBitsKHR>
Mark Young0f183a82017-02-28 09:58:04 -070021819 {
21820 enum
21821 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021822 allFlags = VkFlags(ExternalMemoryFeatureFlagBitsKHR::eDedicatedOnly) | VkFlags(ExternalMemoryFeatureFlagBitsKHR::eExportable) | VkFlags(ExternalMemoryFeatureFlagBitsKHR::eImportable)
Mark Young0f183a82017-02-28 09:58:04 -070021823 };
21824 };
21825
Mark Youngabc2d6e2017-07-07 07:59:56 -060021826 struct ExternalMemoryPropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070021827 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021828 operator const VkExternalMemoryPropertiesKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070021829 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021830 return *reinterpret_cast<const VkExternalMemoryPropertiesKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070021831 }
21832
Mark Youngabc2d6e2017-07-07 07:59:56 -060021833 bool operator==( ExternalMemoryPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021834 {
21835 return ( externalMemoryFeatures == rhs.externalMemoryFeatures )
21836 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
21837 && ( compatibleHandleTypes == rhs.compatibleHandleTypes );
21838 }
21839
Mark Youngabc2d6e2017-07-07 07:59:56 -060021840 bool operator!=( ExternalMemoryPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021841 {
21842 return !operator==( rhs );
21843 }
21844
Mark Youngabc2d6e2017-07-07 07:59:56 -060021845 ExternalMemoryFeatureFlagsKHR externalMemoryFeatures;
21846 ExternalMemoryHandleTypeFlagsKHR exportFromImportedHandleTypes;
21847 ExternalMemoryHandleTypeFlagsKHR compatibleHandleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070021848 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060021849 static_assert( sizeof( ExternalMemoryPropertiesKHR ) == sizeof( VkExternalMemoryPropertiesKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070021850
Mark Youngabc2d6e2017-07-07 07:59:56 -060021851 struct ExternalImageFormatPropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070021852 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021853 operator const VkExternalImageFormatPropertiesKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070021854 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021855 return *reinterpret_cast<const VkExternalImageFormatPropertiesKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070021856 }
21857
Mark Youngabc2d6e2017-07-07 07:59:56 -060021858 bool operator==( ExternalImageFormatPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021859 {
21860 return ( sType == rhs.sType )
21861 && ( pNext == rhs.pNext )
21862 && ( externalMemoryProperties == rhs.externalMemoryProperties );
21863 }
21864
Mark Youngabc2d6e2017-07-07 07:59:56 -060021865 bool operator!=( ExternalImageFormatPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021866 {
21867 return !operator==( rhs );
21868 }
21869
21870 private:
21871 StructureType sType;
21872
21873 public:
21874 void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060021875 ExternalMemoryPropertiesKHR externalMemoryProperties;
Mark Young0f183a82017-02-28 09:58:04 -070021876 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060021877 static_assert( sizeof( ExternalImageFormatPropertiesKHR ) == sizeof( VkExternalImageFormatPropertiesKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070021878
Mark Youngabc2d6e2017-07-07 07:59:56 -060021879 struct ExternalBufferPropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070021880 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021881 operator const VkExternalBufferPropertiesKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070021882 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021883 return *reinterpret_cast<const VkExternalBufferPropertiesKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070021884 }
21885
Mark Youngabc2d6e2017-07-07 07:59:56 -060021886 bool operator==( ExternalBufferPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021887 {
21888 return ( sType == rhs.sType )
21889 && ( pNext == rhs.pNext )
21890 && ( externalMemoryProperties == rhs.externalMemoryProperties );
21891 }
21892
Mark Youngabc2d6e2017-07-07 07:59:56 -060021893 bool operator!=( ExternalBufferPropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021894 {
21895 return !operator==( rhs );
21896 }
21897
21898 private:
21899 StructureType sType;
21900
21901 public:
21902 void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060021903 ExternalMemoryPropertiesKHR externalMemoryProperties;
Mark Young0f183a82017-02-28 09:58:04 -070021904 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060021905 static_assert( sizeof( ExternalBufferPropertiesKHR ) == sizeof( VkExternalBufferPropertiesKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070021906
Mark Youngabc2d6e2017-07-07 07:59:56 -060021907 enum class ExternalSemaphoreHandleTypeFlagBitsKHR
Mark Young0f183a82017-02-28 09:58:04 -070021908 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021909 eOpaqueFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
21910 eOpaqueWin32 = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
21911 eOpaqueWin32Kmt = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
21912 eD3D12Fence = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR,
21913 eSyncFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR
Mark Young0f183a82017-02-28 09:58:04 -070021914 };
21915
Mark Youngabc2d6e2017-07-07 07:59:56 -060021916 using ExternalSemaphoreHandleTypeFlagsKHR = Flags<ExternalSemaphoreHandleTypeFlagBitsKHR, VkExternalSemaphoreHandleTypeFlagsKHR>;
Mark Young0f183a82017-02-28 09:58:04 -070021917
Mark Youngabc2d6e2017-07-07 07:59:56 -060021918 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlagsKHR operator|( ExternalSemaphoreHandleTypeFlagBitsKHR bit0, ExternalSemaphoreHandleTypeFlagBitsKHR bit1 )
Mark Young0f183a82017-02-28 09:58:04 -070021919 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021920 return ExternalSemaphoreHandleTypeFlagsKHR( bit0 ) | bit1;
Mark Young0f183a82017-02-28 09:58:04 -070021921 }
21922
Mark Youngabc2d6e2017-07-07 07:59:56 -060021923 VULKAN_HPP_INLINE ExternalSemaphoreHandleTypeFlagsKHR operator~( ExternalSemaphoreHandleTypeFlagBitsKHR bits )
Mark Young0f183a82017-02-28 09:58:04 -070021924 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021925 return ~( ExternalSemaphoreHandleTypeFlagsKHR( bits ) );
Mark Young0f183a82017-02-28 09:58:04 -070021926 }
21927
Mark Youngabc2d6e2017-07-07 07:59:56 -060021928 template <> struct FlagTraits<ExternalSemaphoreHandleTypeFlagBitsKHR>
Mark Young0f183a82017-02-28 09:58:04 -070021929 {
21930 enum
21931 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021932 allFlags = VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eD3D12Fence) | VkFlags(ExternalSemaphoreHandleTypeFlagBitsKHR::eSyncFd)
Mark Young0f183a82017-02-28 09:58:04 -070021933 };
21934 };
21935
Mark Youngabc2d6e2017-07-07 07:59:56 -060021936 struct PhysicalDeviceExternalSemaphoreInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070021937 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021938 PhysicalDeviceExternalSemaphoreInfoKHR( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd )
21939 : sType( StructureType::ePhysicalDeviceExternalSemaphoreInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070021940 , pNext( nullptr )
21941 , handleType( handleType_ )
21942 {
21943 }
21944
Mark Youngabc2d6e2017-07-07 07:59:56 -060021945 PhysicalDeviceExternalSemaphoreInfoKHR( VkPhysicalDeviceExternalSemaphoreInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021946 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021947 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalSemaphoreInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021948 }
21949
Mark Youngabc2d6e2017-07-07 07:59:56 -060021950 PhysicalDeviceExternalSemaphoreInfoKHR& operator=( VkPhysicalDeviceExternalSemaphoreInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070021951 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021952 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalSemaphoreInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070021953 return *this;
21954 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060021955 PhysicalDeviceExternalSemaphoreInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070021956 {
21957 pNext = pNext_;
21958 return *this;
21959 }
21960
Mark Youngabc2d6e2017-07-07 07:59:56 -060021961 PhysicalDeviceExternalSemaphoreInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070021962 {
21963 handleType = handleType_;
21964 return *this;
21965 }
21966
Mark Youngabc2d6e2017-07-07 07:59:56 -060021967 operator const VkPhysicalDeviceExternalSemaphoreInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070021968 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021969 return *reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070021970 }
21971
Mark Youngabc2d6e2017-07-07 07:59:56 -060021972 bool operator==( PhysicalDeviceExternalSemaphoreInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021973 {
21974 return ( sType == rhs.sType )
21975 && ( pNext == rhs.pNext )
21976 && ( handleType == rhs.handleType );
21977 }
21978
Mark Youngabc2d6e2017-07-07 07:59:56 -060021979 bool operator!=( PhysicalDeviceExternalSemaphoreInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070021980 {
21981 return !operator==( rhs );
21982 }
21983
21984 private:
21985 StructureType sType;
21986
21987 public:
21988 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060021989 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070021990 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060021991 static_assert( sizeof( PhysicalDeviceExternalSemaphoreInfoKHR ) == sizeof( VkPhysicalDeviceExternalSemaphoreInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070021992
Mark Youngabc2d6e2017-07-07 07:59:56 -060021993 struct ExportSemaphoreCreateInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070021994 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060021995 ExportSemaphoreCreateInfoKHR( ExternalSemaphoreHandleTypeFlagsKHR handleTypes_ = ExternalSemaphoreHandleTypeFlagsKHR() )
21996 : sType( StructureType::eExportSemaphoreCreateInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070021997 , pNext( nullptr )
21998 , handleTypes( handleTypes_ )
21999 {
22000 }
22001
Mark Youngabc2d6e2017-07-07 07:59:56 -060022002 ExportSemaphoreCreateInfoKHR( VkExportSemaphoreCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022003 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022004 memcpy( this, &rhs, sizeof( ExportSemaphoreCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022005 }
22006
Mark Youngabc2d6e2017-07-07 07:59:56 -060022007 ExportSemaphoreCreateInfoKHR& operator=( VkExportSemaphoreCreateInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022008 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022009 memcpy( this, &rhs, sizeof( ExportSemaphoreCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022010 return *this;
22011 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022012 ExportSemaphoreCreateInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022013 {
22014 pNext = pNext_;
22015 return *this;
22016 }
22017
Mark Youngabc2d6e2017-07-07 07:59:56 -060022018 ExportSemaphoreCreateInfoKHR& setHandleTypes( ExternalSemaphoreHandleTypeFlagsKHR handleTypes_ )
Mark Young0f183a82017-02-28 09:58:04 -070022019 {
22020 handleTypes = handleTypes_;
22021 return *this;
22022 }
22023
Mark Youngabc2d6e2017-07-07 07:59:56 -060022024 operator const VkExportSemaphoreCreateInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022025 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022026 return *reinterpret_cast<const VkExportSemaphoreCreateInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022027 }
22028
Mark Youngabc2d6e2017-07-07 07:59:56 -060022029 bool operator==( ExportSemaphoreCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022030 {
22031 return ( sType == rhs.sType )
22032 && ( pNext == rhs.pNext )
22033 && ( handleTypes == rhs.handleTypes );
22034 }
22035
Mark Youngabc2d6e2017-07-07 07:59:56 -060022036 bool operator!=( ExportSemaphoreCreateInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022037 {
22038 return !operator==( rhs );
22039 }
22040
22041 private:
22042 StructureType sType;
22043
22044 public:
22045 const void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022046 ExternalSemaphoreHandleTypeFlagsKHR handleTypes;
Mark Young0f183a82017-02-28 09:58:04 -070022047 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022048 static_assert( sizeof( ExportSemaphoreCreateInfoKHR ) == sizeof( VkExportSemaphoreCreateInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022049
Mark Youngabc2d6e2017-07-07 07:59:56 -060022050#ifdef VK_USE_PLATFORM_WIN32_KHR
22051 struct SemaphoreGetWin32HandleInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022052 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022053 SemaphoreGetWin32HandleInfoKHR( Semaphore semaphore_ = Semaphore(), ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd )
22054 : sType( StructureType::eSemaphoreGetWin32HandleInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022055 , pNext( nullptr )
22056 , semaphore( semaphore_ )
22057 , handleType( handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022058 {
22059 }
22060
Mark Youngabc2d6e2017-07-07 07:59:56 -060022061 SemaphoreGetWin32HandleInfoKHR( VkSemaphoreGetWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022062 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022063 memcpy( this, &rhs, sizeof( SemaphoreGetWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022064 }
22065
Mark Youngabc2d6e2017-07-07 07:59:56 -060022066 SemaphoreGetWin32HandleInfoKHR& operator=( VkSemaphoreGetWin32HandleInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022067 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022068 memcpy( this, &rhs, sizeof( SemaphoreGetWin32HandleInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022069 return *this;
22070 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022071 SemaphoreGetWin32HandleInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022072 {
22073 pNext = pNext_;
22074 return *this;
22075 }
22076
Mark Youngabc2d6e2017-07-07 07:59:56 -060022077 SemaphoreGetWin32HandleInfoKHR& setSemaphore( Semaphore semaphore_ )
Mark Young0f183a82017-02-28 09:58:04 -070022078 {
22079 semaphore = semaphore_;
22080 return *this;
22081 }
22082
Mark Youngabc2d6e2017-07-07 07:59:56 -060022083 SemaphoreGetWin32HandleInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022084 {
22085 handleType = handleType_;
22086 return *this;
22087 }
22088
Mark Youngabc2d6e2017-07-07 07:59:56 -060022089 operator const VkSemaphoreGetWin32HandleInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022090 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022091 return *reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022092 }
22093
Mark Youngabc2d6e2017-07-07 07:59:56 -060022094 bool operator==( SemaphoreGetWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022095 {
22096 return ( sType == rhs.sType )
22097 && ( pNext == rhs.pNext )
22098 && ( semaphore == rhs.semaphore )
Mark Youngabc2d6e2017-07-07 07:59:56 -060022099 && ( handleType == rhs.handleType );
Mark Young0f183a82017-02-28 09:58:04 -070022100 }
22101
Mark Youngabc2d6e2017-07-07 07:59:56 -060022102 bool operator!=( SemaphoreGetWin32HandleInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022103 {
22104 return !operator==( rhs );
22105 }
22106
22107 private:
22108 StructureType sType;
22109
22110 public:
22111 const void* pNext;
22112 Semaphore semaphore;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022113 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022114 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022115 static_assert( sizeof( SemaphoreGetWin32HandleInfoKHR ) == sizeof( VkSemaphoreGetWin32HandleInfoKHR ), "struct and wrapper have different size!" );
22116#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070022117
Mark Youngabc2d6e2017-07-07 07:59:56 -060022118 struct SemaphoreGetFdInfoKHR
Mark Young0f183a82017-02-28 09:58:04 -070022119 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022120 SemaphoreGetFdInfoKHR( Semaphore semaphore_ = Semaphore(), ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd )
22121 : sType( StructureType::eSemaphoreGetFdInfoKHR )
Mark Young0f183a82017-02-28 09:58:04 -070022122 , pNext( nullptr )
22123 , semaphore( semaphore_ )
22124 , handleType( handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022125 {
22126 }
22127
Mark Youngabc2d6e2017-07-07 07:59:56 -060022128 SemaphoreGetFdInfoKHR( VkSemaphoreGetFdInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022129 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022130 memcpy( this, &rhs, sizeof( SemaphoreGetFdInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022131 }
22132
Mark Youngabc2d6e2017-07-07 07:59:56 -060022133 SemaphoreGetFdInfoKHR& operator=( VkSemaphoreGetFdInfoKHR const & rhs )
Mark Young0f183a82017-02-28 09:58:04 -070022134 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022135 memcpy( this, &rhs, sizeof( SemaphoreGetFdInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070022136 return *this;
22137 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060022138 SemaphoreGetFdInfoKHR& setPNext( const void* pNext_ )
Mark Young0f183a82017-02-28 09:58:04 -070022139 {
22140 pNext = pNext_;
22141 return *this;
22142 }
22143
Mark Youngabc2d6e2017-07-07 07:59:56 -060022144 SemaphoreGetFdInfoKHR& setSemaphore( Semaphore semaphore_ )
Mark Young0f183a82017-02-28 09:58:04 -070022145 {
22146 semaphore = semaphore_;
22147 return *this;
22148 }
22149
Mark Youngabc2d6e2017-07-07 07:59:56 -060022150 SemaphoreGetFdInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
Mark Young0f183a82017-02-28 09:58:04 -070022151 {
22152 handleType = handleType_;
22153 return *this;
22154 }
22155
Mark Youngabc2d6e2017-07-07 07:59:56 -060022156 operator const VkSemaphoreGetFdInfoKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022157 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022158 return *reinterpret_cast<const VkSemaphoreGetFdInfoKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022159 }
22160
Mark Youngabc2d6e2017-07-07 07:59:56 -060022161 bool operator==( SemaphoreGetFdInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022162 {
22163 return ( sType == rhs.sType )
22164 && ( pNext == rhs.pNext )
22165 && ( semaphore == rhs.semaphore )
Mark Youngabc2d6e2017-07-07 07:59:56 -060022166 && ( handleType == rhs.handleType );
Mark Young0f183a82017-02-28 09:58:04 -070022167 }
22168
Mark Youngabc2d6e2017-07-07 07:59:56 -060022169 bool operator!=( SemaphoreGetFdInfoKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022170 {
22171 return !operator==( rhs );
22172 }
22173
22174 private:
22175 StructureType sType;
22176
22177 public:
22178 const void* pNext;
22179 Semaphore semaphore;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022180 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
Mark Young0f183a82017-02-28 09:58:04 -070022181 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022182 static_assert( sizeof( SemaphoreGetFdInfoKHR ) == sizeof( VkSemaphoreGetFdInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022183
Mark Youngabc2d6e2017-07-07 07:59:56 -060022184 enum class ExternalSemaphoreFeatureFlagBitsKHR
Mark Young0f183a82017-02-28 09:58:04 -070022185 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022186 eExportable = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR,
22187 eImportable = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR
Mark Young0f183a82017-02-28 09:58:04 -070022188 };
22189
Mark Youngabc2d6e2017-07-07 07:59:56 -060022190 using ExternalSemaphoreFeatureFlagsKHR = Flags<ExternalSemaphoreFeatureFlagBitsKHR, VkExternalSemaphoreFeatureFlagsKHR>;
Mark Young0f183a82017-02-28 09:58:04 -070022191
Mark Youngabc2d6e2017-07-07 07:59:56 -060022192 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlagsKHR operator|( ExternalSemaphoreFeatureFlagBitsKHR bit0, ExternalSemaphoreFeatureFlagBitsKHR bit1 )
Mark Young0f183a82017-02-28 09:58:04 -070022193 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022194 return ExternalSemaphoreFeatureFlagsKHR( bit0 ) | bit1;
Mark Young0f183a82017-02-28 09:58:04 -070022195 }
22196
Mark Youngabc2d6e2017-07-07 07:59:56 -060022197 VULKAN_HPP_INLINE ExternalSemaphoreFeatureFlagsKHR operator~( ExternalSemaphoreFeatureFlagBitsKHR bits )
Mark Young0f183a82017-02-28 09:58:04 -070022198 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022199 return ~( ExternalSemaphoreFeatureFlagsKHR( bits ) );
Mark Young0f183a82017-02-28 09:58:04 -070022200 }
22201
Mark Youngabc2d6e2017-07-07 07:59:56 -060022202 template <> struct FlagTraits<ExternalSemaphoreFeatureFlagBitsKHR>
Mark Young0f183a82017-02-28 09:58:04 -070022203 {
22204 enum
22205 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022206 allFlags = VkFlags(ExternalSemaphoreFeatureFlagBitsKHR::eExportable) | VkFlags(ExternalSemaphoreFeatureFlagBitsKHR::eImportable)
Mark Young0f183a82017-02-28 09:58:04 -070022207 };
22208 };
22209
Mark Youngabc2d6e2017-07-07 07:59:56 -060022210 struct ExternalSemaphorePropertiesKHR
Mark Young0f183a82017-02-28 09:58:04 -070022211 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022212 operator const VkExternalSemaphorePropertiesKHR&() const
Mark Young0f183a82017-02-28 09:58:04 -070022213 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060022214 return *reinterpret_cast<const VkExternalSemaphorePropertiesKHR*>(this);
Mark Young0f183a82017-02-28 09:58:04 -070022215 }
22216
Mark Youngabc2d6e2017-07-07 07:59:56 -060022217 bool operator==( ExternalSemaphorePropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022218 {
22219 return ( sType == rhs.sType )
22220 && ( pNext == rhs.pNext )
22221 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
22222 && ( compatibleHandleTypes == rhs.compatibleHandleTypes )
22223 && ( externalSemaphoreFeatures == rhs.externalSemaphoreFeatures );
22224 }
22225
Mark Youngabc2d6e2017-07-07 07:59:56 -060022226 bool operator!=( ExternalSemaphorePropertiesKHR const& rhs ) const
Mark Young0f183a82017-02-28 09:58:04 -070022227 {
22228 return !operator==( rhs );
22229 }
22230
22231 private:
22232 StructureType sType;
22233
22234 public:
22235 void* pNext;
Mark Youngabc2d6e2017-07-07 07:59:56 -060022236 ExternalSemaphoreHandleTypeFlagsKHR exportFromImportedHandleTypes;
22237 ExternalSemaphoreHandleTypeFlagsKHR compatibleHandleTypes;
22238 ExternalSemaphoreFeatureFlagsKHR externalSemaphoreFeatures;
Mark Young0f183a82017-02-28 09:58:04 -070022239 };
Mark Youngabc2d6e2017-07-07 07:59:56 -060022240 static_assert( sizeof( ExternalSemaphorePropertiesKHR ) == sizeof( VkExternalSemaphorePropertiesKHR ), "struct and wrapper have different size!" );
22241
22242 enum class SemaphoreImportFlagBitsKHR
22243 {
22244 eTemporary = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR
22245 };
22246
22247 using SemaphoreImportFlagsKHR = Flags<SemaphoreImportFlagBitsKHR, VkSemaphoreImportFlagsKHR>;
22248
22249 VULKAN_HPP_INLINE SemaphoreImportFlagsKHR operator|( SemaphoreImportFlagBitsKHR bit0, SemaphoreImportFlagBitsKHR bit1 )
22250 {
22251 return SemaphoreImportFlagsKHR( bit0 ) | bit1;
22252 }
22253
22254 VULKAN_HPP_INLINE SemaphoreImportFlagsKHR operator~( SemaphoreImportFlagBitsKHR bits )
22255 {
22256 return ~( SemaphoreImportFlagsKHR( bits ) );
22257 }
22258
22259 template <> struct FlagTraits<SemaphoreImportFlagBitsKHR>
22260 {
22261 enum
22262 {
22263 allFlags = VkFlags(SemaphoreImportFlagBitsKHR::eTemporary)
22264 };
22265 };
22266
22267#ifdef VK_USE_PLATFORM_WIN32_KHR
22268 struct ImportSemaphoreWin32HandleInfoKHR
22269 {
22270 ImportSemaphoreWin32HandleInfoKHR( Semaphore semaphore_ = Semaphore(), SemaphoreImportFlagsKHR flags_ = SemaphoreImportFlagsKHR(), ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd, HANDLE handle_ = 0, LPCWSTR name_ = 0 )
22271 : sType( StructureType::eImportSemaphoreWin32HandleInfoKHR )
22272 , pNext( nullptr )
22273 , semaphore( semaphore_ )
22274 , flags( flags_ )
22275 , handleType( handleType_ )
22276 , handle( handle_ )
22277 , name( name_ )
22278 {
22279 }
22280
22281 ImportSemaphoreWin32HandleInfoKHR( VkImportSemaphoreWin32HandleInfoKHR const & rhs )
22282 {
22283 memcpy( this, &rhs, sizeof( ImportSemaphoreWin32HandleInfoKHR ) );
22284 }
22285
22286 ImportSemaphoreWin32HandleInfoKHR& operator=( VkImportSemaphoreWin32HandleInfoKHR const & rhs )
22287 {
22288 memcpy( this, &rhs, sizeof( ImportSemaphoreWin32HandleInfoKHR ) );
22289 return *this;
22290 }
22291 ImportSemaphoreWin32HandleInfoKHR& setPNext( const void* pNext_ )
22292 {
22293 pNext = pNext_;
22294 return *this;
22295 }
22296
22297 ImportSemaphoreWin32HandleInfoKHR& setSemaphore( Semaphore semaphore_ )
22298 {
22299 semaphore = semaphore_;
22300 return *this;
22301 }
22302
22303 ImportSemaphoreWin32HandleInfoKHR& setFlags( SemaphoreImportFlagsKHR flags_ )
22304 {
22305 flags = flags_;
22306 return *this;
22307 }
22308
22309 ImportSemaphoreWin32HandleInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
22310 {
22311 handleType = handleType_;
22312 return *this;
22313 }
22314
22315 ImportSemaphoreWin32HandleInfoKHR& setHandle( HANDLE handle_ )
22316 {
22317 handle = handle_;
22318 return *this;
22319 }
22320
22321 ImportSemaphoreWin32HandleInfoKHR& setName( LPCWSTR name_ )
22322 {
22323 name = name_;
22324 return *this;
22325 }
22326
22327 operator const VkImportSemaphoreWin32HandleInfoKHR&() const
22328 {
22329 return *reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR*>(this);
22330 }
22331
22332 bool operator==( ImportSemaphoreWin32HandleInfoKHR const& rhs ) const
22333 {
22334 return ( sType == rhs.sType )
22335 && ( pNext == rhs.pNext )
22336 && ( semaphore == rhs.semaphore )
22337 && ( flags == rhs.flags )
22338 && ( handleType == rhs.handleType )
22339 && ( handle == rhs.handle )
22340 && ( name == rhs.name );
22341 }
22342
22343 bool operator!=( ImportSemaphoreWin32HandleInfoKHR const& rhs ) const
22344 {
22345 return !operator==( rhs );
22346 }
22347
22348 private:
22349 StructureType sType;
22350
22351 public:
22352 const void* pNext;
22353 Semaphore semaphore;
22354 SemaphoreImportFlagsKHR flags;
22355 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
22356 HANDLE handle;
22357 LPCWSTR name;
22358 };
22359 static_assert( sizeof( ImportSemaphoreWin32HandleInfoKHR ) == sizeof( VkImportSemaphoreWin32HandleInfoKHR ), "struct and wrapper have different size!" );
22360#endif /*VK_USE_PLATFORM_WIN32_KHR*/
22361
22362 struct ImportSemaphoreFdInfoKHR
22363 {
22364 ImportSemaphoreFdInfoKHR( Semaphore semaphore_ = Semaphore(), SemaphoreImportFlagsKHR flags_ = SemaphoreImportFlagsKHR(), ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ = ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd, int fd_ = 0 )
22365 : sType( StructureType::eImportSemaphoreFdInfoKHR )
22366 , pNext( nullptr )
22367 , semaphore( semaphore_ )
22368 , flags( flags_ )
22369 , handleType( handleType_ )
22370 , fd( fd_ )
22371 {
22372 }
22373
22374 ImportSemaphoreFdInfoKHR( VkImportSemaphoreFdInfoKHR const & rhs )
22375 {
22376 memcpy( this, &rhs, sizeof( ImportSemaphoreFdInfoKHR ) );
22377 }
22378
22379 ImportSemaphoreFdInfoKHR& operator=( VkImportSemaphoreFdInfoKHR const & rhs )
22380 {
22381 memcpy( this, &rhs, sizeof( ImportSemaphoreFdInfoKHR ) );
22382 return *this;
22383 }
22384 ImportSemaphoreFdInfoKHR& setPNext( const void* pNext_ )
22385 {
22386 pNext = pNext_;
22387 return *this;
22388 }
22389
22390 ImportSemaphoreFdInfoKHR& setSemaphore( Semaphore semaphore_ )
22391 {
22392 semaphore = semaphore_;
22393 return *this;
22394 }
22395
22396 ImportSemaphoreFdInfoKHR& setFlags( SemaphoreImportFlagsKHR flags_ )
22397 {
22398 flags = flags_;
22399 return *this;
22400 }
22401
22402 ImportSemaphoreFdInfoKHR& setHandleType( ExternalSemaphoreHandleTypeFlagBitsKHR handleType_ )
22403 {
22404 handleType = handleType_;
22405 return *this;
22406 }
22407
22408 ImportSemaphoreFdInfoKHR& setFd( int fd_ )
22409 {
22410 fd = fd_;
22411 return *this;
22412 }
22413
22414 operator const VkImportSemaphoreFdInfoKHR&() const
22415 {
22416 return *reinterpret_cast<const VkImportSemaphoreFdInfoKHR*>(this);
22417 }
22418
22419 bool operator==( ImportSemaphoreFdInfoKHR const& rhs ) const
22420 {
22421 return ( sType == rhs.sType )
22422 && ( pNext == rhs.pNext )
22423 && ( semaphore == rhs.semaphore )
22424 && ( flags == rhs.flags )
22425 && ( handleType == rhs.handleType )
22426 && ( fd == rhs.fd );
22427 }
22428
22429 bool operator!=( ImportSemaphoreFdInfoKHR const& rhs ) const
22430 {
22431 return !operator==( rhs );
22432 }
22433
22434 private:
22435 StructureType sType;
22436
22437 public:
22438 const void* pNext;
22439 Semaphore semaphore;
22440 SemaphoreImportFlagsKHR flags;
22441 ExternalSemaphoreHandleTypeFlagBitsKHR handleType;
22442 int fd;
22443 };
22444 static_assert( sizeof( ImportSemaphoreFdInfoKHR ) == sizeof( VkImportSemaphoreFdInfoKHR ), "struct and wrapper have different size!" );
22445
22446 enum class ExternalFenceHandleTypeFlagBitsKHR
22447 {
22448 eOpaqueFd = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR,
22449 eOpaqueWin32 = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR,
22450 eOpaqueWin32Kmt = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR,
22451 eSyncFd = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR
22452 };
22453
22454 using ExternalFenceHandleTypeFlagsKHR = Flags<ExternalFenceHandleTypeFlagBitsKHR, VkExternalFenceHandleTypeFlagsKHR>;
22455
22456 VULKAN_HPP_INLINE ExternalFenceHandleTypeFlagsKHR operator|( ExternalFenceHandleTypeFlagBitsKHR bit0, ExternalFenceHandleTypeFlagBitsKHR bit1 )
22457 {
22458 return ExternalFenceHandleTypeFlagsKHR( bit0 ) | bit1;
22459 }
22460
22461 VULKAN_HPP_INLINE ExternalFenceHandleTypeFlagsKHR operator~( ExternalFenceHandleTypeFlagBitsKHR bits )
22462 {
22463 return ~( ExternalFenceHandleTypeFlagsKHR( bits ) );
22464 }
22465
22466 template <> struct FlagTraits<ExternalFenceHandleTypeFlagBitsKHR>
22467 {
22468 enum
22469 {
22470 allFlags = VkFlags(ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd) | VkFlags(ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32) | VkFlags(ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) | VkFlags(ExternalFenceHandleTypeFlagBitsKHR::eSyncFd)
22471 };
22472 };
22473
22474 struct PhysicalDeviceExternalFenceInfoKHR
22475 {
22476 PhysicalDeviceExternalFenceInfoKHR( ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd )
22477 : sType( StructureType::ePhysicalDeviceExternalFenceInfoKHR )
22478 , pNext( nullptr )
22479 , handleType( handleType_ )
22480 {
22481 }
22482
22483 PhysicalDeviceExternalFenceInfoKHR( VkPhysicalDeviceExternalFenceInfoKHR const & rhs )
22484 {
22485 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalFenceInfoKHR ) );
22486 }
22487
22488 PhysicalDeviceExternalFenceInfoKHR& operator=( VkPhysicalDeviceExternalFenceInfoKHR const & rhs )
22489 {
22490 memcpy( this, &rhs, sizeof( PhysicalDeviceExternalFenceInfoKHR ) );
22491 return *this;
22492 }
22493 PhysicalDeviceExternalFenceInfoKHR& setPNext( const void* pNext_ )
22494 {
22495 pNext = pNext_;
22496 return *this;
22497 }
22498
22499 PhysicalDeviceExternalFenceInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
22500 {
22501 handleType = handleType_;
22502 return *this;
22503 }
22504
22505 operator const VkPhysicalDeviceExternalFenceInfoKHR&() const
22506 {
22507 return *reinterpret_cast<const VkPhysicalDeviceExternalFenceInfoKHR*>(this);
22508 }
22509
22510 bool operator==( PhysicalDeviceExternalFenceInfoKHR const& rhs ) const
22511 {
22512 return ( sType == rhs.sType )
22513 && ( pNext == rhs.pNext )
22514 && ( handleType == rhs.handleType );
22515 }
22516
22517 bool operator!=( PhysicalDeviceExternalFenceInfoKHR const& rhs ) const
22518 {
22519 return !operator==( rhs );
22520 }
22521
22522 private:
22523 StructureType sType;
22524
22525 public:
22526 const void* pNext;
22527 ExternalFenceHandleTypeFlagBitsKHR handleType;
22528 };
22529 static_assert( sizeof( PhysicalDeviceExternalFenceInfoKHR ) == sizeof( VkPhysicalDeviceExternalFenceInfoKHR ), "struct and wrapper have different size!" );
22530
22531 struct ExportFenceCreateInfoKHR
22532 {
22533 ExportFenceCreateInfoKHR( ExternalFenceHandleTypeFlagsKHR handleTypes_ = ExternalFenceHandleTypeFlagsKHR() )
22534 : sType( StructureType::eExportFenceCreateInfoKHR )
22535 , pNext( nullptr )
22536 , handleTypes( handleTypes_ )
22537 {
22538 }
22539
22540 ExportFenceCreateInfoKHR( VkExportFenceCreateInfoKHR const & rhs )
22541 {
22542 memcpy( this, &rhs, sizeof( ExportFenceCreateInfoKHR ) );
22543 }
22544
22545 ExportFenceCreateInfoKHR& operator=( VkExportFenceCreateInfoKHR const & rhs )
22546 {
22547 memcpy( this, &rhs, sizeof( ExportFenceCreateInfoKHR ) );
22548 return *this;
22549 }
22550 ExportFenceCreateInfoKHR& setPNext( const void* pNext_ )
22551 {
22552 pNext = pNext_;
22553 return *this;
22554 }
22555
22556 ExportFenceCreateInfoKHR& setHandleTypes( ExternalFenceHandleTypeFlagsKHR handleTypes_ )
22557 {
22558 handleTypes = handleTypes_;
22559 return *this;
22560 }
22561
22562 operator const VkExportFenceCreateInfoKHR&() const
22563 {
22564 return *reinterpret_cast<const VkExportFenceCreateInfoKHR*>(this);
22565 }
22566
22567 bool operator==( ExportFenceCreateInfoKHR const& rhs ) const
22568 {
22569 return ( sType == rhs.sType )
22570 && ( pNext == rhs.pNext )
22571 && ( handleTypes == rhs.handleTypes );
22572 }
22573
22574 bool operator!=( ExportFenceCreateInfoKHR const& rhs ) const
22575 {
22576 return !operator==( rhs );
22577 }
22578
22579 private:
22580 StructureType sType;
22581
22582 public:
22583 const void* pNext;
22584 ExternalFenceHandleTypeFlagsKHR handleTypes;
22585 };
22586 static_assert( sizeof( ExportFenceCreateInfoKHR ) == sizeof( VkExportFenceCreateInfoKHR ), "struct and wrapper have different size!" );
22587
22588#ifdef VK_USE_PLATFORM_WIN32_KHR
22589 struct FenceGetWin32HandleInfoKHR
22590 {
22591 FenceGetWin32HandleInfoKHR( Fence fence_ = Fence(), ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd )
22592 : sType( StructureType::eFenceGetWin32HandleInfoKHR )
22593 , pNext( nullptr )
22594 , fence( fence_ )
22595 , handleType( handleType_ )
22596 {
22597 }
22598
22599 FenceGetWin32HandleInfoKHR( VkFenceGetWin32HandleInfoKHR const & rhs )
22600 {
22601 memcpy( this, &rhs, sizeof( FenceGetWin32HandleInfoKHR ) );
22602 }
22603
22604 FenceGetWin32HandleInfoKHR& operator=( VkFenceGetWin32HandleInfoKHR const & rhs )
22605 {
22606 memcpy( this, &rhs, sizeof( FenceGetWin32HandleInfoKHR ) );
22607 return *this;
22608 }
22609 FenceGetWin32HandleInfoKHR& setPNext( const void* pNext_ )
22610 {
22611 pNext = pNext_;
22612 return *this;
22613 }
22614
22615 FenceGetWin32HandleInfoKHR& setFence( Fence fence_ )
22616 {
22617 fence = fence_;
22618 return *this;
22619 }
22620
22621 FenceGetWin32HandleInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
22622 {
22623 handleType = handleType_;
22624 return *this;
22625 }
22626
22627 operator const VkFenceGetWin32HandleInfoKHR&() const
22628 {
22629 return *reinterpret_cast<const VkFenceGetWin32HandleInfoKHR*>(this);
22630 }
22631
22632 bool operator==( FenceGetWin32HandleInfoKHR const& rhs ) const
22633 {
22634 return ( sType == rhs.sType )
22635 && ( pNext == rhs.pNext )
22636 && ( fence == rhs.fence )
22637 && ( handleType == rhs.handleType );
22638 }
22639
22640 bool operator!=( FenceGetWin32HandleInfoKHR const& rhs ) const
22641 {
22642 return !operator==( rhs );
22643 }
22644
22645 private:
22646 StructureType sType;
22647
22648 public:
22649 const void* pNext;
22650 Fence fence;
22651 ExternalFenceHandleTypeFlagBitsKHR handleType;
22652 };
22653 static_assert( sizeof( FenceGetWin32HandleInfoKHR ) == sizeof( VkFenceGetWin32HandleInfoKHR ), "struct and wrapper have different size!" );
22654#endif /*VK_USE_PLATFORM_WIN32_KHR*/
22655
22656 struct FenceGetFdInfoKHR
22657 {
22658 FenceGetFdInfoKHR( Fence fence_ = Fence(), ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd )
22659 : sType( StructureType::eFenceGetFdInfoKHR )
22660 , pNext( nullptr )
22661 , fence( fence_ )
22662 , handleType( handleType_ )
22663 {
22664 }
22665
22666 FenceGetFdInfoKHR( VkFenceGetFdInfoKHR const & rhs )
22667 {
22668 memcpy( this, &rhs, sizeof( FenceGetFdInfoKHR ) );
22669 }
22670
22671 FenceGetFdInfoKHR& operator=( VkFenceGetFdInfoKHR const & rhs )
22672 {
22673 memcpy( this, &rhs, sizeof( FenceGetFdInfoKHR ) );
22674 return *this;
22675 }
22676 FenceGetFdInfoKHR& setPNext( const void* pNext_ )
22677 {
22678 pNext = pNext_;
22679 return *this;
22680 }
22681
22682 FenceGetFdInfoKHR& setFence( Fence fence_ )
22683 {
22684 fence = fence_;
22685 return *this;
22686 }
22687
22688 FenceGetFdInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
22689 {
22690 handleType = handleType_;
22691 return *this;
22692 }
22693
22694 operator const VkFenceGetFdInfoKHR&() const
22695 {
22696 return *reinterpret_cast<const VkFenceGetFdInfoKHR*>(this);
22697 }
22698
22699 bool operator==( FenceGetFdInfoKHR const& rhs ) const
22700 {
22701 return ( sType == rhs.sType )
22702 && ( pNext == rhs.pNext )
22703 && ( fence == rhs.fence )
22704 && ( handleType == rhs.handleType );
22705 }
22706
22707 bool operator!=( FenceGetFdInfoKHR const& rhs ) const
22708 {
22709 return !operator==( rhs );
22710 }
22711
22712 private:
22713 StructureType sType;
22714
22715 public:
22716 const void* pNext;
22717 Fence fence;
22718 ExternalFenceHandleTypeFlagBitsKHR handleType;
22719 };
22720 static_assert( sizeof( FenceGetFdInfoKHR ) == sizeof( VkFenceGetFdInfoKHR ), "struct and wrapper have different size!" );
22721
22722 enum class ExternalFenceFeatureFlagBitsKHR
22723 {
22724 eExportable = VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR,
22725 eImportable = VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR
22726 };
22727
22728 using ExternalFenceFeatureFlagsKHR = Flags<ExternalFenceFeatureFlagBitsKHR, VkExternalFenceFeatureFlagsKHR>;
22729
22730 VULKAN_HPP_INLINE ExternalFenceFeatureFlagsKHR operator|( ExternalFenceFeatureFlagBitsKHR bit0, ExternalFenceFeatureFlagBitsKHR bit1 )
22731 {
22732 return ExternalFenceFeatureFlagsKHR( bit0 ) | bit1;
22733 }
22734
22735 VULKAN_HPP_INLINE ExternalFenceFeatureFlagsKHR operator~( ExternalFenceFeatureFlagBitsKHR bits )
22736 {
22737 return ~( ExternalFenceFeatureFlagsKHR( bits ) );
22738 }
22739
22740 template <> struct FlagTraits<ExternalFenceFeatureFlagBitsKHR>
22741 {
22742 enum
22743 {
22744 allFlags = VkFlags(ExternalFenceFeatureFlagBitsKHR::eExportable) | VkFlags(ExternalFenceFeatureFlagBitsKHR::eImportable)
22745 };
22746 };
22747
22748 struct ExternalFencePropertiesKHR
22749 {
22750 operator const VkExternalFencePropertiesKHR&() const
22751 {
22752 return *reinterpret_cast<const VkExternalFencePropertiesKHR*>(this);
22753 }
22754
22755 bool operator==( ExternalFencePropertiesKHR const& rhs ) const
22756 {
22757 return ( sType == rhs.sType )
22758 && ( pNext == rhs.pNext )
22759 && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes )
22760 && ( compatibleHandleTypes == rhs.compatibleHandleTypes )
22761 && ( externalFenceFeatures == rhs.externalFenceFeatures );
22762 }
22763
22764 bool operator!=( ExternalFencePropertiesKHR const& rhs ) const
22765 {
22766 return !operator==( rhs );
22767 }
22768
22769 private:
22770 StructureType sType;
22771
22772 public:
22773 void* pNext;
22774 ExternalFenceHandleTypeFlagsKHR exportFromImportedHandleTypes;
22775 ExternalFenceHandleTypeFlagsKHR compatibleHandleTypes;
22776 ExternalFenceFeatureFlagsKHR externalFenceFeatures;
22777 };
22778 static_assert( sizeof( ExternalFencePropertiesKHR ) == sizeof( VkExternalFencePropertiesKHR ), "struct and wrapper have different size!" );
22779
22780 enum class FenceImportFlagBitsKHR
22781 {
22782 eTemporary = VK_FENCE_IMPORT_TEMPORARY_BIT_KHR
22783 };
22784
22785 using FenceImportFlagsKHR = Flags<FenceImportFlagBitsKHR, VkFenceImportFlagsKHR>;
22786
22787 VULKAN_HPP_INLINE FenceImportFlagsKHR operator|( FenceImportFlagBitsKHR bit0, FenceImportFlagBitsKHR bit1 )
22788 {
22789 return FenceImportFlagsKHR( bit0 ) | bit1;
22790 }
22791
22792 VULKAN_HPP_INLINE FenceImportFlagsKHR operator~( FenceImportFlagBitsKHR bits )
22793 {
22794 return ~( FenceImportFlagsKHR( bits ) );
22795 }
22796
22797 template <> struct FlagTraits<FenceImportFlagBitsKHR>
22798 {
22799 enum
22800 {
22801 allFlags = VkFlags(FenceImportFlagBitsKHR::eTemporary)
22802 };
22803 };
22804
22805#ifdef VK_USE_PLATFORM_WIN32_KHR
22806 struct ImportFenceWin32HandleInfoKHR
22807 {
22808 ImportFenceWin32HandleInfoKHR( Fence fence_ = Fence(), FenceImportFlagsKHR flags_ = FenceImportFlagsKHR(), ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd, HANDLE handle_ = 0, LPCWSTR name_ = 0 )
22809 : sType( StructureType::eImportFenceWin32HandleInfoKHR )
22810 , pNext( nullptr )
22811 , fence( fence_ )
22812 , flags( flags_ )
22813 , handleType( handleType_ )
22814 , handle( handle_ )
22815 , name( name_ )
22816 {
22817 }
22818
22819 ImportFenceWin32HandleInfoKHR( VkImportFenceWin32HandleInfoKHR const & rhs )
22820 {
22821 memcpy( this, &rhs, sizeof( ImportFenceWin32HandleInfoKHR ) );
22822 }
22823
22824 ImportFenceWin32HandleInfoKHR& operator=( VkImportFenceWin32HandleInfoKHR const & rhs )
22825 {
22826 memcpy( this, &rhs, sizeof( ImportFenceWin32HandleInfoKHR ) );
22827 return *this;
22828 }
22829 ImportFenceWin32HandleInfoKHR& setPNext( const void* pNext_ )
22830 {
22831 pNext = pNext_;
22832 return *this;
22833 }
22834
22835 ImportFenceWin32HandleInfoKHR& setFence( Fence fence_ )
22836 {
22837 fence = fence_;
22838 return *this;
22839 }
22840
22841 ImportFenceWin32HandleInfoKHR& setFlags( FenceImportFlagsKHR flags_ )
22842 {
22843 flags = flags_;
22844 return *this;
22845 }
22846
22847 ImportFenceWin32HandleInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
22848 {
22849 handleType = handleType_;
22850 return *this;
22851 }
22852
22853 ImportFenceWin32HandleInfoKHR& setHandle( HANDLE handle_ )
22854 {
22855 handle = handle_;
22856 return *this;
22857 }
22858
22859 ImportFenceWin32HandleInfoKHR& setName( LPCWSTR name_ )
22860 {
22861 name = name_;
22862 return *this;
22863 }
22864
22865 operator const VkImportFenceWin32HandleInfoKHR&() const
22866 {
22867 return *reinterpret_cast<const VkImportFenceWin32HandleInfoKHR*>(this);
22868 }
22869
22870 bool operator==( ImportFenceWin32HandleInfoKHR const& rhs ) const
22871 {
22872 return ( sType == rhs.sType )
22873 && ( pNext == rhs.pNext )
22874 && ( fence == rhs.fence )
22875 && ( flags == rhs.flags )
22876 && ( handleType == rhs.handleType )
22877 && ( handle == rhs.handle )
22878 && ( name == rhs.name );
22879 }
22880
22881 bool operator!=( ImportFenceWin32HandleInfoKHR const& rhs ) const
22882 {
22883 return !operator==( rhs );
22884 }
22885
22886 private:
22887 StructureType sType;
22888
22889 public:
22890 const void* pNext;
22891 Fence fence;
22892 FenceImportFlagsKHR flags;
22893 ExternalFenceHandleTypeFlagBitsKHR handleType;
22894 HANDLE handle;
22895 LPCWSTR name;
22896 };
22897 static_assert( sizeof( ImportFenceWin32HandleInfoKHR ) == sizeof( VkImportFenceWin32HandleInfoKHR ), "struct and wrapper have different size!" );
22898#endif /*VK_USE_PLATFORM_WIN32_KHR*/
22899
22900 struct ImportFenceFdInfoKHR
22901 {
22902 ImportFenceFdInfoKHR( Fence fence_ = Fence(), FenceImportFlagsKHR flags_ = FenceImportFlagsKHR(), ExternalFenceHandleTypeFlagBitsKHR handleType_ = ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd, int fd_ = 0 )
22903 : sType( StructureType::eImportFenceFdInfoKHR )
22904 , pNext( nullptr )
22905 , fence( fence_ )
22906 , flags( flags_ )
22907 , handleType( handleType_ )
22908 , fd( fd_ )
22909 {
22910 }
22911
22912 ImportFenceFdInfoKHR( VkImportFenceFdInfoKHR const & rhs )
22913 {
22914 memcpy( this, &rhs, sizeof( ImportFenceFdInfoKHR ) );
22915 }
22916
22917 ImportFenceFdInfoKHR& operator=( VkImportFenceFdInfoKHR const & rhs )
22918 {
22919 memcpy( this, &rhs, sizeof( ImportFenceFdInfoKHR ) );
22920 return *this;
22921 }
22922 ImportFenceFdInfoKHR& setPNext( const void* pNext_ )
22923 {
22924 pNext = pNext_;
22925 return *this;
22926 }
22927
22928 ImportFenceFdInfoKHR& setFence( Fence fence_ )
22929 {
22930 fence = fence_;
22931 return *this;
22932 }
22933
22934 ImportFenceFdInfoKHR& setFlags( FenceImportFlagsKHR flags_ )
22935 {
22936 flags = flags_;
22937 return *this;
22938 }
22939
22940 ImportFenceFdInfoKHR& setHandleType( ExternalFenceHandleTypeFlagBitsKHR handleType_ )
22941 {
22942 handleType = handleType_;
22943 return *this;
22944 }
22945
22946 ImportFenceFdInfoKHR& setFd( int fd_ )
22947 {
22948 fd = fd_;
22949 return *this;
22950 }
22951
22952 operator const VkImportFenceFdInfoKHR&() const
22953 {
22954 return *reinterpret_cast<const VkImportFenceFdInfoKHR*>(this);
22955 }
22956
22957 bool operator==( ImportFenceFdInfoKHR const& rhs ) const
22958 {
22959 return ( sType == rhs.sType )
22960 && ( pNext == rhs.pNext )
22961 && ( fence == rhs.fence )
22962 && ( flags == rhs.flags )
22963 && ( handleType == rhs.handleType )
22964 && ( fd == rhs.fd );
22965 }
22966
22967 bool operator!=( ImportFenceFdInfoKHR const& rhs ) const
22968 {
22969 return !operator==( rhs );
22970 }
22971
22972 private:
22973 StructureType sType;
22974
22975 public:
22976 const void* pNext;
22977 Fence fence;
22978 FenceImportFlagsKHR flags;
22979 ExternalFenceHandleTypeFlagBitsKHR handleType;
22980 int fd;
22981 };
22982 static_assert( sizeof( ImportFenceFdInfoKHR ) == sizeof( VkImportFenceFdInfoKHR ), "struct and wrapper have different size!" );
Mark Young0f183a82017-02-28 09:58:04 -070022983
Mark Young39389872017-01-19 21:10:49 -070022984 enum class SurfaceCounterFlagBitsEXT
22985 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060022986 eVblank = VK_SURFACE_COUNTER_VBLANK_EXT
Mark Young39389872017-01-19 21:10:49 -070022987 };
22988
22989 using SurfaceCounterFlagsEXT = Flags<SurfaceCounterFlagBitsEXT, VkSurfaceCounterFlagsEXT>;
22990
22991 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator|( SurfaceCounterFlagBitsEXT bit0, SurfaceCounterFlagBitsEXT bit1 )
22992 {
22993 return SurfaceCounterFlagsEXT( bit0 ) | bit1;
22994 }
22995
22996 VULKAN_HPP_INLINE SurfaceCounterFlagsEXT operator~( SurfaceCounterFlagBitsEXT bits )
22997 {
22998 return ~( SurfaceCounterFlagsEXT( bits ) );
22999 }
23000
23001 template <> struct FlagTraits<SurfaceCounterFlagBitsEXT>
23002 {
23003 enum
23004 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060023005 allFlags = VkFlags(SurfaceCounterFlagBitsEXT::eVblank)
Mark Young39389872017-01-19 21:10:49 -070023006 };
23007 };
23008
23009 struct SurfaceCapabilities2EXT
23010 {
23011 operator const VkSurfaceCapabilities2EXT&() const
23012 {
23013 return *reinterpret_cast<const VkSurfaceCapabilities2EXT*>(this);
23014 }
23015
23016 bool operator==( SurfaceCapabilities2EXT const& rhs ) const
23017 {
23018 return ( sType == rhs.sType )
23019 && ( pNext == rhs.pNext )
23020 && ( minImageCount == rhs.minImageCount )
23021 && ( maxImageCount == rhs.maxImageCount )
23022 && ( currentExtent == rhs.currentExtent )
23023 && ( minImageExtent == rhs.minImageExtent )
23024 && ( maxImageExtent == rhs.maxImageExtent )
23025 && ( maxImageArrayLayers == rhs.maxImageArrayLayers )
23026 && ( supportedTransforms == rhs.supportedTransforms )
23027 && ( currentTransform == rhs.currentTransform )
23028 && ( supportedCompositeAlpha == rhs.supportedCompositeAlpha )
23029 && ( supportedUsageFlags == rhs.supportedUsageFlags )
23030 && ( supportedSurfaceCounters == rhs.supportedSurfaceCounters );
23031 }
23032
23033 bool operator!=( SurfaceCapabilities2EXT const& rhs ) const
23034 {
23035 return !operator==( rhs );
23036 }
23037
23038 private:
23039 StructureType sType;
23040
23041 public:
23042 void* pNext;
23043 uint32_t minImageCount;
23044 uint32_t maxImageCount;
23045 Extent2D currentExtent;
23046 Extent2D minImageExtent;
23047 Extent2D maxImageExtent;
23048 uint32_t maxImageArrayLayers;
23049 SurfaceTransformFlagsKHR supportedTransforms;
23050 SurfaceTransformFlagBitsKHR currentTransform;
23051 CompositeAlphaFlagsKHR supportedCompositeAlpha;
23052 ImageUsageFlags supportedUsageFlags;
23053 SurfaceCounterFlagsEXT supportedSurfaceCounters;
23054 };
23055 static_assert( sizeof( SurfaceCapabilities2EXT ) == sizeof( VkSurfaceCapabilities2EXT ), "struct and wrapper have different size!" );
23056
23057 struct SwapchainCounterCreateInfoEXT
23058 {
23059 SwapchainCounterCreateInfoEXT( SurfaceCounterFlagsEXT surfaceCounters_ = SurfaceCounterFlagsEXT() )
23060 : sType( StructureType::eSwapchainCounterCreateInfoEXT )
23061 , pNext( nullptr )
23062 , surfaceCounters( surfaceCounters_ )
23063 {
23064 }
23065
23066 SwapchainCounterCreateInfoEXT( VkSwapchainCounterCreateInfoEXT const & rhs )
23067 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023068 memcpy( this, &rhs, sizeof( SwapchainCounterCreateInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070023069 }
23070
23071 SwapchainCounterCreateInfoEXT& operator=( VkSwapchainCounterCreateInfoEXT const & rhs )
23072 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023073 memcpy( this, &rhs, sizeof( SwapchainCounterCreateInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070023074 return *this;
23075 }
Mark Young39389872017-01-19 21:10:49 -070023076 SwapchainCounterCreateInfoEXT& setPNext( const void* pNext_ )
23077 {
23078 pNext = pNext_;
23079 return *this;
23080 }
23081
23082 SwapchainCounterCreateInfoEXT& setSurfaceCounters( SurfaceCounterFlagsEXT surfaceCounters_ )
23083 {
23084 surfaceCounters = surfaceCounters_;
23085 return *this;
23086 }
23087
23088 operator const VkSwapchainCounterCreateInfoEXT&() const
23089 {
23090 return *reinterpret_cast<const VkSwapchainCounterCreateInfoEXT*>(this);
23091 }
23092
23093 bool operator==( SwapchainCounterCreateInfoEXT const& rhs ) const
23094 {
23095 return ( sType == rhs.sType )
23096 && ( pNext == rhs.pNext )
23097 && ( surfaceCounters == rhs.surfaceCounters );
23098 }
23099
23100 bool operator!=( SwapchainCounterCreateInfoEXT const& rhs ) const
23101 {
23102 return !operator==( rhs );
23103 }
23104
23105 private:
23106 StructureType sType;
23107
23108 public:
23109 const void* pNext;
23110 SurfaceCounterFlagsEXT surfaceCounters;
23111 };
23112 static_assert( sizeof( SwapchainCounterCreateInfoEXT ) == sizeof( VkSwapchainCounterCreateInfoEXT ), "struct and wrapper have different size!" );
23113
23114 enum class DisplayPowerStateEXT
23115 {
23116 eOff = VK_DISPLAY_POWER_STATE_OFF_EXT,
23117 eSuspend = VK_DISPLAY_POWER_STATE_SUSPEND_EXT,
23118 eOn = VK_DISPLAY_POWER_STATE_ON_EXT
23119 };
23120
23121 struct DisplayPowerInfoEXT
23122 {
23123 DisplayPowerInfoEXT( DisplayPowerStateEXT powerState_ = DisplayPowerStateEXT::eOff )
23124 : sType( StructureType::eDisplayPowerInfoEXT )
23125 , pNext( nullptr )
23126 , powerState( powerState_ )
23127 {
23128 }
23129
23130 DisplayPowerInfoEXT( VkDisplayPowerInfoEXT const & rhs )
23131 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023132 memcpy( this, &rhs, sizeof( DisplayPowerInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070023133 }
23134
23135 DisplayPowerInfoEXT& operator=( VkDisplayPowerInfoEXT const & rhs )
23136 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023137 memcpy( this, &rhs, sizeof( DisplayPowerInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070023138 return *this;
23139 }
Mark Young39389872017-01-19 21:10:49 -070023140 DisplayPowerInfoEXT& setPNext( const void* pNext_ )
23141 {
23142 pNext = pNext_;
23143 return *this;
23144 }
23145
23146 DisplayPowerInfoEXT& setPowerState( DisplayPowerStateEXT powerState_ )
23147 {
23148 powerState = powerState_;
23149 return *this;
23150 }
23151
23152 operator const VkDisplayPowerInfoEXT&() const
23153 {
23154 return *reinterpret_cast<const VkDisplayPowerInfoEXT*>(this);
23155 }
23156
23157 bool operator==( DisplayPowerInfoEXT const& rhs ) const
23158 {
23159 return ( sType == rhs.sType )
23160 && ( pNext == rhs.pNext )
23161 && ( powerState == rhs.powerState );
23162 }
23163
23164 bool operator!=( DisplayPowerInfoEXT const& rhs ) const
23165 {
23166 return !operator==( rhs );
23167 }
23168
23169 private:
23170 StructureType sType;
23171
23172 public:
23173 const void* pNext;
23174 DisplayPowerStateEXT powerState;
23175 };
23176 static_assert( sizeof( DisplayPowerInfoEXT ) == sizeof( VkDisplayPowerInfoEXT ), "struct and wrapper have different size!" );
23177
23178 enum class DeviceEventTypeEXT
23179 {
23180 eDisplayHotplug = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT
23181 };
23182
23183 struct DeviceEventInfoEXT
23184 {
23185 DeviceEventInfoEXT( DeviceEventTypeEXT deviceEvent_ = DeviceEventTypeEXT::eDisplayHotplug )
23186 : sType( StructureType::eDeviceEventInfoEXT )
23187 , pNext( nullptr )
23188 , deviceEvent( deviceEvent_ )
23189 {
23190 }
23191
23192 DeviceEventInfoEXT( VkDeviceEventInfoEXT const & rhs )
23193 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023194 memcpy( this, &rhs, sizeof( DeviceEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070023195 }
23196
23197 DeviceEventInfoEXT& operator=( VkDeviceEventInfoEXT const & rhs )
23198 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023199 memcpy( this, &rhs, sizeof( DeviceEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070023200 return *this;
23201 }
Mark Young39389872017-01-19 21:10:49 -070023202 DeviceEventInfoEXT& setPNext( const void* pNext_ )
23203 {
23204 pNext = pNext_;
23205 return *this;
23206 }
23207
23208 DeviceEventInfoEXT& setDeviceEvent( DeviceEventTypeEXT deviceEvent_ )
23209 {
23210 deviceEvent = deviceEvent_;
23211 return *this;
23212 }
23213
23214 operator const VkDeviceEventInfoEXT&() const
23215 {
23216 return *reinterpret_cast<const VkDeviceEventInfoEXT*>(this);
23217 }
23218
23219 bool operator==( DeviceEventInfoEXT const& rhs ) const
23220 {
23221 return ( sType == rhs.sType )
23222 && ( pNext == rhs.pNext )
23223 && ( deviceEvent == rhs.deviceEvent );
23224 }
23225
23226 bool operator!=( DeviceEventInfoEXT const& rhs ) const
23227 {
23228 return !operator==( rhs );
23229 }
23230
23231 private:
23232 StructureType sType;
23233
23234 public:
23235 const void* pNext;
23236 DeviceEventTypeEXT deviceEvent;
23237 };
23238 static_assert( sizeof( DeviceEventInfoEXT ) == sizeof( VkDeviceEventInfoEXT ), "struct and wrapper have different size!" );
23239
23240 enum class DisplayEventTypeEXT
23241 {
23242 eFirstPixelOut = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT
23243 };
23244
23245 struct DisplayEventInfoEXT
23246 {
23247 DisplayEventInfoEXT( DisplayEventTypeEXT displayEvent_ = DisplayEventTypeEXT::eFirstPixelOut )
23248 : sType( StructureType::eDisplayEventInfoEXT )
23249 , pNext( nullptr )
23250 , displayEvent( displayEvent_ )
23251 {
23252 }
23253
23254 DisplayEventInfoEXT( VkDisplayEventInfoEXT const & rhs )
23255 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023256 memcpy( this, &rhs, sizeof( DisplayEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070023257 }
23258
23259 DisplayEventInfoEXT& operator=( VkDisplayEventInfoEXT const & rhs )
23260 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023261 memcpy( this, &rhs, sizeof( DisplayEventInfoEXT ) );
Mark Young39389872017-01-19 21:10:49 -070023262 return *this;
23263 }
Mark Young39389872017-01-19 21:10:49 -070023264 DisplayEventInfoEXT& setPNext( const void* pNext_ )
23265 {
23266 pNext = pNext_;
23267 return *this;
23268 }
23269
23270 DisplayEventInfoEXT& setDisplayEvent( DisplayEventTypeEXT displayEvent_ )
23271 {
23272 displayEvent = displayEvent_;
23273 return *this;
23274 }
23275
23276 operator const VkDisplayEventInfoEXT&() const
23277 {
23278 return *reinterpret_cast<const VkDisplayEventInfoEXT*>(this);
23279 }
23280
23281 bool operator==( DisplayEventInfoEXT const& rhs ) const
23282 {
23283 return ( sType == rhs.sType )
23284 && ( pNext == rhs.pNext )
23285 && ( displayEvent == rhs.displayEvent );
23286 }
23287
23288 bool operator!=( DisplayEventInfoEXT const& rhs ) const
23289 {
23290 return !operator==( rhs );
23291 }
23292
23293 private:
23294 StructureType sType;
23295
23296 public:
23297 const void* pNext;
23298 DisplayEventTypeEXT displayEvent;
23299 };
23300 static_assert( sizeof( DisplayEventInfoEXT ) == sizeof( VkDisplayEventInfoEXT ), "struct and wrapper have different size!" );
23301
Mark Young0f183a82017-02-28 09:58:04 -070023302 enum class PeerMemoryFeatureFlagBitsKHX
23303 {
23304 eCopySrc = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX,
23305 eCopyDst = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX,
23306 eGenericSrc = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX,
23307 eGenericDst = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX
23308 };
23309
23310 using PeerMemoryFeatureFlagsKHX = Flags<PeerMemoryFeatureFlagBitsKHX, VkPeerMemoryFeatureFlagsKHX>;
23311
23312 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX operator|( PeerMemoryFeatureFlagBitsKHX bit0, PeerMemoryFeatureFlagBitsKHX bit1 )
23313 {
23314 return PeerMemoryFeatureFlagsKHX( bit0 ) | bit1;
23315 }
23316
23317 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX operator~( PeerMemoryFeatureFlagBitsKHX bits )
23318 {
23319 return ~( PeerMemoryFeatureFlagsKHX( bits ) );
23320 }
23321
23322 template <> struct FlagTraits<PeerMemoryFeatureFlagBitsKHX>
23323 {
23324 enum
23325 {
23326 allFlags = VkFlags(PeerMemoryFeatureFlagBitsKHX::eCopySrc) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eCopyDst) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eGenericSrc) | VkFlags(PeerMemoryFeatureFlagBitsKHX::eGenericDst)
23327 };
23328 };
23329
23330 enum class MemoryAllocateFlagBitsKHX
23331 {
23332 eDeviceMask = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX
23333 };
23334
23335 using MemoryAllocateFlagsKHX = Flags<MemoryAllocateFlagBitsKHX, VkMemoryAllocateFlagsKHX>;
23336
23337 VULKAN_HPP_INLINE MemoryAllocateFlagsKHX operator|( MemoryAllocateFlagBitsKHX bit0, MemoryAllocateFlagBitsKHX bit1 )
23338 {
23339 return MemoryAllocateFlagsKHX( bit0 ) | bit1;
23340 }
23341
23342 VULKAN_HPP_INLINE MemoryAllocateFlagsKHX operator~( MemoryAllocateFlagBitsKHX bits )
23343 {
23344 return ~( MemoryAllocateFlagsKHX( bits ) );
23345 }
23346
23347 template <> struct FlagTraits<MemoryAllocateFlagBitsKHX>
23348 {
23349 enum
23350 {
23351 allFlags = VkFlags(MemoryAllocateFlagBitsKHX::eDeviceMask)
23352 };
23353 };
23354
23355 struct MemoryAllocateFlagsInfoKHX
23356 {
23357 MemoryAllocateFlagsInfoKHX( MemoryAllocateFlagsKHX flags_ = MemoryAllocateFlagsKHX(), uint32_t deviceMask_ = 0 )
23358 : sType( StructureType::eMemoryAllocateFlagsInfoKHX )
23359 , pNext( nullptr )
23360 , flags( flags_ )
23361 , deviceMask( deviceMask_ )
23362 {
23363 }
23364
23365 MemoryAllocateFlagsInfoKHX( VkMemoryAllocateFlagsInfoKHX const & rhs )
23366 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023367 memcpy( this, &rhs, sizeof( MemoryAllocateFlagsInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070023368 }
23369
23370 MemoryAllocateFlagsInfoKHX& operator=( VkMemoryAllocateFlagsInfoKHX const & rhs )
23371 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023372 memcpy( this, &rhs, sizeof( MemoryAllocateFlagsInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070023373 return *this;
23374 }
Mark Young0f183a82017-02-28 09:58:04 -070023375 MemoryAllocateFlagsInfoKHX& setPNext( const void* pNext_ )
23376 {
23377 pNext = pNext_;
23378 return *this;
23379 }
23380
23381 MemoryAllocateFlagsInfoKHX& setFlags( MemoryAllocateFlagsKHX flags_ )
23382 {
23383 flags = flags_;
23384 return *this;
23385 }
23386
23387 MemoryAllocateFlagsInfoKHX& setDeviceMask( uint32_t deviceMask_ )
23388 {
23389 deviceMask = deviceMask_;
23390 return *this;
23391 }
23392
23393 operator const VkMemoryAllocateFlagsInfoKHX&() const
23394 {
23395 return *reinterpret_cast<const VkMemoryAllocateFlagsInfoKHX*>(this);
23396 }
23397
23398 bool operator==( MemoryAllocateFlagsInfoKHX const& rhs ) const
23399 {
23400 return ( sType == rhs.sType )
23401 && ( pNext == rhs.pNext )
23402 && ( flags == rhs.flags )
23403 && ( deviceMask == rhs.deviceMask );
23404 }
23405
23406 bool operator!=( MemoryAllocateFlagsInfoKHX const& rhs ) const
23407 {
23408 return !operator==( rhs );
23409 }
23410
23411 private:
23412 StructureType sType;
23413
23414 public:
23415 const void* pNext;
23416 MemoryAllocateFlagsKHX flags;
23417 uint32_t deviceMask;
23418 };
23419 static_assert( sizeof( MemoryAllocateFlagsInfoKHX ) == sizeof( VkMemoryAllocateFlagsInfoKHX ), "struct and wrapper have different size!" );
23420
23421 enum class DeviceGroupPresentModeFlagBitsKHX
23422 {
23423 eLocal = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX,
23424 eRemote = VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX,
23425 eSum = VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX,
23426 eLocalMultiDevice = VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX
23427 };
23428
23429 using DeviceGroupPresentModeFlagsKHX = Flags<DeviceGroupPresentModeFlagBitsKHX, VkDeviceGroupPresentModeFlagsKHX>;
23430
23431 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHX operator|( DeviceGroupPresentModeFlagBitsKHX bit0, DeviceGroupPresentModeFlagBitsKHX bit1 )
23432 {
23433 return DeviceGroupPresentModeFlagsKHX( bit0 ) | bit1;
23434 }
23435
23436 VULKAN_HPP_INLINE DeviceGroupPresentModeFlagsKHX operator~( DeviceGroupPresentModeFlagBitsKHX bits )
23437 {
23438 return ~( DeviceGroupPresentModeFlagsKHX( bits ) );
23439 }
23440
23441 template <> struct FlagTraits<DeviceGroupPresentModeFlagBitsKHX>
23442 {
23443 enum
23444 {
23445 allFlags = VkFlags(DeviceGroupPresentModeFlagBitsKHX::eLocal) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eRemote) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eSum) | VkFlags(DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice)
23446 };
23447 };
23448
23449 struct DeviceGroupPresentCapabilitiesKHX
23450 {
23451 operator const VkDeviceGroupPresentCapabilitiesKHX&() const
23452 {
23453 return *reinterpret_cast<const VkDeviceGroupPresentCapabilitiesKHX*>(this);
23454 }
23455
23456 bool operator==( DeviceGroupPresentCapabilitiesKHX const& rhs ) const
23457 {
23458 return ( sType == rhs.sType )
23459 && ( pNext == rhs.pNext )
23460 && ( memcmp( presentMask, rhs.presentMask, VK_MAX_DEVICE_GROUP_SIZE_KHX * sizeof( uint32_t ) ) == 0 )
23461 && ( modes == rhs.modes );
23462 }
23463
23464 bool operator!=( DeviceGroupPresentCapabilitiesKHX const& rhs ) const
23465 {
23466 return !operator==( rhs );
23467 }
23468
23469 private:
23470 StructureType sType;
23471
23472 public:
23473 const void* pNext;
23474 uint32_t presentMask[VK_MAX_DEVICE_GROUP_SIZE_KHX];
23475 DeviceGroupPresentModeFlagsKHX modes;
23476 };
23477 static_assert( sizeof( DeviceGroupPresentCapabilitiesKHX ) == sizeof( VkDeviceGroupPresentCapabilitiesKHX ), "struct and wrapper have different size!" );
23478
23479 struct DeviceGroupPresentInfoKHX
23480 {
23481 DeviceGroupPresentInfoKHX( uint32_t swapchainCount_ = 0, const uint32_t* pDeviceMasks_ = nullptr, DeviceGroupPresentModeFlagBitsKHX mode_ = DeviceGroupPresentModeFlagBitsKHX::eLocal )
23482 : sType( StructureType::eDeviceGroupPresentInfoKHX )
23483 , pNext( nullptr )
23484 , swapchainCount( swapchainCount_ )
23485 , pDeviceMasks( pDeviceMasks_ )
23486 , mode( mode_ )
23487 {
23488 }
23489
23490 DeviceGroupPresentInfoKHX( VkDeviceGroupPresentInfoKHX const & rhs )
23491 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023492 memcpy( this, &rhs, sizeof( DeviceGroupPresentInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070023493 }
23494
23495 DeviceGroupPresentInfoKHX& operator=( VkDeviceGroupPresentInfoKHX const & rhs )
23496 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023497 memcpy( this, &rhs, sizeof( DeviceGroupPresentInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070023498 return *this;
23499 }
Mark Young0f183a82017-02-28 09:58:04 -070023500 DeviceGroupPresentInfoKHX& setPNext( const void* pNext_ )
23501 {
23502 pNext = pNext_;
23503 return *this;
23504 }
23505
23506 DeviceGroupPresentInfoKHX& setSwapchainCount( uint32_t swapchainCount_ )
23507 {
23508 swapchainCount = swapchainCount_;
23509 return *this;
23510 }
23511
23512 DeviceGroupPresentInfoKHX& setPDeviceMasks( const uint32_t* pDeviceMasks_ )
23513 {
23514 pDeviceMasks = pDeviceMasks_;
23515 return *this;
23516 }
23517
23518 DeviceGroupPresentInfoKHX& setMode( DeviceGroupPresentModeFlagBitsKHX mode_ )
23519 {
23520 mode = mode_;
23521 return *this;
23522 }
23523
23524 operator const VkDeviceGroupPresentInfoKHX&() const
23525 {
23526 return *reinterpret_cast<const VkDeviceGroupPresentInfoKHX*>(this);
23527 }
23528
23529 bool operator==( DeviceGroupPresentInfoKHX const& rhs ) const
23530 {
23531 return ( sType == rhs.sType )
23532 && ( pNext == rhs.pNext )
23533 && ( swapchainCount == rhs.swapchainCount )
23534 && ( pDeviceMasks == rhs.pDeviceMasks )
23535 && ( mode == rhs.mode );
23536 }
23537
23538 bool operator!=( DeviceGroupPresentInfoKHX const& rhs ) const
23539 {
23540 return !operator==( rhs );
23541 }
23542
23543 private:
23544 StructureType sType;
23545
23546 public:
23547 const void* pNext;
23548 uint32_t swapchainCount;
23549 const uint32_t* pDeviceMasks;
23550 DeviceGroupPresentModeFlagBitsKHX mode;
23551 };
23552 static_assert( sizeof( DeviceGroupPresentInfoKHX ) == sizeof( VkDeviceGroupPresentInfoKHX ), "struct and wrapper have different size!" );
23553
23554 struct DeviceGroupSwapchainCreateInfoKHX
23555 {
23556 DeviceGroupSwapchainCreateInfoKHX( DeviceGroupPresentModeFlagsKHX modes_ = DeviceGroupPresentModeFlagsKHX() )
23557 : sType( StructureType::eDeviceGroupSwapchainCreateInfoKHX )
23558 , pNext( nullptr )
23559 , modes( modes_ )
23560 {
23561 }
23562
23563 DeviceGroupSwapchainCreateInfoKHX( VkDeviceGroupSwapchainCreateInfoKHX const & rhs )
23564 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023565 memcpy( this, &rhs, sizeof( DeviceGroupSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070023566 }
23567
23568 DeviceGroupSwapchainCreateInfoKHX& operator=( VkDeviceGroupSwapchainCreateInfoKHX const & rhs )
23569 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023570 memcpy( this, &rhs, sizeof( DeviceGroupSwapchainCreateInfoKHX ) );
Mark Young0f183a82017-02-28 09:58:04 -070023571 return *this;
23572 }
Mark Young0f183a82017-02-28 09:58:04 -070023573 DeviceGroupSwapchainCreateInfoKHX& setPNext( const void* pNext_ )
23574 {
23575 pNext = pNext_;
23576 return *this;
23577 }
23578
23579 DeviceGroupSwapchainCreateInfoKHX& setModes( DeviceGroupPresentModeFlagsKHX modes_ )
23580 {
23581 modes = modes_;
23582 return *this;
23583 }
23584
23585 operator const VkDeviceGroupSwapchainCreateInfoKHX&() const
23586 {
23587 return *reinterpret_cast<const VkDeviceGroupSwapchainCreateInfoKHX*>(this);
23588 }
23589
23590 bool operator==( DeviceGroupSwapchainCreateInfoKHX const& rhs ) const
23591 {
23592 return ( sType == rhs.sType )
23593 && ( pNext == rhs.pNext )
23594 && ( modes == rhs.modes );
23595 }
23596
23597 bool operator!=( DeviceGroupSwapchainCreateInfoKHX const& rhs ) const
23598 {
23599 return !operator==( rhs );
23600 }
23601
23602 private:
23603 StructureType sType;
23604
23605 public:
23606 const void* pNext;
23607 DeviceGroupPresentModeFlagsKHX modes;
23608 };
23609 static_assert( sizeof( DeviceGroupSwapchainCreateInfoKHX ) == sizeof( VkDeviceGroupSwapchainCreateInfoKHX ), "struct and wrapper have different size!" );
23610
23611 enum class SwapchainCreateFlagBitsKHR
23612 {
23613 eBindSfrKHX = VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX
23614 };
23615
23616 using SwapchainCreateFlagsKHR = Flags<SwapchainCreateFlagBitsKHR, VkSwapchainCreateFlagsKHR>;
23617
23618 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator|( SwapchainCreateFlagBitsKHR bit0, SwapchainCreateFlagBitsKHR bit1 )
23619 {
23620 return SwapchainCreateFlagsKHR( bit0 ) | bit1;
23621 }
23622
23623 VULKAN_HPP_INLINE SwapchainCreateFlagsKHR operator~( SwapchainCreateFlagBitsKHR bits )
23624 {
23625 return ~( SwapchainCreateFlagsKHR( bits ) );
23626 }
23627
23628 template <> struct FlagTraits<SwapchainCreateFlagBitsKHR>
23629 {
23630 enum
23631 {
23632 allFlags = VkFlags(SwapchainCreateFlagBitsKHR::eBindSfrKHX)
23633 };
23634 };
23635
23636 struct SwapchainCreateInfoKHR
23637 {
23638 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() )
23639 : sType( StructureType::eSwapchainCreateInfoKHR )
23640 , pNext( nullptr )
23641 , flags( flags_ )
23642 , surface( surface_ )
23643 , minImageCount( minImageCount_ )
23644 , imageFormat( imageFormat_ )
23645 , imageColorSpace( imageColorSpace_ )
23646 , imageExtent( imageExtent_ )
23647 , imageArrayLayers( imageArrayLayers_ )
23648 , imageUsage( imageUsage_ )
23649 , imageSharingMode( imageSharingMode_ )
23650 , queueFamilyIndexCount( queueFamilyIndexCount_ )
23651 , pQueueFamilyIndices( pQueueFamilyIndices_ )
23652 , preTransform( preTransform_ )
23653 , compositeAlpha( compositeAlpha_ )
23654 , presentMode( presentMode_ )
23655 , clipped( clipped_ )
23656 , oldSwapchain( oldSwapchain_ )
23657 {
23658 }
23659
23660 SwapchainCreateInfoKHR( VkSwapchainCreateInfoKHR const & rhs )
23661 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023662 memcpy( this, &rhs, sizeof( SwapchainCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070023663 }
23664
23665 SwapchainCreateInfoKHR& operator=( VkSwapchainCreateInfoKHR const & rhs )
23666 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023667 memcpy( this, &rhs, sizeof( SwapchainCreateInfoKHR ) );
Mark Young0f183a82017-02-28 09:58:04 -070023668 return *this;
23669 }
Mark Young0f183a82017-02-28 09:58:04 -070023670 SwapchainCreateInfoKHR& setPNext( const void* pNext_ )
23671 {
23672 pNext = pNext_;
23673 return *this;
23674 }
23675
23676 SwapchainCreateInfoKHR& setFlags( SwapchainCreateFlagsKHR flags_ )
23677 {
23678 flags = flags_;
23679 return *this;
23680 }
23681
23682 SwapchainCreateInfoKHR& setSurface( SurfaceKHR surface_ )
23683 {
23684 surface = surface_;
23685 return *this;
23686 }
23687
23688 SwapchainCreateInfoKHR& setMinImageCount( uint32_t minImageCount_ )
23689 {
23690 minImageCount = minImageCount_;
23691 return *this;
23692 }
23693
23694 SwapchainCreateInfoKHR& setImageFormat( Format imageFormat_ )
23695 {
23696 imageFormat = imageFormat_;
23697 return *this;
23698 }
23699
23700 SwapchainCreateInfoKHR& setImageColorSpace( ColorSpaceKHR imageColorSpace_ )
23701 {
23702 imageColorSpace = imageColorSpace_;
23703 return *this;
23704 }
23705
23706 SwapchainCreateInfoKHR& setImageExtent( Extent2D imageExtent_ )
23707 {
23708 imageExtent = imageExtent_;
23709 return *this;
23710 }
23711
23712 SwapchainCreateInfoKHR& setImageArrayLayers( uint32_t imageArrayLayers_ )
23713 {
23714 imageArrayLayers = imageArrayLayers_;
23715 return *this;
23716 }
23717
23718 SwapchainCreateInfoKHR& setImageUsage( ImageUsageFlags imageUsage_ )
23719 {
23720 imageUsage = imageUsage_;
23721 return *this;
23722 }
23723
23724 SwapchainCreateInfoKHR& setImageSharingMode( SharingMode imageSharingMode_ )
23725 {
23726 imageSharingMode = imageSharingMode_;
23727 return *this;
23728 }
23729
23730 SwapchainCreateInfoKHR& setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ )
23731 {
23732 queueFamilyIndexCount = queueFamilyIndexCount_;
23733 return *this;
23734 }
23735
23736 SwapchainCreateInfoKHR& setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ )
23737 {
23738 pQueueFamilyIndices = pQueueFamilyIndices_;
23739 return *this;
23740 }
23741
23742 SwapchainCreateInfoKHR& setPreTransform( SurfaceTransformFlagBitsKHR preTransform_ )
23743 {
23744 preTransform = preTransform_;
23745 return *this;
23746 }
23747
23748 SwapchainCreateInfoKHR& setCompositeAlpha( CompositeAlphaFlagBitsKHR compositeAlpha_ )
23749 {
23750 compositeAlpha = compositeAlpha_;
23751 return *this;
23752 }
23753
23754 SwapchainCreateInfoKHR& setPresentMode( PresentModeKHR presentMode_ )
23755 {
23756 presentMode = presentMode_;
23757 return *this;
23758 }
23759
23760 SwapchainCreateInfoKHR& setClipped( Bool32 clipped_ )
23761 {
23762 clipped = clipped_;
23763 return *this;
23764 }
23765
23766 SwapchainCreateInfoKHR& setOldSwapchain( SwapchainKHR oldSwapchain_ )
23767 {
23768 oldSwapchain = oldSwapchain_;
23769 return *this;
23770 }
23771
23772 operator const VkSwapchainCreateInfoKHR&() const
23773 {
23774 return *reinterpret_cast<const VkSwapchainCreateInfoKHR*>(this);
23775 }
23776
23777 bool operator==( SwapchainCreateInfoKHR const& rhs ) const
23778 {
23779 return ( sType == rhs.sType )
23780 && ( pNext == rhs.pNext )
23781 && ( flags == rhs.flags )
23782 && ( surface == rhs.surface )
23783 && ( minImageCount == rhs.minImageCount )
23784 && ( imageFormat == rhs.imageFormat )
23785 && ( imageColorSpace == rhs.imageColorSpace )
23786 && ( imageExtent == rhs.imageExtent )
23787 && ( imageArrayLayers == rhs.imageArrayLayers )
23788 && ( imageUsage == rhs.imageUsage )
23789 && ( imageSharingMode == rhs.imageSharingMode )
23790 && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount )
23791 && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices )
23792 && ( preTransform == rhs.preTransform )
23793 && ( compositeAlpha == rhs.compositeAlpha )
23794 && ( presentMode == rhs.presentMode )
23795 && ( clipped == rhs.clipped )
23796 && ( oldSwapchain == rhs.oldSwapchain );
23797 }
23798
23799 bool operator!=( SwapchainCreateInfoKHR const& rhs ) const
23800 {
23801 return !operator==( rhs );
23802 }
23803
23804 private:
23805 StructureType sType;
23806
23807 public:
23808 const void* pNext;
23809 SwapchainCreateFlagsKHR flags;
23810 SurfaceKHR surface;
23811 uint32_t minImageCount;
23812 Format imageFormat;
23813 ColorSpaceKHR imageColorSpace;
23814 Extent2D imageExtent;
23815 uint32_t imageArrayLayers;
23816 ImageUsageFlags imageUsage;
23817 SharingMode imageSharingMode;
23818 uint32_t queueFamilyIndexCount;
23819 const uint32_t* pQueueFamilyIndices;
23820 SurfaceTransformFlagBitsKHR preTransform;
23821 CompositeAlphaFlagBitsKHR compositeAlpha;
23822 PresentModeKHR presentMode;
23823 Bool32 clipped;
23824 SwapchainKHR oldSwapchain;
23825 };
23826 static_assert( sizeof( SwapchainCreateInfoKHR ) == sizeof( VkSwapchainCreateInfoKHR ), "struct and wrapper have different size!" );
23827
23828 enum class ViewportCoordinateSwizzleNV
23829 {
23830 ePositiveX = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV,
23831 eNegativeX = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV,
23832 ePositiveY = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV,
23833 eNegativeY = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV,
23834 ePositiveZ = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV,
23835 eNegativeZ = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV,
23836 ePositiveW = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV,
23837 eNegativeW = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV
23838 };
23839
23840 struct ViewportSwizzleNV
23841 {
23842 ViewportSwizzleNV( ViewportCoordinateSwizzleNV x_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV y_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV z_ = ViewportCoordinateSwizzleNV::ePositiveX, ViewportCoordinateSwizzleNV w_ = ViewportCoordinateSwizzleNV::ePositiveX )
23843 : x( x_ )
23844 , y( y_ )
23845 , z( z_ )
23846 , w( w_ )
23847 {
23848 }
23849
23850 ViewportSwizzleNV( VkViewportSwizzleNV const & rhs )
23851 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023852 memcpy( this, &rhs, sizeof( ViewportSwizzleNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070023853 }
23854
23855 ViewportSwizzleNV& operator=( VkViewportSwizzleNV const & rhs )
23856 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023857 memcpy( this, &rhs, sizeof( ViewportSwizzleNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070023858 return *this;
23859 }
Mark Young0f183a82017-02-28 09:58:04 -070023860 ViewportSwizzleNV& setX( ViewportCoordinateSwizzleNV x_ )
23861 {
23862 x = x_;
23863 return *this;
23864 }
23865
23866 ViewportSwizzleNV& setY( ViewportCoordinateSwizzleNV y_ )
23867 {
23868 y = y_;
23869 return *this;
23870 }
23871
23872 ViewportSwizzleNV& setZ( ViewportCoordinateSwizzleNV z_ )
23873 {
23874 z = z_;
23875 return *this;
23876 }
23877
23878 ViewportSwizzleNV& setW( ViewportCoordinateSwizzleNV w_ )
23879 {
23880 w = w_;
23881 return *this;
23882 }
23883
23884 operator const VkViewportSwizzleNV&() const
23885 {
23886 return *reinterpret_cast<const VkViewportSwizzleNV*>(this);
23887 }
23888
23889 bool operator==( ViewportSwizzleNV const& rhs ) const
23890 {
23891 return ( x == rhs.x )
23892 && ( y == rhs.y )
23893 && ( z == rhs.z )
23894 && ( w == rhs.w );
23895 }
23896
23897 bool operator!=( ViewportSwizzleNV const& rhs ) const
23898 {
23899 return !operator==( rhs );
23900 }
23901
23902 ViewportCoordinateSwizzleNV x;
23903 ViewportCoordinateSwizzleNV y;
23904 ViewportCoordinateSwizzleNV z;
23905 ViewportCoordinateSwizzleNV w;
23906 };
23907 static_assert( sizeof( ViewportSwizzleNV ) == sizeof( VkViewportSwizzleNV ), "struct and wrapper have different size!" );
23908
23909 struct PipelineViewportSwizzleStateCreateInfoNV
23910 {
23911 PipelineViewportSwizzleStateCreateInfoNV( PipelineViewportSwizzleStateCreateFlagsNV flags_ = PipelineViewportSwizzleStateCreateFlagsNV(), uint32_t viewportCount_ = 0, const ViewportSwizzleNV* pViewportSwizzles_ = nullptr )
23912 : sType( StructureType::ePipelineViewportSwizzleStateCreateInfoNV )
23913 , pNext( nullptr )
23914 , flags( flags_ )
23915 , viewportCount( viewportCount_ )
23916 , pViewportSwizzles( pViewportSwizzles_ )
23917 {
23918 }
23919
23920 PipelineViewportSwizzleStateCreateInfoNV( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
23921 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023922 memcpy( this, &rhs, sizeof( PipelineViewportSwizzleStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070023923 }
23924
23925 PipelineViewportSwizzleStateCreateInfoNV& operator=( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs )
23926 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060023927 memcpy( this, &rhs, sizeof( PipelineViewportSwizzleStateCreateInfoNV ) );
Mark Young0f183a82017-02-28 09:58:04 -070023928 return *this;
23929 }
Mark Young0f183a82017-02-28 09:58:04 -070023930 PipelineViewportSwizzleStateCreateInfoNV& setPNext( const void* pNext_ )
23931 {
23932 pNext = pNext_;
23933 return *this;
23934 }
23935
23936 PipelineViewportSwizzleStateCreateInfoNV& setFlags( PipelineViewportSwizzleStateCreateFlagsNV flags_ )
23937 {
23938 flags = flags_;
23939 return *this;
23940 }
23941
23942 PipelineViewportSwizzleStateCreateInfoNV& setViewportCount( uint32_t viewportCount_ )
23943 {
23944 viewportCount = viewportCount_;
23945 return *this;
23946 }
23947
23948 PipelineViewportSwizzleStateCreateInfoNV& setPViewportSwizzles( const ViewportSwizzleNV* pViewportSwizzles_ )
23949 {
23950 pViewportSwizzles = pViewportSwizzles_;
23951 return *this;
23952 }
23953
23954 operator const VkPipelineViewportSwizzleStateCreateInfoNV&() const
23955 {
23956 return *reinterpret_cast<const VkPipelineViewportSwizzleStateCreateInfoNV*>(this);
23957 }
23958
23959 bool operator==( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
23960 {
23961 return ( sType == rhs.sType )
23962 && ( pNext == rhs.pNext )
23963 && ( flags == rhs.flags )
23964 && ( viewportCount == rhs.viewportCount )
23965 && ( pViewportSwizzles == rhs.pViewportSwizzles );
23966 }
23967
23968 bool operator!=( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const
23969 {
23970 return !operator==( rhs );
23971 }
23972
23973 private:
23974 StructureType sType;
23975
23976 public:
23977 const void* pNext;
23978 PipelineViewportSwizzleStateCreateFlagsNV flags;
23979 uint32_t viewportCount;
23980 const ViewportSwizzleNV* pViewportSwizzles;
23981 };
23982 static_assert( sizeof( PipelineViewportSwizzleStateCreateInfoNV ) == sizeof( VkPipelineViewportSwizzleStateCreateInfoNV ), "struct and wrapper have different size!" );
23983
23984 enum class DiscardRectangleModeEXT
23985 {
23986 eInclusive = VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT,
23987 eExclusive = VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT
23988 };
23989
23990 struct PipelineDiscardRectangleStateCreateInfoEXT
23991 {
23992 PipelineDiscardRectangleStateCreateInfoEXT( PipelineDiscardRectangleStateCreateFlagsEXT flags_ = PipelineDiscardRectangleStateCreateFlagsEXT(), DiscardRectangleModeEXT discardRectangleMode_ = DiscardRectangleModeEXT::eInclusive, uint32_t discardRectangleCount_ = 0, const Rect2D* pDiscardRectangles_ = nullptr )
23993 : sType( StructureType::ePipelineDiscardRectangleStateCreateInfoEXT )
23994 , pNext( nullptr )
23995 , flags( flags_ )
23996 , discardRectangleMode( discardRectangleMode_ )
23997 , discardRectangleCount( discardRectangleCount_ )
23998 , pDiscardRectangles( pDiscardRectangles_ )
23999 {
24000 }
24001
24002 PipelineDiscardRectangleStateCreateInfoEXT( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
24003 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024004 memcpy( this, &rhs, sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070024005 }
24006
24007 PipelineDiscardRectangleStateCreateInfoEXT& operator=( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs )
24008 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024009 memcpy( this, &rhs, sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) );
Mark Young0f183a82017-02-28 09:58:04 -070024010 return *this;
24011 }
Mark Young0f183a82017-02-28 09:58:04 -070024012 PipelineDiscardRectangleStateCreateInfoEXT& setPNext( const void* pNext_ )
24013 {
24014 pNext = pNext_;
24015 return *this;
24016 }
24017
24018 PipelineDiscardRectangleStateCreateInfoEXT& setFlags( PipelineDiscardRectangleStateCreateFlagsEXT flags_ )
24019 {
24020 flags = flags_;
24021 return *this;
24022 }
24023
24024 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleMode( DiscardRectangleModeEXT discardRectangleMode_ )
24025 {
24026 discardRectangleMode = discardRectangleMode_;
24027 return *this;
24028 }
24029
24030 PipelineDiscardRectangleStateCreateInfoEXT& setDiscardRectangleCount( uint32_t discardRectangleCount_ )
24031 {
24032 discardRectangleCount = discardRectangleCount_;
24033 return *this;
24034 }
24035
24036 PipelineDiscardRectangleStateCreateInfoEXT& setPDiscardRectangles( const Rect2D* pDiscardRectangles_ )
24037 {
24038 pDiscardRectangles = pDiscardRectangles_;
24039 return *this;
24040 }
24041
24042 operator const VkPipelineDiscardRectangleStateCreateInfoEXT&() const
24043 {
24044 return *reinterpret_cast<const VkPipelineDiscardRectangleStateCreateInfoEXT*>(this);
24045 }
24046
24047 bool operator==( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
24048 {
24049 return ( sType == rhs.sType )
24050 && ( pNext == rhs.pNext )
24051 && ( flags == rhs.flags )
24052 && ( discardRectangleMode == rhs.discardRectangleMode )
24053 && ( discardRectangleCount == rhs.discardRectangleCount )
24054 && ( pDiscardRectangles == rhs.pDiscardRectangles );
24055 }
24056
24057 bool operator!=( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const
24058 {
24059 return !operator==( rhs );
24060 }
24061
24062 private:
24063 StructureType sType;
24064
24065 public:
24066 const void* pNext;
24067 PipelineDiscardRectangleStateCreateFlagsEXT flags;
24068 DiscardRectangleModeEXT discardRectangleMode;
24069 uint32_t discardRectangleCount;
24070 const Rect2D* pDiscardRectangles;
24071 };
24072 static_assert( sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) == sizeof( VkPipelineDiscardRectangleStateCreateInfoEXT ), "struct and wrapper have different size!" );
24073
24074 enum class SubpassDescriptionFlagBits
24075 {
24076 ePerViewAttributesNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX,
24077 ePerViewPositionXOnlyNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX
24078 };
24079
24080 using SubpassDescriptionFlags = Flags<SubpassDescriptionFlagBits, VkSubpassDescriptionFlags>;
24081
24082 VULKAN_HPP_INLINE SubpassDescriptionFlags operator|( SubpassDescriptionFlagBits bit0, SubpassDescriptionFlagBits bit1 )
24083 {
24084 return SubpassDescriptionFlags( bit0 ) | bit1;
24085 }
24086
24087 VULKAN_HPP_INLINE SubpassDescriptionFlags operator~( SubpassDescriptionFlagBits bits )
24088 {
24089 return ~( SubpassDescriptionFlags( bits ) );
24090 }
24091
24092 template <> struct FlagTraits<SubpassDescriptionFlagBits>
24093 {
24094 enum
24095 {
24096 allFlags = VkFlags(SubpassDescriptionFlagBits::ePerViewAttributesNVX) | VkFlags(SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX)
24097 };
24098 };
24099
24100 struct SubpassDescription
24101 {
24102 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 )
24103 : flags( flags_ )
24104 , pipelineBindPoint( pipelineBindPoint_ )
24105 , inputAttachmentCount( inputAttachmentCount_ )
24106 , pInputAttachments( pInputAttachments_ )
24107 , colorAttachmentCount( colorAttachmentCount_ )
24108 , pColorAttachments( pColorAttachments_ )
24109 , pResolveAttachments( pResolveAttachments_ )
24110 , pDepthStencilAttachment( pDepthStencilAttachment_ )
24111 , preserveAttachmentCount( preserveAttachmentCount_ )
24112 , pPreserveAttachments( pPreserveAttachments_ )
24113 {
24114 }
24115
24116 SubpassDescription( VkSubpassDescription const & rhs )
24117 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024118 memcpy( this, &rhs, sizeof( SubpassDescription ) );
Mark Young0f183a82017-02-28 09:58:04 -070024119 }
24120
24121 SubpassDescription& operator=( VkSubpassDescription const & rhs )
24122 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024123 memcpy( this, &rhs, sizeof( SubpassDescription ) );
Mark Young0f183a82017-02-28 09:58:04 -070024124 return *this;
24125 }
Mark Young0f183a82017-02-28 09:58:04 -070024126 SubpassDescription& setFlags( SubpassDescriptionFlags flags_ )
24127 {
24128 flags = flags_;
24129 return *this;
24130 }
24131
24132 SubpassDescription& setPipelineBindPoint( PipelineBindPoint pipelineBindPoint_ )
24133 {
24134 pipelineBindPoint = pipelineBindPoint_;
24135 return *this;
24136 }
24137
24138 SubpassDescription& setInputAttachmentCount( uint32_t inputAttachmentCount_ )
24139 {
24140 inputAttachmentCount = inputAttachmentCount_;
24141 return *this;
24142 }
24143
24144 SubpassDescription& setPInputAttachments( const AttachmentReference* pInputAttachments_ )
24145 {
24146 pInputAttachments = pInputAttachments_;
24147 return *this;
24148 }
24149
24150 SubpassDescription& setColorAttachmentCount( uint32_t colorAttachmentCount_ )
24151 {
24152 colorAttachmentCount = colorAttachmentCount_;
24153 return *this;
24154 }
24155
24156 SubpassDescription& setPColorAttachments( const AttachmentReference* pColorAttachments_ )
24157 {
24158 pColorAttachments = pColorAttachments_;
24159 return *this;
24160 }
24161
24162 SubpassDescription& setPResolveAttachments( const AttachmentReference* pResolveAttachments_ )
24163 {
24164 pResolveAttachments = pResolveAttachments_;
24165 return *this;
24166 }
24167
24168 SubpassDescription& setPDepthStencilAttachment( const AttachmentReference* pDepthStencilAttachment_ )
24169 {
24170 pDepthStencilAttachment = pDepthStencilAttachment_;
24171 return *this;
24172 }
24173
24174 SubpassDescription& setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ )
24175 {
24176 preserveAttachmentCount = preserveAttachmentCount_;
24177 return *this;
24178 }
24179
24180 SubpassDescription& setPPreserveAttachments( const uint32_t* pPreserveAttachments_ )
24181 {
24182 pPreserveAttachments = pPreserveAttachments_;
24183 return *this;
24184 }
24185
24186 operator const VkSubpassDescription&() const
24187 {
24188 return *reinterpret_cast<const VkSubpassDescription*>(this);
24189 }
24190
24191 bool operator==( SubpassDescription const& rhs ) const
24192 {
24193 return ( flags == rhs.flags )
24194 && ( pipelineBindPoint == rhs.pipelineBindPoint )
24195 && ( inputAttachmentCount == rhs.inputAttachmentCount )
24196 && ( pInputAttachments == rhs.pInputAttachments )
24197 && ( colorAttachmentCount == rhs.colorAttachmentCount )
24198 && ( pColorAttachments == rhs.pColorAttachments )
24199 && ( pResolveAttachments == rhs.pResolveAttachments )
24200 && ( pDepthStencilAttachment == rhs.pDepthStencilAttachment )
24201 && ( preserveAttachmentCount == rhs.preserveAttachmentCount )
24202 && ( pPreserveAttachments == rhs.pPreserveAttachments );
24203 }
24204
24205 bool operator!=( SubpassDescription const& rhs ) const
24206 {
24207 return !operator==( rhs );
24208 }
24209
24210 SubpassDescriptionFlags flags;
24211 PipelineBindPoint pipelineBindPoint;
24212 uint32_t inputAttachmentCount;
24213 const AttachmentReference* pInputAttachments;
24214 uint32_t colorAttachmentCount;
24215 const AttachmentReference* pColorAttachments;
24216 const AttachmentReference* pResolveAttachments;
24217 const AttachmentReference* pDepthStencilAttachment;
24218 uint32_t preserveAttachmentCount;
24219 const uint32_t* pPreserveAttachments;
24220 };
24221 static_assert( sizeof( SubpassDescription ) == sizeof( VkSubpassDescription ), "struct and wrapper have different size!" );
24222
24223 struct RenderPassCreateInfo
24224 {
24225 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 )
24226 : sType( StructureType::eRenderPassCreateInfo )
24227 , pNext( nullptr )
24228 , flags( flags_ )
24229 , attachmentCount( attachmentCount_ )
24230 , pAttachments( pAttachments_ )
24231 , subpassCount( subpassCount_ )
24232 , pSubpasses( pSubpasses_ )
24233 , dependencyCount( dependencyCount_ )
24234 , pDependencies( pDependencies_ )
24235 {
24236 }
24237
24238 RenderPassCreateInfo( VkRenderPassCreateInfo const & rhs )
24239 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024240 memcpy( this, &rhs, sizeof( RenderPassCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070024241 }
24242
24243 RenderPassCreateInfo& operator=( VkRenderPassCreateInfo const & rhs )
24244 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024245 memcpy( this, &rhs, sizeof( RenderPassCreateInfo ) );
Mark Young0f183a82017-02-28 09:58:04 -070024246 return *this;
24247 }
Mark Young0f183a82017-02-28 09:58:04 -070024248 RenderPassCreateInfo& setPNext( const void* pNext_ )
24249 {
24250 pNext = pNext_;
24251 return *this;
24252 }
24253
24254 RenderPassCreateInfo& setFlags( RenderPassCreateFlags flags_ )
24255 {
24256 flags = flags_;
24257 return *this;
24258 }
24259
24260 RenderPassCreateInfo& setAttachmentCount( uint32_t attachmentCount_ )
24261 {
24262 attachmentCount = attachmentCount_;
24263 return *this;
24264 }
24265
24266 RenderPassCreateInfo& setPAttachments( const AttachmentDescription* pAttachments_ )
24267 {
24268 pAttachments = pAttachments_;
24269 return *this;
24270 }
24271
24272 RenderPassCreateInfo& setSubpassCount( uint32_t subpassCount_ )
24273 {
24274 subpassCount = subpassCount_;
24275 return *this;
24276 }
24277
24278 RenderPassCreateInfo& setPSubpasses( const SubpassDescription* pSubpasses_ )
24279 {
24280 pSubpasses = pSubpasses_;
24281 return *this;
24282 }
24283
24284 RenderPassCreateInfo& setDependencyCount( uint32_t dependencyCount_ )
24285 {
24286 dependencyCount = dependencyCount_;
24287 return *this;
24288 }
24289
24290 RenderPassCreateInfo& setPDependencies( const SubpassDependency* pDependencies_ )
24291 {
24292 pDependencies = pDependencies_;
24293 return *this;
24294 }
24295
24296 operator const VkRenderPassCreateInfo&() const
24297 {
24298 return *reinterpret_cast<const VkRenderPassCreateInfo*>(this);
24299 }
24300
24301 bool operator==( RenderPassCreateInfo const& rhs ) const
24302 {
24303 return ( sType == rhs.sType )
24304 && ( pNext == rhs.pNext )
24305 && ( flags == rhs.flags )
24306 && ( attachmentCount == rhs.attachmentCount )
24307 && ( pAttachments == rhs.pAttachments )
24308 && ( subpassCount == rhs.subpassCount )
24309 && ( pSubpasses == rhs.pSubpasses )
24310 && ( dependencyCount == rhs.dependencyCount )
24311 && ( pDependencies == rhs.pDependencies );
24312 }
24313
24314 bool operator!=( RenderPassCreateInfo const& rhs ) const
24315 {
24316 return !operator==( rhs );
24317 }
24318
24319 private:
24320 StructureType sType;
24321
24322 public:
24323 const void* pNext;
24324 RenderPassCreateFlags flags;
24325 uint32_t attachmentCount;
24326 const AttachmentDescription* pAttachments;
24327 uint32_t subpassCount;
24328 const SubpassDescription* pSubpasses;
24329 uint32_t dependencyCount;
24330 const SubpassDependency* pDependencies;
24331 };
24332 static_assert( sizeof( RenderPassCreateInfo ) == sizeof( VkRenderPassCreateInfo ), "struct and wrapper have different size!" );
24333
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060024334 enum class SamplerReductionModeEXT
24335 {
24336 eWeightedAverage = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT,
24337 eMin = VK_SAMPLER_REDUCTION_MODE_MIN_EXT,
24338 eMax = VK_SAMPLER_REDUCTION_MODE_MAX_EXT
24339 };
24340
24341 struct SamplerReductionModeCreateInfoEXT
24342 {
24343 SamplerReductionModeCreateInfoEXT( SamplerReductionModeEXT reductionMode_ = SamplerReductionModeEXT::eWeightedAverage )
24344 : sType( StructureType::eSamplerReductionModeCreateInfoEXT )
24345 , pNext( nullptr )
24346 , reductionMode( reductionMode_ )
24347 {
24348 }
24349
24350 SamplerReductionModeCreateInfoEXT( VkSamplerReductionModeCreateInfoEXT const & rhs )
24351 {
24352 memcpy( this, &rhs, sizeof( SamplerReductionModeCreateInfoEXT ) );
24353 }
24354
24355 SamplerReductionModeCreateInfoEXT& operator=( VkSamplerReductionModeCreateInfoEXT const & rhs )
24356 {
24357 memcpy( this, &rhs, sizeof( SamplerReductionModeCreateInfoEXT ) );
24358 return *this;
24359 }
24360 SamplerReductionModeCreateInfoEXT& setPNext( const void* pNext_ )
24361 {
24362 pNext = pNext_;
24363 return *this;
24364 }
24365
24366 SamplerReductionModeCreateInfoEXT& setReductionMode( SamplerReductionModeEXT reductionMode_ )
24367 {
24368 reductionMode = reductionMode_;
24369 return *this;
24370 }
24371
24372 operator const VkSamplerReductionModeCreateInfoEXT&() const
24373 {
24374 return *reinterpret_cast<const VkSamplerReductionModeCreateInfoEXT*>(this);
24375 }
24376
24377 bool operator==( SamplerReductionModeCreateInfoEXT const& rhs ) const
24378 {
24379 return ( sType == rhs.sType )
24380 && ( pNext == rhs.pNext )
24381 && ( reductionMode == rhs.reductionMode );
24382 }
24383
24384 bool operator!=( SamplerReductionModeCreateInfoEXT const& rhs ) const
24385 {
24386 return !operator==( rhs );
24387 }
24388
24389 private:
24390 StructureType sType;
24391
24392 public:
24393 const void* pNext;
24394 SamplerReductionModeEXT reductionMode;
24395 };
24396 static_assert( sizeof( SamplerReductionModeCreateInfoEXT ) == sizeof( VkSamplerReductionModeCreateInfoEXT ), "struct and wrapper have different size!" );
24397
24398 enum class BlendOverlapEXT
24399 {
24400 eUncorrelated = VK_BLEND_OVERLAP_UNCORRELATED_EXT,
24401 eDisjoint = VK_BLEND_OVERLAP_DISJOINT_EXT,
24402 eConjoint = VK_BLEND_OVERLAP_CONJOINT_EXT
24403 };
24404
24405 struct PipelineColorBlendAdvancedStateCreateInfoEXT
24406 {
24407 PipelineColorBlendAdvancedStateCreateInfoEXT( Bool32 srcPremultiplied_ = 0, Bool32 dstPremultiplied_ = 0, BlendOverlapEXT blendOverlap_ = BlendOverlapEXT::eUncorrelated )
24408 : sType( StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT )
24409 , pNext( nullptr )
24410 , srcPremultiplied( srcPremultiplied_ )
24411 , dstPremultiplied( dstPremultiplied_ )
24412 , blendOverlap( blendOverlap_ )
24413 {
24414 }
24415
24416 PipelineColorBlendAdvancedStateCreateInfoEXT( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs )
24417 {
24418 memcpy( this, &rhs, sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) );
24419 }
24420
24421 PipelineColorBlendAdvancedStateCreateInfoEXT& operator=( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs )
24422 {
24423 memcpy( this, &rhs, sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) );
24424 return *this;
24425 }
24426 PipelineColorBlendAdvancedStateCreateInfoEXT& setPNext( const void* pNext_ )
24427 {
24428 pNext = pNext_;
24429 return *this;
24430 }
24431
24432 PipelineColorBlendAdvancedStateCreateInfoEXT& setSrcPremultiplied( Bool32 srcPremultiplied_ )
24433 {
24434 srcPremultiplied = srcPremultiplied_;
24435 return *this;
24436 }
24437
24438 PipelineColorBlendAdvancedStateCreateInfoEXT& setDstPremultiplied( Bool32 dstPremultiplied_ )
24439 {
24440 dstPremultiplied = dstPremultiplied_;
24441 return *this;
24442 }
24443
24444 PipelineColorBlendAdvancedStateCreateInfoEXT& setBlendOverlap( BlendOverlapEXT blendOverlap_ )
24445 {
24446 blendOverlap = blendOverlap_;
24447 return *this;
24448 }
24449
24450 operator const VkPipelineColorBlendAdvancedStateCreateInfoEXT&() const
24451 {
24452 return *reinterpret_cast<const VkPipelineColorBlendAdvancedStateCreateInfoEXT*>(this);
24453 }
24454
24455 bool operator==( PipelineColorBlendAdvancedStateCreateInfoEXT const& rhs ) const
24456 {
24457 return ( sType == rhs.sType )
24458 && ( pNext == rhs.pNext )
24459 && ( srcPremultiplied == rhs.srcPremultiplied )
24460 && ( dstPremultiplied == rhs.dstPremultiplied )
24461 && ( blendOverlap == rhs.blendOverlap );
24462 }
24463
24464 bool operator!=( PipelineColorBlendAdvancedStateCreateInfoEXT const& rhs ) const
24465 {
24466 return !operator==( rhs );
24467 }
24468
24469 private:
24470 StructureType sType;
24471
24472 public:
24473 const void* pNext;
24474 Bool32 srcPremultiplied;
24475 Bool32 dstPremultiplied;
24476 BlendOverlapEXT blendOverlap;
24477 };
24478 static_assert( sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) == sizeof( VkPipelineColorBlendAdvancedStateCreateInfoEXT ), "struct and wrapper have different size!" );
24479
24480 enum class CoverageModulationModeNV
24481 {
24482 eNone = VK_COVERAGE_MODULATION_MODE_NONE_NV,
24483 eRgb = VK_COVERAGE_MODULATION_MODE_RGB_NV,
24484 eAlpha = VK_COVERAGE_MODULATION_MODE_ALPHA_NV,
24485 eRgba = VK_COVERAGE_MODULATION_MODE_RGBA_NV
24486 };
24487
24488 struct PipelineCoverageModulationStateCreateInfoNV
24489 {
24490 PipelineCoverageModulationStateCreateInfoNV( PipelineCoverageModulationStateCreateFlagsNV flags_ = PipelineCoverageModulationStateCreateFlagsNV(), CoverageModulationModeNV coverageModulationMode_ = CoverageModulationModeNV::eNone, Bool32 coverageModulationTableEnable_ = 0, uint32_t coverageModulationTableCount_ = 0, const float* pCoverageModulationTable_ = nullptr )
24491 : sType( StructureType::ePipelineCoverageModulationStateCreateInfoNV )
24492 , pNext( nullptr )
24493 , flags( flags_ )
24494 , coverageModulationMode( coverageModulationMode_ )
24495 , coverageModulationTableEnable( coverageModulationTableEnable_ )
24496 , coverageModulationTableCount( coverageModulationTableCount_ )
24497 , pCoverageModulationTable( pCoverageModulationTable_ )
24498 {
24499 }
24500
24501 PipelineCoverageModulationStateCreateInfoNV( VkPipelineCoverageModulationStateCreateInfoNV const & rhs )
24502 {
24503 memcpy( this, &rhs, sizeof( PipelineCoverageModulationStateCreateInfoNV ) );
24504 }
24505
24506 PipelineCoverageModulationStateCreateInfoNV& operator=( VkPipelineCoverageModulationStateCreateInfoNV const & rhs )
24507 {
24508 memcpy( this, &rhs, sizeof( PipelineCoverageModulationStateCreateInfoNV ) );
24509 return *this;
24510 }
24511 PipelineCoverageModulationStateCreateInfoNV& setPNext( const void* pNext_ )
24512 {
24513 pNext = pNext_;
24514 return *this;
24515 }
24516
24517 PipelineCoverageModulationStateCreateInfoNV& setFlags( PipelineCoverageModulationStateCreateFlagsNV flags_ )
24518 {
24519 flags = flags_;
24520 return *this;
24521 }
24522
24523 PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationMode( CoverageModulationModeNV coverageModulationMode_ )
24524 {
24525 coverageModulationMode = coverageModulationMode_;
24526 return *this;
24527 }
24528
24529 PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationTableEnable( Bool32 coverageModulationTableEnable_ )
24530 {
24531 coverageModulationTableEnable = coverageModulationTableEnable_;
24532 return *this;
24533 }
24534
24535 PipelineCoverageModulationStateCreateInfoNV& setCoverageModulationTableCount( uint32_t coverageModulationTableCount_ )
24536 {
24537 coverageModulationTableCount = coverageModulationTableCount_;
24538 return *this;
24539 }
24540
24541 PipelineCoverageModulationStateCreateInfoNV& setPCoverageModulationTable( const float* pCoverageModulationTable_ )
24542 {
24543 pCoverageModulationTable = pCoverageModulationTable_;
24544 return *this;
24545 }
24546
24547 operator const VkPipelineCoverageModulationStateCreateInfoNV&() const
24548 {
24549 return *reinterpret_cast<const VkPipelineCoverageModulationStateCreateInfoNV*>(this);
24550 }
24551
24552 bool operator==( PipelineCoverageModulationStateCreateInfoNV const& rhs ) const
24553 {
24554 return ( sType == rhs.sType )
24555 && ( pNext == rhs.pNext )
24556 && ( flags == rhs.flags )
24557 && ( coverageModulationMode == rhs.coverageModulationMode )
24558 && ( coverageModulationTableEnable == rhs.coverageModulationTableEnable )
24559 && ( coverageModulationTableCount == rhs.coverageModulationTableCount )
24560 && ( pCoverageModulationTable == rhs.pCoverageModulationTable );
24561 }
24562
24563 bool operator!=( PipelineCoverageModulationStateCreateInfoNV const& rhs ) const
24564 {
24565 return !operator==( rhs );
24566 }
24567
24568 private:
24569 StructureType sType;
24570
24571 public:
24572 const void* pNext;
24573 PipelineCoverageModulationStateCreateFlagsNV flags;
24574 CoverageModulationModeNV coverageModulationMode;
24575 Bool32 coverageModulationTableEnable;
24576 uint32_t coverageModulationTableCount;
24577 const float* pCoverageModulationTable;
24578 };
24579 static_assert( sizeof( PipelineCoverageModulationStateCreateInfoNV ) == sizeof( VkPipelineCoverageModulationStateCreateInfoNV ), "struct and wrapper have different size!" );
24580
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060024581 enum class ValidationCacheHeaderVersionEXT
24582 {
24583 eOne = VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT
24584 };
24585
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024586 Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024587#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024588 template <typename Allocator = std::allocator<LayerProperties>>
24589 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties();
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024590#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24591
Mark Lobodzinski2d589822016-12-12 09:44:34 -070024592 VULKAN_HPP_INLINE Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties )
24593 {
24594 return static_cast<Result>( vkEnumerateInstanceLayerProperties( pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
24595 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070024596#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024597 template <typename Allocator>
24598 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateInstanceLayerProperties()
Mark Lobodzinski2d589822016-12-12 09:44:34 -070024599 {
24600 std::vector<LayerProperties,Allocator> properties;
24601 uint32_t propertyCount;
24602 Result result;
24603 do
24604 {
24605 result = static_cast<Result>( vkEnumerateInstanceLayerProperties( &propertyCount, nullptr ) );
24606 if ( ( result == Result::eSuccess ) && propertyCount )
24607 {
24608 properties.resize( propertyCount );
24609 result = static_cast<Result>( vkEnumerateInstanceLayerProperties( &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
24610 }
24611 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024612 assert( propertyCount <= properties.size() );
24613 properties.resize( propertyCount );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070024614 return createResultValue( result, properties, "vk::enumerateInstanceLayerProperties" );
24615 }
24616#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24617
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024618
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024619 Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024620#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024621 template <typename Allocator = std::allocator<ExtensionProperties>>
24622 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName = nullptr );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024623#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24624
Mark Lobodzinski2d589822016-12-12 09:44:34 -070024625 VULKAN_HPP_INLINE Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties )
24626 {
24627 return static_cast<Result>( vkEnumerateInstanceExtensionProperties( pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
24628 }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070024629#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024630 template <typename Allocator>
24631 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateInstanceExtensionProperties( Optional<const std::string> layerName )
Mark Lobodzinski2d589822016-12-12 09:44:34 -070024632 {
24633 std::vector<ExtensionProperties,Allocator> properties;
24634 uint32_t propertyCount;
24635 Result result;
24636 do
24637 {
24638 result = static_cast<Result>( vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
24639 if ( ( result == Result::eSuccess ) && propertyCount )
24640 {
24641 properties.resize( propertyCount );
24642 result = static_cast<Result>( vkEnumerateInstanceExtensionProperties( layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
24643 }
24644 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024645 assert( propertyCount <= properties.size() );
24646 properties.resize( propertyCount );
Mark Lobodzinski2d589822016-12-12 09:44:34 -070024647 return createResultValue( result, properties, "vk::enumerateInstanceExtensionProperties" );
24648 }
24649#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24650
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060024651
Mark Lobodzinski2d589822016-12-12 09:44:34 -070024652 // forward declarations
24653 struct CmdProcessCommandsInfoNVX;
24654
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024655 class CommandBuffer
24656 {
24657 public:
24658 CommandBuffer()
24659 : m_commandBuffer(VK_NULL_HANDLE)
24660 {}
24661
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070024662 CommandBuffer( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024663 : m_commandBuffer(VK_NULL_HANDLE)
24664 {}
24665
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024666 VULKAN_HPP_TYPESAFE_EXPLICIT CommandBuffer( VkCommandBuffer commandBuffer )
24667 : m_commandBuffer( commandBuffer )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024668 {}
24669
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070024670#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024671 CommandBuffer & operator=(VkCommandBuffer commandBuffer)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024672 {
24673 m_commandBuffer = commandBuffer;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024674 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024675 }
24676#endif
24677
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024678 CommandBuffer & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024679 {
24680 m_commandBuffer = VK_NULL_HANDLE;
24681 return *this;
24682 }
24683
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024684 bool operator==( CommandBuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060024685 {
24686 return m_commandBuffer == rhs.m_commandBuffer;
24687 }
24688
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024689 bool operator!=(CommandBuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060024690 {
24691 return m_commandBuffer != rhs.m_commandBuffer;
24692 }
24693
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024694 bool operator<(CommandBuffer const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060024695 {
24696 return m_commandBuffer < rhs.m_commandBuffer;
24697 }
24698
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024699 Result begin( const CommandBufferBeginInfo* pBeginInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024700#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024701 ResultValueType<void>::type begin( const CommandBufferBeginInfo & beginInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024702#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24703
24704#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024705 Result end() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024706#else
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024707 ResultValueType<void>::type end() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024708#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24709
24710#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024711 Result reset( CommandBufferResetFlags flags ) const;
24712#else
24713 ResultValueType<void>::type reset( CommandBufferResetFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024714#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24715
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024716 void bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024717
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024718 void setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024719#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024720 void setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024721#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24722
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024723 void setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024724#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024725 void setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024726#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24727
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024728 void setLineWidth( float lineWidth ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024729
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024730 void setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const;
24731
24732 void setBlendConstants( const float blendConstants[4] ) const;
24733
24734 void setDepthBounds( float minDepthBounds, float maxDepthBounds ) const;
24735
24736 void setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const;
24737
24738 void setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const;
24739
24740 void setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const;
24741
24742 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 -060024743#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024744 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 -060024745#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24746
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024747 void bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024748
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024749 void bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024750#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024751 void bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024752#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24753
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024754 void draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024755
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024756 void drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const;
24757
24758 void drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const;
24759
24760 void drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const;
24761
Mark Young0f183a82017-02-28 09:58:04 -070024762 void dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024763
24764 void dispatchIndirect( Buffer buffer, DeviceSize offset ) const;
24765
24766 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024767#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024768 void copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024769#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24770
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024771 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024772#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024773 void copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024774#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24775
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024776 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 -060024777#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024778 void blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024779#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24780
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024781 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024782#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024783 void copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024784#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24785
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024786 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024787#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024788 void copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024789#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24790
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024791 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024792#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24793 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024794 void updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024795#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24796
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024797 void fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024798
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024799 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024800#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024801 void clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024802#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24803
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024804 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024805#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024806 void clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024807#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24808
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024809 void clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024810#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024811 void clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024812#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24813
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024814 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024815#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024816 void resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024817#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24818
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024819 void setEvent( Event event, PipelineStageFlags stageMask ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024820
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024821 void resetEvent( Event event, PipelineStageFlags stageMask ) const;
24822
24823 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 -060024824#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024825 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 -060024826#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24827
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024828 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 -060024829#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024830 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 -060024831#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24832
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024833 void beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024834
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024835 void endQuery( QueryPool queryPool, uint32_t query ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024836
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024837 void resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024838
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024839 void writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024840
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024841 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 -060024842
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024843 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024844#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24845 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024846 void pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024847#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24848
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024849 void beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024850#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024851 void beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024852#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24853
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024854 void nextSubpass( SubpassContents contents ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024855
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024856 void endRenderPass() const;
24857
24858 void executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024859#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024860 void executeCommands( ArrayProxy<const CommandBuffer> commandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024861#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24862
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060024863 void debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024864#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060024865 void debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024866#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24867
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024868 void debugMarkerEndEXT() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024869
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060024870 void debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024871#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060024872 void debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024873#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24874
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024875 void drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024876
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024877 void drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const;
24878
24879 void processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024880#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024881 void processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024882#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24883
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024884 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024885#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024886 void reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070024887#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24888
Mark Young0f183a82017-02-28 09:58:04 -070024889 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites ) const;
24890#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24891 void pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites ) const;
24892#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24893
24894 void setDeviceMaskKHX( uint32_t deviceMask ) const;
24895
24896 void dispatchBaseKHX( uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const;
24897
24898 void pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData ) const;
24899
24900 void setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings ) const;
24901#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24902 void setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings ) const;
24903#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24904
24905 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles ) const;
24906#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24907 void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles ) const;
24908#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24909
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060024910 void setSampleLocationsEXT( const SampleLocationsInfoEXT* pSampleLocationsInfo ) const;
24911#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24912 void setSampleLocationsEXT( const SampleLocationsInfoEXT & sampleLocationsInfo ) const;
24913#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24914
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024915
24916
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070024917 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkCommandBuffer() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024918 {
24919 return m_commandBuffer;
24920 }
24921
24922 explicit operator bool() const
24923 {
24924 return m_commandBuffer != VK_NULL_HANDLE;
24925 }
24926
24927 bool operator!() const
24928 {
24929 return m_commandBuffer == VK_NULL_HANDLE;
24930 }
24931
24932 private:
24933 VkCommandBuffer m_commandBuffer;
24934 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060024935
Lenny Komowbed9b5c2016-08-11 11:23:15 -060024936 static_assert( sizeof( CommandBuffer ) == sizeof( VkCommandBuffer ), "handle and wrapper have different size!" );
24937
Mark Lobodzinski36c33862017-02-13 10:15:53 -070024938 VULKAN_HPP_INLINE Result CommandBuffer::begin( const CommandBufferBeginInfo* pBeginInfo ) const
24939 {
24940 return static_cast<Result>( vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( pBeginInfo ) ) );
24941 }
24942#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24943 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::begin( const CommandBufferBeginInfo & beginInfo ) const
24944 {
24945 Result result = static_cast<Result>( vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast<const VkCommandBufferBeginInfo*>( &beginInfo ) ) );
24946 return createResultValue( result, "vk::CommandBuffer::begin" );
24947 }
24948#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24949
24950#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24951 VULKAN_HPP_INLINE Result CommandBuffer::end() const
24952 {
24953 return static_cast<Result>( vkEndCommandBuffer( m_commandBuffer ) );
24954 }
24955#else
24956 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::end() const
24957 {
24958 Result result = static_cast<Result>( vkEndCommandBuffer( m_commandBuffer ) );
24959 return createResultValue( result, "vk::CommandBuffer::end" );
24960 }
24961#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24962
24963#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
24964 VULKAN_HPP_INLINE Result CommandBuffer::reset( CommandBufferResetFlags flags ) const
24965 {
24966 return static_cast<Result>( vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
24967 }
24968#else
24969 VULKAN_HPP_INLINE ResultValueType<void>::type CommandBuffer::reset( CommandBufferResetFlags flags ) const
24970 {
24971 Result result = static_cast<Result>( vkResetCommandBuffer( m_commandBuffer, static_cast<VkCommandBufferResetFlags>( flags ) ) );
24972 return createResultValue( result, "vk::CommandBuffer::reset" );
24973 }
24974#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24975
24976 VULKAN_HPP_INLINE void CommandBuffer::bindPipeline( PipelineBindPoint pipelineBindPoint, Pipeline pipeline ) const
24977 {
24978 vkCmdBindPipeline( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipeline>( pipeline ) );
24979 }
24980
24981 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, uint32_t viewportCount, const Viewport* pViewports ) const
24982 {
24983 vkCmdSetViewport( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewport*>( pViewports ) );
24984 }
24985#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24986 VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, ArrayProxy<const Viewport> viewports ) const
24987 {
24988 vkCmdSetViewport( m_commandBuffer, firstViewport, viewports.size() , reinterpret_cast<const VkViewport*>( viewports.data() ) );
24989 }
24990#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
24991
24992 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, uint32_t scissorCount, const Rect2D* pScissors ) const
24993 {
24994 vkCmdSetScissor( m_commandBuffer, firstScissor, scissorCount, reinterpret_cast<const VkRect2D*>( pScissors ) );
24995 }
24996#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
24997 VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, ArrayProxy<const Rect2D> scissors ) const
24998 {
24999 vkCmdSetScissor( m_commandBuffer, firstScissor, scissors.size() , reinterpret_cast<const VkRect2D*>( scissors.data() ) );
25000 }
25001#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25002
25003 VULKAN_HPP_INLINE void CommandBuffer::setLineWidth( float lineWidth ) const
25004 {
25005 vkCmdSetLineWidth( m_commandBuffer, lineWidth );
25006 }
25007
25008 VULKAN_HPP_INLINE void CommandBuffer::setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const
25009 {
25010 vkCmdSetDepthBias( m_commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor );
25011 }
25012
25013 VULKAN_HPP_INLINE void CommandBuffer::setBlendConstants( const float blendConstants[4] ) const
25014 {
25015 vkCmdSetBlendConstants( m_commandBuffer, blendConstants );
25016 }
25017
25018 VULKAN_HPP_INLINE void CommandBuffer::setDepthBounds( float minDepthBounds, float maxDepthBounds ) const
25019 {
25020 vkCmdSetDepthBounds( m_commandBuffer, minDepthBounds, maxDepthBounds );
25021 }
25022
25023 VULKAN_HPP_INLINE void CommandBuffer::setStencilCompareMask( StencilFaceFlags faceMask, uint32_t compareMask ) const
25024 {
25025 vkCmdSetStencilCompareMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), compareMask );
25026 }
25027
25028 VULKAN_HPP_INLINE void CommandBuffer::setStencilWriteMask( StencilFaceFlags faceMask, uint32_t writeMask ) const
25029 {
25030 vkCmdSetStencilWriteMask( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), writeMask );
25031 }
25032
25033 VULKAN_HPP_INLINE void CommandBuffer::setStencilReference( StencilFaceFlags faceMask, uint32_t reference ) const
25034 {
25035 vkCmdSetStencilReference( m_commandBuffer, static_cast<VkStencilFaceFlags>( faceMask ), reference );
25036 }
25037
25038 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
25039 {
25040 vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ), dynamicOffsetCount, pDynamicOffsets );
25041 }
25042#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25043 VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t firstSet, ArrayProxy<const DescriptorSet> descriptorSets, ArrayProxy<const uint32_t> dynamicOffsets ) const
25044 {
25045 vkCmdBindDescriptorSets( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), firstSet, descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ), dynamicOffsets.size() , dynamicOffsets.data() );
25046 }
25047#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25048
25049 VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer( Buffer buffer, DeviceSize offset, IndexType indexType ) const
25050 {
25051 vkCmdBindIndexBuffer( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkIndexType>( indexType ) );
25052 }
25053
25054 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const Buffer* pBuffers, const DeviceSize* pOffsets ) const
25055 {
25056 vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, bindingCount, reinterpret_cast<const VkBuffer*>( pBuffers ), pOffsets );
25057 }
25058#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25059 VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, ArrayProxy<const Buffer> buffers, ArrayProxy<const DeviceSize> offsets ) const
25060 {
25061#ifdef VULKAN_HPP_NO_EXCEPTIONS
25062 assert( buffers.size() == offsets.size() );
25063#else
25064 if ( buffers.size() != offsets.size() )
25065 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025066 throw LogicError( "vk::CommandBuffer::bindVertexBuffers: buffers.size() != offsets.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025067 }
25068#endif // VULKAN_HPP_NO_EXCEPTIONS
25069 vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, buffers.size() , reinterpret_cast<const VkBuffer*>( buffers.data() ), offsets.data() );
25070 }
25071#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25072
25073 VULKAN_HPP_INLINE void CommandBuffer::draw( uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance ) const
25074 {
25075 vkCmdDraw( m_commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance );
25076 }
25077
25078 VULKAN_HPP_INLINE void CommandBuffer::drawIndexed( uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance ) const
25079 {
25080 vkCmdDrawIndexed( m_commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance );
25081 }
25082
25083 VULKAN_HPP_INLINE void CommandBuffer::drawIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const
25084 {
25085 vkCmdDrawIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
25086 }
25087
25088 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect( Buffer buffer, DeviceSize offset, uint32_t drawCount, uint32_t stride ) const
25089 {
25090 vkCmdDrawIndexedIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, drawCount, stride );
25091 }
25092
Mark Young0f183a82017-02-28 09:58:04 -070025093 VULKAN_HPP_INLINE void CommandBuffer::dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025094 {
Mark Young0f183a82017-02-28 09:58:04 -070025095 vkCmdDispatch( m_commandBuffer, groupCountX, groupCountY, groupCountZ );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025096 }
25097
25098 VULKAN_HPP_INLINE void CommandBuffer::dispatchIndirect( Buffer buffer, DeviceSize offset ) const
25099 {
25100 vkCmdDispatchIndirect( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset );
25101 }
25102
25103 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, uint32_t regionCount, const BufferCopy* pRegions ) const
25104 {
25105 vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferCopy*>( pRegions ) );
25106 }
25107#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25108 VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( Buffer srcBuffer, Buffer dstBuffer, ArrayProxy<const BufferCopy> regions ) const
25109 {
25110 vkCmdCopyBuffer( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferCopy*>( regions.data() ) );
25111 }
25112#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25113
25114 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageCopy* pRegions ) const
25115 {
25116 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 ) );
25117 }
25118#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25119 VULKAN_HPP_INLINE void CommandBuffer::copyImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageCopy> regions ) const
25120 {
25121 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() ) );
25122 }
25123#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25124
25125 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageBlit* pRegions, Filter filter ) const
25126 {
25127 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 ) );
25128 }
25129#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25130 VULKAN_HPP_INLINE void CommandBuffer::blitImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageBlit> regions, Filter filter ) const
25131 {
25132 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 ) );
25133 }
25134#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25135
25136 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const BufferImageCopy* pRegions ) const
25137 {
25138 vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
25139 }
25140#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25141 VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( Buffer srcBuffer, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const BufferImageCopy> regions ) const
25142 {
25143 vkCmdCopyBufferToImage( m_commandBuffer, static_cast<VkBuffer>( srcBuffer ), static_cast<VkImage>( dstImage ), static_cast<VkImageLayout>( dstImageLayout ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
25144 }
25145#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25146
25147 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, uint32_t regionCount, const BufferImageCopy* pRegions ) const
25148 {
25149 vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regionCount, reinterpret_cast<const VkBufferImageCopy*>( pRegions ) );
25150 }
25151#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25152 VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( Image srcImage, ImageLayout srcImageLayout, Buffer dstBuffer, ArrayProxy<const BufferImageCopy> regions ) const
25153 {
25154 vkCmdCopyImageToBuffer( m_commandBuffer, static_cast<VkImage>( srcImage ), static_cast<VkImageLayout>( srcImageLayout ), static_cast<VkBuffer>( dstBuffer ), regions.size() , reinterpret_cast<const VkBufferImageCopy*>( regions.data() ) );
25155 }
25156#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25157
25158 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize dataSize, const void* pData ) const
25159 {
25160 vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, dataSize, pData );
25161 }
25162#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25163 template <typename T>
25164 VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( Buffer dstBuffer, DeviceSize dstOffset, ArrayProxy<const T> data ) const
25165 {
25166 vkCmdUpdateBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, data.size() * sizeof( T ) , reinterpret_cast<const void*>( data.data() ) );
25167 }
25168#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25169
25170 VULKAN_HPP_INLINE void CommandBuffer::fillBuffer( Buffer dstBuffer, DeviceSize dstOffset, DeviceSize size, uint32_t data ) const
25171 {
25172 vkCmdFillBuffer( m_commandBuffer, static_cast<VkBuffer>( dstBuffer ), dstOffset, size, data );
25173 }
25174
25175 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue* pColor, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const
25176 {
25177 vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( pColor ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
25178 }
25179#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25180 VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( Image image, ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy<const ImageSubresourceRange> ranges ) const
25181 {
25182 vkCmdClearColorImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearColorValue*>( &color ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
25183 }
25184#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25185
25186 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const ImageSubresourceRange* pRanges ) const
25187 {
25188 vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( pDepthStencil ), rangeCount, reinterpret_cast<const VkImageSubresourceRange*>( pRanges ) );
25189 }
25190#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25191 VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( Image image, ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy<const ImageSubresourceRange> ranges ) const
25192 {
25193 vkCmdClearDepthStencilImage( m_commandBuffer, static_cast<VkImage>( image ), static_cast<VkImageLayout>( imageLayout ), reinterpret_cast<const VkClearDepthStencilValue*>( &depthStencil ), ranges.size() , reinterpret_cast<const VkImageSubresourceRange*>( ranges.data() ) );
25194 }
25195#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25196
25197 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( uint32_t attachmentCount, const ClearAttachment* pAttachments, uint32_t rectCount, const ClearRect* pRects ) const
25198 {
25199 vkCmdClearAttachments( m_commandBuffer, attachmentCount, reinterpret_cast<const VkClearAttachment*>( pAttachments ), rectCount, reinterpret_cast<const VkClearRect*>( pRects ) );
25200 }
25201#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25202 VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( ArrayProxy<const ClearAttachment> attachments, ArrayProxy<const ClearRect> rects ) const
25203 {
25204 vkCmdClearAttachments( m_commandBuffer, attachments.size() , reinterpret_cast<const VkClearAttachment*>( attachments.data() ), rects.size() , reinterpret_cast<const VkClearRect*>( rects.data() ) );
25205 }
25206#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25207
25208 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, uint32_t regionCount, const ImageResolve* pRegions ) const
25209 {
25210 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 ) );
25211 }
25212#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25213 VULKAN_HPP_INLINE void CommandBuffer::resolveImage( Image srcImage, ImageLayout srcImageLayout, Image dstImage, ImageLayout dstImageLayout, ArrayProxy<const ImageResolve> regions ) const
25214 {
25215 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() ) );
25216 }
25217#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25218
25219 VULKAN_HPP_INLINE void CommandBuffer::setEvent( Event event, PipelineStageFlags stageMask ) const
25220 {
25221 vkCmdSetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
25222 }
25223
25224 VULKAN_HPP_INLINE void CommandBuffer::resetEvent( Event event, PipelineStageFlags stageMask ) const
25225 {
25226 vkCmdResetEvent( m_commandBuffer, static_cast<VkEvent>( event ), static_cast<VkPipelineStageFlags>( stageMask ) );
25227 }
25228
25229 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
25230 {
25231 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 ) );
25232 }
25233#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25234 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
25235 {
25236 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() ) );
25237 }
25238#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25239
25240 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
25241 {
25242 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 ) );
25243 }
25244#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25245 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
25246 {
25247 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() ) );
25248 }
25249#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25250
25251 VULKAN_HPP_INLINE void CommandBuffer::beginQuery( QueryPool queryPool, uint32_t query, QueryControlFlags flags ) const
25252 {
25253 vkCmdBeginQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query, static_cast<VkQueryControlFlags>( flags ) );
25254 }
25255
25256 VULKAN_HPP_INLINE void CommandBuffer::endQuery( QueryPool queryPool, uint32_t query ) const
25257 {
25258 vkCmdEndQuery( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), query );
25259 }
25260
25261 VULKAN_HPP_INLINE void CommandBuffer::resetQueryPool( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const
25262 {
25263 vkCmdResetQueryPool( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount );
25264 }
25265
25266 VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp( PipelineStageFlagBits pipelineStage, QueryPool queryPool, uint32_t query ) const
25267 {
25268 vkCmdWriteTimestamp( m_commandBuffer, static_cast<VkPipelineStageFlagBits>( pipelineStage ), static_cast<VkQueryPool>( queryPool ), query );
25269 }
25270
25271 VULKAN_HPP_INLINE void CommandBuffer::copyQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Buffer dstBuffer, DeviceSize dstOffset, DeviceSize stride, QueryResultFlags flags ) const
25272 {
25273 vkCmdCopyQueryPoolResults( m_commandBuffer, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, static_cast<VkBuffer>( dstBuffer ), dstOffset, stride, static_cast<VkQueryResultFlags>( flags ) );
25274 }
25275
25276 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const
25277 {
25278 vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, size, pValues );
25279 }
25280#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25281 template <typename T>
25282 VULKAN_HPP_INLINE void CommandBuffer::pushConstants( PipelineLayout layout, ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy<const T> values ) const
25283 {
25284 vkCmdPushConstants( m_commandBuffer, static_cast<VkPipelineLayout>( layout ), static_cast<VkShaderStageFlags>( stageFlags ), offset, values.size() * sizeof( T ) , reinterpret_cast<const void*>( values.data() ) );
25285 }
25286#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25287
25288 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo* pRenderPassBegin, SubpassContents contents ) const
25289 {
25290 vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( pRenderPassBegin ), static_cast<VkSubpassContents>( contents ) );
25291 }
25292#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25293 VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo & renderPassBegin, SubpassContents contents ) const
25294 {
25295 vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast<const VkRenderPassBeginInfo*>( &renderPassBegin ), static_cast<VkSubpassContents>( contents ) );
25296 }
25297#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25298
25299 VULKAN_HPP_INLINE void CommandBuffer::nextSubpass( SubpassContents contents ) const
25300 {
25301 vkCmdNextSubpass( m_commandBuffer, static_cast<VkSubpassContents>( contents ) );
25302 }
25303
25304 VULKAN_HPP_INLINE void CommandBuffer::endRenderPass() const
25305 {
25306 vkCmdEndRenderPass( m_commandBuffer );
25307 }
25308
25309 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const
25310 {
25311 vkCmdExecuteCommands( m_commandBuffer, commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
25312 }
25313#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25314 VULKAN_HPP_INLINE void CommandBuffer::executeCommands( ArrayProxy<const CommandBuffer> commandBuffers ) const
25315 {
25316 vkCmdExecuteCommands( m_commandBuffer, commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
25317 }
25318#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25319
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060025320 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025321 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060025322 vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025323 }
25324#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060025325 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025326 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060025327 vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025328 }
25329#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25330
25331 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerEndEXT() const
25332 {
25333 vkCmdDebugMarkerEndEXT( m_commandBuffer );
25334 }
25335
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060025336 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT* pMarkerInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025337 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060025338 vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( pMarkerInfo ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025339 }
25340#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060025341 VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT & markerInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025342 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060025343 vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast<const VkDebugMarkerMarkerInfoEXT*>( &markerInfo ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025344 }
25345#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25346
25347 VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
25348 {
25349 vkCmdDrawIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
25350 }
25351
25352 VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountAMD( Buffer buffer, DeviceSize offset, Buffer countBuffer, DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride ) const
25353 {
25354 vkCmdDrawIndexedIndirectCountAMD( m_commandBuffer, static_cast<VkBuffer>( buffer ), offset, static_cast<VkBuffer>( countBuffer ), countBufferOffset, maxDrawCount, stride );
25355 }
25356
25357 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX* pProcessCommandsInfo ) const
25358 {
25359 vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( pProcessCommandsInfo ) );
25360 }
25361#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25362 VULKAN_HPP_INLINE void CommandBuffer::processCommandsNVX( const CmdProcessCommandsInfoNVX & processCommandsInfo ) const
25363 {
25364 vkCmdProcessCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>( &processCommandsInfo ) );
25365 }
25366#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25367
25368 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo ) const
25369 {
25370 vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( pReserveSpaceInfo ) );
25371 }
25372#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25373 VULKAN_HPP_INLINE void CommandBuffer::reserveSpaceForCommandsNVX( const CmdReserveSpaceForCommandsInfoNVX & reserveSpaceInfo ) const
25374 {
25375 vkCmdReserveSpaceForCommandsNVX( m_commandBuffer, reinterpret_cast<const VkCmdReserveSpaceForCommandsInfoNVX*>( &reserveSpaceInfo ) );
25376 }
25377#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070025378
25379 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites ) const
25380 {
25381 vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ) );
25382 }
25383#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25384 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( PipelineBindPoint pipelineBindPoint, PipelineLayout layout, uint32_t set, ArrayProxy<const WriteDescriptorSet> descriptorWrites ) const
25385 {
25386 vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast<VkPipelineBindPoint>( pipelineBindPoint ), static_cast<VkPipelineLayout>( layout ), set, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ) );
25387 }
25388#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25389
25390 VULKAN_HPP_INLINE void CommandBuffer::setDeviceMaskKHX( uint32_t deviceMask ) const
25391 {
25392 vkCmdSetDeviceMaskKHX( m_commandBuffer, deviceMask );
25393 }
25394
25395 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
25396 {
25397 vkCmdDispatchBaseKHX( m_commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ );
25398 }
25399
25400 VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, PipelineLayout layout, uint32_t set, const void* pData ) const
25401 {
25402 vkCmdPushDescriptorSetWithTemplateKHR( m_commandBuffer, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), static_cast<VkPipelineLayout>( layout ), set, pData );
25403 }
25404
25405 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const ViewportWScalingNV* pViewportWScalings ) const
25406 {
25407 vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast<const VkViewportWScalingNV*>( pViewportWScalings ) );
25408 }
25409#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25410 VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, ArrayProxy<const ViewportWScalingNV> viewportWScalings ) const
25411 {
25412 vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportWScalings.size() , reinterpret_cast<const VkViewportWScalingNV*>( viewportWScalings.data() ) );
25413 }
25414#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25415
25416 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const Rect2D* pDiscardRectangles ) const
25417 {
25418 vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangleCount, reinterpret_cast<const VkRect2D*>( pDiscardRectangles ) );
25419 }
25420#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25421 VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy<const Rect2D> discardRectangles ) const
25422 {
25423 vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangles.size() , reinterpret_cast<const VkRect2D*>( discardRectangles.data() ) );
25424 }
25425#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025426
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060025427 VULKAN_HPP_INLINE void CommandBuffer::setSampleLocationsEXT( const SampleLocationsInfoEXT* pSampleLocationsInfo ) const
25428 {
25429 vkCmdSetSampleLocationsEXT( m_commandBuffer, reinterpret_cast<const VkSampleLocationsInfoEXT*>( pSampleLocationsInfo ) );
25430 }
25431#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25432 VULKAN_HPP_INLINE void CommandBuffer::setSampleLocationsEXT( const SampleLocationsInfoEXT & sampleLocationsInfo ) const
25433 {
25434 vkCmdSetSampleLocationsEXT( m_commandBuffer, reinterpret_cast<const VkSampleLocationsInfoEXT*>( &sampleLocationsInfo ) );
25435 }
25436#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25437
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025438 struct SubmitInfo
25439 {
25440 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 )
25441 : sType( StructureType::eSubmitInfo )
25442 , pNext( nullptr )
25443 , waitSemaphoreCount( waitSemaphoreCount_ )
25444 , pWaitSemaphores( pWaitSemaphores_ )
25445 , pWaitDstStageMask( pWaitDstStageMask_ )
25446 , commandBufferCount( commandBufferCount_ )
25447 , pCommandBuffers( pCommandBuffers_ )
25448 , signalSemaphoreCount( signalSemaphoreCount_ )
25449 , pSignalSemaphores( pSignalSemaphores_ )
25450 {
25451 }
25452
25453 SubmitInfo( VkSubmitInfo const & rhs )
25454 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025455 memcpy( this, &rhs, sizeof( SubmitInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025456 }
25457
25458 SubmitInfo& operator=( VkSubmitInfo const & rhs )
25459 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025460 memcpy( this, &rhs, sizeof( SubmitInfo ) );
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025461 return *this;
25462 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025463 SubmitInfo& setPNext( const void* pNext_ )
25464 {
25465 pNext = pNext_;
25466 return *this;
25467 }
25468
25469 SubmitInfo& setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ )
25470 {
25471 waitSemaphoreCount = waitSemaphoreCount_;
25472 return *this;
25473 }
25474
25475 SubmitInfo& setPWaitSemaphores( const Semaphore* pWaitSemaphores_ )
25476 {
25477 pWaitSemaphores = pWaitSemaphores_;
25478 return *this;
25479 }
25480
25481 SubmitInfo& setPWaitDstStageMask( const PipelineStageFlags* pWaitDstStageMask_ )
25482 {
25483 pWaitDstStageMask = pWaitDstStageMask_;
25484 return *this;
25485 }
25486
25487 SubmitInfo& setCommandBufferCount( uint32_t commandBufferCount_ )
25488 {
25489 commandBufferCount = commandBufferCount_;
25490 return *this;
25491 }
25492
25493 SubmitInfo& setPCommandBuffers( const CommandBuffer* pCommandBuffers_ )
25494 {
25495 pCommandBuffers = pCommandBuffers_;
25496 return *this;
25497 }
25498
25499 SubmitInfo& setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ )
25500 {
25501 signalSemaphoreCount = signalSemaphoreCount_;
25502 return *this;
25503 }
25504
25505 SubmitInfo& setPSignalSemaphores( const Semaphore* pSignalSemaphores_ )
25506 {
25507 pSignalSemaphores = pSignalSemaphores_;
25508 return *this;
25509 }
25510
25511 operator const VkSubmitInfo&() const
25512 {
25513 return *reinterpret_cast<const VkSubmitInfo*>(this);
25514 }
25515
25516 bool operator==( SubmitInfo const& rhs ) const
25517 {
25518 return ( sType == rhs.sType )
25519 && ( pNext == rhs.pNext )
25520 && ( waitSemaphoreCount == rhs.waitSemaphoreCount )
25521 && ( pWaitSemaphores == rhs.pWaitSemaphores )
25522 && ( pWaitDstStageMask == rhs.pWaitDstStageMask )
25523 && ( commandBufferCount == rhs.commandBufferCount )
25524 && ( pCommandBuffers == rhs.pCommandBuffers )
25525 && ( signalSemaphoreCount == rhs.signalSemaphoreCount )
25526 && ( pSignalSemaphores == rhs.pSignalSemaphores );
25527 }
25528
25529 bool operator!=( SubmitInfo const& rhs ) const
25530 {
25531 return !operator==( rhs );
25532 }
25533
25534 private:
25535 StructureType sType;
25536
25537 public:
25538 const void* pNext;
25539 uint32_t waitSemaphoreCount;
25540 const Semaphore* pWaitSemaphores;
25541 const PipelineStageFlags* pWaitDstStageMask;
25542 uint32_t commandBufferCount;
25543 const CommandBuffer* pCommandBuffers;
25544 uint32_t signalSemaphoreCount;
25545 const Semaphore* pSignalSemaphores;
25546 };
25547 static_assert( sizeof( SubmitInfo ) == sizeof( VkSubmitInfo ), "struct and wrapper have different size!" );
25548
25549 class Queue
25550 {
25551 public:
25552 Queue()
25553 : m_queue(VK_NULL_HANDLE)
25554 {}
25555
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070025556 Queue( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025557 : m_queue(VK_NULL_HANDLE)
25558 {}
25559
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025560 VULKAN_HPP_TYPESAFE_EXPLICIT Queue( VkQueue queue )
25561 : m_queue( queue )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025562 {}
25563
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070025564#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025565 Queue & operator=(VkQueue queue)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025566 {
25567 m_queue = queue;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025568 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025569 }
25570#endif
25571
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025572 Queue & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025573 {
25574 m_queue = VK_NULL_HANDLE;
25575 return *this;
25576 }
25577
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025578 bool operator==( Queue const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060025579 {
25580 return m_queue == rhs.m_queue;
25581 }
25582
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025583 bool operator!=(Queue const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060025584 {
25585 return m_queue != rhs.m_queue;
25586 }
25587
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025588 bool operator<(Queue const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060025589 {
25590 return m_queue < rhs.m_queue;
25591 }
25592
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025593 Result submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025594#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025595 ResultValueType<void>::type submit( ArrayProxy<const SubmitInfo> submits, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025596#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25597
25598#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025599 Result waitIdle() const;
25600#else
25601 ResultValueType<void>::type waitIdle() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025602#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25603
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025604 Result bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025605#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025606 ResultValueType<void>::type bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025607#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25608
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025609 Result presentKHR( const PresentInfoKHR* pPresentInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025610#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025611 Result presentKHR( const PresentInfoKHR & presentInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025612#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25613
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025614
25615
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070025616 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkQueue() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025617 {
25618 return m_queue;
25619 }
25620
25621 explicit operator bool() const
25622 {
25623 return m_queue != VK_NULL_HANDLE;
25624 }
25625
25626 bool operator!() const
25627 {
25628 return m_queue == VK_NULL_HANDLE;
25629 }
25630
25631 private:
25632 VkQueue m_queue;
25633 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025634
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025635 static_assert( sizeof( Queue ) == sizeof( VkQueue ), "handle and wrapper have different size!" );
25636
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025637 VULKAN_HPP_INLINE Result Queue::submit( uint32_t submitCount, const SubmitInfo* pSubmits, Fence fence ) const
25638 {
25639 return static_cast<Result>( vkQueueSubmit( m_queue, submitCount, reinterpret_cast<const VkSubmitInfo*>( pSubmits ), static_cast<VkFence>( fence ) ) );
25640 }
25641#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25642 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::submit( ArrayProxy<const SubmitInfo> submits, Fence fence ) const
25643 {
25644 Result result = static_cast<Result>( vkQueueSubmit( m_queue, submits.size() , reinterpret_cast<const VkSubmitInfo*>( submits.data() ), static_cast<VkFence>( fence ) ) );
25645 return createResultValue( result, "vk::Queue::submit" );
25646 }
25647#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25648
25649#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
25650 VULKAN_HPP_INLINE Result Queue::waitIdle() const
25651 {
25652 return static_cast<Result>( vkQueueWaitIdle( m_queue ) );
25653 }
25654#else
25655 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::waitIdle() const
25656 {
25657 Result result = static_cast<Result>( vkQueueWaitIdle( m_queue ) );
25658 return createResultValue( result, "vk::Queue::waitIdle" );
25659 }
25660#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25661
25662 VULKAN_HPP_INLINE Result Queue::bindSparse( uint32_t bindInfoCount, const BindSparseInfo* pBindInfo, Fence fence ) const
25663 {
25664 return static_cast<Result>( vkQueueBindSparse( m_queue, bindInfoCount, reinterpret_cast<const VkBindSparseInfo*>( pBindInfo ), static_cast<VkFence>( fence ) ) );
25665 }
25666#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25667 VULKAN_HPP_INLINE ResultValueType<void>::type Queue::bindSparse( ArrayProxy<const BindSparseInfo> bindInfo, Fence fence ) const
25668 {
25669 Result result = static_cast<Result>( vkQueueBindSparse( m_queue, bindInfo.size() , reinterpret_cast<const VkBindSparseInfo*>( bindInfo.data() ), static_cast<VkFence>( fence ) ) );
25670 return createResultValue( result, "vk::Queue::bindSparse" );
25671 }
25672#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25673
25674 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR* pPresentInfo ) const
25675 {
25676 return static_cast<Result>( vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( pPresentInfo ) ) );
25677 }
25678#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25679 VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR & presentInfo ) const
25680 {
25681 Result result = static_cast<Result>( vkQueuePresentKHR( m_queue, reinterpret_cast<const VkPresentInfoKHR*>( &presentInfo ) ) );
25682 return createResultValue( result, "vk::Queue::presentKHR", { Result::eSuccess, Result::eSuboptimalKHR } );
25683 }
25684#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060025685
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025686#ifndef VULKAN_HPP_NO_SMART_HANDLE
25687 class BufferDeleter;
25688 using UniqueBuffer = UniqueHandle<Buffer, BufferDeleter>;
25689 class BufferViewDeleter;
25690 using UniqueBufferView = UniqueHandle<BufferView, BufferViewDeleter>;
25691 class CommandBufferDeleter;
25692 using UniqueCommandBuffer = UniqueHandle<CommandBuffer, CommandBufferDeleter>;
25693 class CommandPoolDeleter;
25694 using UniqueCommandPool = UniqueHandle<CommandPool, CommandPoolDeleter>;
25695 class DescriptorPoolDeleter;
25696 using UniqueDescriptorPool = UniqueHandle<DescriptorPool, DescriptorPoolDeleter>;
25697 class DescriptorSetDeleter;
25698 using UniqueDescriptorSet = UniqueHandle<DescriptorSet, DescriptorSetDeleter>;
25699 class DescriptorSetLayoutDeleter;
25700 using UniqueDescriptorSetLayout = UniqueHandle<DescriptorSetLayout, DescriptorSetLayoutDeleter>;
Mark Young0f183a82017-02-28 09:58:04 -070025701 class DescriptorUpdateTemplateKHRDeleter;
25702 using UniqueDescriptorUpdateTemplateKHR = UniqueHandle<DescriptorUpdateTemplateKHR, DescriptorUpdateTemplateKHRDeleter>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025703 class DeviceMemoryDeleter;
25704 using UniqueDeviceMemory = UniqueHandle<DeviceMemory, DeviceMemoryDeleter>;
25705 class EventDeleter;
25706 using UniqueEvent = UniqueHandle<Event, EventDeleter>;
25707 class FenceDeleter;
25708 using UniqueFence = UniqueHandle<Fence, FenceDeleter>;
25709 class FramebufferDeleter;
25710 using UniqueFramebuffer = UniqueHandle<Framebuffer, FramebufferDeleter>;
25711 class ImageDeleter;
25712 using UniqueImage = UniqueHandle<Image, ImageDeleter>;
25713 class ImageViewDeleter;
25714 using UniqueImageView = UniqueHandle<ImageView, ImageViewDeleter>;
25715 class IndirectCommandsLayoutNVXDeleter;
25716 using UniqueIndirectCommandsLayoutNVX = UniqueHandle<IndirectCommandsLayoutNVX, IndirectCommandsLayoutNVXDeleter>;
25717 class ObjectTableNVXDeleter;
25718 using UniqueObjectTableNVX = UniqueHandle<ObjectTableNVX, ObjectTableNVXDeleter>;
25719 class PipelineDeleter;
25720 using UniquePipeline = UniqueHandle<Pipeline, PipelineDeleter>;
25721 class PipelineCacheDeleter;
25722 using UniquePipelineCache = UniqueHandle<PipelineCache, PipelineCacheDeleter>;
25723 class PipelineLayoutDeleter;
25724 using UniquePipelineLayout = UniqueHandle<PipelineLayout, PipelineLayoutDeleter>;
25725 class QueryPoolDeleter;
25726 using UniqueQueryPool = UniqueHandle<QueryPool, QueryPoolDeleter>;
25727 class RenderPassDeleter;
25728 using UniqueRenderPass = UniqueHandle<RenderPass, RenderPassDeleter>;
25729 class SamplerDeleter;
25730 using UniqueSampler = UniqueHandle<Sampler, SamplerDeleter>;
25731 class SemaphoreDeleter;
25732 using UniqueSemaphore = UniqueHandle<Semaphore, SemaphoreDeleter>;
25733 class ShaderModuleDeleter;
25734 using UniqueShaderModule = UniqueHandle<ShaderModule, ShaderModuleDeleter>;
25735 class SwapchainKHRDeleter;
25736 using UniqueSwapchainKHR = UniqueHandle<SwapchainKHR, SwapchainKHRDeleter>;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060025737 class ValidationCacheEXTDeleter;
25738 using UniqueValidationCacheEXT = UniqueHandle<ValidationCacheEXT, ValidationCacheEXTDeleter>;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025739#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25740
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025741 class Device
25742 {
25743 public:
25744 Device()
25745 : m_device(VK_NULL_HANDLE)
25746 {}
25747
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070025748 Device( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025749 : m_device(VK_NULL_HANDLE)
25750 {}
25751
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025752 VULKAN_HPP_TYPESAFE_EXPLICIT Device( VkDevice device )
25753 : m_device( device )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025754 {}
25755
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070025756#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025757 Device & operator=(VkDevice device)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025758 {
25759 m_device = device;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025760 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025761 }
25762#endif
25763
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025764 Device & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025765 {
25766 m_device = VK_NULL_HANDLE;
25767 return *this;
25768 }
25769
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025770 bool operator==( Device const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060025771 {
25772 return m_device == rhs.m_device;
25773 }
25774
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025775 bool operator!=(Device const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060025776 {
25777 return m_device != rhs.m_device;
25778 }
25779
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060025780 bool operator<(Device const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060025781 {
25782 return m_device < rhs.m_device;
25783 }
25784
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025785 PFN_vkVoidFunction getProcAddr( const char* pName ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025786#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025787 PFN_vkVoidFunction getProcAddr( const std::string & name ) 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 destroy( const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025791#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025792 void destroy( Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025793#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25794
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025795 void getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025796#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025797 Queue getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025798#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25799
25800#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025801 Result waitIdle() const;
25802#else
25803 ResultValueType<void>::type waitIdle() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025804#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25805
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025806 Result allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025807#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025808 ResultValueType<DeviceMemory>::type allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25809#ifndef VULKAN_HPP_NO_SMART_HANDLE
25810 UniqueDeviceMemory allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25811#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025812#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25813
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025814 void freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025815#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025816 void freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25817#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25818
25819 Result mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData ) const;
25820#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25821 ResultValueType<void*>::type mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags = MemoryMapFlags() ) const;
25822#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25823
25824 void unmapMemory( DeviceMemory memory ) const;
25825
25826 Result flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const;
25827#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25828 ResultValueType<void>::type flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const;
25829#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25830
25831 Result invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const;
25832#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25833 ResultValueType<void>::type invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const;
25834#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25835
25836 void getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes ) const;
25837#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25838 DeviceSize getMemoryCommitment( DeviceMemory memory ) const;
25839#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25840
25841 void getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements ) const;
25842#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25843 MemoryRequirements getBufferMemoryRequirements( Buffer buffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025844#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25845
25846#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025847 Result bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const;
25848#else
25849 ResultValueType<void>::type bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const;
25850#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025851
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025852 void getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025853#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025854 MemoryRequirements getImageMemoryRequirements( Image image ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025855#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25856
25857#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025858 Result bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const;
25859#else
25860 ResultValueType<void>::type bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025861#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25862
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025863 void getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025864#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025865 template <typename Allocator = std::allocator<SparseImageMemoryRequirements>>
25866 std::vector<SparseImageMemoryRequirements,Allocator> getImageSparseMemoryRequirements( Image image ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025867#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25868
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025869 Result createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025870#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025871 ResultValueType<Fence>::type createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25872#ifndef VULKAN_HPP_NO_SMART_HANDLE
25873 UniqueFence createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25874#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025875#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25876
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025877 void destroyFence( Fence fence, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025878#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025879 void destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025880#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25881
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025882 Result resetFences( uint32_t fenceCount, const Fence* pFences ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025883#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025884 ResultValueType<void>::type resetFences( ArrayProxy<const Fence> fences ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025885#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25886
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025887 Result getFenceStatus( Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025888
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025889 Result waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025890#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025891 Result waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout ) const;
25892#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25893
25894 Result createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore ) const;
25895#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25896 ResultValueType<Semaphore>::type createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25897#ifndef VULKAN_HPP_NO_SMART_HANDLE
25898 UniqueSemaphore createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25899#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25900#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25901
25902 void destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator ) const;
25903#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25904 void destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25905#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25906
25907 Result createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent ) const;
25908#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25909 ResultValueType<Event>::type createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25910#ifndef VULKAN_HPP_NO_SMART_HANDLE
25911 UniqueEvent createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25912#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
25913#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25914
25915 void destroyEvent( Event event, const AllocationCallbacks* pAllocator ) const;
25916#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25917 void destroyEvent( Event event, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025918#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25919
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025920 Result getEventStatus( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025921
25922#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025923 Result setEvent( Event event ) const;
25924#else
25925 ResultValueType<void>::type setEvent( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025926#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25927
25928#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025929 Result resetEvent( Event event ) const;
25930#else
25931 ResultValueType<void>::type resetEvent( Event event ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025932#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25933
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025934 Result createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025935#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025936 ResultValueType<QueryPool>::type createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25937#ifndef VULKAN_HPP_NO_SMART_HANDLE
25938 UniqueQueryPool createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25939#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025940#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25941
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025942 void destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025943#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025944 void destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025945#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25946
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025947 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 -060025948#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
25949 template <typename T>
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025950 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 -060025951#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25952
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025953 Result createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025954#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025955 ResultValueType<Buffer>::type createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25956#ifndef VULKAN_HPP_NO_SMART_HANDLE
25957 UniqueBuffer createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25958#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025959#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25960
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025961 void destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025962#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025963 void destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025964#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25965
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025966 Result createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025967#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025968 ResultValueType<BufferView>::type createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25969#ifndef VULKAN_HPP_NO_SMART_HANDLE
25970 UniqueBufferView createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25971#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025972#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25973
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025974 void destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025975#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025976 void destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025977#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25978
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025979 Result createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025980#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025981 ResultValueType<Image>::type createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25982#ifndef VULKAN_HPP_NO_SMART_HANDLE
25983 UniqueImage createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
25984#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025985#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25986
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025987 void destroyImage( Image image, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025988#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025989 void destroyImage( Image image, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025990#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25991
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025992 void getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025993#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025994 SubresourceLayout getImageSubresourceLayout( Image image, const ImageSubresource & subresource ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025995#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
25996
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025997 Result createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060025998#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070025999 ResultValueType<ImageView>::type createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26000#ifndef VULKAN_HPP_NO_SMART_HANDLE
26001 UniqueImageView createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26002#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026003#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26004
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026005 void destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026006#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026007 void destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026008#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26009
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026010 Result createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026011#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026012 ResultValueType<ShaderModule>::type createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26013#ifndef VULKAN_HPP_NO_SMART_HANDLE
26014 UniqueShaderModule createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26015#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026016#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26017
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026018 void destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026019#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026020 void destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026021#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26022
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026023 Result createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026024#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026025 ResultValueType<PipelineCache>::type createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26026#ifndef VULKAN_HPP_NO_SMART_HANDLE
26027 UniquePipelineCache createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26028#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026029#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26030
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026031 void destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026032#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026033 void destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026034#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26035
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026036 Result getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026037#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026038 template <typename Allocator = std::allocator<uint8_t>>
26039 typename ResultValueType<std::vector<uint8_t,Allocator>>::type getPipelineCacheData( PipelineCache pipelineCache ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026040#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26041
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026042 Result mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026043#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026044 ResultValueType<void>::type mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026045#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26046
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026047 Result createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026048#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026049 template <typename Allocator = std::allocator<Pipeline>>
26050 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26051 ResultValueType<Pipeline>::type createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26052#ifndef VULKAN_HPP_NO_SMART_HANDLE
26053 template <typename Allocator = std::allocator<Pipeline>>
26054 std::vector<UniquePipeline> createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26055 UniquePipeline createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26056#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026057#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26058
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026059 Result createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026060#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026061 template <typename Allocator = std::allocator<Pipeline>>
26062 typename ResultValueType<std::vector<Pipeline,Allocator>>::type createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26063 ResultValueType<Pipeline>::type createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26064#ifndef VULKAN_HPP_NO_SMART_HANDLE
26065 template <typename Allocator = std::allocator<Pipeline>>
26066 std::vector<UniquePipeline> createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26067 UniquePipeline createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26068#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026069#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26070
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026071 void destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026072#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026073 void destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026074#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26075
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026076 Result createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026077#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026078 ResultValueType<PipelineLayout>::type createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26079#ifndef VULKAN_HPP_NO_SMART_HANDLE
26080 UniquePipelineLayout createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26081#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026082#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26083
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026084 void destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026085#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026086 void destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026087#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26088
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026089 Result createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026090#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026091 ResultValueType<Sampler>::type createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26092#ifndef VULKAN_HPP_NO_SMART_HANDLE
26093 UniqueSampler createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26094#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026095#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26096
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026097 void destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026098#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026099 void destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026100#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26101
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026102 Result createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026103#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026104 ResultValueType<DescriptorSetLayout>::type createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26105#ifndef VULKAN_HPP_NO_SMART_HANDLE
26106 UniqueDescriptorSetLayout createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26107#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026108#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26109
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026110 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026111#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026112 void destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026113#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26114
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026115 Result createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026116#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026117 ResultValueType<DescriptorPool>::type createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26118#ifndef VULKAN_HPP_NO_SMART_HANDLE
26119 UniqueDescriptorPool createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26120#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026121#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26122
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026123 void destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026124#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026125 void destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026126#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26127
26128#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026129 Result resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const;
26130#else
26131 ResultValueType<void>::type resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags = DescriptorPoolResetFlags() ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026132#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26133
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026134 Result allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026135#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026136 template <typename Allocator = std::allocator<DescriptorSet>>
26137 typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo ) const;
26138#ifndef VULKAN_HPP_NO_SMART_HANDLE
26139 template <typename Allocator = std::allocator<DescriptorSet>>
26140 std::vector<UniqueDescriptorSet> allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo ) const;
26141#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026142#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26143
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026144 Result freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026145#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026146 ResultValueType<void>::type freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026147#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26148
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026149 void updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026150#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026151 void updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026152#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26153
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026154 Result createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026155#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026156 ResultValueType<Framebuffer>::type createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26157#ifndef VULKAN_HPP_NO_SMART_HANDLE
26158 UniqueFramebuffer createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26159#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026160#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26161
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026162 void destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026163#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026164 void destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026165#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26166
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026167 Result createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026168#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026169 ResultValueType<RenderPass>::type createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26170#ifndef VULKAN_HPP_NO_SMART_HANDLE
26171 UniqueRenderPass createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26172#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026173#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26174
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026175 void destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026176#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026177 void destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026178#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26179
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026180 void getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026181#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026182 Extent2D getRenderAreaGranularity( RenderPass renderPass ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026183#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26184
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026185 Result createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026186#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026187 ResultValueType<CommandPool>::type createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26188#ifndef VULKAN_HPP_NO_SMART_HANDLE
26189 UniqueCommandPool createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26190#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026191#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26192
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026193 void destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026194#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026195 void destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026196#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26197
26198#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026199 Result resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const;
26200#else
26201 ResultValueType<void>::type resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026202#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26203
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026204 Result allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026205#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026206 template <typename Allocator = std::allocator<CommandBuffer>>
26207 typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo ) const;
26208#ifndef VULKAN_HPP_NO_SMART_HANDLE
26209 template <typename Allocator = std::allocator<CommandBuffer>>
26210 std::vector<UniqueCommandBuffer> allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo ) const;
26211#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026212#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26213
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026214 void freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026215#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026216 void freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026217#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26218
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026219 Result createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026220#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026221 template <typename Allocator = std::allocator<SwapchainKHR>>
26222 typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26223 ResultValueType<SwapchainKHR>::type createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26224#ifndef VULKAN_HPP_NO_SMART_HANDLE
26225 template <typename Allocator = std::allocator<SwapchainKHR>>
26226 std::vector<UniqueSwapchainKHR> createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26227 UniqueSwapchainKHR createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26228#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026229#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26230
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026231 Result createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026232#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026233 ResultValueType<SwapchainKHR>::type createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26234#ifndef VULKAN_HPP_NO_SMART_HANDLE
26235 UniqueSwapchainKHR createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26236#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026237#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26238
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026239 void destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026240#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026241 void destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026242#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26243
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026244 Result getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026245#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026246 template <typename Allocator = std::allocator<Image>>
26247 typename ResultValueType<std::vector<Image,Allocator>>::type getSwapchainImagesKHR( SwapchainKHR swapchain ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026248#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26249
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026250 Result acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026251#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026252 ResultValue<uint32_t> acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026253#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26254
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026255 Result debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT* pNameInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026256#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026257 ResultValueType<void>::type debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT & nameInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026258#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26259
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026260 Result debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT* pTagInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026261#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060026262 ResultValueType<void>::type debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT & tagInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026263#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26264
Lenny Komow6501c122016-08-31 15:03:49 -060026265#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026266 Result getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const;
26267#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26268 ResultValueType<HANDLE>::type getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType ) const;
26269#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komow6501c122016-08-31 15:03:49 -060026270#endif /*VK_USE_PLATFORM_WIN32_KHR*/
26271
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026272 Result createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const;
Lenny Komow6501c122016-08-31 15:03:49 -060026273#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026274 ResultValueType<IndirectCommandsLayoutNVX>::type createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26275#ifndef VULKAN_HPP_NO_SMART_HANDLE
26276 UniqueIndirectCommandsLayoutNVX createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26277#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komow6501c122016-08-31 15:03:49 -060026278#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26279
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026280 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070026281#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026282 void destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070026283#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26284
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026285 Result createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070026286#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026287 ResultValueType<ObjectTableNVX>::type createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26288#ifndef VULKAN_HPP_NO_SMART_HANDLE
26289 UniqueObjectTableNVX createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26290#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Mark Lobodzinski2d589822016-12-12 09:44:34 -070026291#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26292
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026293 void destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070026294#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026295 void destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070026296#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26297
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026298 Result registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070026299#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026300 ResultValueType<void>::type registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070026301#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26302
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026303 Result unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070026304#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026305 ResultValueType<void>::type unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070026306#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26307
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026308#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026309 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags ) const;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026310#else
26311 void trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags = CommandPoolTrimFlagsKHR() ) const;
26312#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski2d589822016-12-12 09:44:34 -070026313
Mark Youngabc2d6e2017-07-07 07:59:56 -060026314#ifdef VK_USE_PLATFORM_WIN32_KHR
26315 Result getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const;
Mark Young0f183a82017-02-28 09:58:04 -070026316#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060026317 ResultValueType<HANDLE>::type getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070026318#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060026319#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070026320
Mark Youngabc2d6e2017-07-07 07:59:56 -060026321#ifdef VK_USE_PLATFORM_WIN32_KHR
26322 Result getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle, MemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties ) const;
Mark Young0f183a82017-02-28 09:58:04 -070026323#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060026324 ResultValueType<MemoryWin32HandlePropertiesKHR>::type getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle ) const;
Mark Young0f183a82017-02-28 09:58:04 -070026325#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060026326#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070026327
Mark Youngabc2d6e2017-07-07 07:59:56 -060026328 Result getMemoryFdKHR( const MemoryGetFdInfoKHR* pGetFdInfo, int* pFd ) const;
Mark Young0f183a82017-02-28 09:58:04 -070026329#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060026330 ResultValueType<int>::type getMemoryFdKHR( const MemoryGetFdInfoKHR & getFdInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070026331#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26332
Mark Youngabc2d6e2017-07-07 07:59:56 -060026333 Result getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, int fd, MemoryFdPropertiesKHR* pMemoryFdProperties ) const;
Mark Young0f183a82017-02-28 09:58:04 -070026334#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060026335 ResultValueType<MemoryFdPropertiesKHR>::type getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, int fd ) const;
Mark Young0f183a82017-02-28 09:58:04 -070026336#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26337
Mark Youngabc2d6e2017-07-07 07:59:56 -060026338#ifdef VK_USE_PLATFORM_WIN32_KHR
26339 Result getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const;
Mark Young0f183a82017-02-28 09:58:04 -070026340#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060026341 ResultValueType<HANDLE>::type getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070026342#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060026343#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070026344
Mark Youngabc2d6e2017-07-07 07:59:56 -060026345#ifdef VK_USE_PLATFORM_WIN32_KHR
26346 Result importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070026347#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060026348 ResultValueType<void>::type importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070026349#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060026350#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070026351
Mark Youngabc2d6e2017-07-07 07:59:56 -060026352 Result getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd ) const;
Mark Young0f183a82017-02-28 09:58:04 -070026353#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060026354 ResultValueType<int>::type getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR & getFdInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070026355#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26356
Mark Youngabc2d6e2017-07-07 07:59:56 -060026357 Result importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070026358#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060026359 ResultValueType<void>::type importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo ) const;
26360#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26361
26362#ifdef VK_USE_PLATFORM_WIN32_KHR
26363 Result getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const;
26364#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26365 ResultValueType<HANDLE>::type getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR & getWin32HandleInfo ) const;
26366#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26367#endif /*VK_USE_PLATFORM_WIN32_KHR*/
26368
26369#ifdef VK_USE_PLATFORM_WIN32_KHR
26370 Result importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo ) const;
26371#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26372 ResultValueType<void>::type importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo ) const;
26373#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26374#endif /*VK_USE_PLATFORM_WIN32_KHR*/
26375
26376 Result getFenceFdKHR( const FenceGetFdInfoKHR* pGetFdInfo, int* pFd ) const;
26377#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26378 ResultValueType<int>::type getFenceFdKHR( const FenceGetFdInfoKHR & getFdInfo ) const;
26379#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26380
26381 Result importFenceFdKHR( const ImportFenceFdInfoKHR* pImportFenceFdInfo ) const;
26382#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26383 ResultValueType<void>::type importFenceFdKHR( const ImportFenceFdInfoKHR & importFenceFdInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070026384#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26385
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026386 Result displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070026387#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026388 ResultValueType<void>::type displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo ) const;
Mark Lobodzinski2d589822016-12-12 09:44:34 -070026389#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26390
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026391 Result registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Mark Young39389872017-01-19 21:10:49 -070026392#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026393 ResultValueType<Fence>::type registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, const AllocationCallbacks & allocator ) const;
Mark Young39389872017-01-19 21:10:49 -070026394#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26395
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026396 Result registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const;
Mark Young39389872017-01-19 21:10:49 -070026397#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026398 ResultValueType<Fence>::type registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, const AllocationCallbacks & allocator ) const;
Mark Young39389872017-01-19 21:10:49 -070026399#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26400
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026401 Result getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const;
Mark Young39389872017-01-19 21:10:49 -070026402#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026403 ResultValue<uint64_t> getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter ) const;
Mark Young39389872017-01-19 21:10:49 -070026404#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26405
Mark Young0f183a82017-02-28 09:58:04 -070026406 void getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ) const;
26407#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26408 PeerMemoryFeatureFlagsKHX getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const;
26409#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26410
26411 Result bindBufferMemory2KHX( uint32_t bindInfoCount, const BindBufferMemoryInfoKHX* pBindInfos ) const;
26412#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26413 ResultValueType<void>::type bindBufferMemory2KHX( ArrayProxy<const BindBufferMemoryInfoKHX> bindInfos ) const;
26414#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26415
26416 Result bindImageMemory2KHX( uint32_t bindInfoCount, const BindImageMemoryInfoKHX* pBindInfos ) const;
26417#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26418 ResultValueType<void>::type bindImageMemory2KHX( ArrayProxy<const BindImageMemoryInfoKHX> bindInfos ) const;
26419#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26420
26421 Result getGroupPresentCapabilitiesKHX( DeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ) const;
26422#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26423 ResultValueType<DeviceGroupPresentCapabilitiesKHX>::type getGroupPresentCapabilitiesKHX() const;
26424#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26425
26426 Result getGroupSurfacePresentModesKHX( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHX* pModes ) const;
26427#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26428 ResultValueType<DeviceGroupPresentModeFlagsKHX>::type getGroupSurfacePresentModesKHX( SurfaceKHR surface ) const;
26429#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26430
26431 Result acquireNextImage2KHX( const AcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex ) const;
26432#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26433 ResultValue<uint32_t> acquireNextImage2KHX( const AcquireNextImageInfoKHX & acquireInfo ) const;
26434#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26435
26436 Result createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) const;
26437#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26438 ResultValueType<DescriptorUpdateTemplateKHR>::type createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26439#ifndef VULKAN_HPP_NO_SMART_HANDLE
26440 UniqueDescriptorUpdateTemplateKHR createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26441#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26442#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26443
26444 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const AllocationCallbacks* pAllocator ) const;
26445#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26446 void destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26447#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26448
26449 void updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData ) const;
26450
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026451 void setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata ) const;
26452#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26453 void setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata ) const;
26454#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26455
Mark Lobodzinski54385432017-05-15 10:27:52 -060026456 Result getSwapchainStatusKHR( SwapchainKHR swapchain ) const;
26457
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060026458 Result getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const;
26459#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26460 ResultValueType<RefreshCycleDurationGOOGLE>::type getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain ) const;
26461#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26462
26463 Result getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings ) const;
26464#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26465 template <typename Allocator = std::allocator<PastPresentationTimingGOOGLE>>
26466 typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type getPastPresentationTimingGOOGLE( SwapchainKHR swapchain ) const;
26467#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26468
Mark Youngabc2d6e2017-07-07 07:59:56 -060026469 void getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR* pInfo, MemoryRequirements2KHR* pMemoryRequirements ) const;
26470#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26471 MemoryRequirements2KHR getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR & info ) const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060026472 template <typename ...T>
26473 StructureChain<T...> getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR & info ) const;
Mark Youngabc2d6e2017-07-07 07:59:56 -060026474#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26475
26476 void getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR* pInfo, MemoryRequirements2KHR* pMemoryRequirements ) const;
26477#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26478 MemoryRequirements2KHR getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR & info ) const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060026479 template <typename ...T>
26480 StructureChain<T...> getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR & info ) const;
Mark Youngabc2d6e2017-07-07 07:59:56 -060026481#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26482
26483 void getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2KHR* pInfo, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements2KHR* pSparseMemoryRequirements ) const;
26484#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26485 template <typename Allocator = std::allocator<SparseImageMemoryRequirements2KHR>>
26486 std::vector<SparseImageMemoryRequirements2KHR,Allocator> getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2KHR & info ) const;
26487#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26488
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060026489 Result createValidationCacheEXT( const ValidationCacheCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, ValidationCacheEXT* pValidationCache ) const;
26490#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26491 ResultValueType<ValidationCacheEXT>::type createValidationCacheEXT( const ValidationCacheCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26492#ifndef VULKAN_HPP_NO_SMART_HANDLE
26493 UniqueValidationCacheEXT createValidationCacheEXTUnique( const ValidationCacheCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26494#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
26495#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26496
26497 void destroyValidationCacheEXT( ValidationCacheEXT validationCache, const AllocationCallbacks* pAllocator ) const;
26498#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26499 void destroyValidationCacheEXT( ValidationCacheEXT validationCache, Optional<const AllocationCallbacks> allocator = nullptr ) const;
26500#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26501
26502 Result getValidationCacheDataEXT( ValidationCacheEXT validationCache, size_t* pDataSize, void* pData ) const;
26503#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26504 template <typename Allocator = std::allocator<uint8_t>>
26505 typename ResultValueType<std::vector<uint8_t,Allocator>>::type getValidationCacheDataEXT( ValidationCacheEXT validationCache ) const;
26506#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26507
26508 Result mergeValidationCachesEXT( ValidationCacheEXT dstCache, uint32_t srcCacheCount, const ValidationCacheEXT* pSrcCaches ) const;
26509#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
26510 ResultValueType<void>::type mergeValidationCachesEXT( ValidationCacheEXT dstCache, ArrayProxy<const ValidationCacheEXT> srcCaches ) const;
26511#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
26512
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026513
26514
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070026515 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkDevice() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026516 {
26517 return m_device;
26518 }
26519
26520 explicit operator bool() const
26521 {
26522 return m_device != VK_NULL_HANDLE;
26523 }
26524
26525 bool operator!() const
26526 {
26527 return m_device == VK_NULL_HANDLE;
26528 }
26529
26530 private:
26531 VkDevice m_device;
26532 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060026533
Lenny Komowbed9b5c2016-08-11 11:23:15 -060026534 static_assert( sizeof( Device ) == sizeof( VkDevice ), "handle and wrapper have different size!" );
26535
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026536#ifndef VULKAN_HPP_NO_SMART_HANDLE
26537 class BufferDeleter
26538 {
26539 public:
26540 BufferDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26541 : m_device( device )
26542 , m_allocator( allocator )
26543 {}
26544
26545 void operator()( Buffer buffer )
26546 {
26547 m_device.destroyBuffer( buffer, m_allocator );
26548 }
26549
26550 private:
26551 Device m_device;
26552 Optional<const AllocationCallbacks> m_allocator;
26553 };
26554
26555 class BufferViewDeleter
26556 {
26557 public:
26558 BufferViewDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26559 : m_device( device )
26560 , m_allocator( allocator )
26561 {}
26562
26563 void operator()( BufferView bufferView )
26564 {
26565 m_device.destroyBufferView( bufferView, m_allocator );
26566 }
26567
26568 private:
26569 Device m_device;
26570 Optional<const AllocationCallbacks> m_allocator;
26571 };
26572
26573 class CommandBufferDeleter
26574 {
26575 public:
26576 CommandBufferDeleter( Device device = Device(), CommandPool commandPool = CommandPool() )
26577 : m_device( device )
26578 , m_commandPool( commandPool )
26579 {}
26580
26581 void operator()( CommandBuffer commandBuffer )
26582 {
26583 m_device.freeCommandBuffers( m_commandPool, commandBuffer );
26584 }
26585
26586 private:
26587 Device m_device;
26588 CommandPool m_commandPool;
26589 };
26590
26591 class CommandPoolDeleter
26592 {
26593 public:
26594 CommandPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26595 : m_device( device )
26596 , m_allocator( allocator )
26597 {}
26598
26599 void operator()( CommandPool commandPool )
26600 {
26601 m_device.destroyCommandPool( commandPool, m_allocator );
26602 }
26603
26604 private:
26605 Device m_device;
26606 Optional<const AllocationCallbacks> m_allocator;
26607 };
26608
26609 class DescriptorPoolDeleter
26610 {
26611 public:
26612 DescriptorPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26613 : m_device( device )
26614 , m_allocator( allocator )
26615 {}
26616
26617 void operator()( DescriptorPool descriptorPool )
26618 {
26619 m_device.destroyDescriptorPool( descriptorPool, m_allocator );
26620 }
26621
26622 private:
26623 Device m_device;
26624 Optional<const AllocationCallbacks> m_allocator;
26625 };
26626
26627 class DescriptorSetDeleter
26628 {
26629 public:
26630 DescriptorSetDeleter( Device device = Device(), DescriptorPool descriptorPool = DescriptorPool() )
26631 : m_device( device )
26632 , m_descriptorPool( descriptorPool )
26633 {}
26634
26635 void operator()( DescriptorSet descriptorSet )
26636 {
26637 m_device.freeDescriptorSets( m_descriptorPool, descriptorSet );
26638 }
26639
26640 private:
26641 Device m_device;
26642 DescriptorPool m_descriptorPool;
26643 };
26644
26645 class DescriptorSetLayoutDeleter
26646 {
26647 public:
26648 DescriptorSetLayoutDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26649 : m_device( device )
26650 , m_allocator( allocator )
26651 {}
26652
26653 void operator()( DescriptorSetLayout descriptorSetLayout )
26654 {
26655 m_device.destroyDescriptorSetLayout( descriptorSetLayout, m_allocator );
26656 }
26657
26658 private:
26659 Device m_device;
26660 Optional<const AllocationCallbacks> m_allocator;
26661 };
26662
Mark Young0f183a82017-02-28 09:58:04 -070026663 class DescriptorUpdateTemplateKHRDeleter
26664 {
26665 public:
26666 DescriptorUpdateTemplateKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26667 : m_device( device )
26668 , m_allocator( allocator )
26669 {}
26670
26671 void operator()( DescriptorUpdateTemplateKHR descriptorUpdateTemplateKHR )
26672 {
26673 m_device.destroyDescriptorUpdateTemplateKHR( descriptorUpdateTemplateKHR, m_allocator );
26674 }
26675
26676 private:
26677 Device m_device;
26678 Optional<const AllocationCallbacks> m_allocator;
26679 };
26680
Mark Lobodzinski36c33862017-02-13 10:15:53 -070026681 class DeviceMemoryDeleter
26682 {
26683 public:
26684 DeviceMemoryDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26685 : m_device( device )
26686 , m_allocator( allocator )
26687 {}
26688
26689 void operator()( DeviceMemory deviceMemory )
26690 {
26691 m_device.freeMemory( deviceMemory, m_allocator );
26692 }
26693
26694 private:
26695 Device m_device;
26696 Optional<const AllocationCallbacks> m_allocator;
26697 };
26698
26699 class EventDeleter
26700 {
26701 public:
26702 EventDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26703 : m_device( device )
26704 , m_allocator( allocator )
26705 {}
26706
26707 void operator()( Event event )
26708 {
26709 m_device.destroyEvent( event, m_allocator );
26710 }
26711
26712 private:
26713 Device m_device;
26714 Optional<const AllocationCallbacks> m_allocator;
26715 };
26716
26717 class FenceDeleter
26718 {
26719 public:
26720 FenceDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26721 : m_device( device )
26722 , m_allocator( allocator )
26723 {}
26724
26725 void operator()( Fence fence )
26726 {
26727 m_device.destroyFence( fence, m_allocator );
26728 }
26729
26730 private:
26731 Device m_device;
26732 Optional<const AllocationCallbacks> m_allocator;
26733 };
26734
26735 class FramebufferDeleter
26736 {
26737 public:
26738 FramebufferDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26739 : m_device( device )
26740 , m_allocator( allocator )
26741 {}
26742
26743 void operator()( Framebuffer framebuffer )
26744 {
26745 m_device.destroyFramebuffer( framebuffer, m_allocator );
26746 }
26747
26748 private:
26749 Device m_device;
26750 Optional<const AllocationCallbacks> m_allocator;
26751 };
26752
26753 class ImageDeleter
26754 {
26755 public:
26756 ImageDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26757 : m_device( device )
26758 , m_allocator( allocator )
26759 {}
26760
26761 void operator()( Image image )
26762 {
26763 m_device.destroyImage( image, m_allocator );
26764 }
26765
26766 private:
26767 Device m_device;
26768 Optional<const AllocationCallbacks> m_allocator;
26769 };
26770
26771 class ImageViewDeleter
26772 {
26773 public:
26774 ImageViewDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26775 : m_device( device )
26776 , m_allocator( allocator )
26777 {}
26778
26779 void operator()( ImageView imageView )
26780 {
26781 m_device.destroyImageView( imageView, m_allocator );
26782 }
26783
26784 private:
26785 Device m_device;
26786 Optional<const AllocationCallbacks> m_allocator;
26787 };
26788
26789 class IndirectCommandsLayoutNVXDeleter
26790 {
26791 public:
26792 IndirectCommandsLayoutNVXDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26793 : m_device( device )
26794 , m_allocator( allocator )
26795 {}
26796
26797 void operator()( IndirectCommandsLayoutNVX indirectCommandsLayoutNVX )
26798 {
26799 m_device.destroyIndirectCommandsLayoutNVX( indirectCommandsLayoutNVX, m_allocator );
26800 }
26801
26802 private:
26803 Device m_device;
26804 Optional<const AllocationCallbacks> m_allocator;
26805 };
26806
26807 class ObjectTableNVXDeleter
26808 {
26809 public:
26810 ObjectTableNVXDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26811 : m_device( device )
26812 , m_allocator( allocator )
26813 {}
26814
26815 void operator()( ObjectTableNVX objectTableNVX )
26816 {
26817 m_device.destroyObjectTableNVX( objectTableNVX, m_allocator );
26818 }
26819
26820 private:
26821 Device m_device;
26822 Optional<const AllocationCallbacks> m_allocator;
26823 };
26824
26825 class PipelineDeleter
26826 {
26827 public:
26828 PipelineDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26829 : m_device( device )
26830 , m_allocator( allocator )
26831 {}
26832
26833 void operator()( Pipeline pipeline )
26834 {
26835 m_device.destroyPipeline( pipeline, m_allocator );
26836 }
26837
26838 private:
26839 Device m_device;
26840 Optional<const AllocationCallbacks> m_allocator;
26841 };
26842
26843 class PipelineCacheDeleter
26844 {
26845 public:
26846 PipelineCacheDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26847 : m_device( device )
26848 , m_allocator( allocator )
26849 {}
26850
26851 void operator()( PipelineCache pipelineCache )
26852 {
26853 m_device.destroyPipelineCache( pipelineCache, m_allocator );
26854 }
26855
26856 private:
26857 Device m_device;
26858 Optional<const AllocationCallbacks> m_allocator;
26859 };
26860
26861 class PipelineLayoutDeleter
26862 {
26863 public:
26864 PipelineLayoutDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26865 : m_device( device )
26866 , m_allocator( allocator )
26867 {}
26868
26869 void operator()( PipelineLayout pipelineLayout )
26870 {
26871 m_device.destroyPipelineLayout( pipelineLayout, m_allocator );
26872 }
26873
26874 private:
26875 Device m_device;
26876 Optional<const AllocationCallbacks> m_allocator;
26877 };
26878
26879 class QueryPoolDeleter
26880 {
26881 public:
26882 QueryPoolDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26883 : m_device( device )
26884 , m_allocator( allocator )
26885 {}
26886
26887 void operator()( QueryPool queryPool )
26888 {
26889 m_device.destroyQueryPool( queryPool, m_allocator );
26890 }
26891
26892 private:
26893 Device m_device;
26894 Optional<const AllocationCallbacks> m_allocator;
26895 };
26896
26897 class RenderPassDeleter
26898 {
26899 public:
26900 RenderPassDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26901 : m_device( device )
26902 , m_allocator( allocator )
26903 {}
26904
26905 void operator()( RenderPass renderPass )
26906 {
26907 m_device.destroyRenderPass( renderPass, m_allocator );
26908 }
26909
26910 private:
26911 Device m_device;
26912 Optional<const AllocationCallbacks> m_allocator;
26913 };
26914
26915 class SamplerDeleter
26916 {
26917 public:
26918 SamplerDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26919 : m_device( device )
26920 , m_allocator( allocator )
26921 {}
26922
26923 void operator()( Sampler sampler )
26924 {
26925 m_device.destroySampler( sampler, m_allocator );
26926 }
26927
26928 private:
26929 Device m_device;
26930 Optional<const AllocationCallbacks> m_allocator;
26931 };
26932
26933 class SemaphoreDeleter
26934 {
26935 public:
26936 SemaphoreDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26937 : m_device( device )
26938 , m_allocator( allocator )
26939 {}
26940
26941 void operator()( Semaphore semaphore )
26942 {
26943 m_device.destroySemaphore( semaphore, m_allocator );
26944 }
26945
26946 private:
26947 Device m_device;
26948 Optional<const AllocationCallbacks> m_allocator;
26949 };
26950
26951 class ShaderModuleDeleter
26952 {
26953 public:
26954 ShaderModuleDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26955 : m_device( device )
26956 , m_allocator( allocator )
26957 {}
26958
26959 void operator()( ShaderModule shaderModule )
26960 {
26961 m_device.destroyShaderModule( shaderModule, m_allocator );
26962 }
26963
26964 private:
26965 Device m_device;
26966 Optional<const AllocationCallbacks> m_allocator;
26967 };
26968
26969 class SwapchainKHRDeleter
26970 {
26971 public:
26972 SwapchainKHRDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26973 : m_device( device )
26974 , m_allocator( allocator )
26975 {}
26976
26977 void operator()( SwapchainKHR swapchainKHR )
26978 {
26979 m_device.destroySwapchainKHR( swapchainKHR, m_allocator );
26980 }
26981
26982 private:
26983 Device m_device;
26984 Optional<const AllocationCallbacks> m_allocator;
26985 };
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060026986
26987 class ValidationCacheEXTDeleter
26988 {
26989 public:
26990 ValidationCacheEXTDeleter( Device device = Device(), Optional<const AllocationCallbacks> allocator = nullptr )
26991 : m_device( device )
26992 , m_allocator( allocator )
26993 {}
26994
26995 void operator()( ValidationCacheEXT validationCacheEXT )
26996 {
26997 m_device.destroyValidationCacheEXT( validationCacheEXT, m_allocator );
26998 }
26999
27000 private:
27001 Device m_device;
27002 Optional<const AllocationCallbacks> m_allocator;
27003 };
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027004#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27005
27006 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const char* pName ) const
27007 {
27008 return vkGetDeviceProcAddr( m_device, pName );
27009 }
27010#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27011 VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const std::string & name ) const
27012 {
27013 return vkGetDeviceProcAddr( m_device, name.c_str() );
27014 }
27015#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27016
27017 VULKAN_HPP_INLINE void Device::destroy( const AllocationCallbacks* pAllocator ) const
27018 {
27019 vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27020 }
27021#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27022 VULKAN_HPP_INLINE void Device::destroy( Optional<const AllocationCallbacks> allocator ) const
27023 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027024 vkDestroyDevice( m_device, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027025 }
27026#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27027
27028 VULKAN_HPP_INLINE void Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Queue* pQueue ) const
27029 {
27030 vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( pQueue ) );
27031 }
27032#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27033 VULKAN_HPP_INLINE Queue Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex ) const
27034 {
27035 Queue queue;
27036 vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast<VkQueue*>( &queue ) );
27037 return queue;
27038 }
27039#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27040
27041#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
27042 VULKAN_HPP_INLINE Result Device::waitIdle() const
27043 {
27044 return static_cast<Result>( vkDeviceWaitIdle( m_device ) );
27045 }
27046#else
27047 VULKAN_HPP_INLINE ResultValueType<void>::type Device::waitIdle() const
27048 {
27049 Result result = static_cast<Result>( vkDeviceWaitIdle( m_device ) );
27050 return createResultValue( result, "vk::Device::waitIdle" );
27051 }
27052#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27053
27054 VULKAN_HPP_INLINE Result Device::allocateMemory( const MemoryAllocateInfo* pAllocateInfo, const AllocationCallbacks* pAllocator, DeviceMemory* pMemory ) const
27055 {
27056 return static_cast<Result>( vkAllocateMemory( m_device, reinterpret_cast<const VkMemoryAllocateInfo*>( pAllocateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDeviceMemory*>( pMemory ) ) );
27057 }
27058#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27059 VULKAN_HPP_INLINE ResultValueType<DeviceMemory>::type Device::allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator ) const
27060 {
27061 DeviceMemory memory;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027062 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 -070027063 return createResultValue( result, memory, "vk::Device::allocateMemory" );
27064 }
27065#ifndef VULKAN_HPP_NO_SMART_HANDLE
27066 VULKAN_HPP_INLINE UniqueDeviceMemory Device::allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional<const AllocationCallbacks> allocator ) const
27067 {
27068 DeviceMemoryDeleter deleter( *this, allocator );
27069 return UniqueDeviceMemory( allocateMemory( allocateInfo, allocator ), deleter );
27070 }
27071#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27072#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27073
27074 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, const AllocationCallbacks* pAllocator ) const
27075 {
27076 vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27077 }
27078#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27079 VULKAN_HPP_INLINE void Device::freeMemory( DeviceMemory memory, Optional<const AllocationCallbacks> allocator ) const
27080 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027081 vkFreeMemory( m_device, static_cast<VkDeviceMemory>( memory ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027082 }
27083#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27084
27085 VULKAN_HPP_INLINE Result Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags, void** ppData ) const
27086 {
27087 return static_cast<Result>( vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), ppData ) );
27088 }
27089#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27090 VULKAN_HPP_INLINE ResultValueType<void*>::type Device::mapMemory( DeviceMemory memory, DeviceSize offset, DeviceSize size, MemoryMapFlags flags ) const
27091 {
27092 void* pData;
27093 Result result = static_cast<Result>( vkMapMemory( m_device, static_cast<VkDeviceMemory>( memory ), offset, size, static_cast<VkMemoryMapFlags>( flags ), &pData ) );
27094 return createResultValue( result, pData, "vk::Device::mapMemory" );
27095 }
27096#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27097
27098 VULKAN_HPP_INLINE void Device::unmapMemory( DeviceMemory memory ) const
27099 {
27100 vkUnmapMemory( m_device, static_cast<VkDeviceMemory>( memory ) );
27101 }
27102
27103 VULKAN_HPP_INLINE Result Device::flushMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const
27104 {
27105 return static_cast<Result>( vkFlushMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
27106 }
27107#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27108 VULKAN_HPP_INLINE ResultValueType<void>::type Device::flushMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const
27109 {
27110 Result result = static_cast<Result>( vkFlushMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
27111 return createResultValue( result, "vk::Device::flushMappedMemoryRanges" );
27112 }
27113#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27114
27115 VULKAN_HPP_INLINE Result Device::invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const MappedMemoryRange* pMemoryRanges ) const
27116 {
27117 return static_cast<Result>( vkInvalidateMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast<const VkMappedMemoryRange*>( pMemoryRanges ) ) );
27118 }
27119#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27120 VULKAN_HPP_INLINE ResultValueType<void>::type Device::invalidateMappedMemoryRanges( ArrayProxy<const MappedMemoryRange> memoryRanges ) const
27121 {
27122 Result result = static_cast<Result>( vkInvalidateMappedMemoryRanges( m_device, memoryRanges.size() , reinterpret_cast<const VkMappedMemoryRange*>( memoryRanges.data() ) ) );
27123 return createResultValue( result, "vk::Device::invalidateMappedMemoryRanges" );
27124 }
27125#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27126
27127 VULKAN_HPP_INLINE void Device::getMemoryCommitment( DeviceMemory memory, DeviceSize* pCommittedMemoryInBytes ) const
27128 {
27129 vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), pCommittedMemoryInBytes );
27130 }
27131#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27132 VULKAN_HPP_INLINE DeviceSize Device::getMemoryCommitment( DeviceMemory memory ) const
27133 {
27134 DeviceSize committedMemoryInBytes;
27135 vkGetDeviceMemoryCommitment( m_device, static_cast<VkDeviceMemory>( memory ), &committedMemoryInBytes );
27136 return committedMemoryInBytes;
27137 }
27138#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27139
27140 VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements( Buffer buffer, MemoryRequirements* pMemoryRequirements ) const
27141 {
27142 vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
27143 }
27144#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27145 VULKAN_HPP_INLINE MemoryRequirements Device::getBufferMemoryRequirements( Buffer buffer ) const
27146 {
27147 MemoryRequirements memoryRequirements;
27148 vkGetBufferMemoryRequirements( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
27149 return memoryRequirements;
27150 }
27151#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27152
27153#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
27154 VULKAN_HPP_INLINE Result Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const
27155 {
27156 return static_cast<Result>( vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
27157 }
27158#else
27159 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory( Buffer buffer, DeviceMemory memory, DeviceSize memoryOffset ) const
27160 {
27161 Result result = static_cast<Result>( vkBindBufferMemory( m_device, static_cast<VkBuffer>( buffer ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
27162 return createResultValue( result, "vk::Device::bindBufferMemory" );
27163 }
27164#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27165
27166 VULKAN_HPP_INLINE void Device::getImageMemoryRequirements( Image image, MemoryRequirements* pMemoryRequirements ) const
27167 {
27168 vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( pMemoryRequirements ) );
27169 }
27170#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27171 VULKAN_HPP_INLINE MemoryRequirements Device::getImageMemoryRequirements( Image image ) const
27172 {
27173 MemoryRequirements memoryRequirements;
27174 vkGetImageMemoryRequirements( m_device, static_cast<VkImage>( image ), reinterpret_cast<VkMemoryRequirements*>( &memoryRequirements ) );
27175 return memoryRequirements;
27176 }
27177#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27178
27179#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
27180 VULKAN_HPP_INLINE Result Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const
27181 {
27182 return static_cast<Result>( vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
27183 }
27184#else
27185 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory( Image image, DeviceMemory memory, DeviceSize memoryOffset ) const
27186 {
27187 Result result = static_cast<Result>( vkBindImageMemory( m_device, static_cast<VkImage>( image ), static_cast<VkDeviceMemory>( memory ), memoryOffset ) );
27188 return createResultValue( result, "vk::Device::bindImageMemory" );
27189 }
27190#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27191
27192 VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements( Image image, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements* pSparseMemoryRequirements ) const
27193 {
27194 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), pSparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( pSparseMemoryRequirements ) );
27195 }
27196#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27197 template <typename Allocator>
27198 VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements,Allocator> Device::getImageSparseMemoryRequirements( Image image ) const
27199 {
27200 std::vector<SparseImageMemoryRequirements,Allocator> sparseMemoryRequirements;
27201 uint32_t sparseMemoryRequirementCount;
27202 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, nullptr );
27203 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
27204 vkGetImageSparseMemoryRequirements( m_device, static_cast<VkImage>( image ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements*>( sparseMemoryRequirements.data() ) );
27205 return sparseMemoryRequirements;
27206 }
27207#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27208
27209 VULKAN_HPP_INLINE Result Device::createFence( const FenceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
27210 {
27211 return static_cast<Result>( vkCreateFence( m_device, reinterpret_cast<const VkFenceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
27212 }
27213#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27214 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::createFence( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27215 {
27216 Fence fence;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027217 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 -070027218 return createResultValue( result, fence, "vk::Device::createFence" );
27219 }
27220#ifndef VULKAN_HPP_NO_SMART_HANDLE
27221 VULKAN_HPP_INLINE UniqueFence Device::createFenceUnique( const FenceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27222 {
27223 FenceDeleter deleter( *this, allocator );
27224 return UniqueFence( createFence( createInfo, allocator ), deleter );
27225 }
27226#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27227#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27228
27229 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, const AllocationCallbacks* pAllocator ) const
27230 {
27231 vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27232 }
27233#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27234 VULKAN_HPP_INLINE void Device::destroyFence( Fence fence, Optional<const AllocationCallbacks> allocator ) const
27235 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027236 vkDestroyFence( m_device, static_cast<VkFence>( fence ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027237 }
27238#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27239
27240 VULKAN_HPP_INLINE Result Device::resetFences( uint32_t fenceCount, const Fence* pFences ) const
27241 {
27242 return static_cast<Result>( vkResetFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ) ) );
27243 }
27244#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27245 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetFences( ArrayProxy<const Fence> fences ) const
27246 {
27247 Result result = static_cast<Result>( vkResetFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ) ) );
27248 return createResultValue( result, "vk::Device::resetFences" );
27249 }
27250#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27251
27252#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
27253 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence ) const
27254 {
27255 return static_cast<Result>( vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
27256 }
27257#else
27258 VULKAN_HPP_INLINE Result Device::getFenceStatus( Fence fence ) const
27259 {
27260 Result result = static_cast<Result>( vkGetFenceStatus( m_device, static_cast<VkFence>( fence ) ) );
27261 return createResultValue( result, "vk::Device::getFenceStatus", { Result::eSuccess, Result::eNotReady } );
27262 }
27263#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27264
27265 VULKAN_HPP_INLINE Result Device::waitForFences( uint32_t fenceCount, const Fence* pFences, Bool32 waitAll, uint64_t timeout ) const
27266 {
27267 return static_cast<Result>( vkWaitForFences( m_device, fenceCount, reinterpret_cast<const VkFence*>( pFences ), waitAll, timeout ) );
27268 }
27269#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27270 VULKAN_HPP_INLINE Result Device::waitForFences( ArrayProxy<const Fence> fences, Bool32 waitAll, uint64_t timeout ) const
27271 {
27272 Result result = static_cast<Result>( vkWaitForFences( m_device, fences.size() , reinterpret_cast<const VkFence*>( fences.data() ), waitAll, timeout ) );
27273 return createResultValue( result, "vk::Device::waitForFences", { Result::eSuccess, Result::eTimeout } );
27274 }
27275#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27276
27277 VULKAN_HPP_INLINE Result Device::createSemaphore( const SemaphoreCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Semaphore* pSemaphore ) const
27278 {
27279 return static_cast<Result>( vkCreateSemaphore( m_device, reinterpret_cast<const VkSemaphoreCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSemaphore*>( pSemaphore ) ) );
27280 }
27281#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27282 VULKAN_HPP_INLINE ResultValueType<Semaphore>::type Device::createSemaphore( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27283 {
27284 Semaphore semaphore;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027285 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 -070027286 return createResultValue( result, semaphore, "vk::Device::createSemaphore" );
27287 }
27288#ifndef VULKAN_HPP_NO_SMART_HANDLE
27289 VULKAN_HPP_INLINE UniqueSemaphore Device::createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27290 {
27291 SemaphoreDeleter deleter( *this, allocator );
27292 return UniqueSemaphore( createSemaphore( createInfo, allocator ), deleter );
27293 }
27294#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27295#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27296
27297 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, const AllocationCallbacks* pAllocator ) const
27298 {
27299 vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27300 }
27301#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27302 VULKAN_HPP_INLINE void Device::destroySemaphore( Semaphore semaphore, Optional<const AllocationCallbacks> allocator ) const
27303 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027304 vkDestroySemaphore( m_device, static_cast<VkSemaphore>( semaphore ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027305 }
27306#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27307
27308 VULKAN_HPP_INLINE Result Device::createEvent( const EventCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Event* pEvent ) const
27309 {
27310 return static_cast<Result>( vkCreateEvent( m_device, reinterpret_cast<const VkEventCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkEvent*>( pEvent ) ) );
27311 }
27312#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27313 VULKAN_HPP_INLINE ResultValueType<Event>::type Device::createEvent( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27314 {
27315 Event event;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027316 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 -070027317 return createResultValue( result, event, "vk::Device::createEvent" );
27318 }
27319#ifndef VULKAN_HPP_NO_SMART_HANDLE
27320 VULKAN_HPP_INLINE UniqueEvent Device::createEventUnique( const EventCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27321 {
27322 EventDeleter deleter( *this, allocator );
27323 return UniqueEvent( createEvent( createInfo, allocator ), deleter );
27324 }
27325#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27326#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27327
27328 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, const AllocationCallbacks* pAllocator ) const
27329 {
27330 vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27331 }
27332#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27333 VULKAN_HPP_INLINE void Device::destroyEvent( Event event, Optional<const AllocationCallbacks> allocator ) const
27334 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027335 vkDestroyEvent( m_device, static_cast<VkEvent>( event ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027336 }
27337#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27338
27339#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
27340 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event ) const
27341 {
27342 return static_cast<Result>( vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
27343 }
27344#else
27345 VULKAN_HPP_INLINE Result Device::getEventStatus( Event event ) const
27346 {
27347 Result result = static_cast<Result>( vkGetEventStatus( m_device, static_cast<VkEvent>( event ) ) );
27348 return createResultValue( result, "vk::Device::getEventStatus", { Result::eEventSet, Result::eEventReset } );
27349 }
27350#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27351
27352#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
27353 VULKAN_HPP_INLINE Result Device::setEvent( Event event ) const
27354 {
27355 return static_cast<Result>( vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
27356 }
27357#else
27358 VULKAN_HPP_INLINE ResultValueType<void>::type Device::setEvent( Event event ) const
27359 {
27360 Result result = static_cast<Result>( vkSetEvent( m_device, static_cast<VkEvent>( event ) ) );
27361 return createResultValue( result, "vk::Device::setEvent" );
27362 }
27363#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27364
27365#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
27366 VULKAN_HPP_INLINE Result Device::resetEvent( Event event ) const
27367 {
27368 return static_cast<Result>( vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
27369 }
27370#else
27371 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetEvent( Event event ) const
27372 {
27373 Result result = static_cast<Result>( vkResetEvent( m_device, static_cast<VkEvent>( event ) ) );
27374 return createResultValue( result, "vk::Device::resetEvent" );
27375 }
27376#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27377
27378 VULKAN_HPP_INLINE Result Device::createQueryPool( const QueryPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, QueryPool* pQueryPool ) const
27379 {
27380 return static_cast<Result>( vkCreateQueryPool( m_device, reinterpret_cast<const VkQueryPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkQueryPool*>( pQueryPool ) ) );
27381 }
27382#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27383 VULKAN_HPP_INLINE ResultValueType<QueryPool>::type Device::createQueryPool( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27384 {
27385 QueryPool queryPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027386 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 -070027387 return createResultValue( result, queryPool, "vk::Device::createQueryPool" );
27388 }
27389#ifndef VULKAN_HPP_NO_SMART_HANDLE
27390 VULKAN_HPP_INLINE UniqueQueryPool Device::createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27391 {
27392 QueryPoolDeleter deleter( *this, allocator );
27393 return UniqueQueryPool( createQueryPool( createInfo, allocator ), deleter );
27394 }
27395#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27396#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27397
27398 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, const AllocationCallbacks* pAllocator ) const
27399 {
27400 vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27401 }
27402#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27403 VULKAN_HPP_INLINE void Device::destroyQueryPool( QueryPool queryPool, Optional<const AllocationCallbacks> allocator ) const
27404 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027405 vkDestroyQueryPool( m_device, static_cast<VkQueryPool>( queryPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027406 }
27407#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27408
27409 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, DeviceSize stride, QueryResultFlags flags ) const
27410 {
27411 return static_cast<Result>( vkGetQueryPoolResults( m_device, static_cast<VkQueryPool>( queryPool ), firstQuery, queryCount, dataSize, pData, stride, static_cast<VkQueryResultFlags>( flags ) ) );
27412 }
27413#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27414 template <typename T>
27415 VULKAN_HPP_INLINE Result Device::getQueryPoolResults( QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, ArrayProxy<T> data, DeviceSize stride, QueryResultFlags flags ) const
27416 {
27417 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 ) ) );
27418 return createResultValue( result, "vk::Device::getQueryPoolResults", { Result::eSuccess, Result::eNotReady } );
27419 }
27420#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27421
27422 VULKAN_HPP_INLINE Result Device::createBuffer( const BufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Buffer* pBuffer ) const
27423 {
27424 return static_cast<Result>( vkCreateBuffer( m_device, reinterpret_cast<const VkBufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBuffer*>( pBuffer ) ) );
27425 }
27426#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27427 VULKAN_HPP_INLINE ResultValueType<Buffer>::type Device::createBuffer( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27428 {
27429 Buffer buffer;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027430 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 -070027431 return createResultValue( result, buffer, "vk::Device::createBuffer" );
27432 }
27433#ifndef VULKAN_HPP_NO_SMART_HANDLE
27434 VULKAN_HPP_INLINE UniqueBuffer Device::createBufferUnique( const BufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27435 {
27436 BufferDeleter deleter( *this, allocator );
27437 return UniqueBuffer( createBuffer( createInfo, allocator ), deleter );
27438 }
27439#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27440#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27441
27442 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, const AllocationCallbacks* pAllocator ) const
27443 {
27444 vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27445 }
27446#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27447 VULKAN_HPP_INLINE void Device::destroyBuffer( Buffer buffer, Optional<const AllocationCallbacks> allocator ) const
27448 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027449 vkDestroyBuffer( m_device, static_cast<VkBuffer>( buffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027450 }
27451#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27452
27453 VULKAN_HPP_INLINE Result Device::createBufferView( const BufferViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, BufferView* pView ) const
27454 {
27455 return static_cast<Result>( vkCreateBufferView( m_device, reinterpret_cast<const VkBufferViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkBufferView*>( pView ) ) );
27456 }
27457#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27458 VULKAN_HPP_INLINE ResultValueType<BufferView>::type Device::createBufferView( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27459 {
27460 BufferView view;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027461 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 -070027462 return createResultValue( result, view, "vk::Device::createBufferView" );
27463 }
27464#ifndef VULKAN_HPP_NO_SMART_HANDLE
27465 VULKAN_HPP_INLINE UniqueBufferView Device::createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27466 {
27467 BufferViewDeleter deleter( *this, allocator );
27468 return UniqueBufferView( createBufferView( createInfo, allocator ), deleter );
27469 }
27470#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27471#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27472
27473 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, const AllocationCallbacks* pAllocator ) const
27474 {
27475 vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27476 }
27477#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27478 VULKAN_HPP_INLINE void Device::destroyBufferView( BufferView bufferView, Optional<const AllocationCallbacks> allocator ) const
27479 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027480 vkDestroyBufferView( m_device, static_cast<VkBufferView>( bufferView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027481 }
27482#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27483
27484 VULKAN_HPP_INLINE Result Device::createImage( const ImageCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Image* pImage ) const
27485 {
27486 return static_cast<Result>( vkCreateImage( m_device, reinterpret_cast<const VkImageCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImage*>( pImage ) ) );
27487 }
27488#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27489 VULKAN_HPP_INLINE ResultValueType<Image>::type Device::createImage( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27490 {
27491 Image image;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027492 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 -070027493 return createResultValue( result, image, "vk::Device::createImage" );
27494 }
27495#ifndef VULKAN_HPP_NO_SMART_HANDLE
27496 VULKAN_HPP_INLINE UniqueImage Device::createImageUnique( const ImageCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27497 {
27498 ImageDeleter deleter( *this, allocator );
27499 return UniqueImage( createImage( createInfo, allocator ), deleter );
27500 }
27501#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27502#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27503
27504 VULKAN_HPP_INLINE void Device::destroyImage( Image image, const AllocationCallbacks* pAllocator ) const
27505 {
27506 vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27507 }
27508#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27509 VULKAN_HPP_INLINE void Device::destroyImage( Image image, Optional<const AllocationCallbacks> allocator ) const
27510 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027511 vkDestroyImage( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027512 }
27513#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27514
27515 VULKAN_HPP_INLINE void Device::getImageSubresourceLayout( Image image, const ImageSubresource* pSubresource, SubresourceLayout* pLayout ) const
27516 {
27517 vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( pSubresource ), reinterpret_cast<VkSubresourceLayout*>( pLayout ) );
27518 }
27519#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27520 VULKAN_HPP_INLINE SubresourceLayout Device::getImageSubresourceLayout( Image image, const ImageSubresource & subresource ) const
27521 {
27522 SubresourceLayout layout;
27523 vkGetImageSubresourceLayout( m_device, static_cast<VkImage>( image ), reinterpret_cast<const VkImageSubresource*>( &subresource ), reinterpret_cast<VkSubresourceLayout*>( &layout ) );
27524 return layout;
27525 }
27526#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27527
27528 VULKAN_HPP_INLINE Result Device::createImageView( const ImageViewCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ImageView* pView ) const
27529 {
27530 return static_cast<Result>( vkCreateImageView( m_device, reinterpret_cast<const VkImageViewCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkImageView*>( pView ) ) );
27531 }
27532#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27533 VULKAN_HPP_INLINE ResultValueType<ImageView>::type Device::createImageView( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27534 {
27535 ImageView view;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027536 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 -070027537 return createResultValue( result, view, "vk::Device::createImageView" );
27538 }
27539#ifndef VULKAN_HPP_NO_SMART_HANDLE
27540 VULKAN_HPP_INLINE UniqueImageView Device::createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27541 {
27542 ImageViewDeleter deleter( *this, allocator );
27543 return UniqueImageView( createImageView( createInfo, allocator ), deleter );
27544 }
27545#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27546#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27547
27548 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, const AllocationCallbacks* pAllocator ) const
27549 {
27550 vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27551 }
27552#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27553 VULKAN_HPP_INLINE void Device::destroyImageView( ImageView imageView, Optional<const AllocationCallbacks> allocator ) const
27554 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027555 vkDestroyImageView( m_device, static_cast<VkImageView>( imageView ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027556 }
27557#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27558
27559 VULKAN_HPP_INLINE Result Device::createShaderModule( const ShaderModuleCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, ShaderModule* pShaderModule ) const
27560 {
27561 return static_cast<Result>( vkCreateShaderModule( m_device, reinterpret_cast<const VkShaderModuleCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkShaderModule*>( pShaderModule ) ) );
27562 }
27563#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27564 VULKAN_HPP_INLINE ResultValueType<ShaderModule>::type Device::createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27565 {
27566 ShaderModule shaderModule;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027567 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 -070027568 return createResultValue( result, shaderModule, "vk::Device::createShaderModule" );
27569 }
27570#ifndef VULKAN_HPP_NO_SMART_HANDLE
27571 VULKAN_HPP_INLINE UniqueShaderModule Device::createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27572 {
27573 ShaderModuleDeleter deleter( *this, allocator );
27574 return UniqueShaderModule( createShaderModule( createInfo, allocator ), deleter );
27575 }
27576#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27577#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27578
27579 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, const AllocationCallbacks* pAllocator ) const
27580 {
27581 vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27582 }
27583#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27584 VULKAN_HPP_INLINE void Device::destroyShaderModule( ShaderModule shaderModule, Optional<const AllocationCallbacks> allocator ) const
27585 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027586 vkDestroyShaderModule( m_device, static_cast<VkShaderModule>( shaderModule ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027587 }
27588#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27589
27590 VULKAN_HPP_INLINE Result Device::createPipelineCache( const PipelineCacheCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineCache* pPipelineCache ) const
27591 {
27592 return static_cast<Result>( vkCreatePipelineCache( m_device, reinterpret_cast<const VkPipelineCacheCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineCache*>( pPipelineCache ) ) );
27593 }
27594#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27595 VULKAN_HPP_INLINE ResultValueType<PipelineCache>::type Device::createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27596 {
27597 PipelineCache pipelineCache;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027598 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 -070027599 return createResultValue( result, pipelineCache, "vk::Device::createPipelineCache" );
27600 }
27601#ifndef VULKAN_HPP_NO_SMART_HANDLE
27602 VULKAN_HPP_INLINE UniquePipelineCache Device::createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27603 {
27604 PipelineCacheDeleter deleter( *this, allocator );
27605 return UniquePipelineCache( createPipelineCache( createInfo, allocator ), deleter );
27606 }
27607#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27608#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27609
27610 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, const AllocationCallbacks* pAllocator ) const
27611 {
27612 vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27613 }
27614#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27615 VULKAN_HPP_INLINE void Device::destroyPipelineCache( PipelineCache pipelineCache, Optional<const AllocationCallbacks> allocator ) const
27616 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027617 vkDestroyPipelineCache( m_device, static_cast<VkPipelineCache>( pipelineCache ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027618 }
27619#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27620
27621 VULKAN_HPP_INLINE Result Device::getPipelineCacheData( PipelineCache pipelineCache, size_t* pDataSize, void* pData ) const
27622 {
27623 return static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), pDataSize, pData ) );
27624 }
27625#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27626 template <typename Allocator>
27627 VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getPipelineCacheData( PipelineCache pipelineCache ) const
27628 {
27629 std::vector<uint8_t,Allocator> data;
27630 size_t dataSize;
27631 Result result;
27632 do
27633 {
27634 result = static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, nullptr ) );
27635 if ( ( result == Result::eSuccess ) && dataSize )
27636 {
27637 data.resize( dataSize );
27638 result = static_cast<Result>( vkGetPipelineCacheData( m_device, static_cast<VkPipelineCache>( pipelineCache ), &dataSize, reinterpret_cast<void*>( data.data() ) ) );
27639 }
27640 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060027641 assert( dataSize <= data.size() );
27642 data.resize( dataSize );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027643 return createResultValue( result, data, "vk::Device::getPipelineCacheData" );
27644 }
27645#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27646
27647 VULKAN_HPP_INLINE Result Device::mergePipelineCaches( PipelineCache dstCache, uint32_t srcCacheCount, const PipelineCache* pSrcCaches ) const
27648 {
27649 return static_cast<Result>( vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCacheCount, reinterpret_cast<const VkPipelineCache*>( pSrcCaches ) ) );
27650 }
27651#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27652 VULKAN_HPP_INLINE ResultValueType<void>::type Device::mergePipelineCaches( PipelineCache dstCache, ArrayProxy<const PipelineCache> srcCaches ) const
27653 {
27654 Result result = static_cast<Result>( vkMergePipelineCaches( m_device, static_cast<VkPipelineCache>( dstCache ), srcCaches.size() , reinterpret_cast<const VkPipelineCache*>( srcCaches.data() ) ) );
27655 return createResultValue( result, "vk::Device::mergePipelineCaches" );
27656 }
27657#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27658
27659 VULKAN_HPP_INLINE Result Device::createGraphicsPipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const GraphicsPipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const
27660 {
27661 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 ) ) );
27662 }
27663#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27664 template <typename Allocator>
27665 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createGraphicsPipelines( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
27666 {
27667 std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027668 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 -070027669 return createResultValue( result, pipelines, "vk::Device::createGraphicsPipelines" );
27670 }
27671 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createGraphicsPipeline( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27672 {
27673 Pipeline pipeline;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027674 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 -070027675 return createResultValue( result, pipeline, "vk::Device::createGraphicsPipeline" );
27676 }
27677#ifndef VULKAN_HPP_NO_SMART_HANDLE
27678 template <typename Allocator>
27679 VULKAN_HPP_INLINE std::vector<UniquePipeline> Device::createGraphicsPipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const GraphicsPipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
27680 {
27681 PipelineDeleter deleter( *this, allocator );
27682 std::vector<Pipeline,Allocator> pipelines = createGraphicsPipelines( pipelineCache, createInfos, allocator );
27683 std::vector<UniquePipeline> uniquePipelines;
27684 uniquePipelines.reserve( pipelines.size() );
27685 for ( auto pipeline : pipelines )
27686 {
27687 uniquePipelines.push_back( UniquePipeline( pipeline, deleter ) );
27688 }
27689 return uniquePipelines;
27690 }
27691 VULKAN_HPP_INLINE UniquePipeline Device::createGraphicsPipelineUnique( PipelineCache pipelineCache, const GraphicsPipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27692 {
27693 PipelineDeleter deleter( *this, allocator );
27694 return UniquePipeline( createGraphicsPipeline( pipelineCache, createInfo, allocator ), deleter );
27695 }
27696#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27697#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27698
27699 VULKAN_HPP_INLINE Result Device::createComputePipelines( PipelineCache pipelineCache, uint32_t createInfoCount, const ComputePipelineCreateInfo* pCreateInfos, const AllocationCallbacks* pAllocator, Pipeline* pPipelines ) const
27700 {
27701 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 ) ) );
27702 }
27703#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27704 template <typename Allocator>
27705 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Pipeline,Allocator>>::type Device::createComputePipelines( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
27706 {
27707 std::vector<Pipeline,Allocator> pipelines( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027708 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 -070027709 return createResultValue( result, pipelines, "vk::Device::createComputePipelines" );
27710 }
27711 VULKAN_HPP_INLINE ResultValueType<Pipeline>::type Device::createComputePipeline( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27712 {
27713 Pipeline pipeline;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027714 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 -070027715 return createResultValue( result, pipeline, "vk::Device::createComputePipeline" );
27716 }
27717#ifndef VULKAN_HPP_NO_SMART_HANDLE
27718 template <typename Allocator>
27719 VULKAN_HPP_INLINE std::vector<UniquePipeline> Device::createComputePipelinesUnique( PipelineCache pipelineCache, ArrayProxy<const ComputePipelineCreateInfo> createInfos, Optional<const AllocationCallbacks> allocator ) const
27720 {
27721 PipelineDeleter deleter( *this, allocator );
27722 std::vector<Pipeline,Allocator> pipelines = createComputePipelines( pipelineCache, createInfos, allocator );
27723 std::vector<UniquePipeline> uniquePipelines;
27724 uniquePipelines.reserve( pipelines.size() );
27725 for ( auto pipeline : pipelines )
27726 {
27727 uniquePipelines.push_back( UniquePipeline( pipeline, deleter ) );
27728 }
27729 return uniquePipelines;
27730 }
27731 VULKAN_HPP_INLINE UniquePipeline Device::createComputePipelineUnique( PipelineCache pipelineCache, const ComputePipelineCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27732 {
27733 PipelineDeleter deleter( *this, allocator );
27734 return UniquePipeline( createComputePipeline( pipelineCache, createInfo, allocator ), deleter );
27735 }
27736#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27737#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27738
27739 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, const AllocationCallbacks* pAllocator ) const
27740 {
27741 vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27742 }
27743#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27744 VULKAN_HPP_INLINE void Device::destroyPipeline( Pipeline pipeline, Optional<const AllocationCallbacks> allocator ) const
27745 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027746 vkDestroyPipeline( m_device, static_cast<VkPipeline>( pipeline ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027747 }
27748#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27749
27750 VULKAN_HPP_INLINE Result Device::createPipelineLayout( const PipelineLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, PipelineLayout* pPipelineLayout ) const
27751 {
27752 return static_cast<Result>( vkCreatePipelineLayout( m_device, reinterpret_cast<const VkPipelineLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkPipelineLayout*>( pPipelineLayout ) ) );
27753 }
27754#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27755 VULKAN_HPP_INLINE ResultValueType<PipelineLayout>::type Device::createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27756 {
27757 PipelineLayout pipelineLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027758 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 -070027759 return createResultValue( result, pipelineLayout, "vk::Device::createPipelineLayout" );
27760 }
27761#ifndef VULKAN_HPP_NO_SMART_HANDLE
27762 VULKAN_HPP_INLINE UniquePipelineLayout Device::createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27763 {
27764 PipelineLayoutDeleter deleter( *this, allocator );
27765 return UniquePipelineLayout( createPipelineLayout( createInfo, allocator ), deleter );
27766 }
27767#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27768#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27769
27770 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, const AllocationCallbacks* pAllocator ) const
27771 {
27772 vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27773 }
27774#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27775 VULKAN_HPP_INLINE void Device::destroyPipelineLayout( PipelineLayout pipelineLayout, Optional<const AllocationCallbacks> allocator ) const
27776 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027777 vkDestroyPipelineLayout( m_device, static_cast<VkPipelineLayout>( pipelineLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027778 }
27779#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27780
27781 VULKAN_HPP_INLINE Result Device::createSampler( const SamplerCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Sampler* pSampler ) const
27782 {
27783 return static_cast<Result>( vkCreateSampler( m_device, reinterpret_cast<const VkSamplerCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSampler*>( pSampler ) ) );
27784 }
27785#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27786 VULKAN_HPP_INLINE ResultValueType<Sampler>::type Device::createSampler( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27787 {
27788 Sampler sampler;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027789 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 -070027790 return createResultValue( result, sampler, "vk::Device::createSampler" );
27791 }
27792#ifndef VULKAN_HPP_NO_SMART_HANDLE
27793 VULKAN_HPP_INLINE UniqueSampler Device::createSamplerUnique( const SamplerCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27794 {
27795 SamplerDeleter deleter( *this, allocator );
27796 return UniqueSampler( createSampler( createInfo, allocator ), deleter );
27797 }
27798#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27799#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27800
27801 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, const AllocationCallbacks* pAllocator ) const
27802 {
27803 vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27804 }
27805#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27806 VULKAN_HPP_INLINE void Device::destroySampler( Sampler sampler, Optional<const AllocationCallbacks> allocator ) const
27807 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027808 vkDestroySampler( m_device, static_cast<VkSampler>( sampler ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027809 }
27810#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27811
27812 VULKAN_HPP_INLINE Result Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorSetLayout* pSetLayout ) const
27813 {
27814 return static_cast<Result>( vkCreateDescriptorSetLayout( m_device, reinterpret_cast<const VkDescriptorSetLayoutCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorSetLayout*>( pSetLayout ) ) );
27815 }
27816#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27817 VULKAN_HPP_INLINE ResultValueType<DescriptorSetLayout>::type Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27818 {
27819 DescriptorSetLayout setLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027820 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 -070027821 return createResultValue( result, setLayout, "vk::Device::createDescriptorSetLayout" );
27822 }
27823#ifndef VULKAN_HPP_NO_SMART_HANDLE
27824 VULKAN_HPP_INLINE UniqueDescriptorSetLayout Device::createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27825 {
27826 DescriptorSetLayoutDeleter deleter( *this, allocator );
27827 return UniqueDescriptorSetLayout( createDescriptorSetLayout( createInfo, allocator ), deleter );
27828 }
27829#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27830#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27831
27832 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, const AllocationCallbacks* pAllocator ) const
27833 {
27834 vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27835 }
27836#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27837 VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( DescriptorSetLayout descriptorSetLayout, Optional<const AllocationCallbacks> allocator ) const
27838 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027839 vkDestroyDescriptorSetLayout( m_device, static_cast<VkDescriptorSetLayout>( descriptorSetLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027840 }
27841#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27842
27843 VULKAN_HPP_INLINE Result Device::createDescriptorPool( const DescriptorPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorPool* pDescriptorPool ) const
27844 {
27845 return static_cast<Result>( vkCreateDescriptorPool( m_device, reinterpret_cast<const VkDescriptorPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorPool*>( pDescriptorPool ) ) );
27846 }
27847#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27848 VULKAN_HPP_INLINE ResultValueType<DescriptorPool>::type Device::createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27849 {
27850 DescriptorPool descriptorPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027851 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 -070027852 return createResultValue( result, descriptorPool, "vk::Device::createDescriptorPool" );
27853 }
27854#ifndef VULKAN_HPP_NO_SMART_HANDLE
27855 VULKAN_HPP_INLINE UniqueDescriptorPool Device::createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27856 {
27857 DescriptorPoolDeleter deleter( *this, allocator );
27858 return UniqueDescriptorPool( createDescriptorPool( createInfo, allocator ), deleter );
27859 }
27860#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27861#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27862
27863 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, const AllocationCallbacks* pAllocator ) const
27864 {
27865 vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27866 }
27867#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27868 VULKAN_HPP_INLINE void Device::destroyDescriptorPool( DescriptorPool descriptorPool, Optional<const AllocationCallbacks> allocator ) const
27869 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027870 vkDestroyDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027871 }
27872#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27873
27874#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
27875 VULKAN_HPP_INLINE Result Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const
27876 {
27877 return static_cast<Result>( vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
27878 }
27879#else
27880 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetDescriptorPool( DescriptorPool descriptorPool, DescriptorPoolResetFlags flags ) const
27881 {
27882 Result result = static_cast<Result>( vkResetDescriptorPool( m_device, static_cast<VkDescriptorPool>( descriptorPool ), static_cast<VkDescriptorPoolResetFlags>( flags ) ) );
27883 return createResultValue( result, "vk::Device::resetDescriptorPool" );
27884 }
27885#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27886
27887 VULKAN_HPP_INLINE Result Device::allocateDescriptorSets( const DescriptorSetAllocateInfo* pAllocateInfo, DescriptorSet* pDescriptorSets ) const
27888 {
27889 return static_cast<Result>( vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkDescriptorSet*>( pDescriptorSets ) ) );
27890 }
27891#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27892 template <typename Allocator>
27893 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DescriptorSet,Allocator>>::type Device::allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo ) const
27894 {
27895 std::vector<DescriptorSet,Allocator> descriptorSets( allocateInfo.descriptorSetCount );
27896 Result result = static_cast<Result>( vkAllocateDescriptorSets( m_device, reinterpret_cast<const VkDescriptorSetAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkDescriptorSet*>( descriptorSets.data() ) ) );
27897 return createResultValue( result, descriptorSets, "vk::Device::allocateDescriptorSets" );
27898 }
27899#ifndef VULKAN_HPP_NO_SMART_HANDLE
27900 template <typename Allocator>
27901 VULKAN_HPP_INLINE std::vector<UniqueDescriptorSet> Device::allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo ) const
27902 {
27903 DescriptorSetDeleter deleter( *this, allocateInfo.descriptorPool );
27904 std::vector<DescriptorSet,Allocator> descriptorSets = allocateDescriptorSets( allocateInfo );
27905 std::vector<UniqueDescriptorSet> uniqueDescriptorSets;
27906 uniqueDescriptorSets.reserve( descriptorSets.size() );
27907 for ( auto descriptorSet : descriptorSets )
27908 {
27909 uniqueDescriptorSets.push_back( UniqueDescriptorSet( descriptorSet, deleter ) );
27910 }
27911 return uniqueDescriptorSets;
27912 }
27913#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27914#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27915
27916 VULKAN_HPP_INLINE Result Device::freeDescriptorSets( DescriptorPool descriptorPool, uint32_t descriptorSetCount, const DescriptorSet* pDescriptorSets ) const
27917 {
27918 return static_cast<Result>( vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSetCount, reinterpret_cast<const VkDescriptorSet*>( pDescriptorSets ) ) );
27919 }
27920#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27921 VULKAN_HPP_INLINE ResultValueType<void>::type Device::freeDescriptorSets( DescriptorPool descriptorPool, ArrayProxy<const DescriptorSet> descriptorSets ) const
27922 {
27923 Result result = static_cast<Result>( vkFreeDescriptorSets( m_device, static_cast<VkDescriptorPool>( descriptorPool ), descriptorSets.size() , reinterpret_cast<const VkDescriptorSet*>( descriptorSets.data() ) ) );
27924 return createResultValue( result, "vk::Device::freeDescriptorSets" );
27925 }
27926#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27927
27928 VULKAN_HPP_INLINE void Device::updateDescriptorSets( uint32_t descriptorWriteCount, const WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const CopyDescriptorSet* pDescriptorCopies ) const
27929 {
27930 vkUpdateDescriptorSets( m_device, descriptorWriteCount, reinterpret_cast<const VkWriteDescriptorSet*>( pDescriptorWrites ), descriptorCopyCount, reinterpret_cast<const VkCopyDescriptorSet*>( pDescriptorCopies ) );
27931 }
27932#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27933 VULKAN_HPP_INLINE void Device::updateDescriptorSets( ArrayProxy<const WriteDescriptorSet> descriptorWrites, ArrayProxy<const CopyDescriptorSet> descriptorCopies ) const
27934 {
27935 vkUpdateDescriptorSets( m_device, descriptorWrites.size() , reinterpret_cast<const VkWriteDescriptorSet*>( descriptorWrites.data() ), descriptorCopies.size() , reinterpret_cast<const VkCopyDescriptorSet*>( descriptorCopies.data() ) );
27936 }
27937#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27938
27939 VULKAN_HPP_INLINE Result Device::createFramebuffer( const FramebufferCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Framebuffer* pFramebuffer ) const
27940 {
27941 return static_cast<Result>( vkCreateFramebuffer( m_device, reinterpret_cast<const VkFramebufferCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFramebuffer*>( pFramebuffer ) ) );
27942 }
27943#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27944 VULKAN_HPP_INLINE ResultValueType<Framebuffer>::type Device::createFramebuffer( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27945 {
27946 Framebuffer framebuffer;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027947 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 -070027948 return createResultValue( result, framebuffer, "vk::Device::createFramebuffer" );
27949 }
27950#ifndef VULKAN_HPP_NO_SMART_HANDLE
27951 VULKAN_HPP_INLINE UniqueFramebuffer Device::createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27952 {
27953 FramebufferDeleter deleter( *this, allocator );
27954 return UniqueFramebuffer( createFramebuffer( createInfo, allocator ), deleter );
27955 }
27956#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27957#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27958
27959 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, const AllocationCallbacks* pAllocator ) const
27960 {
27961 vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27962 }
27963#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27964 VULKAN_HPP_INLINE void Device::destroyFramebuffer( Framebuffer framebuffer, Optional<const AllocationCallbacks> allocator ) const
27965 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027966 vkDestroyFramebuffer( m_device, static_cast<VkFramebuffer>( framebuffer ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027967 }
27968#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27969
27970 VULKAN_HPP_INLINE Result Device::createRenderPass( const RenderPassCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, RenderPass* pRenderPass ) const
27971 {
27972 return static_cast<Result>( vkCreateRenderPass( m_device, reinterpret_cast<const VkRenderPassCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkRenderPass*>( pRenderPass ) ) );
27973 }
27974#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27975 VULKAN_HPP_INLINE ResultValueType<RenderPass>::type Device::createRenderPass( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27976 {
27977 RenderPass renderPass;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027978 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 -070027979 return createResultValue( result, renderPass, "vk::Device::createRenderPass" );
27980 }
27981#ifndef VULKAN_HPP_NO_SMART_HANDLE
27982 VULKAN_HPP_INLINE UniqueRenderPass Device::createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
27983 {
27984 RenderPassDeleter deleter( *this, allocator );
27985 return UniqueRenderPass( createRenderPass( createInfo, allocator ), deleter );
27986 }
27987#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
27988#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
27989
27990 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, const AllocationCallbacks* pAllocator ) const
27991 {
27992 vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
27993 }
27994#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
27995 VULKAN_HPP_INLINE void Device::destroyRenderPass( RenderPass renderPass, Optional<const AllocationCallbacks> allocator ) const
27996 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060027997 vkDestroyRenderPass( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070027998 }
27999#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28000
28001 VULKAN_HPP_INLINE void Device::getRenderAreaGranularity( RenderPass renderPass, Extent2D* pGranularity ) const
28002 {
28003 vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( pGranularity ) );
28004 }
28005#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28006 VULKAN_HPP_INLINE Extent2D Device::getRenderAreaGranularity( RenderPass renderPass ) const
28007 {
28008 Extent2D granularity;
28009 vkGetRenderAreaGranularity( m_device, static_cast<VkRenderPass>( renderPass ), reinterpret_cast<VkExtent2D*>( &granularity ) );
28010 return granularity;
28011 }
28012#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28013
28014 VULKAN_HPP_INLINE Result Device::createCommandPool( const CommandPoolCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, CommandPool* pCommandPool ) const
28015 {
28016 return static_cast<Result>( vkCreateCommandPool( m_device, reinterpret_cast<const VkCommandPoolCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkCommandPool*>( pCommandPool ) ) );
28017 }
28018#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28019 VULKAN_HPP_INLINE ResultValueType<CommandPool>::type Device::createCommandPool( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28020 {
28021 CommandPool commandPool;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028022 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 -070028023 return createResultValue( result, commandPool, "vk::Device::createCommandPool" );
28024 }
28025#ifndef VULKAN_HPP_NO_SMART_HANDLE
28026 VULKAN_HPP_INLINE UniqueCommandPool Device::createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
28027 {
28028 CommandPoolDeleter deleter( *this, allocator );
28029 return UniqueCommandPool( createCommandPool( createInfo, allocator ), deleter );
28030 }
28031#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28032#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28033
28034 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, const AllocationCallbacks* pAllocator ) const
28035 {
28036 vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28037 }
28038#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28039 VULKAN_HPP_INLINE void Device::destroyCommandPool( CommandPool commandPool, Optional<const AllocationCallbacks> allocator ) const
28040 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028041 vkDestroyCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028042 }
28043#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28044
28045#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28046 VULKAN_HPP_INLINE Result Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const
28047 {
28048 return static_cast<Result>( vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
28049 }
28050#else
28051 VULKAN_HPP_INLINE ResultValueType<void>::type Device::resetCommandPool( CommandPool commandPool, CommandPoolResetFlags flags ) const
28052 {
28053 Result result = static_cast<Result>( vkResetCommandPool( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolResetFlags>( flags ) ) );
28054 return createResultValue( result, "vk::Device::resetCommandPool" );
28055 }
28056#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28057
28058 VULKAN_HPP_INLINE Result Device::allocateCommandBuffers( const CommandBufferAllocateInfo* pAllocateInfo, CommandBuffer* pCommandBuffers ) const
28059 {
28060 return static_cast<Result>( vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( pAllocateInfo ), reinterpret_cast<VkCommandBuffer*>( pCommandBuffers ) ) );
28061 }
28062#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28063 template <typename Allocator>
28064 VULKAN_HPP_INLINE typename ResultValueType<std::vector<CommandBuffer,Allocator>>::type Device::allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo ) const
28065 {
28066 std::vector<CommandBuffer,Allocator> commandBuffers( allocateInfo.commandBufferCount );
28067 Result result = static_cast<Result>( vkAllocateCommandBuffers( m_device, reinterpret_cast<const VkCommandBufferAllocateInfo*>( &allocateInfo ), reinterpret_cast<VkCommandBuffer*>( commandBuffers.data() ) ) );
28068 return createResultValue( result, commandBuffers, "vk::Device::allocateCommandBuffers" );
28069 }
28070#ifndef VULKAN_HPP_NO_SMART_HANDLE
28071 template <typename Allocator>
28072 VULKAN_HPP_INLINE std::vector<UniqueCommandBuffer> Device::allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo ) const
28073 {
28074 CommandBufferDeleter deleter( *this, allocateInfo.commandPool );
28075 std::vector<CommandBuffer,Allocator> commandBuffers = allocateCommandBuffers( allocateInfo );
28076 std::vector<UniqueCommandBuffer> uniqueCommandBuffers;
28077 uniqueCommandBuffers.reserve( commandBuffers.size() );
28078 for ( auto commandBuffer : commandBuffers )
28079 {
28080 uniqueCommandBuffers.push_back( UniqueCommandBuffer( commandBuffer, deleter ) );
28081 }
28082 return uniqueCommandBuffers;
28083 }
28084#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28085#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28086
28087 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, uint32_t commandBufferCount, const CommandBuffer* pCommandBuffers ) const
28088 {
28089 vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBufferCount, reinterpret_cast<const VkCommandBuffer*>( pCommandBuffers ) );
28090 }
28091#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28092 VULKAN_HPP_INLINE void Device::freeCommandBuffers( CommandPool commandPool, ArrayProxy<const CommandBuffer> commandBuffers ) const
28093 {
28094 vkFreeCommandBuffers( m_device, static_cast<VkCommandPool>( commandPool ), commandBuffers.size() , reinterpret_cast<const VkCommandBuffer*>( commandBuffers.data() ) );
28095 }
28096#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28097
28098 VULKAN_HPP_INLINE Result Device::createSharedSwapchainsKHR( uint32_t swapchainCount, const SwapchainCreateInfoKHR* pCreateInfos, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchains ) const
28099 {
28100 return static_cast<Result>( vkCreateSharedSwapchainsKHR( m_device, swapchainCount, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfos ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchains ) ) );
28101 }
28102#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28103 template <typename Allocator>
28104 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SwapchainKHR,Allocator>>::type Device::createSharedSwapchainsKHR( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator ) const
28105 {
28106 std::vector<SwapchainKHR,Allocator> swapchains( createInfos.size() );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028107 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 -070028108 return createResultValue( result, swapchains, "vk::Device::createSharedSwapchainsKHR" );
28109 }
28110 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSharedSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
28111 {
28112 SwapchainKHR swapchain;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028113 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 -070028114 return createResultValue( result, swapchain, "vk::Device::createSharedSwapchainKHR" );
28115 }
28116#ifndef VULKAN_HPP_NO_SMART_HANDLE
28117 template <typename Allocator>
28118 VULKAN_HPP_INLINE std::vector<UniqueSwapchainKHR> Device::createSharedSwapchainsKHRUnique( ArrayProxy<const SwapchainCreateInfoKHR> createInfos, Optional<const AllocationCallbacks> allocator ) const
28119 {
28120 SwapchainKHRDeleter deleter( *this, allocator );
28121 std::vector<SwapchainKHR,Allocator> swapchainKHRs = createSharedSwapchainsKHR( createInfos, allocator );
28122 std::vector<UniqueSwapchainKHR> uniqueSwapchainKHRs;
28123 uniqueSwapchainKHRs.reserve( swapchainKHRs.size() );
28124 for ( auto swapchainKHR : swapchainKHRs )
28125 {
28126 uniqueSwapchainKHRs.push_back( UniqueSwapchainKHR( swapchainKHR, deleter ) );
28127 }
28128 return uniqueSwapchainKHRs;
28129 }
28130 VULKAN_HPP_INLINE UniqueSwapchainKHR Device::createSharedSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
28131 {
28132 SwapchainKHRDeleter deleter( *this, allocator );
28133 return UniqueSwapchainKHR( createSharedSwapchainKHR( createInfo, allocator ), deleter );
28134 }
28135#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28136#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28137
28138 VULKAN_HPP_INLINE Result Device::createSwapchainKHR( const SwapchainCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SwapchainKHR* pSwapchain ) const
28139 {
28140 return static_cast<Result>( vkCreateSwapchainKHR( m_device, reinterpret_cast<const VkSwapchainCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSwapchainKHR*>( pSwapchain ) ) );
28141 }
28142#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28143 VULKAN_HPP_INLINE ResultValueType<SwapchainKHR>::type Device::createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
28144 {
28145 SwapchainKHR swapchain;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028146 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 -070028147 return createResultValue( result, swapchain, "vk::Device::createSwapchainKHR" );
28148 }
28149#ifndef VULKAN_HPP_NO_SMART_HANDLE
28150 VULKAN_HPP_INLINE UniqueSwapchainKHR Device::createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
28151 {
28152 SwapchainKHRDeleter deleter( *this, allocator );
28153 return UniqueSwapchainKHR( createSwapchainKHR( createInfo, allocator ), deleter );
28154 }
28155#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28156#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28157
28158 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, const AllocationCallbacks* pAllocator ) const
28159 {
28160 vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28161 }
28162#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28163 VULKAN_HPP_INLINE void Device::destroySwapchainKHR( SwapchainKHR swapchain, Optional<const AllocationCallbacks> allocator ) const
28164 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028165 vkDestroySwapchainKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028166 }
28167#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28168
28169 VULKAN_HPP_INLINE Result Device::getSwapchainImagesKHR( SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, Image* pSwapchainImages ) const
28170 {
28171 return static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), pSwapchainImageCount, reinterpret_cast<VkImage*>( pSwapchainImages ) ) );
28172 }
28173#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28174 template <typename Allocator>
28175 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Image,Allocator>>::type Device::getSwapchainImagesKHR( SwapchainKHR swapchain ) const
28176 {
28177 std::vector<Image,Allocator> swapchainImages;
28178 uint32_t swapchainImageCount;
28179 Result result;
28180 do
28181 {
28182 result = static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, nullptr ) );
28183 if ( ( result == Result::eSuccess ) && swapchainImageCount )
28184 {
28185 swapchainImages.resize( swapchainImageCount );
28186 result = static_cast<Result>( vkGetSwapchainImagesKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), &swapchainImageCount, reinterpret_cast<VkImage*>( swapchainImages.data() ) ) );
28187 }
28188 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028189 assert( swapchainImageCount <= swapchainImages.size() );
28190 swapchainImages.resize( swapchainImageCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028191 return createResultValue( result, swapchainImages, "vk::Device::getSwapchainImagesKHR" );
28192 }
28193#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28194
28195 VULKAN_HPP_INLINE Result Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence, uint32_t* pImageIndex ) const
28196 {
28197 return static_cast<Result>( vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), pImageIndex ) );
28198 }
28199#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28200 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImageKHR( SwapchainKHR swapchain, uint64_t timeout, Semaphore semaphore, Fence fence ) const
28201 {
28202 uint32_t imageIndex;
28203 Result result = static_cast<Result>( vkAcquireNextImageKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ), timeout, static_cast<VkSemaphore>( semaphore ), static_cast<VkFence>( fence ), &imageIndex ) );
28204 return createResultValue( result, imageIndex, "vk::Device::acquireNextImageKHR", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
28205 }
28206#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28207
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060028208 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT* pNameInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028209 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060028210 return static_cast<Result>( vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>( pNameInfo ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028211 }
28212#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060028213 VULKAN_HPP_INLINE ResultValueType<void>::type Device::debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT & nameInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028214 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060028215 Result result = static_cast<Result>( vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectNameInfoEXT*>( &nameInfo ) ) );
28216 return createResultValue( result, "vk::Device::debugMarkerSetObjectNameEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028217 }
28218#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28219
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060028220 VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT* pTagInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028221 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060028222 return static_cast<Result>( vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>( pTagInfo ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028223 }
28224#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060028225 VULKAN_HPP_INLINE ResultValueType<void>::type Device::debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT & tagInfo ) const
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028226 {
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060028227 Result result = static_cast<Result>( vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast<const VkDebugMarkerObjectTagInfoEXT*>( &tagInfo ) ) );
28228 return createResultValue( result, "vk::Device::debugMarkerSetObjectTagEXT" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028229 }
28230#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28231
28232#ifdef VK_USE_PLATFORM_WIN32_KHR
28233 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle ) const
28234 {
28235 return static_cast<Result>( vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), pHandle ) );
28236 }
28237#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28238 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleNV( DeviceMemory memory, ExternalMemoryHandleTypeFlagsNV handleType ) const
28239 {
28240 HANDLE handle;
28241 Result result = static_cast<Result>( vkGetMemoryWin32HandleNV( m_device, static_cast<VkDeviceMemory>( memory ), static_cast<VkExternalMemoryHandleTypeFlagsNV>( handleType ), &handle ) );
28242 return createResultValue( result, handle, "vk::Device::getMemoryWin32HandleNV" );
28243 }
28244#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28245#endif /*VK_USE_PLATFORM_WIN32_KHR*/
28246
28247 VULKAN_HPP_INLINE Result Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, IndirectCommandsLayoutNVX* pIndirectCommandsLayout ) const
28248 {
28249 return static_cast<Result>( vkCreateIndirectCommandsLayoutNVX( m_device, reinterpret_cast<const VkIndirectCommandsLayoutCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkIndirectCommandsLayoutNVX*>( pIndirectCommandsLayout ) ) );
28250 }
28251#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28252 VULKAN_HPP_INLINE ResultValueType<IndirectCommandsLayoutNVX>::type Device::createIndirectCommandsLayoutNVX( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
28253 {
28254 IndirectCommandsLayoutNVX indirectCommandsLayout;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028255 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 -070028256 return createResultValue( result, indirectCommandsLayout, "vk::Device::createIndirectCommandsLayoutNVX" );
28257 }
28258#ifndef VULKAN_HPP_NO_SMART_HANDLE
28259 VULKAN_HPP_INLINE UniqueIndirectCommandsLayoutNVX Device::createIndirectCommandsLayoutNVXUnique( const IndirectCommandsLayoutCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
28260 {
28261 IndirectCommandsLayoutNVXDeleter deleter( *this, allocator );
28262 return UniqueIndirectCommandsLayoutNVX( createIndirectCommandsLayoutNVX( createInfo, allocator ), deleter );
28263 }
28264#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28265#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28266
28267 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, const AllocationCallbacks* pAllocator ) const
28268 {
28269 vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28270 }
28271#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28272 VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNVX( IndirectCommandsLayoutNVX indirectCommandsLayout, Optional<const AllocationCallbacks> allocator ) const
28273 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028274 vkDestroyIndirectCommandsLayoutNVX( m_device, static_cast<VkIndirectCommandsLayoutNVX>( indirectCommandsLayout ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028275 }
28276#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28277
28278 VULKAN_HPP_INLINE Result Device::createObjectTableNVX( const ObjectTableCreateInfoNVX* pCreateInfo, const AllocationCallbacks* pAllocator, ObjectTableNVX* pObjectTable ) const
28279 {
28280 return static_cast<Result>( vkCreateObjectTableNVX( m_device, reinterpret_cast<const VkObjectTableCreateInfoNVX*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkObjectTableNVX*>( pObjectTable ) ) );
28281 }
28282#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28283 VULKAN_HPP_INLINE ResultValueType<ObjectTableNVX>::type Device::createObjectTableNVX( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
28284 {
28285 ObjectTableNVX objectTable;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028286 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 -070028287 return createResultValue( result, objectTable, "vk::Device::createObjectTableNVX" );
28288 }
28289#ifndef VULKAN_HPP_NO_SMART_HANDLE
28290 VULKAN_HPP_INLINE UniqueObjectTableNVX Device::createObjectTableNVXUnique( const ObjectTableCreateInfoNVX & createInfo, Optional<const AllocationCallbacks> allocator ) const
28291 {
28292 ObjectTableNVXDeleter deleter( *this, allocator );
28293 return UniqueObjectTableNVX( createObjectTableNVX( createInfo, allocator ), deleter );
28294 }
28295#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28296#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28297
28298 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, const AllocationCallbacks* pAllocator ) const
28299 {
28300 vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28301 }
28302#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28303 VULKAN_HPP_INLINE void Device::destroyObjectTableNVX( ObjectTableNVX objectTable, Optional<const AllocationCallbacks> allocator ) const
28304 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028305 vkDestroyObjectTableNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028306 }
28307#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28308
28309 VULKAN_HPP_INLINE Result Device::registerObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectTableEntryNVX* const* ppObjectTableEntries, const uint32_t* pObjectIndices ) const
28310 {
28311 return static_cast<Result>( vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectTableEntryNVX* const*>( ppObjectTableEntries ), pObjectIndices ) );
28312 }
28313#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28314 VULKAN_HPP_INLINE ResultValueType<void>::type Device::registerObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectTableEntryNVX* const> pObjectTableEntries, ArrayProxy<const uint32_t> objectIndices ) const
28315 {
28316#ifdef VULKAN_HPP_NO_EXCEPTIONS
28317 assert( pObjectTableEntries.size() == objectIndices.size() );
28318#else
28319 if ( pObjectTableEntries.size() != objectIndices.size() )
28320 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028321 throw LogicError( "vk::Device::registerObjectsNVX: pObjectTableEntries.size() != objectIndices.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028322 }
28323#endif // VULKAN_HPP_NO_EXCEPTIONS
28324 Result result = static_cast<Result>( vkRegisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), pObjectTableEntries.size() , reinterpret_cast<const VkObjectTableEntryNVX* const*>( pObjectTableEntries.data() ), objectIndices.data() ) );
28325 return createResultValue( result, "vk::Device::registerObjectsNVX" );
28326 }
28327#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28328
28329 VULKAN_HPP_INLINE Result Device::unregisterObjectsNVX( ObjectTableNVX objectTable, uint32_t objectCount, const ObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices ) const
28330 {
28331 return static_cast<Result>( vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectCount, reinterpret_cast<const VkObjectEntryTypeNVX*>( pObjectEntryTypes ), pObjectIndices ) );
28332 }
28333#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28334 VULKAN_HPP_INLINE ResultValueType<void>::type Device::unregisterObjectsNVX( ObjectTableNVX objectTable, ArrayProxy<const ObjectEntryTypeNVX> objectEntryTypes, ArrayProxy<const uint32_t> objectIndices ) const
28335 {
28336#ifdef VULKAN_HPP_NO_EXCEPTIONS
28337 assert( objectEntryTypes.size() == objectIndices.size() );
28338#else
28339 if ( objectEntryTypes.size() != objectIndices.size() )
28340 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028341 throw LogicError( "vk::Device::unregisterObjectsNVX: objectEntryTypes.size() != objectIndices.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028342 }
28343#endif // VULKAN_HPP_NO_EXCEPTIONS
28344 Result result = static_cast<Result>( vkUnregisterObjectsNVX( m_device, static_cast<VkObjectTableNVX>( objectTable ), objectEntryTypes.size() , reinterpret_cast<const VkObjectEntryTypeNVX*>( objectEntryTypes.data() ), objectIndices.data() ) );
28345 return createResultValue( result, "vk::Device::unregisterObjectsNVX" );
28346 }
28347#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28348
28349 VULKAN_HPP_INLINE void Device::trimCommandPoolKHR( CommandPool commandPool, CommandPoolTrimFlagsKHR flags ) const
28350 {
28351 vkTrimCommandPoolKHR( m_device, static_cast<VkCommandPool>( commandPool ), static_cast<VkCommandPoolTrimFlagsKHR>( flags ) );
28352 }
28353
Mark Youngabc2d6e2017-07-07 07:59:56 -060028354#ifdef VK_USE_PLATFORM_WIN32_KHR
28355 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const
Mark Young0f183a82017-02-28 09:58:04 -070028356 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060028357 return static_cast<Result>( vkGetMemoryWin32HandleKHR( m_device, reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR*>( pGetWin32HandleInfo ), pHandle ) );
Mark Young0f183a82017-02-28 09:58:04 -070028358 }
28359#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060028360 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR & getWin32HandleInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070028361 {
28362 HANDLE handle;
Mark Youngabc2d6e2017-07-07 07:59:56 -060028363 Result result = static_cast<Result>( vkGetMemoryWin32HandleKHR( m_device, reinterpret_cast<const VkMemoryGetWin32HandleInfoKHR*>( &getWin32HandleInfo ), &handle ) );
28364 return createResultValue( result, handle, "vk::Device::getMemoryWin32HandleKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070028365 }
28366#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060028367#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070028368
Mark Youngabc2d6e2017-07-07 07:59:56 -060028369#ifdef VK_USE_PLATFORM_WIN32_KHR
28370 VULKAN_HPP_INLINE Result Device::getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle, MemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties ) const
Mark Young0f183a82017-02-28 09:58:04 -070028371 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060028372 return static_cast<Result>( vkGetMemoryWin32HandlePropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHR*>( pMemoryWin32HandleProperties ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070028373 }
28374#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060028375 VULKAN_HPP_INLINE ResultValueType<MemoryWin32HandlePropertiesKHR>::type Device::getMemoryWin32HandlePropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, HANDLE handle ) const
Mark Young0f183a82017-02-28 09:58:04 -070028376 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060028377 MemoryWin32HandlePropertiesKHR memoryWin32HandleProperties;
28378 Result result = static_cast<Result>( vkGetMemoryWin32HandlePropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), handle, reinterpret_cast<VkMemoryWin32HandlePropertiesKHR*>( &memoryWin32HandleProperties ) ) );
28379 return createResultValue( result, memoryWin32HandleProperties, "vk::Device::getMemoryWin32HandlePropertiesKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070028380 }
28381#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060028382#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070028383
Mark Youngabc2d6e2017-07-07 07:59:56 -060028384 VULKAN_HPP_INLINE Result Device::getMemoryFdKHR( const MemoryGetFdInfoKHR* pGetFdInfo, int* pFd ) const
Mark Young0f183a82017-02-28 09:58:04 -070028385 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060028386 return static_cast<Result>( vkGetMemoryFdKHR( m_device, reinterpret_cast<const VkMemoryGetFdInfoKHR*>( pGetFdInfo ), pFd ) );
Mark Young0f183a82017-02-28 09:58:04 -070028387 }
28388#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060028389 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getMemoryFdKHR( const MemoryGetFdInfoKHR & getFdInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070028390 {
28391 int fd;
Mark Youngabc2d6e2017-07-07 07:59:56 -060028392 Result result = static_cast<Result>( vkGetMemoryFdKHR( m_device, reinterpret_cast<const VkMemoryGetFdInfoKHR*>( &getFdInfo ), &fd ) );
28393 return createResultValue( result, fd, "vk::Device::getMemoryFdKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070028394 }
28395#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28396
Mark Youngabc2d6e2017-07-07 07:59:56 -060028397 VULKAN_HPP_INLINE Result Device::getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, int fd, MemoryFdPropertiesKHR* pMemoryFdProperties ) const
Mark Young0f183a82017-02-28 09:58:04 -070028398 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060028399 return static_cast<Result>( vkGetMemoryFdPropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHR*>( pMemoryFdProperties ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070028400 }
28401#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060028402 VULKAN_HPP_INLINE ResultValueType<MemoryFdPropertiesKHR>::type Device::getMemoryFdPropertiesKHR( ExternalMemoryHandleTypeFlagBitsKHR handleType, int fd ) const
Mark Young0f183a82017-02-28 09:58:04 -070028403 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060028404 MemoryFdPropertiesKHR memoryFdProperties;
28405 Result result = static_cast<Result>( vkGetMemoryFdPropertiesKHR( m_device, static_cast<VkExternalMemoryHandleTypeFlagBitsKHR>( handleType ), fd, reinterpret_cast<VkMemoryFdPropertiesKHR*>( &memoryFdProperties ) ) );
28406 return createResultValue( result, memoryFdProperties, "vk::Device::getMemoryFdPropertiesKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070028407 }
28408#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28409
Mark Youngabc2d6e2017-07-07 07:59:56 -060028410#ifdef VK_USE_PLATFORM_WIN32_KHR
28411 VULKAN_HPP_INLINE Result Device::getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const
Mark Young0f183a82017-02-28 09:58:04 -070028412 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060028413 return static_cast<Result>( vkGetSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR*>( pGetWin32HandleInfo ), pHandle ) );
Mark Young0f183a82017-02-28 09:58:04 -070028414 }
28415#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060028416 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070028417 {
28418 HANDLE handle;
Mark Youngabc2d6e2017-07-07 07:59:56 -060028419 Result result = static_cast<Result>( vkGetSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkSemaphoreGetWin32HandleInfoKHR*>( &getWin32HandleInfo ), &handle ) );
28420 return createResultValue( result, handle, "vk::Device::getSemaphoreWin32HandleKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070028421 }
28422#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060028423#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070028424
Mark Youngabc2d6e2017-07-07 07:59:56 -060028425#ifdef VK_USE_PLATFORM_WIN32_KHR
28426 VULKAN_HPP_INLINE Result Device::importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070028427 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060028428 return static_cast<Result>( vkImportSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR*>( pImportSemaphoreWin32HandleInfo ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070028429 }
28430#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060028431 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070028432 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060028433 Result result = static_cast<Result>( vkImportSemaphoreWin32HandleKHR( m_device, reinterpret_cast<const VkImportSemaphoreWin32HandleInfoKHR*>( &importSemaphoreWin32HandleInfo ) ) );
28434 return createResultValue( result, "vk::Device::importSemaphoreWin32HandleKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070028435 }
28436#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Youngabc2d6e2017-07-07 07:59:56 -060028437#endif /*VK_USE_PLATFORM_WIN32_KHR*/
Mark Young0f183a82017-02-28 09:58:04 -070028438
Mark Youngabc2d6e2017-07-07 07:59:56 -060028439 VULKAN_HPP_INLINE Result Device::getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd ) const
Mark Young0f183a82017-02-28 09:58:04 -070028440 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060028441 return static_cast<Result>( vkGetSemaphoreFdKHR( m_device, reinterpret_cast<const VkSemaphoreGetFdInfoKHR*>( pGetFdInfo ), pFd ) );
Mark Young0f183a82017-02-28 09:58:04 -070028442 }
28443#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060028444 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR & getFdInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070028445 {
28446 int fd;
Mark Youngabc2d6e2017-07-07 07:59:56 -060028447 Result result = static_cast<Result>( vkGetSemaphoreFdKHR( m_device, reinterpret_cast<const VkSemaphoreGetFdInfoKHR*>( &getFdInfo ), &fd ) );
28448 return createResultValue( result, fd, "vk::Device::getSemaphoreFdKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070028449 }
28450#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28451
Mark Youngabc2d6e2017-07-07 07:59:56 -060028452 VULKAN_HPP_INLINE Result Device::importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070028453 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060028454 return static_cast<Result>( vkImportSemaphoreFdKHR( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHR*>( pImportSemaphoreFdInfo ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070028455 }
28456#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060028457 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070028458 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060028459 Result result = static_cast<Result>( vkImportSemaphoreFdKHR( m_device, reinterpret_cast<const VkImportSemaphoreFdInfoKHR*>( &importSemaphoreFdInfo ) ) );
28460 return createResultValue( result, "vk::Device::importSemaphoreFdKHR" );
28461 }
28462#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28463
28464#ifdef VK_USE_PLATFORM_WIN32_KHR
28465 VULKAN_HPP_INLINE Result Device::getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const
28466 {
28467 return static_cast<Result>( vkGetFenceWin32HandleKHR( m_device, reinterpret_cast<const VkFenceGetWin32HandleInfoKHR*>( pGetWin32HandleInfo ), pHandle ) );
28468 }
28469#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28470 VULKAN_HPP_INLINE ResultValueType<HANDLE>::type Device::getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR & getWin32HandleInfo ) const
28471 {
28472 HANDLE handle;
28473 Result result = static_cast<Result>( vkGetFenceWin32HandleKHR( m_device, reinterpret_cast<const VkFenceGetWin32HandleInfoKHR*>( &getWin32HandleInfo ), &handle ) );
28474 return createResultValue( result, handle, "vk::Device::getFenceWin32HandleKHR" );
28475 }
28476#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28477#endif /*VK_USE_PLATFORM_WIN32_KHR*/
28478
28479#ifdef VK_USE_PLATFORM_WIN32_KHR
28480 VULKAN_HPP_INLINE Result Device::importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo ) const
28481 {
28482 return static_cast<Result>( vkImportFenceWin32HandleKHR( m_device, reinterpret_cast<const VkImportFenceWin32HandleInfoKHR*>( pImportFenceWin32HandleInfo ) ) );
28483 }
28484#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28485 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo ) const
28486 {
28487 Result result = static_cast<Result>( vkImportFenceWin32HandleKHR( m_device, reinterpret_cast<const VkImportFenceWin32HandleInfoKHR*>( &importFenceWin32HandleInfo ) ) );
28488 return createResultValue( result, "vk::Device::importFenceWin32HandleKHR" );
28489 }
28490#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28491#endif /*VK_USE_PLATFORM_WIN32_KHR*/
28492
28493 VULKAN_HPP_INLINE Result Device::getFenceFdKHR( const FenceGetFdInfoKHR* pGetFdInfo, int* pFd ) const
28494 {
28495 return static_cast<Result>( vkGetFenceFdKHR( m_device, reinterpret_cast<const VkFenceGetFdInfoKHR*>( pGetFdInfo ), pFd ) );
28496 }
28497#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28498 VULKAN_HPP_INLINE ResultValueType<int>::type Device::getFenceFdKHR( const FenceGetFdInfoKHR & getFdInfo ) const
28499 {
28500 int fd;
28501 Result result = static_cast<Result>( vkGetFenceFdKHR( m_device, reinterpret_cast<const VkFenceGetFdInfoKHR*>( &getFdInfo ), &fd ) );
28502 return createResultValue( result, fd, "vk::Device::getFenceFdKHR" );
28503 }
28504#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28505
28506 VULKAN_HPP_INLINE Result Device::importFenceFdKHR( const ImportFenceFdInfoKHR* pImportFenceFdInfo ) const
28507 {
28508 return static_cast<Result>( vkImportFenceFdKHR( m_device, reinterpret_cast<const VkImportFenceFdInfoKHR*>( pImportFenceFdInfo ) ) );
28509 }
28510#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28511 VULKAN_HPP_INLINE ResultValueType<void>::type Device::importFenceFdKHR( const ImportFenceFdInfoKHR & importFenceFdInfo ) const
28512 {
28513 Result result = static_cast<Result>( vkImportFenceFdKHR( m_device, reinterpret_cast<const VkImportFenceFdInfoKHR*>( &importFenceFdInfo ) ) );
28514 return createResultValue( result, "vk::Device::importFenceFdKHR" );
Mark Young0f183a82017-02-28 09:58:04 -070028515 }
28516#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28517
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028518 VULKAN_HPP_INLINE Result Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT* pDisplayPowerInfo ) const
28519 {
28520 return static_cast<Result>( vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( pDisplayPowerInfo ) ) );
28521 }
28522#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28523 VULKAN_HPP_INLINE ResultValueType<void>::type Device::displayPowerControlEXT( DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo ) const
28524 {
28525 Result result = static_cast<Result>( vkDisplayPowerControlEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayPowerInfoEXT*>( &displayPowerInfo ) ) );
28526 return createResultValue( result, "vk::Device::displayPowerControlEXT" );
28527 }
28528#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28529
28530 VULKAN_HPP_INLINE Result Device::registerEventEXT( const DeviceEventInfoEXT* pDeviceEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
28531 {
28532 return static_cast<Result>( vkRegisterDeviceEventEXT( m_device, reinterpret_cast<const VkDeviceEventInfoEXT*>( pDeviceEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkFence*>( pFence ) ) );
28533 }
28534#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28535 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, const AllocationCallbacks & allocator ) const
28536 {
28537 Fence fence;
28538 Result result = static_cast<Result>( vkRegisterDeviceEventEXT( m_device, reinterpret_cast<const VkDeviceEventInfoEXT*>( &deviceEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( &allocator ), reinterpret_cast<VkFence*>( &fence ) ) );
28539 return createResultValue( result, fence, "vk::Device::registerEventEXT" );
28540 }
28541#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28542
28543 VULKAN_HPP_INLINE Result Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT* pDisplayEventInfo, const AllocationCallbacks* pAllocator, Fence* pFence ) const
28544 {
28545 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 ) ) );
28546 }
28547#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28548 VULKAN_HPP_INLINE ResultValueType<Fence>::type Device::registerDisplayEventEXT( DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, const AllocationCallbacks & allocator ) const
28549 {
28550 Fence fence;
28551 Result result = static_cast<Result>( vkRegisterDisplayEventEXT( m_device, static_cast<VkDisplayKHR>( display ), reinterpret_cast<const VkDisplayEventInfoEXT*>( &displayEventInfo ), reinterpret_cast<const VkAllocationCallbacks*>( &allocator ), reinterpret_cast<VkFence*>( &fence ) ) );
28552 return createResultValue( result, fence, "vk::Device::registerDisplayEventEXT" );
28553 }
28554#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28555
28556 VULKAN_HPP_INLINE Result Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const
28557 {
28558 return static_cast<Result>( vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), pCounterValue ) );
28559 }
28560#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28561 VULKAN_HPP_INLINE ResultValue<uint64_t> Device::getSwapchainCounterEXT( SwapchainKHR swapchain, SurfaceCounterFlagBitsEXT counter ) const
28562 {
28563 uint64_t counterValue;
28564 Result result = static_cast<Result>( vkGetSwapchainCounterEXT( m_device, static_cast<VkSwapchainKHR>( swapchain ), static_cast<VkSurfaceCounterFlagBitsEXT>( counter ), &counterValue ) );
28565 return createResultValue( result, counterValue, "vk::Device::getSwapchainCounterEXT", { Result::eSuccess, Result::eErrorDeviceLost, Result::eErrorOutOfDateKHR } );
28566 }
28567#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070028568
28569 VULKAN_HPP_INLINE void Device::getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, PeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures ) const
28570 {
28571 vkGetDeviceGroupPeerMemoryFeaturesKHX( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlagsKHX*>( pPeerMemoryFeatures ) );
28572 }
28573#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28574 VULKAN_HPP_INLINE PeerMemoryFeatureFlagsKHX Device::getGroupPeerMemoryFeaturesKHX( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex ) const
28575 {
28576 PeerMemoryFeatureFlagsKHX peerMemoryFeatures;
28577 vkGetDeviceGroupPeerMemoryFeaturesKHX( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast<VkPeerMemoryFeatureFlagsKHX*>( &peerMemoryFeatures ) );
28578 return peerMemoryFeatures;
28579 }
28580#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28581
28582 VULKAN_HPP_INLINE Result Device::bindBufferMemory2KHX( uint32_t bindInfoCount, const BindBufferMemoryInfoKHX* pBindInfos ) const
28583 {
28584 return static_cast<Result>( vkBindBufferMemory2KHX( m_device, bindInfoCount, reinterpret_cast<const VkBindBufferMemoryInfoKHX*>( pBindInfos ) ) );
28585 }
28586#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28587 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindBufferMemory2KHX( ArrayProxy<const BindBufferMemoryInfoKHX> bindInfos ) const
28588 {
28589 Result result = static_cast<Result>( vkBindBufferMemory2KHX( m_device, bindInfos.size() , reinterpret_cast<const VkBindBufferMemoryInfoKHX*>( bindInfos.data() ) ) );
28590 return createResultValue( result, "vk::Device::bindBufferMemory2KHX" );
28591 }
28592#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28593
28594 VULKAN_HPP_INLINE Result Device::bindImageMemory2KHX( uint32_t bindInfoCount, const BindImageMemoryInfoKHX* pBindInfos ) const
28595 {
28596 return static_cast<Result>( vkBindImageMemory2KHX( m_device, bindInfoCount, reinterpret_cast<const VkBindImageMemoryInfoKHX*>( pBindInfos ) ) );
28597 }
28598#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28599 VULKAN_HPP_INLINE ResultValueType<void>::type Device::bindImageMemory2KHX( ArrayProxy<const BindImageMemoryInfoKHX> bindInfos ) const
28600 {
28601 Result result = static_cast<Result>( vkBindImageMemory2KHX( m_device, bindInfos.size() , reinterpret_cast<const VkBindImageMemoryInfoKHX*>( bindInfos.data() ) ) );
28602 return createResultValue( result, "vk::Device::bindImageMemory2KHX" );
28603 }
28604#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28605
28606 VULKAN_HPP_INLINE Result Device::getGroupPresentCapabilitiesKHX( DeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities ) const
28607 {
28608 return static_cast<Result>( vkGetDeviceGroupPresentCapabilitiesKHX( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHX*>( pDeviceGroupPresentCapabilities ) ) );
28609 }
28610#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28611 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentCapabilitiesKHX>::type Device::getGroupPresentCapabilitiesKHX() const
28612 {
28613 DeviceGroupPresentCapabilitiesKHX deviceGroupPresentCapabilities;
28614 Result result = static_cast<Result>( vkGetDeviceGroupPresentCapabilitiesKHX( m_device, reinterpret_cast<VkDeviceGroupPresentCapabilitiesKHX*>( &deviceGroupPresentCapabilities ) ) );
28615 return createResultValue( result, deviceGroupPresentCapabilities, "vk::Device::getGroupPresentCapabilitiesKHX" );
28616 }
28617#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28618
28619 VULKAN_HPP_INLINE Result Device::getGroupSurfacePresentModesKHX( SurfaceKHR surface, DeviceGroupPresentModeFlagsKHX* pModes ) const
28620 {
28621 return static_cast<Result>( vkGetDeviceGroupSurfacePresentModesKHX( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHX*>( pModes ) ) );
28622 }
28623#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28624 VULKAN_HPP_INLINE ResultValueType<DeviceGroupPresentModeFlagsKHX>::type Device::getGroupSurfacePresentModesKHX( SurfaceKHR surface ) const
28625 {
28626 DeviceGroupPresentModeFlagsKHX modes;
28627 Result result = static_cast<Result>( vkGetDeviceGroupSurfacePresentModesKHX( m_device, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkDeviceGroupPresentModeFlagsKHX*>( &modes ) ) );
28628 return createResultValue( result, modes, "vk::Device::getGroupSurfacePresentModesKHX" );
28629 }
28630#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28631
28632 VULKAN_HPP_INLINE Result Device::acquireNextImage2KHX( const AcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex ) const
28633 {
28634 return static_cast<Result>( vkAcquireNextImage2KHX( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHX*>( pAcquireInfo ), pImageIndex ) );
28635 }
28636#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28637 VULKAN_HPP_INLINE ResultValue<uint32_t> Device::acquireNextImage2KHX( const AcquireNextImageInfoKHX & acquireInfo ) const
28638 {
28639 uint32_t imageIndex;
28640 Result result = static_cast<Result>( vkAcquireNextImage2KHX( m_device, reinterpret_cast<const VkAcquireNextImageInfoKHX*>( &acquireInfo ), &imageIndex ) );
28641 return createResultValue( result, imageIndex, "vk::Device::acquireNextImage2KHX", { Result::eSuccess, Result::eTimeout, Result::eNotReady, Result::eSuboptimalKHR } );
28642 }
28643#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28644
28645 VULKAN_HPP_INLINE Result Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate ) const
28646 {
28647 return static_cast<Result>( vkCreateDescriptorUpdateTemplateKHR( m_device, reinterpret_cast<const VkDescriptorUpdateTemplateCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDescriptorUpdateTemplateKHR*>( pDescriptorUpdateTemplate ) ) );
28648 }
28649#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28650 VULKAN_HPP_INLINE ResultValueType<DescriptorUpdateTemplateKHR>::type Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
28651 {
28652 DescriptorUpdateTemplateKHR descriptorUpdateTemplate;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028653 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 -070028654 return createResultValue( result, descriptorUpdateTemplate, "vk::Device::createDescriptorUpdateTemplateKHR" );
28655 }
28656#ifndef VULKAN_HPP_NO_SMART_HANDLE
28657 VULKAN_HPP_INLINE UniqueDescriptorUpdateTemplateKHR Device::createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
28658 {
28659 DescriptorUpdateTemplateKHRDeleter deleter( *this, allocator );
28660 return UniqueDescriptorUpdateTemplateKHR( createDescriptorUpdateTemplateKHR( createInfo, allocator ), deleter );
28661 }
28662#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28663#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28664
28665 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const AllocationCallbacks* pAllocator ) const
28666 {
28667 vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28668 }
28669#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28670 VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( DescriptorUpdateTemplateKHR descriptorUpdateTemplate, Optional<const AllocationCallbacks> allocator ) const
28671 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028672 vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Young0f183a82017-02-28 09:58:04 -070028673 }
28674#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28675
28676 VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplateKHR( DescriptorSet descriptorSet, DescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData ) const
28677 {
28678 vkUpdateDescriptorSetWithTemplateKHR( m_device, static_cast<VkDescriptorSet>( descriptorSet ), static_cast<VkDescriptorUpdateTemplateKHR>( descriptorUpdateTemplate ), pData );
28679 }
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028680
28681 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( uint32_t swapchainCount, const SwapchainKHR* pSwapchains, const HdrMetadataEXT* pMetadata ) const
28682 {
28683 vkSetHdrMetadataEXT( m_device, swapchainCount, reinterpret_cast<const VkSwapchainKHR*>( pSwapchains ), reinterpret_cast<const VkHdrMetadataEXT*>( pMetadata ) );
28684 }
28685#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28686 VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( ArrayProxy<const SwapchainKHR> swapchains, ArrayProxy<const HdrMetadataEXT> metadata ) const
28687 {
28688#ifdef VULKAN_HPP_NO_EXCEPTIONS
28689 assert( swapchains.size() == metadata.size() );
28690#else
28691 if ( swapchains.size() != metadata.size() )
28692 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028693 throw LogicError( "vk::Device::setHdrMetadataEXT: swapchains.size() != metadata.size()" );
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028694 }
28695#endif // VULKAN_HPP_NO_EXCEPTIONS
28696 vkSetHdrMetadataEXT( m_device, swapchains.size() , reinterpret_cast<const VkSwapchainKHR*>( swapchains.data() ), reinterpret_cast<const VkHdrMetadataEXT*>( metadata.data() ) );
28697 }
28698#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28699
Mark Lobodzinski54385432017-05-15 10:27:52 -060028700#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
28701 VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( SwapchainKHR swapchain ) const
28702 {
28703 return static_cast<Result>( vkGetSwapchainStatusKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ) ) );
28704 }
28705#else
28706 VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( SwapchainKHR swapchain ) const
28707 {
28708 Result result = static_cast<Result>( vkGetSwapchainStatusKHR( m_device, static_cast<VkSwapchainKHR>( swapchain ) ) );
28709 return createResultValue( result, "vk::Device::getSwapchainStatusKHR", { Result::eSuccess, Result::eSuboptimalKHR } );
28710 }
28711#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28712
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060028713 VULKAN_HPP_INLINE Result Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain, RefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const
28714 {
28715 return static_cast<Result>( vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( pDisplayTimingProperties ) ) );
28716 }
28717#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28718 VULKAN_HPP_INLINE ResultValueType<RefreshCycleDurationGOOGLE>::type Device::getRefreshCycleDurationGOOGLE( SwapchainKHR swapchain ) const
28719 {
28720 RefreshCycleDurationGOOGLE displayTimingProperties;
28721 Result result = static_cast<Result>( vkGetRefreshCycleDurationGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), reinterpret_cast<VkRefreshCycleDurationGOOGLE*>( &displayTimingProperties ) ) );
28722 return createResultValue( result, displayTimingProperties, "vk::Device::getRefreshCycleDurationGOOGLE" );
28723 }
28724#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28725
28726 VULKAN_HPP_INLINE Result Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, PastPresentationTimingGOOGLE* pPresentationTimings ) const
28727 {
28728 return static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), pPresentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( pPresentationTimings ) ) );
28729 }
28730#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28731 template <typename Allocator>
28732 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PastPresentationTimingGOOGLE,Allocator>>::type Device::getPastPresentationTimingGOOGLE( SwapchainKHR swapchain ) const
28733 {
28734 std::vector<PastPresentationTimingGOOGLE,Allocator> presentationTimings;
28735 uint32_t presentationTimingCount;
28736 Result result = static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, nullptr ) );
28737 if ( ( result == Result::eSuccess ) && presentationTimingCount )
28738 {
28739 presentationTimings.resize( presentationTimingCount );
28740 result = static_cast<Result>( vkGetPastPresentationTimingGOOGLE( m_device, static_cast<VkSwapchainKHR>( swapchain ), &presentationTimingCount, reinterpret_cast<VkPastPresentationTimingGOOGLE*>( presentationTimings.data() ) ) );
28741 }
28742 return createResultValue( result, presentationTimings, "vk::Device::getPastPresentationTimingGOOGLE" );
28743 }
28744#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28745
Mark Youngabc2d6e2017-07-07 07:59:56 -060028746 VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR* pInfo, MemoryRequirements2KHR* pMemoryRequirements ) const
28747 {
28748 vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2KHR*>( pInfo ), reinterpret_cast<VkMemoryRequirements2KHR*>( pMemoryRequirements ) );
28749 }
28750#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28751 VULKAN_HPP_INLINE MemoryRequirements2KHR Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR & info ) const
28752 {
28753 MemoryRequirements2KHR memoryRequirements;
28754 vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2KHR*>( &info ), reinterpret_cast<VkMemoryRequirements2KHR*>( &memoryRequirements ) );
28755 return memoryRequirements;
28756 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060028757 template <typename ...T>
28758 VULKAN_HPP_INLINE StructureChain<T...> Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2KHR & info ) const
28759 {
28760 StructureChain<T...> structureChain;
28761 MemoryRequirements2KHR& memoryRequirements = structureChain.template get<MemoryRequirements2KHR>();
28762 vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast<const VkBufferMemoryRequirementsInfo2KHR*>( &info ), reinterpret_cast<VkMemoryRequirements2KHR*>( &memoryRequirements ) );
28763 return structureChain;
28764 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060028765#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28766
28767 VULKAN_HPP_INLINE void Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR* pInfo, MemoryRequirements2KHR* pMemoryRequirements ) const
28768 {
28769 vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2KHR*>( pInfo ), reinterpret_cast<VkMemoryRequirements2KHR*>( pMemoryRequirements ) );
28770 }
28771#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28772 VULKAN_HPP_INLINE MemoryRequirements2KHR Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR & info ) const
28773 {
28774 MemoryRequirements2KHR memoryRequirements;
28775 vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2KHR*>( &info ), reinterpret_cast<VkMemoryRequirements2KHR*>( &memoryRequirements ) );
28776 return memoryRequirements;
28777 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060028778 template <typename ...T>
28779 VULKAN_HPP_INLINE StructureChain<T...> Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2KHR & info ) const
28780 {
28781 StructureChain<T...> structureChain;
28782 MemoryRequirements2KHR& memoryRequirements = structureChain.template get<MemoryRequirements2KHR>();
28783 vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageMemoryRequirementsInfo2KHR*>( &info ), reinterpret_cast<VkMemoryRequirements2KHR*>( &memoryRequirements ) );
28784 return structureChain;
28785 }
Mark Youngabc2d6e2017-07-07 07:59:56 -060028786#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28787
28788 VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2KHR* pInfo, uint32_t* pSparseMemoryRequirementCount, SparseImageMemoryRequirements2KHR* pSparseMemoryRequirements ) const
28789 {
28790 vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2KHR*>( pInfo ), pSparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements2KHR*>( pSparseMemoryRequirements ) );
28791 }
28792#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28793 template <typename Allocator>
28794 VULKAN_HPP_INLINE std::vector<SparseImageMemoryRequirements2KHR,Allocator> Device::getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2KHR & info ) const
28795 {
28796 std::vector<SparseImageMemoryRequirements2KHR,Allocator> sparseMemoryRequirements;
28797 uint32_t sparseMemoryRequirementCount;
28798 vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2KHR*>( &info ), &sparseMemoryRequirementCount, nullptr );
28799 sparseMemoryRequirements.resize( sparseMemoryRequirementCount );
28800 vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast<const VkImageSparseMemoryRequirementsInfo2KHR*>( &info ), &sparseMemoryRequirementCount, reinterpret_cast<VkSparseImageMemoryRequirements2KHR*>( sparseMemoryRequirements.data() ) );
28801 return sparseMemoryRequirements;
28802 }
28803#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28804
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060028805 VULKAN_HPP_INLINE Result Device::createValidationCacheEXT( const ValidationCacheCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, ValidationCacheEXT* pValidationCache ) const
28806 {
28807 return static_cast<Result>( vkCreateValidationCacheEXT( m_device, reinterpret_cast<const VkValidationCacheCreateInfoEXT*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkValidationCacheEXT*>( pValidationCache ) ) );
28808 }
28809#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28810 VULKAN_HPP_INLINE ResultValueType<ValidationCacheEXT>::type Device::createValidationCacheEXT( const ValidationCacheCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
28811 {
28812 ValidationCacheEXT validationCache;
28813 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 ) ) );
28814 return createResultValue( result, validationCache, "vk::Device::createValidationCacheEXT" );
28815 }
28816#ifndef VULKAN_HPP_NO_SMART_HANDLE
28817 VULKAN_HPP_INLINE UniqueValidationCacheEXT Device::createValidationCacheEXTUnique( const ValidationCacheCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
28818 {
28819 ValidationCacheEXTDeleter deleter( *this, allocator );
28820 return UniqueValidationCacheEXT( createValidationCacheEXT( createInfo, allocator ), deleter );
28821 }
28822#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28823#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28824
28825 VULKAN_HPP_INLINE void Device::destroyValidationCacheEXT( ValidationCacheEXT validationCache, const AllocationCallbacks* pAllocator ) const
28826 {
28827 vkDestroyValidationCacheEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
28828 }
28829#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28830 VULKAN_HPP_INLINE void Device::destroyValidationCacheEXT( ValidationCacheEXT validationCache, Optional<const AllocationCallbacks> allocator ) const
28831 {
28832 vkDestroyValidationCacheEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
28833 }
28834#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28835
28836 VULKAN_HPP_INLINE Result Device::getValidationCacheDataEXT( ValidationCacheEXT validationCache, size_t* pDataSize, void* pData ) const
28837 {
28838 return static_cast<Result>( vkGetValidationCacheDataEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), pDataSize, pData ) );
28839 }
28840#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28841 template <typename Allocator>
28842 VULKAN_HPP_INLINE typename ResultValueType<std::vector<uint8_t,Allocator>>::type Device::getValidationCacheDataEXT( ValidationCacheEXT validationCache ) const
28843 {
28844 std::vector<uint8_t,Allocator> data;
28845 size_t dataSize;
28846 Result result;
28847 do
28848 {
28849 result = static_cast<Result>( vkGetValidationCacheDataEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), &dataSize, nullptr ) );
28850 if ( ( result == Result::eSuccess ) && dataSize )
28851 {
28852 data.resize( dataSize );
28853 result = static_cast<Result>( vkGetValidationCacheDataEXT( m_device, static_cast<VkValidationCacheEXT>( validationCache ), &dataSize, reinterpret_cast<void*>( data.data() ) ) );
28854 }
28855 } while ( result == Result::eIncomplete );
28856 assert( dataSize <= data.size() );
28857 data.resize( dataSize );
28858 return createResultValue( result, data, "vk::Device::getValidationCacheDataEXT" );
28859 }
28860#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28861
28862 VULKAN_HPP_INLINE Result Device::mergeValidationCachesEXT( ValidationCacheEXT dstCache, uint32_t srcCacheCount, const ValidationCacheEXT* pSrcCaches ) const
28863 {
28864 return static_cast<Result>( vkMergeValidationCachesEXT( m_device, static_cast<VkValidationCacheEXT>( dstCache ), srcCacheCount, reinterpret_cast<const VkValidationCacheEXT*>( pSrcCaches ) ) );
28865 }
28866#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
28867 VULKAN_HPP_INLINE ResultValueType<void>::type Device::mergeValidationCachesEXT( ValidationCacheEXT dstCache, ArrayProxy<const ValidationCacheEXT> srcCaches ) const
28868 {
28869 Result result = static_cast<Result>( vkMergeValidationCachesEXT( m_device, static_cast<VkValidationCacheEXT>( dstCache ), srcCaches.size() , reinterpret_cast<const VkValidationCacheEXT*>( srcCaches.data() ) ) );
28870 return createResultValue( result, "vk::Device::mergeValidationCachesEXT" );
28871 }
28872#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28873
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028874#ifndef VULKAN_HPP_NO_SMART_HANDLE
28875 class DeviceDeleter;
28876 using UniqueDevice = UniqueHandle<Device, DeviceDeleter>;
28877#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
28878
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028879 class PhysicalDevice
28880 {
28881 public:
28882 PhysicalDevice()
28883 : m_physicalDevice(VK_NULL_HANDLE)
28884 {}
28885
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070028886 PhysicalDevice( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028887 : m_physicalDevice(VK_NULL_HANDLE)
28888 {}
28889
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028890 VULKAN_HPP_TYPESAFE_EXPLICIT PhysicalDevice( VkPhysicalDevice physicalDevice )
28891 : m_physicalDevice( physicalDevice )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028892 {}
28893
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070028894#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028895 PhysicalDevice & operator=(VkPhysicalDevice physicalDevice)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028896 {
28897 m_physicalDevice = physicalDevice;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028898 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028899 }
28900#endif
28901
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028902 PhysicalDevice & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028903 {
28904 m_physicalDevice = VK_NULL_HANDLE;
28905 return *this;
28906 }
28907
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028908 bool operator==( PhysicalDevice const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060028909 {
28910 return m_physicalDevice == rhs.m_physicalDevice;
28911 }
28912
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028913 bool operator!=(PhysicalDevice const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060028914 {
28915 return m_physicalDevice != rhs.m_physicalDevice;
28916 }
28917
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060028918 bool operator<(PhysicalDevice const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060028919 {
28920 return m_physicalDevice < rhs.m_physicalDevice;
28921 }
28922
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028923 void getProperties( PhysicalDeviceProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028924#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028925 PhysicalDeviceProperties getProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028926#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28927
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028928 void getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028929#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028930 template <typename Allocator = std::allocator<QueueFamilyProperties>>
28931 std::vector<QueueFamilyProperties,Allocator> getQueueFamilyProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028932#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28933
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028934 void getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028935#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028936 PhysicalDeviceMemoryProperties getMemoryProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028937#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28938
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028939 void getFeatures( PhysicalDeviceFeatures* pFeatures ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028940#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028941 PhysicalDeviceFeatures getFeatures() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028942#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28943
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028944 void getFormatProperties( Format format, FormatProperties* pFormatProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028945#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028946 FormatProperties getFormatProperties( Format format ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028947#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28948
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028949 Result getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028950#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028951 ResultValueType<ImageFormatProperties>::type getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028952#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28953
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028954 Result createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028955#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028956 ResultValueType<Device>::type createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
28957#ifndef VULKAN_HPP_NO_SMART_HANDLE
28958 UniqueDevice createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
28959#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028960#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28961
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028962 Result enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028963#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028964 template <typename Allocator = std::allocator<LayerProperties>>
28965 typename ResultValueType<std::vector<LayerProperties,Allocator>>::type enumerateDeviceLayerProperties() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028966#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28967
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028968 Result enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028969#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028970 template <typename Allocator = std::allocator<ExtensionProperties>>
28971 typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type enumerateDeviceExtensionProperties( Optional<const std::string> layerName = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028972#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28973
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028974 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 -060028975#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028976 template <typename Allocator = std::allocator<SparseImageFormatProperties>>
28977 std::vector<SparseImageFormatProperties,Allocator> getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028978#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28979
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028980 Result getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028981#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028982 template <typename Allocator = std::allocator<DisplayPropertiesKHR>>
28983 typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type getDisplayPropertiesKHR() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028984#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28985
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028986 Result getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028987#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028988 template <typename Allocator = std::allocator<DisplayPlanePropertiesKHR>>
28989 typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type getDisplayPlanePropertiesKHR() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028990#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28991
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028992 Result getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028993#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028994 template <typename Allocator = std::allocator<DisplayKHR>>
28995 typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028996#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
28997
Mark Lobodzinski36c33862017-02-13 10:15:53 -070028998 Result getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060028999#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029000 template <typename Allocator = std::allocator<DisplayModePropertiesKHR>>
29001 typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type getDisplayModePropertiesKHR( DisplayKHR display ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029002#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29003
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029004 Result createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029005#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029006 ResultValueType<DisplayModeKHR>::type createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029007#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29008
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029009 Result getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029010#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029011 ResultValueType<DisplayPlaneCapabilitiesKHR>::type getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029012#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29013
29014#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029015 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection ) const;
29016#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29017 Bool32 getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection ) const;
29018#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029019#endif /*VK_USE_PLATFORM_MIR_KHR*/
29020
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029021 Result getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029022#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029023 ResultValueType<Bool32>::type getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029024#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29025
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029026 Result getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029027#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029028 ResultValueType<SurfaceCapabilitiesKHR>::type getSurfaceCapabilitiesKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029029#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29030
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029031 Result getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029032#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029033 template <typename Allocator = std::allocator<SurfaceFormatKHR>>
29034 typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type getSurfaceFormatsKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029035#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29036
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029037 Result getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029038#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029039 template <typename Allocator = std::allocator<PresentModeKHR>>
29040 typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type getSurfacePresentModesKHR( SurfaceKHR surface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029041#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29042
29043#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029044 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display ) const;
29045#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29046 Bool32 getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const;
29047#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029048#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
29049
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029050#ifdef VK_USE_PLATFORM_WIN32_KHR
29051 Bool32 getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const;
29052#endif /*VK_USE_PLATFORM_WIN32_KHR*/
29053
29054#ifdef VK_USE_PLATFORM_XLIB_KHR
29055 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029056#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029057 Bool32 getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const;
29058#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29059#endif /*VK_USE_PLATFORM_XLIB_KHR*/
29060
29061#ifdef VK_USE_PLATFORM_XCB_KHR
29062 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const;
29063#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29064 Bool32 getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const;
29065#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29066#endif /*VK_USE_PLATFORM_XCB_KHR*/
29067
29068 Result getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const;
29069#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29070 ResultValueType<ExternalImageFormatPropertiesNV>::type getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType ) const;
29071#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29072
29073 void getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits ) const;
29074#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29075 DeviceGeneratedCommandsLimitsNVX getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features ) const;
29076#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29077
29078 void getFeatures2KHR( PhysicalDeviceFeatures2KHR* pFeatures ) const;
29079#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29080 PhysicalDeviceFeatures2KHR getFeatures2KHR() const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060029081 template <typename ...T>
29082 StructureChain<T...> getFeatures2KHR() const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029083#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29084
29085 void getProperties2KHR( PhysicalDeviceProperties2KHR* pProperties ) const;
29086#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29087 PhysicalDeviceProperties2KHR getProperties2KHR() const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060029088 template <typename ...T>
29089 StructureChain<T...> getProperties2KHR() const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029090#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29091
29092 void getFormatProperties2KHR( Format format, FormatProperties2KHR* pFormatProperties ) const;
29093#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29094 FormatProperties2KHR getFormatProperties2KHR( Format format ) const;
29095#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29096
29097 Result getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, ImageFormatProperties2KHR* pImageFormatProperties ) const;
29098#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29099 ResultValueType<ImageFormatProperties2KHR>::type getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060029100 template <typename ...T>
29101 typename ResultValueType<StructureChain<T...>>::type getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const;
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029102#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29103
29104 void getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2KHR* pQueueFamilyProperties ) const;
29105#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29106 template <typename Allocator = std::allocator<QueueFamilyProperties2KHR>>
29107 std::vector<QueueFamilyProperties2KHR,Allocator> getQueueFamilyProperties2KHR() const;
29108#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29109
29110 void getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2KHR* pMemoryProperties ) const;
29111#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29112 PhysicalDeviceMemoryProperties2KHR getMemoryProperties2KHR() const;
29113#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29114
29115 void getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2KHR* pProperties ) const;
29116#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29117 template <typename Allocator = std::allocator<SparseImageFormatProperties2KHR>>
29118 std::vector<SparseImageFormatProperties2KHR,Allocator> getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR & formatInfo ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029119#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29120
Mark Youngabc2d6e2017-07-07 07:59:56 -060029121 void getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfoKHR* pExternalBufferInfo, ExternalBufferPropertiesKHR* pExternalBufferProperties ) const;
Mark Young0f183a82017-02-28 09:58:04 -070029122#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029123 ExternalBufferPropertiesKHR getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfoKHR & externalBufferInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070029124#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29125
Mark Youngabc2d6e2017-07-07 07:59:56 -060029126 void getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfoKHR* pExternalSemaphoreInfo, ExternalSemaphorePropertiesKHR* pExternalSemaphoreProperties ) const;
Mark Young0f183a82017-02-28 09:58:04 -070029127#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029128 ExternalSemaphorePropertiesKHR getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfoKHR & externalSemaphoreInfo ) const;
29129#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29130
29131 void getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfoKHR* pExternalFenceInfo, ExternalFencePropertiesKHR* pExternalFenceProperties ) const;
29132#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29133 ExternalFencePropertiesKHR getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfoKHR & externalFenceInfo ) const;
Mark Young0f183a82017-02-28 09:58:04 -070029134#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29135
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029136#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029137 Result releaseDisplayEXT( DisplayKHR display ) const;
29138#else
29139 ResultValueType<void>::type releaseDisplayEXT( DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070029140#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29141
29142#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029143 Result acquireXlibDisplayEXT( Display* dpy, DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070029144#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029145 ResultValueType<Display>::type acquireXlibDisplayEXT( DisplayKHR display ) const;
Mark Young39389872017-01-19 21:10:49 -070029146#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young39389872017-01-19 21:10:49 -070029147#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
29148
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029149#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
29150 Result getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay ) const;
Mark Young39389872017-01-19 21:10:49 -070029151#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029152 ResultValueType<DisplayKHR>::type getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const;
Mark Young39389872017-01-19 21:10:49 -070029153#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029154#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
Mark Young39389872017-01-19 21:10:49 -070029155
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029156 Result getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities ) const;
Mark Young39389872017-01-19 21:10:49 -070029157#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029158 ResultValueType<SurfaceCapabilities2EXT>::type getSurfaceCapabilities2EXT( SurfaceKHR surface ) const;
Mark Young39389872017-01-19 21:10:49 -070029159#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29160
Mark Young0f183a82017-02-28 09:58:04 -070029161 Result getPresentRectanglesKHX( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects ) const;
29162#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29163 template <typename Allocator = std::allocator<Rect2D>>
29164 typename ResultValueType<std::vector<Rect2D,Allocator>>::type getPresentRectanglesKHX( SurfaceKHR surface ) const;
29165#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29166
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060029167 void getMultisamplePropertiesEXT( SampleCountFlagBits samples, MultisamplePropertiesEXT* pMultisampleProperties ) const;
29168#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29169 MultisamplePropertiesEXT getMultisamplePropertiesEXT( SampleCountFlagBits samples ) const;
29170#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29171
Mark Lobodzinski54385432017-05-15 10:27:52 -060029172 Result getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, SurfaceCapabilities2KHR* pSurfaceCapabilities ) const;
29173#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029174 ResultValueType<SurfaceCapabilities2KHR>::type getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060029175 template <typename ...T>
29176 typename ResultValueType<StructureChain<T...>>::type getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
Mark Lobodzinski54385432017-05-15 10:27:52 -060029177#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29178
29179 Result getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, SurfaceFormat2KHR* pSurfaceFormats ) const;
29180#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29181 template <typename Allocator = std::allocator<SurfaceFormat2KHR>>
29182 typename ResultValueType<std::vector<SurfaceFormat2KHR,Allocator>>::type getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const;
29183#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29184
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029185
29186
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070029187 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPhysicalDevice() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029188 {
29189 return m_physicalDevice;
29190 }
29191
29192 explicit operator bool() const
29193 {
29194 return m_physicalDevice != VK_NULL_HANDLE;
29195 }
29196
29197 bool operator!() const
29198 {
29199 return m_physicalDevice == VK_NULL_HANDLE;
29200 }
29201
29202 private:
29203 VkPhysicalDevice m_physicalDevice;
29204 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029205
Lenny Komowbed9b5c2016-08-11 11:23:15 -060029206 static_assert( sizeof( PhysicalDevice ) == sizeof( VkPhysicalDevice ), "handle and wrapper have different size!" );
29207
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029208#ifndef VULKAN_HPP_NO_SMART_HANDLE
29209 class DeviceDeleter
29210 {
29211 public:
29212 DeviceDeleter( Optional<const AllocationCallbacks> allocator = nullptr )
29213 : m_allocator( allocator )
29214 {}
29215
29216 void operator()( Device device )
29217 {
29218 device.destroy( m_allocator );
29219 }
29220
29221 private:
29222 Optional<const AllocationCallbacks> m_allocator;
29223 };
29224#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29225
29226 VULKAN_HPP_INLINE void PhysicalDevice::getProperties( PhysicalDeviceProperties* pProperties ) const
29227 {
29228 vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( pProperties ) );
29229 }
29230#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29231 VULKAN_HPP_INLINE PhysicalDeviceProperties PhysicalDevice::getProperties() const
29232 {
29233 PhysicalDeviceProperties properties;
29234 vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties*>( &properties ) );
29235 return properties;
29236 }
29237#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29238
29239 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties* pQueueFamilyProperties ) const
29240 {
29241 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( pQueueFamilyProperties ) );
29242 }
29243#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29244 template <typename Allocator>
29245 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties,Allocator> PhysicalDevice::getQueueFamilyProperties() const
29246 {
29247 std::vector<QueueFamilyProperties,Allocator> queueFamilyProperties;
29248 uint32_t queueFamilyPropertyCount;
29249 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
29250 queueFamilyProperties.resize( queueFamilyPropertyCount );
29251 vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties*>( queueFamilyProperties.data() ) );
29252 return queueFamilyProperties;
29253 }
29254#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29255
29256 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties( PhysicalDeviceMemoryProperties* pMemoryProperties ) const
29257 {
29258 vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( pMemoryProperties ) );
29259 }
29260#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29261 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties PhysicalDevice::getMemoryProperties() const
29262 {
29263 PhysicalDeviceMemoryProperties memoryProperties;
29264 vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties*>( &memoryProperties ) );
29265 return memoryProperties;
29266 }
29267#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29268
29269 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures( PhysicalDeviceFeatures* pFeatures ) const
29270 {
29271 vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( pFeatures ) );
29272 }
29273#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29274 VULKAN_HPP_INLINE PhysicalDeviceFeatures PhysicalDevice::getFeatures() const
29275 {
29276 PhysicalDeviceFeatures features;
29277 vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures*>( &features ) );
29278 return features;
29279 }
29280#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29281
29282 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties( Format format, FormatProperties* pFormatProperties ) const
29283 {
29284 vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( pFormatProperties ) );
29285 }
29286#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29287 VULKAN_HPP_INLINE FormatProperties PhysicalDevice::getFormatProperties( Format format ) const
29288 {
29289 FormatProperties formatProperties;
29290 vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties*>( &formatProperties ) );
29291 return formatProperties;
29292 }
29293#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29294
29295 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ImageFormatProperties* pImageFormatProperties ) const
29296 {
29297 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 ) ) );
29298 }
29299#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29300 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties>::type PhysicalDevice::getImageFormatProperties( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags ) const
29301 {
29302 ImageFormatProperties imageFormatProperties;
29303 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 ) ) );
29304 return createResultValue( result, imageFormatProperties, "vk::PhysicalDevice::getImageFormatProperties" );
29305 }
29306#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29307
29308 VULKAN_HPP_INLINE Result PhysicalDevice::createDevice( const DeviceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Device* pDevice ) const
29309 {
29310 return static_cast<Result>( vkCreateDevice( m_physicalDevice, reinterpret_cast<const VkDeviceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDevice*>( pDevice ) ) );
29311 }
29312#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29313 VULKAN_HPP_INLINE ResultValueType<Device>::type PhysicalDevice::createDevice( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29314 {
29315 Device device;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029316 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 -070029317 return createResultValue( result, device, "vk::PhysicalDevice::createDevice" );
29318 }
29319#ifndef VULKAN_HPP_NO_SMART_HANDLE
29320 VULKAN_HPP_INLINE UniqueDevice PhysicalDevice::createDeviceUnique( const DeviceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator ) const
29321 {
29322 DeviceDeleter deleter( allocator );
29323 return UniqueDevice( createDevice( createInfo, allocator ), deleter );
29324 }
29325#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
29326#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29327
29328 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceLayerProperties( uint32_t* pPropertyCount, LayerProperties* pProperties ) const
29329 {
29330 return static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, pPropertyCount, reinterpret_cast<VkLayerProperties*>( pProperties ) ) );
29331 }
29332#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29333 template <typename Allocator>
29334 VULKAN_HPP_INLINE typename ResultValueType<std::vector<LayerProperties,Allocator>>::type PhysicalDevice::enumerateDeviceLayerProperties() const
29335 {
29336 std::vector<LayerProperties,Allocator> properties;
29337 uint32_t propertyCount;
29338 Result result;
29339 do
29340 {
29341 result = static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, nullptr ) );
29342 if ( ( result == Result::eSuccess ) && propertyCount )
29343 {
29344 properties.resize( propertyCount );
29345 result = static_cast<Result>( vkEnumerateDeviceLayerProperties( m_physicalDevice, &propertyCount, reinterpret_cast<VkLayerProperties*>( properties.data() ) ) );
29346 }
29347 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029348 assert( propertyCount <= properties.size() );
29349 properties.resize( propertyCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029350 return createResultValue( result, properties, "vk::PhysicalDevice::enumerateDeviceLayerProperties" );
29351 }
29352#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29353
29354 VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, ExtensionProperties* pProperties ) const
29355 {
29356 return static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, pLayerName, pPropertyCount, reinterpret_cast<VkExtensionProperties*>( pProperties ) ) );
29357 }
29358#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29359 template <typename Allocator>
29360 VULKAN_HPP_INLINE typename ResultValueType<std::vector<ExtensionProperties,Allocator>>::type PhysicalDevice::enumerateDeviceExtensionProperties( Optional<const std::string> layerName ) const
29361 {
29362 std::vector<ExtensionProperties,Allocator> properties;
29363 uint32_t propertyCount;
29364 Result result;
29365 do
29366 {
29367 result = static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, nullptr ) );
29368 if ( ( result == Result::eSuccess ) && propertyCount )
29369 {
29370 properties.resize( propertyCount );
29371 result = static_cast<Result>( vkEnumerateDeviceExtensionProperties( m_physicalDevice, layerName ? layerName->c_str() : nullptr, &propertyCount, reinterpret_cast<VkExtensionProperties*>( properties.data() ) ) );
29372 }
29373 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029374 assert( propertyCount <= properties.size() );
29375 properties.resize( propertyCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029376 return createResultValue( result, properties, "vk::PhysicalDevice::enumerateDeviceExtensionProperties" );
29377 }
29378#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29379
29380 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling, uint32_t* pPropertyCount, SparseImageFormatProperties* pProperties ) const
29381 {
29382 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 ) );
29383 }
29384#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29385 template <typename Allocator>
29386 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties,Allocator> PhysicalDevice::getSparseImageFormatProperties( Format format, ImageType type, SampleCountFlagBits samples, ImageUsageFlags usage, ImageTiling tiling ) const
29387 {
29388 std::vector<SparseImageFormatProperties,Allocator> properties;
29389 uint32_t propertyCount;
29390 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 );
29391 properties.resize( propertyCount );
29392 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() ) );
29393 return properties;
29394 }
29395#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29396
29397 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPropertiesKHR( uint32_t* pPropertyCount, DisplayPropertiesKHR* pProperties ) const
29398 {
29399 return static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( pProperties ) ) );
29400 }
29401#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29402 template <typename Allocator>
29403 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPropertiesKHR() const
29404 {
29405 std::vector<DisplayPropertiesKHR,Allocator> properties;
29406 uint32_t propertyCount;
29407 Result result;
29408 do
29409 {
29410 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
29411 if ( ( result == Result::eSuccess ) && propertyCount )
29412 {
29413 properties.resize( propertyCount );
29414 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPropertiesKHR*>( properties.data() ) ) );
29415 }
29416 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029417 assert( propertyCount <= properties.size() );
29418 properties.resize( propertyCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029419 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayPropertiesKHR" );
29420 }
29421#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29422
29423 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, DisplayPlanePropertiesKHR* pProperties ) const
29424 {
29425 return static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( pProperties ) ) );
29426 }
29427#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29428 template <typename Allocator>
29429 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayPlanePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayPlanePropertiesKHR() const
29430 {
29431 std::vector<DisplayPlanePropertiesKHR,Allocator> properties;
29432 uint32_t propertyCount;
29433 Result result;
29434 do
29435 {
29436 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, nullptr ) );
29437 if ( ( result == Result::eSuccess ) && propertyCount )
29438 {
29439 properties.resize( propertyCount );
29440 result = static_cast<Result>( vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, &propertyCount, reinterpret_cast<VkDisplayPlanePropertiesKHR*>( properties.data() ) ) );
29441 }
29442 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029443 assert( propertyCount <= properties.size() );
29444 properties.resize( propertyCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029445 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayPlanePropertiesKHR" );
29446 }
29447#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29448
29449 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, DisplayKHR* pDisplays ) const
29450 {
29451 return static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, pDisplayCount, reinterpret_cast<VkDisplayKHR*>( pDisplays ) ) );
29452 }
29453#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29454 template <typename Allocator>
29455 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayKHR,Allocator>>::type PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex ) const
29456 {
29457 std::vector<DisplayKHR,Allocator> displays;
29458 uint32_t displayCount;
29459 Result result;
29460 do
29461 {
29462 result = static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, nullptr ) );
29463 if ( ( result == Result::eSuccess ) && displayCount )
29464 {
29465 displays.resize( displayCount );
29466 result = static_cast<Result>( vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, &displayCount, reinterpret_cast<VkDisplayKHR*>( displays.data() ) ) );
29467 }
29468 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029469 assert( displayCount <= displays.size() );
29470 displays.resize( displayCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029471 return createResultValue( result, displays, "vk::PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR" );
29472 }
29473#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29474
29475 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display, uint32_t* pPropertyCount, DisplayModePropertiesKHR* pProperties ) const
29476 {
29477 return static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), pPropertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( pProperties ) ) );
29478 }
29479#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29480 template <typename Allocator>
29481 VULKAN_HPP_INLINE typename ResultValueType<std::vector<DisplayModePropertiesKHR,Allocator>>::type PhysicalDevice::getDisplayModePropertiesKHR( DisplayKHR display ) const
29482 {
29483 std::vector<DisplayModePropertiesKHR,Allocator> properties;
29484 uint32_t propertyCount;
29485 Result result;
29486 do
29487 {
29488 result = static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, nullptr ) );
29489 if ( ( result == Result::eSuccess ) && propertyCount )
29490 {
29491 properties.resize( propertyCount );
29492 result = static_cast<Result>( vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast<VkDisplayKHR>( display ), &propertyCount, reinterpret_cast<VkDisplayModePropertiesKHR*>( properties.data() ) ) );
29493 }
29494 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029495 assert( propertyCount <= properties.size() );
29496 properties.resize( propertyCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029497 return createResultValue( result, properties, "vk::PhysicalDevice::getDisplayModePropertiesKHR" );
29498 }
29499#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29500
29501 VULKAN_HPP_INLINE Result PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, DisplayModeKHR* pMode ) const
29502 {
29503 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 ) ) );
29504 }
29505#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29506 VULKAN_HPP_INLINE ResultValueType<DisplayModeKHR>::type PhysicalDevice::createDisplayModeKHR( DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
29507 {
29508 DisplayModeKHR mode;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029509 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 -070029510 return createResultValue( result, mode, "vk::PhysicalDevice::createDisplayModeKHR" );
29511 }
29512#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29513
29514 VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex, DisplayPlaneCapabilitiesKHR* pCapabilities ) const
29515 {
29516 return static_cast<Result>( vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( pCapabilities ) ) );
29517 }
29518#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29519 VULKAN_HPP_INLINE ResultValueType<DisplayPlaneCapabilitiesKHR>::type PhysicalDevice::getDisplayPlaneCapabilitiesKHR( DisplayModeKHR mode, uint32_t planeIndex ) const
29520 {
29521 DisplayPlaneCapabilitiesKHR capabilities;
29522 Result result = static_cast<Result>( vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast<VkDisplayModeKHR>( mode ), planeIndex, reinterpret_cast<VkDisplayPlaneCapabilitiesKHR*>( &capabilities ) ) );
29523 return createResultValue( result, capabilities, "vk::PhysicalDevice::getDisplayPlaneCapabilitiesKHR" );
29524 }
29525#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29526
29527#ifdef VK_USE_PLATFORM_MIR_KHR
29528 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection* connection ) const
29529 {
29530 return vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection );
29531 }
29532#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29533 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getMirPresentationSupportKHR( uint32_t queueFamilyIndex, MirConnection & connection ) const
29534 {
29535 return vkGetPhysicalDeviceMirPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection );
29536 }
29537#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29538#endif /*VK_USE_PLATFORM_MIR_KHR*/
29539
29540 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface, Bool32* pSupported ) const
29541 {
29542 return static_cast<Result>( vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), pSupported ) );
29543 }
29544#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29545 VULKAN_HPP_INLINE ResultValueType<Bool32>::type PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, SurfaceKHR surface ) const
29546 {
29547 Bool32 supported;
29548 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast<VkSurfaceKHR>( surface ), &supported ) );
29549 return createResultValue( result, supported, "vk::PhysicalDevice::getSurfaceSupportKHR" );
29550 }
29551#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29552
29553 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface, SurfaceCapabilitiesKHR* pSurfaceCapabilities ) const
29554 {
29555 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( pSurfaceCapabilities ) ) );
29556 }
29557#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29558 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilitiesKHR>::type PhysicalDevice::getSurfaceCapabilitiesKHR( SurfaceKHR surface ) const
29559 {
29560 SurfaceCapabilitiesKHR surfaceCapabilities;
29561 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilitiesKHR*>( &surfaceCapabilities ) ) );
29562 return createResultValue( result, surfaceCapabilities, "vk::PhysicalDevice::getSurfaceCapabilitiesKHR" );
29563 }
29564#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29565
29566 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface, uint32_t* pSurfaceFormatCount, SurfaceFormatKHR* pSurfaceFormats ) const
29567 {
29568 return static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pSurfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( pSurfaceFormats ) ) );
29569 }
29570#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29571 template <typename Allocator>
29572 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormatKHR,Allocator>>::type PhysicalDevice::getSurfaceFormatsKHR( SurfaceKHR surface ) const
29573 {
29574 std::vector<SurfaceFormatKHR,Allocator> surfaceFormats;
29575 uint32_t surfaceFormatCount;
29576 Result result;
29577 do
29578 {
29579 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, nullptr ) );
29580 if ( ( result == Result::eSuccess ) && surfaceFormatCount )
29581 {
29582 surfaceFormats.resize( surfaceFormatCount );
29583 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormatKHR*>( surfaceFormats.data() ) ) );
29584 }
29585 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029586 assert( surfaceFormatCount <= surfaceFormats.size() );
29587 surfaceFormats.resize( surfaceFormatCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029588 return createResultValue( result, surfaceFormats, "vk::PhysicalDevice::getSurfaceFormatsKHR" );
29589 }
29590#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29591
29592 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface, uint32_t* pPresentModeCount, PresentModeKHR* pPresentModes ) const
29593 {
29594 return static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pPresentModeCount, reinterpret_cast<VkPresentModeKHR*>( pPresentModes ) ) );
29595 }
29596#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29597 template <typename Allocator>
29598 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PresentModeKHR,Allocator>>::type PhysicalDevice::getSurfacePresentModesKHR( SurfaceKHR surface ) const
29599 {
29600 std::vector<PresentModeKHR,Allocator> presentModes;
29601 uint32_t presentModeCount;
29602 Result result;
29603 do
29604 {
29605 result = static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, nullptr ) );
29606 if ( ( result == Result::eSuccess ) && presentModeCount )
29607 {
29608 presentModes.resize( presentModeCount );
29609 result = static_cast<Result>( vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &presentModeCount, reinterpret_cast<VkPresentModeKHR*>( presentModes.data() ) ) );
29610 }
29611 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029612 assert( presentModeCount <= presentModes.size() );
29613 presentModes.resize( presentModeCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029614 return createResultValue( result, presentModes, "vk::PhysicalDevice::getSurfacePresentModesKHR" );
29615 }
29616#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29617
29618#ifdef VK_USE_PLATFORM_WAYLAND_KHR
29619 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display ) const
29620 {
29621 return vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, display );
29622 }
29623#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29624 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display ) const
29625 {
29626 return vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &display );
29627 }
29628#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29629#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
29630
29631#ifdef VK_USE_PLATFORM_WIN32_KHR
29632 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWin32PresentationSupportKHR( uint32_t queueFamilyIndex ) const
29633 {
29634 return vkGetPhysicalDeviceWin32PresentationSupportKHR( m_physicalDevice, queueFamilyIndex );
29635 }
29636#endif /*VK_USE_PLATFORM_WIN32_KHR*/
29637
29638#ifdef VK_USE_PLATFORM_XLIB_KHR
29639 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID ) const
29640 {
29641 return vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, dpy, visualID );
29642 }
29643#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29644 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID ) const
29645 {
29646 return vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &dpy, visualID );
29647 }
29648#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29649#endif /*VK_USE_PLATFORM_XLIB_KHR*/
29650
29651#ifdef VK_USE_PLATFORM_XCB_KHR
29652 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id ) const
29653 {
29654 return vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection, visual_id );
29655 }
29656#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29657 VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXcbPresentationSupportKHR( uint32_t queueFamilyIndex, xcb_connection_t & connection, xcb_visualid_t visual_id ) const
29658 {
29659 return vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection, visual_id );
29660 }
29661#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29662#endif /*VK_USE_PLATFORM_XCB_KHR*/
29663
29664 VULKAN_HPP_INLINE Result PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType, ExternalImageFormatPropertiesNV* pExternalImageFormatProperties ) const
29665 {
29666 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 ) ) );
29667 }
29668#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29669 VULKAN_HPP_INLINE ResultValueType<ExternalImageFormatPropertiesNV>::type PhysicalDevice::getExternalImageFormatPropertiesNV( Format format, ImageType type, ImageTiling tiling, ImageUsageFlags usage, ImageCreateFlags flags, ExternalMemoryHandleTypeFlagsNV externalHandleType ) const
29670 {
29671 ExternalImageFormatPropertiesNV externalImageFormatProperties;
29672 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 ) ) );
29673 return createResultValue( result, externalImageFormatProperties, "vk::PhysicalDevice::getExternalImageFormatPropertiesNV" );
29674 }
29675#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29676
29677 VULKAN_HPP_INLINE void PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX* pFeatures, DeviceGeneratedCommandsLimitsNVX* pLimits ) const
29678 {
29679 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( pFeatures ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( pLimits ) );
29680 }
29681#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29682 VULKAN_HPP_INLINE DeviceGeneratedCommandsLimitsNVX PhysicalDevice::getGeneratedCommandsPropertiesNVX( DeviceGeneratedCommandsFeaturesNVX & features ) const
29683 {
29684 DeviceGeneratedCommandsLimitsNVX limits;
29685 vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( m_physicalDevice, reinterpret_cast<VkDeviceGeneratedCommandsFeaturesNVX*>( &features ), reinterpret_cast<VkDeviceGeneratedCommandsLimitsNVX*>( &limits ) );
29686 return limits;
29687 }
29688#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29689
29690 VULKAN_HPP_INLINE void PhysicalDevice::getFeatures2KHR( PhysicalDeviceFeatures2KHR* pFeatures ) const
29691 {
29692 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( pFeatures ) );
29693 }
29694#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29695 VULKAN_HPP_INLINE PhysicalDeviceFeatures2KHR PhysicalDevice::getFeatures2KHR() const
29696 {
29697 PhysicalDeviceFeatures2KHR features;
29698 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( &features ) );
29699 return features;
29700 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060029701 template <typename ...T>
29702 VULKAN_HPP_INLINE StructureChain<T...> PhysicalDevice::getFeatures2KHR() const
29703 {
29704 StructureChain<T...> structureChain;
29705 PhysicalDeviceFeatures2KHR& features = structureChain.template get<PhysicalDeviceFeatures2KHR>();
29706 vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceFeatures2KHR*>( &features ) );
29707 return structureChain;
29708 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029709#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29710
29711 VULKAN_HPP_INLINE void PhysicalDevice::getProperties2KHR( PhysicalDeviceProperties2KHR* pProperties ) const
29712 {
29713 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( pProperties ) );
29714 }
29715#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29716 VULKAN_HPP_INLINE PhysicalDeviceProperties2KHR PhysicalDevice::getProperties2KHR() const
29717 {
29718 PhysicalDeviceProperties2KHR properties;
29719 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( &properties ) );
29720 return properties;
29721 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060029722 template <typename ...T>
29723 VULKAN_HPP_INLINE StructureChain<T...> PhysicalDevice::getProperties2KHR() const
29724 {
29725 StructureChain<T...> structureChain;
29726 PhysicalDeviceProperties2KHR& properties = structureChain.template get<PhysicalDeviceProperties2KHR>();
29727 vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceProperties2KHR*>( &properties ) );
29728 return structureChain;
29729 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029730#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29731
29732 VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties2KHR( Format format, FormatProperties2KHR* pFormatProperties ) const
29733 {
29734 vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2KHR*>( pFormatProperties ) );
29735 }
29736#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29737 VULKAN_HPP_INLINE FormatProperties2KHR PhysicalDevice::getFormatProperties2KHR( Format format ) const
29738 {
29739 FormatProperties2KHR formatProperties;
29740 vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast<VkFormat>( format ), reinterpret_cast<VkFormatProperties2KHR*>( &formatProperties ) );
29741 return formatProperties;
29742 }
29743#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29744
29745 VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, ImageFormatProperties2KHR* pImageFormatProperties ) const
29746 {
29747 return static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( pImageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( pImageFormatProperties ) ) );
29748 }
29749#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29750 VULKAN_HPP_INLINE ResultValueType<ImageFormatProperties2KHR>::type PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const
29751 {
29752 ImageFormatProperties2KHR imageFormatProperties;
29753 Result result = static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( &imageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( &imageFormatProperties ) ) );
29754 return createResultValue( result, imageFormatProperties, "vk::PhysicalDevice::getImageFormatProperties2KHR" );
29755 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060029756 template <typename ...T>
29757 VULKAN_HPP_INLINE typename ResultValueType<StructureChain<T...>>::type PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2KHR & imageFormatInfo ) const
29758 {
29759 StructureChain<T...> structureChain;
29760 ImageFormatProperties2KHR& imageFormatProperties = structureChain.template get<ImageFormatProperties2KHR>();
29761 Result result = static_cast<Result>( vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceImageFormatInfo2KHR*>( &imageFormatInfo ), reinterpret_cast<VkImageFormatProperties2KHR*>( &imageFormatProperties ) ) );
29762 return createResultValue( result, structureChain, "vk::PhysicalDevice::getImageFormatProperties2KHR" );
29763 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029764#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29765
29766 VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, QueueFamilyProperties2KHR* pQueueFamilyProperties ) const
29767 {
29768 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2KHR*>( pQueueFamilyProperties ) );
29769 }
29770#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29771 template <typename Allocator>
29772 VULKAN_HPP_INLINE std::vector<QueueFamilyProperties2KHR,Allocator> PhysicalDevice::getQueueFamilyProperties2KHR() const
29773 {
29774 std::vector<QueueFamilyProperties2KHR,Allocator> queueFamilyProperties;
29775 uint32_t queueFamilyPropertyCount;
29776 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr );
29777 queueFamilyProperties.resize( queueFamilyPropertyCount );
29778 vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast<VkQueueFamilyProperties2KHR*>( queueFamilyProperties.data() ) );
29779 return queueFamilyProperties;
29780 }
29781#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29782
29783 VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties2KHR( PhysicalDeviceMemoryProperties2KHR* pMemoryProperties ) const
29784 {
29785 vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2KHR*>( pMemoryProperties ) );
29786 }
29787#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29788 VULKAN_HPP_INLINE PhysicalDeviceMemoryProperties2KHR PhysicalDevice::getMemoryProperties2KHR() const
29789 {
29790 PhysicalDeviceMemoryProperties2KHR memoryProperties;
29791 vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast<VkPhysicalDeviceMemoryProperties2KHR*>( &memoryProperties ) );
29792 return memoryProperties;
29793 }
29794#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29795
29796 VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, SparseImageFormatProperties2KHR* pProperties ) const
29797 {
29798 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( pFormatInfo ), pPropertyCount, reinterpret_cast<VkSparseImageFormatProperties2KHR*>( pProperties ) );
29799 }
29800#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29801 template <typename Allocator>
29802 VULKAN_HPP_INLINE std::vector<SparseImageFormatProperties2KHR,Allocator> PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2KHR & formatInfo ) const
29803 {
29804 std::vector<SparseImageFormatProperties2KHR,Allocator> properties;
29805 uint32_t propertyCount;
29806 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( &formatInfo ), &propertyCount, nullptr );
29807 properties.resize( propertyCount );
29808 vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSparseImageFormatInfo2KHR*>( &formatInfo ), &propertyCount, reinterpret_cast<VkSparseImageFormatProperties2KHR*>( properties.data() ) );
29809 return properties;
29810 }
29811#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29812
Mark Youngabc2d6e2017-07-07 07:59:56 -060029813 VULKAN_HPP_INLINE void PhysicalDevice::getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfoKHR* pExternalBufferInfo, ExternalBufferPropertiesKHR* pExternalBufferProperties ) const
Mark Young0f183a82017-02-28 09:58:04 -070029814 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029815 vkGetPhysicalDeviceExternalBufferPropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHR*>( pExternalBufferInfo ), reinterpret_cast<VkExternalBufferPropertiesKHR*>( pExternalBufferProperties ) );
Mark Young0f183a82017-02-28 09:58:04 -070029816 }
29817#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029818 VULKAN_HPP_INLINE ExternalBufferPropertiesKHR PhysicalDevice::getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfoKHR & externalBufferInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029819 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029820 ExternalBufferPropertiesKHR externalBufferProperties;
29821 vkGetPhysicalDeviceExternalBufferPropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalBufferInfoKHR*>( &externalBufferInfo ), reinterpret_cast<VkExternalBufferPropertiesKHR*>( &externalBufferProperties ) );
Mark Young0f183a82017-02-28 09:58:04 -070029822 return externalBufferProperties;
29823 }
29824#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29825
Mark Youngabc2d6e2017-07-07 07:59:56 -060029826 VULKAN_HPP_INLINE void PhysicalDevice::getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfoKHR* pExternalSemaphoreInfo, ExternalSemaphorePropertiesKHR* pExternalSemaphoreProperties ) const
Mark Young0f183a82017-02-28 09:58:04 -070029827 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029828 vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHR*>( pExternalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphorePropertiesKHR*>( pExternalSemaphoreProperties ) );
Mark Young0f183a82017-02-28 09:58:04 -070029829 }
29830#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Youngabc2d6e2017-07-07 07:59:56 -060029831 VULKAN_HPP_INLINE ExternalSemaphorePropertiesKHR PhysicalDevice::getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfoKHR & externalSemaphoreInfo ) const
Mark Young0f183a82017-02-28 09:58:04 -070029832 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060029833 ExternalSemaphorePropertiesKHR externalSemaphoreProperties;
29834 vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalSemaphoreInfoKHR*>( &externalSemaphoreInfo ), reinterpret_cast<VkExternalSemaphorePropertiesKHR*>( &externalSemaphoreProperties ) );
Mark Young0f183a82017-02-28 09:58:04 -070029835 return externalSemaphoreProperties;
29836 }
29837#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29838
Mark Youngabc2d6e2017-07-07 07:59:56 -060029839 VULKAN_HPP_INLINE void PhysicalDevice::getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfoKHR* pExternalFenceInfo, ExternalFencePropertiesKHR* pExternalFenceProperties ) const
29840 {
29841 vkGetPhysicalDeviceExternalFencePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalFenceInfoKHR*>( pExternalFenceInfo ), reinterpret_cast<VkExternalFencePropertiesKHR*>( pExternalFenceProperties ) );
29842 }
29843#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29844 VULKAN_HPP_INLINE ExternalFencePropertiesKHR PhysicalDevice::getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfoKHR & externalFenceInfo ) const
29845 {
29846 ExternalFencePropertiesKHR externalFenceProperties;
29847 vkGetPhysicalDeviceExternalFencePropertiesKHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceExternalFenceInfoKHR*>( &externalFenceInfo ), reinterpret_cast<VkExternalFencePropertiesKHR*>( &externalFenceProperties ) );
29848 return externalFenceProperties;
29849 }
29850#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29851
Mark Lobodzinski36c33862017-02-13 10:15:53 -070029852#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE
29853 VULKAN_HPP_INLINE Result PhysicalDevice::releaseDisplayEXT( DisplayKHR display ) const
29854 {
29855 return static_cast<Result>( vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
29856 }
29857#else
29858 VULKAN_HPP_INLINE ResultValueType<void>::type PhysicalDevice::releaseDisplayEXT( DisplayKHR display ) const
29859 {
29860 Result result = static_cast<Result>( vkReleaseDisplayEXT( m_physicalDevice, static_cast<VkDisplayKHR>( display ) ) );
29861 return createResultValue( result, "vk::PhysicalDevice::releaseDisplayEXT" );
29862 }
29863#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29864
29865#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
29866 VULKAN_HPP_INLINE Result PhysicalDevice::acquireXlibDisplayEXT( Display* dpy, DisplayKHR display ) const
29867 {
29868 return static_cast<Result>( vkAcquireXlibDisplayEXT( m_physicalDevice, dpy, static_cast<VkDisplayKHR>( display ) ) );
29869 }
29870#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29871 VULKAN_HPP_INLINE ResultValueType<Display>::type PhysicalDevice::acquireXlibDisplayEXT( DisplayKHR display ) const
29872 {
29873 Display dpy;
29874 Result result = static_cast<Result>( vkAcquireXlibDisplayEXT( m_physicalDevice, &dpy, static_cast<VkDisplayKHR>( display ) ) );
29875 return createResultValue( result, dpy, "vk::PhysicalDevice::acquireXlibDisplayEXT" );
29876 }
29877#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29878#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
29879
29880#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT
29881 VULKAN_HPP_INLINE Result PhysicalDevice::getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, DisplayKHR* pDisplay ) const
29882 {
29883 return static_cast<Result>( vkGetRandROutputDisplayEXT( m_physicalDevice, dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( pDisplay ) ) );
29884 }
29885#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29886 VULKAN_HPP_INLINE ResultValueType<DisplayKHR>::type PhysicalDevice::getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput ) const
29887 {
29888 DisplayKHR display;
29889 Result result = static_cast<Result>( vkGetRandROutputDisplayEXT( m_physicalDevice, &dpy, rrOutput, reinterpret_cast<VkDisplayKHR*>( &display ) ) );
29890 return createResultValue( result, display, "vk::PhysicalDevice::getRandROutputDisplayEXT" );
29891 }
29892#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29893#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/
29894
29895 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface, SurfaceCapabilities2EXT* pSurfaceCapabilities ) const
29896 {
29897 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( pSurfaceCapabilities ) ) );
29898 }
29899#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29900 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilities2EXT>::type PhysicalDevice::getSurfaceCapabilities2EXT( SurfaceKHR surface ) const
29901 {
29902 SurfaceCapabilities2EXT surfaceCapabilities;
29903 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<VkSurfaceCapabilities2EXT*>( &surfaceCapabilities ) ) );
29904 return createResultValue( result, surfaceCapabilities, "vk::PhysicalDevice::getSurfaceCapabilities2EXT" );
29905 }
29906#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070029907
29908 VULKAN_HPP_INLINE Result PhysicalDevice::getPresentRectanglesKHX( SurfaceKHR surface, uint32_t* pRectCount, Rect2D* pRects ) const
29909 {
29910 return static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), pRectCount, reinterpret_cast<VkRect2D*>( pRects ) ) );
29911 }
29912#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29913 template <typename Allocator>
29914 VULKAN_HPP_INLINE typename ResultValueType<std::vector<Rect2D,Allocator>>::type PhysicalDevice::getPresentRectanglesKHX( SurfaceKHR surface ) const
29915 {
29916 std::vector<Rect2D,Allocator> rects;
29917 uint32_t rectCount;
29918 Result result;
29919 do
29920 {
29921 result = static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, nullptr ) );
29922 if ( ( result == Result::eSuccess ) && rectCount )
29923 {
29924 rects.resize( rectCount );
29925 result = static_cast<Result>( vkGetPhysicalDevicePresentRectanglesKHX( m_physicalDevice, static_cast<VkSurfaceKHR>( surface ), &rectCount, reinterpret_cast<VkRect2D*>( rects.data() ) ) );
29926 }
29927 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029928 assert( rectCount <= rects.size() );
29929 rects.resize( rectCount );
Mark Young0f183a82017-02-28 09:58:04 -070029930 return createResultValue( result, rects, "vk::PhysicalDevice::getPresentRectanglesKHX" );
29931 }
29932#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060029933
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060029934 VULKAN_HPP_INLINE void PhysicalDevice::getMultisamplePropertiesEXT( SampleCountFlagBits samples, MultisamplePropertiesEXT* pMultisampleProperties ) const
29935 {
29936 vkGetPhysicalDeviceMultisamplePropertiesEXT( m_physicalDevice, static_cast<VkSampleCountFlagBits>( samples ), reinterpret_cast<VkMultisamplePropertiesEXT*>( pMultisampleProperties ) );
29937 }
29938#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29939 VULKAN_HPP_INLINE MultisamplePropertiesEXT PhysicalDevice::getMultisamplePropertiesEXT( SampleCountFlagBits samples ) const
29940 {
29941 MultisamplePropertiesEXT multisampleProperties;
29942 vkGetPhysicalDeviceMultisamplePropertiesEXT( m_physicalDevice, static_cast<VkSampleCountFlagBits>( samples ), reinterpret_cast<VkMultisamplePropertiesEXT*>( &multisampleProperties ) );
29943 return multisampleProperties;
29944 }
29945#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29946
Mark Lobodzinski54385432017-05-15 10:27:52 -060029947 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, SurfaceCapabilities2KHR* pSurfaceCapabilities ) const
29948 {
29949 return static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( pSurfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( pSurfaceCapabilities ) ) );
29950 }
29951#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029952 VULKAN_HPP_INLINE ResultValueType<SurfaceCapabilities2KHR>::type PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
Mark Lobodzinski54385432017-05-15 10:27:52 -060029953 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029954 SurfaceCapabilities2KHR surfaceCapabilities;
Mark Lobodzinski54385432017-05-15 10:27:52 -060029955 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( &surfaceCapabilities ) ) );
29956 return createResultValue( result, surfaceCapabilities, "vk::PhysicalDevice::getSurfaceCapabilities2KHR" );
29957 }
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060029958 template <typename ...T>
29959 VULKAN_HPP_INLINE typename ResultValueType<StructureChain<T...>>::type PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
29960 {
29961 StructureChain<T...> structureChain;
29962 SurfaceCapabilities2KHR& surfaceCapabilities = structureChain.template get<SurfaceCapabilities2KHR>();
29963 Result result = static_cast<Result>( vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), reinterpret_cast<VkSurfaceCapabilities2KHR*>( &surfaceCapabilities ) ) );
29964 return createResultValue( result, structureChain, "vk::PhysicalDevice::getSurfaceCapabilities2KHR" );
29965 }
Mark Lobodzinski54385432017-05-15 10:27:52 -060029966#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29967
29968 VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, SurfaceFormat2KHR* pSurfaceFormats ) const
29969 {
29970 return static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( pSurfaceInfo ), pSurfaceFormatCount, reinterpret_cast<VkSurfaceFormat2KHR*>( pSurfaceFormats ) ) );
29971 }
29972#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
29973 template <typename Allocator>
29974 VULKAN_HPP_INLINE typename ResultValueType<std::vector<SurfaceFormat2KHR,Allocator>>::type PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo ) const
29975 {
29976 std::vector<SurfaceFormat2KHR,Allocator> surfaceFormats;
29977 uint32_t surfaceFormatCount;
29978 Result result;
29979 do
29980 {
29981 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), &surfaceFormatCount, nullptr ) );
29982 if ( ( result == Result::eSuccess ) && surfaceFormatCount )
29983 {
29984 surfaceFormats.resize( surfaceFormatCount );
29985 result = static_cast<Result>( vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast<const VkPhysicalDeviceSurfaceInfo2KHR*>( &surfaceInfo ), &surfaceFormatCount, reinterpret_cast<VkSurfaceFormat2KHR*>( surfaceFormats.data() ) ) );
29986 }
29987 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060029988 assert( surfaceFormatCount <= surfaceFormats.size() );
29989 surfaceFormats.resize( surfaceFormatCount );
Mark Lobodzinski54385432017-05-15 10:27:52 -060029990 return createResultValue( result, surfaceFormats, "vk::PhysicalDevice::getSurfaceFormats2KHR" );
29991 }
29992#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
29993
Mark Young0f183a82017-02-28 09:58:04 -070029994 struct CmdProcessCommandsInfoNVX
29995 {
29996 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 )
29997 : sType( StructureType::eCmdProcessCommandsInfoNVX )
29998 , pNext( nullptr )
29999 , objectTable( objectTable_ )
30000 , indirectCommandsLayout( indirectCommandsLayout_ )
30001 , indirectCommandsTokenCount( indirectCommandsTokenCount_ )
30002 , pIndirectCommandsTokens( pIndirectCommandsTokens_ )
30003 , maxSequencesCount( maxSequencesCount_ )
30004 , targetCommandBuffer( targetCommandBuffer_ )
30005 , sequencesCountBuffer( sequencesCountBuffer_ )
30006 , sequencesCountOffset( sequencesCountOffset_ )
30007 , sequencesIndexBuffer( sequencesIndexBuffer_ )
30008 , sequencesIndexOffset( sequencesIndexOffset_ )
30009 {
30010 }
30011
30012 CmdProcessCommandsInfoNVX( VkCmdProcessCommandsInfoNVX const & rhs )
30013 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030014 memcpy( this, &rhs, sizeof( CmdProcessCommandsInfoNVX ) );
Mark Young0f183a82017-02-28 09:58:04 -070030015 }
30016
30017 CmdProcessCommandsInfoNVX& operator=( VkCmdProcessCommandsInfoNVX const & rhs )
30018 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030019 memcpy( this, &rhs, sizeof( CmdProcessCommandsInfoNVX ) );
Mark Young0f183a82017-02-28 09:58:04 -070030020 return *this;
30021 }
Mark Young0f183a82017-02-28 09:58:04 -070030022 CmdProcessCommandsInfoNVX& setPNext( const void* pNext_ )
30023 {
30024 pNext = pNext_;
30025 return *this;
30026 }
30027
30028 CmdProcessCommandsInfoNVX& setObjectTable( ObjectTableNVX objectTable_ )
30029 {
30030 objectTable = objectTable_;
30031 return *this;
30032 }
30033
30034 CmdProcessCommandsInfoNVX& setIndirectCommandsLayout( IndirectCommandsLayoutNVX indirectCommandsLayout_ )
30035 {
30036 indirectCommandsLayout = indirectCommandsLayout_;
30037 return *this;
30038 }
30039
30040 CmdProcessCommandsInfoNVX& setIndirectCommandsTokenCount( uint32_t indirectCommandsTokenCount_ )
30041 {
30042 indirectCommandsTokenCount = indirectCommandsTokenCount_;
30043 return *this;
30044 }
30045
30046 CmdProcessCommandsInfoNVX& setPIndirectCommandsTokens( const IndirectCommandsTokenNVX* pIndirectCommandsTokens_ )
30047 {
30048 pIndirectCommandsTokens = pIndirectCommandsTokens_;
30049 return *this;
30050 }
30051
30052 CmdProcessCommandsInfoNVX& setMaxSequencesCount( uint32_t maxSequencesCount_ )
30053 {
30054 maxSequencesCount = maxSequencesCount_;
30055 return *this;
30056 }
30057
30058 CmdProcessCommandsInfoNVX& setTargetCommandBuffer( CommandBuffer targetCommandBuffer_ )
30059 {
30060 targetCommandBuffer = targetCommandBuffer_;
30061 return *this;
30062 }
30063
30064 CmdProcessCommandsInfoNVX& setSequencesCountBuffer( Buffer sequencesCountBuffer_ )
30065 {
30066 sequencesCountBuffer = sequencesCountBuffer_;
30067 return *this;
30068 }
30069
30070 CmdProcessCommandsInfoNVX& setSequencesCountOffset( DeviceSize sequencesCountOffset_ )
30071 {
30072 sequencesCountOffset = sequencesCountOffset_;
30073 return *this;
30074 }
30075
30076 CmdProcessCommandsInfoNVX& setSequencesIndexBuffer( Buffer sequencesIndexBuffer_ )
30077 {
30078 sequencesIndexBuffer = sequencesIndexBuffer_;
30079 return *this;
30080 }
30081
30082 CmdProcessCommandsInfoNVX& setSequencesIndexOffset( DeviceSize sequencesIndexOffset_ )
30083 {
30084 sequencesIndexOffset = sequencesIndexOffset_;
30085 return *this;
30086 }
30087
30088 operator const VkCmdProcessCommandsInfoNVX&() const
30089 {
30090 return *reinterpret_cast<const VkCmdProcessCommandsInfoNVX*>(this);
30091 }
30092
30093 bool operator==( CmdProcessCommandsInfoNVX const& rhs ) const
30094 {
30095 return ( sType == rhs.sType )
30096 && ( pNext == rhs.pNext )
30097 && ( objectTable == rhs.objectTable )
30098 && ( indirectCommandsLayout == rhs.indirectCommandsLayout )
30099 && ( indirectCommandsTokenCount == rhs.indirectCommandsTokenCount )
30100 && ( pIndirectCommandsTokens == rhs.pIndirectCommandsTokens )
30101 && ( maxSequencesCount == rhs.maxSequencesCount )
30102 && ( targetCommandBuffer == rhs.targetCommandBuffer )
30103 && ( sequencesCountBuffer == rhs.sequencesCountBuffer )
30104 && ( sequencesCountOffset == rhs.sequencesCountOffset )
30105 && ( sequencesIndexBuffer == rhs.sequencesIndexBuffer )
30106 && ( sequencesIndexOffset == rhs.sequencesIndexOffset );
30107 }
30108
30109 bool operator!=( CmdProcessCommandsInfoNVX const& rhs ) const
30110 {
30111 return !operator==( rhs );
30112 }
30113
30114 private:
30115 StructureType sType;
30116
30117 public:
30118 const void* pNext;
30119 ObjectTableNVX objectTable;
30120 IndirectCommandsLayoutNVX indirectCommandsLayout;
30121 uint32_t indirectCommandsTokenCount;
30122 const IndirectCommandsTokenNVX* pIndirectCommandsTokens;
30123 uint32_t maxSequencesCount;
30124 CommandBuffer targetCommandBuffer;
30125 Buffer sequencesCountBuffer;
30126 DeviceSize sequencesCountOffset;
30127 Buffer sequencesIndexBuffer;
30128 DeviceSize sequencesIndexOffset;
30129 };
30130 static_assert( sizeof( CmdProcessCommandsInfoNVX ) == sizeof( VkCmdProcessCommandsInfoNVX ), "struct and wrapper have different size!" );
30131
30132 struct PhysicalDeviceGroupPropertiesKHX
30133 {
30134 operator const VkPhysicalDeviceGroupPropertiesKHX&() const
30135 {
30136 return *reinterpret_cast<const VkPhysicalDeviceGroupPropertiesKHX*>(this);
30137 }
30138
30139 bool operator==( PhysicalDeviceGroupPropertiesKHX const& rhs ) const
30140 {
30141 return ( sType == rhs.sType )
30142 && ( pNext == rhs.pNext )
30143 && ( physicalDeviceCount == rhs.physicalDeviceCount )
30144 && ( memcmp( physicalDevices, rhs.physicalDevices, VK_MAX_DEVICE_GROUP_SIZE_KHX * sizeof( PhysicalDevice ) ) == 0 )
30145 && ( subsetAllocation == rhs.subsetAllocation );
30146 }
30147
30148 bool operator!=( PhysicalDeviceGroupPropertiesKHX const& rhs ) const
30149 {
30150 return !operator==( rhs );
30151 }
30152
30153 private:
30154 StructureType sType;
30155
30156 public:
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060030157 void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070030158 uint32_t physicalDeviceCount;
30159 PhysicalDevice physicalDevices[VK_MAX_DEVICE_GROUP_SIZE_KHX];
30160 Bool32 subsetAllocation;
30161 };
30162 static_assert( sizeof( PhysicalDeviceGroupPropertiesKHX ) == sizeof( VkPhysicalDeviceGroupPropertiesKHX ), "struct and wrapper have different size!" );
30163
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030164#ifndef VULKAN_HPP_NO_SMART_HANDLE
30165 class DebugReportCallbackEXTDeleter;
30166 using UniqueDebugReportCallbackEXT = UniqueHandle<DebugReportCallbackEXT, DebugReportCallbackEXTDeleter>;
30167 class SurfaceKHRDeleter;
30168 using UniqueSurfaceKHR = UniqueHandle<SurfaceKHR, SurfaceKHRDeleter>;
30169#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30170
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030171 class Instance
30172 {
30173 public:
30174 Instance()
30175 : m_instance(VK_NULL_HANDLE)
30176 {}
30177
Mark Lobodzinskicd306ab2017-02-14 16:09:03 -070030178 Instance( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030179 : m_instance(VK_NULL_HANDLE)
30180 {}
30181
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030182 VULKAN_HPP_TYPESAFE_EXPLICIT Instance( VkInstance instance )
30183 : m_instance( instance )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030184 {}
30185
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070030186#if defined(VULKAN_HPP_TYPESAFE_CONVERSION)
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030187 Instance & operator=(VkInstance instance)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030188 {
30189 m_instance = instance;
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030190 return *this;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030191 }
30192#endif
30193
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030194 Instance & operator=( std::nullptr_t )
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030195 {
30196 m_instance = VK_NULL_HANDLE;
30197 return *this;
30198 }
30199
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030200 bool operator==( Instance const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060030201 {
30202 return m_instance == rhs.m_instance;
30203 }
30204
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030205 bool operator!=(Instance const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060030206 {
30207 return m_instance != rhs.m_instance;
30208 }
30209
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030210 bool operator<(Instance const & rhs ) const
Lenny Komowebf33162016-08-26 14:10:08 -060030211 {
30212 return m_instance < rhs.m_instance;
30213 }
30214
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030215 void destroy( const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030216#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030217 void destroy( Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030218#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30219
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030220 Result enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030221#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030222 template <typename Allocator = std::allocator<PhysicalDevice>>
30223 typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type enumeratePhysicalDevices() const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030224#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30225
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030226 PFN_vkVoidFunction getProcAddr( const char* pName ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030227#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030228 PFN_vkVoidFunction getProcAddr( const std::string & name ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030229#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30230
30231#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030232 Result createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030233#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030234 ResultValueType<SurfaceKHR>::type createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
30235#ifndef VULKAN_HPP_NO_SMART_HANDLE
30236 UniqueSurfaceKHR createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
30237#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030238#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030239#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030240
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030241 Result createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030242#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030243 ResultValueType<SurfaceKHR>::type createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
30244#ifndef VULKAN_HPP_NO_SMART_HANDLE
30245 UniqueSurfaceKHR createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
30246#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030247#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30248
30249#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030250 Result createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030251#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030252 ResultValueType<SurfaceKHR>::type createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
30253#ifndef VULKAN_HPP_NO_SMART_HANDLE
30254 UniqueSurfaceKHR createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
30255#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030256#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030257#endif /*VK_USE_PLATFORM_MIR_KHR*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030258
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030259 void destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030260#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030261 void destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030262#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30263
Mark Young39389872017-01-19 21:10:49 -070030264#ifdef VK_USE_PLATFORM_VI_NN
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030265 Result createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
30266#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30267 ResultValueType<SurfaceKHR>::type createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
30268#ifndef VULKAN_HPP_NO_SMART_HANDLE
30269 UniqueSurfaceKHR createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
30270#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30271#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young39389872017-01-19 21:10:49 -070030272#endif /*VK_USE_PLATFORM_VI_NN*/
30273
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030274#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030275 Result createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
30276#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30277 ResultValueType<SurfaceKHR>::type createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
30278#ifndef VULKAN_HPP_NO_SMART_HANDLE
30279 UniqueSurfaceKHR createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
30280#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30281#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030282#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
30283
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030284#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030285 Result createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
30286#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30287 ResultValueType<SurfaceKHR>::type createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
30288#ifndef VULKAN_HPP_NO_SMART_HANDLE
30289 UniqueSurfaceKHR createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
30290#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30291#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030292#endif /*VK_USE_PLATFORM_WIN32_KHR*/
30293
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030294#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030295 Result createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
30296#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30297 ResultValueType<SurfaceKHR>::type createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
30298#ifndef VULKAN_HPP_NO_SMART_HANDLE
30299 UniqueSurfaceKHR createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
30300#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30301#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030302#endif /*VK_USE_PLATFORM_XLIB_KHR*/
30303
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030304#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030305 Result createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
30306#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30307 ResultValueType<SurfaceKHR>::type createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
30308#ifndef VULKAN_HPP_NO_SMART_HANDLE
30309 UniqueSurfaceKHR createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
30310#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30311#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030312#endif /*VK_USE_PLATFORM_XCB_KHR*/
30313
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030314 Result createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030315#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030316 ResultValueType<DebugReportCallbackEXT>::type createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
30317#ifndef VULKAN_HPP_NO_SMART_HANDLE
30318 UniqueDebugReportCallbackEXT createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
30319#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030320#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30321
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030322 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030323#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030324 void destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator = nullptr ) const;
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030325#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30326
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030327 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 -060030328#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030329 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 -060030330#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30331
Mark Young0f183a82017-02-28 09:58:04 -070030332 Result enumeratePhysicalDeviceGroupsKHX( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ) const;
30333#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30334 template <typename Allocator = std::allocator<PhysicalDeviceGroupPropertiesKHX>>
30335 typename ResultValueType<std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator>>::type enumeratePhysicalDeviceGroupsKHX() const;
30336#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30337
30338#ifdef VK_USE_PLATFORM_IOS_MVK
30339 Result createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
30340#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30341 ResultValueType<SurfaceKHR>::type createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
30342#ifndef VULKAN_HPP_NO_SMART_HANDLE
30343 UniqueSurfaceKHR createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
30344#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30345#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30346#endif /*VK_USE_PLATFORM_IOS_MVK*/
30347
30348#ifdef VK_USE_PLATFORM_MACOS_MVK
30349 Result createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const;
30350#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30351 ResultValueType<SurfaceKHR>::type createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
30352#ifndef VULKAN_HPP_NO_SMART_HANDLE
30353 UniqueSurfaceKHR createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator = nullptr ) const;
30354#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30355#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30356#endif /*VK_USE_PLATFORM_MACOS_MVK*/
30357
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030358
30359
Mark Lobodzinskiaae0fa42017-02-17 09:01:48 -070030360 VULKAN_HPP_TYPESAFE_EXPLICIT operator VkInstance() const
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030361 {
30362 return m_instance;
30363 }
30364
30365 explicit operator bool() const
30366 {
30367 return m_instance != VK_NULL_HANDLE;
30368 }
30369
30370 bool operator!() const
30371 {
30372 return m_instance == VK_NULL_HANDLE;
30373 }
30374
30375 private:
30376 VkInstance m_instance;
30377 };
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030378
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030379 static_assert( sizeof( Instance ) == sizeof( VkInstance ), "handle and wrapper have different size!" );
30380
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030381#ifndef VULKAN_HPP_NO_SMART_HANDLE
30382 class DebugReportCallbackEXTDeleter
30383 {
30384 public:
30385 DebugReportCallbackEXTDeleter( Instance instance = Instance(), Optional<const AllocationCallbacks> allocator = nullptr )
30386 : m_instance( instance )
30387 , m_allocator( allocator )
30388 {}
30389
30390 void operator()( DebugReportCallbackEXT debugReportCallbackEXT )
30391 {
30392 m_instance.destroyDebugReportCallbackEXT( debugReportCallbackEXT, m_allocator );
30393 }
30394
30395 private:
30396 Instance m_instance;
30397 Optional<const AllocationCallbacks> m_allocator;
30398 };
30399
30400 class SurfaceKHRDeleter
30401 {
30402 public:
30403 SurfaceKHRDeleter( Instance instance = Instance(), Optional<const AllocationCallbacks> allocator = nullptr )
30404 : m_instance( instance )
30405 , m_allocator( allocator )
30406 {}
30407
30408 void operator()( SurfaceKHR surfaceKHR )
30409 {
30410 m_instance.destroySurfaceKHR( surfaceKHR, m_allocator );
30411 }
30412
30413 private:
30414 Instance m_instance;
30415 Optional<const AllocationCallbacks> m_allocator;
30416 };
30417#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30418
30419 VULKAN_HPP_INLINE void Instance::destroy( const AllocationCallbacks* pAllocator ) const
30420 {
30421 vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
30422 }
30423#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30424 VULKAN_HPP_INLINE void Instance::destroy( Optional<const AllocationCallbacks> allocator ) const
30425 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030426 vkDestroyInstance( m_instance, reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030427 }
30428#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30429
30430 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, PhysicalDevice* pPhysicalDevices ) const
30431 {
30432 return static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, pPhysicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( pPhysicalDevices ) ) );
30433 }
30434#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30435 template <typename Allocator>
30436 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDevice,Allocator>>::type Instance::enumeratePhysicalDevices() const
30437 {
30438 std::vector<PhysicalDevice,Allocator> physicalDevices;
30439 uint32_t physicalDeviceCount;
30440 Result result;
30441 do
30442 {
30443 result = static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, nullptr ) );
30444 if ( ( result == Result::eSuccess ) && physicalDeviceCount )
30445 {
30446 physicalDevices.resize( physicalDeviceCount );
30447 result = static_cast<Result>( vkEnumeratePhysicalDevices( m_instance, &physicalDeviceCount, reinterpret_cast<VkPhysicalDevice*>( physicalDevices.data() ) ) );
30448 }
30449 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030450 assert( physicalDeviceCount <= physicalDevices.size() );
30451 physicalDevices.resize( physicalDeviceCount );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030452 return createResultValue( result, physicalDevices, "vk::Instance::enumeratePhysicalDevices" );
30453 }
30454#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30455
30456 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const char* pName ) const
30457 {
30458 return vkGetInstanceProcAddr( m_instance, pName );
30459 }
30460#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30461 VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const std::string & name ) const
30462 {
30463 return vkGetInstanceProcAddr( m_instance, name.c_str() );
30464 }
30465#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30466
30467#ifdef VK_USE_PLATFORM_ANDROID_KHR
30468 VULKAN_HPP_INLINE Result Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
30469 {
30470 return static_cast<Result>( vkCreateAndroidSurfaceKHR( m_instance, reinterpret_cast<const VkAndroidSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
30471 }
30472#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30473 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
30474 {
30475 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030476 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 -070030477 return createResultValue( result, surface, "vk::Instance::createAndroidSurfaceKHR" );
30478 }
30479#ifndef VULKAN_HPP_NO_SMART_HANDLE
30480 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
30481 {
30482 SurfaceKHRDeleter deleter( *this, allocator );
30483 return UniqueSurfaceKHR( createAndroidSurfaceKHR( createInfo, allocator ), deleter );
30484 }
30485#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30486#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30487#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
30488
30489 VULKAN_HPP_INLINE Result Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
30490 {
30491 return static_cast<Result>( vkCreateDisplayPlaneSurfaceKHR( m_instance, reinterpret_cast<const VkDisplaySurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
30492 }
30493#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30494 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
30495 {
30496 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030497 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 -070030498 return createResultValue( result, surface, "vk::Instance::createDisplayPlaneSurfaceKHR" );
30499 }
30500#ifndef VULKAN_HPP_NO_SMART_HANDLE
30501 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
30502 {
30503 SurfaceKHRDeleter deleter( *this, allocator );
30504 return UniqueSurfaceKHR( createDisplayPlaneSurfaceKHR( createInfo, allocator ), deleter );
30505 }
30506#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30507#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30508
30509#ifdef VK_USE_PLATFORM_MIR_KHR
30510 VULKAN_HPP_INLINE Result Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
30511 {
30512 return static_cast<Result>( vkCreateMirSurfaceKHR( m_instance, reinterpret_cast<const VkMirSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
30513 }
30514#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30515 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMirSurfaceKHR( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
30516 {
30517 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030518 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 -070030519 return createResultValue( result, surface, "vk::Instance::createMirSurfaceKHR" );
30520 }
30521#ifndef VULKAN_HPP_NO_SMART_HANDLE
30522 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createMirSurfaceKHRUnique( const MirSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
30523 {
30524 SurfaceKHRDeleter deleter( *this, allocator );
30525 return UniqueSurfaceKHR( createMirSurfaceKHR( createInfo, allocator ), deleter );
30526 }
30527#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30528#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30529#endif /*VK_USE_PLATFORM_MIR_KHR*/
30530
30531 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, const AllocationCallbacks* pAllocator ) const
30532 {
30533 vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
30534 }
30535#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30536 VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( SurfaceKHR surface, Optional<const AllocationCallbacks> allocator ) const
30537 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030538 vkDestroySurfaceKHR( m_instance, static_cast<VkSurfaceKHR>( surface ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030539 }
30540#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30541
30542#ifdef VK_USE_PLATFORM_VI_NN
30543 VULKAN_HPP_INLINE Result Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
30544 {
30545 return static_cast<Result>( vkCreateViSurfaceNN( m_instance, reinterpret_cast<const VkViSurfaceCreateInfoNN*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
30546 }
30547#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30548 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator ) const
30549 {
30550 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030551 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 -070030552 return createResultValue( result, surface, "vk::Instance::createViSurfaceNN" );
30553 }
30554#ifndef VULKAN_HPP_NO_SMART_HANDLE
30555 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional<const AllocationCallbacks> allocator ) const
30556 {
30557 SurfaceKHRDeleter deleter( *this, allocator );
30558 return UniqueSurfaceKHR( createViSurfaceNN( createInfo, allocator ), deleter );
30559 }
30560#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30561#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30562#endif /*VK_USE_PLATFORM_VI_NN*/
30563
30564#ifdef VK_USE_PLATFORM_WAYLAND_KHR
30565 VULKAN_HPP_INLINE Result Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
30566 {
30567 return static_cast<Result>( vkCreateWaylandSurfaceKHR( m_instance, reinterpret_cast<const VkWaylandSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
30568 }
30569#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30570 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
30571 {
30572 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030573 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 -070030574 return createResultValue( result, surface, "vk::Instance::createWaylandSurfaceKHR" );
30575 }
30576#ifndef VULKAN_HPP_NO_SMART_HANDLE
30577 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
30578 {
30579 SurfaceKHRDeleter deleter( *this, allocator );
30580 return UniqueSurfaceKHR( createWaylandSurfaceKHR( createInfo, allocator ), deleter );
30581 }
30582#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30583#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30584#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
30585
30586#ifdef VK_USE_PLATFORM_WIN32_KHR
30587 VULKAN_HPP_INLINE Result Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
30588 {
30589 return static_cast<Result>( vkCreateWin32SurfaceKHR( m_instance, reinterpret_cast<const VkWin32SurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
30590 }
30591#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30592 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
30593 {
30594 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030595 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 -070030596 return createResultValue( result, surface, "vk::Instance::createWin32SurfaceKHR" );
30597 }
30598#ifndef VULKAN_HPP_NO_SMART_HANDLE
30599 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
30600 {
30601 SurfaceKHRDeleter deleter( *this, allocator );
30602 return UniqueSurfaceKHR( createWin32SurfaceKHR( createInfo, allocator ), deleter );
30603 }
30604#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30605#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30606#endif /*VK_USE_PLATFORM_WIN32_KHR*/
30607
30608#ifdef VK_USE_PLATFORM_XLIB_KHR
30609 VULKAN_HPP_INLINE Result Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
30610 {
30611 return static_cast<Result>( vkCreateXlibSurfaceKHR( m_instance, reinterpret_cast<const VkXlibSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
30612 }
30613#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30614 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
30615 {
30616 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030617 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 -070030618 return createResultValue( result, surface, "vk::Instance::createXlibSurfaceKHR" );
30619 }
30620#ifndef VULKAN_HPP_NO_SMART_HANDLE
30621 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
30622 {
30623 SurfaceKHRDeleter deleter( *this, allocator );
30624 return UniqueSurfaceKHR( createXlibSurfaceKHR( createInfo, allocator ), deleter );
30625 }
30626#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30627#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30628#endif /*VK_USE_PLATFORM_XLIB_KHR*/
30629
30630#ifdef VK_USE_PLATFORM_XCB_KHR
30631 VULKAN_HPP_INLINE Result Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
30632 {
30633 return static_cast<Result>( vkCreateXcbSurfaceKHR( m_instance, reinterpret_cast<const VkXcbSurfaceCreateInfoKHR*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
30634 }
30635#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30636 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
30637 {
30638 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030639 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 -070030640 return createResultValue( result, surface, "vk::Instance::createXcbSurfaceKHR" );
30641 }
30642#ifndef VULKAN_HPP_NO_SMART_HANDLE
30643 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional<const AllocationCallbacks> allocator ) const
30644 {
30645 SurfaceKHRDeleter deleter( *this, allocator );
30646 return UniqueSurfaceKHR( createXcbSurfaceKHR( createInfo, allocator ), deleter );
30647 }
30648#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30649#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30650#endif /*VK_USE_PLATFORM_XCB_KHR*/
30651
30652 VULKAN_HPP_INLINE Result Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT* pCreateInfo, const AllocationCallbacks* pAllocator, DebugReportCallbackEXT* pCallback ) const
30653 {
30654 return static_cast<Result>( vkCreateDebugReportCallbackEXT( m_instance, reinterpret_cast<const VkDebugReportCallbackCreateInfoEXT*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkDebugReportCallbackEXT*>( pCallback ) ) );
30655 }
30656#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30657 VULKAN_HPP_INLINE ResultValueType<DebugReportCallbackEXT>::type Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
30658 {
30659 DebugReportCallbackEXT callback;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030660 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 -070030661 return createResultValue( result, callback, "vk::Instance::createDebugReportCallbackEXT" );
30662 }
30663#ifndef VULKAN_HPP_NO_SMART_HANDLE
30664 VULKAN_HPP_INLINE UniqueDebugReportCallbackEXT Instance::createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional<const AllocationCallbacks> allocator ) const
30665 {
30666 DebugReportCallbackEXTDeleter deleter( *this, allocator );
30667 return UniqueDebugReportCallbackEXT( createDebugReportCallbackEXT( createInfo, allocator ), deleter );
30668 }
30669#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30670#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30671
30672 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, const AllocationCallbacks* pAllocator ) const
30673 {
30674 vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ) );
30675 }
30676#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30677 VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( DebugReportCallbackEXT callback, Optional<const AllocationCallbacks> allocator ) const
30678 {
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030679 vkDestroyDebugReportCallbackEXT( m_instance, static_cast<VkDebugReportCallbackEXT>( callback ), reinterpret_cast<const VkAllocationCallbacks*>( static_cast<const AllocationCallbacks*>( allocator ) ) );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030680 }
30681#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30682
30683 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
30684 {
30685 vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, pLayerPrefix, pMessage );
30686 }
30687#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30688 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
30689 {
30690#ifdef VULKAN_HPP_NO_EXCEPTIONS
30691 assert( layerPrefix.size() == message.size() );
30692#else
30693 if ( layerPrefix.size() != message.size() )
30694 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030695 throw LogicError( "vk::Instance::debugReportMessageEXT: layerPrefix.size() != message.size()" );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030696 }
30697#endif // VULKAN_HPP_NO_EXCEPTIONS
30698 vkDebugReportMessageEXT( m_instance, static_cast<VkDebugReportFlagsEXT>( flags ), static_cast<VkDebugReportObjectTypeEXT>( objectType ), object, location, messageCode, layerPrefix.c_str(), message.c_str() );
30699 }
30700#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
Mark Young0f183a82017-02-28 09:58:04 -070030701
30702 VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDeviceGroupsKHX( uint32_t* pPhysicalDeviceGroupCount, PhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties ) const
Lenny Komow68432d72016-09-29 14:16:59 -060030703 {
Mark Young0f183a82017-02-28 09:58:04 -070030704 return static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, pPhysicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupPropertiesKHX*>( pPhysicalDeviceGroupProperties ) ) );
30705 }
30706#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30707 template <typename Allocator>
30708 VULKAN_HPP_INLINE typename ResultValueType<std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator>>::type Instance::enumeratePhysicalDeviceGroupsKHX() const
30709 {
30710 std::vector<PhysicalDeviceGroupPropertiesKHX,Allocator> physicalDeviceGroupProperties;
30711 uint32_t physicalDeviceGroupCount;
30712 Result result;
30713 do
30714 {
30715 result = static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, &physicalDeviceGroupCount, nullptr ) );
30716 if ( ( result == Result::eSuccess ) && physicalDeviceGroupCount )
30717 {
30718 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
30719 result = static_cast<Result>( vkEnumeratePhysicalDeviceGroupsKHX( m_instance, &physicalDeviceGroupCount, reinterpret_cast<VkPhysicalDeviceGroupPropertiesKHX*>( physicalDeviceGroupProperties.data() ) ) );
30720 }
30721 } while ( result == Result::eIncomplete );
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030722 assert( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() );
30723 physicalDeviceGroupProperties.resize( physicalDeviceGroupCount );
Mark Young0f183a82017-02-28 09:58:04 -070030724 return createResultValue( result, physicalDeviceGroupProperties, "vk::Instance::enumeratePhysicalDeviceGroupsKHX" );
30725 }
30726#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30727
30728#ifdef VK_USE_PLATFORM_IOS_MVK
30729 VULKAN_HPP_INLINE Result Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
30730 {
30731 return static_cast<Result>( vkCreateIOSSurfaceMVK( m_instance, reinterpret_cast<const VkIOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
30732 }
30733#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30734 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
30735 {
30736 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030737 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 -070030738 return createResultValue( result, surface, "vk::Instance::createIOSSurfaceMVK" );
30739 }
30740#ifndef VULKAN_HPP_NO_SMART_HANDLE
30741 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
30742 {
30743 SurfaceKHRDeleter deleter( *this, allocator );
30744 return UniqueSurfaceKHR( createIOSSurfaceMVK( createInfo, allocator ), deleter );
30745 }
30746#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30747#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30748#endif /*VK_USE_PLATFORM_IOS_MVK*/
30749
30750#ifdef VK_USE_PLATFORM_MACOS_MVK
30751 VULKAN_HPP_INLINE Result Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK* pCreateInfo, const AllocationCallbacks* pAllocator, SurfaceKHR* pSurface ) const
30752 {
30753 return static_cast<Result>( vkCreateMacOSSurfaceMVK( m_instance, reinterpret_cast<const VkMacOSSurfaceCreateInfoMVK*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkSurfaceKHR*>( pSurface ) ) );
30754 }
30755#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
30756 VULKAN_HPP_INLINE ResultValueType<SurfaceKHR>::type Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
30757 {
30758 SurfaceKHR surface;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030759 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 -070030760 return createResultValue( result, surface, "vk::Instance::createMacOSSurfaceMVK" );
30761 }
30762#ifndef VULKAN_HPP_NO_SMART_HANDLE
30763 VULKAN_HPP_INLINE UniqueSurfaceKHR Instance::createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional<const AllocationCallbacks> allocator ) const
30764 {
30765 SurfaceKHRDeleter deleter( *this, allocator );
30766 return UniqueSurfaceKHR( createMacOSSurfaceMVK( createInfo, allocator ), deleter );
30767 }
30768#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30769#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30770#endif /*VK_USE_PLATFORM_MACOS_MVK*/
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030771
Mark Young0f183a82017-02-28 09:58:04 -070030772 struct DeviceGroupDeviceCreateInfoKHX
30773 {
30774 DeviceGroupDeviceCreateInfoKHX( uint32_t physicalDeviceCount_ = 0, const PhysicalDevice* pPhysicalDevices_ = nullptr )
30775 : sType( StructureType::eDeviceGroupDeviceCreateInfoKHX )
Lenny Komow68432d72016-09-29 14:16:59 -060030776 , pNext( nullptr )
Mark Young0f183a82017-02-28 09:58:04 -070030777 , physicalDeviceCount( physicalDeviceCount_ )
30778 , pPhysicalDevices( pPhysicalDevices_ )
Lenny Komow68432d72016-09-29 14:16:59 -060030779 {
30780 }
30781
Mark Young0f183a82017-02-28 09:58:04 -070030782 DeviceGroupDeviceCreateInfoKHX( VkDeviceGroupDeviceCreateInfoKHX const & rhs )
Lenny Komow68432d72016-09-29 14:16:59 -060030783 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030784 memcpy( this, &rhs, sizeof( DeviceGroupDeviceCreateInfoKHX ) );
Lenny Komow68432d72016-09-29 14:16:59 -060030785 }
30786
Mark Young0f183a82017-02-28 09:58:04 -070030787 DeviceGroupDeviceCreateInfoKHX& operator=( VkDeviceGroupDeviceCreateInfoKHX const & rhs )
Lenny Komow68432d72016-09-29 14:16:59 -060030788 {
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030789 memcpy( this, &rhs, sizeof( DeviceGroupDeviceCreateInfoKHX ) );
Lenny Komow68432d72016-09-29 14:16:59 -060030790 return *this;
30791 }
Mark Young0f183a82017-02-28 09:58:04 -070030792 DeviceGroupDeviceCreateInfoKHX& setPNext( const void* pNext_ )
Lenny Komow68432d72016-09-29 14:16:59 -060030793 {
30794 pNext = pNext_;
30795 return *this;
30796 }
30797
Mark Young0f183a82017-02-28 09:58:04 -070030798 DeviceGroupDeviceCreateInfoKHX& setPhysicalDeviceCount( uint32_t physicalDeviceCount_ )
Lenny Komow68432d72016-09-29 14:16:59 -060030799 {
Mark Young0f183a82017-02-28 09:58:04 -070030800 physicalDeviceCount = physicalDeviceCount_;
Lenny Komow68432d72016-09-29 14:16:59 -060030801 return *this;
30802 }
30803
Mark Young0f183a82017-02-28 09:58:04 -070030804 DeviceGroupDeviceCreateInfoKHX& setPPhysicalDevices( const PhysicalDevice* pPhysicalDevices_ )
Lenny Komow68432d72016-09-29 14:16:59 -060030805 {
Mark Young0f183a82017-02-28 09:58:04 -070030806 pPhysicalDevices = pPhysicalDevices_;
Lenny Komow68432d72016-09-29 14:16:59 -060030807 return *this;
30808 }
30809
Mark Young0f183a82017-02-28 09:58:04 -070030810 operator const VkDeviceGroupDeviceCreateInfoKHX&() const
Lenny Komow68432d72016-09-29 14:16:59 -060030811 {
Mark Young0f183a82017-02-28 09:58:04 -070030812 return *reinterpret_cast<const VkDeviceGroupDeviceCreateInfoKHX*>(this);
Lenny Komow68432d72016-09-29 14:16:59 -060030813 }
30814
Mark Young0f183a82017-02-28 09:58:04 -070030815 bool operator==( DeviceGroupDeviceCreateInfoKHX const& rhs ) const
Lenny Komow68432d72016-09-29 14:16:59 -060030816 {
30817 return ( sType == rhs.sType )
30818 && ( pNext == rhs.pNext )
Mark Young0f183a82017-02-28 09:58:04 -070030819 && ( physicalDeviceCount == rhs.physicalDeviceCount )
30820 && ( pPhysicalDevices == rhs.pPhysicalDevices );
Lenny Komow68432d72016-09-29 14:16:59 -060030821 }
30822
Mark Young0f183a82017-02-28 09:58:04 -070030823 bool operator!=( DeviceGroupDeviceCreateInfoKHX const& rhs ) const
Lenny Komow68432d72016-09-29 14:16:59 -060030824 {
30825 return !operator==( rhs );
30826 }
30827
30828 private:
30829 StructureType sType;
30830
30831 public:
30832 const void* pNext;
Mark Young0f183a82017-02-28 09:58:04 -070030833 uint32_t physicalDeviceCount;
30834 const PhysicalDevice* pPhysicalDevices;
Lenny Komow68432d72016-09-29 14:16:59 -060030835 };
Mark Young0f183a82017-02-28 09:58:04 -070030836 static_assert( sizeof( DeviceGroupDeviceCreateInfoKHX ) == sizeof( VkDeviceGroupDeviceCreateInfoKHX ), "struct and wrapper have different size!" );
Lenny Komow68432d72016-09-29 14:16:59 -060030837
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030838#ifndef VULKAN_HPP_NO_SMART_HANDLE
30839 class InstanceDeleter;
30840 using UniqueInstance = UniqueHandle<Instance, InstanceDeleter>;
30841#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30842
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030843 Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030844#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030845 ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030846#ifndef VULKAN_HPP_NO_SMART_HANDLE
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060030847 UniqueInstance createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator = nullptr );
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030848#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30849#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30850
30851#ifndef VULKAN_HPP_NO_SMART_HANDLE
30852 class InstanceDeleter
30853 {
30854 public:
30855 InstanceDeleter( Optional<const AllocationCallbacks> allocator = nullptr )
30856 : m_allocator( allocator )
30857 {}
30858
30859 void operator()( Instance instance )
30860 {
30861 instance.destroy( m_allocator );
30862 }
30863
30864 private:
30865 Optional<const AllocationCallbacks> m_allocator;
30866 };
30867#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
30868
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030869 VULKAN_HPP_INLINE Result createInstance( const InstanceCreateInfo* pCreateInfo, const AllocationCallbacks* pAllocator, Instance* pInstance )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030870 {
30871 return static_cast<Result>( vkCreateInstance( reinterpret_cast<const VkInstanceCreateInfo*>( pCreateInfo ), reinterpret_cast<const VkAllocationCallbacks*>( pAllocator ), reinterpret_cast<VkInstance*>( pInstance ) ) );
30872 }
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030873#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030874 VULKAN_HPP_INLINE ResultValueType<Instance>::type createInstance( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator )
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030875 {
30876 Instance instance;
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030877 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 -060030878 return createResultValue( result, instance, "vk::createInstance" );
30879 }
Mark Lobodzinski36c33862017-02-13 10:15:53 -070030880#ifndef VULKAN_HPP_NO_SMART_HANDLE
30881 VULKAN_HPP_INLINE UniqueInstance createInstanceUnique( const InstanceCreateInfo & createInfo, Optional<const AllocationCallbacks> allocator )
30882 {
30883 InstanceDeleter deleter( allocator );
30884 return UniqueInstance( createInstance( createInfo, allocator ), deleter );
30885 }
30886#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030887#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/
30888
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060030889
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060030890 template <> bool isStructureChainValid<PresentInfoKHR, DisplayPresentInfoKHR>() { return true; }
30891 template <> bool isStructureChainValid<ImageCreateInfo, DedicatedAllocationImageCreateInfoNV>() { return true; }
30892 template <> bool isStructureChainValid<BufferCreateInfo, DedicatedAllocationBufferCreateInfoNV>() { return true; }
30893 template <> bool isStructureChainValid<MemoryAllocateInfo, DedicatedAllocationMemoryAllocateInfoNV>() { return true; }
30894#ifdef VK_USE_PLATFORM_WIN32_KHR
30895 template <> bool isStructureChainValid<MemoryAllocateInfo, ExportMemoryWin32HandleInfoNV>() { return true; }
30896#endif /*VK_USE_PLATFORM_WIN32_KHR*/
30897#ifdef VK_USE_PLATFORM_WIN32_KHR
30898 template <> bool isStructureChainValid<SubmitInfo, Win32KeyedMutexAcquireReleaseInfoNV>() { return true; }
30899#endif /*VK_USE_PLATFORM_WIN32_KHR*/
30900 template <> bool isStructureChainValid<DeviceCreateInfo, PhysicalDeviceFeatures2KHR>() { return true; }
30901 template <> bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDevicePushDescriptorPropertiesKHR>() { return true; }
30902 template <> bool isStructureChainValid<PresentInfoKHR, PresentRegionsKHR>() { return true; }
30903 template <> bool isStructureChainValid<PhysicalDeviceFeatures2KHR, PhysicalDeviceVariablePointerFeaturesKHR>() { return true; }
30904 template <> bool isStructureChainValid<DeviceCreateInfo, PhysicalDeviceVariablePointerFeaturesKHR>() { return true; }
30905 template <> bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceIDPropertiesKHR>() { return true; }
30906#ifdef VK_USE_PLATFORM_WIN32_KHR
30907 template <> bool isStructureChainValid<MemoryAllocateInfo, ExportMemoryWin32HandleInfoKHR>() { return true; }
30908#endif /*VK_USE_PLATFORM_WIN32_KHR*/
30909#ifdef VK_USE_PLATFORM_WIN32_KHR
30910 template <> bool isStructureChainValid<SubmitInfo, Win32KeyedMutexAcquireReleaseInfoKHR>() { return true; }
30911#endif /*VK_USE_PLATFORM_WIN32_KHR*/
30912#ifdef VK_USE_PLATFORM_WIN32_KHR
30913 template <> bool isStructureChainValid<SemaphoreCreateInfo, ExportSemaphoreWin32HandleInfoKHR>() { return true; }
30914#endif /*VK_USE_PLATFORM_WIN32_KHR*/
30915#ifdef VK_USE_PLATFORM_WIN32_KHR
30916 template <> bool isStructureChainValid<SubmitInfo, D3D12FenceSubmitInfoKHR>() { return true; }
30917#endif /*VK_USE_PLATFORM_WIN32_KHR*/
30918#ifdef VK_USE_PLATFORM_WIN32_KHR
30919 template <> bool isStructureChainValid<FenceCreateInfo, ExportFenceWin32HandleInfoKHR>() { return true; }
30920#endif /*VK_USE_PLATFORM_WIN32_KHR*/
30921 template <> bool isStructureChainValid<PhysicalDeviceFeatures2KHR, PhysicalDeviceMultiviewFeaturesKHX>() { return true; }
30922 template <> bool isStructureChainValid<DeviceCreateInfo, PhysicalDeviceMultiviewFeaturesKHX>() { return true; }
30923 template <> bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceMultiviewPropertiesKHX>() { return true; }
30924 template <> bool isStructureChainValid<RenderPassCreateInfo, RenderPassMultiviewCreateInfoKHX>() { return true; }
30925 template <> bool isStructureChainValid<RenderPassBeginInfo, DeviceGroupRenderPassBeginInfoKHX>() { return true; }
30926 template <> bool isStructureChainValid<CommandBufferBeginInfo, DeviceGroupCommandBufferBeginInfoKHX>() { return true; }
30927 template <> bool isStructureChainValid<SubmitInfo, DeviceGroupSubmitInfoKHX>() { return true; }
30928 template <> bool isStructureChainValid<BindSparseInfo, DeviceGroupBindSparseInfoKHX>() { return true; }
30929 template <> bool isStructureChainValid<ImageCreateInfo, ImageSwapchainCreateInfoKHX>() { return true; }
30930 template <> bool isStructureChainValid<BindImageMemoryInfoKHX, BindImageMemorySwapchainInfoKHX>() { return true; }
30931 template <> bool isStructureChainValid<PresentInfoKHR, PresentTimesInfoGOOGLE>() { return true; }
30932 template <> bool isStructureChainValid<PipelineViewportStateCreateInfo, PipelineViewportWScalingStateCreateInfoNV>() { return true; }
30933 template <> bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceDiscardRectanglePropertiesEXT>() { return true; }
30934 template <> bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX>() { return true; }
30935 template <> bool isStructureChainValid<PhysicalDeviceFeatures2KHR, PhysicalDevice16BitStorageFeaturesKHR>() { return true; }
30936 template <> bool isStructureChainValid<DeviceCreateInfo, PhysicalDevice16BitStorageFeaturesKHR>() { return true; }
30937 template <> bool isStructureChainValid<MemoryRequirements2KHR, MemoryDedicatedRequirementsKHR>() { return true; }
30938 template <> bool isStructureChainValid<MemoryAllocateInfo, MemoryDedicatedAllocateInfoKHR>() { return true; }
30939 template <> bool isStructureChainValid<ImageFormatProperties2KHR, TextureLODGatherFormatPropertiesAMD>() { return true; }
30940 template <> bool isStructureChainValid<PipelineMultisampleStateCreateInfo, PipelineCoverageToColorStateCreateInfoNV>() { return true; }
30941 template <> bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceSamplerFilterMinmaxPropertiesEXT>() { return true; }
30942 template <> bool isStructureChainValid<PhysicalDeviceFeatures2KHR, PhysicalDeviceBlendOperationAdvancedFeaturesEXT>() { return true; }
30943 template <> bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceBlendOperationAdvancedPropertiesEXT>() { return true; }
30944 template <> bool isStructureChainValid<ShaderModuleCreateInfo, ShaderModuleValidationCacheCreateInfoEXT>() { return true; }
30945 template <> bool isStructureChainValid<SurfaceCapabilities2KHR, SharedPresentSurfaceCapabilitiesKHR>() { return true; }
30946 template <> bool isStructureChainValid<ImageMemoryBarrier, SampleLocationsInfoEXT>() { return true; }
30947 template <> bool isStructureChainValid<RenderPassBeginInfo, RenderPassSampleLocationsBeginInfoEXT>() { return true; }
30948 template <> bool isStructureChainValid<PipelineMultisampleStateCreateInfo, PipelineSampleLocationsStateCreateInfoEXT>() { return true; }
30949 template <> bool isStructureChainValid<PhysicalDeviceProperties2KHR, PhysicalDeviceSampleLocationsPropertiesEXT>() { return true; }
30950 template <> bool isStructureChainValid<InstanceCreateInfo, DebugReportCallbackCreateInfoEXT>() { return true; }
30951 template <> bool isStructureChainValid<PipelineRasterizationStateCreateInfo, PipelineRasterizationStateRasterizationOrderAMD>() { return true; }
30952 template <> bool isStructureChainValid<ImageCreateInfo, ExternalMemoryImageCreateInfoNV>() { return true; }
30953 template <> bool isStructureChainValid<MemoryAllocateInfo, ExportMemoryAllocateInfoNV>() { return true; }
30954#ifdef VK_USE_PLATFORM_WIN32_KHR
30955 template <> bool isStructureChainValid<MemoryAllocateInfo, ImportMemoryWin32HandleInfoNV>() { return true; }
30956#endif /*VK_USE_PLATFORM_WIN32_KHR*/
30957 template <> bool isStructureChainValid<InstanceCreateInfo, ValidationFlagsEXT>() { return true; }
30958 template <> bool isStructureChainValid<PhysicalDeviceImageFormatInfo2KHR, PhysicalDeviceExternalImageFormatInfoKHR>() { return true; }
30959 template <> bool isStructureChainValid<ImageCreateInfo, ExternalMemoryImageCreateInfoKHR>() { return true; }
30960 template <> bool isStructureChainValid<BufferCreateInfo, ExternalMemoryBufferCreateInfoKHR>() { return true; }
30961 template <> bool isStructureChainValid<MemoryAllocateInfo, ExportMemoryAllocateInfoKHR>() { return true; }
30962#ifdef VK_USE_PLATFORM_WIN32_KHR
30963 template <> bool isStructureChainValid<MemoryAllocateInfo, ImportMemoryWin32HandleInfoKHR>() { return true; }
30964#endif /*VK_USE_PLATFORM_WIN32_KHR*/
30965 template <> bool isStructureChainValid<MemoryAllocateInfo, ImportMemoryFdInfoKHR>() { return true; }
30966 template <> bool isStructureChainValid<ImageFormatProperties2KHR, ExternalImageFormatPropertiesKHR>() { return true; }
30967 template <> bool isStructureChainValid<SemaphoreCreateInfo, ExportSemaphoreCreateInfoKHR>() { return true; }
30968 template <> bool isStructureChainValid<FenceCreateInfo, ExportFenceCreateInfoKHR>() { return true; }
30969 template <> bool isStructureChainValid<SwapchainCreateInfoKHR, SwapchainCounterCreateInfoEXT>() { return true; }
30970 template <> bool isStructureChainValid<MemoryAllocateInfo, MemoryAllocateFlagsInfoKHX>() { return true; }
30971 template <> bool isStructureChainValid<PresentInfoKHR, DeviceGroupPresentInfoKHX>() { return true; }
30972 template <> bool isStructureChainValid<SwapchainCreateInfoKHR, DeviceGroupSwapchainCreateInfoKHX>() { return true; }
30973 template <> bool isStructureChainValid<PipelineViewportStateCreateInfo, PipelineViewportSwizzleStateCreateInfoNV>() { return true; }
30974 template <> bool isStructureChainValid<GraphicsPipelineCreateInfo, PipelineDiscardRectangleStateCreateInfoEXT>() { return true; }
30975 template <> bool isStructureChainValid<SamplerCreateInfo, SamplerReductionModeCreateInfoEXT>() { return true; }
30976 template <> bool isStructureChainValid<PipelineColorBlendStateCreateInfo, PipelineColorBlendAdvancedStateCreateInfoEXT>() { return true; }
30977 template <> bool isStructureChainValid<PipelineMultisampleStateCreateInfo, PipelineCoverageModulationStateCreateInfoNV>() { return true; }
30978 template <> bool isStructureChainValid<DeviceCreateInfo, DeviceGroupDeviceCreateInfoKHX>() { return true; }
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030979 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030980 {
30981 return "(void)";
30982 }
30983
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030984 VULKAN_HPP_INLINE std::string to_string(FramebufferCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030985 {
30986 return "{}";
30987 }
30988
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030989 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030990 {
30991 return "(void)";
30992 }
30993
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030994 VULKAN_HPP_INLINE std::string to_string(QueryPoolCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060030995 {
30996 return "{}";
30997 }
30998
Mark Lobodzinski2d589822016-12-12 09:44:34 -070030999 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031000 {
31001 return "(void)";
31002 }
31003
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031004 VULKAN_HPP_INLINE std::string to_string(RenderPassCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031005 {
31006 return "{}";
31007 }
31008
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031009 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031010 {
31011 return "(void)";
31012 }
31013
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031014 VULKAN_HPP_INLINE std::string to_string(SamplerCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031015 {
31016 return "{}";
31017 }
31018
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031019 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031020 {
31021 return "(void)";
31022 }
31023
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031024 VULKAN_HPP_INLINE std::string to_string(PipelineLayoutCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031025 {
31026 return "{}";
31027 }
31028
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031029 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031030 {
31031 return "(void)";
31032 }
31033
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031034 VULKAN_HPP_INLINE std::string to_string(PipelineCacheCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031035 {
31036 return "{}";
31037 }
31038
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031039 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031040 {
31041 return "(void)";
31042 }
31043
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031044 VULKAN_HPP_INLINE std::string to_string(PipelineDepthStencilStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031045 {
31046 return "{}";
31047 }
31048
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031049 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031050 {
31051 return "(void)";
31052 }
31053
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031054 VULKAN_HPP_INLINE std::string to_string(PipelineDynamicStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031055 {
31056 return "{}";
31057 }
31058
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031059 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031060 {
31061 return "(void)";
31062 }
31063
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031064 VULKAN_HPP_INLINE std::string to_string(PipelineColorBlendStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031065 {
31066 return "{}";
31067 }
31068
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031069 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031070 {
31071 return "(void)";
31072 }
31073
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031074 VULKAN_HPP_INLINE std::string to_string(PipelineMultisampleStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031075 {
31076 return "{}";
31077 }
31078
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031079 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031080 {
31081 return "(void)";
31082 }
31083
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031084 VULKAN_HPP_INLINE std::string to_string(PipelineRasterizationStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031085 {
31086 return "{}";
31087 }
31088
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031089 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031090 {
31091 return "(void)";
31092 }
31093
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031094 VULKAN_HPP_INLINE std::string to_string(PipelineViewportStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031095 {
31096 return "{}";
31097 }
31098
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031099 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031100 {
31101 return "(void)";
31102 }
31103
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031104 VULKAN_HPP_INLINE std::string to_string(PipelineTessellationStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031105 {
31106 return "{}";
31107 }
31108
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031109 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031110 {
31111 return "(void)";
31112 }
31113
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031114 VULKAN_HPP_INLINE std::string to_string(PipelineInputAssemblyStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031115 {
31116 return "{}";
31117 }
31118
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031119 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031120 {
31121 return "(void)";
31122 }
31123
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031124 VULKAN_HPP_INLINE std::string to_string(PipelineVertexInputStateCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031125 {
31126 return "{}";
31127 }
31128
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031129 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031130 {
31131 return "(void)";
31132 }
31133
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031134 VULKAN_HPP_INLINE std::string to_string(PipelineShaderStageCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031135 {
31136 return "{}";
31137 }
31138
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031139 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031140 {
31141 return "(void)";
31142 }
31143
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031144 VULKAN_HPP_INLINE std::string to_string(BufferViewCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031145 {
31146 return "{}";
31147 }
31148
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031149 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031150 {
31151 return "(void)";
31152 }
31153
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031154 VULKAN_HPP_INLINE std::string to_string(InstanceCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031155 {
31156 return "{}";
31157 }
31158
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031159 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031160 {
31161 return "(void)";
31162 }
31163
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031164 VULKAN_HPP_INLINE std::string to_string(DeviceCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031165 {
31166 return "{}";
31167 }
31168
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031169 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031170 {
31171 return "(void)";
31172 }
31173
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031174 VULKAN_HPP_INLINE std::string to_string(DeviceQueueCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031175 {
31176 return "{}";
31177 }
31178
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031179 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031180 {
31181 return "(void)";
31182 }
31183
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031184 VULKAN_HPP_INLINE std::string to_string(ImageViewCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031185 {
31186 return "{}";
31187 }
31188
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031189 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031190 {
31191 return "(void)";
31192 }
31193
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031194 VULKAN_HPP_INLINE std::string to_string(SemaphoreCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031195 {
31196 return "{}";
31197 }
31198
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031199 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031200 {
31201 return "(void)";
31202 }
31203
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031204 VULKAN_HPP_INLINE std::string to_string(ShaderModuleCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031205 {
31206 return "{}";
31207 }
31208
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031209 VULKAN_HPP_INLINE std::string to_string(EventCreateFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031210 {
31211 return "(void)";
31212 }
31213
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031214 VULKAN_HPP_INLINE std::string to_string(EventCreateFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031215 {
31216 return "{}";
31217 }
31218
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031219 VULKAN_HPP_INLINE std::string to_string(MemoryMapFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031220 {
31221 return "(void)";
31222 }
31223
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031224 VULKAN_HPP_INLINE std::string to_string(MemoryMapFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031225 {
31226 return "{}";
31227 }
31228
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031229 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlagBits)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031230 {
31231 return "(void)";
31232 }
31233
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031234 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolResetFlags)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031235 {
31236 return "{}";
31237 }
31238
Mark Young0f183a82017-02-28 09:58:04 -070031239 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031240 {
31241 return "(void)";
31242 }
31243
Mark Young0f183a82017-02-28 09:58:04 -070031244 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031245 {
31246 return "{}";
31247 }
31248
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031249 VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031250 {
31251 return "(void)";
31252 }
31253
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031254 VULKAN_HPP_INLINE std::string to_string(DisplayModeCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031255 {
31256 return "{}";
31257 }
31258
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031259 VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031260 {
31261 return "(void)";
31262 }
31263
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031264 VULKAN_HPP_INLINE std::string to_string(DisplaySurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031265 {
31266 return "{}";
31267 }
31268
31269#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031270 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031271 {
31272 return "(void)";
31273 }
31274#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
31275
31276#ifdef VK_USE_PLATFORM_ANDROID_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031277 VULKAN_HPP_INLINE std::string to_string(AndroidSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031278 {
31279 return "{}";
31280 }
31281#endif /*VK_USE_PLATFORM_ANDROID_KHR*/
31282
31283#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031284 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031285 {
31286 return "(void)";
31287 }
31288#endif /*VK_USE_PLATFORM_MIR_KHR*/
31289
31290#ifdef VK_USE_PLATFORM_MIR_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031291 VULKAN_HPP_INLINE std::string to_string(MirSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031292 {
31293 return "{}";
31294 }
31295#endif /*VK_USE_PLATFORM_MIR_KHR*/
31296
Mark Young39389872017-01-19 21:10:49 -070031297#ifdef VK_USE_PLATFORM_VI_NN
31298 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagBitsNN)
31299 {
31300 return "(void)";
31301 }
31302#endif /*VK_USE_PLATFORM_VI_NN*/
31303
31304#ifdef VK_USE_PLATFORM_VI_NN
31305 VULKAN_HPP_INLINE std::string to_string(ViSurfaceCreateFlagsNN)
31306 {
31307 return "{}";
31308 }
31309#endif /*VK_USE_PLATFORM_VI_NN*/
31310
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031311#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031312 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031313 {
31314 return "(void)";
31315 }
31316#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
31317
31318#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031319 VULKAN_HPP_INLINE std::string to_string(WaylandSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031320 {
31321 return "{}";
31322 }
31323#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/
31324
31325#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031326 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031327 {
31328 return "(void)";
31329 }
31330#endif /*VK_USE_PLATFORM_WIN32_KHR*/
31331
31332#ifdef VK_USE_PLATFORM_WIN32_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031333 VULKAN_HPP_INLINE std::string to_string(Win32SurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031334 {
31335 return "{}";
31336 }
31337#endif /*VK_USE_PLATFORM_WIN32_KHR*/
31338
31339#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031340 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031341 {
31342 return "(void)";
31343 }
31344#endif /*VK_USE_PLATFORM_XLIB_KHR*/
31345
31346#ifdef VK_USE_PLATFORM_XLIB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031347 VULKAN_HPP_INLINE std::string to_string(XlibSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031348 {
31349 return "{}";
31350 }
31351#endif /*VK_USE_PLATFORM_XLIB_KHR*/
31352
31353#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031354 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagBitsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031355 {
31356 return "(void)";
31357 }
31358#endif /*VK_USE_PLATFORM_XCB_KHR*/
31359
31360#ifdef VK_USE_PLATFORM_XCB_KHR
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031361 VULKAN_HPP_INLINE std::string to_string(XcbSurfaceCreateFlagsKHR)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031362 {
31363 return "{}";
31364 }
31365#endif /*VK_USE_PLATFORM_XCB_KHR*/
31366
Mark Young0f183a82017-02-28 09:58:04 -070031367#ifdef VK_USE_PLATFORM_IOS_MVK
31368 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagBitsMVK)
31369 {
31370 return "(void)";
31371 }
31372#endif /*VK_USE_PLATFORM_IOS_MVK*/
31373
31374#ifdef VK_USE_PLATFORM_IOS_MVK
31375 VULKAN_HPP_INLINE std::string to_string(IOSSurfaceCreateFlagsMVK)
31376 {
31377 return "{}";
31378 }
31379#endif /*VK_USE_PLATFORM_IOS_MVK*/
31380
31381#ifdef VK_USE_PLATFORM_MACOS_MVK
31382 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagBitsMVK)
31383 {
31384 return "(void)";
31385 }
31386#endif /*VK_USE_PLATFORM_MACOS_MVK*/
31387
31388#ifdef VK_USE_PLATFORM_MACOS_MVK
31389 VULKAN_HPP_INLINE std::string to_string(MacOSSurfaceCreateFlagsMVK)
31390 {
31391 return "{}";
31392 }
31393#endif /*VK_USE_PLATFORM_MACOS_MVK*/
31394
Mark Young39389872017-01-19 21:10:49 -070031395 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagBitsKHR)
31396 {
31397 return "(void)";
31398 }
31399
31400 VULKAN_HPP_INLINE std::string to_string(CommandPoolTrimFlagsKHR)
31401 {
31402 return "{}";
31403 }
31404
Mark Young0f183a82017-02-28 09:58:04 -070031405 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagBitsNV)
31406 {
31407 return "(void)";
31408 }
31409
31410 VULKAN_HPP_INLINE std::string to_string(PipelineViewportSwizzleStateCreateFlagsNV)
31411 {
31412 return "{}";
31413 }
31414
31415 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagBitsEXT)
31416 {
31417 return "(void)";
31418 }
31419
31420 VULKAN_HPP_INLINE std::string to_string(PipelineDiscardRectangleStateCreateFlagsEXT)
31421 {
31422 return "{}";
31423 }
31424
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060031425 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageToColorStateCreateFlagBitsNV)
31426 {
31427 return "(void)";
31428 }
31429
31430 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageToColorStateCreateFlagsNV)
31431 {
31432 return "{}";
31433 }
31434
31435 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageModulationStateCreateFlagBitsNV)
31436 {
31437 return "(void)";
31438 }
31439
31440 VULKAN_HPP_INLINE std::string to_string(PipelineCoverageModulationStateCreateFlagsNV)
31441 {
31442 return "{}";
31443 }
31444
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060031445 VULKAN_HPP_INLINE std::string to_string(ValidationCacheCreateFlagBitsEXT)
31446 {
31447 return "(void)";
31448 }
31449
31450 VULKAN_HPP_INLINE std::string to_string(ValidationCacheCreateFlagsEXT)
31451 {
31452 return "{}";
31453 }
31454
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031455 VULKAN_HPP_INLINE std::string to_string(ImageLayout value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031456 {
31457 switch (value)
31458 {
31459 case ImageLayout::eUndefined: return "Undefined";
31460 case ImageLayout::eGeneral: return "General";
31461 case ImageLayout::eColorAttachmentOptimal: return "ColorAttachmentOptimal";
31462 case ImageLayout::eDepthStencilAttachmentOptimal: return "DepthStencilAttachmentOptimal";
31463 case ImageLayout::eDepthStencilReadOnlyOptimal: return "DepthStencilReadOnlyOptimal";
31464 case ImageLayout::eShaderReadOnlyOptimal: return "ShaderReadOnlyOptimal";
31465 case ImageLayout::eTransferSrcOptimal: return "TransferSrcOptimal";
31466 case ImageLayout::eTransferDstOptimal: return "TransferDstOptimal";
31467 case ImageLayout::ePreinitialized: return "Preinitialized";
31468 case ImageLayout::ePresentSrcKHR: return "PresentSrcKHR";
Mark Lobodzinski54385432017-05-15 10:27:52 -060031469 case ImageLayout::eSharedPresentKHR: return "SharedPresentKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031470 default: return "invalid";
31471 }
31472 }
31473
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031474 VULKAN_HPP_INLINE std::string to_string(AttachmentLoadOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031475 {
31476 switch (value)
31477 {
31478 case AttachmentLoadOp::eLoad: return "Load";
31479 case AttachmentLoadOp::eClear: return "Clear";
31480 case AttachmentLoadOp::eDontCare: return "DontCare";
31481 default: return "invalid";
31482 }
31483 }
31484
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031485 VULKAN_HPP_INLINE std::string to_string(AttachmentStoreOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031486 {
31487 switch (value)
31488 {
31489 case AttachmentStoreOp::eStore: return "Store";
31490 case AttachmentStoreOp::eDontCare: return "DontCare";
31491 default: return "invalid";
31492 }
31493 }
31494
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031495 VULKAN_HPP_INLINE std::string to_string(ImageType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031496 {
31497 switch (value)
31498 {
31499 case ImageType::e1D: return "1D";
31500 case ImageType::e2D: return "2D";
31501 case ImageType::e3D: return "3D";
31502 default: return "invalid";
31503 }
31504 }
31505
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031506 VULKAN_HPP_INLINE std::string to_string(ImageTiling value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031507 {
31508 switch (value)
31509 {
31510 case ImageTiling::eOptimal: return "Optimal";
31511 case ImageTiling::eLinear: return "Linear";
31512 default: return "invalid";
31513 }
31514 }
31515
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031516 VULKAN_HPP_INLINE std::string to_string(ImageViewType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031517 {
31518 switch (value)
31519 {
31520 case ImageViewType::e1D: return "1D";
31521 case ImageViewType::e2D: return "2D";
31522 case ImageViewType::e3D: return "3D";
31523 case ImageViewType::eCube: return "Cube";
31524 case ImageViewType::e1DArray: return "1DArray";
31525 case ImageViewType::e2DArray: return "2DArray";
31526 case ImageViewType::eCubeArray: return "CubeArray";
31527 default: return "invalid";
31528 }
31529 }
31530
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031531 VULKAN_HPP_INLINE std::string to_string(CommandBufferLevel value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031532 {
31533 switch (value)
31534 {
31535 case CommandBufferLevel::ePrimary: return "Primary";
31536 case CommandBufferLevel::eSecondary: return "Secondary";
31537 default: return "invalid";
31538 }
31539 }
31540
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031541 VULKAN_HPP_INLINE std::string to_string(ComponentSwizzle value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031542 {
31543 switch (value)
31544 {
31545 case ComponentSwizzle::eIdentity: return "Identity";
31546 case ComponentSwizzle::eZero: return "Zero";
31547 case ComponentSwizzle::eOne: return "One";
31548 case ComponentSwizzle::eR: return "R";
31549 case ComponentSwizzle::eG: return "G";
31550 case ComponentSwizzle::eB: return "B";
31551 case ComponentSwizzle::eA: return "A";
31552 default: return "invalid";
31553 }
31554 }
31555
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031556 VULKAN_HPP_INLINE std::string to_string(DescriptorType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031557 {
31558 switch (value)
31559 {
31560 case DescriptorType::eSampler: return "Sampler";
31561 case DescriptorType::eCombinedImageSampler: return "CombinedImageSampler";
31562 case DescriptorType::eSampledImage: return "SampledImage";
31563 case DescriptorType::eStorageImage: return "StorageImage";
31564 case DescriptorType::eUniformTexelBuffer: return "UniformTexelBuffer";
31565 case DescriptorType::eStorageTexelBuffer: return "StorageTexelBuffer";
31566 case DescriptorType::eUniformBuffer: return "UniformBuffer";
31567 case DescriptorType::eStorageBuffer: return "StorageBuffer";
31568 case DescriptorType::eUniformBufferDynamic: return "UniformBufferDynamic";
31569 case DescriptorType::eStorageBufferDynamic: return "StorageBufferDynamic";
31570 case DescriptorType::eInputAttachment: return "InputAttachment";
31571 default: return "invalid";
31572 }
31573 }
31574
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031575 VULKAN_HPP_INLINE std::string to_string(QueryType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031576 {
31577 switch (value)
31578 {
31579 case QueryType::eOcclusion: return "Occlusion";
31580 case QueryType::ePipelineStatistics: return "PipelineStatistics";
31581 case QueryType::eTimestamp: return "Timestamp";
31582 default: return "invalid";
31583 }
31584 }
31585
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031586 VULKAN_HPP_INLINE std::string to_string(BorderColor value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031587 {
31588 switch (value)
31589 {
31590 case BorderColor::eFloatTransparentBlack: return "FloatTransparentBlack";
31591 case BorderColor::eIntTransparentBlack: return "IntTransparentBlack";
31592 case BorderColor::eFloatOpaqueBlack: return "FloatOpaqueBlack";
31593 case BorderColor::eIntOpaqueBlack: return "IntOpaqueBlack";
31594 case BorderColor::eFloatOpaqueWhite: return "FloatOpaqueWhite";
31595 case BorderColor::eIntOpaqueWhite: return "IntOpaqueWhite";
31596 default: return "invalid";
31597 }
31598 }
31599
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031600 VULKAN_HPP_INLINE std::string to_string(PipelineBindPoint value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031601 {
31602 switch (value)
31603 {
31604 case PipelineBindPoint::eGraphics: return "Graphics";
31605 case PipelineBindPoint::eCompute: return "Compute";
31606 default: return "invalid";
31607 }
31608 }
31609
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031610 VULKAN_HPP_INLINE std::string to_string(PipelineCacheHeaderVersion value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031611 {
31612 switch (value)
31613 {
31614 case PipelineCacheHeaderVersion::eOne: return "One";
31615 default: return "invalid";
31616 }
31617 }
31618
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031619 VULKAN_HPP_INLINE std::string to_string(PrimitiveTopology value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031620 {
31621 switch (value)
31622 {
31623 case PrimitiveTopology::ePointList: return "PointList";
31624 case PrimitiveTopology::eLineList: return "LineList";
31625 case PrimitiveTopology::eLineStrip: return "LineStrip";
31626 case PrimitiveTopology::eTriangleList: return "TriangleList";
31627 case PrimitiveTopology::eTriangleStrip: return "TriangleStrip";
31628 case PrimitiveTopology::eTriangleFan: return "TriangleFan";
31629 case PrimitiveTopology::eLineListWithAdjacency: return "LineListWithAdjacency";
31630 case PrimitiveTopology::eLineStripWithAdjacency: return "LineStripWithAdjacency";
31631 case PrimitiveTopology::eTriangleListWithAdjacency: return "TriangleListWithAdjacency";
31632 case PrimitiveTopology::eTriangleStripWithAdjacency: return "TriangleStripWithAdjacency";
31633 case PrimitiveTopology::ePatchList: return "PatchList";
31634 default: return "invalid";
31635 }
31636 }
31637
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031638 VULKAN_HPP_INLINE std::string to_string(SharingMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031639 {
31640 switch (value)
31641 {
31642 case SharingMode::eExclusive: return "Exclusive";
31643 case SharingMode::eConcurrent: return "Concurrent";
31644 default: return "invalid";
31645 }
31646 }
31647
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031648 VULKAN_HPP_INLINE std::string to_string(IndexType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031649 {
31650 switch (value)
31651 {
31652 case IndexType::eUint16: return "Uint16";
31653 case IndexType::eUint32: return "Uint32";
31654 default: return "invalid";
31655 }
31656 }
31657
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031658 VULKAN_HPP_INLINE std::string to_string(Filter value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031659 {
31660 switch (value)
31661 {
31662 case Filter::eNearest: return "Nearest";
31663 case Filter::eLinear: return "Linear";
31664 case Filter::eCubicIMG: return "CubicIMG";
31665 default: return "invalid";
31666 }
31667 }
31668
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031669 VULKAN_HPP_INLINE std::string to_string(SamplerMipmapMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031670 {
31671 switch (value)
31672 {
31673 case SamplerMipmapMode::eNearest: return "Nearest";
31674 case SamplerMipmapMode::eLinear: return "Linear";
31675 default: return "invalid";
31676 }
31677 }
31678
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031679 VULKAN_HPP_INLINE std::string to_string(SamplerAddressMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031680 {
31681 switch (value)
31682 {
31683 case SamplerAddressMode::eRepeat: return "Repeat";
31684 case SamplerAddressMode::eMirroredRepeat: return "MirroredRepeat";
31685 case SamplerAddressMode::eClampToEdge: return "ClampToEdge";
31686 case SamplerAddressMode::eClampToBorder: return "ClampToBorder";
31687 case SamplerAddressMode::eMirrorClampToEdge: return "MirrorClampToEdge";
31688 default: return "invalid";
31689 }
31690 }
31691
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031692 VULKAN_HPP_INLINE std::string to_string(CompareOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031693 {
31694 switch (value)
31695 {
31696 case CompareOp::eNever: return "Never";
31697 case CompareOp::eLess: return "Less";
31698 case CompareOp::eEqual: return "Equal";
31699 case CompareOp::eLessOrEqual: return "LessOrEqual";
31700 case CompareOp::eGreater: return "Greater";
31701 case CompareOp::eNotEqual: return "NotEqual";
31702 case CompareOp::eGreaterOrEqual: return "GreaterOrEqual";
31703 case CompareOp::eAlways: return "Always";
31704 default: return "invalid";
31705 }
31706 }
31707
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031708 VULKAN_HPP_INLINE std::string to_string(PolygonMode value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031709 {
31710 switch (value)
31711 {
31712 case PolygonMode::eFill: return "Fill";
31713 case PolygonMode::eLine: return "Line";
31714 case PolygonMode::ePoint: return "Point";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060031715 case PolygonMode::eFillRectangleNV: return "FillRectangleNV";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031716 default: return "invalid";
31717 }
31718 }
31719
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031720 VULKAN_HPP_INLINE std::string to_string(CullModeFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031721 {
31722 switch (value)
31723 {
31724 case CullModeFlagBits::eNone: return "None";
31725 case CullModeFlagBits::eFront: return "Front";
31726 case CullModeFlagBits::eBack: return "Back";
31727 case CullModeFlagBits::eFrontAndBack: return "FrontAndBack";
31728 default: return "invalid";
31729 }
31730 }
31731
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031732 VULKAN_HPP_INLINE std::string to_string(CullModeFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031733 {
31734 if (!value) return "{}";
31735 std::string result;
31736 if (value & CullModeFlagBits::eNone) result += "None | ";
31737 if (value & CullModeFlagBits::eFront) result += "Front | ";
31738 if (value & CullModeFlagBits::eBack) result += "Back | ";
31739 if (value & CullModeFlagBits::eFrontAndBack) result += "FrontAndBack | ";
31740 return "{" + result.substr(0, result.size() - 3) + "}";
31741 }
31742
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031743 VULKAN_HPP_INLINE std::string to_string(FrontFace value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031744 {
31745 switch (value)
31746 {
31747 case FrontFace::eCounterClockwise: return "CounterClockwise";
31748 case FrontFace::eClockwise: return "Clockwise";
31749 default: return "invalid";
31750 }
31751 }
31752
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031753 VULKAN_HPP_INLINE std::string to_string(BlendFactor value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031754 {
31755 switch (value)
31756 {
31757 case BlendFactor::eZero: return "Zero";
31758 case BlendFactor::eOne: return "One";
31759 case BlendFactor::eSrcColor: return "SrcColor";
31760 case BlendFactor::eOneMinusSrcColor: return "OneMinusSrcColor";
31761 case BlendFactor::eDstColor: return "DstColor";
31762 case BlendFactor::eOneMinusDstColor: return "OneMinusDstColor";
31763 case BlendFactor::eSrcAlpha: return "SrcAlpha";
31764 case BlendFactor::eOneMinusSrcAlpha: return "OneMinusSrcAlpha";
31765 case BlendFactor::eDstAlpha: return "DstAlpha";
31766 case BlendFactor::eOneMinusDstAlpha: return "OneMinusDstAlpha";
31767 case BlendFactor::eConstantColor: return "ConstantColor";
31768 case BlendFactor::eOneMinusConstantColor: return "OneMinusConstantColor";
31769 case BlendFactor::eConstantAlpha: return "ConstantAlpha";
31770 case BlendFactor::eOneMinusConstantAlpha: return "OneMinusConstantAlpha";
31771 case BlendFactor::eSrcAlphaSaturate: return "SrcAlphaSaturate";
31772 case BlendFactor::eSrc1Color: return "Src1Color";
31773 case BlendFactor::eOneMinusSrc1Color: return "OneMinusSrc1Color";
31774 case BlendFactor::eSrc1Alpha: return "Src1Alpha";
31775 case BlendFactor::eOneMinusSrc1Alpha: return "OneMinusSrc1Alpha";
31776 default: return "invalid";
31777 }
31778 }
31779
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031780 VULKAN_HPP_INLINE std::string to_string(BlendOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031781 {
31782 switch (value)
31783 {
31784 case BlendOp::eAdd: return "Add";
31785 case BlendOp::eSubtract: return "Subtract";
31786 case BlendOp::eReverseSubtract: return "ReverseSubtract";
31787 case BlendOp::eMin: return "Min";
31788 case BlendOp::eMax: return "Max";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060031789 case BlendOp::eZeroEXT: return "ZeroEXT";
31790 case BlendOp::eSrcEXT: return "SrcEXT";
31791 case BlendOp::eDstEXT: return "DstEXT";
31792 case BlendOp::eSrcOverEXT: return "SrcOverEXT";
31793 case BlendOp::eDstOverEXT: return "DstOverEXT";
31794 case BlendOp::eSrcInEXT: return "SrcInEXT";
31795 case BlendOp::eDstInEXT: return "DstInEXT";
31796 case BlendOp::eSrcOutEXT: return "SrcOutEXT";
31797 case BlendOp::eDstOutEXT: return "DstOutEXT";
31798 case BlendOp::eSrcAtopEXT: return "SrcAtopEXT";
31799 case BlendOp::eDstAtopEXT: return "DstAtopEXT";
31800 case BlendOp::eXorEXT: return "XorEXT";
31801 case BlendOp::eMultiplyEXT: return "MultiplyEXT";
31802 case BlendOp::eScreenEXT: return "ScreenEXT";
31803 case BlendOp::eOverlayEXT: return "OverlayEXT";
31804 case BlendOp::eDarkenEXT: return "DarkenEXT";
31805 case BlendOp::eLightenEXT: return "LightenEXT";
31806 case BlendOp::eColordodgeEXT: return "ColordodgeEXT";
31807 case BlendOp::eColorburnEXT: return "ColorburnEXT";
31808 case BlendOp::eHardlightEXT: return "HardlightEXT";
31809 case BlendOp::eSoftlightEXT: return "SoftlightEXT";
31810 case BlendOp::eDifferenceEXT: return "DifferenceEXT";
31811 case BlendOp::eExclusionEXT: return "ExclusionEXT";
31812 case BlendOp::eInvertEXT: return "InvertEXT";
31813 case BlendOp::eInvertRgbEXT: return "InvertRgbEXT";
31814 case BlendOp::eLineardodgeEXT: return "LineardodgeEXT";
31815 case BlendOp::eLinearburnEXT: return "LinearburnEXT";
31816 case BlendOp::eVividlightEXT: return "VividlightEXT";
31817 case BlendOp::eLinearlightEXT: return "LinearlightEXT";
31818 case BlendOp::ePinlightEXT: return "PinlightEXT";
31819 case BlendOp::eHardmixEXT: return "HardmixEXT";
31820 case BlendOp::eHslHueEXT: return "HslHueEXT";
31821 case BlendOp::eHslSaturationEXT: return "HslSaturationEXT";
31822 case BlendOp::eHslColorEXT: return "HslColorEXT";
31823 case BlendOp::eHslLuminosityEXT: return "HslLuminosityEXT";
31824 case BlendOp::ePlusEXT: return "PlusEXT";
31825 case BlendOp::ePlusClampedEXT: return "PlusClampedEXT";
31826 case BlendOp::ePlusClampedAlphaEXT: return "PlusClampedAlphaEXT";
31827 case BlendOp::ePlusDarkerEXT: return "PlusDarkerEXT";
31828 case BlendOp::eMinusEXT: return "MinusEXT";
31829 case BlendOp::eMinusClampedEXT: return "MinusClampedEXT";
31830 case BlendOp::eContrastEXT: return "ContrastEXT";
31831 case BlendOp::eInvertOvgEXT: return "InvertOvgEXT";
31832 case BlendOp::eRedEXT: return "RedEXT";
31833 case BlendOp::eGreenEXT: return "GreenEXT";
31834 case BlendOp::eBlueEXT: return "BlueEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031835 default: return "invalid";
31836 }
31837 }
31838
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031839 VULKAN_HPP_INLINE std::string to_string(StencilOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031840 {
31841 switch (value)
31842 {
31843 case StencilOp::eKeep: return "Keep";
31844 case StencilOp::eZero: return "Zero";
31845 case StencilOp::eReplace: return "Replace";
31846 case StencilOp::eIncrementAndClamp: return "IncrementAndClamp";
31847 case StencilOp::eDecrementAndClamp: return "DecrementAndClamp";
31848 case StencilOp::eInvert: return "Invert";
31849 case StencilOp::eIncrementAndWrap: return "IncrementAndWrap";
31850 case StencilOp::eDecrementAndWrap: return "DecrementAndWrap";
31851 default: return "invalid";
31852 }
31853 }
31854
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031855 VULKAN_HPP_INLINE std::string to_string(LogicOp value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031856 {
31857 switch (value)
31858 {
31859 case LogicOp::eClear: return "Clear";
31860 case LogicOp::eAnd: return "And";
31861 case LogicOp::eAndReverse: return "AndReverse";
31862 case LogicOp::eCopy: return "Copy";
31863 case LogicOp::eAndInverted: return "AndInverted";
31864 case LogicOp::eNoOp: return "NoOp";
31865 case LogicOp::eXor: return "Xor";
31866 case LogicOp::eOr: return "Or";
31867 case LogicOp::eNor: return "Nor";
31868 case LogicOp::eEquivalent: return "Equivalent";
31869 case LogicOp::eInvert: return "Invert";
31870 case LogicOp::eOrReverse: return "OrReverse";
31871 case LogicOp::eCopyInverted: return "CopyInverted";
31872 case LogicOp::eOrInverted: return "OrInverted";
31873 case LogicOp::eNand: return "Nand";
31874 case LogicOp::eSet: return "Set";
31875 default: return "invalid";
31876 }
31877 }
31878
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031879 VULKAN_HPP_INLINE std::string to_string(InternalAllocationType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031880 {
31881 switch (value)
31882 {
31883 case InternalAllocationType::eExecutable: return "Executable";
31884 default: return "invalid";
31885 }
31886 }
31887
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031888 VULKAN_HPP_INLINE std::string to_string(SystemAllocationScope value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031889 {
31890 switch (value)
31891 {
31892 case SystemAllocationScope::eCommand: return "Command";
31893 case SystemAllocationScope::eObject: return "Object";
31894 case SystemAllocationScope::eCache: return "Cache";
31895 case SystemAllocationScope::eDevice: return "Device";
31896 case SystemAllocationScope::eInstance: return "Instance";
31897 default: return "invalid";
31898 }
31899 }
31900
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031901 VULKAN_HPP_INLINE std::string to_string(PhysicalDeviceType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031902 {
31903 switch (value)
31904 {
31905 case PhysicalDeviceType::eOther: return "Other";
31906 case PhysicalDeviceType::eIntegratedGpu: return "IntegratedGpu";
31907 case PhysicalDeviceType::eDiscreteGpu: return "DiscreteGpu";
31908 case PhysicalDeviceType::eVirtualGpu: return "VirtualGpu";
31909 case PhysicalDeviceType::eCpu: return "Cpu";
31910 default: return "invalid";
31911 }
31912 }
31913
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031914 VULKAN_HPP_INLINE std::string to_string(VertexInputRate value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031915 {
31916 switch (value)
31917 {
31918 case VertexInputRate::eVertex: return "Vertex";
31919 case VertexInputRate::eInstance: return "Instance";
31920 default: return "invalid";
31921 }
31922 }
31923
Mark Lobodzinski2d589822016-12-12 09:44:34 -070031924 VULKAN_HPP_INLINE std::string to_string(Format value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060031925 {
31926 switch (value)
31927 {
31928 case Format::eUndefined: return "Undefined";
31929 case Format::eR4G4UnormPack8: return "R4G4UnormPack8";
31930 case Format::eR4G4B4A4UnormPack16: return "R4G4B4A4UnormPack16";
31931 case Format::eB4G4R4A4UnormPack16: return "B4G4R4A4UnormPack16";
31932 case Format::eR5G6B5UnormPack16: return "R5G6B5UnormPack16";
31933 case Format::eB5G6R5UnormPack16: return "B5G6R5UnormPack16";
31934 case Format::eR5G5B5A1UnormPack16: return "R5G5B5A1UnormPack16";
31935 case Format::eB5G5R5A1UnormPack16: return "B5G5R5A1UnormPack16";
31936 case Format::eA1R5G5B5UnormPack16: return "A1R5G5B5UnormPack16";
31937 case Format::eR8Unorm: return "R8Unorm";
31938 case Format::eR8Snorm: return "R8Snorm";
31939 case Format::eR8Uscaled: return "R8Uscaled";
31940 case Format::eR8Sscaled: return "R8Sscaled";
31941 case Format::eR8Uint: return "R8Uint";
31942 case Format::eR8Sint: return "R8Sint";
31943 case Format::eR8Srgb: return "R8Srgb";
31944 case Format::eR8G8Unorm: return "R8G8Unorm";
31945 case Format::eR8G8Snorm: return "R8G8Snorm";
31946 case Format::eR8G8Uscaled: return "R8G8Uscaled";
31947 case Format::eR8G8Sscaled: return "R8G8Sscaled";
31948 case Format::eR8G8Uint: return "R8G8Uint";
31949 case Format::eR8G8Sint: return "R8G8Sint";
31950 case Format::eR8G8Srgb: return "R8G8Srgb";
31951 case Format::eR8G8B8Unorm: return "R8G8B8Unorm";
31952 case Format::eR8G8B8Snorm: return "R8G8B8Snorm";
31953 case Format::eR8G8B8Uscaled: return "R8G8B8Uscaled";
31954 case Format::eR8G8B8Sscaled: return "R8G8B8Sscaled";
31955 case Format::eR8G8B8Uint: return "R8G8B8Uint";
31956 case Format::eR8G8B8Sint: return "R8G8B8Sint";
31957 case Format::eR8G8B8Srgb: return "R8G8B8Srgb";
31958 case Format::eB8G8R8Unorm: return "B8G8R8Unorm";
31959 case Format::eB8G8R8Snorm: return "B8G8R8Snorm";
31960 case Format::eB8G8R8Uscaled: return "B8G8R8Uscaled";
31961 case Format::eB8G8R8Sscaled: return "B8G8R8Sscaled";
31962 case Format::eB8G8R8Uint: return "B8G8R8Uint";
31963 case Format::eB8G8R8Sint: return "B8G8R8Sint";
31964 case Format::eB8G8R8Srgb: return "B8G8R8Srgb";
31965 case Format::eR8G8B8A8Unorm: return "R8G8B8A8Unorm";
31966 case Format::eR8G8B8A8Snorm: return "R8G8B8A8Snorm";
31967 case Format::eR8G8B8A8Uscaled: return "R8G8B8A8Uscaled";
31968 case Format::eR8G8B8A8Sscaled: return "R8G8B8A8Sscaled";
31969 case Format::eR8G8B8A8Uint: return "R8G8B8A8Uint";
31970 case Format::eR8G8B8A8Sint: return "R8G8B8A8Sint";
31971 case Format::eR8G8B8A8Srgb: return "R8G8B8A8Srgb";
31972 case Format::eB8G8R8A8Unorm: return "B8G8R8A8Unorm";
31973 case Format::eB8G8R8A8Snorm: return "B8G8R8A8Snorm";
31974 case Format::eB8G8R8A8Uscaled: return "B8G8R8A8Uscaled";
31975 case Format::eB8G8R8A8Sscaled: return "B8G8R8A8Sscaled";
31976 case Format::eB8G8R8A8Uint: return "B8G8R8A8Uint";
31977 case Format::eB8G8R8A8Sint: return "B8G8R8A8Sint";
31978 case Format::eB8G8R8A8Srgb: return "B8G8R8A8Srgb";
31979 case Format::eA8B8G8R8UnormPack32: return "A8B8G8R8UnormPack32";
31980 case Format::eA8B8G8R8SnormPack32: return "A8B8G8R8SnormPack32";
31981 case Format::eA8B8G8R8UscaledPack32: return "A8B8G8R8UscaledPack32";
31982 case Format::eA8B8G8R8SscaledPack32: return "A8B8G8R8SscaledPack32";
31983 case Format::eA8B8G8R8UintPack32: return "A8B8G8R8UintPack32";
31984 case Format::eA8B8G8R8SintPack32: return "A8B8G8R8SintPack32";
31985 case Format::eA8B8G8R8SrgbPack32: return "A8B8G8R8SrgbPack32";
31986 case Format::eA2R10G10B10UnormPack32: return "A2R10G10B10UnormPack32";
31987 case Format::eA2R10G10B10SnormPack32: return "A2R10G10B10SnormPack32";
31988 case Format::eA2R10G10B10UscaledPack32: return "A2R10G10B10UscaledPack32";
31989 case Format::eA2R10G10B10SscaledPack32: return "A2R10G10B10SscaledPack32";
31990 case Format::eA2R10G10B10UintPack32: return "A2R10G10B10UintPack32";
31991 case Format::eA2R10G10B10SintPack32: return "A2R10G10B10SintPack32";
31992 case Format::eA2B10G10R10UnormPack32: return "A2B10G10R10UnormPack32";
31993 case Format::eA2B10G10R10SnormPack32: return "A2B10G10R10SnormPack32";
31994 case Format::eA2B10G10R10UscaledPack32: return "A2B10G10R10UscaledPack32";
31995 case Format::eA2B10G10R10SscaledPack32: return "A2B10G10R10SscaledPack32";
31996 case Format::eA2B10G10R10UintPack32: return "A2B10G10R10UintPack32";
31997 case Format::eA2B10G10R10SintPack32: return "A2B10G10R10SintPack32";
31998 case Format::eR16Unorm: return "R16Unorm";
31999 case Format::eR16Snorm: return "R16Snorm";
32000 case Format::eR16Uscaled: return "R16Uscaled";
32001 case Format::eR16Sscaled: return "R16Sscaled";
32002 case Format::eR16Uint: return "R16Uint";
32003 case Format::eR16Sint: return "R16Sint";
32004 case Format::eR16Sfloat: return "R16Sfloat";
32005 case Format::eR16G16Unorm: return "R16G16Unorm";
32006 case Format::eR16G16Snorm: return "R16G16Snorm";
32007 case Format::eR16G16Uscaled: return "R16G16Uscaled";
32008 case Format::eR16G16Sscaled: return "R16G16Sscaled";
32009 case Format::eR16G16Uint: return "R16G16Uint";
32010 case Format::eR16G16Sint: return "R16G16Sint";
32011 case Format::eR16G16Sfloat: return "R16G16Sfloat";
32012 case Format::eR16G16B16Unorm: return "R16G16B16Unorm";
32013 case Format::eR16G16B16Snorm: return "R16G16B16Snorm";
32014 case Format::eR16G16B16Uscaled: return "R16G16B16Uscaled";
32015 case Format::eR16G16B16Sscaled: return "R16G16B16Sscaled";
32016 case Format::eR16G16B16Uint: return "R16G16B16Uint";
32017 case Format::eR16G16B16Sint: return "R16G16B16Sint";
32018 case Format::eR16G16B16Sfloat: return "R16G16B16Sfloat";
32019 case Format::eR16G16B16A16Unorm: return "R16G16B16A16Unorm";
32020 case Format::eR16G16B16A16Snorm: return "R16G16B16A16Snorm";
32021 case Format::eR16G16B16A16Uscaled: return "R16G16B16A16Uscaled";
32022 case Format::eR16G16B16A16Sscaled: return "R16G16B16A16Sscaled";
32023 case Format::eR16G16B16A16Uint: return "R16G16B16A16Uint";
32024 case Format::eR16G16B16A16Sint: return "R16G16B16A16Sint";
32025 case Format::eR16G16B16A16Sfloat: return "R16G16B16A16Sfloat";
32026 case Format::eR32Uint: return "R32Uint";
32027 case Format::eR32Sint: return "R32Sint";
32028 case Format::eR32Sfloat: return "R32Sfloat";
32029 case Format::eR32G32Uint: return "R32G32Uint";
32030 case Format::eR32G32Sint: return "R32G32Sint";
32031 case Format::eR32G32Sfloat: return "R32G32Sfloat";
32032 case Format::eR32G32B32Uint: return "R32G32B32Uint";
32033 case Format::eR32G32B32Sint: return "R32G32B32Sint";
32034 case Format::eR32G32B32Sfloat: return "R32G32B32Sfloat";
32035 case Format::eR32G32B32A32Uint: return "R32G32B32A32Uint";
32036 case Format::eR32G32B32A32Sint: return "R32G32B32A32Sint";
32037 case Format::eR32G32B32A32Sfloat: return "R32G32B32A32Sfloat";
32038 case Format::eR64Uint: return "R64Uint";
32039 case Format::eR64Sint: return "R64Sint";
32040 case Format::eR64Sfloat: return "R64Sfloat";
32041 case Format::eR64G64Uint: return "R64G64Uint";
32042 case Format::eR64G64Sint: return "R64G64Sint";
32043 case Format::eR64G64Sfloat: return "R64G64Sfloat";
32044 case Format::eR64G64B64Uint: return "R64G64B64Uint";
32045 case Format::eR64G64B64Sint: return "R64G64B64Sint";
32046 case Format::eR64G64B64Sfloat: return "R64G64B64Sfloat";
32047 case Format::eR64G64B64A64Uint: return "R64G64B64A64Uint";
32048 case Format::eR64G64B64A64Sint: return "R64G64B64A64Sint";
32049 case Format::eR64G64B64A64Sfloat: return "R64G64B64A64Sfloat";
32050 case Format::eB10G11R11UfloatPack32: return "B10G11R11UfloatPack32";
32051 case Format::eE5B9G9R9UfloatPack32: return "E5B9G9R9UfloatPack32";
32052 case Format::eD16Unorm: return "D16Unorm";
32053 case Format::eX8D24UnormPack32: return "X8D24UnormPack32";
32054 case Format::eD32Sfloat: return "D32Sfloat";
32055 case Format::eS8Uint: return "S8Uint";
32056 case Format::eD16UnormS8Uint: return "D16UnormS8Uint";
32057 case Format::eD24UnormS8Uint: return "D24UnormS8Uint";
32058 case Format::eD32SfloatS8Uint: return "D32SfloatS8Uint";
32059 case Format::eBc1RgbUnormBlock: return "Bc1RgbUnormBlock";
32060 case Format::eBc1RgbSrgbBlock: return "Bc1RgbSrgbBlock";
32061 case Format::eBc1RgbaUnormBlock: return "Bc1RgbaUnormBlock";
32062 case Format::eBc1RgbaSrgbBlock: return "Bc1RgbaSrgbBlock";
32063 case Format::eBc2UnormBlock: return "Bc2UnormBlock";
32064 case Format::eBc2SrgbBlock: return "Bc2SrgbBlock";
32065 case Format::eBc3UnormBlock: return "Bc3UnormBlock";
32066 case Format::eBc3SrgbBlock: return "Bc3SrgbBlock";
32067 case Format::eBc4UnormBlock: return "Bc4UnormBlock";
32068 case Format::eBc4SnormBlock: return "Bc4SnormBlock";
32069 case Format::eBc5UnormBlock: return "Bc5UnormBlock";
32070 case Format::eBc5SnormBlock: return "Bc5SnormBlock";
32071 case Format::eBc6HUfloatBlock: return "Bc6HUfloatBlock";
32072 case Format::eBc6HSfloatBlock: return "Bc6HSfloatBlock";
32073 case Format::eBc7UnormBlock: return "Bc7UnormBlock";
32074 case Format::eBc7SrgbBlock: return "Bc7SrgbBlock";
32075 case Format::eEtc2R8G8B8UnormBlock: return "Etc2R8G8B8UnormBlock";
32076 case Format::eEtc2R8G8B8SrgbBlock: return "Etc2R8G8B8SrgbBlock";
32077 case Format::eEtc2R8G8B8A1UnormBlock: return "Etc2R8G8B8A1UnormBlock";
32078 case Format::eEtc2R8G8B8A1SrgbBlock: return "Etc2R8G8B8A1SrgbBlock";
32079 case Format::eEtc2R8G8B8A8UnormBlock: return "Etc2R8G8B8A8UnormBlock";
32080 case Format::eEtc2R8G8B8A8SrgbBlock: return "Etc2R8G8B8A8SrgbBlock";
32081 case Format::eEacR11UnormBlock: return "EacR11UnormBlock";
32082 case Format::eEacR11SnormBlock: return "EacR11SnormBlock";
32083 case Format::eEacR11G11UnormBlock: return "EacR11G11UnormBlock";
32084 case Format::eEacR11G11SnormBlock: return "EacR11G11SnormBlock";
32085 case Format::eAstc4x4UnormBlock: return "Astc4x4UnormBlock";
32086 case Format::eAstc4x4SrgbBlock: return "Astc4x4SrgbBlock";
32087 case Format::eAstc5x4UnormBlock: return "Astc5x4UnormBlock";
32088 case Format::eAstc5x4SrgbBlock: return "Astc5x4SrgbBlock";
32089 case Format::eAstc5x5UnormBlock: return "Astc5x5UnormBlock";
32090 case Format::eAstc5x5SrgbBlock: return "Astc5x5SrgbBlock";
32091 case Format::eAstc6x5UnormBlock: return "Astc6x5UnormBlock";
32092 case Format::eAstc6x5SrgbBlock: return "Astc6x5SrgbBlock";
32093 case Format::eAstc6x6UnormBlock: return "Astc6x6UnormBlock";
32094 case Format::eAstc6x6SrgbBlock: return "Astc6x6SrgbBlock";
32095 case Format::eAstc8x5UnormBlock: return "Astc8x5UnormBlock";
32096 case Format::eAstc8x5SrgbBlock: return "Astc8x5SrgbBlock";
32097 case Format::eAstc8x6UnormBlock: return "Astc8x6UnormBlock";
32098 case Format::eAstc8x6SrgbBlock: return "Astc8x6SrgbBlock";
32099 case Format::eAstc8x8UnormBlock: return "Astc8x8UnormBlock";
32100 case Format::eAstc8x8SrgbBlock: return "Astc8x8SrgbBlock";
32101 case Format::eAstc10x5UnormBlock: return "Astc10x5UnormBlock";
32102 case Format::eAstc10x5SrgbBlock: return "Astc10x5SrgbBlock";
32103 case Format::eAstc10x6UnormBlock: return "Astc10x6UnormBlock";
32104 case Format::eAstc10x6SrgbBlock: return "Astc10x6SrgbBlock";
32105 case Format::eAstc10x8UnormBlock: return "Astc10x8UnormBlock";
32106 case Format::eAstc10x8SrgbBlock: return "Astc10x8SrgbBlock";
32107 case Format::eAstc10x10UnormBlock: return "Astc10x10UnormBlock";
32108 case Format::eAstc10x10SrgbBlock: return "Astc10x10SrgbBlock";
32109 case Format::eAstc12x10UnormBlock: return "Astc12x10UnormBlock";
32110 case Format::eAstc12x10SrgbBlock: return "Astc12x10SrgbBlock";
32111 case Format::eAstc12x12UnormBlock: return "Astc12x12UnormBlock";
32112 case Format::eAstc12x12SrgbBlock: return "Astc12x12SrgbBlock";
Lenny Komowebf33162016-08-26 14:10:08 -060032113 case Format::ePvrtc12BppUnormBlockIMG: return "Pvrtc12BppUnormBlockIMG";
32114 case Format::ePvrtc14BppUnormBlockIMG: return "Pvrtc14BppUnormBlockIMG";
32115 case Format::ePvrtc22BppUnormBlockIMG: return "Pvrtc22BppUnormBlockIMG";
32116 case Format::ePvrtc24BppUnormBlockIMG: return "Pvrtc24BppUnormBlockIMG";
32117 case Format::ePvrtc12BppSrgbBlockIMG: return "Pvrtc12BppSrgbBlockIMG";
32118 case Format::ePvrtc14BppSrgbBlockIMG: return "Pvrtc14BppSrgbBlockIMG";
32119 case Format::ePvrtc22BppSrgbBlockIMG: return "Pvrtc22BppSrgbBlockIMG";
32120 case Format::ePvrtc24BppSrgbBlockIMG: return "Pvrtc24BppSrgbBlockIMG";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032121 default: return "invalid";
32122 }
32123 }
32124
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032125 VULKAN_HPP_INLINE std::string to_string(StructureType value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032126 {
32127 switch (value)
32128 {
32129 case StructureType::eApplicationInfo: return "ApplicationInfo";
32130 case StructureType::eInstanceCreateInfo: return "InstanceCreateInfo";
32131 case StructureType::eDeviceQueueCreateInfo: return "DeviceQueueCreateInfo";
32132 case StructureType::eDeviceCreateInfo: return "DeviceCreateInfo";
32133 case StructureType::eSubmitInfo: return "SubmitInfo";
32134 case StructureType::eMemoryAllocateInfo: return "MemoryAllocateInfo";
32135 case StructureType::eMappedMemoryRange: return "MappedMemoryRange";
32136 case StructureType::eBindSparseInfo: return "BindSparseInfo";
32137 case StructureType::eFenceCreateInfo: return "FenceCreateInfo";
32138 case StructureType::eSemaphoreCreateInfo: return "SemaphoreCreateInfo";
32139 case StructureType::eEventCreateInfo: return "EventCreateInfo";
32140 case StructureType::eQueryPoolCreateInfo: return "QueryPoolCreateInfo";
32141 case StructureType::eBufferCreateInfo: return "BufferCreateInfo";
32142 case StructureType::eBufferViewCreateInfo: return "BufferViewCreateInfo";
32143 case StructureType::eImageCreateInfo: return "ImageCreateInfo";
32144 case StructureType::eImageViewCreateInfo: return "ImageViewCreateInfo";
32145 case StructureType::eShaderModuleCreateInfo: return "ShaderModuleCreateInfo";
32146 case StructureType::ePipelineCacheCreateInfo: return "PipelineCacheCreateInfo";
32147 case StructureType::ePipelineShaderStageCreateInfo: return "PipelineShaderStageCreateInfo";
32148 case StructureType::ePipelineVertexInputStateCreateInfo: return "PipelineVertexInputStateCreateInfo";
32149 case StructureType::ePipelineInputAssemblyStateCreateInfo: return "PipelineInputAssemblyStateCreateInfo";
32150 case StructureType::ePipelineTessellationStateCreateInfo: return "PipelineTessellationStateCreateInfo";
32151 case StructureType::ePipelineViewportStateCreateInfo: return "PipelineViewportStateCreateInfo";
32152 case StructureType::ePipelineRasterizationStateCreateInfo: return "PipelineRasterizationStateCreateInfo";
32153 case StructureType::ePipelineMultisampleStateCreateInfo: return "PipelineMultisampleStateCreateInfo";
32154 case StructureType::ePipelineDepthStencilStateCreateInfo: return "PipelineDepthStencilStateCreateInfo";
32155 case StructureType::ePipelineColorBlendStateCreateInfo: return "PipelineColorBlendStateCreateInfo";
32156 case StructureType::ePipelineDynamicStateCreateInfo: return "PipelineDynamicStateCreateInfo";
32157 case StructureType::eGraphicsPipelineCreateInfo: return "GraphicsPipelineCreateInfo";
32158 case StructureType::eComputePipelineCreateInfo: return "ComputePipelineCreateInfo";
32159 case StructureType::ePipelineLayoutCreateInfo: return "PipelineLayoutCreateInfo";
32160 case StructureType::eSamplerCreateInfo: return "SamplerCreateInfo";
32161 case StructureType::eDescriptorSetLayoutCreateInfo: return "DescriptorSetLayoutCreateInfo";
32162 case StructureType::eDescriptorPoolCreateInfo: return "DescriptorPoolCreateInfo";
32163 case StructureType::eDescriptorSetAllocateInfo: return "DescriptorSetAllocateInfo";
32164 case StructureType::eWriteDescriptorSet: return "WriteDescriptorSet";
32165 case StructureType::eCopyDescriptorSet: return "CopyDescriptorSet";
32166 case StructureType::eFramebufferCreateInfo: return "FramebufferCreateInfo";
32167 case StructureType::eRenderPassCreateInfo: return "RenderPassCreateInfo";
32168 case StructureType::eCommandPoolCreateInfo: return "CommandPoolCreateInfo";
32169 case StructureType::eCommandBufferAllocateInfo: return "CommandBufferAllocateInfo";
32170 case StructureType::eCommandBufferInheritanceInfo: return "CommandBufferInheritanceInfo";
32171 case StructureType::eCommandBufferBeginInfo: return "CommandBufferBeginInfo";
32172 case StructureType::eRenderPassBeginInfo: return "RenderPassBeginInfo";
32173 case StructureType::eBufferMemoryBarrier: return "BufferMemoryBarrier";
32174 case StructureType::eImageMemoryBarrier: return "ImageMemoryBarrier";
32175 case StructureType::eMemoryBarrier: return "MemoryBarrier";
32176 case StructureType::eLoaderInstanceCreateInfo: return "LoaderInstanceCreateInfo";
32177 case StructureType::eLoaderDeviceCreateInfo: return "LoaderDeviceCreateInfo";
32178 case StructureType::eSwapchainCreateInfoKHR: return "SwapchainCreateInfoKHR";
32179 case StructureType::ePresentInfoKHR: return "PresentInfoKHR";
32180 case StructureType::eDisplayModeCreateInfoKHR: return "DisplayModeCreateInfoKHR";
32181 case StructureType::eDisplaySurfaceCreateInfoKHR: return "DisplaySurfaceCreateInfoKHR";
32182 case StructureType::eDisplayPresentInfoKHR: return "DisplayPresentInfoKHR";
32183 case StructureType::eXlibSurfaceCreateInfoKHR: return "XlibSurfaceCreateInfoKHR";
32184 case StructureType::eXcbSurfaceCreateInfoKHR: return "XcbSurfaceCreateInfoKHR";
32185 case StructureType::eWaylandSurfaceCreateInfoKHR: return "WaylandSurfaceCreateInfoKHR";
32186 case StructureType::eMirSurfaceCreateInfoKHR: return "MirSurfaceCreateInfoKHR";
32187 case StructureType::eAndroidSurfaceCreateInfoKHR: return "AndroidSurfaceCreateInfoKHR";
32188 case StructureType::eWin32SurfaceCreateInfoKHR: return "Win32SurfaceCreateInfoKHR";
32189 case StructureType::eDebugReportCallbackCreateInfoEXT: return "DebugReportCallbackCreateInfoEXT";
32190 case StructureType::ePipelineRasterizationStateRasterizationOrderAMD: return "PipelineRasterizationStateRasterizationOrderAMD";
32191 case StructureType::eDebugMarkerObjectNameInfoEXT: return "DebugMarkerObjectNameInfoEXT";
32192 case StructureType::eDebugMarkerObjectTagInfoEXT: return "DebugMarkerObjectTagInfoEXT";
32193 case StructureType::eDebugMarkerMarkerInfoEXT: return "DebugMarkerMarkerInfoEXT";
32194 case StructureType::eDedicatedAllocationImageCreateInfoNV: return "DedicatedAllocationImageCreateInfoNV";
32195 case StructureType::eDedicatedAllocationBufferCreateInfoNV: return "DedicatedAllocationBufferCreateInfoNV";
32196 case StructureType::eDedicatedAllocationMemoryAllocateInfoNV: return "DedicatedAllocationMemoryAllocateInfoNV";
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060032197 case StructureType::eTextureLodGatherFormatPropertiesAMD: return "TextureLodGatherFormatPropertiesAMD";
Mark Young0f183a82017-02-28 09:58:04 -070032198 case StructureType::eRenderPassMultiviewCreateInfoKHX: return "RenderPassMultiviewCreateInfoKHX";
32199 case StructureType::ePhysicalDeviceMultiviewFeaturesKHX: return "PhysicalDeviceMultiviewFeaturesKHX";
32200 case StructureType::ePhysicalDeviceMultiviewPropertiesKHX: return "PhysicalDeviceMultiviewPropertiesKHX";
Lenny Komow6501c122016-08-31 15:03:49 -060032201 case StructureType::eExternalMemoryImageCreateInfoNV: return "ExternalMemoryImageCreateInfoNV";
32202 case StructureType::eExportMemoryAllocateInfoNV: return "ExportMemoryAllocateInfoNV";
32203 case StructureType::eImportMemoryWin32HandleInfoNV: return "ImportMemoryWin32HandleInfoNV";
32204 case StructureType::eExportMemoryWin32HandleInfoNV: return "ExportMemoryWin32HandleInfoNV";
32205 case StructureType::eWin32KeyedMutexAcquireReleaseInfoNV: return "Win32KeyedMutexAcquireReleaseInfoNV";
Mark Young39389872017-01-19 21:10:49 -070032206 case StructureType::ePhysicalDeviceFeatures2KHR: return "PhysicalDeviceFeatures2KHR";
32207 case StructureType::ePhysicalDeviceProperties2KHR: return "PhysicalDeviceProperties2KHR";
32208 case StructureType::eFormatProperties2KHR: return "FormatProperties2KHR";
32209 case StructureType::eImageFormatProperties2KHR: return "ImageFormatProperties2KHR";
32210 case StructureType::ePhysicalDeviceImageFormatInfo2KHR: return "PhysicalDeviceImageFormatInfo2KHR";
32211 case StructureType::eQueueFamilyProperties2KHR: return "QueueFamilyProperties2KHR";
32212 case StructureType::ePhysicalDeviceMemoryProperties2KHR: return "PhysicalDeviceMemoryProperties2KHR";
32213 case StructureType::eSparseImageFormatProperties2KHR: return "SparseImageFormatProperties2KHR";
32214 case StructureType::ePhysicalDeviceSparseImageFormatInfo2KHR: return "PhysicalDeviceSparseImageFormatInfo2KHR";
Mark Young0f183a82017-02-28 09:58:04 -070032215 case StructureType::eMemoryAllocateFlagsInfoKHX: return "MemoryAllocateFlagsInfoKHX";
32216 case StructureType::eBindBufferMemoryInfoKHX: return "BindBufferMemoryInfoKHX";
32217 case StructureType::eBindImageMemoryInfoKHX: return "BindImageMemoryInfoKHX";
32218 case StructureType::eDeviceGroupRenderPassBeginInfoKHX: return "DeviceGroupRenderPassBeginInfoKHX";
32219 case StructureType::eDeviceGroupCommandBufferBeginInfoKHX: return "DeviceGroupCommandBufferBeginInfoKHX";
32220 case StructureType::eDeviceGroupSubmitInfoKHX: return "DeviceGroupSubmitInfoKHX";
32221 case StructureType::eDeviceGroupBindSparseInfoKHX: return "DeviceGroupBindSparseInfoKHX";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032222 case StructureType::eAcquireNextImageInfoKHX: return "AcquireNextImageInfoKHX";
Mark Young0f183a82017-02-28 09:58:04 -070032223 case StructureType::eDeviceGroupPresentCapabilitiesKHX: return "DeviceGroupPresentCapabilitiesKHX";
32224 case StructureType::eImageSwapchainCreateInfoKHX: return "ImageSwapchainCreateInfoKHX";
32225 case StructureType::eBindImageMemorySwapchainInfoKHX: return "BindImageMemorySwapchainInfoKHX";
Mark Young0f183a82017-02-28 09:58:04 -070032226 case StructureType::eDeviceGroupPresentInfoKHX: return "DeviceGroupPresentInfoKHX";
32227 case StructureType::eDeviceGroupSwapchainCreateInfoKHX: return "DeviceGroupSwapchainCreateInfoKHX";
Lenny Komow68432d72016-09-29 14:16:59 -060032228 case StructureType::eValidationFlagsEXT: return "ValidationFlagsEXT";
Mark Young39389872017-01-19 21:10:49 -070032229 case StructureType::eViSurfaceCreateInfoNN: return "ViSurfaceCreateInfoNN";
Mark Young0f183a82017-02-28 09:58:04 -070032230 case StructureType::ePhysicalDeviceGroupPropertiesKHX: return "PhysicalDeviceGroupPropertiesKHX";
32231 case StructureType::eDeviceGroupDeviceCreateInfoKHX: return "DeviceGroupDeviceCreateInfoKHX";
Mark Youngabc2d6e2017-07-07 07:59:56 -060032232 case StructureType::ePhysicalDeviceExternalImageFormatInfoKHR: return "PhysicalDeviceExternalImageFormatInfoKHR";
32233 case StructureType::eExternalImageFormatPropertiesKHR: return "ExternalImageFormatPropertiesKHR";
32234 case StructureType::ePhysicalDeviceExternalBufferInfoKHR: return "PhysicalDeviceExternalBufferInfoKHR";
32235 case StructureType::eExternalBufferPropertiesKHR: return "ExternalBufferPropertiesKHR";
32236 case StructureType::ePhysicalDeviceIdPropertiesKHR: return "PhysicalDeviceIdPropertiesKHR";
32237 case StructureType::eExternalMemoryBufferCreateInfoKHR: return "ExternalMemoryBufferCreateInfoKHR";
32238 case StructureType::eExternalMemoryImageCreateInfoKHR: return "ExternalMemoryImageCreateInfoKHR";
32239 case StructureType::eExportMemoryAllocateInfoKHR: return "ExportMemoryAllocateInfoKHR";
32240 case StructureType::eImportMemoryWin32HandleInfoKHR: return "ImportMemoryWin32HandleInfoKHR";
32241 case StructureType::eExportMemoryWin32HandleInfoKHR: return "ExportMemoryWin32HandleInfoKHR";
32242 case StructureType::eMemoryWin32HandlePropertiesKHR: return "MemoryWin32HandlePropertiesKHR";
32243 case StructureType::eMemoryGetWin32HandleInfoKHR: return "MemoryGetWin32HandleInfoKHR";
32244 case StructureType::eImportMemoryFdInfoKHR: return "ImportMemoryFdInfoKHR";
32245 case StructureType::eMemoryFdPropertiesKHR: return "MemoryFdPropertiesKHR";
32246 case StructureType::eMemoryGetFdInfoKHR: return "MemoryGetFdInfoKHR";
32247 case StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR: return "Win32KeyedMutexAcquireReleaseInfoKHR";
32248 case StructureType::ePhysicalDeviceExternalSemaphoreInfoKHR: return "PhysicalDeviceExternalSemaphoreInfoKHR";
32249 case StructureType::eExternalSemaphorePropertiesKHR: return "ExternalSemaphorePropertiesKHR";
32250 case StructureType::eExportSemaphoreCreateInfoKHR: return "ExportSemaphoreCreateInfoKHR";
32251 case StructureType::eImportSemaphoreWin32HandleInfoKHR: return "ImportSemaphoreWin32HandleInfoKHR";
32252 case StructureType::eExportSemaphoreWin32HandleInfoKHR: return "ExportSemaphoreWin32HandleInfoKHR";
32253 case StructureType::eD3D12FenceSubmitInfoKHR: return "D3D12FenceSubmitInfoKHR";
32254 case StructureType::eSemaphoreGetWin32HandleInfoKHR: return "SemaphoreGetWin32HandleInfoKHR";
32255 case StructureType::eImportSemaphoreFdInfoKHR: return "ImportSemaphoreFdInfoKHR";
32256 case StructureType::eSemaphoreGetFdInfoKHR: return "SemaphoreGetFdInfoKHR";
Mark Young0f183a82017-02-28 09:58:04 -070032257 case StructureType::ePhysicalDevicePushDescriptorPropertiesKHR: return "PhysicalDevicePushDescriptorPropertiesKHR";
Mark Youngabc2d6e2017-07-07 07:59:56 -060032258 case StructureType::ePhysicalDevice16BitStorageFeaturesKHR: return "PhysicalDevice16BitStorageFeaturesKHR";
Mark Lobodzinski3289d762017-04-03 08:22:04 -060032259 case StructureType::ePresentRegionsKHR: return "PresentRegionsKHR";
Mark Young0f183a82017-02-28 09:58:04 -070032260 case StructureType::eDescriptorUpdateTemplateCreateInfoKHR: return "DescriptorUpdateTemplateCreateInfoKHR";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032261 case StructureType::eObjectTableCreateInfoNVX: return "ObjectTableCreateInfoNVX";
32262 case StructureType::eIndirectCommandsLayoutCreateInfoNVX: return "IndirectCommandsLayoutCreateInfoNVX";
32263 case StructureType::eCmdProcessCommandsInfoNVX: return "CmdProcessCommandsInfoNVX";
32264 case StructureType::eCmdReserveSpaceForCommandsInfoNVX: return "CmdReserveSpaceForCommandsInfoNVX";
32265 case StructureType::eDeviceGeneratedCommandsLimitsNVX: return "DeviceGeneratedCommandsLimitsNVX";
32266 case StructureType::eDeviceGeneratedCommandsFeaturesNVX: return "DeviceGeneratedCommandsFeaturesNVX";
Mark Young0f183a82017-02-28 09:58:04 -070032267 case StructureType::ePipelineViewportWScalingStateCreateInfoNV: return "PipelineViewportWScalingStateCreateInfoNV";
Mark Young39389872017-01-19 21:10:49 -070032268 case StructureType::eSurfaceCapabilities2EXT: return "SurfaceCapabilities2EXT";
32269 case StructureType::eDisplayPowerInfoEXT: return "DisplayPowerInfoEXT";
32270 case StructureType::eDeviceEventInfoEXT: return "DeviceEventInfoEXT";
32271 case StructureType::eDisplayEventInfoEXT: return "DisplayEventInfoEXT";
32272 case StructureType::eSwapchainCounterCreateInfoEXT: return "SwapchainCounterCreateInfoEXT";
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060032273 case StructureType::ePresentTimesInfoGOOGLE: return "PresentTimesInfoGOOGLE";
Mark Young0f183a82017-02-28 09:58:04 -070032274 case StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX: return "PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX";
32275 case StructureType::ePipelineViewportSwizzleStateCreateInfoNV: return "PipelineViewportSwizzleStateCreateInfoNV";
32276 case StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT: return "PhysicalDeviceDiscardRectanglePropertiesEXT";
32277 case StructureType::ePipelineDiscardRectangleStateCreateInfoEXT: return "PipelineDiscardRectangleStateCreateInfoEXT";
Mark Lobodzinski1d218cc2017-03-14 10:12:43 -060032278 case StructureType::eHdrMetadataEXT: return "HdrMetadataEXT";
Mark Lobodzinski54385432017-05-15 10:27:52 -060032279 case StructureType::eSharedPresentSurfaceCapabilitiesKHR: return "SharedPresentSurfaceCapabilitiesKHR";
Mark Youngabc2d6e2017-07-07 07:59:56 -060032280 case StructureType::ePhysicalDeviceExternalFenceInfoKHR: return "PhysicalDeviceExternalFenceInfoKHR";
32281 case StructureType::eExternalFencePropertiesKHR: return "ExternalFencePropertiesKHR";
32282 case StructureType::eExportFenceCreateInfoKHR: return "ExportFenceCreateInfoKHR";
32283 case StructureType::eImportFenceWin32HandleInfoKHR: return "ImportFenceWin32HandleInfoKHR";
32284 case StructureType::eExportFenceWin32HandleInfoKHR: return "ExportFenceWin32HandleInfoKHR";
32285 case StructureType::eFenceGetWin32HandleInfoKHR: return "FenceGetWin32HandleInfoKHR";
32286 case StructureType::eImportFenceFdInfoKHR: return "ImportFenceFdInfoKHR";
32287 case StructureType::eFenceGetFdInfoKHR: return "FenceGetFdInfoKHR";
Mark Lobodzinski54385432017-05-15 10:27:52 -060032288 case StructureType::ePhysicalDeviceSurfaceInfo2KHR: return "PhysicalDeviceSurfaceInfo2KHR";
32289 case StructureType::eSurfaceCapabilities2KHR: return "SurfaceCapabilities2KHR";
32290 case StructureType::eSurfaceFormat2KHR: return "SurfaceFormat2KHR";
Mark Youngabc2d6e2017-07-07 07:59:56 -060032291 case StructureType::ePhysicalDeviceVariablePointerFeaturesKHR: return "PhysicalDeviceVariablePointerFeaturesKHR";
Mark Young0f183a82017-02-28 09:58:04 -070032292 case StructureType::eIosSurfaceCreateInfoMVK: return "IosSurfaceCreateInfoMVK";
32293 case StructureType::eMacosSurfaceCreateInfoMVK: return "MacosSurfaceCreateInfoMVK";
Mark Youngabc2d6e2017-07-07 07:59:56 -060032294 case StructureType::eMemoryDedicatedRequirementsKHR: return "MemoryDedicatedRequirementsKHR";
32295 case StructureType::eMemoryDedicatedAllocateInfoKHR: return "MemoryDedicatedAllocateInfoKHR";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060032296 case StructureType::ePhysicalDeviceSamplerFilterMinmaxPropertiesEXT: return "PhysicalDeviceSamplerFilterMinmaxPropertiesEXT";
32297 case StructureType::eSamplerReductionModeCreateInfoEXT: return "SamplerReductionModeCreateInfoEXT";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032298 case StructureType::eSampleLocationsInfoEXT: return "SampleLocationsInfoEXT";
32299 case StructureType::eRenderPassSampleLocationsBeginInfoEXT: return "RenderPassSampleLocationsBeginInfoEXT";
32300 case StructureType::ePipelineSampleLocationsStateCreateInfoEXT: return "PipelineSampleLocationsStateCreateInfoEXT";
32301 case StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT: return "PhysicalDeviceSampleLocationsPropertiesEXT";
32302 case StructureType::eMultisamplePropertiesEXT: return "MultisamplePropertiesEXT";
Mark Youngabc2d6e2017-07-07 07:59:56 -060032303 case StructureType::eBufferMemoryRequirementsInfo2KHR: return "BufferMemoryRequirementsInfo2KHR";
32304 case StructureType::eImageMemoryRequirementsInfo2KHR: return "ImageMemoryRequirementsInfo2KHR";
32305 case StructureType::eImageSparseMemoryRequirementsInfo2KHR: return "ImageSparseMemoryRequirementsInfo2KHR";
32306 case StructureType::eMemoryRequirements2KHR: return "MemoryRequirements2KHR";
32307 case StructureType::eSparseImageMemoryRequirements2KHR: return "SparseImageMemoryRequirements2KHR";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060032308 case StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT: return "PhysicalDeviceBlendOperationAdvancedFeaturesEXT";
32309 case StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT: return "PhysicalDeviceBlendOperationAdvancedPropertiesEXT";
32310 case StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT: return "PipelineColorBlendAdvancedStateCreateInfoEXT";
32311 case StructureType::ePipelineCoverageToColorStateCreateInfoNV: return "PipelineCoverageToColorStateCreateInfoNV";
32312 case StructureType::ePipelineCoverageModulationStateCreateInfoNV: return "PipelineCoverageModulationStateCreateInfoNV";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032313 case StructureType::eValidationCacheCreateInfoEXT: return "ValidationCacheCreateInfoEXT";
32314 case StructureType::eShaderModuleValidationCacheCreateInfoEXT: return "ShaderModuleValidationCacheCreateInfoEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032315 default: return "invalid";
32316 }
32317 }
32318
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032319 VULKAN_HPP_INLINE std::string to_string(SubpassContents value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032320 {
32321 switch (value)
32322 {
32323 case SubpassContents::eInline: return "Inline";
32324 case SubpassContents::eSecondaryCommandBuffers: return "SecondaryCommandBuffers";
32325 default: return "invalid";
32326 }
32327 }
32328
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032329 VULKAN_HPP_INLINE std::string to_string(DynamicState value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032330 {
32331 switch (value)
32332 {
32333 case DynamicState::eViewport: return "Viewport";
32334 case DynamicState::eScissor: return "Scissor";
32335 case DynamicState::eLineWidth: return "LineWidth";
32336 case DynamicState::eDepthBias: return "DepthBias";
32337 case DynamicState::eBlendConstants: return "BlendConstants";
32338 case DynamicState::eDepthBounds: return "DepthBounds";
32339 case DynamicState::eStencilCompareMask: return "StencilCompareMask";
32340 case DynamicState::eStencilWriteMask: return "StencilWriteMask";
32341 case DynamicState::eStencilReference: return "StencilReference";
Mark Young0f183a82017-02-28 09:58:04 -070032342 case DynamicState::eViewportWScalingNV: return "ViewportWScalingNV";
32343 case DynamicState::eDiscardRectangleEXT: return "DiscardRectangleEXT";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032344 case DynamicState::eSampleLocationsEXT: return "SampleLocationsEXT";
Mark Young0f183a82017-02-28 09:58:04 -070032345 default: return "invalid";
32346 }
32347 }
32348
32349 VULKAN_HPP_INLINE std::string to_string(DescriptorUpdateTemplateTypeKHR value)
32350 {
32351 switch (value)
32352 {
32353 case DescriptorUpdateTemplateTypeKHR::eDescriptorSet: return "DescriptorSet";
32354 case DescriptorUpdateTemplateTypeKHR::ePushDescriptors: return "PushDescriptors";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032355 default: return "invalid";
32356 }
32357 }
32358
Mark Lobodzinski54385432017-05-15 10:27:52 -060032359 VULKAN_HPP_INLINE std::string to_string(ObjectType value)
32360 {
32361 switch (value)
32362 {
32363 case ObjectType::eUnknown: return "Unknown";
32364 case ObjectType::eInstance: return "Instance";
32365 case ObjectType::ePhysicalDevice: return "PhysicalDevice";
32366 case ObjectType::eDevice: return "Device";
32367 case ObjectType::eQueue: return "Queue";
32368 case ObjectType::eSemaphore: return "Semaphore";
32369 case ObjectType::eCommandBuffer: return "CommandBuffer";
32370 case ObjectType::eFence: return "Fence";
32371 case ObjectType::eDeviceMemory: return "DeviceMemory";
32372 case ObjectType::eBuffer: return "Buffer";
32373 case ObjectType::eImage: return "Image";
32374 case ObjectType::eEvent: return "Event";
32375 case ObjectType::eQueryPool: return "QueryPool";
32376 case ObjectType::eBufferView: return "BufferView";
32377 case ObjectType::eImageView: return "ImageView";
32378 case ObjectType::eShaderModule: return "ShaderModule";
32379 case ObjectType::ePipelineCache: return "PipelineCache";
32380 case ObjectType::ePipelineLayout: return "PipelineLayout";
32381 case ObjectType::eRenderPass: return "RenderPass";
32382 case ObjectType::ePipeline: return "Pipeline";
32383 case ObjectType::eDescriptorSetLayout: return "DescriptorSetLayout";
32384 case ObjectType::eSampler: return "Sampler";
32385 case ObjectType::eDescriptorPool: return "DescriptorPool";
32386 case ObjectType::eDescriptorSet: return "DescriptorSet";
32387 case ObjectType::eFramebuffer: return "Framebuffer";
32388 case ObjectType::eCommandPool: return "CommandPool";
32389 case ObjectType::eSurfaceKHR: return "SurfaceKHR";
32390 case ObjectType::eSwapchainKHR: return "SwapchainKHR";
32391 case ObjectType::eDisplayKHR: return "DisplayKHR";
32392 case ObjectType::eDisplayModeKHR: return "DisplayModeKHR";
32393 case ObjectType::eDebugReportCallbackEXT: return "DebugReportCallbackEXT";
32394 case ObjectType::eDescriptorUpdateTemplateKHR: return "DescriptorUpdateTemplateKHR";
32395 case ObjectType::eObjectTableNVX: return "ObjectTableNVX";
32396 case ObjectType::eIndirectCommandsLayoutNVX: return "IndirectCommandsLayoutNVX";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032397 case ObjectType::eValidationCacheEXT: return "ValidationCacheEXT";
Mark Lobodzinski54385432017-05-15 10:27:52 -060032398 default: return "invalid";
32399 }
32400 }
32401
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032402 VULKAN_HPP_INLINE std::string to_string(QueueFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032403 {
32404 switch (value)
32405 {
32406 case QueueFlagBits::eGraphics: return "Graphics";
32407 case QueueFlagBits::eCompute: return "Compute";
32408 case QueueFlagBits::eTransfer: return "Transfer";
32409 case QueueFlagBits::eSparseBinding: return "SparseBinding";
32410 default: return "invalid";
32411 }
32412 }
32413
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032414 VULKAN_HPP_INLINE std::string to_string(QueueFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032415 {
32416 if (!value) return "{}";
32417 std::string result;
32418 if (value & QueueFlagBits::eGraphics) result += "Graphics | ";
32419 if (value & QueueFlagBits::eCompute) result += "Compute | ";
32420 if (value & QueueFlagBits::eTransfer) result += "Transfer | ";
32421 if (value & QueueFlagBits::eSparseBinding) result += "SparseBinding | ";
32422 return "{" + result.substr(0, result.size() - 3) + "}";
32423 }
32424
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032425 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032426 {
32427 switch (value)
32428 {
32429 case MemoryPropertyFlagBits::eDeviceLocal: return "DeviceLocal";
32430 case MemoryPropertyFlagBits::eHostVisible: return "HostVisible";
32431 case MemoryPropertyFlagBits::eHostCoherent: return "HostCoherent";
32432 case MemoryPropertyFlagBits::eHostCached: return "HostCached";
32433 case MemoryPropertyFlagBits::eLazilyAllocated: return "LazilyAllocated";
32434 default: return "invalid";
32435 }
32436 }
32437
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032438 VULKAN_HPP_INLINE std::string to_string(MemoryPropertyFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032439 {
32440 if (!value) return "{}";
32441 std::string result;
32442 if (value & MemoryPropertyFlagBits::eDeviceLocal) result += "DeviceLocal | ";
32443 if (value & MemoryPropertyFlagBits::eHostVisible) result += "HostVisible | ";
32444 if (value & MemoryPropertyFlagBits::eHostCoherent) result += "HostCoherent | ";
32445 if (value & MemoryPropertyFlagBits::eHostCached) result += "HostCached | ";
32446 if (value & MemoryPropertyFlagBits::eLazilyAllocated) result += "LazilyAllocated | ";
32447 return "{" + result.substr(0, result.size() - 3) + "}";
32448 }
32449
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032450 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032451 {
32452 switch (value)
32453 {
32454 case MemoryHeapFlagBits::eDeviceLocal: return "DeviceLocal";
Mark Young0f183a82017-02-28 09:58:04 -070032455 case MemoryHeapFlagBits::eMultiInstanceKHX: return "MultiInstanceKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032456 default: return "invalid";
32457 }
32458 }
32459
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032460 VULKAN_HPP_INLINE std::string to_string(MemoryHeapFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032461 {
32462 if (!value) return "{}";
32463 std::string result;
32464 if (value & MemoryHeapFlagBits::eDeviceLocal) result += "DeviceLocal | ";
Mark Young0f183a82017-02-28 09:58:04 -070032465 if (value & MemoryHeapFlagBits::eMultiInstanceKHX) result += "MultiInstanceKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032466 return "{" + result.substr(0, result.size() - 3) + "}";
32467 }
32468
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032469 VULKAN_HPP_INLINE std::string to_string(AccessFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032470 {
32471 switch (value)
32472 {
32473 case AccessFlagBits::eIndirectCommandRead: return "IndirectCommandRead";
32474 case AccessFlagBits::eIndexRead: return "IndexRead";
32475 case AccessFlagBits::eVertexAttributeRead: return "VertexAttributeRead";
32476 case AccessFlagBits::eUniformRead: return "UniformRead";
32477 case AccessFlagBits::eInputAttachmentRead: return "InputAttachmentRead";
32478 case AccessFlagBits::eShaderRead: return "ShaderRead";
32479 case AccessFlagBits::eShaderWrite: return "ShaderWrite";
32480 case AccessFlagBits::eColorAttachmentRead: return "ColorAttachmentRead";
32481 case AccessFlagBits::eColorAttachmentWrite: return "ColorAttachmentWrite";
32482 case AccessFlagBits::eDepthStencilAttachmentRead: return "DepthStencilAttachmentRead";
32483 case AccessFlagBits::eDepthStencilAttachmentWrite: return "DepthStencilAttachmentWrite";
32484 case AccessFlagBits::eTransferRead: return "TransferRead";
32485 case AccessFlagBits::eTransferWrite: return "TransferWrite";
32486 case AccessFlagBits::eHostRead: return "HostRead";
32487 case AccessFlagBits::eHostWrite: return "HostWrite";
32488 case AccessFlagBits::eMemoryRead: return "MemoryRead";
32489 case AccessFlagBits::eMemoryWrite: return "MemoryWrite";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032490 case AccessFlagBits::eCommandProcessReadNVX: return "CommandProcessReadNVX";
32491 case AccessFlagBits::eCommandProcessWriteNVX: return "CommandProcessWriteNVX";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060032492 case AccessFlagBits::eColorAttachmentReadNoncoherentEXT: return "ColorAttachmentReadNoncoherentEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032493 default: return "invalid";
32494 }
32495 }
32496
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032497 VULKAN_HPP_INLINE std::string to_string(AccessFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032498 {
32499 if (!value) return "{}";
32500 std::string result;
32501 if (value & AccessFlagBits::eIndirectCommandRead) result += "IndirectCommandRead | ";
32502 if (value & AccessFlagBits::eIndexRead) result += "IndexRead | ";
32503 if (value & AccessFlagBits::eVertexAttributeRead) result += "VertexAttributeRead | ";
32504 if (value & AccessFlagBits::eUniformRead) result += "UniformRead | ";
32505 if (value & AccessFlagBits::eInputAttachmentRead) result += "InputAttachmentRead | ";
32506 if (value & AccessFlagBits::eShaderRead) result += "ShaderRead | ";
32507 if (value & AccessFlagBits::eShaderWrite) result += "ShaderWrite | ";
32508 if (value & AccessFlagBits::eColorAttachmentRead) result += "ColorAttachmentRead | ";
32509 if (value & AccessFlagBits::eColorAttachmentWrite) result += "ColorAttachmentWrite | ";
32510 if (value & AccessFlagBits::eDepthStencilAttachmentRead) result += "DepthStencilAttachmentRead | ";
32511 if (value & AccessFlagBits::eDepthStencilAttachmentWrite) result += "DepthStencilAttachmentWrite | ";
32512 if (value & AccessFlagBits::eTransferRead) result += "TransferRead | ";
32513 if (value & AccessFlagBits::eTransferWrite) result += "TransferWrite | ";
32514 if (value & AccessFlagBits::eHostRead) result += "HostRead | ";
32515 if (value & AccessFlagBits::eHostWrite) result += "HostWrite | ";
32516 if (value & AccessFlagBits::eMemoryRead) result += "MemoryRead | ";
32517 if (value & AccessFlagBits::eMemoryWrite) result += "MemoryWrite | ";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032518 if (value & AccessFlagBits::eCommandProcessReadNVX) result += "CommandProcessReadNVX | ";
32519 if (value & AccessFlagBits::eCommandProcessWriteNVX) result += "CommandProcessWriteNVX | ";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060032520 if (value & AccessFlagBits::eColorAttachmentReadNoncoherentEXT) result += "ColorAttachmentReadNoncoherentEXT | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032521 return "{" + result.substr(0, result.size() - 3) + "}";
32522 }
32523
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032524 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032525 {
32526 switch (value)
32527 {
32528 case BufferUsageFlagBits::eTransferSrc: return "TransferSrc";
32529 case BufferUsageFlagBits::eTransferDst: return "TransferDst";
32530 case BufferUsageFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
32531 case BufferUsageFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
32532 case BufferUsageFlagBits::eUniformBuffer: return "UniformBuffer";
32533 case BufferUsageFlagBits::eStorageBuffer: return "StorageBuffer";
32534 case BufferUsageFlagBits::eIndexBuffer: return "IndexBuffer";
32535 case BufferUsageFlagBits::eVertexBuffer: return "VertexBuffer";
32536 case BufferUsageFlagBits::eIndirectBuffer: return "IndirectBuffer";
32537 default: return "invalid";
32538 }
32539 }
32540
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032541 VULKAN_HPP_INLINE std::string to_string(BufferUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032542 {
32543 if (!value) return "{}";
32544 std::string result;
32545 if (value & BufferUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
32546 if (value & BufferUsageFlagBits::eTransferDst) result += "TransferDst | ";
32547 if (value & BufferUsageFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
32548 if (value & BufferUsageFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
32549 if (value & BufferUsageFlagBits::eUniformBuffer) result += "UniformBuffer | ";
32550 if (value & BufferUsageFlagBits::eStorageBuffer) result += "StorageBuffer | ";
32551 if (value & BufferUsageFlagBits::eIndexBuffer) result += "IndexBuffer | ";
32552 if (value & BufferUsageFlagBits::eVertexBuffer) result += "VertexBuffer | ";
32553 if (value & BufferUsageFlagBits::eIndirectBuffer) result += "IndirectBuffer | ";
32554 return "{" + result.substr(0, result.size() - 3) + "}";
32555 }
32556
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032557 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032558 {
32559 switch (value)
32560 {
32561 case BufferCreateFlagBits::eSparseBinding: return "SparseBinding";
32562 case BufferCreateFlagBits::eSparseResidency: return "SparseResidency";
32563 case BufferCreateFlagBits::eSparseAliased: return "SparseAliased";
32564 default: return "invalid";
32565 }
32566 }
32567
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032568 VULKAN_HPP_INLINE std::string to_string(BufferCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032569 {
32570 if (!value) return "{}";
32571 std::string result;
32572 if (value & BufferCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
32573 if (value & BufferCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
32574 if (value & BufferCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
32575 return "{" + result.substr(0, result.size() - 3) + "}";
32576 }
32577
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032578 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032579 {
32580 switch (value)
32581 {
32582 case ShaderStageFlagBits::eVertex: return "Vertex";
32583 case ShaderStageFlagBits::eTessellationControl: return "TessellationControl";
32584 case ShaderStageFlagBits::eTessellationEvaluation: return "TessellationEvaluation";
32585 case ShaderStageFlagBits::eGeometry: return "Geometry";
32586 case ShaderStageFlagBits::eFragment: return "Fragment";
32587 case ShaderStageFlagBits::eCompute: return "Compute";
32588 case ShaderStageFlagBits::eAllGraphics: return "AllGraphics";
32589 case ShaderStageFlagBits::eAll: return "All";
32590 default: return "invalid";
32591 }
32592 }
32593
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032594 VULKAN_HPP_INLINE std::string to_string(ShaderStageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032595 {
32596 if (!value) return "{}";
32597 std::string result;
32598 if (value & ShaderStageFlagBits::eVertex) result += "Vertex | ";
32599 if (value & ShaderStageFlagBits::eTessellationControl) result += "TessellationControl | ";
32600 if (value & ShaderStageFlagBits::eTessellationEvaluation) result += "TessellationEvaluation | ";
32601 if (value & ShaderStageFlagBits::eGeometry) result += "Geometry | ";
32602 if (value & ShaderStageFlagBits::eFragment) result += "Fragment | ";
32603 if (value & ShaderStageFlagBits::eCompute) result += "Compute | ";
32604 if (value & ShaderStageFlagBits::eAllGraphics) result += "AllGraphics | ";
32605 if (value & ShaderStageFlagBits::eAll) result += "All | ";
32606 return "{" + result.substr(0, result.size() - 3) + "}";
32607 }
32608
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032609 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032610 {
32611 switch (value)
32612 {
32613 case ImageUsageFlagBits::eTransferSrc: return "TransferSrc";
32614 case ImageUsageFlagBits::eTransferDst: return "TransferDst";
32615 case ImageUsageFlagBits::eSampled: return "Sampled";
32616 case ImageUsageFlagBits::eStorage: return "Storage";
32617 case ImageUsageFlagBits::eColorAttachment: return "ColorAttachment";
32618 case ImageUsageFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
32619 case ImageUsageFlagBits::eTransientAttachment: return "TransientAttachment";
32620 case ImageUsageFlagBits::eInputAttachment: return "InputAttachment";
32621 default: return "invalid";
32622 }
32623 }
32624
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032625 VULKAN_HPP_INLINE std::string to_string(ImageUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032626 {
32627 if (!value) return "{}";
32628 std::string result;
32629 if (value & ImageUsageFlagBits::eTransferSrc) result += "TransferSrc | ";
32630 if (value & ImageUsageFlagBits::eTransferDst) result += "TransferDst | ";
32631 if (value & ImageUsageFlagBits::eSampled) result += "Sampled | ";
32632 if (value & ImageUsageFlagBits::eStorage) result += "Storage | ";
32633 if (value & ImageUsageFlagBits::eColorAttachment) result += "ColorAttachment | ";
32634 if (value & ImageUsageFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
32635 if (value & ImageUsageFlagBits::eTransientAttachment) result += "TransientAttachment | ";
32636 if (value & ImageUsageFlagBits::eInputAttachment) result += "InputAttachment | ";
32637 return "{" + result.substr(0, result.size() - 3) + "}";
32638 }
32639
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032640 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032641 {
32642 switch (value)
32643 {
32644 case ImageCreateFlagBits::eSparseBinding: return "SparseBinding";
32645 case ImageCreateFlagBits::eSparseResidency: return "SparseResidency";
32646 case ImageCreateFlagBits::eSparseAliased: return "SparseAliased";
32647 case ImageCreateFlagBits::eMutableFormat: return "MutableFormat";
32648 case ImageCreateFlagBits::eCubeCompatible: return "CubeCompatible";
Mark Young0f183a82017-02-28 09:58:04 -070032649 case ImageCreateFlagBits::eBindSfrKHX: return "BindSfrKHX";
Mark Young39389872017-01-19 21:10:49 -070032650 case ImageCreateFlagBits::e2DArrayCompatibleKHR: return "2DArrayCompatibleKHR";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032651 case ImageCreateFlagBits::eSampleLocationsCompatibleDepthEXT: return "SampleLocationsCompatibleDepthEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032652 default: return "invalid";
32653 }
32654 }
32655
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032656 VULKAN_HPP_INLINE std::string to_string(ImageCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032657 {
32658 if (!value) return "{}";
32659 std::string result;
32660 if (value & ImageCreateFlagBits::eSparseBinding) result += "SparseBinding | ";
32661 if (value & ImageCreateFlagBits::eSparseResidency) result += "SparseResidency | ";
32662 if (value & ImageCreateFlagBits::eSparseAliased) result += "SparseAliased | ";
32663 if (value & ImageCreateFlagBits::eMutableFormat) result += "MutableFormat | ";
32664 if (value & ImageCreateFlagBits::eCubeCompatible) result += "CubeCompatible | ";
Mark Young0f183a82017-02-28 09:58:04 -070032665 if (value & ImageCreateFlagBits::eBindSfrKHX) result += "BindSfrKHX | ";
Mark Young39389872017-01-19 21:10:49 -070032666 if (value & ImageCreateFlagBits::e2DArrayCompatibleKHR) result += "2DArrayCompatibleKHR | ";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060032667 if (value & ImageCreateFlagBits::eSampleLocationsCompatibleDepthEXT) result += "SampleLocationsCompatibleDepthEXT | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032668 return "{" + result.substr(0, result.size() - 3) + "}";
32669 }
32670
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032671 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032672 {
32673 switch (value)
32674 {
32675 case PipelineCreateFlagBits::eDisableOptimization: return "DisableOptimization";
32676 case PipelineCreateFlagBits::eAllowDerivatives: return "AllowDerivatives";
32677 case PipelineCreateFlagBits::eDerivative: return "Derivative";
Mark Young0f183a82017-02-28 09:58:04 -070032678 case PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX: return "ViewIndexFromDeviceIndexKHX";
32679 case PipelineCreateFlagBits::eDispatchBaseKHX: return "DispatchBaseKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032680 default: return "invalid";
32681 }
32682 }
32683
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032684 VULKAN_HPP_INLINE std::string to_string(PipelineCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032685 {
32686 if (!value) return "{}";
32687 std::string result;
32688 if (value & PipelineCreateFlagBits::eDisableOptimization) result += "DisableOptimization | ";
32689 if (value & PipelineCreateFlagBits::eAllowDerivatives) result += "AllowDerivatives | ";
32690 if (value & PipelineCreateFlagBits::eDerivative) result += "Derivative | ";
Mark Young0f183a82017-02-28 09:58:04 -070032691 if (value & PipelineCreateFlagBits::eViewIndexFromDeviceIndexKHX) result += "ViewIndexFromDeviceIndexKHX | ";
32692 if (value & PipelineCreateFlagBits::eDispatchBaseKHX) result += "DispatchBaseKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032693 return "{" + result.substr(0, result.size() - 3) + "}";
32694 }
32695
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032696 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032697 {
32698 switch (value)
32699 {
32700 case ColorComponentFlagBits::eR: return "R";
32701 case ColorComponentFlagBits::eG: return "G";
32702 case ColorComponentFlagBits::eB: return "B";
32703 case ColorComponentFlagBits::eA: return "A";
32704 default: return "invalid";
32705 }
32706 }
32707
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032708 VULKAN_HPP_INLINE std::string to_string(ColorComponentFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032709 {
32710 if (!value) return "{}";
32711 std::string result;
32712 if (value & ColorComponentFlagBits::eR) result += "R | ";
32713 if (value & ColorComponentFlagBits::eG) result += "G | ";
32714 if (value & ColorComponentFlagBits::eB) result += "B | ";
32715 if (value & ColorComponentFlagBits::eA) result += "A | ";
32716 return "{" + result.substr(0, result.size() - 3) + "}";
32717 }
32718
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032719 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032720 {
32721 switch (value)
32722 {
32723 case FenceCreateFlagBits::eSignaled: return "Signaled";
32724 default: return "invalid";
32725 }
32726 }
32727
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032728 VULKAN_HPP_INLINE std::string to_string(FenceCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032729 {
32730 if (!value) return "{}";
32731 std::string result;
32732 if (value & FenceCreateFlagBits::eSignaled) result += "Signaled | ";
32733 return "{" + result.substr(0, result.size() - 3) + "}";
32734 }
32735
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032736 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032737 {
32738 switch (value)
32739 {
32740 case FormatFeatureFlagBits::eSampledImage: return "SampledImage";
32741 case FormatFeatureFlagBits::eStorageImage: return "StorageImage";
32742 case FormatFeatureFlagBits::eStorageImageAtomic: return "StorageImageAtomic";
32743 case FormatFeatureFlagBits::eUniformTexelBuffer: return "UniformTexelBuffer";
32744 case FormatFeatureFlagBits::eStorageTexelBuffer: return "StorageTexelBuffer";
32745 case FormatFeatureFlagBits::eStorageTexelBufferAtomic: return "StorageTexelBufferAtomic";
32746 case FormatFeatureFlagBits::eVertexBuffer: return "VertexBuffer";
32747 case FormatFeatureFlagBits::eColorAttachment: return "ColorAttachment";
32748 case FormatFeatureFlagBits::eColorAttachmentBlend: return "ColorAttachmentBlend";
32749 case FormatFeatureFlagBits::eDepthStencilAttachment: return "DepthStencilAttachment";
32750 case FormatFeatureFlagBits::eBlitSrc: return "BlitSrc";
32751 case FormatFeatureFlagBits::eBlitDst: return "BlitDst";
32752 case FormatFeatureFlagBits::eSampledImageFilterLinear: return "SampledImageFilterLinear";
32753 case FormatFeatureFlagBits::eSampledImageFilterCubicIMG: return "SampledImageFilterCubicIMG";
Mark Young39389872017-01-19 21:10:49 -070032754 case FormatFeatureFlagBits::eTransferSrcKHR: return "TransferSrcKHR";
32755 case FormatFeatureFlagBits::eTransferDstKHR: return "TransferDstKHR";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060032756 case FormatFeatureFlagBits::eSampledImageFilterMinmaxEXT: return "SampledImageFilterMinmaxEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032757 default: return "invalid";
32758 }
32759 }
32760
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032761 VULKAN_HPP_INLINE std::string to_string(FormatFeatureFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032762 {
32763 if (!value) return "{}";
32764 std::string result;
32765 if (value & FormatFeatureFlagBits::eSampledImage) result += "SampledImage | ";
32766 if (value & FormatFeatureFlagBits::eStorageImage) result += "StorageImage | ";
32767 if (value & FormatFeatureFlagBits::eStorageImageAtomic) result += "StorageImageAtomic | ";
32768 if (value & FormatFeatureFlagBits::eUniformTexelBuffer) result += "UniformTexelBuffer | ";
32769 if (value & FormatFeatureFlagBits::eStorageTexelBuffer) result += "StorageTexelBuffer | ";
32770 if (value & FormatFeatureFlagBits::eStorageTexelBufferAtomic) result += "StorageTexelBufferAtomic | ";
32771 if (value & FormatFeatureFlagBits::eVertexBuffer) result += "VertexBuffer | ";
32772 if (value & FormatFeatureFlagBits::eColorAttachment) result += "ColorAttachment | ";
32773 if (value & FormatFeatureFlagBits::eColorAttachmentBlend) result += "ColorAttachmentBlend | ";
32774 if (value & FormatFeatureFlagBits::eDepthStencilAttachment) result += "DepthStencilAttachment | ";
32775 if (value & FormatFeatureFlagBits::eBlitSrc) result += "BlitSrc | ";
32776 if (value & FormatFeatureFlagBits::eBlitDst) result += "BlitDst | ";
32777 if (value & FormatFeatureFlagBits::eSampledImageFilterLinear) result += "SampledImageFilterLinear | ";
32778 if (value & FormatFeatureFlagBits::eSampledImageFilterCubicIMG) result += "SampledImageFilterCubicIMG | ";
Mark Young39389872017-01-19 21:10:49 -070032779 if (value & FormatFeatureFlagBits::eTransferSrcKHR) result += "TransferSrcKHR | ";
32780 if (value & FormatFeatureFlagBits::eTransferDstKHR) result += "TransferDstKHR | ";
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060032781 if (value & FormatFeatureFlagBits::eSampledImageFilterMinmaxEXT) result += "SampledImageFilterMinmaxEXT | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032782 return "{" + result.substr(0, result.size() - 3) + "}";
32783 }
32784
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032785 VULKAN_HPP_INLINE std::string to_string(QueryControlFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032786 {
32787 switch (value)
32788 {
32789 case QueryControlFlagBits::ePrecise: return "Precise";
32790 default: return "invalid";
32791 }
32792 }
32793
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032794 VULKAN_HPP_INLINE std::string to_string(QueryControlFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032795 {
32796 if (!value) return "{}";
32797 std::string result;
32798 if (value & QueryControlFlagBits::ePrecise) result += "Precise | ";
32799 return "{" + result.substr(0, result.size() - 3) + "}";
32800 }
32801
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032802 VULKAN_HPP_INLINE std::string to_string(QueryResultFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032803 {
32804 switch (value)
32805 {
32806 case QueryResultFlagBits::e64: return "64";
32807 case QueryResultFlagBits::eWait: return "Wait";
32808 case QueryResultFlagBits::eWithAvailability: return "WithAvailability";
32809 case QueryResultFlagBits::ePartial: return "Partial";
32810 default: return "invalid";
32811 }
32812 }
32813
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032814 VULKAN_HPP_INLINE std::string to_string(QueryResultFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032815 {
32816 if (!value) return "{}";
32817 std::string result;
32818 if (value & QueryResultFlagBits::e64) result += "64 | ";
32819 if (value & QueryResultFlagBits::eWait) result += "Wait | ";
32820 if (value & QueryResultFlagBits::eWithAvailability) result += "WithAvailability | ";
32821 if (value & QueryResultFlagBits::ePartial) result += "Partial | ";
32822 return "{" + result.substr(0, result.size() - 3) + "}";
32823 }
32824
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032825 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032826 {
32827 switch (value)
32828 {
32829 case CommandBufferUsageFlagBits::eOneTimeSubmit: return "OneTimeSubmit";
32830 case CommandBufferUsageFlagBits::eRenderPassContinue: return "RenderPassContinue";
32831 case CommandBufferUsageFlagBits::eSimultaneousUse: return "SimultaneousUse";
32832 default: return "invalid";
32833 }
32834 }
32835
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032836 VULKAN_HPP_INLINE std::string to_string(CommandBufferUsageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032837 {
32838 if (!value) return "{}";
32839 std::string result;
32840 if (value & CommandBufferUsageFlagBits::eOneTimeSubmit) result += "OneTimeSubmit | ";
32841 if (value & CommandBufferUsageFlagBits::eRenderPassContinue) result += "RenderPassContinue | ";
32842 if (value & CommandBufferUsageFlagBits::eSimultaneousUse) result += "SimultaneousUse | ";
32843 return "{" + result.substr(0, result.size() - 3) + "}";
32844 }
32845
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032846 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032847 {
32848 switch (value)
32849 {
32850 case QueryPipelineStatisticFlagBits::eInputAssemblyVertices: return "InputAssemblyVertices";
32851 case QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives: return "InputAssemblyPrimitives";
32852 case QueryPipelineStatisticFlagBits::eVertexShaderInvocations: return "VertexShaderInvocations";
32853 case QueryPipelineStatisticFlagBits::eGeometryShaderInvocations: return "GeometryShaderInvocations";
32854 case QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives: return "GeometryShaderPrimitives";
32855 case QueryPipelineStatisticFlagBits::eClippingInvocations: return "ClippingInvocations";
32856 case QueryPipelineStatisticFlagBits::eClippingPrimitives: return "ClippingPrimitives";
32857 case QueryPipelineStatisticFlagBits::eFragmentShaderInvocations: return "FragmentShaderInvocations";
32858 case QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches: return "TessellationControlShaderPatches";
32859 case QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations: return "TessellationEvaluationShaderInvocations";
32860 case QueryPipelineStatisticFlagBits::eComputeShaderInvocations: return "ComputeShaderInvocations";
32861 default: return "invalid";
32862 }
32863 }
32864
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032865 VULKAN_HPP_INLINE std::string to_string(QueryPipelineStatisticFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032866 {
32867 if (!value) return "{}";
32868 std::string result;
32869 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyVertices) result += "InputAssemblyVertices | ";
32870 if (value & QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives) result += "InputAssemblyPrimitives | ";
32871 if (value & QueryPipelineStatisticFlagBits::eVertexShaderInvocations) result += "VertexShaderInvocations | ";
32872 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderInvocations) result += "GeometryShaderInvocations | ";
32873 if (value & QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives) result += "GeometryShaderPrimitives | ";
32874 if (value & QueryPipelineStatisticFlagBits::eClippingInvocations) result += "ClippingInvocations | ";
32875 if (value & QueryPipelineStatisticFlagBits::eClippingPrimitives) result += "ClippingPrimitives | ";
32876 if (value & QueryPipelineStatisticFlagBits::eFragmentShaderInvocations) result += "FragmentShaderInvocations | ";
32877 if (value & QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches) result += "TessellationControlShaderPatches | ";
32878 if (value & QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations) result += "TessellationEvaluationShaderInvocations | ";
32879 if (value & QueryPipelineStatisticFlagBits::eComputeShaderInvocations) result += "ComputeShaderInvocations | ";
32880 return "{" + result.substr(0, result.size() - 3) + "}";
32881 }
32882
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032883 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032884 {
32885 switch (value)
32886 {
32887 case ImageAspectFlagBits::eColor: return "Color";
32888 case ImageAspectFlagBits::eDepth: return "Depth";
32889 case ImageAspectFlagBits::eStencil: return "Stencil";
32890 case ImageAspectFlagBits::eMetadata: return "Metadata";
32891 default: return "invalid";
32892 }
32893 }
32894
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032895 VULKAN_HPP_INLINE std::string to_string(ImageAspectFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032896 {
32897 if (!value) return "{}";
32898 std::string result;
32899 if (value & ImageAspectFlagBits::eColor) result += "Color | ";
32900 if (value & ImageAspectFlagBits::eDepth) result += "Depth | ";
32901 if (value & ImageAspectFlagBits::eStencil) result += "Stencil | ";
32902 if (value & ImageAspectFlagBits::eMetadata) result += "Metadata | ";
32903 return "{" + result.substr(0, result.size() - 3) + "}";
32904 }
32905
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032906 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032907 {
32908 switch (value)
32909 {
32910 case SparseImageFormatFlagBits::eSingleMiptail: return "SingleMiptail";
32911 case SparseImageFormatFlagBits::eAlignedMipSize: return "AlignedMipSize";
32912 case SparseImageFormatFlagBits::eNonstandardBlockSize: return "NonstandardBlockSize";
32913 default: return "invalid";
32914 }
32915 }
32916
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032917 VULKAN_HPP_INLINE std::string to_string(SparseImageFormatFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032918 {
32919 if (!value) return "{}";
32920 std::string result;
32921 if (value & SparseImageFormatFlagBits::eSingleMiptail) result += "SingleMiptail | ";
32922 if (value & SparseImageFormatFlagBits::eAlignedMipSize) result += "AlignedMipSize | ";
32923 if (value & SparseImageFormatFlagBits::eNonstandardBlockSize) result += "NonstandardBlockSize | ";
32924 return "{" + result.substr(0, result.size() - 3) + "}";
32925 }
32926
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032927 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032928 {
32929 switch (value)
32930 {
32931 case SparseMemoryBindFlagBits::eMetadata: return "Metadata";
32932 default: return "invalid";
32933 }
32934 }
32935
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032936 VULKAN_HPP_INLINE std::string to_string(SparseMemoryBindFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032937 {
32938 if (!value) return "{}";
32939 std::string result;
32940 if (value & SparseMemoryBindFlagBits::eMetadata) result += "Metadata | ";
32941 return "{" + result.substr(0, result.size() - 3) + "}";
32942 }
32943
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032944 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032945 {
32946 switch (value)
32947 {
32948 case PipelineStageFlagBits::eTopOfPipe: return "TopOfPipe";
32949 case PipelineStageFlagBits::eDrawIndirect: return "DrawIndirect";
32950 case PipelineStageFlagBits::eVertexInput: return "VertexInput";
32951 case PipelineStageFlagBits::eVertexShader: return "VertexShader";
32952 case PipelineStageFlagBits::eTessellationControlShader: return "TessellationControlShader";
32953 case PipelineStageFlagBits::eTessellationEvaluationShader: return "TessellationEvaluationShader";
32954 case PipelineStageFlagBits::eGeometryShader: return "GeometryShader";
32955 case PipelineStageFlagBits::eFragmentShader: return "FragmentShader";
32956 case PipelineStageFlagBits::eEarlyFragmentTests: return "EarlyFragmentTests";
32957 case PipelineStageFlagBits::eLateFragmentTests: return "LateFragmentTests";
32958 case PipelineStageFlagBits::eColorAttachmentOutput: return "ColorAttachmentOutput";
32959 case PipelineStageFlagBits::eComputeShader: return "ComputeShader";
32960 case PipelineStageFlagBits::eTransfer: return "Transfer";
32961 case PipelineStageFlagBits::eBottomOfPipe: return "BottomOfPipe";
32962 case PipelineStageFlagBits::eHost: return "Host";
32963 case PipelineStageFlagBits::eAllGraphics: return "AllGraphics";
32964 case PipelineStageFlagBits::eAllCommands: return "AllCommands";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032965 case PipelineStageFlagBits::eCommandProcessNVX: return "CommandProcessNVX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032966 default: return "invalid";
32967 }
32968 }
32969
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032970 VULKAN_HPP_INLINE std::string to_string(PipelineStageFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032971 {
32972 if (!value) return "{}";
32973 std::string result;
32974 if (value & PipelineStageFlagBits::eTopOfPipe) result += "TopOfPipe | ";
32975 if (value & PipelineStageFlagBits::eDrawIndirect) result += "DrawIndirect | ";
32976 if (value & PipelineStageFlagBits::eVertexInput) result += "VertexInput | ";
32977 if (value & PipelineStageFlagBits::eVertexShader) result += "VertexShader | ";
32978 if (value & PipelineStageFlagBits::eTessellationControlShader) result += "TessellationControlShader | ";
32979 if (value & PipelineStageFlagBits::eTessellationEvaluationShader) result += "TessellationEvaluationShader | ";
32980 if (value & PipelineStageFlagBits::eGeometryShader) result += "GeometryShader | ";
32981 if (value & PipelineStageFlagBits::eFragmentShader) result += "FragmentShader | ";
32982 if (value & PipelineStageFlagBits::eEarlyFragmentTests) result += "EarlyFragmentTests | ";
32983 if (value & PipelineStageFlagBits::eLateFragmentTests) result += "LateFragmentTests | ";
32984 if (value & PipelineStageFlagBits::eColorAttachmentOutput) result += "ColorAttachmentOutput | ";
32985 if (value & PipelineStageFlagBits::eComputeShader) result += "ComputeShader | ";
32986 if (value & PipelineStageFlagBits::eTransfer) result += "Transfer | ";
32987 if (value & PipelineStageFlagBits::eBottomOfPipe) result += "BottomOfPipe | ";
32988 if (value & PipelineStageFlagBits::eHost) result += "Host | ";
32989 if (value & PipelineStageFlagBits::eAllGraphics) result += "AllGraphics | ";
32990 if (value & PipelineStageFlagBits::eAllCommands) result += "AllCommands | ";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032991 if (value & PipelineStageFlagBits::eCommandProcessNVX) result += "CommandProcessNVX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032992 return "{" + result.substr(0, result.size() - 3) + "}";
32993 }
32994
Mark Lobodzinski2d589822016-12-12 09:44:34 -070032995 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060032996 {
32997 switch (value)
32998 {
32999 case CommandPoolCreateFlagBits::eTransient: return "Transient";
33000 case CommandPoolCreateFlagBits::eResetCommandBuffer: return "ResetCommandBuffer";
33001 default: return "invalid";
33002 }
33003 }
33004
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033005 VULKAN_HPP_INLINE std::string to_string(CommandPoolCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033006 {
33007 if (!value) return "{}";
33008 std::string result;
33009 if (value & CommandPoolCreateFlagBits::eTransient) result += "Transient | ";
33010 if (value & CommandPoolCreateFlagBits::eResetCommandBuffer) result += "ResetCommandBuffer | ";
33011 return "{" + result.substr(0, result.size() - 3) + "}";
33012 }
33013
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033014 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033015 {
33016 switch (value)
33017 {
33018 case CommandPoolResetFlagBits::eReleaseResources: return "ReleaseResources";
33019 default: return "invalid";
33020 }
33021 }
33022
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033023 VULKAN_HPP_INLINE std::string to_string(CommandPoolResetFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033024 {
33025 if (!value) return "{}";
33026 std::string result;
33027 if (value & CommandPoolResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
33028 return "{" + result.substr(0, result.size() - 3) + "}";
33029 }
33030
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033031 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033032 {
33033 switch (value)
33034 {
33035 case CommandBufferResetFlagBits::eReleaseResources: return "ReleaseResources";
33036 default: return "invalid";
33037 }
33038 }
33039
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033040 VULKAN_HPP_INLINE std::string to_string(CommandBufferResetFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033041 {
33042 if (!value) return "{}";
33043 std::string result;
33044 if (value & CommandBufferResetFlagBits::eReleaseResources) result += "ReleaseResources | ";
33045 return "{" + result.substr(0, result.size() - 3) + "}";
33046 }
33047
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033048 VULKAN_HPP_INLINE std::string to_string(SampleCountFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033049 {
33050 switch (value)
33051 {
33052 case SampleCountFlagBits::e1: return "1";
33053 case SampleCountFlagBits::e2: return "2";
33054 case SampleCountFlagBits::e4: return "4";
33055 case SampleCountFlagBits::e8: return "8";
33056 case SampleCountFlagBits::e16: return "16";
33057 case SampleCountFlagBits::e32: return "32";
33058 case SampleCountFlagBits::e64: return "64";
33059 default: return "invalid";
33060 }
33061 }
33062
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033063 VULKAN_HPP_INLINE std::string to_string(SampleCountFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033064 {
33065 if (!value) return "{}";
33066 std::string result;
33067 if (value & SampleCountFlagBits::e1) result += "1 | ";
33068 if (value & SampleCountFlagBits::e2) result += "2 | ";
33069 if (value & SampleCountFlagBits::e4) result += "4 | ";
33070 if (value & SampleCountFlagBits::e8) result += "8 | ";
33071 if (value & SampleCountFlagBits::e16) result += "16 | ";
33072 if (value & SampleCountFlagBits::e32) result += "32 | ";
33073 if (value & SampleCountFlagBits::e64) result += "64 | ";
33074 return "{" + result.substr(0, result.size() - 3) + "}";
33075 }
33076
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033077 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033078 {
33079 switch (value)
33080 {
33081 case AttachmentDescriptionFlagBits::eMayAlias: return "MayAlias";
33082 default: return "invalid";
33083 }
33084 }
33085
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033086 VULKAN_HPP_INLINE std::string to_string(AttachmentDescriptionFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033087 {
33088 if (!value) return "{}";
33089 std::string result;
33090 if (value & AttachmentDescriptionFlagBits::eMayAlias) result += "MayAlias | ";
33091 return "{" + result.substr(0, result.size() - 3) + "}";
33092 }
33093
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033094 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033095 {
33096 switch (value)
33097 {
33098 case StencilFaceFlagBits::eFront: return "Front";
33099 case StencilFaceFlagBits::eBack: return "Back";
33100 case StencilFaceFlagBits::eVkStencilFrontAndBack: return "VkStencilFrontAndBack";
33101 default: return "invalid";
33102 }
33103 }
33104
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033105 VULKAN_HPP_INLINE std::string to_string(StencilFaceFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033106 {
33107 if (!value) return "{}";
33108 std::string result;
33109 if (value & StencilFaceFlagBits::eFront) result += "Front | ";
33110 if (value & StencilFaceFlagBits::eBack) result += "Back | ";
33111 if (value & StencilFaceFlagBits::eVkStencilFrontAndBack) result += "VkStencilFrontAndBack | ";
33112 return "{" + result.substr(0, result.size() - 3) + "}";
33113 }
33114
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033115 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033116 {
33117 switch (value)
33118 {
33119 case DescriptorPoolCreateFlagBits::eFreeDescriptorSet: return "FreeDescriptorSet";
33120 default: return "invalid";
33121 }
33122 }
33123
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033124 VULKAN_HPP_INLINE std::string to_string(DescriptorPoolCreateFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033125 {
33126 if (!value) return "{}";
33127 std::string result;
33128 if (value & DescriptorPoolCreateFlagBits::eFreeDescriptorSet) result += "FreeDescriptorSet | ";
33129 return "{" + result.substr(0, result.size() - 3) + "}";
33130 }
33131
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033132 VULKAN_HPP_INLINE std::string to_string(DependencyFlagBits value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033133 {
33134 switch (value)
33135 {
33136 case DependencyFlagBits::eByRegion: return "ByRegion";
Mark Young0f183a82017-02-28 09:58:04 -070033137 case DependencyFlagBits::eViewLocalKHX: return "ViewLocalKHX";
33138 case DependencyFlagBits::eDeviceGroupKHX: return "DeviceGroupKHX";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033139 default: return "invalid";
33140 }
33141 }
33142
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033143 VULKAN_HPP_INLINE std::string to_string(DependencyFlags value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033144 {
33145 if (!value) return "{}";
33146 std::string result;
33147 if (value & DependencyFlagBits::eByRegion) result += "ByRegion | ";
Mark Young0f183a82017-02-28 09:58:04 -070033148 if (value & DependencyFlagBits::eViewLocalKHX) result += "ViewLocalKHX | ";
33149 if (value & DependencyFlagBits::eDeviceGroupKHX) result += "DeviceGroupKHX | ";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033150 return "{" + result.substr(0, result.size() - 3) + "}";
33151 }
33152
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033153 VULKAN_HPP_INLINE std::string to_string(PresentModeKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033154 {
33155 switch (value)
33156 {
33157 case PresentModeKHR::eImmediate: return "Immediate";
33158 case PresentModeKHR::eMailbox: return "Mailbox";
33159 case PresentModeKHR::eFifo: return "Fifo";
33160 case PresentModeKHR::eFifoRelaxed: return "FifoRelaxed";
Mark Lobodzinski54385432017-05-15 10:27:52 -060033161 case PresentModeKHR::eSharedDemandRefresh: return "SharedDemandRefresh";
33162 case PresentModeKHR::eSharedContinuousRefresh: return "SharedContinuousRefresh";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033163 default: return "invalid";
33164 }
33165 }
33166
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033167 VULKAN_HPP_INLINE std::string to_string(ColorSpaceKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033168 {
33169 switch (value)
33170 {
33171 case ColorSpaceKHR::eSrgbNonlinear: return "SrgbNonlinear";
Mark Lobodzinskib9b6ad32017-03-27 14:40:17 -060033172 case ColorSpaceKHR::eDisplayP3NonlinearEXT: return "DisplayP3NonlinearEXT";
33173 case ColorSpaceKHR::eExtendedSrgbLinearEXT: return "ExtendedSrgbLinearEXT";
33174 case ColorSpaceKHR::eDciP3LinearEXT: return "DciP3LinearEXT";
33175 case ColorSpaceKHR::eDciP3NonlinearEXT: return "DciP3NonlinearEXT";
33176 case ColorSpaceKHR::eBt709LinearEXT: return "Bt709LinearEXT";
33177 case ColorSpaceKHR::eBt709NonlinearEXT: return "Bt709NonlinearEXT";
33178 case ColorSpaceKHR::eBt2020LinearEXT: return "Bt2020LinearEXT";
33179 case ColorSpaceKHR::eHdr10St2084EXT: return "Hdr10St2084EXT";
33180 case ColorSpaceKHR::eDolbyvisionEXT: return "DolbyvisionEXT";
33181 case ColorSpaceKHR::eHdr10HlgEXT: return "Hdr10HlgEXT";
33182 case ColorSpaceKHR::eAdobergbLinearEXT: return "AdobergbLinearEXT";
33183 case ColorSpaceKHR::eAdobergbNonlinearEXT: return "AdobergbNonlinearEXT";
33184 case ColorSpaceKHR::ePassThroughEXT: return "PassThroughEXT";
Mark Lobodzinskie4f2c5f2017-07-17 14:26:47 -060033185 case ColorSpaceKHR::eExtendedSrgbNonlinearEXT: return "ExtendedSrgbNonlinearEXT";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033186 default: return "invalid";
33187 }
33188 }
33189
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033190 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033191 {
33192 switch (value)
33193 {
33194 case DisplayPlaneAlphaFlagBitsKHR::eOpaque: return "Opaque";
33195 case DisplayPlaneAlphaFlagBitsKHR::eGlobal: return "Global";
33196 case DisplayPlaneAlphaFlagBitsKHR::ePerPixel: return "PerPixel";
33197 case DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied: return "PerPixelPremultiplied";
33198 default: return "invalid";
33199 }
33200 }
33201
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033202 VULKAN_HPP_INLINE std::string to_string(DisplayPlaneAlphaFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033203 {
33204 if (!value) return "{}";
33205 std::string result;
33206 if (value & DisplayPlaneAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
33207 if (value & DisplayPlaneAlphaFlagBitsKHR::eGlobal) result += "Global | ";
33208 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixel) result += "PerPixel | ";
33209 if (value & DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied) result += "PerPixelPremultiplied | ";
33210 return "{" + result.substr(0, result.size() - 3) + "}";
33211 }
33212
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033213 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033214 {
33215 switch (value)
33216 {
33217 case CompositeAlphaFlagBitsKHR::eOpaque: return "Opaque";
33218 case CompositeAlphaFlagBitsKHR::ePreMultiplied: return "PreMultiplied";
33219 case CompositeAlphaFlagBitsKHR::ePostMultiplied: return "PostMultiplied";
33220 case CompositeAlphaFlagBitsKHR::eInherit: return "Inherit";
33221 default: return "invalid";
33222 }
33223 }
33224
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033225 VULKAN_HPP_INLINE std::string to_string(CompositeAlphaFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033226 {
33227 if (!value) return "{}";
33228 std::string result;
33229 if (value & CompositeAlphaFlagBitsKHR::eOpaque) result += "Opaque | ";
33230 if (value & CompositeAlphaFlagBitsKHR::ePreMultiplied) result += "PreMultiplied | ";
33231 if (value & CompositeAlphaFlagBitsKHR::ePostMultiplied) result += "PostMultiplied | ";
33232 if (value & CompositeAlphaFlagBitsKHR::eInherit) result += "Inherit | ";
33233 return "{" + result.substr(0, result.size() - 3) + "}";
33234 }
33235
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033236 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagBitsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033237 {
33238 switch (value)
33239 {
33240 case SurfaceTransformFlagBitsKHR::eIdentity: return "Identity";
33241 case SurfaceTransformFlagBitsKHR::eRotate90: return "Rotate90";
33242 case SurfaceTransformFlagBitsKHR::eRotate180: return "Rotate180";
33243 case SurfaceTransformFlagBitsKHR::eRotate270: return "Rotate270";
33244 case SurfaceTransformFlagBitsKHR::eHorizontalMirror: return "HorizontalMirror";
33245 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90: return "HorizontalMirrorRotate90";
33246 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180: return "HorizontalMirrorRotate180";
33247 case SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270: return "HorizontalMirrorRotate270";
33248 case SurfaceTransformFlagBitsKHR::eInherit: return "Inherit";
33249 default: return "invalid";
33250 }
33251 }
33252
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033253 VULKAN_HPP_INLINE std::string to_string(SurfaceTransformFlagsKHR value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033254 {
33255 if (!value) return "{}";
33256 std::string result;
33257 if (value & SurfaceTransformFlagBitsKHR::eIdentity) result += "Identity | ";
33258 if (value & SurfaceTransformFlagBitsKHR::eRotate90) result += "Rotate90 | ";
33259 if (value & SurfaceTransformFlagBitsKHR::eRotate180) result += "Rotate180 | ";
33260 if (value & SurfaceTransformFlagBitsKHR::eRotate270) result += "Rotate270 | ";
33261 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirror) result += "HorizontalMirror | ";
33262 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90) result += "HorizontalMirrorRotate90 | ";
33263 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180) result += "HorizontalMirrorRotate180 | ";
33264 if (value & SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270) result += "HorizontalMirrorRotate270 | ";
33265 if (value & SurfaceTransformFlagBitsKHR::eInherit) result += "Inherit | ";
33266 return "{" + result.substr(0, result.size() - 3) + "}";
33267 }
33268
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033269 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagBitsEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033270 {
33271 switch (value)
33272 {
33273 case DebugReportFlagBitsEXT::eInformation: return "Information";
33274 case DebugReportFlagBitsEXT::eWarning: return "Warning";
33275 case DebugReportFlagBitsEXT::ePerformanceWarning: return "PerformanceWarning";
33276 case DebugReportFlagBitsEXT::eError: return "Error";
33277 case DebugReportFlagBitsEXT::eDebug: return "Debug";
33278 default: return "invalid";
33279 }
33280 }
33281
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033282 VULKAN_HPP_INLINE std::string to_string(DebugReportFlagsEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033283 {
33284 if (!value) return "{}";
33285 std::string result;
33286 if (value & DebugReportFlagBitsEXT::eInformation) result += "Information | ";
33287 if (value & DebugReportFlagBitsEXT::eWarning) result += "Warning | ";
33288 if (value & DebugReportFlagBitsEXT::ePerformanceWarning) result += "PerformanceWarning | ";
33289 if (value & DebugReportFlagBitsEXT::eError) result += "Error | ";
33290 if (value & DebugReportFlagBitsEXT::eDebug) result += "Debug | ";
33291 return "{" + result.substr(0, result.size() - 3) + "}";
33292 }
33293
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033294 VULKAN_HPP_INLINE std::string to_string(DebugReportObjectTypeEXT value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033295 {
33296 switch (value)
33297 {
33298 case DebugReportObjectTypeEXT::eUnknown: return "Unknown";
33299 case DebugReportObjectTypeEXT::eInstance: return "Instance";
33300 case DebugReportObjectTypeEXT::ePhysicalDevice: return "PhysicalDevice";
33301 case DebugReportObjectTypeEXT::eDevice: return "Device";
33302 case DebugReportObjectTypeEXT::eQueue: return "Queue";
33303 case DebugReportObjectTypeEXT::eSemaphore: return "Semaphore";
33304 case DebugReportObjectTypeEXT::eCommandBuffer: return "CommandBuffer";
33305 case DebugReportObjectTypeEXT::eFence: return "Fence";
33306 case DebugReportObjectTypeEXT::eDeviceMemory: return "DeviceMemory";
33307 case DebugReportObjectTypeEXT::eBuffer: return "Buffer";
33308 case DebugReportObjectTypeEXT::eImage: return "Image";
33309 case DebugReportObjectTypeEXT::eEvent: return "Event";
33310 case DebugReportObjectTypeEXT::eQueryPool: return "QueryPool";
33311 case DebugReportObjectTypeEXT::eBufferView: return "BufferView";
33312 case DebugReportObjectTypeEXT::eImageView: return "ImageView";
33313 case DebugReportObjectTypeEXT::eShaderModule: return "ShaderModule";
33314 case DebugReportObjectTypeEXT::ePipelineCache: return "PipelineCache";
33315 case DebugReportObjectTypeEXT::ePipelineLayout: return "PipelineLayout";
33316 case DebugReportObjectTypeEXT::eRenderPass: return "RenderPass";
33317 case DebugReportObjectTypeEXT::ePipeline: return "Pipeline";
33318 case DebugReportObjectTypeEXT::eDescriptorSetLayout: return "DescriptorSetLayout";
33319 case DebugReportObjectTypeEXT::eSampler: return "Sampler";
33320 case DebugReportObjectTypeEXT::eDescriptorPool: return "DescriptorPool";
33321 case DebugReportObjectTypeEXT::eDescriptorSet: return "DescriptorSet";
33322 case DebugReportObjectTypeEXT::eFramebuffer: return "Framebuffer";
33323 case DebugReportObjectTypeEXT::eCommandPool: return "CommandPool";
33324 case DebugReportObjectTypeEXT::eSurfaceKhr: return "SurfaceKhr";
33325 case DebugReportObjectTypeEXT::eSwapchainKhr: return "SwapchainKhr";
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060033326 case DebugReportObjectTypeEXT::eDebugReportCallbackExt: return "DebugReportCallbackExt";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033327 case DebugReportObjectTypeEXT::eDisplayKhr: return "DisplayKhr";
33328 case DebugReportObjectTypeEXT::eDisplayModeKhr: return "DisplayModeKhr";
33329 case DebugReportObjectTypeEXT::eObjectTableNvx: return "ObjectTableNvx";
33330 case DebugReportObjectTypeEXT::eIndirectCommandsLayoutNvx: return "IndirectCommandsLayoutNvx";
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033331 case DebugReportObjectTypeEXT::eValidationCache: return "ValidationCache";
Mark Lobodzinski54385432017-05-15 10:27:52 -060033332 case DebugReportObjectTypeEXT::eDescriptorUpdateTemplateKHR: return "DescriptorUpdateTemplateKHR";
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033333 default: return "invalid";
33334 }
33335 }
33336
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033337 VULKAN_HPP_INLINE std::string to_string(RasterizationOrderAMD value)
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033338 {
33339 switch (value)
33340 {
33341 case RasterizationOrderAMD::eStrict: return "Strict";
33342 case RasterizationOrderAMD::eRelaxed: return "Relaxed";
33343 default: return "invalid";
33344 }
33345 }
33346
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033347 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060033348 {
33349 switch (value)
33350 {
33351 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32: return "OpaqueWin32";
33352 case ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
33353 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image: return "D3D11Image";
33354 case ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt: return "D3D11ImageKmt";
33355 default: return "invalid";
33356 }
33357 }
33358
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033359 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060033360 {
33361 if (!value) return "{}";
33362 std::string result;
33363 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) result += "OpaqueWin32 | ";
33364 if (value & ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
33365 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) result += "D3D11Image | ";
33366 if (value & ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt) result += "D3D11ImageKmt | ";
33367 return "{" + result.substr(0, result.size() - 3) + "}";
33368 }
33369
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033370 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060033371 {
33372 switch (value)
33373 {
33374 case ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly: return "DedicatedOnly";
33375 case ExternalMemoryFeatureFlagBitsNV::eExportable: return "Exportable";
33376 case ExternalMemoryFeatureFlagBitsNV::eImportable: return "Importable";
33377 default: return "invalid";
33378 }
33379 }
33380
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033381 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsNV value)
Lenny Komow6501c122016-08-31 15:03:49 -060033382 {
33383 if (!value) return "{}";
33384 std::string result;
33385 if (value & ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) result += "DedicatedOnly | ";
33386 if (value & ExternalMemoryFeatureFlagBitsNV::eExportable) result += "Exportable | ";
33387 if (value & ExternalMemoryFeatureFlagBitsNV::eImportable) result += "Importable | ";
33388 return "{" + result.substr(0, result.size() - 3) + "}";
33389 }
33390
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033391 VULKAN_HPP_INLINE std::string to_string(ValidationCheckEXT value)
Lenny Komow68432d72016-09-29 14:16:59 -060033392 {
33393 switch (value)
33394 {
33395 case ValidationCheckEXT::eAll: return "All";
Mark Lobodzinski863d5de2017-05-22 10:10:07 -060033396 case ValidationCheckEXT::eShaders: return "Shaders";
Lenny Komow68432d72016-09-29 14:16:59 -060033397 default: return "invalid";
33398 }
33399 }
33400
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033401 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagBitsNVX value)
33402 {
33403 switch (value)
33404 {
33405 case IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences: return "UnorderedSequences";
33406 case IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences: return "SparseSequences";
33407 case IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions: return "EmptyExecutions";
33408 case IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences: return "IndexedSequences";
33409 default: return "invalid";
33410 }
33411 }
33412
33413 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsLayoutUsageFlagsNVX value)
33414 {
33415 if (!value) return "{}";
33416 std::string result;
33417 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eUnorderedSequences) result += "UnorderedSequences | ";
33418 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eSparseSequences) result += "SparseSequences | ";
33419 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eEmptyExecutions) result += "EmptyExecutions | ";
33420 if (value & IndirectCommandsLayoutUsageFlagBitsNVX::eIndexedSequences) result += "IndexedSequences | ";
33421 return "{" + result.substr(0, result.size() - 3) + "}";
33422 }
33423
33424 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagBitsNVX value)
33425 {
33426 switch (value)
33427 {
33428 case ObjectEntryUsageFlagBitsNVX::eGraphics: return "Graphics";
33429 case ObjectEntryUsageFlagBitsNVX::eCompute: return "Compute";
33430 default: return "invalid";
33431 }
33432 }
33433
33434 VULKAN_HPP_INLINE std::string to_string(ObjectEntryUsageFlagsNVX value)
33435 {
33436 if (!value) return "{}";
33437 std::string result;
33438 if (value & ObjectEntryUsageFlagBitsNVX::eGraphics) result += "Graphics | ";
33439 if (value & ObjectEntryUsageFlagBitsNVX::eCompute) result += "Compute | ";
33440 return "{" + result.substr(0, result.size() - 3) + "}";
33441 }
33442
33443 VULKAN_HPP_INLINE std::string to_string(IndirectCommandsTokenTypeNVX value)
33444 {
33445 switch (value)
33446 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060033447 case IndirectCommandsTokenTypeNVX::ePipeline: return "Pipeline";
33448 case IndirectCommandsTokenTypeNVX::eDescriptorSet: return "DescriptorSet";
33449 case IndirectCommandsTokenTypeNVX::eIndexBuffer: return "IndexBuffer";
33450 case IndirectCommandsTokenTypeNVX::eVertexBuffer: return "VertexBuffer";
33451 case IndirectCommandsTokenTypeNVX::ePushConstant: return "PushConstant";
33452 case IndirectCommandsTokenTypeNVX::eDrawIndexed: return "DrawIndexed";
33453 case IndirectCommandsTokenTypeNVX::eDraw: return "Draw";
33454 case IndirectCommandsTokenTypeNVX::eDispatch: return "Dispatch";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033455 default: return "invalid";
33456 }
33457 }
33458
33459 VULKAN_HPP_INLINE std::string to_string(ObjectEntryTypeNVX value)
33460 {
33461 switch (value)
33462 {
Mark Lobodzinski6ae350d2017-06-05 09:27:30 -060033463 case ObjectEntryTypeNVX::eDescriptorSet: return "DescriptorSet";
33464 case ObjectEntryTypeNVX::ePipeline: return "Pipeline";
33465 case ObjectEntryTypeNVX::eIndexBuffer: return "IndexBuffer";
33466 case ObjectEntryTypeNVX::eVertexBuffer: return "VertexBuffer";
33467 case ObjectEntryTypeNVX::ePushConstant: return "PushConstant";
Mark Lobodzinski2d589822016-12-12 09:44:34 -070033468 default: return "invalid";
33469 }
33470 }
33471
Mark Young0f183a82017-02-28 09:58:04 -070033472 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlagBits value)
33473 {
33474 switch (value)
33475 {
33476 case DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR: return "PushDescriptorKHR";
33477 default: return "invalid";
33478 }
33479 }
33480
33481 VULKAN_HPP_INLINE std::string to_string(DescriptorSetLayoutCreateFlags value)
33482 {
33483 if (!value) return "{}";
33484 std::string result;
33485 if (value & DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR) result += "PushDescriptorKHR | ";
33486 return "{" + result.substr(0, result.size() - 3) + "}";
33487 }
33488
Mark Youngabc2d6e2017-07-07 07:59:56 -060033489 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagBitsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070033490 {
33491 switch (value)
33492 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060033493 case ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd: return "OpaqueFd";
33494 case ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32: return "OpaqueWin32";
33495 case ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
33496 case ExternalMemoryHandleTypeFlagBitsKHR::eD3D11Texture: return "D3D11Texture";
33497 case ExternalMemoryHandleTypeFlagBitsKHR::eD3D11TextureKmt: return "D3D11TextureKmt";
33498 case ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Heap: return "D3D12Heap";
33499 case ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Resource: return "D3D12Resource";
Mark Young0f183a82017-02-28 09:58:04 -070033500 default: return "invalid";
33501 }
33502 }
33503
Mark Youngabc2d6e2017-07-07 07:59:56 -060033504 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryHandleTypeFlagsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070033505 {
33506 if (!value) return "{}";
33507 std::string result;
Mark Youngabc2d6e2017-07-07 07:59:56 -060033508 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueFd) result += "OpaqueFd | ";
33509 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32) result += "OpaqueWin32 | ";
33510 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
33511 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eD3D11Texture) result += "D3D11Texture | ";
33512 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eD3D11TextureKmt) result += "D3D11TextureKmt | ";
33513 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Heap) result += "D3D12Heap | ";
33514 if (value & ExternalMemoryHandleTypeFlagBitsKHR::eD3D12Resource) result += "D3D12Resource | ";
Mark Young0f183a82017-02-28 09:58:04 -070033515 return "{" + result.substr(0, result.size() - 3) + "}";
33516 }
33517
Mark Youngabc2d6e2017-07-07 07:59:56 -060033518 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagBitsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070033519 {
33520 switch (value)
33521 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060033522 case ExternalMemoryFeatureFlagBitsKHR::eDedicatedOnly: return "DedicatedOnly";
33523 case ExternalMemoryFeatureFlagBitsKHR::eExportable: return "Exportable";
33524 case ExternalMemoryFeatureFlagBitsKHR::eImportable: return "Importable";
Mark Young0f183a82017-02-28 09:58:04 -070033525 default: return "invalid";
33526 }
33527 }
33528
Mark Youngabc2d6e2017-07-07 07:59:56 -060033529 VULKAN_HPP_INLINE std::string to_string(ExternalMemoryFeatureFlagsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070033530 {
33531 if (!value) return "{}";
33532 std::string result;
Mark Youngabc2d6e2017-07-07 07:59:56 -060033533 if (value & ExternalMemoryFeatureFlagBitsKHR::eDedicatedOnly) result += "DedicatedOnly | ";
33534 if (value & ExternalMemoryFeatureFlagBitsKHR::eExportable) result += "Exportable | ";
33535 if (value & ExternalMemoryFeatureFlagBitsKHR::eImportable) result += "Importable | ";
Mark Young0f183a82017-02-28 09:58:04 -070033536 return "{" + result.substr(0, result.size() - 3) + "}";
33537 }
33538
Mark Youngabc2d6e2017-07-07 07:59:56 -060033539 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagBitsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070033540 {
33541 switch (value)
33542 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060033543 case ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd: return "OpaqueFd";
33544 case ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32: return "OpaqueWin32";
33545 case ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
33546 case ExternalSemaphoreHandleTypeFlagBitsKHR::eD3D12Fence: return "D3D12Fence";
33547 case ExternalSemaphoreHandleTypeFlagBitsKHR::eSyncFd: return "SyncFd";
Mark Young0f183a82017-02-28 09:58:04 -070033548 default: return "invalid";
33549 }
33550 }
33551
Mark Youngabc2d6e2017-07-07 07:59:56 -060033552 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreHandleTypeFlagsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070033553 {
33554 if (!value) return "{}";
33555 std::string result;
Mark Youngabc2d6e2017-07-07 07:59:56 -060033556 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueFd) result += "OpaqueFd | ";
33557 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32) result += "OpaqueWin32 | ";
33558 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
33559 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eD3D12Fence) result += "D3D12Fence | ";
33560 if (value & ExternalSemaphoreHandleTypeFlagBitsKHR::eSyncFd) result += "SyncFd | ";
Mark Young0f183a82017-02-28 09:58:04 -070033561 return "{" + result.substr(0, result.size() - 3) + "}";
33562 }
33563
Mark Youngabc2d6e2017-07-07 07:59:56 -060033564 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagBitsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070033565 {
33566 switch (value)
33567 {
Mark Youngabc2d6e2017-07-07 07:59:56 -060033568 case ExternalSemaphoreFeatureFlagBitsKHR::eExportable: return "Exportable";
33569 case ExternalSemaphoreFeatureFlagBitsKHR::eImportable: return "Importable";
Mark Young0f183a82017-02-28 09:58:04 -070033570 default: return "invalid";
33571 }
33572 }
33573
Mark Youngabc2d6e2017-07-07 07:59:56 -060033574 VULKAN_HPP_INLINE std::string to_string(ExternalSemaphoreFeatureFlagsKHR value)
Mark Young0f183a82017-02-28 09:58:04 -070033575 {
33576 if (!value) return "{}";
33577 std::string result;
Mark Youngabc2d6e2017-07-07 07:59:56 -060033578 if (value & ExternalSemaphoreFeatureFlagBitsKHR::eExportable) result += "Exportable | ";
33579 if (value & ExternalSemaphoreFeatureFlagBitsKHR::eImportable) result += "Importable | ";
33580 return "{" + result.substr(0, result.size() - 3) + "}";
33581 }
33582
33583 VULKAN_HPP_INLINE std::string to_string(SemaphoreImportFlagBitsKHR value)
33584 {
33585 switch (value)
33586 {
33587 case SemaphoreImportFlagBitsKHR::eTemporary: return "Temporary";
33588 default: return "invalid";
33589 }
33590 }
33591
33592 VULKAN_HPP_INLINE std::string to_string(SemaphoreImportFlagsKHR value)
33593 {
33594 if (!value) return "{}";
33595 std::string result;
33596 if (value & SemaphoreImportFlagBitsKHR::eTemporary) result += "Temporary | ";
33597 return "{" + result.substr(0, result.size() - 3) + "}";
33598 }
33599
33600 VULKAN_HPP_INLINE std::string to_string(ExternalFenceHandleTypeFlagBitsKHR value)
33601 {
33602 switch (value)
33603 {
33604 case ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd: return "OpaqueFd";
33605 case ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32: return "OpaqueWin32";
33606 case ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32Kmt: return "OpaqueWin32Kmt";
33607 case ExternalFenceHandleTypeFlagBitsKHR::eSyncFd: return "SyncFd";
33608 default: return "invalid";
33609 }
33610 }
33611
33612 VULKAN_HPP_INLINE std::string to_string(ExternalFenceHandleTypeFlagsKHR value)
33613 {
33614 if (!value) return "{}";
33615 std::string result;
33616 if (value & ExternalFenceHandleTypeFlagBitsKHR::eOpaqueFd) result += "OpaqueFd | ";
33617 if (value & ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32) result += "OpaqueWin32 | ";
33618 if (value & ExternalFenceHandleTypeFlagBitsKHR::eOpaqueWin32Kmt) result += "OpaqueWin32Kmt | ";
33619 if (value & ExternalFenceHandleTypeFlagBitsKHR::eSyncFd) result += "SyncFd | ";
33620 return "{" + result.substr(0, result.size() - 3) + "}";
33621 }
33622
33623 VULKAN_HPP_INLINE std::string to_string(ExternalFenceFeatureFlagBitsKHR value)
33624 {
33625 switch (value)
33626 {
33627 case ExternalFenceFeatureFlagBitsKHR::eExportable: return "Exportable";
33628 case ExternalFenceFeatureFlagBitsKHR::eImportable: return "Importable";
33629 default: return "invalid";
33630 }
33631 }
33632
33633 VULKAN_HPP_INLINE std::string to_string(ExternalFenceFeatureFlagsKHR value)
33634 {
33635 if (!value) return "{}";
33636 std::string result;
33637 if (value & ExternalFenceFeatureFlagBitsKHR::eExportable) result += "Exportable | ";
33638 if (value & ExternalFenceFeatureFlagBitsKHR::eImportable) result += "Importable | ";
33639 return "{" + result.substr(0, result.size() - 3) + "}";
33640 }
33641
33642 VULKAN_HPP_INLINE std::string to_string(FenceImportFlagBitsKHR value)
33643 {
33644 switch (value)
33645 {
33646 case FenceImportFlagBitsKHR::eTemporary: return "Temporary";
33647 default: return "invalid";
33648 }
33649 }
33650
33651 VULKAN_HPP_INLINE std::string to_string(FenceImportFlagsKHR value)
33652 {
33653 if (!value) return "{}";
33654 std::string result;
33655 if (value & FenceImportFlagBitsKHR::eTemporary) result += "Temporary | ";
Mark Young0f183a82017-02-28 09:58:04 -070033656 return "{" + result.substr(0, result.size() - 3) + "}";
33657 }
33658
Mark Young39389872017-01-19 21:10:49 -070033659 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagBitsEXT value)
33660 {
33661 switch (value)
33662 {
Mark Lobodzinski54385432017-05-15 10:27:52 -060033663 case SurfaceCounterFlagBitsEXT::eVblank: return "Vblank";
Mark Young39389872017-01-19 21:10:49 -070033664 default: return "invalid";
33665 }
33666 }
33667
33668 VULKAN_HPP_INLINE std::string to_string(SurfaceCounterFlagsEXT value)
33669 {
33670 if (!value) return "{}";
33671 std::string result;
Mark Lobodzinski54385432017-05-15 10:27:52 -060033672 if (value & SurfaceCounterFlagBitsEXT::eVblank) result += "Vblank | ";
Mark Young39389872017-01-19 21:10:49 -070033673 return "{" + result.substr(0, result.size() - 3) + "}";
33674 }
33675
33676 VULKAN_HPP_INLINE std::string to_string(DisplayPowerStateEXT value)
33677 {
33678 switch (value)
33679 {
33680 case DisplayPowerStateEXT::eOff: return "Off";
33681 case DisplayPowerStateEXT::eSuspend: return "Suspend";
33682 case DisplayPowerStateEXT::eOn: return "On";
33683 default: return "invalid";
33684 }
33685 }
33686
33687 VULKAN_HPP_INLINE std::string to_string(DeviceEventTypeEXT value)
33688 {
33689 switch (value)
33690 {
33691 case DeviceEventTypeEXT::eDisplayHotplug: return "DisplayHotplug";
33692 default: return "invalid";
33693 }
33694 }
33695
33696 VULKAN_HPP_INLINE std::string to_string(DisplayEventTypeEXT value)
33697 {
33698 switch (value)
33699 {
33700 case DisplayEventTypeEXT::eFirstPixelOut: return "FirstPixelOut";
33701 default: return "invalid";
33702 }
33703 }
33704
Mark Young0f183a82017-02-28 09:58:04 -070033705 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagBitsKHX value)
33706 {
33707 switch (value)
33708 {
33709 case PeerMemoryFeatureFlagBitsKHX::eCopySrc: return "CopySrc";
33710 case PeerMemoryFeatureFlagBitsKHX::eCopyDst: return "CopyDst";
33711 case PeerMemoryFeatureFlagBitsKHX::eGenericSrc: return "GenericSrc";
33712 case PeerMemoryFeatureFlagBitsKHX::eGenericDst: return "GenericDst";
33713 default: return "invalid";
33714 }
33715 }
33716
33717 VULKAN_HPP_INLINE std::string to_string(PeerMemoryFeatureFlagsKHX value)
33718 {
33719 if (!value) return "{}";
33720 std::string result;
33721 if (value & PeerMemoryFeatureFlagBitsKHX::eCopySrc) result += "CopySrc | ";
33722 if (value & PeerMemoryFeatureFlagBitsKHX::eCopyDst) result += "CopyDst | ";
33723 if (value & PeerMemoryFeatureFlagBitsKHX::eGenericSrc) result += "GenericSrc | ";
33724 if (value & PeerMemoryFeatureFlagBitsKHX::eGenericDst) result += "GenericDst | ";
33725 return "{" + result.substr(0, result.size() - 3) + "}";
33726 }
33727
33728 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagBitsKHX value)
33729 {
33730 switch (value)
33731 {
33732 case MemoryAllocateFlagBitsKHX::eDeviceMask: return "DeviceMask";
33733 default: return "invalid";
33734 }
33735 }
33736
33737 VULKAN_HPP_INLINE std::string to_string(MemoryAllocateFlagsKHX value)
33738 {
33739 if (!value) return "{}";
33740 std::string result;
33741 if (value & MemoryAllocateFlagBitsKHX::eDeviceMask) result += "DeviceMask | ";
33742 return "{" + result.substr(0, result.size() - 3) + "}";
33743 }
33744
33745 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagBitsKHX value)
33746 {
33747 switch (value)
33748 {
33749 case DeviceGroupPresentModeFlagBitsKHX::eLocal: return "Local";
33750 case DeviceGroupPresentModeFlagBitsKHX::eRemote: return "Remote";
33751 case DeviceGroupPresentModeFlagBitsKHX::eSum: return "Sum";
33752 case DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice: return "LocalMultiDevice";
33753 default: return "invalid";
33754 }
33755 }
33756
33757 VULKAN_HPP_INLINE std::string to_string(DeviceGroupPresentModeFlagsKHX value)
33758 {
33759 if (!value) return "{}";
33760 std::string result;
33761 if (value & DeviceGroupPresentModeFlagBitsKHX::eLocal) result += "Local | ";
33762 if (value & DeviceGroupPresentModeFlagBitsKHX::eRemote) result += "Remote | ";
33763 if (value & DeviceGroupPresentModeFlagBitsKHX::eSum) result += "Sum | ";
33764 if (value & DeviceGroupPresentModeFlagBitsKHX::eLocalMultiDevice) result += "LocalMultiDevice | ";
33765 return "{" + result.substr(0, result.size() - 3) + "}";
33766 }
33767
33768 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagBitsKHR value)
33769 {
33770 switch (value)
33771 {
33772 case SwapchainCreateFlagBitsKHR::eBindSfrKHX: return "BindSfrKHX";
33773 default: return "invalid";
33774 }
33775 }
33776
33777 VULKAN_HPP_INLINE std::string to_string(SwapchainCreateFlagsKHR value)
33778 {
33779 if (!value) return "{}";
33780 std::string result;
33781 if (value & SwapchainCreateFlagBitsKHR::eBindSfrKHX) result += "BindSfrKHX | ";
33782 return "{" + result.substr(0, result.size() - 3) + "}";
33783 }
33784
33785 VULKAN_HPP_INLINE std::string to_string(ViewportCoordinateSwizzleNV value)
33786 {
33787 switch (value)
33788 {
33789 case ViewportCoordinateSwizzleNV::ePositiveX: return "PositiveX";
33790 case ViewportCoordinateSwizzleNV::eNegativeX: return "NegativeX";
33791 case ViewportCoordinateSwizzleNV::ePositiveY: return "PositiveY";
33792 case ViewportCoordinateSwizzleNV::eNegativeY: return "NegativeY";
33793 case ViewportCoordinateSwizzleNV::ePositiveZ: return "PositiveZ";
33794 case ViewportCoordinateSwizzleNV::eNegativeZ: return "NegativeZ";
33795 case ViewportCoordinateSwizzleNV::ePositiveW: return "PositiveW";
33796 case ViewportCoordinateSwizzleNV::eNegativeW: return "NegativeW";
33797 default: return "invalid";
33798 }
33799 }
33800
33801 VULKAN_HPP_INLINE std::string to_string(DiscardRectangleModeEXT value)
33802 {
33803 switch (value)
33804 {
33805 case DiscardRectangleModeEXT::eInclusive: return "Inclusive";
33806 case DiscardRectangleModeEXT::eExclusive: return "Exclusive";
33807 default: return "invalid";
33808 }
33809 }
33810
33811 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlagBits value)
33812 {
33813 switch (value)
33814 {
33815 case SubpassDescriptionFlagBits::ePerViewAttributesNVX: return "PerViewAttributesNVX";
33816 case SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX: return "PerViewPositionXOnlyNVX";
33817 default: return "invalid";
33818 }
33819 }
33820
33821 VULKAN_HPP_INLINE std::string to_string(SubpassDescriptionFlags value)
33822 {
33823 if (!value) return "{}";
33824 std::string result;
33825 if (value & SubpassDescriptionFlagBits::ePerViewAttributesNVX) result += "PerViewAttributesNVX | ";
33826 if (value & SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX) result += "PerViewPositionXOnlyNVX | ";
33827 return "{" + result.substr(0, result.size() - 3) + "}";
33828 }
33829
Mark Lobodzinskie5b2b712017-06-28 14:58:27 -060033830 VULKAN_HPP_INLINE std::string to_string(SamplerReductionModeEXT value)
33831 {
33832 switch (value)
33833 {
33834 case SamplerReductionModeEXT::eWeightedAverage: return "WeightedAverage";
33835 case SamplerReductionModeEXT::eMin: return "Min";
33836 case SamplerReductionModeEXT::eMax: return "Max";
33837 default: return "invalid";
33838 }
33839 }
33840
33841 VULKAN_HPP_INLINE std::string to_string(BlendOverlapEXT value)
33842 {
33843 switch (value)
33844 {
33845 case BlendOverlapEXT::eUncorrelated: return "Uncorrelated";
33846 case BlendOverlapEXT::eDisjoint: return "Disjoint";
33847 case BlendOverlapEXT::eConjoint: return "Conjoint";
33848 default: return "invalid";
33849 }
33850 }
33851
33852 VULKAN_HPP_INLINE std::string to_string(CoverageModulationModeNV value)
33853 {
33854 switch (value)
33855 {
33856 case CoverageModulationModeNV::eNone: return "None";
33857 case CoverageModulationModeNV::eRgb: return "Rgb";
33858 case CoverageModulationModeNV::eAlpha: return "Alpha";
33859 case CoverageModulationModeNV::eRgba: return "Rgba";
33860 default: return "invalid";
33861 }
33862 }
33863
Mike Schuchardta6b8bdb2017-09-05 16:10:20 -060033864 VULKAN_HPP_INLINE std::string to_string(ValidationCacheHeaderVersionEXT value)
33865 {
33866 switch (value)
33867 {
33868 case ValidationCacheHeaderVersionEXT::eOne: return "One";
33869 default: return "invalid";
33870 }
33871 }
33872
Lenny Komowbed9b5c2016-08-11 11:23:15 -060033873} // namespace vk
33874
33875#endif